]> git.donarmstrong.com Git - bamtools.git/blobdiff - src/api/BamMultiReader.h
Merge branch 'master' of git://github.com/ekg/bamtools
[bamtools.git] / src / api / BamMultiReader.h
index dce7042f8d1248c14661bc8a1a6c73ae166448ea..fa28bcd39fd3193f103c83ad09215829c62a8b2f 100644 (file)
@@ -1,9 +1,9 @@
 // ***************************************************************************\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: 2 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
@@ -59,10 +52,9 @@ class BamMultiReader {
         // indexes.\r
         // @coreMode - setup our first alignments using GetNextAlignmentCore();\r
         // also useful for merging\r
-        // @useDefaultIndex - look for default BAM index ".bai" first.  If false, \r
-        // or if ".bai" does not exist, will look for BamTools index ".bti".  If \r
-        // neither exist, will open without an index\r
-        bool Open(const vector<string> filenames, bool openIndexes = true, bool coreMode = false, bool useDefaultIndex = true);\r
+        // @preferStandardIndex - look for standard BAM index ".bai" first.  If false, \r
+        // will look for BamTools index ".bti".  \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
@@ -98,7 +90,7 @@ class BamMultiReader {
         // ----------------------\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
@@ -113,7 +105,10 @@ class BamMultiReader {
         // ----------------------\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
@@ -126,13 +121,13 @@ class BamMultiReader {
     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