浏览代码

insertions

Thomas 1 年之前
父节点
当前提交
ff94a57887
共有 1 个文件被更改,包括 28 次插入3 次删除
  1. 28 3
      src/lib.rs

+ 28 - 3
src/lib.rs

@@ -115,7 +115,10 @@ impl ContigRef {
                     let diff = a.query_end - b.query_start;
                     (
                         (a.target_name.clone().unwrap_or(uk.clone()), a.target_end),
-                        (b.target_name.clone().unwrap_or(uk.clone()), b.target_start + diff),
+                        (
+                            b.target_name.clone().unwrap_or(uk.clone()),
+                            b.target_start + diff,
+                        ),
                     )
                 };
                 let (bp_b_1, bp_b_2) = if b.query_end <= c.query_end {
@@ -128,7 +131,10 @@ impl ContigRef {
                     let diff = b.query_end - c.query_start;
                     (
                         (b.target_name.clone().unwrap_or(uk.clone()), b.target_end),
-                        (c.target_name.clone().unwrap_or(uk.clone()), c.target_start + diff),
+                        (
+                            c.target_name.clone().unwrap_or(uk.clone()),
+                            c.target_start + diff,
+                        ),
                     )
                 };
                 if bp_a_1.0 == bp_b_2.0 {
@@ -444,7 +450,26 @@ impl Contig {
                     ),
                 ];
                 write_bed(&bed_path, &d)?;
-            }
+            },
+            ContigRef::ChimericTriple((a, b, c)) => {
+                let d: Vec<(String, i32, i32, String)> = vec![a, b, c]
+                    .iter()
+                    .map(|r| {
+                        (
+                            self.id.clone(),
+                            r.query_start,
+                            r.query_end,
+                            format!(
+                                "{}:{}-{}",
+                                r.target_name.clone().unwrap(),
+                                r.target_start,
+                                r.target_end
+                            ),
+                        )
+                    })
+                    .collect();
+                write_bed(&bed_path, &d)?;
+            },
             _ => (),
         }