Skip to content

Commit 1ea4a09

Browse files
committed
updating summary pass fail logic
1 parent 61ca7aa commit 1ea4a09

File tree

3 files changed

+39
-20
lines changed

3 files changed

+39
-20
lines changed

src/processes/prepare_mira_reports.rs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,11 @@ use crate::utils::{
1010
data_processing::{
1111
DaisVarsData, ProcessedCoverage, Subtype, collect_analysis_metadata, collect_negatives,
1212
collect_sample_id, compute_cvv_dais_variants, compute_dais_variants,
13-
create_final_irma_summary_df, create_prelim_irma_summary_df, create_vtype_data,
14-
extract_field, extract_subtype_flu, extract_subtype_sc2, melt_reads_data,
15-
process_position_coverage_data, process_wgs_coverage_data, return_seg_data,
16-
},
17-
writing_outputs::{
18-
negative_qc_statement, write_reads_to_parquet, write_ref_data_json,
19-
write_structs_to_csv_file, write_structs_to_split_json_file,
13+
create_prelim_irma_summary_df, create_vtype_data, extract_field, extract_subtype_flu,
14+
extract_subtype_sc2, melt_reads_data, process_position_coverage_data,
15+
process_wgs_coverage_data, return_seg_data,
2016
},
17+
writing_outputs::negative_qc_statement,
2118
};
2219
use clap::Parser;
2320
use csv::ReaderBuilder;
@@ -267,15 +264,16 @@ pub fn prepare_mira_reports_process(args: ReportsArgs) -> Result<(), Box<dyn Err
267264
}
268265
}
269266

270-
let irma_summary =
271-
create_final_irma_summary_df(&irma_summary, &dais_vars_data, &seq_data, qc_values);
267+
for sample in &mut irma_summary {
268+
sample.create_final_irma_summary_df(&dais_vars_data, &seq_data, &qc_values);
269+
}
272270
//println!("{qc_values:?}");
273271
//todo:remove before end
274272
//println!("{dais_vars_data:?}");
275273
//println!("{melted_reads_df:?}");
276274
//println!("{calculated_cov_df:?}");
277275
//println!("{calculated_position_cov_df:?}");
278-
//println!("{irma_summary:?}");
276+
println!("{irma_summary:?}");
279277
//println!("{subtype_data:?}");
280278

281279
/////////////////////////////////////////////////////////////////////////////

src/utils/data_ingest.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ pub struct DaisSeqData {
232232
#[serde(rename = "ID")]
233233
pub sample_id: Option<String>,
234234
#[serde(rename = "C_type")]
235-
pub ctype: Option<String>,
235+
pub ctype: String,
236236
#[serde(rename = "Ref_ID")]
237237
pub reference: String,
238238
#[serde(rename = "Protein")]

src/utils/data_processing.rs

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ pub struct ProcessedRecord {
2727
#[derive(Serialize, Deserialize, Debug)]
2828
pub struct DaisVarsData {
2929
pub sample_id: Option<String>,
30+
pub ctype: String,
3031
pub reference_id: String,
3132
pub protein: String,
3233
pub aa_variant_count: i32,
@@ -359,6 +360,7 @@ pub fn compute_dais_variants(
359360

360361
let dais_vars_entry = DaisVarsData {
361362
sample_id: sample_entry.sample_id.clone(),
363+
ctype: sample_entry.ctype.clone(),
362364
reference_id: sample_entry.reference.clone(),
363365
protein: sample_entry.protein.clone(),
364366
aa_variant_count: var_aa_count,
@@ -430,6 +432,7 @@ pub fn compute_cvv_dais_variants(
430432
.into_values()
431433
.map(|entry| DaisVarsData {
432434
sample_id: entry.sample_id,
435+
ctype: entry.ctype,
433436
reference_id: entry.reference.clone(),
434437
protein: entry.protein.clone(),
435438
aa_variant_count: entry.insertions_shift_frame.parse::<i32>().unwrap_or(0),
@@ -987,14 +990,32 @@ pub fn create_prelim_irma_summary_df(
987990
}
988991

989992
/// Combine all df to create IRMA summary
990-
pub fn create_final_irma_summary_df(
991-
prelim_sumamary: &[IRMASummary],
992-
dais_vars: &[DaisVarsData],
993-
seq_df: &[SeqData],
994-
qc_values: QCSettings,
995-
) -> Result<Vec<IRMASummary>, Box<dyn Error>> {
996-
let mut irma_summary: Vec<IRMASummary> = Vec::new();
997-
println!("QC {qc_values:#?}");
998993
999-
Ok(irma_summary)
994+
impl IRMASummary {
995+
pub fn create_final_irma_summary_df(
996+
&mut self,
997+
dais_vars: &[DaisVarsData],
998+
seq_df: &[SeqData],
999+
qc_values: &QCSettings,
1000+
) -> Result<Vec<IRMASummary>, Box<dyn Error>> {
1001+
let mut irma_summary: Vec<IRMASummary> = Vec::new();
1002+
println!("QC {qc_values:#?}");
1003+
println!("QC {dais_vars:#?}");
1004+
1005+
let mut premature_stop_codon_df = String::new();
1006+
if !qc_values.allow_stop_codons {
1007+
for entry in dais_vars {
1008+
if self.sample_id == entry.sample_id
1009+
&& self.reference == Some(entry.ctype.clone())
1010+
&& entry.aa_variants.contains('*')
1011+
{
1012+
self.pass_fail_reason =
1013+
format!("Premature stop codon '{}'", entry.protein).into();
1014+
}
1015+
}
1016+
}
1017+
//println!("{premature_stop_codon_df}");
1018+
1019+
Ok(irma_summary)
1020+
}
10001021
}

0 commit comments

Comments
 (0)