diff --git a/benches/approximate_matching.rs b/benches/approximate_matching.rs index 8cc9dbcf91..a4962a6981 100644 --- a/benches/approximate_matching.rs +++ b/benches/approximate_matching.rs @@ -8,7 +8,7 @@ use bio::alignment::Alignment; use bio::pattern_matching::myers::{long, Myers}; use bio::pattern_matching::ukkonen::*; -static TEXT: &'static [u8] = b"GATCACAGGTCTATCACCCTATTAACCACTCACGGGAGCTCTCCATGC\ +static TEXT: &[u8] = b"GATCACAGGTCTATCACCCTATTAACCACTCACGGGAGCTCTCCATGC\ ATTTGGTATTTTCGTCTGGGGGGTATGCACGCGATAGCATTGCGAGACGCTGGAGCCGGAGCACCCTATGTCGCAGTAT\ CTGTCTTTGATTCCTGCCTCATCCTATTATTTATCGCACCTACGTTCAATATTACAGGCGAACATACTTACTAAAGTGT\ GTTAATTAATTAATGCTTGTAGGACATAATAATAACAATTGAATGTCTGCACAGCCACTTTCCACACAGACATCATAAC\ @@ -222,7 +222,7 @@ CATCACGATG"; // Pattern has same length as in pattern_matching.rs, but 2 differences to best match. // With k = 5 there are 14 hits, with k = 6, there are 78 hits (most are overlapping) -static PATTERN: &'static [u8] = b"GCGCGTCCACACCGCTCG"; +static PATTERN: &[u8] = b"GCGCGTCCACACCGCTCG"; static K: u8 = 6; // used with assertions to ensure correct code and to prevent over-optimization @@ -360,7 +360,7 @@ fn myers_path_reverse_64(b: &mut Bencher) { b.iter(|| { let mut n = 0; let mut matches = myers.find_all(TEXT, K); - while let Some(_) = matches.next_path_reverse(&mut ops) { + while matches.next_path_reverse(&mut ops).is_some() { n += 1; } assert_eq!(n, N_HITS); @@ -374,7 +374,7 @@ fn myers_path_64(b: &mut Bencher) { b.iter(|| { let mut n = 0; let mut matches = myers.find_all(TEXT, K); - while let Some(_) = matches.next_path(&mut ops) { + while matches.next_path(&mut ops).is_some() { n += 1; } assert_eq!(n, N_HITS); @@ -388,7 +388,7 @@ fn myers_path_long_64(b: &mut Bencher) { b.iter(|| { let mut n = 0; let mut matches = myers.find_all(TEXT, K as usize); - while let Some(_) = matches.next_path(&mut ops) { + while matches.next_path(&mut ops).is_some() { n += 1; } assert_eq!(n, N_HITS); @@ -402,7 +402,7 @@ fn myers_path_long_8(b: &mut Bencher) { b.iter(|| { let mut n = 0; let mut matches = myers.find_all(TEXT, K as usize); - while let Some(_) = matches.next_path(&mut ops) { + while matches.next_path(&mut ops).is_some() { n += 1; } assert_eq!(n, N_HITS); @@ -417,7 +417,7 @@ fn myers_path_long_128(b: &mut Bencher) { b.iter(|| { let mut n = 0; let mut matches = myers.find_all(TEXT, K as usize); - while let Some(_) = matches.next_path(&mut ops) { + while matches.next_path(&mut ops).is_some() { n += 1; } assert_eq!(n, N_HITS); @@ -463,7 +463,7 @@ fn myers_no_alignment_64(b: &mut Bencher) { b.iter(|| { let mut n = 0; let mut matches = myers.find_all(TEXT, K); - while let Some(_) = matches.next_end() { + while matches.next_end().is_some() { n += 1; } assert_eq!(n, N_HITS); diff --git a/benches/distance.rs b/benches/distance.rs index 30db76340d..768c342f95 100644 --- a/benches/distance.rs +++ b/benches/distance.rs @@ -9,7 +9,7 @@ use bio::alignment::distance::*; use std::u32; // 5,000 random nucleotides, GC content = .55 -static STR_1: &'static [u8] = b"ATCTAACTATTCCCTGTGCCTTATGGGGGCCTGCGCTATCTGCCTGT\ +static STR_1: &[u8] = b"ATCTAACTATTCCCTGTGCCTTATGGGGGCCTGCGCTATCTGCCTGT\ CGAACCATAGGACTCGCGCCAGCGCGCAGGCTTGGATCGAGGTGAAATCTCCGGGGCCTAAGACCACGAGCGTCTGGCG\ TCTTGGCTAACCCCCCTACATGCTGTTATAGACAATCAGTGGAAACCCGGTGCCAGGGGGTGGAGTGACCTTAAGTCAG\ GGACGATATTAATCGGAAGGAGTATTCAACGCAATGAAGCCGCAGGGTTGGCGTGGGAATGGTGCTTCTGTCCAAGCAG\ @@ -74,7 +74,7 @@ TTTCCCTAGACACTCAACAGTAAGCGCCTTTTGTAGGCAGGGGCACCCCCTGTCAGTGGCTGCGCCAAAACGTCTTCGG\ ATCCCCTTGTCCAATCAAACTGACCGAATTCTTTCATTTAAGACCCTAATATGACATCATTAGTGACTAAATGCCACTC\ CCAAAATTCTGCCCAGAAGCGTTTAAGTTCGCCCCACTAAAGTTGTCTAAAACGA"; // 5,000 random nucleotides, GC content = .45 -static STR_2: &'static [u8] = b"CTAAAGTGGCGAAATTTATGGTGTGTGACCCGTTATGCTCCATTTCG\ +static STR_2: &[u8] = b"CTAAAGTGGCGAAATTTATGGTGTGTGACCCGTTATGCTCCATTTCG\ GTCAGTGGGTCATTGCTAGTAGTCGATTGCATTGTCATTCTCCGAGTGATTTAGCGTGACAGCCGCAGGGAACCCATAA\ AATGTAATCGTAGTCCATCTGATCGTACTTAGAAATGAAGGTCCCCTTTTACCCACGCACCTGTTTACTCGTCGTTTGC\ TTTTAAGAACCGCACGAACCACAGAGCATAAAGAGAACCTCTAGTTCCTTTACAAAGTACTGGTTCCCTTTTCAGCAAG\ @@ -139,7 +139,7 @@ TGTTAGATGGCTCGCTGAACTAATAGTTGTCCACAGAACGTCAAGATTAGAAAACGGTTGTAGCATTATCGGAGGTTCT\ CTAACTACTATCAATACCCGTGTCTTGACTCTGCTGCGGCTACCTATCGCCTGAAAACCAGTTGGTGTTAAGGGATGCT\ CTGTCCAGGACGCCACATGTAGTGAAACTTACATGTTCGTTGGGTTCACCCGACT"; // 5,000 random nucleotides, GC content = .0 -static STR_3: &'static [u8] = b"AATTTAAAATAAAATTATTTTAAAAAATAAATTTTTATTATTTTTTT\ +static STR_3: &[u8] = b"AATTTAAAATAAAATTATTTTAAAAAATAAATTTTTATTATTTTTTT\ TATAAATAATTTAATATATTAAAAATATAAAATTAATTTTTTTAATAATTATAAATTAAAAATTTAAAATATTATTTAA\ AATATAAATTTAATAATATATATTTTAATTATTTAATTATTTTTTATATTTTATAAAAATTTATATTATTTATTTATTA\ AATTATAAAATTTATATTAATATATAAATTTAAATTAAAATAAAATTTTTAAAATTTAAAATTATAAATATTTAATATT\ @@ -204,7 +204,7 @@ TTTATATTTAAAATATAAATAATAAATAATTATAAAAATTTTAATATTAAATATATTATTTTTTTATAAATAATATTTT\ AAATTATATTATTATTATATTATTTAAATATAATATTATTTTTATTATATTTATTTTAATAATTATTATTTTTATAATT\ TTTTTAAATATTTAATAATAAATATTTTTTATAAATAAAAATATTTTTTATTAAT"; // 5,000 random nucleotides, GC content = 1. -static STR_4: &'static [u8] = b"GGGGGGGGGGCGCGCGGCCCCCCGCCGGGGCGCCCCCGCGCGCGGCG\ +static STR_4: &[u8] = b"GGGGGGGGGGCGCGCGGCCCCCCGCCGGGGCGCCCCCGCGCGCGGCG\ CGGCCGCGCGCCCCGCGGGGGCGGCGGGCGCGCCGGGCGCCCCGCGGGCGGCGGGGGCCCGGGCGGGGGGCGCGCGGCC\ GGGGGCCGGCGCGGGCGCGGGCCGCGGCGGCGCCGGCCCGGCCGCGGCCCGCGCGCCCCGGGCGGCGCGCCCGCCCCGG\ CCGGCCCCCGGCGGCCCGCGGGGCGGCCCGGCCGCCGGCGGCCGCCCGGCGGCCCCGGCCCCCCGCCGGCGCCGCGGCG\ diff --git a/benches/fasta_buffer_size.rs b/benches/fasta_buffer_size.rs index dc81236960..8378c7c628 100644 --- a/benches/fasta_buffer_size.rs +++ b/benches/fasta_buffer_size.rs @@ -55,7 +55,7 @@ mod fasta_buffer { use super::*; - bench_func!(default, |tempfile| fasta::Reader::new(tempfile)); + bench_func!(default, fasta::Reader::new); bench_func!(wrapped_default, |tempfile| fasta::Reader::new( io::BufReader::new(tempfile) )); diff --git a/benches/fmindex.rs b/benches/fmindex.rs index 2ef249ccde..159a243a71 100644 --- a/benches/fmindex.rs +++ b/benches/fmindex.rs @@ -33,7 +33,7 @@ fn search_index_seeds(b: &mut Bencher) { }); } -static STR_1: &'static [u8] = b"ATCTAACTATTCCCTGTGCCTTATGGGGGCCTGCGCTATCTGCCTGT\ +static STR_1: &[u8] = b"ATCTAACTATTCCCTGTGCCTTATGGGGGCCTGCGCTATCTGCCTGT\ CGAACCATAGGACTCGCGCCAGCGCGCAGGCTTGGATCGAGGTGAAATCTCCGGGGCCTAAGACCACGAGCGTCTGGCG\ TCTTGGCTAACCCCCCTACATGCTGTTATAGACAATCAGTGGAAACCCGGTGCCAGGGGGTGGAGTGACCTTAAGTCAG\ GGACGATATTAATCGGAAGGAGTATTCAACGCAATGAAGCCGCAGGGTTGGCGTGGGAATGGTGCTTCTGTCCAAGCAG\ diff --git a/benches/orf.rs b/benches/orf.rs index fba8a73166..e592abd0b4 100644 --- a/benches/orf.rs +++ b/benches/orf.rs @@ -8,7 +8,7 @@ use bio::seq_analysis::gc::*; use bio::seq_analysis::orf::Finder; // 5,000 random nucleotides, GC content = .55 -static STR_1: &'static [u8] = b"ATCTAACTATTCCCTGTGCCTTATGGGGGCCTGCGCTATCTGCCTGT\ +static STR_1: &[u8] = b"ATCTAACTATTCCCTGTGCCTTATGGGGGCCTGCGCTATCTGCCTGT\ CGAACCATAGGACTCGCGCCAGCGCGCAGGCTTGGATCGAGGTGAAATCTCCGGGGCCTAAGACCACGAGCGTCTGGCG\ TCTTGGCTAACCCCCCTACATGCTGTTATAGACAATCAGTGGAAACCCGGTGCCAGGGGGTGGAGTGACCTTAAGTCAG\ GGACGATATTAATCGGAAGGAGTATTCAACGCAATGAAGCCGCAGGGTTGGCGTGGGAATGGTGCTTCTGTCCAAGCAG\ diff --git a/benches/pairhmm.rs b/benches/pairhmm.rs index 54992ee8c6..5b0748c44a 100644 --- a/benches/pairhmm.rs +++ b/benches/pairhmm.rs @@ -6,11 +6,11 @@ use bio::stats::pairhmm::*; use bio::stats::{LogProb, Prob}; use test::Bencher; -static TEXT: &'static [u8] = b"GATCACAGGTCTATCACCCTATTAACCACTCACGGGAGCTCTCCATGC\ +static TEXT: &[u8] = b"GATCACAGGTCTATCACCCTATTAACCACTCACGGGAGCTCTCCATGC\ ATTTGGTATTTTCGTCTGGGGGGTATGCACGCGATAGCATTGCGAGACGCTGGAGCCGGAGCACCCTATGTCGCAGTAT\ CTGTCTTTGATTCCTGCCTCATCCTATTATTTATCGCACCTACGTTCAATATTACAGGCGAACATACTTACTAAAGTGT"; -static PATTERN: &'static [u8] = b"GGGTATGCACGCGATAGCATTGCGAGACGCTGGAGCCGGAGCACCCTATGTCGC"; +static PATTERN: &[u8] = b"GGGTATGCACGCGATAGCATTGCGAGACGCTGGAGCCGGAGCACCCTATGTCGC"; // Single base insertion and deletion rates for R1 according to Schirmer et al. // BMC Bioinformatics 2016, 10.1186/s12859-016-0976-y diff --git a/benches/pairwise.rs b/benches/pairwise.rs index b792332930..3c62f889f2 100644 --- a/benches/pairwise.rs +++ b/benches/pairwise.rs @@ -6,7 +6,7 @@ use bio::alignment::pairwise::*; use test::Bencher; // 5,000 random nucleotides, GC content = .55 -static STR_1: &'static [u8] = b"ATCTAACTATTCCCTGTGCCTTATGGGGGCCTGCGCTATCTGCCTGT\ +static STR_1: &[u8] = b"ATCTAACTATTCCCTGTGCCTTATGGGGGCCTGCGCTATCTGCCTGT\ CGAACCATAGGACTCGCGCCAGCGCGCAGGCTTGGATCGAGGTGAAATCTCCGGGGCCTAAGACCACGAGCGTCTGGCG\ TCTTGGCTAACCCCCCTACATGCTGTTATAGACAATCAGTGGAAACCCGGTGCCAGGGGGTGGAGTGACCTTAAGTCAG\ GGACGATATTAATCGGAAGGAGTATTCAACGCAATGAAGCCGCAGGGTTGGCGTGGGAATGGTGCTTCTGTCCAAGCAG\ @@ -72,7 +72,7 @@ ATCCCCTTGTCCAATCAAACTGACCGAATTCTTTCATTTAAGACCCTAATATGACATCATTAGTGACTAAATGCCACTC\ CCAAAATTCTGCCCAGAAGCGTTTAAGTTCGCCCCACTAAAGTTGTCTAAAACGA"; // 5,000 random nucleotides, GC content = .45 -static STR_2: &'static [u8] = b"CTAAAGTGGCGAAATTTATGGTGTGTGACCCGTTATGCTCCATTTCG\ +static STR_2: &[u8] = b"CTAAAGTGGCGAAATTTATGGTGTGTGACCCGTTATGCTCCATTTCG\ GTCAGTGGGTCATTGCTAGTAGTCGATTGCATTGTCATTCTCCGAGTGATTTAGCGTGACAGCCGCAGGGAACCCATAA\ AATGTAATCGTAGTCCATCTGATCGTACTTAGAAATGAAGGTCCCCTTTTACCCACGCACCTGTTTACTCGTCGTTTGC\ TTTTAAGAACCGCACGAACCACAGAGCATAAAGAGAACCTCTAGTTCCTTTACAAAGTACTGGTTCCCTTTTCAGCAAG\ diff --git a/benches/pattern_matching.rs b/benches/pattern_matching.rs index a3f7cad005..69c38b59fd 100644 --- a/benches/pattern_matching.rs +++ b/benches/pattern_matching.rs @@ -9,7 +9,7 @@ use bio::pattern_matching::kmp::KMP; use bio::pattern_matching::shift_and::ShiftAnd; use test::Bencher; -static TEXT: &'static [u8] = b"GATCACAGGTCTATCACCCTATTAACCACTCACGGGAGCTCTCCATGC\ +static TEXT: &[u8] = b"GATCACAGGTCTATCACCCTATTAACCACTCACGGGAGCTCTCCATGC\ ATTTGGTATTTTCGTCTGGGGGGTATGCACGCGATAGCATTGCGAGACGCTGGAGCCGGAGCACCCTATGTCGCAGTAT\ CTGTCTTTGATTCCTGCCTCATCCTATTATTTATCGCACCTACGTTCAATATTACAGGCGAACATACTTACTAAAGTGT\ GTTAATTAATTAATGCTTGTAGGACATAATAATAACAATTGAATGTCTGCACAGCCACTTTCCACACAGACATCATAAC\ @@ -221,7 +221,7 @@ ACCATCCTCCGTGAAATCAATATCCCGCACAAGAGTGCTACTCTCCTCGCTCCGGGCCCATAACACTTGGGGGTAGCTA\ AAGTGAACTGTATCCGACATCTGGTTCCTACTTCAGGGTCATAAAGCCTAAATAGCCCACACGTTCCCCTTAAATAAGA\ CATCACGATG"; -static PATTERN: &'static [u8] = b"GCGCGTACACACCGCCCG"; +static PATTERN: &[u8] = b"GCGCGTACACACCGCCCG"; #[bench] fn bench_shift_and(b: &mut Bencher) { diff --git a/src/alignment/pairwise/banded.rs b/src/alignment/pairwise/banded.rs index 1855fb39d7..7de150e662 100644 --- a/src/alignment/pairwise/banded.rs +++ b/src/alignment/pairwise/banded.rs @@ -305,7 +305,7 @@ impl Aligner { y: TextSlice<'_>, matches: &[(u32, u32)], ) -> Alignment { - self.band = Band::create_with_matches(x, y, self.k, self.w, &self.scoring, &matches); + self.band = Band::create_with_matches(x, y, self.k, self.w, &self.scoring, matches); self.compute_alignment(x, y) } @@ -1316,7 +1316,7 @@ impl Band { scoring.gap_open, scoring.gap_extend, ); - Band::create_from_match_path(x, y, k, w, scoring, &res.path, &matches) + Band::create_from_match_path(x, y, k, w, scoring, &res.path, matches) } fn create_from_match_path( diff --git a/src/alignment/sparse.rs b/src/alignment/sparse.rs index c78676ac0e..041a396353 100644 --- a/src/alignment/sparse.rs +++ b/src/alignment/sparse.rs @@ -302,10 +302,7 @@ pub fn sdpkpp_union_lcskpp_path( .path .binary_search(&sdpkpp_al.path[0]) .unwrap_or(0); - let post_lcskpp = match lcskpp_al - .path - .binary_search(&sdpkpp_al.path.last().unwrap()) - { + let post_lcskpp = match lcskpp_al.path.binary_search(sdpkpp_al.path.last().unwrap()) { Ok(ind) => ind + 1, Err(_) => lcskpp_al.path.len(), }; @@ -334,7 +331,7 @@ pub fn find_kmer_matches(seq1: &[u8], seq2: &[u8], k: usize) -> Vec<(u32, u32)> let set = hash_kmers(seq1, k); find_kmer_matches_seq1_hashed(&set, seq2, k) } else { - let set = hash_kmers(&seq2, k); + let set = hash_kmers(seq2, k); find_kmer_matches_seq2_hashed(seq1, &set, k) } } diff --git a/src/data_structures/interval_tree/avl_interval_tree.rs b/src/data_structures/interval_tree/avl_interval_tree.rs index bb5a1c611e..5feee62f98 100644 --- a/src/data_structures/interval_tree/avl_interval_tree.rs +++ b/src/data_structures/interval_tree/avl_interval_tree.rs @@ -117,7 +117,7 @@ pub struct EntryMut<'a, N: Ord + Clone, D> { impl<'a, N: Ord + Clone + 'a, D: 'a> EntryMut<'a, N, D> { /// Get a mutable reference to the data for this entry pub fn data(&'a mut self) -> &'a mut D { - &mut self.data + self.data } /// Get a reference to the interval for this entry diff --git a/src/data_structures/qgram_index.rs b/src/data_structures/qgram_index.rs index c970c3bac7..bb32863e49 100644 --- a/src/data_structures/qgram_index.rs +++ b/src/data_structures/qgram_index.rs @@ -176,18 +176,15 @@ impl QGramIndex { } Entry::Occupied(mut o) => { let m = o.get_mut(); - if m.pattern.stop - q + 1 == i { - m.pattern.stop = i + q; - m.text.stop = p + q; - } else { + if m.pattern.stop - q + 1 != i { // discontinue match matches.push(*m); // start new match m.pattern.start = i; - m.pattern.stop = i + q; m.text.start = p; - m.text.stop = p + q; } + m.pattern.stop = i + q; + m.text.stop = p + q; } } } diff --git a/src/data_structures/suffix_array.rs b/src/data_structures/suffix_array.rs index 886529d24f..485b04506b 100644 --- a/src/data_structures/suffix_array.rs +++ b/src/data_structures/suffix_array.rs @@ -266,7 +266,7 @@ pub fn suffix_array(text: &[u8]) -> RawSuffixArray { let n = text.len(); let alphabet = Alphabet::new(text); let sentinel_count = sentinel_count(text); - let mut sais = SAIS::new(n); + let mut sais = Sais::new(n); match alphabet.len() + sentinel_count { a if a <= std::u8::MAX as usize => { @@ -440,7 +440,7 @@ fn transform_text( } /// SAIS implementation (see function `suffix_array` for description). -struct SAIS { +struct Sais { pos: Vec, lms_pos: Vec, reduced_text_pos: Vec, @@ -449,10 +449,10 @@ struct SAIS { bucket_end: Vec, } -impl SAIS { +impl Sais { /// Create a new instance. fn new(n: usize) -> Self { - SAIS { + Sais { pos: Vec::with_capacity(n), lms_pos: Vec::with_capacity(n), reduced_text_pos: vec![0; n], @@ -724,7 +724,7 @@ impl PosTypes { #[cfg(test)] mod tests { use super::*; - use super::{transform_text, PosTypes, SAIS}; + use super::{transform_text, PosTypes, Sais}; use crate::alphabets::{dna, Alphabet}; use crate::data_structures::bwt::{bwt, less}; use bv::{BitVec, BitsPush}; @@ -756,7 +756,7 @@ mod tests { let text: Vec = transform_text(orig_text, &alphabet, 1); let n = text.len(); - let mut sais = SAIS::new(n); + let mut sais = Sais::new(n); sais.init_bucket_start(&text); assert_eq!(sais.bucket_start, vec![0, 1, 7, 13, 15]); sais.init_bucket_end(&text); @@ -770,7 +770,7 @@ mod tests { let text: Vec = transform_text(orig_text, &alphabet, 1); let n = text.len(); - let mut sais = SAIS::new(n); + let mut sais = Sais::new(n); let pos_types = PosTypes::new(&text); sais.lms_pos = vec![21, 5, 14, 8, 11, 17, 1]; sais.calc_pos(&text, &pos_types); @@ -787,7 +787,7 @@ mod tests { let text: Vec = transform_text(orig_text, &alphabet, 1); let n = text.len(); - let mut sais = SAIS::new(n); + let mut sais = Sais::new(n); let pos_types = PosTypes::new(&text); sais.calc_lms_pos(&text, &pos_types); } diff --git a/src/data_structures/wavelet_matrix.rs b/src/data_structures/wavelet_matrix.rs index e29bb09407..765deb3253 100644 --- a/src/data_structures/wavelet_matrix.rs +++ b/src/data_structures/wavelet_matrix.rs @@ -42,7 +42,7 @@ pub struct WaveletMatrix { } fn build_partlevel( - vals: &Vec, + vals: &[u8], shift: u8, next_zeros: &mut Vec, next_ones: &mut Vec, @@ -69,7 +69,7 @@ impl WaveletMatrix { let width = text.len(); let height: usize = 3; // hardcoded for alphabet size <= 8 (ACGTN$) - let mut curr_zeros: Vec = text.to_vec().clone(); + let mut curr_zeros: Vec = text.to_vec(); let mut curr_ones: Vec = Vec::new(); let mut zeros: Vec = Vec::new(); @@ -120,21 +120,20 @@ impl WaveletMatrix { fn prank(&self, level: usize, p: u64, val: u8) -> u64 { if p == 0 { 0 + } else if val == 0 { + self.levels[level].rank_0(p - 1).unwrap() } else { - if val == 0 { - self.levels[level].rank_0(p - 1).unwrap() - } else { - self.levels[level].rank_1(p - 1).unwrap() - } + self.levels[level].rank_1(p - 1).unwrap() } } /// Compute the number of occurrences of symbol val in the original text up to position p (inclusive). /// Complexity O(1). pub fn rank(&self, val: u8, p: u64) -> u64 { - if self.check_overflow(p) { - panic!("Invalid p (it must be in range 0..wm_size-1"); - } + assert!( + !self.check_overflow(p), + "Invalid p (it must be in range 0..wm_size-1" + ); let height = self.height as usize; let mut spos = 0; let mut epos = p + 1; diff --git a/src/io/fasta.rs b/src/io/fasta.rs index 399cc7bc60..d440425022 100644 --- a/src/io/fasta.rs +++ b/src/io/fasta.rs @@ -914,10 +914,7 @@ impl Record { /// assert_eq!(">read1 sampleid=foobar\nACGT\n", record.to_string()) /// ``` pub fn with_attrs(id: &str, desc: Option<&str>, seq: TextSlice<'_>) -> Self { - let desc = match desc { - Some(desc) => Some(desc.to_owned()), - _ => None, - }; + let desc = desc.map(|desc| desc.to_owned()); Record { id: id.to_owned(), desc, @@ -950,7 +947,7 @@ impl Record { /// Return descriptions if present. pub fn desc(&self) -> Option<&str> { match self.desc.as_ref() { - Some(desc) => Some(&desc), + Some(desc) => Some(desc), None => None, } } diff --git a/src/io/fastq.rs b/src/io/fastq.rs index 0b2e24aa24..0211fa4cee 100644 --- a/src/io/fastq.rs +++ b/src/io/fastq.rs @@ -271,7 +271,7 @@ where let mut lines_read = 0; while !self.line_buffer.is_empty() && !self.line_buffer.starts_with('+') { - record.seq.push_str(&self.line_buffer.trim_end()); + record.seq.push_str(self.line_buffer.trim_end()); self.line_buffer.clear(); self.reader.read_line(&mut self.line_buffer)?; lines_read += 1; @@ -328,10 +328,7 @@ impl Record { /// assert_eq!(record.qual(), b"QQQQQQQ"); /// ``` pub fn with_attrs(id: &str, desc: Option<&str>, seq: TextSlice<'_>, qual: &[u8]) -> Self { - let desc = match desc { - Some(desc) => Some(desc.to_owned()), - _ => None, - }; + let desc = desc.map(|desc| desc.to_owned()); Record { id: id.to_owned(), desc, @@ -403,7 +400,7 @@ impl Record { /// Return descriptions if present. pub fn desc(&self) -> Option<&str> { match self.desc.as_ref() { - Some(desc) => Some(&desc), + Some(desc) => Some(desc), None => None, } } diff --git a/src/pattern_matching/bom.rs b/src/pattern_matching/bom.rs index 3c8dcd7dfb..e9684f921a 100644 --- a/src/pattern_matching/bom.rs +++ b/src/pattern_matching/bom.rs @@ -88,10 +88,7 @@ impl BOM { if q >= self.table.len() { None } else { - match self.table[q].get(a as usize) { - Some(&q) => Some(q), - None => None, - } + self.table[q].get(a as usize).copied() } } diff --git a/src/pattern_matching/kmp.rs b/src/pattern_matching/kmp.rs index ad301ed333..03029c4e09 100644 --- a/src/pattern_matching/kmp.rs +++ b/src/pattern_matching/kmp.rs @@ -27,12 +27,12 @@ use std::iter::{repeat, Enumerate}; use crate::utils::TextSlice; -type LPS = Vec; +type Lps = Vec; /// KMP algorithm. pub struct KMP<'a> { m: usize, - lps: LPS, + lps: Lps, pattern: TextSlice<'a>, } @@ -71,9 +71,9 @@ impl<'a> KMP<'a> { } } -fn lps(pattern: &[u8]) -> LPS { +fn lps(pattern: &[u8]) -> Lps { let (m, mut q) = (pattern.len(), 0); - let mut lps: LPS = repeat(0).take(m).collect(); + let mut lps: Lps = repeat(0).take(m).collect(); for i in 1..m { while q > 0 && pattern[q] != pattern[i] { q = lps[q - 1]; diff --git a/src/pattern_matching/pssm/mod.rs b/src/pattern_matching/pssm/mod.rs index 520383be02..5569c30584 100644 --- a/src/pattern_matching/pssm/mod.rs +++ b/src/pattern_matching/pssm/mod.rs @@ -93,7 +93,7 @@ pub trait Motif { fn seqs_to_weights(seqs: &[Vec], _pseudos: Option<&[f32]>) -> Result> { let p1 = vec![DEF_PSEUDO; Self::MONO_CT]; let pseudos = match _pseudos { - Some(ref p2) => p2, + Some(p2) => p2, None => p1.as_slice(), }; diff --git a/src/stats/hmm/mod.rs b/src/stats/hmm/mod.rs index 87cffd4550..cb8870d9cc 100644 --- a/src/stats/hmm/mod.rs +++ b/src/stats/hmm/mod.rs @@ -538,7 +538,7 @@ pub fn baum_welch>( // is the symbol v_{k} for (t, o) in observations.iter().enumerate() { // For example, in einsner example, it calculates the probabilities P(->state, observation), for example p(->C,1) or p(->C,2) or p(->C,3) - let p = probs_observations.entry(o).or_insert(LogProb::ln_zero()); + let p = probs_observations.entry(o).or_insert_with(LogProb::ln_zero); *p = (*p).ln_add_exp(alpha_betas[[t, *h]] - probx); } distinct_obs = probs_observations.len(); @@ -614,7 +614,7 @@ pub fn baum_welch>( } let mut ind_probs = vec![]; - for (_k, v) in &vec_hashs_prob_obs[*i] { + for v in vec_hashs_prob_obs[*i].values() { ind_probs.push(*v - gamma_i); } observations_hat @@ -680,7 +680,7 @@ pub trait Trainable { observation_hat: Array2, initial_hat: Array1, end_hat: Array1, - ) -> (); + ); } /// Implementation of Hidden Markov Model with emission values from discrete distributions. @@ -990,7 +990,7 @@ pub mod discrete_emission_opt_end { observation_hat: Array2, initial_hat: Array1, end_hat: Array1, - ) -> () { + ) { let mut end_prob = self.end.borrow_mut(); *end_prob = end_hat; @@ -1057,7 +1057,7 @@ pub mod discrete_emission_opt_end { let (_, prob_fwd_new_ii) = super::forward(hmm, obs); - llh = prob_fwd_new_ii.clone(); + llh = prob_fwd_new_ii; // Get the number of observations obs_n = obs.len() as f64; @@ -1074,7 +1074,7 @@ pub mod discrete_emission_opt_end { ); if nllh_o >= nllh { - prob_fwd_new = llh.clone(); + prob_fwd_new = llh; // Normalize the previous log likelihood computed by number of observations nllh_o = LogProb::from(Prob((*prob_fwd_new / obs_n).exp())); // Skip to next iteration @@ -1086,18 +1086,18 @@ pub mod discrete_emission_opt_end { break; } else { // Otherwise, set the old log like as the new log like - prob_fwd_new = llh.clone(); + prob_fwd_new = llh; // Normalize the previous log likelihood computed by number of observations nllh_o = LogProb::from(Prob((*prob_fwd_new / obs_n).exp())); } } - return ( + ( pi_hat_ref, transitions_hat_ref, observations_hat_ref, end_hat_ref, - ); + ) } } } diff --git a/tests/data_structures/rank_select.rs b/tests/data_structures/rank_select.rs index 014594cea1..fd5326d546 100644 --- a/tests/data_structures/rank_select.rs +++ b/tests/data_structures/rank_select.rs @@ -42,7 +42,7 @@ impl Select { } } } - return None; + None } }