Mercurial > repos > sanbi-uwc > data_manager_fetch_refseq
comparison data_manager/fetch_artic_primers.py @ 19:d118e256faca draft default tip
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_fetch_refseq commit 120c6491f4b0888220e432693a9805d8198d7397"
author | sanbi-uwc |
---|---|
date | Thu, 16 Apr 2020 10:19:57 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
18:75c1817c2ecf | 19:d118e256faca |
---|---|
1 #!/usr/bin/env python | |
2 | |
3 from __future__ import print_function, division | |
4 | |
5 import argparse | |
6 import json | |
7 import os | |
8 import os.path | |
9 import sys | |
10 | |
11 import requests | |
12 | |
13 DATA_TABLE_NAME = 'artic_primers' | |
14 def fetch_artic_primers(output_filename, output_directory, primers): | |
15 primer_sets = { | |
16 'ARTICv1': 'https://raw.githubusercontent.com/artic-network/artic-ncov2019/master/primer_schemes/nCoV-2019/V1/nCoV-2019.bed', | |
17 'ARTICv2': 'https://raw.githubusercontent.com/artic-network/artic-ncov2019/master/primer_schemes/nCoV-2019/V2/nCoV-2019.bed', | |
18 'ARTICv3': 'https://raw.githubusercontent.com/artic-network/artic-ncov2019/master/primer_schemes/nCoV-2019/V3/nCoV-2019.bed' | |
19 } | |
20 | |
21 if not os.path.isdir(output_directory): | |
22 os.makedirs(output_directory) | |
23 data_manager_dict = json.load(open(output_filename)) | |
24 data_manager_dict['data_tables'] = data_manager_dict.get('data_tables', {}) | |
25 data_manager_dict['data_tables'][DATA_TABLE_NAME] = data_manager_dict['data_tables'].get(DATA_TABLE_NAME, []) | |
26 | |
27 data = [] | |
28 for name, url in primer_sets.items(): | |
29 response = requests.get(url) | |
30 if response.status_code != 200: | |
31 print('Error: download of', url, 'failed with code', response.status_code, file=sys.stderr) | |
32 exit(response.status_code) | |
33 bed_output_filename = os.path.join(output_directory, name + '.bed') | |
34 open(bed_output_filename, 'w').write(response.text) | |
35 description = name[:-2] + ' ' + name[-2:] + ' primer set' | |
36 data.append(dict(value=name, path=bed_output_filename, description=description)) | |
37 data_manager_dict['data_tables'][DATA_TABLE_NAME].extend(data) | |
38 print(data_manager_dict) | |
39 json.dump(data_manager_dict, open(output_filename, 'w')) | |
40 | |
41 class SplitArgs(argparse.Action): | |
42 def __call__(self, parser, namespace, values, option_string=None): | |
43 setattr(namespace, self.dest, values.split(',')) | |
44 | |
45 | |
46 if __name__ == '__main__': | |
47 parser = argparse.ArgumentParser(description='Fetch ARTIC primer files for Galaxy use') | |
48 parser.add_argument('--output_directory', default='tmp', help='Directory to write output to') | |
49 parser.add_argument('--galaxy_datamanager_filename', help='Galaxy JSON format file describing data manager inputs') | |
50 parser.add_argument('--primers', default='ARTCIv1,ARTICv2,ARTICv3', action=SplitArgs, help='Comma separated list of primers to fetch') | |
51 args = parser.parse_args() | |
52 fetch_artic_primers(args.galaxy_datamanager_filename, args.output_directory, args.primers) |