code: def _align_from_fastq(fastq1, fastq2, aligner, align_ref, sam_ref, names,
                        align_dir, data):
      
      config = data["config"]
      align_fn = TOOLS[aligner].align_fn
      out = align_fn(fastq1, fastq2, align_ref, names, align_dir, data)
      # handle align functions that update the main data dictionary in place
      if isinstance(out, dict):
          assert out.get("work_bam"), (dd.get_sample_name(data), out.get("work_bam"))
          return out
      # handle output of raw SAM files that need to be converted to BAM
      else:
          work_bam = bam.sam_to_bam(out, config)
          data["work_bam"] = bam.sort(work_bam, config)
          return data
docs: Align from fastq inputs, producing sorted BAM output.