@@ -280,18 +280,20 @@ def generate_study_xml(self):
280280
281281 return study_set
282282
283- def add_sample (self , sample_name , taxon_id = None , description = None ,
284- ** kwargs ):
283+ def add_sample (self , sample_name , taxon_id , scientific_name ,
284+ description , ** kwargs ):
285285 """Adds sample information to the current submission
286286
287287 Parameters
288288 ----------
289289 sample_name : str
290290 Unique identifier for the sample
291- taxon_id : str, optional
292- Defaults to ``None``. If not provided, the `empty_value` will be
293- used for the taxon ID
294- description : str, optional
291+ taxon_id : int
292+ NCBI's taxon ID for the sample
293+ scientific_name : str
294+ NCBI's scientific name for the `taxon_id`
295+ description : str
296+
295297 Defaults to ``None``. If not provided, the `empty_value` will be
296298 used for the description
297299
@@ -308,15 +310,14 @@ def add_sample(self, sample_name, taxon_id=None, description=None,
308310
309311 self .samples [sample_name ] = {}
310312
311- self .samples [sample_name ]['taxon_id' ] = self .empty_value if \
312- taxon_id is None else taxon_id
313- self .samples [sample_name ]['taxon_id' ] = \
314- escape (clean_whitespace (self .samples [sample_name ]['taxon_id' ]))
313+ self .samples [sample_name ]['taxon_id' ] = escape (
314+ clean_whitespace (taxon_id ))
315315
316- self .samples [sample_name ]['description' ] = self .empty_value if \
317- description is None else description
318- self .samples [sample_name ]['description' ] = \
319- escape (clean_whitespace (self .samples [sample_name ]['description' ]))
316+ self .samples [sample_name ]['scientific_name' ] = escape (
317+ clean_whitespace (scientific_name ))
318+
319+ self .samples [sample_name ]['description' ] = escape (
320+ clean_whitespace (description ))
320321
321322 self .samples [sample_name ]['attributes' ] = self ._stringify_kwargs (
322323 kwargs )
@@ -797,15 +798,17 @@ def add_samples_from_templates(self, sample_template, prep_template,
797798
798799 for sample in iter_file_via_list_of_dicts (sample_template ):
799800 sample_name = sample .pop ('sample_name' )
800- taxon_id = sample .pop ('taxon_id' , None )
801+ taxon_id = sample .pop ('taxon_id' )
802+ scientific_name = sample .pop ('scientific_name' )
801803 description = sample .pop ('description' , None )
802804
803- self .add_sample (sample_name , taxon_id = taxon_id ,
804- description = description ,
805- ** sample )
805+ self .add_sample (sample_name , taxon_id , scientific_name ,
806+ description = description , ** sample )
806807
808+ prep_template_samples = []
807809 for prep in iter_file_via_list_of_dicts (prep_template ):
808810 sample_name = prep .pop ('sample_name' )
811+ prep_template_samples .append (sample_name )
809812 platform = prep .pop ('platform' )
810813 experiment_design_description = prep .pop (
811814 'experiment_design_description' )
@@ -818,6 +821,10 @@ def add_samples_from_templates(self, sample_template, prep_template,
818821 library_construction_protocol ,
819822 ** prep )
820823
824+ # to_remove = set(self.samples).difference(prep_template_samples)
825+ # for sample in to_remove:
826+ # del self.samples[sample]
827+
821828 @classmethod
822829 def from_templates_and_per_sample_fastqs (cls , preprocessed_data_id ,
823830 study_title ,
0 commit comments