Skip to content

Commit

Permalink
feat: unify database names in strucvar filtration (#307)
Browse files Browse the repository at this point in the history
  • Loading branch information
holtgrewe committed Feb 27, 2024
1 parent 46ff562 commit 5d444da
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 46 deletions.
100 changes: 54 additions & 46 deletions src/strucvars/query/bgdbs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -210,24 +210,24 @@ pub enum BgDbType {
/// Bundle of all background databases (including in-house).
#[derive(Default, Debug)]
pub struct BgDbBundle {
pub gnomad: BgDb,
pub dbvar: BgDb,
pub dgv: BgDb,
pub dgv_gs: BgDb,
pub exac: Option<BgDb>,
pub dbvar: Option<BgDb>,
pub dgv: Option<BgDb>,
pub dgv_gs: Option<BgDb>,
pub g1k: Option<BgDb>,
pub gnomad_genomes: Option<BgDb>,
pub gnomad_exomes: Option<BgDb>,
pub inhouse: Option<BgDb>,
}

/// Store background database counts for a structural variant.
#[derive(Serialize, Clone, Debug, PartialEq, Default)]
pub struct BgDbOverlaps {
pub gnomad: u32,
pub dbvar: u32,
pub dgv: u32,
pub dgv_gs: u32,
pub exac: u32,
pub g1k: u32,
pub gnomad_genomes: u32,
pub gnomad_exomes: u32,
pub inhouse: u32,
}

Expand Down Expand Up @@ -269,14 +269,6 @@ impl BgDbBundle {
slack_bnd: i32,
) -> BgDbOverlaps {
BgDbOverlaps {
gnomad: self.gnomad.count_overlaps(
chrom_map,
query.svdb_gnomad_enabled,
query.svdb_gnomad_min_overlap,
slack_ins,
slack_bnd,
sv,
),
dbvar: self.dbvar.count_overlaps(

Check failure on line 272 in src/strucvars/query/bgdbs.rs

View workflow job for this annotation

GitHub Actions / clippy

no method named `count_overlaps` found for enum `std::option::Option` in the current scope

error[E0599]: no method named `count_overlaps` found for enum `std::option::Option` in the current scope --> src/strucvars/query/bgdbs.rs:272:31 | 272 | dbvar: self.dbvar.count_overlaps( | -----------^^^^^^^^^^^^^^ method not found in `Option<BgDb>` | note: the method `count_overlaps` exists on the type `strucvars::query::bgdbs::BgDb` --> src/strucvars/query/bgdbs.rs:77:5 | 77 | / pub fn count_overlaps( 78 | | &self, 79 | | chrom_map: &IndexMap<String, usize>, 80 | | enabled: bool, ... | 84 | | sv: &StructuralVariant, 85 | | ) -> u32 { | |____________^ help: consider using `Option::expect` to unwrap the `strucvars::query::bgdbs::BgDb` value, panicking if the value is an `Option::None` | 272 | dbvar: self.dbvar.expect("REASON").count_overlaps( | +++++++++++++++++
chrom_map,
query.svdb_dbvar_enabled,
Expand All @@ -301,26 +293,34 @@ impl BgDbBundle {
slack_bnd,
sv,
),
exac: self.exac.as_ref().map_or(0, |exac| {
exac.count_overlaps(
g1k: self.g1k.as_ref().map_or(0, |g1k| {
g1k.count_overlaps(
chrom_map,
query.svdb_exac_enabled,
query.svdb_exac_min_overlap,
query.svdb_g1k_enabled,
query.svdb_g1k_min_overlap,
slack_ins,
slack_bnd,
sv,
)
}),
g1k: self.g1k.as_ref().map_or(0, |g1k| {
g1k.count_overlaps(
gnomad_exomes: self.exac.as_ref().map_or(0, |exac| {

Check failure on line 306 in src/strucvars/query/bgdbs.rs

View workflow job for this annotation

GitHub Actions / clippy

no field `exac` on type `&strucvars::query::bgdbs::BgDbBundle`

error[E0609]: no field `exac` on type `&strucvars::query::bgdbs::BgDbBundle` --> src/strucvars/query/bgdbs.rs:306:33 | 306 | gnomad_exomes: self.exac.as_ref().map_or(0, |exac| { | ^^^^ unknown field | = note: available fields are: `dbvar`, `dgv`, `dgv_gs`, `g1k`, `gnomad_genomes` ... and 2 others
exac.count_overlaps(
chrom_map,
query.svdb_g1k_enabled,
query.svdb_g1k_min_overlap,
query.svdb_exac_enabled,
query.svdb_exac_min_overlap,
slack_ins,
slack_bnd,
sv,
)
}),
gnomad_genomes: self.gnomad_genomes.count_overlaps(

Check failure on line 316 in src/strucvars/query/bgdbs.rs

View workflow job for this annotation

GitHub Actions / clippy

no method named `count_overlaps` found for enum `std::option::Option` in the current scope

error[E0599]: no method named `count_overlaps` found for enum `std::option::Option` in the current scope --> src/strucvars/query/bgdbs.rs:316:49 | 316 | gnomad_genomes: self.gnomad_genomes.count_overlaps( | --------------------^^^^^^^^^^^^^^ method not found in `Option<BgDb>` | note: the method `count_overlaps` exists on the type `strucvars::query::bgdbs::BgDb` --> src/strucvars/query/bgdbs.rs:77:5 | 77 | / pub fn count_overlaps( 78 | | &self, 79 | | chrom_map: &IndexMap<String, usize>, 80 | | enabled: bool, ... | 84 | | sv: &StructuralVariant, 85 | | ) -> u32 { | |____________^ help: consider using `Option::expect` to unwrap the `strucvars::query::bgdbs::BgDb` value, panicking if the value is an `Option::None` | 316 | gnomad_genomes: self.gnomad_genomes.expect("REASON").count_overlaps( | +++++++++++++++++
chrom_map,
query.svdb_gnomad_enabled,
query.svdb_gnomad_min_overlap,
slack_ins,
slack_bnd,
sv,
),
inhouse: self.inhouse.as_ref().map_or(0, |inhouse| {
inhouse.count_overlaps(
chrom_map,
Expand All @@ -343,39 +343,47 @@ pub fn load_bg_dbs(
) -> Result<BgDbBundle, anyhow::Error> {
info!("Loading background dbs");

let path_exac = Path::new(path_db).join(format!("{}/strucvars/bgdbs/exac.bin", genome_release));
let path_dbvar =
Path::new(path_db).join(format!("{}/strucvars/bgdbs/dbvar.bin", genome_release));
let path_gv = Path::new(path_db).join(format!("{}/strucvars/bgdbs/dgv.bin", genome_release));
let path_gv_gs =
Path::new(path_db).join(format!("{}/strucvars/bgdbs/dgv_gs.bin", genome_release));
let path_g1k = Path::new(path_db).join(format!("{}/strucvars/bgdbs/g1k.bin", genome_release));
let path_gnomad_exomes = Path::new(path_db).join(format!(
"{}/strucvars/bgdbs/gnomad_exomes.bin",
genome_release
));
let path_gnomad_genomes = Path::new(path_db).join(format!(
"{}/strucvars/bgdbs/gnomad_genomes.bin",
genome_release
));
let path_inhouse = Path::new(path_db).join(format!("{}/strucvars/inhouse.bin", genome_release));

let result = BgDbBundle {
gnomad: load_bg_db_records(
Path::new(path_db)
.join(format!("{}/strucvars/bgdbs/gnomad.bin", genome_release))
.as_path(),
)?,
dbvar: load_bg_db_records(
Path::new(path_db)
.join(format!("{}/strucvars/bgdbs/dbvar.bin", genome_release))
.as_path(),
)?,
dgv: load_bg_db_records(
Path::new(path_db)
.join(format!("{}/strucvars/bgdbs/dgv.bin", genome_release))
.as_path(),
)?,
dgv_gs: load_bg_db_records(
Path::new(path_db)
.join(format!("{}/strucvars/bgdbs/dgv-gs.bin", genome_release))
.as_path(),
)?,
exac: path_exac
dbvar: ppath_dbvar

Check failure on line 363 in src/strucvars/query/bgdbs.rs

View workflow job for this annotation

GitHub Actions / clippy

cannot find value `ppath_dbvar` in this scope

error[E0425]: cannot find value `ppath_dbvar` in this scope --> src/strucvars/query/bgdbs.rs:363:16 | 363 | dbvar: ppath_dbvar | ^^^^^^^^^^^ help: a local variable with a similar name exists: `path_dbvar`
.exists()
.then(|| load_bg_db_records(path_dbvar.as_path()))
.transpose()?,
dgv: path_dgv

Check failure on line 367 in src/strucvars/query/bgdbs.rs

View workflow job for this annotation

GitHub Actions / clippy

cannot find value `path_dgv` in this scope

error[E0425]: cannot find value `path_dgv` in this scope --> src/strucvars/query/bgdbs.rs:367:14 | 367 | dgv: path_dgv | ^^^^^^^^ help: a local variable with a similar name exists: `path_gv`
.exists()
.then(|| load_bg_db_records(path_dgv.as_path()))

Check failure on line 369 in src/strucvars/query/bgdbs.rs

View workflow job for this annotation

GitHub Actions / clippy

cannot find value `path_dgv` in this scope

error[E0425]: cannot find value `path_dgv` in this scope --> src/strucvars/query/bgdbs.rs:369:41 | 369 | .then(|| load_bg_db_records(path_dgv.as_path())) | ^^^^^^^^ help: a local variable with a similar name exists: `path_gv`
.transpose()?,
dgv_gs: path_dgv_gs

Check failure on line 371 in src/strucvars/query/bgdbs.rs

View workflow job for this annotation

GitHub Actions / clippy

cannot find value `path_dgv_gs` in this scope

error[E0425]: cannot find value `path_dgv_gs` in this scope --> src/strucvars/query/bgdbs.rs:371:17 | 371 | dgv_gs: path_dgv_gs | ^^^^^^^^^^^ help: a local variable with a similar name exists: `path_gv_gs`
.exists()
.then(|| load_bg_db_records(path_exac.as_path()))
.then(|| load_bg_db_records(path_dgv_gs.as_path()))

Check failure on line 373 in src/strucvars/query/bgdbs.rs

View workflow job for this annotation

GitHub Actions / clippy

cannot find value `path_dgv_gs` in this scope

error[E0425]: cannot find value `path_dgv_gs` in this scope --> src/strucvars/query/bgdbs.rs:373:41 | 373 | .then(|| load_bg_db_records(path_dgv_gs.as_path())) | ^^^^^^^^^^^ help: a local variable with a similar name exists: `path_gv_gs`
.transpose()?,
g1k: path_g1k
.exists()
.then(|| load_bg_db_records(path_g1k.as_path()))
.transpose()?,
gnomad_exomes: path_gnomad_exomes
.exists()
.then(|| load_bg_db_records(path_gnomad_exomes.as_path()))
.transpose()?,
gnomad_genomes: path_gnomad_genomes
.exists()
.then(|| load_bg_db_records(path_gnomad_genomes.as_path()))
.transpose()?,
inhouse: path_inhouse
.exists()
.then(|| load_bg_db_records(path_inhouse.as_path()))
Expand Down

0 comments on commit 5d444da

Please sign in to comment.