Thomas hace 1 año
padre
commit
964e8c95c8
Se han modificado 1 ficheros con 34 adiciones y 0 borrados
  1. 34 0
      src/lib.rs

+ 34 - 0
src/lib.rs

@@ -175,6 +175,7 @@ pub enum Track {
     Bam(BamTrack),
     Genes(GenesTrack),
     Variants(VariantsTrack),
+    Bed(BedTrack),
 }
 
 impl Track {
@@ -183,6 +184,7 @@ impl Track {
             Track::Bam(bam) => json!(bam),
             Track::Genes(genes) => json!(genes),
             Track::Variants(variants) => json!(variants),
+            Track::Bed(bed) => json!(bed),
         }
     }
 
@@ -191,6 +193,7 @@ impl Track {
             Track::Bam(track) => track.order = order,
             Track::Genes(track) => track.order = order,
             Track::Variants(track) => track.order = order,
+            Track::Bed(track) => track.order = order,
         }
     }
 }
@@ -205,6 +208,7 @@ pub struct GenesTrack {
 
     #[default = "gff3"]
     pub format: String,
+
     #[default = ""]
     pub url: String,
 
@@ -293,6 +297,36 @@ impl VariantsTrack {
     }
 }
 
+#[derive(Debug, Serialize, SmartDefault)]
+pub struct BedTrack {
+    #[default = "annotation"]
+    #[serde(rename = "type")]
+    pub igv_type: String,
+
+    #[default = "bed"]
+    pub format: String,
+
+    #[default = "EXPANDED"]
+    #[serde(rename = "displayMode")]
+    pub display_mode: String,
+
+    #[default = 0]
+    pub order: i16,
+
+    pub name: String,
+    pub url: String,
+}
+
+impl BedTrack {
+    pub fn new(name: &str, url: &str) -> Self {
+        Self {
+            name: name.to_string(),
+            url: url.to_string(),
+            ..Default::default()
+        }
+    }
+}
+
 #[cfg(test)]
 mod tests {
     use super::*;