PrintRefPositions.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "SamFile.h"
00020
00021 void printRefPositions(std::string inFile, std::string indexFile,
00022 std::string rname, int startPosition,
00023 int endPosition)
00024 {
00025 SamFileHeader header;
00026
00027 SamFile samIn(inFile.c_str(), SamFile::READ, &header);
00028
00029
00030 samIn.ReadBamIndex(indexFile.c_str());
00031
00032
00033 samIn.SetReadSection(rname.c_str(), startPosition, endPosition);
00034
00035 SamRecord record;
00036
00037 while(samIn.ReadRecord(header, record))
00038 {
00039
00040 std::cout << "Read " << samIn.GetCurrentRecordCount() << ":";
00041 Cigar* cigar = record.getCigarInfo();
00042 for(int i = 0; i < record.getReadLength(); i++)
00043 {
00044 int refPos =
00045 cigar->getRefPosition(i, record.get1BasedPosition());
00046 if(refPos != Cigar::INDEX_NA)
00047 {
00048 std::cout << " " << refPos;
00049 }
00050 }
00051 std::cout << "\n";
00052 }
00053 }