From d401178e05192f099e9b86420c5ab4a8cb0618c2 Mon Sep 17 00:00:00 2001 From: Derek Barnett Date: Sat, 27 Apr 2013 22:51:32 -0400 Subject: [PATCH] Fixed: error in FilterTool - mishandling of ASCII tag values --- src/toolkit/bamtools_filter.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/toolkit/bamtools_filter.cpp b/src/toolkit/bamtools_filter.cpp index 1189981..8334b59 100644 --- a/src/toolkit/bamtools_filter.cpp +++ b/src/toolkit/bamtools_filter.cpp @@ -2,7 +2,7 @@ // bamtools_filter.cpp (c) 2010 Derek Barnett, Erik Garrison // Marth Lab, Department of Biology, Boston College // --------------------------------------------------------------------------- -// Last modified: 10 December 2012 +// Last modified: 27 April 2013 // --------------------------------------------------------------------------- // Filters BAM file(s) according to some user-specified criteria // *************************************************************************** @@ -157,6 +157,7 @@ struct BamAlignmentChecker { string tagFilterString = entireTagFilterString.substr(3); // switch on tag type to set tag query value & parse filter token + int8_t asciiFilterValue, asciiQueryValue; int32_t intFilterValue, intQueryValue; uint32_t uintFilterValue, uintQueryValue; float realFilterValue, realQueryValue; @@ -167,6 +168,17 @@ struct BamAlignmentChecker { bool keepAlignment = false; switch (tagType) { + // ASCII tag type + case 'A': + if ( al.GetTag(tagName, asciiQueryValue) ) { + if ( FilterEngine::parseToken(tagFilterString, asciiFilterValue, compareType) ) { + tagFilter.Value = asciiFilterValue; + tagFilter.Type = compareType; + keepAlignment = tagFilter.check(asciiQueryValue); + } + } + break; + // signed int tag type case 'c' : case 's' : @@ -205,7 +217,7 @@ struct BamAlignmentChecker { break; // string tag type - case 'A': + case 'Z': case 'H': if ( al.GetTag(tagName, stringQueryValue) ) { -- 2.39.2