code: def prep_fastq_inputs(in_files, data):
      
      if len(in_files) == 1 and _is_bam_input(in_files):
          out = _bgzip_from_bam(in_files[0], data["dirs"], data)
      elif len(in_files) == 1 and _is_cram_input(in_files):
          out = _bgzip_from_cram(in_files[0], data["dirs"], data)
      elif len(in_files) in [1, 2] and _ready_gzip_fastq(in_files, data):
          out = _symlink_in_files(in_files, data)
      else:
          if len(in_files) > 2:
              fpairs = fastq.combine_pairs(in_files)
              pair_types = set([len(xs) for xs in fpairs])
              assert len(pair_types) == 1
              fpairs.sort(key=lambda x: os.path.basename(x[0]))
              organized = [[xs[0] for xs in fpairs]]
              if len(fpairs[0]) > 1:
                  organized.append([xs[1] for xs in fpairs])
              in_files = organized
          parallel = {"type": "local", "num_jobs": len(in_files),
                      "cores_per_job": max(1, data["config"]["algorithm"]["num_cores"] // len(in_files))}
          inputs = [{"in_file": x, "read_num": i, "dirs": data["dirs"], "config": data["config"],
                     "is_cwl": "cwl_keys" in data,
                     "rgnames": data["rgnames"]}
                    for i, x in enumerate(in_files) if x]
          out = run_multicore(_bgzip_from_fastq_parallel, [[d] for d in inputs], data["config"], parallel)
      return out
docs: Prepare bgzipped fastq inputs