@@ -112,7 +112,9 @@ fn read_yaml<R: std::io::Read>(reader: R) -> Result<QCConfig, Box<dyn std::error
112112}
113113
114114pub fn prepare_mira_reports_process ( args : ReportsArgs ) -> Result < ( ) , Box < dyn Error > > {
115- /////////////// Read in all data ///////////////
115+ ///////////////////////////////////////////////////////////////////////////
116+ /////////////// Read in and process data from IRMA and Dais ///////////////
117+ ///////////////////////////////////////////////////////////////////////////
116118 // Read in samplesheet
117119 let samplesheet_path = create_reader ( args. samplesheet ) ?;
118120 let samplesheet = if & args. platform == "illumina" {
@@ -134,13 +136,12 @@ pub fn prepare_mira_reports_process(args: ReportsArgs) -> Result<(), Box<dyn Err
134136 let qc_yaml_path = create_reader ( args. qc_yaml ) ?;
135137 let qc_config: QCConfig = read_yaml ( qc_yaml_path) ?;
136138
137- //Read in IRMA data
139+ // Read in IRMA data
138140 let coverage_data = coverage_data_collection ( & args. irma_path , & args. platform , & args. runid ) ?;
139141 let read_data = reads_data_collection ( & args. irma_path , & args. platform , & args. runid ) ?;
140142 let vtype_data = create_vtype_data ( & read_data) ;
141143 let allele_data = allele_data_collection ( & args. irma_path ) ?;
142144 let indel_data = indels_data_collection ( & args. irma_path ) ?;
143- //TODO: feed in organism from argument
144145 //let seq_data = amended_consensus_data_collection(&args.irma_path, virus);
145146 let ref_lengths = match get_reference_lens ( & args. irma_path ) {
146147 Ok ( data) => data,
@@ -158,10 +159,13 @@ pub fn prepare_mira_reports_process(args: ReportsArgs) -> Result<(), Box<dyn Err
158159 let dais_ins_data = dais_insertion_data_collection ( & args. irma_path ) ?;
159160 let dais_del_data = dias_deletion_data_collection ( & args. irma_path ) ?;
160161 let dais_seq_data = dias_sequence_data_collection ( & args. irma_path ) ?;
161- //TODO: sc2 handling
162- let dais_ref_data = dais_ref_seq_data_collection ( & args. workdir_path , & args. virus ) ?;
163-
164- //TODO: remove these at end
162+ let mut dais_ref_data: Vec < DaisSeqData > = Vec :: new ( ) ;
163+ if args. virus . to_lowercase ( ) == "flu" || args. virus . to_lowercase ( ) == "rsv" {
164+ dais_ref_data = dais_ref_seq_data_collection ( & args. workdir_path , & args. virus ) ?;
165+ } else if args. virus . to_lowercase ( ) == "sc2-wgs" {
166+ dais_ref_data = dais_ref_seq_data_collection ( & args. workdir_path , "sc2" ) ?;
167+ }
168+ //TODO: remove print statements at end
165169 //println!("{qc_config:?}")
166170 //println!("cov data: {coverage_data:?}");
167171 //println!("Allele data: {allele_data:?}");
@@ -171,22 +175,33 @@ pub fn prepare_mira_reports_process(args: ReportsArgs) -> Result<(), Box<dyn Err
171175 //println!("dais del data: {dais_del_data:#?}");
172176 //println!("dais seq data: {dais_seq_data:#?}");
173177 //println!("dais ref data: {dais_ref_data:#?}");
174- println ! ( "ref length data: {ref_lengths:#?}" ) ;
178+ // println!("ref length data: {ref_lengths:#?}");
175179
176180 //Calculate AA variants for aavars.csv and dais_vars.json
177- //TODO: circle back for the rsv and sc2 situations
178- let dais_vars_data = compute_dais_variants ( & dais_ref_data, & dais_seq_data) ?;
181+ let mut dais_vars_data: Vec < DaisVarsData > = Vec :: new ( ) ;
182+
183+ if args. virus . to_lowercase ( ) == "flu" {
184+ dais_vars_data = compute_dais_variants ( & dais_ref_data, & dais_seq_data) ?;
185+ } else if args. virus . to_lowercase ( ) == "sc2-wgs"
186+ || args. virus . to_lowercase ( ) == "sc2"
187+ || args. virus . to_lowercase ( ) == "rsv"
188+ {
189+ println ! ( "sc2" ) ;
190+ dais_vars_data = compute_cvv_dais_variants ( & dais_ref_data, & dais_seq_data) ?;
191+ }
192+
179193 negative_qc_statement (
180194 "/home/xpa3/mira-oxide/test/qc_statement.json" ,
181195 & read_data,
182196 & neg_control_list,
183197 ) ?;
184198
199+ // Calculating the % coverage and median coverage for summary
185200 let melted_reads_df = melt_reads_data ( & read_data) ;
186201 let mut calculated_cov_df: Vec < ProcessedCoverage > = Vec :: new ( ) ;
187202 let mut calculated_position_cov_df: Vec < ProcessedCoverage > = Vec :: new ( ) ;
188- // TODO: add in SC2 handling
189- if args. virus . to_lowercase ( ) == "flu" {
203+
204+ if args. virus . to_lowercase ( ) == "flu" || args . virus . to_lowercase ( ) == "rsv" {
190205 calculated_cov_df = process_wgs_coverage_data ( & coverage_data, & ref_lengths) ;
191206 } else if args. virus . to_lowercase ( ) == "sc2-spike" {
192207 calculated_cov_df =
@@ -199,10 +214,13 @@ pub fn prepare_mira_reports_process(args: ReportsArgs) -> Result<(), Box<dyn Err
199214
200215 //println!("{dais_vars_data:?}");
201216 //println!("{melted_reads_df:?}");
202- println ! ( "{calculated_cov_df:?}" ) ;
203- println ! ( "{calculated_position_cov_df:?}" ) ;
204- /*
217+ //println!("{calculated_cov_df:?}");
218+ //println!("{calculated_position_cov_df:?}");
219+
220+ /////////////////////////////////////////////////////////////////////////////
205221 /////////////// Write the structs to JSON files and CSV files ///////////////
222+ /////////////////////////////////////////////////////////////////////////////
223+
206224 // Writing out coverage data
207225 let coverage_struct_values = vec ! [
208226 "Sample" ,
@@ -384,7 +402,7 @@ pub fn prepare_mira_reports_process(args: ReportsArgs) -> Result<(), Box<dyn Err
384402 & dais_vars_data,
385403 & aavars_columns,
386404 & aavars_columns,
387- )?; */
405+ ) ?;
388406
389407 /////////////// Write the structs to parquet files if flag invoked ///////////////
390408 // Write fields to parq if flag given
0 commit comments