Check if a work input needs processing for parallelization.

def bam_needs_processing(data):
    """Check if a work input needs processing for parallelization.
    """
    return ((data.get("work_bam") or data.get("align_bam")) and
            (any(tz.get_in(["config", "algorithm", x], data) for x in
                 ["variantcaller", "mark_duplicates", "recalibrate", "realign", "svcaller",
                  "jointcaller", "variant_regions"])
             or any(k in data for k in ["cwl_keys", "output_cwl_keys"])))