/** Finds all contigs used in each path in paths, and * marks them as seen in the vector seen. */ static void seenContigs(vector<bool>& seen, const ContigPaths& paths) { for (ContigPaths::const_iterator it = paths.begin(); it != paths.end(); ++it) for (ContigPath::const_iterator itc = it->begin(); itc != it->end(); ++itc) if (itc->id() < seen.size()) seen[itc->id()] = true; }
/** Return the set of contigs that appear more than once in a single * solution. */ static set<ContigID> findRepeats(ContigID seed, const ContigPaths& solutions) { set<ContigID> repeats; for (ContigPaths::const_iterator solIt = solutions.begin(); solIt != solutions.end(); ++solIt) { map<ContigID, unsigned> count; count[seed]++; for (ContigPath::const_iterator it = solIt->begin(); it != solIt->end(); ++it) count[it->contigIndex()]++; for (map<ContigID, unsigned>::const_iterator it = count.begin(); it != count.end(); ++it) if (it->second > 1) repeats.insert(it->first); } return repeats; }