annotate extract_tables.py @ 21:d7a88a8a8f5f draft

Uploaded
author ieguinoa
date Fri, 06 Nov 2020 20:14:09 +0000
parents d85e35a36715
children 758e5bc32bbb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
1 import argparse
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
2 import json
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
3 import os
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
4 import pathlib
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
5
21
d7a88a8a8f5f Uploaded
ieguinoa
parents: 15
diff changeset
6 from datetime import datetime
d7a88a8a8f5f Uploaded
ieguinoa
parents: 15
diff changeset
7
4
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
8 parser = argparse.ArgumentParser()
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
9 parser.add_argument('--studies',dest='studies_json_path', required=True)
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
10 parser.add_argument('--out_dir',dest='out_path', required=True)
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
11 args = parser.parse_args()
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
12
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
13
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
14 with open(args.studies_json_path,'r') as studies_json_file:
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
15 studies_dict = json.load(studies_json_file)
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
16
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
17 studies_table = open(pathlib.Path(args.out_path) / 'studies.tsv', 'w')
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
18 studies_table.write('\t'.join(['alias','status','accession','title','study_type','study_abstract','pubmed_id','submission_date']) + '\n')
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
19
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
20 samples_table = open(pathlib.Path(args.out_path) / 'samples.tsv', 'w')
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
21
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
22 experiments_table = open(pathlib.Path(args.out_path) / 'experiments.tsv', 'w')
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
23 experiments_table.write('\t'.join(['alias','status','accession','title','study_alias','sample_alias','design_description','library_name','library_strategy','library_source','library_selection','library_layout','insert_size','library_construction_protocol','platform','instrument_model','submission_date'])+ '\n')
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
24
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
25 runs_table = open(pathlib.Path(args.out_path) / 'runs.tsv', 'w')
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
26 runs_table.write('\t'.join(['alias','status','accession','experiment_alias','file_name','file_format','file_checksum','submission_date'])+ '\n')
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
27
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
28 action = 'add'
15
d85e35a36715 Uploaded
ieguinoa
parents: 14
diff changeset
29 viral_submission = False
21
d7a88a8a8f5f Uploaded
ieguinoa
parents: 15
diff changeset
30
d7a88a8a8f5f Uploaded
ieguinoa
parents: 15
diff changeset
31 dt_oobj = datetime.now(tz=None)
d7a88a8a8f5f Uploaded
ieguinoa
parents: 15
diff changeset
32 timestamp = dt_oobj.strftime("%Y%m%d_%H:%M:%S")
4
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
33 for study_index, study in enumerate(studies_dict):
21
d7a88a8a8f5f Uploaded
ieguinoa
parents: 15
diff changeset
34 study_alias = 'study_'+str(study_index)+'_'+timestamp
4
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
35 studies_table.write('\t'.join([study_alias,action,'ENA_accession',study['title'], study['type'],study['abstract'],study['pubmed_id'],'ENA_submission_data']))
15
d85e35a36715 Uploaded
ieguinoa
parents: 14
diff changeset
36 if "geo_location" in study['samples'][0].keys(): # sample belongs to a viral sample
d85e35a36715 Uploaded
ieguinoa
parents: 14
diff changeset
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')
d85e35a36715 Uploaded
ieguinoa
parents: 14
diff changeset
38 else:
d85e35a36715 Uploaded
ieguinoa
parents: 14
diff changeset
39 samples_table.write('\t'.join(['alias','status','accession','title','scientific_name','taxon_id','sample_description','submission_date']) + '\n')
4
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
40 for sample_index,sample in enumerate(study['samples']):
21
d7a88a8a8f5f Uploaded
ieguinoa
parents: 15
diff changeset
41 sample_alias = 'sample_'+str(sample_index)+'_'+timestamp
15
d85e35a36715 Uploaded
ieguinoa
parents: 14
diff changeset
42 if "geo_location" in sample.keys(): # sample belongs to a viral sample
d85e35a36715 Uploaded
ieguinoa
parents: 14
diff changeset
43 if sample['collector_name'] == '':
d85e35a36715 Uploaded
ieguinoa
parents: 14
diff changeset
44 sample['collector_name'] = 'unknown'
d85e35a36715 Uploaded
ieguinoa
parents: 14
diff changeset
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')
d85e35a36715 Uploaded
ieguinoa
parents: 14
diff changeset
46 else:
d85e35a36715 Uploaded
ieguinoa
parents: 14
diff changeset
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')
4
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
48 for exp_index,exp in enumerate(sample['experiments']):
21
d7a88a8a8f5f Uploaded
ieguinoa
parents: 15
diff changeset
49 exp_alias = 'experiment_'+str(exp_index)+'.'+str(sample_index)+'_'+timestamp
4
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
50 lib_alias = 'library_'+str(exp_index)+'_'+str(sample_index)
15
d85e35a36715 Uploaded
ieguinoa
parents: 14
diff changeset
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')
4
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
52 run_index = 0
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
53 # exp['runs'] is a list of lists
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
54 for run in exp['runs']:
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
55 run_index += 1
21
d7a88a8a8f5f Uploaded
ieguinoa
parents: 15
diff changeset
56 run_alias = '.'.join(['run_'+str(run_index),str(exp_index),str(sample_index)]) + '_' +timestamp
4
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
57 for file_entry in run:
15
d85e35a36715 Uploaded
ieguinoa
parents: 14
diff changeset
58 file_format = 'fastq'
4
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
59 runs_table.write('\t'.join([run_alias,action,'ena_run_accession',exp_alias,file_entry,file_format,'file_checksum','submission_date_ENA']) + '\n')
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
60
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
61 studies_table.close()
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
62 samples_table.close()
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
63 experiments_table.close()
b85d239b1d58 Uploaded
ieguinoa
parents:
diff changeset
64 runs_table.close()