// ***************************************************************************\r
-// BamMultiReader.h (c) 2010 Erik Garrison\r
+// BamMultiReader.h (c) 2010 Erik Garrison, Derek Barnett\r
// Marth Lab, Department of Biology, Boston College\r
// All rights reserved.\r
// ---------------------------------------------------------------------------\r
-// Last modified: 3 September 2010 (DB)\r
+// Last modified: 18 September 2010 (DB)\r
// ---------------------------------------------------------------------------\r
// Functionality for simultaneously reading multiple BAM files\r
// ***************************************************************************\r
#ifndef BAMMULTIREADER_H\r
#define BAMMULTIREADER_H\r
\r
-// C++ includes\r
#include <string>\r
#include <map>\r
-#include <utility> // for pair\r
+#include <utility>\r
#include <sstream>\r
-\r
-using namespace std;\r
-\r
-// BamTools includes\r
-#include "BamAux.h"\r
#include "BamReader.h"\r
\r
namespace BamTools {\r
\r
// index mapping reference/position pairings to bamreaders and their alignments\r
-typedef multimap<pair<int, int>, pair<BamReader*, BamAlignment*> > AlignmentIndex;\r
-\r
+typedef std::multimap<std::pair<int, int>, std::pair<BamReader*, BamAlignment*> > AlignmentIndex;\r
\r
class BamMultiReader {\r
\r
// also useful for merging\r
// @preferStandardIndex - look for standard BAM index ".bai" first. If false, \r
// will look for BamTools index ".bti". \r
- bool Open(const vector<string> filenames, bool openIndexes = true, bool coreMode = false, bool preferStandardIndex = true);\r
+ bool Open(const std::vector<std::string>& filenames, bool openIndexes = true, bool coreMode = false, bool preferStandardIndex = false);\r
\r
// returns whether underlying BAM readers ALL have an index loaded\r
// this is useful to indicate whether Jump() or SetRegion() are possible\r
// ----------------------\r
\r
// returns unified SAM header text for all files\r
- const string GetHeaderText(void) const;\r
+ const std::string GetHeaderText(void) const;\r
// returns number of reference sequences\r
const int GetReferenceCount(void) const;\r
// returns vector of reference objects\r
// ----------------------\r
\r
// creates index for BAM files which lack them, saves to files (default = bamFilename + ".bai")\r
- bool CreateIndexes(bool useDefaultIndex = true);\r
+ bool CreateIndexes(bool useStandardIndex = true);\r
+\r
+ // sets the index caching mode for the readers\r
+ void SetIndexCacheMode(const BamIndex::BamIndexCacheMode mode);\r
\r
//const int GetReferenceID(const string& refName) const;\r
\r
private:\r
\r
// the set of readers and alignments which we operate on, maintained throughout the life of this class\r
- vector<pair<BamReader*, BamAlignment*> > readers;\r
+ std::vector<std::pair<BamReader*, BamAlignment*> > readers;\r
\r
// readers and alignments sorted by reference id and position, to keep track of the lowest (next) alignment\r
// when a reader reaches EOF, its entry is removed from this index\r
AlignmentIndex alignments;\r
\r
- vector<string> fileNames;\r
+ std::vector<std::string> fileNames;\r
};\r
\r
} // namespace BamTools\r