Difference between revisions of "LibStatGen: BAM"
(Created page with '= SAM/BAM File= == Reading/Writing SAM/BAM Files == The SamFile class allows a user to easily read/write a SAM/BAM file. This methods found in this class are: {| class="wikitabl…') |
|||
Line 35: | Line 35: | ||
Returns true if successfully written, false if not. | Returns true if successfully written, false if not. | ||
|} | |} | ||
+ | |||
+ | === Usage Example === | ||
+ | The following example reads in a sam/bam file and writes it out as a sam/bam file. The file format of the input sam/bam is determined by the SamFile class based on reading the type from the file. The file format of the output sam/bam file is determined by the SamFile class based on the extension of the output file. A ".bam" extension indicates a BAM file. All other extensions indicate SAM files. | ||
+ | <pre> | ||
+ | int main(int argc, char ** argv) | ||
+ | { | ||
+ | if(argc != 3) | ||
+ | { | ||
+ | printf("./bam <inputFile> <outputFile.sam/bam>\n"); | ||
+ | exit(-1); | ||
+ | } | ||
+ | |||
+ | |||
+ | SamFile samIn; | ||
+ | |||
+ | samIn.OpenForRead(argv[1]); | ||
+ | |||
+ | SamFile samOut; | ||
+ | |||
+ | samOut.OpenForWrite(argv[2]); | ||
+ | |||
+ | // Read the sam header. | ||
+ | SamFileHeader samHeader; | ||
+ | samIn.ReadHeader(samHeader); | ||
+ | |||
+ | samOut.WriteHeader(samHeader); | ||
+ | |||
+ | // Read the first sam record. | ||
+ | SamRecord samRecord; | ||
+ | |||
+ | // Keep reading records until it fails. | ||
+ | int recordCount = 0; | ||
+ | while (samIn.ReadRecord(samHeader, samRecord) == true) | ||
+ | { | ||
+ | recordCount++; | ||
+ | samOut.WriteRecord(samHeader, samRecord); | ||
+ | } | ||
+ | printf("RecordCount = %d\n", recordCount); | ||
+ | } | ||
+ | </pre> |
Revision as of 13:46, 16 March 2010
SAM/BAM File
Reading/Writing SAM/BAM Files
The SamFile class allows a user to easily read/write a SAM/BAM file. This methods found in this class are:
Method Name | Description |
---|---|
bool OpenForRead(const char* filename) | Opens the specified file for reading.
Determines if it is a BAM/SAM file by reading the beginning of the file. Returns true if successfully opened reading, false if not. |
bool OpenForWrite(const char * filename) | bool: true if successfully opened, false if not.
Opens as BAM file if the specified filename ends in .bam. Otherwise it is opened as a SAM file. Returns true if successfully opened for writing, false if not. |
bool ReadHeader(SamFileHeader& header) | Reads the header section from the file and stores it in the passed in header.
Returns true if successfully read, false if not. |
bool WriteHeader(const SamFileHeader& header) | Writes the specified header into the file.
Returns true if successfully written, false if not. |
bool ReadRecord(SamFileHeader& header, SamRecord& record) | Reads the next record from the file and stores it in the passed in record.
Returns true if successfully read, false if not. |
bool WriteRecord(SamFileHeader& header, SamRecord& record) | Writes the specified record into the file.
Returns true if successfully written, false if not. |
Usage Example
The following example reads in a sam/bam file and writes it out as a sam/bam file. The file format of the input sam/bam is determined by the SamFile class based on reading the type from the file. The file format of the output sam/bam file is determined by the SamFile class based on the extension of the output file. A ".bam" extension indicates a BAM file. All other extensions indicate SAM files.
int main(int argc, char ** argv) { if(argc != 3) { printf("./bam <inputFile> <outputFile.sam/bam>\n"); exit(-1); } SamFile samIn; samIn.OpenForRead(argv[1]); SamFile samOut; samOut.OpenForWrite(argv[2]); // Read the sam header. SamFileHeader samHeader; samIn.ReadHeader(samHeader); samOut.WriteHeader(samHeader); // Read the first sam record. SamRecord samRecord; // Keep reading records until it fails. int recordCount = 0; while (samIn.ReadRecord(samHeader, samRecord) == true) { recordCount++; samOut.WriteRecord(samHeader, samRecord); } printf("RecordCount = %d\n", recordCount); }