|
14 | 14 | from skbio.util import safe_md5 |
15 | 15 |
|
16 | 16 | from qiita_core.qiita_settings import qiita_config |
17 | | - |
| 17 | +from qiita_ware.exceptions import EBISumbissionError |
18 | 18 | from qiita_db.logger import LogEntry |
19 | 19 | from qiita_db.ontology import Ontology |
20 | 20 | from qiita_db.util import convert_to_id |
@@ -288,7 +288,7 @@ def add_sample(self, sample_name, taxon_id, scientific_name, |
288 | 288 | ---------- |
289 | 289 | sample_name : str |
290 | 290 | Unique identifier for the sample |
291 | | - taxon_id : int |
| 291 | + taxon_id : str |
292 | 292 | NCBI's taxon ID for the sample |
293 | 293 | scientific_name : str |
294 | 294 | NCBI's scientific name for the `taxon_id` |
@@ -350,6 +350,10 @@ def generate_sample_xml(self): |
350 | 350 | taxon_id = ET.SubElement(sample_name_element, 'TAXON_ID') |
351 | 351 | taxon_id.text = escape(clean_whitespace(sample_info['taxon_id'])) |
352 | 352 |
|
| 353 | + taxon_id = ET.SubElement(sample_name_element, 'SCIENTIFIC_NAME') |
| 354 | + taxon_id.text = escape( |
| 355 | + clean_whitespace(sample_info['scientific_name'])) |
| 356 | + |
353 | 357 | description = ET.SubElement(sample, 'DESCRIPTION') |
354 | 358 | description.text = escape(clean_whitespace( |
355 | 359 | sample_info['description'])) |
@@ -798,12 +802,20 @@ def add_samples_from_templates(self, sample_template, prep_template, |
798 | 802 |
|
799 | 803 | for sample in iter_file_via_list_of_dicts(sample_template): |
800 | 804 | sample_name = sample.pop('sample_name') |
801 | | - taxon_id = sample.pop('taxon_id') |
802 | | - scientific_name = sample.pop('scientific_name') |
| 805 | + taxon_id = sample.pop('taxon_id', None) |
| 806 | + scientific_name = sample.pop('scientific_name', None) |
803 | 807 | description = sample.pop('description', None) |
804 | 808 |
|
| 809 | + if taxon_id is None or scientific_name is None or \ |
| 810 | + description is None: |
| 811 | + raise EBISumbissionError( |
| 812 | + "Sample '%s' is missing required EBI submission " |
| 813 | + "information. taxon_id: %s; scientific_name: %s; " |
| 814 | + "description: %s" % (sample_name, taxon_id, |
| 815 | + scientific_name, description)) |
| 816 | + |
805 | 817 | self.add_sample(sample_name, taxon_id, scientific_name, |
806 | | - description=description, **sample) |
| 818 | + description, **sample) |
807 | 819 |
|
808 | 820 | prep_template_samples = [] |
809 | 821 | for prep in iter_file_via_list_of_dicts(prep_template): |
|
0 commit comments