Difference between revisions of "SAM/BAM Classes FAQs"
From Genome Analysis Wiki
Jump to navigationJump to search(8 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
+ | [[Category:libStatGen]] | ||
+ | [[Category:libStatGen BAM]] | ||
+ | |||
== How Do I? == | == How Do I? == | ||
− | ===== Q: Map between a query/read sequence and a reference sequence to do things like looking up a base/quality at a given reference position or looking up a reference base for a given read position?===== | + | ===== Q: What is SAM/BAM? ===== |
− | * A: Use [[C++ Class: CigarRoller#Mapping Between Reference and Read/Query| | + | * A: See: [[SAM]] and [[BAM]]. [[SAM]] also provides additional details as to what is a CIGAR, QUALITY, and TAG. |
+ | |||
+ | ===== Q: Map between a query/read sequence and a reference sequence to do things like looking up a base/quality at a given reference position or looking up a reference base for a given read position? ===== | ||
+ | * A: Use [[C++ Class: CigarRoller#Mapping Between Reference and Read/Query|Cigar::getQueryIndex & Cigar::getRefOffset]] | ||
+ | |||
+ | ===== Q: Read only portions of a sorted & indexed BAM file that fall within a specified region? ===== | ||
+ | * A: | ||
+ | *# open a sorted and indexed BAM file for reading (<code>SamFile::OpenForRead</code>) | ||
+ | *# read the BAM Index file (<code>SamFile::ReadBamIndex</code>) | ||
+ | *# read the header (<code>SamFile::ReadHeader</code>) | ||
+ | *# set the region to be read (<code>SamFile::SetReadSection</code>) | ||
+ | *# Loop calling <code>SamFile::ReadRecord</code> until it returns false - indicating there are no more reads within this region. | ||
+ | These methods are found in [[C++ Class: SamFile]]. | ||
+ | |||
+ | NOTE: ReadRecord will also return false on an error - use <code>SamFile::GetStatus()</code> to determine if it was an error or the end of the region. <code>GetStatus</code> returns SamStatus::NO_MORE_RECS for the end of the region. | ||
+ | |||
+ | See the library usage page for an [[Sam_Library_Usage_Examples#Read_a_Specified_Region_from_a_Sorted_.26_Indexed_BAM_File|Example]]. | ||
+ | |||
+ | * Q: How do I read multiple regions? | ||
+ | ** A: Use the above solution, but loop on the SetReadSection/ReadRecord steps until all sections have been processed. | ||
+ | |||
+ | ===== Q: Get additional information on this library? ===== | ||
+ | * A: If you have any questions or comments, please raise issue in [https://github.com/statgen/ our GitHub repositories]. |
Latest revision as of 17:20, 11 September 2021
How Do I?
Q: What is SAM/BAM?
Q: Map between a query/read sequence and a reference sequence to do things like looking up a base/quality at a given reference position or looking up a reference base for a given read position?
Q: Read only portions of a sorted & indexed BAM file that fall within a specified region?
- A:
- open a sorted and indexed BAM file for reading (
SamFile::OpenForRead
) - read the BAM Index file (
SamFile::ReadBamIndex
) - read the header (
SamFile::ReadHeader
) - set the region to be read (
SamFile::SetReadSection
) - Loop calling
SamFile::ReadRecord
until it returns false - indicating there are no more reads within this region.
- open a sorted and indexed BAM file for reading (
These methods are found in C++ Class: SamFile.
NOTE: ReadRecord will also return false on an error - use SamFile::GetStatus()
to determine if it was an error or the end of the region. GetStatus
returns SamStatus::NO_MORE_RECS for the end of the region.
See the library usage page for an Example.
- Q: How do I read multiple regions?
- A: Use the above solution, but loop on the SetReadSection/ReadRecord steps until all sections have been processed.
Q: Get additional information on this library?
- A: If you have any questions or comments, please raise issue in our GitHub repositories.