Difference between revisions of "LibStatGen: BAM"

From Genome Analysis Wiki
Jump to navigationJump to search
 
(38 intermediate revisions by one other user not shown)
Line 1: Line 1:
 +
[[Category:C++]]
 +
[[Category:libStatGen]]
 +
[[Category:libStatGen BAM]]
 +
 
= SAM/BAM File=
 
= SAM/BAM File=
  
[[SAM Library Change Log]]
+
See the github history: https://github.com/statgen/libStatGen/commits/master/bam for a list of the most recent updates to the BAM classes.
 
 
== Read & Write BAM/SAM Executable ==
 
When the pipeline is compiled, the sam/bam executable, "bam" is generated in the pipeline/bam/ directory.
 
 
 
This executable takes 2 arguments.  The first argument is the input file.  The second argument is the output file. The executable converts the first file into the format of the second file.  So if you want to convert a Bam file to a SAM file, from the pipeline/bam/ directory you just call:
 
./bam <bamFile>.bam <newSamFile>.sam
 
Don't forget to put in the paths to the executable and your test files.
 
 
 
The software reads the beginning of the input file to determine if it is SAM/BAM.  To determine the format (SAM/BAM) of the output file, the software checks the output file's extension.  If the extension is ".bam" it writes a BAM file, otherwise it writes a SAM file.
 
 
 
 
 
== Read & Write BAM/SAM Library ==
 
The software for reading/writing/parsing/validating SAM/BAM files is also available in library format.  The library is also found in pipeline/bam, and is called libbam.a
 
 
 
This library is dependent on two other libraries, so be sure to include them all in the proper order:
 
<path to base pipeline directory>/libbam.a <path to base pipeline directory>/libcsg/libcsg.a <path to base pipeline directory>/thirdParty/samtools/libbam.a
 
  
 +
[[BAM Review Action Items|Old BAM Review Action Items]]
  
== Reading/Writing SAM/BAM Files In Your Program ==
+
== Read & Write BAM/SAM Library Software ==
  
Documentation on the '''SamFile''' class can be found at [[C++ Class: SamFile]].
+
The software reads the beginning of files opened for reading to determine if it is SAM/BAM.  To determine the format (SAM/BAM) of files open for writing, the software checks the output file's extension.  If the extension is "bam" it writes a BAM file, otherwise it writes a SAM file.
  
 +
The library is found in statgen/lib/bam.
  
