From: Erik Garrison Date: Wed, 9 Jun 2010 16:06:13 +0000 (-0400) Subject: further cleanup of duplicate @RG tag warning reporting X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=b6a5bf305b6548020db260ed89e263a946b90897;p=bamtools.git further cleanup of duplicate @RG tag warning reporting --- diff --git a/BamMultiReader.cpp b/BamMultiReader.cpp index e284eca..51372c3 100644 --- a/BamMultiReader.cpp +++ b/BamMultiReader.cpp @@ -207,10 +207,11 @@ const string BamMultiReader::GetHeaderText(void) const { map readGroups; // foreach extraction entry (each BAM file) - bool isFirstTime = true; - for (vector >::const_iterator it = readers.begin(); it != readers.end(); ++it) { + for (vector >::const_iterator rs = readers.begin(); rs != readers.end(); ++rs) { - BamReader* reader = it->first; + map currentFileReadGroups; + + BamReader* reader = rs->first; stringstream header(reader->GetHeaderText()); vector lines; @@ -225,7 +226,7 @@ const string BamMultiReader::GetHeaderText(void) const { if ( headerLine.empty() ) { continue; } // if first file, save HD & SQ entries - if ( isFirstTime ) { + if ( rs == readers.begin() ) { if ( headerLine.find("@HD") == 0 || headerLine.find("@SQ") == 0) { mergedHeader.append(headerLine.c_str()); mergedHeader.append(1, '\n'); @@ -249,15 +250,17 @@ const string BamMultiReader::GetHeaderText(void) const { mergedHeader.append(headerLine.c_str() ); mergedHeader.append(1, '\n'); readGroups[readGroup] = true; + currentFileReadGroups[readGroup] = true; } else { - cerr << "WARNING: duplicate @RG tag entry in BAM header " << readGroup << endl; + // warn iff we are reading one file and discover duplicated @RG tags in the header + // otherwise, we emit no warning, as we might be merging multiple BAM files with identical @RG tags + if (currentFileReadGroups.find(readGroup) != currentFileReadGroups.end()) { + cerr << "WARNING: duplicate @RG tag " << readGroup + << " entry in header of " << reader->GetFilename() << endl; + } } } - } - - // set iteration flag - isFirstTime = false; } // return merged header text