#include <string>\r
#include <map>\r
#include <utility> // for pair\r
+#include <sstream>\r
\r
using namespace std;\r
\r
// index mapping reference/position pairings to bamreaders and their alignments\r
typedef multimap<pair<int, int>, pair<BamReader*, BamAlignment*> > AlignmentIndex;\r
\r
+\r
class BamMultiReader {\r
\r
// constructor / destructor\r
\r
// close BAM files\r
void Close(void);\r
+\r
+ // opens BAM files (and optional BAM index files, if provided)\r
+ // @openIndexes - triggers index opening, useful for suppressing\r
+ // error messages during merging of files in which we may not have\r
+ // indexes.\r
+ // @coreMode - setup our first alignments using GetNextAlignmentCore();\r
+ // also useful for merging\r
+ void Open(const vector<string> filenames, bool openIndexes = true, bool coreMode = false);\r
+\r
// performs random-access jump to reference, position\r
bool Jump(int refID, int position = 0);\r
- // opens BAM files (and optional BAM index files, if provided)\r
- //void Open(const vector<std::string&> filenames, const vector<std::string&> indexFilenames);\r
- void Open(const vector<string> filenames, bool openIndexes = true);\r
+\r
// returns file pointers to beginning of alignments\r
bool Rewind(void);\r
\r
\r
// retrieves next available alignment (returns success/fail) from all files\r
bool GetNextAlignment(BamAlignment&);\r
+ // retrieves next available alignment (returns success/fail) from all files\r
+ // and populates the support data with information about the alignment\r
+ // *** BUT DOES NOT PARSE CHARACTER DATA FROM THE ALIGNMENT\r
+ bool GetNextAlignmentCore(BamAlignment&);\r
// ... should this be private?\r
bool HasOpenReaders(void);\r
\r