libmatchtigs/implementation/pathtigs/
mod.rs1use crate::TigAlgorithm;
2use genome_graph::bigraph::algo::walk_cover::arbitrary_biwalk_cover;
3use genome_graph::bigraph::interface::static_bigraph::StaticEdgeCentricBigraph;
4use genome_graph::bigraph::interface::BidirectedData;
5use genome_graph::bigraph::traitgraph::interface::GraphBase;
6use genome_graph::bigraph::traitgraph::walks::VecEdgeWalk;
7use log::info;
8
9#[derive(Default)]
12pub struct PathtigAlgorithm;
13
14impl<Graph: GraphBase> TigAlgorithm<Graph> for PathtigAlgorithm
15where
16 Graph: StaticEdgeCentricBigraph,
17 Graph::EdgeData: BidirectedData + Eq,
18{
19 type Configuration = ();
20
21 fn compute_tigs(
22 graph: &mut Graph,
23 _configuration: &Self::Configuration,
24 ) -> Vec<VecEdgeWalk<Graph>> {
25 compute_pathtigs(graph)
26 }
27}
28
29fn compute_pathtigs<
32 EdgeData: BidirectedData + Eq,
33 Graph: StaticEdgeCentricBigraph<EdgeData = EdgeData>,
34>(
35 graph: &Graph,
36) -> Vec<VecEdgeWalk<Graph>> {
37 info!("Computing pathtigs");
38 let pathtigs = arbitrary_biwalk_cover(graph);
39 info!("Found {} pathtigs", pathtigs.len());
40 pathtigs
41}