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;
}
}
}
}
}