code: def bam_needs_processing(data):
      
      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"])))
docs: Check if a work input needs processing for parallelization.