|
|
@@ -990,6 +990,7 @@ pub fn dot_graph_biall(
|
|
|
|
|
|
#[cfg(test)]
|
|
|
mod tests {
|
|
|
+ use env_logger::Env;
|
|
|
|
|
|
use dashmap::DashSet;
|
|
|
use indicatif::MultiProgress;
|
|
|
@@ -1002,6 +1003,12 @@ mod tests {
|
|
|
phase::{merge_phases, variants_phasing, write_phases_bed, HeteroVar, Phase},
|
|
|
};
|
|
|
|
|
|
+ fn init() {
|
|
|
+ let _ = env_logger::Builder::from_env(Env::default().default_filter_or("info"))
|
|
|
+ .is_test(true)
|
|
|
+ .try_init();
|
|
|
+ }
|
|
|
+
|
|
|
#[test]
|
|
|
fn it_works() -> Result<()> {
|
|
|
let _ = env_logger::builder().is_test(true).try_init();
|
|
|
@@ -1030,16 +1037,23 @@ mod tests {
|
|
|
|
|
|
#[test]
|
|
|
fn test_graph() -> Result<()> {
|
|
|
- let chrom = vec!["chr9", "chr11"];
|
|
|
- let dir = "/data/longreads_basic_pipe/ROBIN/diag/neo_contigs";
|
|
|
+ init();
|
|
|
+
|
|
|
+ let case = "MERY";
|
|
|
+ let chrom = vec!["chr7"];
|
|
|
+ info!("This record will be captured by `cargo test`");
|
|
|
+
|
|
|
+ let dir = format!("/data/longreads_basic_pipe/{case}/diag/neo_contigs");
|
|
|
|
|
|
// Load from fasta in dir.
|
|
|
- let genome = Genome::from_contigs_sequences(dir)?;
|
|
|
+ let genome = Genome::from_contigs_sequences(&dir)?;
|
|
|
+ genome.stats();
|
|
|
let mut genomic_graph = GenomicGraph::from_genome(&genome);
|
|
|
|
|
|
let sens = vec![true, false];
|
|
|
let pos = vec![0, i32::MAX];
|
|
|
let mut all_ways = Vec::new();
|
|
|
+ if chrom.len() > 1 {
|
|
|
(0..4).into_iter().for_each(|i| {
|
|
|
let start_pos = if i < 2 { 0 } else { i32::MAX };
|
|
|
let end_pos = pos[i % 2];
|
|
|
@@ -1047,27 +1061,49 @@ mod tests {
|
|
|
(0..4).into_iter().for_each(|i| {
|
|
|
let start_sens = if i < 2 { true } else { false };
|
|
|
let end_sens = sens[i % 2];
|
|
|
-
|
|
|
- (0..4).into_iter().for_each(|i| {
|
|
|
- let start_chr = if i < 2 { chrom[0] } else { chrom[1] };
|
|
|
- let end_chr = chrom[i % 2];
|
|
|
- let start = (start_sens, start_chr, start_pos);
|
|
|
- let end = (end_sens, end_chr, end_pos);
|
|
|
-
|
|
|
- let (_oriented_graph, _integrated_graph, ways) = genomic_graph.ways(start, end);
|
|
|
- // let dot = oriented_graph.dot_graph();
|
|
|
-
|
|
|
- for (_i, way) in ways.iter().enumerate() {
|
|
|
- let s = way
|
|
|
- .iter()
|
|
|
- .map(|(_, _, _, s)| s.to_string())
|
|
|
- .collect::<Vec<String>>()
|
|
|
- .join("");
|
|
|
- all_ways.push(s);
|
|
|
- }
|
|
|
- });
|
|
|
+ (0..4).into_iter().for_each(|i| {
|
|
|
+ let start_chr = if i < 2 { chrom[0] } else { chrom[1] };
|
|
|
+ let end_chr = chrom[i % 2];
|
|
|
+ let start = (start_sens, start_chr, start_pos);
|
|
|
+ let end = (end_sens, end_chr, end_pos);
|
|
|
+
|
|
|
+ let (oriented_graph, _integrated_graph, ways) =
|
|
|
+ genomic_graph.ways(start, end);
|
|
|
+
|
|
|
+ let dot = oriented_graph.dot_graph();
|
|
|
+ println!("dot\n{dot}");
|
|
|
+
|
|
|
+ for (_i, way) in ways.iter().enumerate() {
|
|
|
+ let s = way
|
|
|
+ .iter()
|
|
|
+ .map(|(_, _, _, s)| s.to_string())
|
|
|
+ .collect::<Vec<String>>()
|
|
|
+ .join("");
|
|
|
+ all_ways.push(s);
|
|
|
+ }
|
|
|
+ });
|
|
|
});
|
|
|
});
|
|
|
+ } else {
|
|
|
+ let start_chr = chrom[0];
|
|
|
+ let end_chr = chrom[0];
|
|
|
+ let start = (true, start_chr, 0);
|
|
|
+ let end = (true, end_chr, i32::MAX);
|
|
|
+
|
|
|
+ let (oriented_graph, _integrated_graph, ways) = genomic_graph.ways(start, end);
|
|
|
+
|
|
|
+ let dot = oriented_graph.dot_graph();
|
|
|
+ println!("dot\n{dot}");
|
|
|
+
|
|
|
+ for (_i, way) in ways.iter().enumerate() {
|
|
|
+ let s = way
|
|
|
+ .iter()
|
|
|
+ .map(|(_, _, _, s)| s.to_string())
|
|
|
+ .collect::<Vec<String>>()
|
|
|
+ .join("");
|
|
|
+ all_ways.push(s);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
all_ways.dedup();
|
|
|
all_ways
|