コード例 #1
0
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());
}
コード例 #2
0
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;
}