BamUtil: mergeBam
Overview of the mergeBam function of bamUtil
The mergeBam option on the bamUtil executable merges multiple BAM files appending ReadGroup IDs if necessary.
As of version 1.0.7, this program was renamed from rgMergeBam to mergeBam.
mergeBam merges multiple sorted SAM/BAM files into one BAM file like 'samtools merge' command, but merges BAM headers.
- Checks that the non RG header fields are identical across the BAM files
- Checks that the input SAM/BAM records are sorted
- If --list option is used:
- Ensures that the headers are identical across the input files
- Adds @RG headers from a tabular input file containing the fields' info
- Adds RG:Z:[RGID] tag for each record based on the source BAM file
- If --in is used:
- Merges the RG headers from the files, checking that they RG IDs are unique or if they are the same that the rest of the fields are the same
Usage
mergeBam [-v] [--log logFile] [--ignorePI] --list <listFile> --out <outFile>
Parameters
Required parameters :
--out/-o : Output BAM file (sorted)
--in/-i : BAM file to be input, must be more than one of these options.
cannot be used with --list/-l
--list/-l : RGAList File. Tab-delimited list consisting of following columns (with headers):
BAM* : Input BAM file name to be merged
ID* : Unique read group identifier
SM* : Sample name
LB : Library name
DS : Description
PU : Platform unit
PI : Predicted median insert size
CN : Name of sequencing center producing the read
DT : Date the rn was produced
PL : Platform/technology used to produce the read
* (Required fields)
Optional parameters :
--ignorePI/-I : Ignore the RG PI field when comparing headers
--log/-L : Log file
--verbose/-v : Turn on verbose mode
PhoneHome: --noPhoneHome : disable PhoneHome (default enabled) --phoneHomeThinning : adjust the PhoneHome thinning parameter (default 50)
Required Parameters
Input Files (--in, --list)
Use multiple --in parameters each followed by an input file name to specify the SAM/BAM input files (more than one --in must be specified).
Alternatively, a RGAList file can be specified using --list. The specified file contains a header row with a tab delimited list of the included columns followed by a row for each BAM file with a tab-delimited list of the values for each column.
The possible header column name are (* indicates required fields):
- BAM* : Input BAM file name to be merged
- ID* : Unique read group identifier
- SM* : Sample name
- LB : Library name
- DS : Description
- PU : Platform unit
- PI : Predicted median insert size
- CN : Name of sequencing center producing the read
- DT : Date the rn was produced
- PL : Platform/technology used to produce the read
The program automatically determines if your input files are SAM/BAM/uncompressed BAM.
Output File (--out)
Use --out followed by your file name to specify the SAM/BAM output file.
The file extension is used to determine whether to write SAM/BAM/uncompressed BAM. A - is used to indicate stdout and the extension for file type (no extension is SAM).
| SAM to file | --out yourFileName.sam
|
| BAM to file | --out yourFileName.bam
|
| Uncompressed BAM to file | --out yourFileName.ubam
|
| SAM to stdout | --out -
|
| BAM to stdout | --out -.bam
|
| Uncompressed BAM to stdout | --out -.ubam
|
Note: Uncompressed BAM is compressed using compression level-0 (so it is not an entirely uncompressed file). This matches the samtools implementation so pipes between our tools and samtools are supported.
Optional Parameters
Specify Log Filename (--ignorePI or -I)
Use --ignorePI to ignore the RG PI field when comparing headers. The field from the first header will be used in the output file.
This parameter was added in version 1.0.10.
Specify Log Filename (--log)
Use --log followed by the log filename to specify the log filename. Default is the output file basename with a .log extension
Verbose (--verbose)
Use --verbose to turn on verbose mode.
PhoneHome Parameters
See PhoneHome for more information on how PhoneHome works and what it does.
Turn off PhoneHome (--noPhoneHome)
Use the --noPhoneHome option to completely disable PhoneHome. PhoneHome is enabled by default based on the thinning parameter.
Adjust the Frequency of PhoneHome (--phoneHomeThinning)
Use --phoneHomeThinning to modify the percentage of the time that PhoneHome will run (0-100).
- By default,
--phoneHomeThinningis set to 50, running 50% of the time. - PhoneHome will only occur if the run's random number modulo 100 is less than the --phoneHomeThinning value.
- N/A if
--noPhoneHomeis set.
Return Value
Returns 0 on success, non-0 on failure.