From be0639f742c5df63e830a6a4176ff964a04c0f06 Mon Sep 17 00:00:00 2001 From: Derek Date: Tue, 20 Jul 2010 16:25:48 -0400 Subject: [PATCH] Modified BamMultiReader::Open() to return bool. Still needs some tweaks to handle all error cases correctly. --- BamMultiReader.cpp | 19 +++++++++++-------- BamMultiReader.h | 4 ++-- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/BamMultiReader.cpp b/BamMultiReader.cpp index 75054a2..001df07 100644 --- a/BamMultiReader.cpp +++ b/BamMultiReader.cpp @@ -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 filenames, bool openIndexes, bool coreMode, bool useDefaultIndex) { +bool BamMultiReader::Open(const vector 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 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) { diff --git a/BamMultiReader.h b/BamMultiReader.h index 37ad765..bd36d71 100644 --- a/BamMultiReader.h +++ b/BamMultiReader.h @@ -3,7 +3,7 @@ // Marth Lab, Department of Biology, Boston College // All rights reserved. // --------------------------------------------------------------------------- -// Last modified: 22 February 2010 (EG) +// Last modified: 20 July 2010 (DB) // --------------------------------------------------------------------------- // Functionality for simultaneously reading multiple BAM files // *************************************************************************** @@ -59,7 +59,7 @@ class BamMultiReader { // indexes. // @coreMode - setup our first alignments using GetNextAlignmentCore(); // also useful for merging - void Open(const vector filenames, bool openIndexes = true, bool coreMode = false, bool useDefaultIndex = true); + bool Open(const vector filenames, bool openIndexes = true, bool coreMode = false, bool useDefaultIndex = true); // performs random-access jump to reference, position bool Jump(int refID, int position = 0); -- 2.39.2