Skip to content

Commit ef5e33a

Browse files
committed
refine trimmed reads/bases counters
1 parent c903553 commit ef5e33a

6 files changed

Lines changed: 22 additions & 20 deletions

File tree

src/adaptertrimmer.cpp

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ bool AdapterTrimmer::trimByOverlapAnalysis(Read* r1, Read* r2, FilterResult* fr,
4545
return false;
4646
}
4747

48-
bool AdapterTrimmer::trimByMultiSequences(Read* r, FilterResult* fr, vector<string>& adapterList, bool isR2, bool incTrimmedCounter) {
48+
bool AdapterTrimmer::trimByMultiSequences(Read* r, FilterResult* fr, vector<string>& adapterList, bool isR2) {
4949
int matchReq = 4;
5050
if(adapterList.size() > 16)
5151
matchReq = 5;
@@ -55,15 +55,7 @@ bool AdapterTrimmer::trimByMultiSequences(Read* r, FilterResult* fr, vector<stri
5555

5656
string* originalSeq = r->mSeq;
5757
for(int i=0; i<adapterList.size(); i++) {
58-
trimmed |= trimBySequence(r, NULL, adapterList[i], isR2, matchReq);
59-
}
60-
61-
if(trimmed) {
62-
string adapter = originalSeq->substr(r->length(), originalSeq->length() - r->length());
63-
if(fr)
64-
fr->addAdapterTrimmed(adapter, isR2, incTrimmedCounter);
65-
else
66-
cerr << adapter << endl;
58+
trimmed |= trimBySequence(r, fr, adapterList[i], isR2, matchReq);
6759
}
6860

6961
return trimmed;

src/adaptertrimmer.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class AdapterTrimmer{
1818
static bool trimByOverlapAnalysis(Read* r1, Read* r2, FilterResult* fr, int diffLimit, int overlapRequire, double diffPercentLimit);
1919
static bool trimByOverlapAnalysis(Read* r1, Read* r2, FilterResult* fr, OverlapResult ov, int frontTrimmed1 = 0, int frontTrimmed2 = 0);
2020
static bool trimBySequence(Read* r1, FilterResult* fr, string& adapter, bool isR2 = false, int matchReq = 4);
21-
static bool trimByMultiSequences(Read* r1, FilterResult* fr, vector<string>& adapterList, bool isR2 = false, bool incTrimmedCounter = true);
21+
static bool trimByMultiSequences(Read* r1, FilterResult* fr, vector<string>& adapterList, bool isR2 = false);
2222
static bool test();
2323

2424
};

src/filterresult.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,11 +121,9 @@ bool FilterResult::isLowComplexity(string& adapter) {
121121
return diff < adapter.length()/2;
122122
}
123123

124-
void FilterResult::addAdapterTrimmed(string adapter, bool isR2, bool incTrimmedCounter ) {
124+
void FilterResult::addAdapterTrimmed(string adapter, bool isR2 ) {
125125
if(adapter.empty())
126126
return;
127-
if(incTrimmedCounter)
128-
mTrimmedAdapterRead++;
129127
mTrimmedAdapterBases += adapter.length();
130128
if(!isR2) {
131129
if(mAdapter1.count(adapter) >0 )
@@ -154,7 +152,6 @@ void FilterResult::addAdapterTrimmed(string adapter, bool isR2, bool incTrimmedC
154152

155153
void FilterResult::addAdapterTrimmed(string adapter1, string adapter2) {
156154
// paired
157-
mTrimmedAdapterRead += 2;
158155
mTrimmedAdapterBases += adapter1.length() + adapter2.length();
159156
if(!adapter1.empty()){
160157
if(mAdapter1.count(adapter1) >0 )
@@ -182,6 +179,10 @@ void FilterResult::addAdapterTrimmed(string adapter1, string adapter2) {
182179
}
183180
}
184181

182+
void FilterResult::incTrimmedAdapterRead(int count) {
183+
mTrimmedAdapterRead += count;
184+
}
185+
185186
void FilterResult::addPolyXTrimmed(int base, int length) {
186187
mTrimmedPolyXReads[base] += 1;
187188
mTrimmedPolyXBases[base] += length;

src/filterresult.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,10 @@ class FilterResult{
3333
static FilterResult* merge(vector<FilterResult*>& list);
3434
void print();
3535
// for single end
36-
void addAdapterTrimmed(string adapter, bool isR2 = false, bool incTrimmedCounter = true);
36+
void addAdapterTrimmed(string adapter, bool isR2 = false);
3737
// for paired end
3838
void addAdapterTrimmed(string adapter1, string adapter2);
39+
void incTrimmedAdapterRead(int count = 1);
3940
void addPolyXTrimmed(int base, int length);
4041
long getTotalPolyXTrimmedReads();
4142
long getTotalPolyXTrimmedBases();

src/peprocessor.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -465,10 +465,16 @@ bool PairEndProcessor::processPairEnd(ReadPack* leftPack, ReadPack* rightPack, T
465465
trimmed2 = AdapterTrimmer::trimBySequence(r2, config->getFilterResult(), mOptions->adapter.sequenceR2, true);
466466
}
467467
if(mOptions->adapter.hasFasta) {
468-
trimmed1 |= AdapterTrimmer::trimByMultiSequences(r1, config->getFilterResult(), mOptions->adapter.seqsInFasta, false, !trimmed1);
469-
trimmed2 |= AdapterTrimmer::trimByMultiSequences(r2, config->getFilterResult(), mOptions->adapter.seqsInFasta, true, !trimmed2);
468+
trimmed1 |= AdapterTrimmer::trimByMultiSequences(r1, config->getFilterResult(), mOptions->adapter.seqsInFasta, false);
469+
trimmed2 |= AdapterTrimmer::trimByMultiSequences(r2, config->getFilterResult(), mOptions->adapter.seqsInFasta, true);
470470
}
471471

472+
if(trimmed1 )
473+
config->getFilterResult()->incTrimmedAdapterRead(1);
474+
if(trimmed2 )
475+
config->getFilterResult()->incTrimmedAdapterRead(1);
476+
477+
472478
// Check for adapter dimer: both reads shorter than threshold after adapter trimming
473479
// AND adapters were detected in at least one of the reads (requires evidence)
474480
if(r1 != NULL && r2 != NULL && (trimmed1 || trimmed2) &&

src/seprocessor.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -246,11 +246,13 @@ bool SingleEndProcessor::processSingleEnd(ReadPack* pack, ThreadConfig* config){
246246
bool trimmed = false;
247247
if(mOptions->adapter.hasSeqR1)
248248
trimmed = AdapterTrimmer::trimBySequence(r1, config->getFilterResult(), mOptions->adapter.sequence, false);
249-
bool incTrimmedCounter = !trimmed;
250249
if(mOptions->adapter.hasFasta) {
251-
trimmed |= AdapterTrimmer::trimByMultiSequences(r1, config->getFilterResult(), mOptions->adapter.seqsInFasta, false, incTrimmedCounter);
250+
trimmed |= AdapterTrimmer::trimByMultiSequences(r1, config->getFilterResult(), mOptions->adapter.seqsInFasta, false);
252251
}
253252

253+
if(trimmed )
254+
config->getFilterResult()->incTrimmedAdapterRead(1);
255+
254256
// Check for adapter dimer: read shorter than threshold after adapter trimming
255257
// AND adapter was detected (requires evidence)
256258
if(r1 != NULL && trimmed && r1->length() <= mOptions->adapter.dimerMaxLen) {

0 commit comments

Comments
 (0)