Browse Source

down htslib

Thomas 1 year ago
parent
commit
1476f06555
3 changed files with 260 additions and 202 deletions
  1. 214 156
      Cargo.lock
  2. 1 1
      Cargo.toml
  3. 45 45
      src/lib.rs

File diff suppressed because it is too large
+ 214 - 156
Cargo.lock


+ 1 - 1
Cargo.toml

@@ -8,7 +8,7 @@ edition = "2021"
 [dependencies]
 env_logger = "^0.10.1"
 test-env-log = "0.2.8"
-minimap2 = { git = "https://github.com/jguhlin/minimap2-rs", features = ["htslib", "simde"]}
+minimap2 = { git = "https://github.com/jguhlin/minimap2-rs", features = ["simde"] }
 aligner_client = { git = "https://git.t0m4.fr/Thomas/aligner_client.git"}
 rust-htslib = "0.46.0"
 anyhow = "1.0.75"

+ 45 - 45
src/lib.rs

@@ -659,51 +659,51 @@ impl Contig {
     }
 
     // bug cigar len != seq len
-    pub fn write_bam(&self, path: &str) -> Result<()> {
-        let aligner = Aligner::builder()
-            .asm5()
-            .with_threads(8)
-            .with_cigar()
-            .with_seq(self.sequence.as_bytes())
-            .expect("Unable to build index");
-
-        let mut mappings = Vec::new();
-        let supporting_records = self
-            .supporting_records
-            .clone()
-            .ok_or(anyhow!("no supporting records"))?;
-        for record in supporting_records.iter() {
-            let seq = record.seq().as_bytes();
-            let alignment = aligner
-                .map(&seq, false, false, None, None)
-                .expect("Unable to align");
-            mappings.push(alignment);
-        }
-        let mut mappings: Vec<_> = mappings.into_iter().flatten().collect();
-        mappings.sort_by(|a, b| a.target_start.cmp(&b.target_start));
-
-        let mut header = bam::Header::new();
-        let mut sq_record = rust_htslib::bam::header::HeaderRecord::new(b"SQ");
-        sq_record.push_tag(b"SN", self.id.clone());
-        sq_record.push_tag(b"LN", self.sequence.len());
-        header.push_record(&sq_record);
-
-        let mut out = bam::Writer::from_path(path, &header, bam::Format::Bam).unwrap();
-
-        // copy reverse reads to new BAM file
-        for mapping in mappings.iter() {
-            let record = minimap2::htslib::mapping_to_record(
-                Some(mapping),
-                self.sequence.as_bytes(),
-                header.clone(),
-                None,
-                Some(Uuid::new_v4().as_bytes()),
-            );
-            let _ = out.write(&record);
-        }
-        rust_htslib::bam::index::build(path, None, rust_htslib::bam::index::Type::Bai, 1)?;
-        Ok(())
-    }
+    // pub fn write_bam(&self, path: &str) -> Result<()> {
+    //     let aligner = Aligner::builder()
+    //         .asm5()
+    //         .with_threads(8)
+    //         .with_cigar()
+    //         .with_seq(self.sequence.as_bytes())
+    //         .expect("Unable to build index");
+    //
+    //     let mut mappings = Vec::new();
+    //     let supporting_records = self
+    //         .supporting_records
+    //         .clone()
+    //         .ok_or(anyhow!("no supporting records"))?;
+    //     for record in supporting_records.iter() {
+    //         let seq = record.seq().as_bytes();
+    //         let alignment = aligner
+    //             .map(&seq, false, false, None, None)
+    //             .expect("Unable to align");
+    //         mappings.push(alignment);
+    //     }
+    //     let mut mappings: Vec<_> = mappings.into_iter().flatten().collect();
+    //     mappings.sort_by(|a, b| a.target_start.cmp(&b.target_start));
+    //
+    //     let mut header = bam::Header::new();
+    //     let mut sq_record = rust_htslib::bam::header::HeaderRecord::new(b"SQ");
+    //     sq_record.push_tag(b"SN", self.id.clone());
+    //     sq_record.push_tag(b"LN", self.sequence.len());
+    //     header.push_record(&sq_record);
+    //
+    //     let mut out = bam::Writer::from_path(path, &header, bam::Format::Bam).unwrap();
+    //
+    //     // copy reverse reads to new BAM file
+    //     for mapping in mappings.iter() {
+    //         let record = minimap2::htslib::mapping_to_record(
+    //             Some(mapping),
+    //             self.sequence.as_bytes(),
+    //             header.clone(),
+    //             None,
+    //             Some(Uuid::new_v4().as_bytes()),
+    //         );
+    //         let _ = out.write(&record);
+    //     }
+    //     rust_htslib::bam::index::build(path, None, rust_htslib::bam::index::Type::Bai, 1)?;
+    //     Ok(())
+    // }
 
     pub fn hgvs(&self) -> Option<String> {
         self.contig_ref.hgvs()

Some files were not shown because too many files changed in this diff