annotate spp/src/BamReader.cpp @ 15:e689b83b0257 draft

Uploaded
author zzhou
date Tue, 27 Nov 2012 16:15:21 -0500
parents ce08b0efa3fd
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
1 // ***************************************************************************
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
2 // BamReader.cpp (c) 2009 Derek Barnett, Michael Str�mberg
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
3 // Marth Lab, Department of Biology, Boston College
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
4 // All rights reserved.
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
5 // ---------------------------------------------------------------------------
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
6 // Last modified: 22 November 2010 (DB)
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
7 // ---------------------------------------------------------------------------
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
8 // Provides the basic functionality for reading BAM files
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
9 // ***************************************************************************
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
10
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
11 #include <BamReader.h>
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
12 #include <BamReader_p.h>
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
13 using namespace BamTools;
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
14 using namespace BamTools::Internal;
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
15
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
16 #include <algorithm>
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
17 #include <iostream>
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
18 #include <iterator>
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
19 #include <string>
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
20 #include <vector>
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
21 using namespace std;
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
22
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
23 // constructor
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
24 BamReader::BamReader(void) {
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
25 d = new BamReaderPrivate(this);
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
26 }
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
27
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
28 // destructor
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
29 BamReader::~BamReader(void) {
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
30 delete d;
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
31 d = 0;
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
32 }
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
33
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
34 // file operations
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
35 void BamReader::Close(void) { d->Close(); }
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
36 bool BamReader::HasIndex(void) const { return d->HasIndex; }
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
37 bool BamReader::IsIndexLoaded(void) const { return HasIndex(); }
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
38 bool BamReader::IsOpen(void) const { return d->mBGZF.IsOpen; }
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
39 bool BamReader::Jump(int refID, int position) { return d->SetRegion( BamRegion(refID, position) ); }
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
40 bool BamReader::Open(const std::string& filename,
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
41 const std::string& indexFilename,
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
42 const bool lookForIndex,
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
43 const bool preferStandardIndex)
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
44 {
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
45 return d->Open(filename, indexFilename, lookForIndex, preferStandardIndex);
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
46 }
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
47 bool BamReader::Rewind(void) { return d->Rewind(); }
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
48 bool BamReader::SetRegion(const BamRegion& region) { return d->SetRegion(region); }
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
49 bool BamReader::SetRegion(const int& leftRefID, const int& leftBound, const int& rightRefID, const int& rightBound) {
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
50 return d->SetRegion( BamRegion(leftRefID, leftBound, rightRefID, rightBound) );
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
51 }
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
52
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
53 // access alignment data
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
54 bool BamReader::GetNextAlignment(BamAlignment& bAlignment) { return d->GetNextAlignment(bAlignment); }
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
55 bool BamReader::GetNextAlignmentCore(BamAlignment& bAlignment) { return d->GetNextAlignmentCore(bAlignment); }
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
56
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
57 // access auxiliary data
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
58 const string BamReader::GetHeaderText(void) const { return d->GetHeaderText(); }
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
59 int BamReader::GetReferenceCount(void) const { return d->References.size(); }
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
60 const RefVector& BamReader::GetReferenceData(void) const { return d->References; }
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
61 int BamReader::GetReferenceID(const string& refName) const { return d->GetReferenceID(refName); }
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
62 const std::string BamReader::GetFilename(void) const { return d->Filename; }
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
63
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
64 // index operations
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
65 bool BamReader::CreateIndex(bool useStandardIndex) { return d->CreateIndex(useStandardIndex); }
ce08b0efa3fd Uploaded
zzhou
parents:
diff changeset
66 void BamReader::SetIndexCacheMode(const BamIndex::BamIndexCacheMode mode) { d->SetIndexCacheMode(mode); }