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

Function assemble

Assembly/AssembleAlgorithm.h:44–142  ·  view source on GitHub ↗

Assemble contigs. * @return the number of contigs assembled */

Source from the content-addressed store, hash-verified

42 * @return the number of contigs assembled
43 */
44static inline
45size_t assemble(SequenceCollectionHash* seqCollection,
46 FastaWriter* fileWriter = NULL)
47{
48 typedef SequenceCollectionHash Graph;
49 typedef graph_traits<Graph>::vertex_descriptor V;
50 typedef Graph::SymbolSetPair SymbolSetPair;
51
52 Timer timer("Assemble");
53
54 size_t kmerCount = 0;
55 unsigned contigID = 0;
56 size_t assembledKmer = 0;
57 size_t lowCoverageKmer = 0;
58 size_t lowCoverageContigs = 0;
59
60 for (Graph::iterator iter = seqCollection->begin();
61 iter != seqCollection->end(); ++iter) {
62 if (iter->second.deleted())
63 continue;
64 kmerCount++;
65
66 extDirection dir;
67 SeqContiguity status = checkSeqContiguity(*iter, dir, true);
68 if (status == SC_CONTIGUOUS)
69 continue;
70 else if(status == SC_ISLAND)
71 {
72 BranchRecord currBranch(SENSE);
73 currBranch.push_back(*iter);
74 currBranch.terminate(BS_NOEXT);
75 size_t removed = assembleContig(seqCollection,
76 fileWriter, currBranch, contigID++);
77 assembledKmer += currBranch.size();
78 if (removed > 0) {
79 lowCoverageContigs++;
80 lowCoverageKmer += removed;
81 }
82 continue;
83 }
84 assert(status == SC_ENDPOINT);
85
86 BranchRecord currBranch(dir);
87 currBranch.push_back(*iter);
88 V currSeq = iter->first;
89 extendBranch(currBranch, currSeq,
90 iter->second.getExtension(dir));
91 assert(currBranch.isActive());
92 while(currBranch.isActive())
93 {
94 SymbolSetPair extRec;
95 int multiplicity = -1;
96 bool success = seqCollection->getSeqData(
97 currSeq, extRec, multiplicity);
98 assert(success);
99 (void)success;
100 processLinearExtensionForBranch(currBranch,
101 currSeq, extRec, multiplicity, UINT_MAX);

Callers

nothing calls this directly

Calls 15

checkSeqContiguityFunction · 0.85
assembleContigFunction · 0.85
extendBranchFunction · 0.85
addToDbFunction · 0.85
deletedMethod · 0.80
terminateMethod · 0.80
getExtensionMethod · 0.80
getSeqDataMethod · 0.80
beginMethod · 0.45
endMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected