Provided by: samtools_1.19.2-1build2_amd64 bug

NAME

       samtools-merge - merges multiple sorted files into a single file

SYNOPSIS

       samtools merge [options] -o out.bam [options] in1.bam ... inN.bam

       samtools merge [options] out.bam in1.bam ... inN.bam

DESCRIPTION

       Merge  multiple sorted alignment files, producing a single sorted output file that contains all the input
       records and maintains the existing sort order.

       The output file can be specified via -o as shown in the first synopsis.  Otherwise the  first  non-option
       filename  argument is taken to be out.bam rather than an input file, as in the second synopsis.  There is
       no default; to write to standard output (or to a pipe), use either “-o -” or the equivalent using “-”  as
       the first filename argument.

       If  -h  is  specified  the @SQ headers of input files will be merged into the specified header, otherwise
       they will be merged into a composite header created from the input headers.  If in the process of merging
       @SQ lines for coordinate sorted input files, a conflict arises as to the order  (for  example  input1.bam
       has @SQ for a,b,c and input2.bam has b,a,c) then the resulting output file will need to be re-sorted back
       into coordinate order.

       Unless the -c or -p flags are specified then when merging @RG and @PG records into the output header then
       any  IDs  found to be duplicates of existing IDs in the output header will have a suffix appended to them
       to differentiate them from similar header records from other files and the read records will  be  updated
       to reflect this.

       The  ordering  of  the  records in the input files must match the usage of the -n, -N and -t command-line
       options.  If they do not, the output order will be undefined.  Note  this  also  extends  to  disallowing
       mixing  of "queryname" files with a combination of natural and lexicographical sort orders.  See sort for
       information about record ordering.

       Problems may arise when attempting to merge thousands of files together.  The operating system may impose
       a limit on the maximum number of  simultaneously  open  files.   See  ulimit  -n  for  more  information.
       Additionally  many  files  being read from simultaneously may cause a certain amount of "disk thrashing".
       To partially alleviate this the merge command will load 1MB of data at a time from each file, but this in
       turn adds to the overall merge program memory usage.  Please take this into account when  setting  memory
       limits.

       In  extreme  cases,  it  may  be  necessary  to reduce the problem to fewer files by successively merging
       subsets before a second round of merging.

       -1      Use Deflate compression level 1 to compress the output.

       -b FILE List of input BAM files, one file per line.

       -f      Force to overwrite the output file if present.

       -h FILE Use the lines of FILE as `@' headers to be copied to out.bam, replacing  any  header  lines  that
               would  otherwise  be  copied from in1.bam.  (FILE is actually in SAM format, though any alignment
               records it may contain are ignored.)

       -n      The input alignments are sorted by read names using an alpha-numeric  ordering,  rather  than  by
               chromosomal coordinates.  The alpha-numeric or “natural” sort order detects runs of digits in the
               strings  and  sorts  these  numerically.   Hence  "a7b"  appears before "a12b".  Note this is not
               suitable where hexadecimal values are in use.

       -N      The input alignments are sorted by read names using a lexicographical ordering,  rather  than  by
               chromosomal  coordinates.   Unlike -n no detection of numeric components is used, instead relying
               purely on the ASCII value of each character.  Hence "x12" comes before "x7" as "1" is before  "7"
               in ASCII.  This is a more appropriate name sort order where all digits in names are already zero-
               padded and/or hexadecimal values are being used.

       -o FILE Write  merged  output  to  FILE,  specifying  the filename via an option rather than as the first
               filename argument.  When -o is used, all non-option filename arguments specify input files to  be
               merged.

       -t TAG  The input alignments have been sorted by the value of TAG, then by either position or name (if -n
               is given).

       -R STR  Merge files in the specified region indicated by STR [null]

       -r      Attach an RG tag to each alignment. The tag value is inferred from file names.

       -u      Uncompressed BAM output

       -c      When several input files contain @RG headers with the same ID, emit only one of them (namely, the
               header  line  from the first file we find that ID in) to the merged output file.  Combining these
               similar headers is usually the right thing to do when the files being merged originated from  the
               same file.

               Without  -c,  all  @RG headers appear in the output file, with random suffixes added to their IDs
               where necessary to differentiate them.

       -p      Similarly, for each @PG ID in the set of files to merge, use the @PG line of the  first  file  we
               find that ID in rather than adding a suffix to differentiate similar IDs.

       -X      If  this  option  is set, it will allows user to specify customized index file location(s) if the
               data folder does not contain any index file. See EXAMPLES section for sample of usage.

       -L FILE BED file for specifying multiple regions on which the  merge  will  be  performed.   This  option
               extends the usage of -R option and cannot be used concurrently with it.

       --no-PG Do not add a @PG line to the header of the output file.

       -@, --threads INT
               Number of input/output compression threads to use in addition to main thread [0].

EXAMPLES

       o Attach the RG tag while merging sorted alignments:

           printf '@RG\tID:ga\tSM:hs\tLB:ga\tPL:ILLUMINA\n@RG\tID:454\tSM:hs\tLB:454\tPL:LS454\n' > rg.txt
           samtools merge -rh rg.txt merged.bam ga.bam 454.bam

         The  value  in a RG tag is determined by the file name the read is coming from. In this example, in the
         merged.bam, reads from ga.bam will be attached RG:Z:ga, while  reads  from  454.bam  will  be  attached
         RG:Z:454.

       o Include customized index file as a part of arguments:

           samtools merge [options] -X <out.bam> </data_folder/in1.bam> [</data_folder/in2.bam> ... </data_folder/inN.bam>] </index_folder/index1.bai> [</index_folder/index2.bai> ... </index_folder/indexN.bai>]

AUTHOR

       Written by Heng Li from the Sanger Institute.

SEE ALSO

       samtools(1), samtools-sort(1), sam(5)

       Samtools website: <http://www.htslib.org/>

samtools-1.19.2                                  24 January 2024                               samtools-merge(1)