MCPcopy Create free account
hub / github.com/OpenGene/fastplong / processSingleEnd

Method processSingleEnd

src/seprocessor.cpp:180–329  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

178}
179
180bool SingleEndProcessor::processSingleEnd(ReadPack* pack, ThreadConfig* config){
181 string* outstr = new string();
182 string* failedOut = new string();
183 int tid = config->getThreadId();
184
185 int readPassed = 0;
186 for(int p=0;p<pack->count;p++){
187
188 // original read1
189 Read* or1 = pack->data[p];
190
191 // stats the original read before trimming
192 config->getPreStats1()->statRead(or1);
193
194 int frontTrimmed = 0;
195 // trim in head and tail, and apply quality cut in sliding window
196 Read* r1 = mFilter->trimAndCut(or1, mOptions->trim.front, mOptions->trim.tail, frontTrimmed);
197
198 if(r1 != NULL) {
199 if(mOptions->polyXTrim.enabled)
200 PolyX::trimPolyX(r1, config->getFilterResult(), mOptions->polyXTrim.minLen);
201 }
202
203 vector<Read*> outReads;
204
205 if(r1 != NULL && mOptions->adapter.enabled){
206 int trimmed = 0;
207 if(!mOptions->adapter.sequenceStart.empty())
208 trimmed += AdapterTrimmer::trimBySequenceStart(r1, config->getFilterResult(), mOptions->adapter.sequenceStart, mOptions->adapter.edMax, mOptions->adapter.trimmingExtension);
209 if(!mOptions->adapter.sequenceEnd.empty())
210 trimmed += AdapterTrimmer::trimBySequenceEnd(r1, config->getFilterResult(), mOptions->adapter.sequenceEnd,mOptions->adapter.edMax, mOptions->adapter.trimmingExtension);
211 if(mOptions->adapter.hasFasta) {
212 trimmed += AdapterTrimmer::trimByMultiSequences(r1, config->getFilterResult(), mOptions->adapter.seqsInFasta, mOptions->adapter.edMax,mOptions->adapter.trimmingExtension);
213 }
214 if(trimmed > 0) {
215 config->getFilterResult()->addReadTrimmed(trimmed);
216 }
217
218 //search for middle adapter
219 int start = -1;
220 int len = 0;
221 bool foundMiddleAdapter = AdapterTrimmer::findMiddleAdapters(r1, mOptions->adapter.sequenceStart, mOptions->adapter.sequenceEnd, start, len, mOptions->adapter.edMax,mOptions->adapter.trimmingExtension);
222 if(foundMiddleAdapter) {
223 //break the read
224 outReads = r1->breakByGap(start, len);
225 //cerr << "break at " << start << ", " << len << ", read len: " << r1->length() << endl;
226 //cerr << r1->mSeq->substr(start, len) << endl;
227 } else {
228 outReads.push_back(r1);
229 }
230 } else if(r1 != NULL) {
231 outReads.push_back(r1);
232 }
233
234 //break by low quality regions
235 if(mOptions->breakOpt.enabled && outReads.size() > 0) {
236 vector<Read*> tmpReads;
237 for(int i=0; i<outReads.size(); i++) {

Callers

nothing calls this directly

Calls 15

getThreadIdMethod · 0.80
statReadMethod · 0.80
getPreStats1Method · 0.80
trimAndCutMethod · 0.80
getFilterResultMethod · 0.80
addReadTrimmedMethod · 0.80
breakByGapMethod · 0.80
breakByRegionsMethod · 0.80
maskRegionWithNMethod · 0.80
passFilterMethod · 0.80
appendToStringMethod · 0.80

Tested by

no test coverage detected