Mercurial > repos > ieguinoa > ena_upload
comparison extract_tables.py @ 21:d7a88a8a8f5f draft
Uploaded
author | ieguinoa |
---|---|
date | Fri, 06 Nov 2020 20:14:09 +0000 |
parents | d85e35a36715 |
children | 758e5bc32bbb |
comparison
equal
deleted
inserted
replaced
20:4bda52670a54 | 21:d7a88a8a8f5f |
---|---|
1 import argparse | 1 import argparse |
2 import json | 2 import json |
3 import os | 3 import os |
4 import pathlib | 4 import pathlib |
5 | |
6 from datetime import datetime | |
5 | 7 |
6 parser = argparse.ArgumentParser() | 8 parser = argparse.ArgumentParser() |
7 parser.add_argument('--studies',dest='studies_json_path', required=True) | 9 parser.add_argument('--studies',dest='studies_json_path', required=True) |
8 parser.add_argument('--out_dir',dest='out_path', required=True) | 10 parser.add_argument('--out_dir',dest='out_path', required=True) |
9 args = parser.parse_args() | 11 args = parser.parse_args() |
23 runs_table = open(pathlib.Path(args.out_path) / 'runs.tsv', 'w') | 25 runs_table = open(pathlib.Path(args.out_path) / 'runs.tsv', 'w') |
24 runs_table.write('\t'.join(['alias','status','accession','experiment_alias','file_name','file_format','file_checksum','submission_date'])+ '\n') | 26 runs_table.write('\t'.join(['alias','status','accession','experiment_alias','file_name','file_format','file_checksum','submission_date'])+ '\n') |
25 | 27 |
26 action = 'add' | 28 action = 'add' |
27 viral_submission = False | 29 viral_submission = False |
30 | |
31 dt_oobj = datetime.now(tz=None) | |
32 timestamp = dt_oobj.strftime("%Y%m%d_%H:%M:%S") | |
28 for study_index, study in enumerate(studies_dict): | 33 for study_index, study in enumerate(studies_dict): |
29 study_alias = 'study_'+str(study_index) | 34 study_alias = 'study_'+str(study_index)+'_'+timestamp |
30 studies_table.write('\t'.join([study_alias,action,'ENA_accession',study['title'], study['type'],study['abstract'],study['pubmed_id'],'ENA_submission_data'])) | 35 studies_table.write('\t'.join([study_alias,action,'ENA_accession',study['title'], study['type'],study['abstract'],study['pubmed_id'],'ENA_submission_data'])) |
31 if "geo_location" in study['samples'][0].keys(): # sample belongs to a viral sample | 36 if "geo_location" in study['samples'][0].keys(): # sample belongs to a viral sample |
32 samples_table.write('\t'.join(['alias','status','accession','title','scientific_name','taxon_id','sample_description','collection_date','geographic_location','host_common_name','host_subject_id','host_health_state','host_sex','host_scientific_name','collector_name','collecting_institution','isolate','submission_date']) + '\n') | 37 samples_table.write('\t'.join(['alias','status','accession','title','scientific_name','taxon_id','sample_description','collection_date','geographic_location','host_common_name','host_subject_id','host_health_state','host_sex','host_scientific_name','collector_name','collecting_institution','isolate','submission_date']) + '\n') |
33 else: | 38 else: |
34 samples_table.write('\t'.join(['alias','status','accession','title','scientific_name','taxon_id','sample_description','submission_date']) + '\n') | 39 samples_table.write('\t'.join(['alias','status','accession','title','scientific_name','taxon_id','sample_description','submission_date']) + '\n') |
35 for sample_index,sample in enumerate(study['samples']): | 40 for sample_index,sample in enumerate(study['samples']): |
36 sample_alias = 'sample_'+str(sample_index) | 41 sample_alias = 'sample_'+str(sample_index)+'_'+timestamp |
37 if "geo_location" in sample.keys(): # sample belongs to a viral sample | 42 if "geo_location" in sample.keys(): # sample belongs to a viral sample |
38 if sample['collector_name'] == '': | 43 if sample['collector_name'] == '': |
39 sample['collector_name'] = 'unknown' | 44 sample['collector_name'] = 'unknown' |
40 samples_table.write('\t'.join([sample_alias,action,'ena_accession',sample['title'],sample['tax_name'], sample['tax_id'],sample['description'],sample['collection_date'],sample['geo_location'],sample['host_common_name'],sample['host_subject_id'],sample['host_health_state'],sample['host_sex'],sample['host_scientific_name'],sample['collector_name'],sample['collecting_institution'],sample['isolate'],'ENA_submission_date'])+ '\n') | 45 samples_table.write('\t'.join([sample_alias,action,'ena_accession',sample['title'],sample['tax_name'], sample['tax_id'],sample['description'],sample['collection_date'],sample['geo_location'],sample['host_common_name'],sample['host_subject_id'],sample['host_health_state'],sample['host_sex'],sample['host_scientific_name'],sample['collector_name'],sample['collecting_institution'],sample['isolate'],'ENA_submission_date'])+ '\n') |
41 else: | 46 else: |
42 samples_table.write('\t'.join([sample_alias,action,'ena_accession',sample['title'],sample['tax_name'], sample['tax_id'],sample['description'],'ENA_submission_date'])+ '\n') | 47 samples_table.write('\t'.join([sample_alias,action,'ena_accession',sample['title'],sample['tax_name'], sample['tax_id'],sample['description'],'ENA_submission_date'])+ '\n') |
43 for exp_index,exp in enumerate(sample['experiments']): | 48 for exp_index,exp in enumerate(sample['experiments']): |
44 exp_alias = 'experiment_'+str(exp_index)+'_'+str(sample_index) | 49 exp_alias = 'experiment_'+str(exp_index)+'.'+str(sample_index)+'_'+timestamp |
45 lib_alias = 'library_'+str(exp_index)+'_'+str(sample_index) | 50 lib_alias = 'library_'+str(exp_index)+'_'+str(sample_index) |
46 experiments_table.write('\t'.join([exp_alias,action,'accession_ena',exp['title'],study_alias,sample_alias,exp['experiment_design'],lib_alias,exp['library_strategy'],exp['library_source'],exp['library_selection'],exp['library_layout'].lower(),exp['insert_size'],exp['library_construction_protocol'],exp['platform'],exp['instrument_model'],'submission_date_ENA']) + '\n') | 51 experiments_table.write('\t'.join([exp_alias,action,'accession_ena',exp['title'],study_alias,sample_alias,exp['experiment_design'],lib_alias,exp['library_strategy'],exp['library_source'],exp['library_selection'],exp['library_layout'].lower(),exp['insert_size'],exp['library_construction_protocol'],exp['platform'],exp['instrument_model'],'submission_date_ENA']) + '\n') |
47 run_index = 0 | 52 run_index = 0 |
48 # exp['runs'] is a list of lists | 53 # exp['runs'] is a list of lists |
49 for run in exp['runs']: | 54 for run in exp['runs']: |
50 run_index += 1 | 55 run_index += 1 |
51 run_alias = '_'.join(['run',str(exp_index),str(sample_index),str(run_index)]) | 56 run_alias = '.'.join(['run_'+str(run_index),str(exp_index),str(sample_index)]) + '_' +timestamp |
52 for file_entry in run: | 57 for file_entry in run: |
53 file_format = 'fastq' | 58 file_format = 'fastq' |
54 runs_table.write('\t'.join([run_alias,action,'ena_run_accession',exp_alias,file_entry,file_format,'file_checksum','submission_date_ENA']) + '\n') | 59 runs_table.write('\t'.join([run_alias,action,'ena_run_accession',exp_alias,file_entry,file_format,'file_checksum','submission_date_ENA']) + '\n') |
55 | 60 |
56 studies_table.close() | 61 studies_table.close() |