== SAM/BAM Header ==
+
=== BAM/SAM Classes ===
 +
{| style="margin: 1em 1em 1em 0; background-color: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;" border="1"
 +
|-style="background: #f2f2f2; text-align: center;"
 +
! Class Name !!  Description
 +
|-
 +
| <code>[[C++ Class: SamFile|SamFile]]</code>
 +
| Class used for reading/writing SAM/BAM files and their headers and records.
 +
|-
 +
| <code>[[C++ Class: SamFileHeader|SamFileHeader]]</code>
 +
| Class used for storing the header.  Allows access for getting and setting header values when both reading & writing SAM/BAM files.
 +
|-
 +
| <code>[http://csg.sph.umich.edu//mktrost/doxygen/current/classSamHeaderRecord.html SamHeaderRecord]</code>
 +
| Class used for storing the tag/value pairs within a given header line.
 +
|-
 +
| <code>[[C++ Class: SamRecord|SamRecord]]</code>
 +
| Class used for storing a SAM/BAM Record.  Allows access for getting and setting record values when both reading & writing SAM/BAM files.
 +
|-
 +
| <code>[http://csg.sph.umich.edu//mktrost/doxygen/current/classSamStatus.html SamStatus]</code>
 +
| Status value used by the BAM classes for returning the status of the operations.
 +
|-
 +
| <code>[http://csg.sph.umich.edu//mktrost/doxygen/current/classSamValidator.html SamValidator]</code>
 +
| Validates a SAM/BAM Record.
 +
|-
 +
| <code>[http://csg.sph.umich.edu//mktrost/doxygen/current/classSamValidationError.html SamValidationError]</code>
 +
| Validation Error Information for a SamRecord.
 +
|-
 +
| <code>[http://csg.sph.umich.edu//mktrost/doxygen/current/classSamValidationErrors.html SamValidationErrors]</code>
 +
| Container for ValidationErrors.
 +
|-
 +
| <code>[http://csg.sph.umich.edu//mktrost/doxygen/current/classPileup.html Pileup]</code>
 +
| Template for doing pileups.
 +
|-
 +
| <code>[http://csg.sph.umich.edu//mktrost/doxygen/current/classPileupElement.html PileupElement]</code>
 +
| Base class that can be used for the elements stored in a Pileup.
 +
|-
 +
| <code>[http://csg.sph.umich.edu//mktrost/doxygen/current/classErrorHandler.html ErrorHandler]</code>
 +
| Class for handling errors based on the error handling type.
 +
|-
 +
| <code>[http://csg.sph.umich.edu//mktrost/doxygen/current/classPosList.html PosList]</code>
 +
| Store refID/position, but does not store values < 0.
 +
|-
 +
| <code>[http://csg.sph.umich.edu//mktrost/doxygen/current/classSamFilter.html SamFilter]</code>
 +
| Class for filtering a SAM/BAM record.
 +
|-
 +
| <code>[http://csg.sph.umich.edu//mktrost/doxygen/current/classSamFlag.html SamFlag]</code>
 +
| Class for getting information from a SAM/BAM flag.
 +
|-
 +
| <code>[http://csg.sph.umich.edu//mktrost/doxygen/current/classSamReferenceInfo.html SamReferenceInfo]</code>
 +
| Class for tracking the reference information mapping between the reference ids and the reference names.
 +
|-
 +
| <code>[http://csg.sph.umich.edu//mktrost/doxygen/current/classSamTags.html SamTags]</code>
 +
| Class for parsing/creating/operating on SAM/BAM record tags.
 +
|}
  
Documentation on reading/writing a SAM/BAM Header can be found at [[C++ Class: SamFileHeader]].
+
== FAQs ==
 +
[[SAM/BAM Classes FAQs]]
  
 +
== Usage Examples ==
 +
[[Sam Library Usage Examples]]
  
== SAM/BAM Record ==
 
  
Documentation on reading/writing a SAM/BAM Record can be found at [[C++ Class: SamRecord]].
+
== Programs ==
  
== Suggested Improvements/Features ==
+
BamUtil contains a set of programs that uses this library to operate on SAM & BAM files.  It includes tools for converting between SAM & BAM and validating the files.  See [[BamUtil]] for more information and a description of all the tools.

Latest revision as of 10:55, 2 February 2017


SAM/BAM File

See the github history: https://github.com/statgen/libStatGen/commits/master/bam for a list of the most recent updates to the BAM classes.

Old BAM Review Action Items

Read & Write BAM/SAM Library Software

The software reads the beginning of files opened for reading to determine if it is SAM/BAM. To determine the format (SAM/BAM) of files open for writing, the software checks the output file's extension. If the extension is "bam" it writes a BAM file, otherwise it writes a SAM file.

The library is found in statgen/lib/bam.

BAM/SAM Classes

Class Name Description
SamFile Class used for reading/writing SAM/BAM files and their headers and records.
SamFileHeader Class used for storing the header. Allows access for getting and setting header values when both reading & writing SAM/BAM files.
SamHeaderRecord Class used for storing the tag/value pairs within a given header line.
SamRecord Class used for storing a SAM/BAM Record. Allows access for getting and setting record values when both reading & writing SAM/BAM files.
SamStatus Status value used by the BAM classes for returning the status of the operations.
SamValidator Validates a SAM/BAM Record.
SamValidationError Validation Error Information for a SamRecord.
SamValidationErrors Container for ValidationErrors.
Pileup Template for doing pileups.
PileupElement Base class that can be used for the elements stored in a Pileup.
ErrorHandler Class for handling errors based on the error handling type.
PosList Store refID/position, but does not store values < 0.
SamFilter Class for filtering a SAM/BAM record.
SamFlag Class for getting information from a SAM/BAM flag.
SamReferenceInfo Class for tracking the reference information mapping between the reference ids and the reference names.
SamTags Class for parsing/creating/operating on SAM/BAM record tags.

FAQs

SAM/BAM Classes FAQs

Usage Examples

Sam Library Usage Examples


Programs

BamUtil contains a set of programs that uses this library to operate on SAM & BAM files. It includes tools for converting between SAM & BAM and validating the files. See BamUtil for more information and a description of all the tools.