4545 'submitter_sample_id' ,'sample_type' , 'submitter_matched_normal_sample_id' , 'sequencing_center' ,
4646 'platform' , 'platform_model' ,'experimental_strategy' , 'sequencing_date' , 'read_group_count' ]
4747TSV_FIELDS ['experiment' ]["conditional" ]= [
48- "library_isolation_protocol" ,"library_preparation_kit" ,
49- "library_strandedness" ,"rin" ,"dv200" ,"spike_ins_included" ,
50- "spike_ins_fasta" ,"spike_ins_concentration" ,
51- "target_capture_kit" ]
48+ "library_preparation_kit" ,
49+ "library_strandedness" ,
50+ "rin" ,"dv200" ,
51+ "target_capture_kit" ,"number_of_genes" ,"gene_padding" ,"coverage" ,
52+ "primary_target_regions" ,"capture_target_regions"
53+ ]
5254
5355TSV_FIELDS ['read_group' ]= {}
5456TSV_FIELDS ['read_group' ]["core" ]= [
7779
7880def empty_str_to_null (metadata ):
7981 for k in metadata :
80- if k in ['read_groups' , 'files' ]:
82+ if k in ['read_groups' , 'files' , 'experiment' ]:
8183 for i in range (len (metadata [k ])):
8284 empty_str_to_null (metadata [k ][i ])
83- if isinstance (metadata [k ], str ) and metadata [k ] in ["" , "_NULL_" ]:
85+ if isinstance (metadata [k ], str ) and metadata [k ] in ["" , "_NULL_" , "null" , "NULL" , "Null" , "None" , "NONE" , "none" ]:
8486 metadata [k ] = None
8587
8688
@@ -146,10 +148,20 @@ def load_all_tsvs(exp_tsv, rg_tsv, file_tsv):
146148 rg ['is_paired_end' ] = None
147149
148150 for field in ('read_length_r1' , 'read_length_r2' , 'insert_size' ):
149- if rg [field ]:
151+ if isinstance (rg [field ],str ):
152+ if re .match ("^[0-9]+$" , rg [field ]):
153+ rg [field ] = int (rg [field ])
154+ continue
155+ for empty_string in ["" , "_NULL_" ,'null' ,"NULL" ,"Null" ,"None" ,"NONE" ,"none" ]:
156+ if rg [field ]== empty_string :
157+ rg [field ] = None
158+ break
159+ elif isinstance (rg [field ],int ):
150160 rg [field ] = int (rg [field ])
151- else :
161+ elif rg [ field ] is None :
152162 rg [field ] = None
163+ else :
164+ sys .exit ("Unrecognnized value '%s' in field %s for '%s'" % (str (rg [field ]),field ,rg ['submitter_read_group_id' ]))
153165
154166 metadata_dict ['read_groups' ].append (rg )
155167
@@ -262,7 +274,7 @@ def main(metadata,url,bam_from_cram,bam_from_cram_reference,recalculate_size_and
262274 optional_experimental_fields .remove ("rin" )
263275
264276 for optional_experimental_field in optional_experimental_fields :
265- if metadata .get ( optional_experimental_field ):
277+ if optional_experimental_field in metadata .keys ( ):
266278 payload ['experiment' ][optional_experimental_field ]= metadata .get (optional_experimental_field )
267279 # Int
268280 optional_experimental_fields = ["rin" ]
@@ -274,6 +286,12 @@ def main(metadata,url,bam_from_cram,bam_from_cram_reference,recalculate_size_and
274286 if metadata .get ('experimental_strategy' )== 'RNA-Seq' and not metadata .get ("library_strandedness" ):
275287 sys .exit (f"'experimental_strategy' 'RNA-Seq' specified but 'library_strandedness' is missing. Resubmit with both values 'experimental_strategy' and 'library_strandedness'" )
276288
289+ # Targetted Sequencing :
290+ if metadata .get ('experimental_strategy' )== "Targeted-Seq" or metadata .get ('experimental_strategy' )== "WXS" :
291+ for field in ['target_capture_kit' ,'primary_target_regions' ,'capture_target_regions' ]:
292+ if field not in metadata .keys ():
293+ sys .exit (f"'experimental_strategy' '%s' specified but '%s' is missing. Resubmit with both values 'experimental_strategy' and '%s'" % (metadata .get ('experimental_strategy' ),field ,field ))
294+
277295 # get sample of the payload
278296 sample = {
279297 'submitterSampleId' : metadata .get ('submitter_sample_id' ),
@@ -449,4 +467,4 @@ def main(metadata,url,bam_from_cram,bam_from_cram_reference,recalculate_size_and
449467 extra_info [row_type ][row_id ][row_field ]= row_val
450468
451469
452- main (metadata ,url ,args .bam_from_cram ,args .bam_from_cram_reference ,args .recalculate_size_and_md5_files ,extra_info )
470+ main (metadata ,url ,args .bam_from_cram ,args .bam_from_cram_reference ,args .recalculate_size_and_md5_files ,extra_info )
0 commit comments