Эх сурвалжийг харах

Bug deletion desc when coming from BNDdesc

Thomas 7 сар өмнө
parent
commit
cc0ef4fcbe
2 өөрчлөгдсөн 28 нэмэгдсэн , 0 устгасан
  1. 9 0
      src/lib.rs
  2. 19 0
      src/variant/variant.rs

+ 9 - 0
src/lib.rs

@@ -661,6 +661,15 @@ let variant: VcfVariant = row.parse()?;
 
         variant_col.variants.push(row.parse()?);
 
+        let row = "chr11\t31260259\tseverus_BND1077_1\tN\t]chr11:36214171]N\t60\tPASS\tPRECISE;SVTYPE=BND;SVLEN=4953912;MATE_ID=severus_BND1077_2;STRANDS=+-;MAPQ=60\tGT:GQ:VAF:hVAF:DR:DV\t0/1:68:0.67000:0.67000,0.00000,0.00000:4:8";
+        let variant: VcfVariant = row.parse()?;
+        let var_string = variant.into_vcf_row();
+        assert_eq!(row, &var_string);
+        assert_eq!(AlterationCategory::DEL, variant.alteration_category());
+        println!("{:#?}", variant.deletion_desc());
+
+        variant_col.variants.push(row.parse()?);
+
         variant_col.annotate_with_constit_bam(
             &annotations, 
             "/data/longreads_basic_pipe/ACHITE/mrd/ACHITE_mrd_hs1.bam", 

+ 19 - 0
src/variant/variant.rs

@@ -391,6 +391,25 @@ impl VcfVariant {
     }
 
     pub fn deletion_desc(&self) -> Option<DeletionDesc> {
+        match self.bnd_desc() {
+            Ok(bnd_desc) if bnd_desc.a_contig == bnd_desc.b_contig => {
+                if bnd_desc.a_position < bnd_desc.b_position {
+                    return Some(DeletionDesc {
+                        contig: bnd_desc.a_contig,
+                        start: bnd_desc.a_position,
+                        end: bnd_desc.b_position
+                    });
+                } else {
+                    return Some(DeletionDesc {
+                        contig: bnd_desc.a_contig,
+                        start: bnd_desc.b_position,
+                        end: bnd_desc.a_position
+                    });
+                }
+            }
+            _ => (),
+        }
+
         self.deletion_len().map(|len| DeletionDesc {
             contig: self.position.contig(),
             start: self.position.position + 2,