MCPcopy Create free account
hub / github.com/BirolLab/abyss / controlCoverage

Method controlCoverage

Parallel/NetworkSequenceCollection.cpp:393–454  ·  view source on GitHub ↗

Remove low-coverage contigs. */

Source from the content-addressed store, hash-verified

391
392/** Remove low-coverage contigs. */
393void NetworkSequenceCollection::controlCoverage()
394{
395 assert(opt::coverage > 0);
396
397 // Split ambiguous branches.
398 SetState(NAS_MARK_AMBIGUOUS);
399 controlMarkAmbiguous();
400
401 // Remove low-coverage contigs.
402 cout << "Removing low-coverage contigs "
403 "(mean k-mer coverage < " << opt::coverage << ")...\n";
404 SetState(NAS_COVERAGE);
405 m_comm.sendControlMessage(APC_SET_STATE, NAS_COVERAGE);
406 m_comm.reduce(m_data.cleanup());
407 m_lowCoverageContigs = 0;
408 m_lowCoverageKmer = 0;
409 pair<size_t, size_t> numAssembled
410 = performNetworkAssembly();
411 EndState();
412
413 m_numReachedCheckpoint++;
414 while (!checkpointReached())
415 pumpNetwork();
416
417 // Count the number of low-coverage contigs.
418 SetState(NAS_COVERAGE_COMPLETE);
419 m_comm.sendControlMessage(APC_SET_STATE, NAS_COVERAGE_COMPLETE);
420 m_comm.barrier();
421 pumpNetwork();
422
423 numAssembled.first = m_comm.reduce(numAssembled.first);
424 numAssembled.second = m_comm.reduce(numAssembled.second);
425 cout << "Found " << numAssembled.second << " k-mer in "
426 << numAssembled.first << " contigs "
427 "before removing low-coverage contigs.\n";
428
429 size_t lowCoverageContigs = m_comm.reduce(m_lowCoverageContigs);
430 size_t lowCoverageKmer = m_comm.reduce(m_lowCoverageKmer);
431 cout << "Removed " << lowCoverageKmer << " k-mer in "
432 << lowCoverageContigs << " low-coverage contigs.\n";
433
434 if (!opt::db.empty()) {
435 AssemblyAlgorithms::addToDb ("totalLowCovCntg", lowCoverageContigs);
436 AssemblyAlgorithms::addToDb ("totalLowCovKmer", lowCoverageKmer);
437 }
438
439 EndState();
440
441 SetState(NAS_SPLIT_AMBIGUOUS);
442 controlSplitAmbiguous();
443
444 SetState(NAS_CLEAR_FLAGS);
445 m_comm.sendControlMessage(APC_SET_STATE, NAS_CLEAR_FLAGS);
446 m_comm.barrier();
447 pumpNetwork();
448 m_data.wipeFlag(SeqFlag(SF_MARK_SENSE | SF_MARK_ANTISENSE));
449 size_t removed = m_comm.reduce(m_data.cleanup());
450 cout << "Removed " << removed << " marked k-mer.\n";

Callers

nothing calls this directly

Calls 8

addToDbFunction · 0.85
SeqFlagEnum · 0.85
reduceMethod · 0.80
cleanupMethod · 0.80
barrierMethod · 0.80
wipeFlagMethod · 0.80
sendControlMessageMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected