about summary refs log tree commit diff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/download_sra_data/download_sra_data.py45
1 files changed, 28 insertions, 17 deletions
diff --git a/scripts/download_sra_data/download_sra_data.py b/scripts/download_sra_data/download_sra_data.py
index 9145a43..e36afb6 100644
--- a/scripts/download_sra_data/download_sra_data.py
+++ b/scripts/download_sra_data/download_sra_data.py
@@ -8,9 +8,11 @@ import gzip
 
 dir_yaml = 'yaml'
 
-date = '2020.06.08'
+date = '2020.07.05'
 
-# Query on SRA: 'txid2697049[Organism]' (https://www.ncbi.nlm.nih.gov/sra/?term=txid2697049%5BOrganism%5D) -> Send to -> File -> Full XML -> Create File
+# Query on SRA: 'txid2697049[Organism]' (https://www.ncbi.nlm.nih.gov/sra/?term=txid2697049%5BOrganism%5D)
+# Query on SRA: 'txid2697049[Organism:noexp] NOT 0[Mbases ' (https://www.ncbi.nlm.nih.gov/sra/?term=txid2697049%5BOrganism:noexp%5D%20NOT%200[Mbases)
+#         -> Send to -> File -> Full XML -> Create File
 path_sra_metadata_xml = 'SraExperimentPackage.{}.xml.gz'.format(date)
 
 dir_dict_ontology_standardization = '../dict_ontology_standardization/'
@@ -70,14 +72,14 @@ for i, EXPERIMENT_PACKAGE in enumerate(EXPERIMENT_PACKAGE_SET):
     accession = RUN.attrib['accession']
     run_accession_set.add(accession)
     #print(accession)
-    
+
     info_for_yaml_dict['sample']['sample_id'] = accession
     
-    SRAFiles = RUN.find('SRAFiles')
-    if SRAFiles is not None:
-        url = SRAFiles.find('SRAFile').attrib['url']
-        if 'sra-download.ncbi.nlm.nih.gov' in url:
-            run_accession_to_downloadble_file_url_dict[accession] = url
+    #SRAFiles = RUN.find('SRAFiles')
+    #if SRAFiles is not None:
+    #    url = SRAFiles.find('SRAFile').attrib['url']
+    #    if 'sra-download.ncbi.nlm.nih.gov' in url:
+    #        run_accession_to_downloadble_file_url_dict[accession] = url
   
 
     SAMPLE = EXPERIMENT_PACKAGE.find('SAMPLE')
@@ -100,11 +102,19 @@ for i, EXPERIMENT_PACKAGE in enumerate(EXPERIMENT_PACKAGE_SET):
                 elif VALUE_text.strip("'") not in ['missing', 'not collected', 'not provided']:
                     missing_value_list.append('\t'.join([accession, 'host_health_status', VALUE_text]))
             elif TAG_text in ['strain', 'isolate']:
-                if VALUE_text.lower() not in ['not applicable', 'missing', 'na', 'unknown']:
-                    if 'virus_strain' not in info_for_yaml_dict:
-                        info_for_yaml_dict['virus']['virus_strain'] = VALUE_text
+                if VALUE_text.lower() not in ['not applicable', 'missing', 'na', 'unknown', 'not provided']:
+                    value_to_insert = VALUE_text
+
+                    if value_to_insert.lower() in ['homo sapien']:
+                        value_to_insert = 'Homo sapiens'
+
+                    if value_to_insert in term_to_uri_dict:
+                        value_to_insert = term_to_uri_dict[value_to_insert]
+                        
+                    if 'virus_strain' not in info_for_yaml_dict:                        
+                        info_for_yaml_dict['virus']['virus_strain'] = value_to_insert
                     else:
-                        info_for_yaml_dict['virus']['virus_strain'] += '; ' + VALUE_text
+                        info_for_yaml_dict['virus']['virus_strain'] += '; ' + value_to_insert
             elif TAG_text in ['isolation_source', 'isolation source host-associated']:                    
                 if VALUE_text in term_to_uri_dict:
                     info_for_yaml_dict['sample']['specimen_source'] = [term_to_uri_dict[VALUE_text]]
@@ -179,17 +189,18 @@ for i, EXPERIMENT_PACKAGE in enumerate(EXPERIMENT_PACKAGE_SET):
     
     EXPERIMENT = EXPERIMENT_PACKAGE.find('EXPERIMENT')
     INSTRUMENT_MODEL = [x.text for x in EXPERIMENT.find('PLATFORM').iter('INSTRUMENT_MODEL')][0]
+
     if INSTRUMENT_MODEL.lower() != 'unspecified':
         if INSTRUMENT_MODEL in term_to_uri_dict:
             info_for_yaml_dict['technology']['sample_sequencing_technology'] = [term_to_uri_dict[INSTRUMENT_MODEL]]
         else:
             missing_value_list.append('\t'.join([accession, 'sample_sequencing_technology', INSTRUMENT_MODEL]))
-    
+    #else:
+    #    print(accession, 'Missing INSTRUMENT_MODEL', info_for_yaml_dict)
     LIBRARY_DESCRIPTOR = EXPERIMENT.find('DESIGN').find('LIBRARY_DESCRIPTOR')
     if LIBRARY_DESCRIPTOR.text not in ['OTHER']:
         info_for_yaml_dict['technology']['additional_technology_information'] = 'LIBRARY_STRATEGY: {};'.format(LIBRARY_DESCRIPTOR.find('LIBRARY_STRATEGY').text)
-           
-            
+
     SUBMISSION = EXPERIMENT_PACKAGE.find('SUBMISSION')
     info_for_yaml_dict['submitter']['submitter_sample_id'] = SUBMISSION.attrib['accession']
     
@@ -197,7 +208,7 @@ for i, EXPERIMENT_PACKAGE in enumerate(EXPERIMENT_PACKAGE_SET):
         info_for_yaml_dict['submitter']['originating_lab'] = SUBMISSION.attrib['lab_name']
 
     STUDY = EXPERIMENT_PACKAGE.find('STUDY')     
-    info_for_yaml_dict['submitter']['publication'] = SUBMISSION.attrib['lab_name']
+    info_for_yaml_dict['submitter']['publication'] = STUDY.attrib['alias']
     
     
     Organization = EXPERIMENT_PACKAGE.find('Organization')
@@ -229,4 +240,4 @@ if len(missing_value_list) > 0:
     path_missing_terms_tsv = 'missing_terms.tsv'
     print('Written missing terms in {}'.format(path_missing_terms_tsv))
     with open(path_missing_terms_tsv, 'w') as fw:
-        fw.write('\n'.join(missing_value_list))
\ No newline at end of file
+        fw.write('\n'.join(missing_value_list))