Spec
BamFileInClass for reading SAM and BAM files.
Class for reading SAM and BAM files.
Extends | FormattedFileIn |
---|---|
All Extended | FormattedFile, FormattedFileIn |
Defined in | <seqan/bam_io.h> |
Signature |
typedef FormattedFile<Bam, Input> BamFileIn;
|
Member Function Overview
Member Functions Inherited From FormattedFile
Interface Function Overview
-
bool jumpToOrphans(bamFileIn, hasAlignments, index);
Seek to orphans block in BamFileIn using an index. -
bool jumpToRegion(bamFileIn, hasAlignments, refID, regionStart, regionEnd, index);
Seek in BamFileIn using an index.
Interface Functions Inherited From FormattedFile
Interface Functions Inherited From FormattedFileIn
Interface Metafunction Overview
Interface Metafunctions Inherited From FormattedFile
Detailed Description
Example
Access SAM or BAM files.
#include <seqan/bam_io.h>
using namespace seqan;
int main()
{
CharString bamFileName = getAbsolutePath("demos/tutorial/sam_and_bam_io/example.sam");
// Open input file, BamFileIn can read SAM and BAM files.
BamFileIn bamFileIn;
if (!open(bamFileIn, toCString(bamFileName)))
{
std::cerr << "ERROR: Could not open " << bamFileName << std::endl;
return 1;
}
// Open output file, BamFileOut accepts also an ostream and a format tag.
BamFileOut bamFileOut(context(bamFileIn), std::cout, Sam());
try
{
// Copy header.
BamHeader header;
readHeader(header, bamFileIn);
writeHeader(bamFileOut, header);
// Copy records.
BamAlignmentRecord record;
while (!atEnd(bamFileIn))
{
readRecord(record, bamFileIn);
writeRecord(bamFileOut, record);
}
}
catch (Exception const & e)
{
std::cout << "ERROR: " << e.what() << std::endl;
return 1;
}
return 0;
}
The output is as follows:
@HD VN:1.3 SO:coordinate @SQ SN:ref LN:45 @SQ SN:ref2 LN:40 r001 163 ref 7 30 8M4I4M1D3M = 37 39 TTAGATAAAGAGGATACTG * XX:B:S,12561,2,20,112 r002 0 ref 9 30 1S2I6M1P1I1P1I4M2I * 0 0 AAAAGATAAGGGATAAA * r003 0 ref 9 30 5H6M * 0 0 AGCTAA * r004 0 ref 16 30 6M14N1I5M * 0 0 ATAGCTCTCAGC * r003 16 ref 29 30 6H5M * 0 0 TAGGC * r001 83 ref 37 30 9M = 7 -39 CAGCGCCAT *
See Also
Interface Functions Detail
bool jumpToOrphans(bamFileIn, hasAlignments, index);
Seek to orphans block in BamFileIn using an index.
Parameters
bamFileIn
|
The BamFileIn object to jump with. |
---|---|
hasAlignments
|
A bool that is set to true if there are any orphans. |
index
|
The BamIndex to use for jumping. |
Data Races
If not stated otherwise, concurrent invocation is not guaranteed to be thread-safe.
bool jumpToRegion(bamFileIn, hasAlignments, refID, regionStart, regionEnd, index);
Seek in BamFileIn using an index.
Parameters
bamFileIn
|
The BamFileIn to jump with. |
---|---|
hasAlignments
|
A bool that is set true if the region [regionStart, regionEnd] has any at least one overlapping alignment (bam record). |
refID
|
The reference id to jump to (int32_t). |
regionStart
|
The begin of the region to jump to (int32_t). |
regionEnd
|
The end of the region to jump to (int32_t). |
index
|
The BamIndex to use for the jumping. |
Returns
bool |
true if seeking was successful, false if not. |
---|
You provide a region [regionStart, regionEnd] on the reference refID that you want to jump to and the function jumps to the first alignment (bam record) whose start position lies inside this region, if any. Note: The current inmplementation only consideres the read start positions. Therefore, we do guarantee that reads overlapping the region are included. To account for this limitation you may want to choose the start of your your region with an appropiate offset (e.g. start - length_of_read).
Remarks
This function fails if refID/regionStart are invalid.
Data Races
If not stated otherwise, concurrent invocation is not guaranteed to be thread-safe.