Thomas 1 рік тому
батько
коміт
a787902ccd
3 змінених файлів з 72 додано та 15 видалено
  1. 50 0
      Cargo.lock
  2. 2 0
      Cargo.toml
  3. 20 15
      src/variants.rs

+ 50 - 0
Cargo.lock

@@ -615,6 +615,7 @@ checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
 dependencies = [
  "equivalent",
  "hashbrown",
+ "serde",
 ]
 
 [[package]]
@@ -1136,6 +1137,7 @@ dependencies = [
  "serde_rusqlite",
  "statrs",
  "trc",
+ "utoipa",
  "uuid",
 ]
 
@@ -1207,6 +1209,30 @@ dependencies = [
  "unicode-width",
 ]
 
+[[package]]
+name = "proc-macro-error"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+dependencies = [
+ "proc-macro-error-attr",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro-error-attr"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "version_check",
+]
+
 [[package]]
 name = "proc-macro2"
 version = "1.0.82"
@@ -1682,6 +1708,30 @@ version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
 
+[[package]]
+name = "utoipa"
+version = "4.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c5afb1a60e207dca502682537fefcfd9921e71d0b83e9576060f09abc6efab23"
+dependencies = [
+ "indexmap",
+ "serde",
+ "serde_json",
+ "utoipa-gen",
+]
+
+[[package]]
+name = "utoipa-gen"
+version = "4.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7bf0e16c02bc4bf5322ab65f10ab1149bdbcaa782cba66dc7057370a3f8190be"
+dependencies = [
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.64",
+]
+
 [[package]]
 name = "uuid"
 version = "1.8.0"

+ 2 - 0
Cargo.toml

@@ -42,3 +42,5 @@ dashmap = { version = "5.5.3", features = ["rayon", "serde"] }
 crossbeam-deque = "0.8.5"
 trc = "1.2.4"
 pot = "=3.0.0"
+utoipa = "4.2.3"
+

+ 20 - 15
src/variants.rs

@@ -38,6 +38,7 @@ use noodles_gff as gff;
 
 use rayon::prelude::*;
 use serde::{ser::SerializeStruct, Deserialize, Serialize, Serializer};
+use utoipa::ToSchema;
 use std::io::Write;
 use std::{
     env::temp_dir,
@@ -913,13 +914,16 @@ impl Variants {
     }
 
     pub fn filter_category(&self, and_categories: &Vec<Category>) -> Vec<&Variant> {
-        self.data.par_iter().flat_map(|v| {
-            if v.is_from_category(and_categories) {
-                vec![v]
-            } else {
-                vec![]
-            }
-        }).collect()
+        self.data
+            .par_iter()
+            .flat_map(|v| {
+                if v.is_from_category(and_categories) {
+                    vec![v]
+                } else {
+                    vec![]
+                }
+            })
+            .collect()
     }
 }
 
@@ -1010,8 +1014,6 @@ impl CallerData {
             return false;
         }
     }
-
-    
 }
 
 #[derive(Debug, Clone, Serialize, Eq, PartialEq, Deserialize)]
@@ -1020,7 +1022,7 @@ pub enum VariantType {
     Constitutionnal,
 }
 
-#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, ToSchema)]
 pub enum VCFSource {
     DeepVariant,
     ClairS,
@@ -1247,7 +1249,7 @@ impl Variant {
                     }
                     vec_bools.push(bools.iter().any(|&b| b));
                 }
-                Category::VAF{ min, max } => {
+                Category::VAF { min, max } => {
                     let v = if self.vaf.is_none() {
                         let mut s = self.clone();
                         s.vaf()
@@ -1255,7 +1257,7 @@ impl Variant {
                         self.vaf.unwrap()
                     };
                     vec_bools.push(v >= *min && v <= *max);
-                },
+                }
             }
         }
         vec_bools.iter().all(|&x| x)
@@ -1270,7 +1272,7 @@ enum AlterationCategory {
     Other,
 }
 
-#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, ToSchema)]
 pub enum AnnotationType {
     VariantCategory(VariantCategory),
     VEP(Vec<VEP>),
@@ -1280,7 +1282,7 @@ pub enum AnnotationType {
     NCBIGFF(NCBIGFF),
 }
 
-#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, ToSchema)]
 pub enum VariantCategory {
     Somatic,
     LowMRDDepth,
@@ -1462,7 +1464,10 @@ pub enum Category {
     VCFSource(VCFSource),
     NCosmic(u64),
     NCBIFeature(String),
-    VAF{min: f32, max: f32},
+    VAF {
+        min: f32,
+        max: f32,
+    },
 }
 
 pub fn run_pipe(name: &str, multi: &MultiProgress) -> Result<()> {