]> git.donarmstrong.com Git - bamtools.git/commitdiff
Modified BamMultiReader::Open() to return bool. Still needs some tweaks to handle...
authorDerek <derekwbarnett@gmail.com>
Tue, 20 Jul 2010 20:25:48 +0000 (16:25 -0400)
committerDerek <derekwbarnett@gmail.com>
Tue, 20 Jul 2010 20:25:48 +0000 (16:25 -0400)
BamMultiReader.cpp
BamMultiReader.h

index 75054a23a736d2d6fc8dee2604cfd880d2ff5b15..001df075d17fd553e220cc4489a8f3a3fddef25f 100644 (file)
@@ -3,7 +3,7 @@
 // Marth Lab, Department of Biology, Boston College
 // All rights reserved.
 // ---------------------------------------------------------------------------
-// Last modified: 23 Februrary 2010 (EG)
+// Last modified: 20 July 2010 (DB)
 // ---------------------------------------------------------------------------
 // Uses BGZF routines were adapted from the bgzf.c code developed at the Broad
 // Institute.
@@ -210,7 +210,7 @@ void BamMultiReader::UpdateAlignments(void) {
 }
 
 // opens BAM files
-void BamMultiReader::Open(const vector<string> filenames, bool openIndexes, bool coreMode, bool useDefaultIndex) {
+bool BamMultiReader::Open(const vector<string> filenames, bool openIndexes, bool coreMode, bool useDefaultIndex) {
     
     // for filename in filenames
     fileNames = filenames; // save filenames in our multireader
@@ -245,18 +245,21 @@ void BamMultiReader::Open(const vector<string> filenames, bool openIndexes, bool
                                             make_pair(reader, alignment)));
             } else {
                 cerr << "WARNING: could not read first alignment in " << filename << ", ignoring file" << endl;
+                // if only file available & could not be read, return failure
+                if ( filenames.size() == 1 ) return false;
             }
         
         } 
        
-        // TODO; error handling on openedOK == false
-        else {
-          
-          
-        }
+        // TODO; any more error handling on openedOK ??
+        else 
+            return false;
     }
-    
+
+    // files opened ok, at least one alignment could be read,
+    // now need to check that all files use same reference data
     ValidateReaders();
+    return true;
 }
 
 void BamMultiReader::PrintFilenames(void) {
index 37ad7652d46d0c8a38f61dbd138c9724c7d1eb01..bd36d7160e0d18aee8d63c8699262c4a296695bc 100644 (file)
@@ -3,7 +3,7 @@
 // Marth Lab, Department of Biology, Boston College\r
 // All rights reserved.\r
 // ---------------------------------------------------------------------------\r
-// Last modified: 22 February 2010 (EG)\r
+// Last modified: 20 July 2010 (DB)\r
 // ---------------------------------------------------------------------------\r
 // Functionality for simultaneously reading multiple BAM files\r
 // ***************************************************************************\r
@@ -59,7 +59,7 @@ class BamMultiReader {
         // 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, bool useDefaultIndex = true);\r
+        bool Open(const vector<string> filenames, bool openIndexes = true, bool coreMode = false, bool useDefaultIndex = true);\r
 \r
         // performs random-access jump to reference, position\r
         bool Jump(int refID, int position = 0);\r