Sequence MergeSequences(const Graph& g, const vector<typename Graph::EdgeId>& continuous_path) { vector < Sequence > path_sequences; path_sequences.push_back(g.EdgeNucls(continuous_path[0])); for (size_t i = 1; i < continuous_path.size(); ++i) { VERIFY( g.EdgeEnd(continuous_path[i - 1]) == g.EdgeStart(continuous_path[i])); path_sequences.push_back(g.EdgeNucls(continuous_path[i])); } return MergeOverlappingSequences(path_sequences, g.k()); }
Sequence GetSequenceOfPathRegion(Graph &g, size_t k_value, vector<EdgeId> path, pair<size_t, size_t> region){ VERIFY(IsPathRegionCorrect(region, path.size())); if(region.first > region.second) return Sequence(); EdgeId cur_edge = path[region.first]; Sequence seq = g.EdgeNucls(cur_edge); for(auto i = region.first + 1; i <= region.second; ++i){ Sequence next_seq = g.EdgeNucls(path[i]); seq = seq + next_seq.Subseq(k_value, next_seq.size()); } return seq; }