template <typename TChar, typename TValue, typename TQual> void remove(StringSet<String<TValue> > & seq, StringSet<String<TQual> > & qual, StringSet<String<TChar> > const & adapter) { Align<String<char>, ArrayGaps> align; resize(rows(align), 2); for (unsigned i = 0; i < length(seq); ++i) { assignSource(row(align,0), seq[i]); for (unsigned j = 0; j < length(adapter); ++j) { assignSource(row(align,1), adapter[j]); int score = globalAlignment(align, Score<int>(1, -1, -1), AlignConfig<true, false, true, false>()); int alignLength = length(seq[i]) - toViewPosition(row(align, 0), toViewPosition(row(align, 1), beginPosition(row(align, 1)))); if (alignLength >= 3) { double rate = 1.0; if (alignLength > 6 ) rate = 0.9; if (score >= rate * alignLength) { resize(qual[i], length(seq[i]) - alignLength); resize(seq[i], length(seq[i]) - alignLength); break; } } } } }