Mercurial > repos > ieguinoa > ena_upload
comparison extract_tables.py @ 4:b85d239b1d58 draft
Uploaded
author | ieguinoa |
---|---|
date | Wed, 05 Aug 2020 14:55:11 +0000 |
parents | |
children | 91a3a617d94b |
comparison
equal
deleted
inserted
replaced
3:e0f039988802 | 4:b85d239b1d58 |
---|---|
1 import argparse | |
2 import json | |
3 import os | |
4 import pathlib | |
5 | |
6 parser = argparse.ArgumentParser() | |
7 parser.add_argument('--studies',dest='studies_json_path', required=True) | |
8 parser.add_argument('--out_dir',dest='out_path', required=True) | |
9 args = parser.parse_args() | |
10 | |
11 | |
12 with open(args.studies_json_path,'r') as studies_json_file: | |
13 studies_dict = json.load(studies_json_file) | |
14 | |
15 studies_table = open(pathlib.Path(args.out_path) / 'studies.tsv', 'w') | |
16 studies_table.write('\t'.join(['alias','status','accession','title','study_type','study_abstract','pubmed_id','submission_date']) + '\n') | |
17 | |
18 samples_table = open(pathlib.Path(args.out_path) / 'samples.tsv', 'w') | |
19 samples_table.write('\t'.join(['alias','status','accession','title','scientific_name','taxon_id','sample_description','submission_date']) + '\n') | |
20 | |
21 experiments_table = open(pathlib.Path(args.out_path) / 'experiments.tsv', 'w') | |
22 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') | |
23 | |
24 runs_table = open(pathlib.Path(args.out_path) / 'runs.tsv', 'w') | |
25 runs_table.write('\t'.join(['alias','status','accession','experiment_alias','file_name','file_format','file_checksum','submission_date'])+ '\n') | |
26 | |
27 action = 'add' | |
28 for study_index, study in enumerate(studies_dict): | |
29 study_alias = 'study_'+str(study_index) | |
30 studies_table.write('\t'.join([study_alias,action,'ENA_accession',study['title'], study['type'],study['abstract'],study['pubmed_id'],'ENA_submission_data'])) | |
31 for sample_index,sample in enumerate(study['samples']): | |
32 sample_alias = 'sample_'+str(sample_index) | |
33 samples_table.write('\t'.join([sample_alias,action,'ena_accession',sample['title'],sample['tax_name'], sample['tax_id'],sample['description'],'ENA_submission_date'])+ '\n') | |
34 for exp_index,exp in enumerate(sample['experiments']): | |
35 exp_alias = 'experiment_'+str(exp_index)+'_'+str(sample_index) | |
36 lib_alias = 'library_'+str(exp_index)+'_'+str(sample_index) | |
37 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'],exp['insert_size'],exp['library_construction_protocol'],exp['platform'],exp['instrument_model'],'submission_date_ENA']) + '\n') | |
38 run_index = 0 | |
39 # exp['runs'] is a list of lists | |
40 for run in exp['runs']: | |
41 run_index += 1 | |
42 run_alias = '_'.join(['run',str(exp_index),str(sample_index),str(run_index)]) | |
43 for file_entry in run: | |
44 file_format = 'fastq.gz' if os.path.splitext(file_entry)[-1] == '.gz' else 'fastq.bz2' | |
45 runs_table.write('\t'.join([run_alias,action,'ena_run_accession',exp_alias,file_entry,file_format,'file_checksum','submission_date_ENA']) + '\n') | |
46 | |
47 studies_table.close() | |
48 samples_table.close() | |
49 experiments_table.close() | |
50 runs_table.close() |