code: def merge_bams(self, input_bams, merged_bam, in_sorted="TRUE", tmp_dir=None):
          
          if not len(input_bams) > 1:
              print("No merge required")
              return 0
  
          outdir, _ = os.path.split(merged_bam)
          if outdir and not os.path.exists(outdir):
              print("Creating path to merge file's folder: '{}'".format(outdir))
              os.makedirs(outdir)
  
          # Handle more intuitive boolean argument.
          if in_sorted in [False, True]:
              in_sorted = "TRUE" if in_sorted else "FALSE"
  
          input_string = " INPUT=" + " INPUT=".join(input_bams)
          cmd = self.tools.java + " -Xmx" + self.pm.javamem
          cmd += " -jar " + self.tools.picard + " MergeSamFiles"
          cmd += input_string
          cmd += " OUTPUT=" + merged_bam
          cmd += " ASSUME_SORTED=" + str(in_sorted)
          cmd += " CREATE_INDEX=TRUE"
          cmd += " VALIDATION_STRINGENCY=SILENT"
          if tmp_dir:
              cmd += " TMP_DIR=" + tmp_dir
          return cmd
docs: Combine multiple files into one.
  
          The tmp_dir parameter is important because on poorly configured
          systems, the default can sometimes fill up.
  
          :param Iterable[str] input_bams: Paths to files to combine
          :param str merged_bam: Path to which to write combined result.
          :param bool | str in_sorted: Whether the inputs are sorted
          :param str tmp_dir: Path to temporary directory.