Skip to content

Commit

Permalink
Merge branch 'main' into strobealign-aemb
Browse files Browse the repository at this point in the history
  • Loading branch information
wwood authored Oct 22, 2024
2 parents 0000964 + f3855fd commit a5ea220
Show file tree
Hide file tree
Showing 10 changed files with 329 additions and 14 deletions.
1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ exclude = [ # Max upload is 10MB, as of writing test data was 15MB
"tests/*",
]
default-run = "coverm"
edition = "2015"

[dependencies]
bio = "2.0.*"
Expand Down
2 changes: 1 addition & 1 deletion coverm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,5 @@ dependencies:
- bwa-mem2
- dashing >= 0.4.0, < 1.0 # dashing 1.0 build gives illegal instruction errors.
- fastani >= 1.3
- strobealign >= 0.11.0 # newest version at time of implementation
- strobealign >= 0.14.0 # tests use a pregenerated v3 database
- extern
6 changes: 6 additions & 0 deletions src/bam_generator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -497,6 +497,7 @@ pub fn generate_filtered_bam_readers_from_bam_files(
min_aligned_length_single: u32,
min_percent_identity_single: f32,
min_aligned_percent_single: f32,
min_mapq: u8,
min_aligned_length_pair: u32,
min_percent_identity_pair: f32,
min_aligned_percent_pair: f32,
Expand All @@ -522,6 +523,7 @@ pub fn generate_filtered_bam_readers_from_bam_files(
min_aligned_length_single,
min_percent_identity_single,
min_aligned_percent_single,
min_mapq,
min_aligned_length_pair,
min_percent_identity_pair,
min_aligned_percent_pair,
Expand Down Expand Up @@ -555,6 +557,7 @@ pub struct StreamingFilteredNamedBamReaderGenerator {
min_aligned_length_single: u32,
min_percent_identity_single: f32,
min_aligned_percent_single: f32,
min_mapq: u8,
min_aligned_length_pair: u32,
min_percent_identity_pair: f32,
min_aligned_percent_pair: f32,
Expand Down Expand Up @@ -595,6 +598,7 @@ impl NamedBamReaderGenerator<StreamingFilteredNamedBamReader>
self.min_aligned_length_single,
self.min_percent_identity_single,
self.min_aligned_percent_single,
self.min_mapq,
self.min_aligned_length_pair,
self.min_percent_identity_pair,
self.min_aligned_percent_pair,
Expand Down Expand Up @@ -662,6 +666,7 @@ pub fn generate_filtered_named_bam_readers_from_reads(
min_aligned_length_single: u32,
min_percent_identity_single: f32,
min_aligned_percent_single: f32,
min_mapq: u8,
min_aligned_length_pair: u32,
min_percent_identity_pair: f32,
min_aligned_percent_pair: f32,
Expand Down Expand Up @@ -693,6 +698,7 @@ pub fn generate_filtered_named_bam_readers_from_reads(
min_aligned_length_single,
min_percent_identity_single,
min_aligned_percent_single,
min_mapq,
min_aligned_length_pair,
min_percent_identity_pair,
min_aligned_percent_pair,
Expand Down
7 changes: 7 additions & 0 deletions src/bin/coverm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,7 @@ fn main() {
filter_params.min_aligned_length_single,
filter_params.min_percent_identity_single,
filter_params.min_aligned_percent_single,
filter_params.min_mapq,
filter_params.min_aligned_length_pair,
filter_params.min_percent_identity_pair,
filter_params.min_aligned_percent_pair,
Expand Down Expand Up @@ -464,6 +465,7 @@ fn main() {
filter_params.min_aligned_length_single,
filter_params.min_percent_identity_single,
filter_params.min_aligned_percent_single,
filter_params.min_mapq,
filter_params.min_aligned_length_pair,
filter_params.min_percent_identity_pair,
filter_params.min_aligned_percent_pair,
Expand Down Expand Up @@ -536,6 +538,7 @@ fn main() {
filter_params.min_aligned_length_single,
filter_params.min_percent_identity_single,
filter_params.min_aligned_percent_single,
filter_params.min_mapq,
filter_params.min_aligned_length_pair,
filter_params.min_percent_identity_pair,
filter_params.min_aligned_percent_pair,
Expand Down Expand Up @@ -1234,6 +1237,7 @@ struct FilterParameters {
min_aligned_length_single: u32,
min_percent_identity_single: f32,
min_aligned_percent_single: f32,
min_mapq: u8, // 255 indicates no filtering
min_aligned_length_pair: u32,
min_percent_identity_pair: f32,
min_aligned_percent_pair: f32,
Expand All @@ -1249,6 +1253,7 @@ impl FilterParameters {
min_aligned_length_single: *m.get_one::<u32>("min-read-aligned-length").unwrap_or(&0),
min_percent_identity_single: parse_percentage(m, "min-read-percent-identity"),
min_aligned_percent_single: parse_percentage(m, "min-read-aligned-percent"),
min_mapq: *m.get_one::<u8>("min-mapq").unwrap_or(&255),
min_aligned_length_pair: *m
.get_one::<u32>("min-read-aligned-length-pair")
.unwrap_or(&0),
Expand Down Expand Up @@ -1278,6 +1283,7 @@ impl FilterParameters {
self.min_percent_identity_single > 0.0
|| self.min_percent_identity_pair > 0.0
|| self.min_aligned_percent_single > 0.0
|| self.min_mapq < 255
|| self.min_aligned_percent_pair > 0.0
|| self.min_aligned_length_single > 0
|| self.min_aligned_length_pair > 0
Expand Down Expand Up @@ -1603,6 +1609,7 @@ fn get_streamed_filtered_bam_readers(
filter_params.min_aligned_length_single,
filter_params.min_percent_identity_single,
filter_params.min_aligned_percent_single,
filter_params.min_mapq,
filter_params.min_aligned_length_pair,
filter_params.min_percent_identity_pair,
filter_params.min_aligned_percent_pair,
Expand Down
25 changes: 25 additions & 0 deletions src/cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,16 @@ fn add_thresholding_options(manual: Manual) -> Manual {
default_roff("0")
)),
)
.option(Opt::new("INT").long("--min-mapq").help(&format!(
"Exclude reads with a mapping quality \
below this value. An INT between 0 and 254. \
When thresholding pairs, both reads \
are excluded if either has a MAPQ below this value. \
If 0, \
reads with MAPQ of 255 (mapping quality unavailable) \
are excluded. {}",
default_roff("not set")
)))
.flag(
Flag::new()
.long("--proper-pairs-only")
Expand Down Expand Up @@ -1328,6 +1338,11 @@ Ben J. Woodcroft <benjwoodcroft near gmail.com>
.long("min-read-aligned-percent")
.value_parser(clap::value_parser!(f32)),
)
.arg(
Arg::new("min-mapq")
.long("min-mapq")
.value_parser(clap::value_parser!(u8)),
)
.arg(
Arg::new("min-read-aligned-length-pair")
.long("min-read-aligned-length-pair")
Expand Down Expand Up @@ -1713,6 +1728,11 @@ Ben J. Woodcroft <benjwoodcroft near gmail.com>
.long("min-read-aligned-percent")
.value_parser(clap::value_parser!(f32)),
)
.arg(
Arg::new("min-mapq")
.long("min-mapq")
.value_parser(clap::value_parser!(u8)),
)
.arg(
Arg::new("min-read-aligned-length-pair")
.long("min-read-aligned-length-pair")
Expand Down Expand Up @@ -1852,6 +1872,11 @@ Ben J. Woodcroft <benjwoodcroft near gmail.com>
.long("min-read-percent-identity")
.value_parser(clap::value_parser!(f32)),
)
.arg(
Arg::new("min-mapq")
.long("min-mapq")
.value_parser(clap::value_parser!(u8)),
)
.arg(
Arg::new("min-read-aligned-percent")
.long("min-read-aligned-percent")
Expand Down
Loading

0 comments on commit a5ea220

Please sign in to comment.