annotate data_manager/install_primer_scheme_bedfiles.py @ 2:b3710e492ee4 draft

"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit 61b727022bd1b24a8843830a9c5f34ef66835694"
author iuc
date Mon, 22 Jun 2020 18:26:10 -0400
parents cce5d9327cd6
children a2953ef09fe1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
1 #!/usr/bin/env python
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
2
2
b3710e492ee4 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit 61b727022bd1b24a8843830a9c5f34ef66835694"
iuc
parents: 1
diff changeset
3 from __future__ import division, print_function
0
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
4
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
5 import argparse
2
b3710e492ee4 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit 61b727022bd1b24a8843830a9c5f34ef66835694"
iuc
parents: 1
diff changeset
6 try:
b3710e492ee4 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit 61b727022bd1b24a8843830a9c5f34ef66835694"
iuc
parents: 1
diff changeset
7 from io import StringIO
b3710e492ee4 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit 61b727022bd1b24a8843830a9c5f34ef66835694"
iuc
parents: 1
diff changeset
8 except ImportError:
b3710e492ee4 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit 61b727022bd1b24a8843830a9c5f34ef66835694"
iuc
parents: 1
diff changeset
9 from StringIO import StringIO
0
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
10 import json
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
11 import os
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
12 import os.path
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
13 import re
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
14 import sys
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
15
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
16 import requests
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
17
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
18 DATA_TABLE_NAME = "primer_scheme_bedfiles"
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
19
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
20
2
b3710e492ee4 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit 61b727022bd1b24a8843830a9c5f34ef66835694"
iuc
parents: 1
diff changeset
21 def write_good_bed(input_file, bed_output_filename):
b3710e492ee4 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit 61b727022bd1b24a8843830a9c5f34ef66835694"
iuc
parents: 1
diff changeset
22 with open(bed_output_filename, "w") as bed_output_file:
b3710e492ee4 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit 61b727022bd1b24a8843830a9c5f34ef66835694"
iuc
parents: 1
diff changeset
23 for line in input_file:
b3710e492ee4 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit 61b727022bd1b24a8843830a9c5f34ef66835694"
iuc
parents: 1
diff changeset
24 fields = line.split("\t")
b3710e492ee4 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit 61b727022bd1b24a8843830a9c5f34ef66835694"
iuc
parents: 1
diff changeset
25 if len(fields) < 6:
b3710e492ee4 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit 61b727022bd1b24a8843830a9c5f34ef66835694"
iuc
parents: 1
diff changeset
26 # too short to encode the strand format
b3710e492ee4 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit 61b727022bd1b24a8843830a9c5f34ef66835694"
iuc
parents: 1
diff changeset
27 exit("invalid format in BED file: {}".format(line.rstrip()))
b3710e492ee4 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit 61b727022bd1b24a8843830a9c5f34ef66835694"
iuc
parents: 1
diff changeset
28 try:
b3710e492ee4 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit 61b727022bd1b24a8843830a9c5f34ef66835694"
iuc
parents: 1
diff changeset
29 # try and parse field 5 as a number
b3710e492ee4 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit 61b727022bd1b24a8843830a9c5f34ef66835694"
iuc
parents: 1
diff changeset
30 float(fields[4])
b3710e492ee4 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit 61b727022bd1b24a8843830a9c5f34ef66835694"
iuc
parents: 1
diff changeset
31 except ValueError:
b3710e492ee4 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit 61b727022bd1b24a8843830a9c5f34ef66835694"
iuc
parents: 1
diff changeset
32 # ARTIC with broken BED, set field 5 to 60
b3710e492ee4 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit 61b727022bd1b24a8843830a9c5f34ef66835694"
iuc
parents: 1
diff changeset
33 fields[4] = "60"
b3710e492ee4 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit 61b727022bd1b24a8843830a9c5f34ef66835694"
iuc
parents: 1
diff changeset
34 bed_output_file.write("\t".join(fields))
b3710e492ee4 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit 61b727022bd1b24a8843830a9c5f34ef66835694"
iuc
parents: 1
diff changeset
35
b3710e492ee4 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit 61b727022bd1b24a8843830a9c5f34ef66835694"
iuc
parents: 1
diff changeset
36
0
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
37 def fetch_artic_primers(output_directory, primers):
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
38 primer_sets = {
1
cce5d9327cd6 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit c78a20041ead5aa639003db5311d7a0d88e204b6"
iuc
parents: 0
diff changeset
39 "SARS-CoV-2-ARTICv1": "https://raw.githubusercontent.com/artic-network/artic-ncov2019/master/primer_schemes/nCoV-2019/V1/nCoV-2019.bed",
cce5d9327cd6 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit c78a20041ead5aa639003db5311d7a0d88e204b6"
iuc
parents: 0
diff changeset
40 "SARS-CoV-2-ARTICv2": "https://raw.githubusercontent.com/artic-network/artic-ncov2019/master/primer_schemes/nCoV-2019/V2/nCoV-2019.bed",
cce5d9327cd6 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit c78a20041ead5aa639003db5311d7a0d88e204b6"
iuc
parents: 0
diff changeset
41 "SARS-CoV-2-ARTICv3": "https://raw.githubusercontent.com/artic-network/artic-ncov2019/master/primer_schemes/nCoV-2019/V3/nCoV-2019.bed",
0
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
42 }
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
43
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
44 data = []
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
45 for name, url in primer_sets.items():
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
46 if name not in primers:
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
47 continue
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
48 response = requests.get(url)
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
49 if response.status_code != 200:
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
50 print(
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
51 "Error: download of",
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
52 url,
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
53 "failed with code",
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
54 response.status_code,
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
55 file=sys.stderr,
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
56 )
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
57 exit(response.status_code)
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
58 bed_output_filename = os.path.join(output_directory, name + ".bed")
2
b3710e492ee4 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit 61b727022bd1b24a8843830a9c5f34ef66835694"
iuc
parents: 1
diff changeset
59 write_good_bed(StringIO(response.text), bed_output_filename)
0
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
60 description = name[:-2] + " " + name[-2:] + " primer set"
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
61 data.append(dict(value=name, path=bed_output_filename, description=description))
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
62 return data
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
63
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
64
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
65 def install_primer_file(
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
66 output_directory, input_filename, primer_name, primer_description
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
67 ):
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
68 name = re.sub(r"\W", "", str(primer_name).replace(" ", "_"))
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
69 output_filename = os.path.join(output_directory, name + ".bed")
2
b3710e492ee4 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit 61b727022bd1b24a8843830a9c5f34ef66835694"
iuc
parents: 1
diff changeset
70 with open(input_filename) as input_file:
b3710e492ee4 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit 61b727022bd1b24a8843830a9c5f34ef66835694"
iuc
parents: 1
diff changeset
71 write_good_bed(input_file, output_filename)
0
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
72 data = [dict(value=name, description=primer_description, path=output_filename)]
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
73 return data
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
74
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
75
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
76 class SplitArgs(argparse.Action):
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
77 def __call__(self, parser, namespace, values, option_string=None):
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
78 setattr(namespace, self.dest, values.split(","))
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
79
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
80
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
81 if __name__ == "__main__":
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
82 parser = argparse.ArgumentParser(
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
83 description="Fetch ARTIC SARS-CoV-2 primer files for Galaxy/IRIDA use"
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
84 )
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
85 parser.add_argument(
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
86 "--output_directory", default="tmp", help="Directory to write output to"
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
87 )
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
88 primer_file = parser.add_argument_group()
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
89 primer_file.add_argument(
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
90 "--primer_file", help="BED format file containing primer scheme"
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
91 )
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
92 primer_file.add_argument(
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
93 "--primer_name",
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
94 help="Name of primer scheme (one word). Required if --primer_file is used",
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
95 )
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
96 primer_file.add_argument(
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
97 "--primer_description",
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
98 help="Description of primer scheme. Required if --primer_file is used",
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
99 )
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
100 artic = parser.add_argument_group()
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
101 artic.add_argument(
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
102 "--artic_primers",
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
103 action=SplitArgs,
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
104 help="Comma separated list of primers to fetch",
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
105 )
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
106 parser.add_argument(
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
107 "galaxy_datamanager_filename",
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
108 help="Galaxy JSON format file describing data manager inputs",
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
109 )
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
110 args = parser.parse_args()
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
111
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
112 if args.artic_primers is None and args.primer_file is None:
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
113 print(
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
114 "One of --artic_primers or --primer_file + --primer_name + --primer_description is required.",
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
115 file=sys.stderr,
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
116 )
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
117 exit(1)
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
118 elif args.primer_file is not None and (
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
119 args.primer_name is None or args.primer_description is None
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
120 ):
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
121 print(
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
122 "If --primer_file is used --primer_name and --primer_description is also required",
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
123 file=sys.stderr,
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
124 )
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
125 exit(1)
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
126 elif args.primer_file is not None and args.artic_primers is not None:
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
127 print(
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
128 "Only one of --artic_primers or --primer_file + --primer_name + --primer_description can be chosen"
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
129 )
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
130 exit(1)
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
131
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
132 config = json.load(open(args.galaxy_datamanager_filename))
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
133 output_directory = config.get("output_data", [{}])[0].get("extra_files_path", None)
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
134 if output_directory is None:
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
135 output_directory = args.output_directory
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
136
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
137 if not os.path.isdir(output_directory):
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
138 os.makedirs(output_directory)
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
139
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
140 data_manager_dict = {}
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
141 data_manager_dict["data_tables"] = json.load(
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
142 open(args.galaxy_datamanager_filename)
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
143 ).get("data_tables", {})
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
144 data_manager_dict["data_tables"] = data_manager_dict.get("data_tables", {})
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
145 data_manager_dict["data_tables"][DATA_TABLE_NAME] = data_manager_dict[
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
146 "data_tables"
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
147 ].get(DATA_TABLE_NAME, [])
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
148
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
149 if args.artic_primers:
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
150 data = fetch_artic_primers(output_directory, args.artic_primers)
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
151 else:
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
152 data = install_primer_file(
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
153 output_directory,
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
154 args.primer_file,
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
155 args.primer_name,
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
156 args.primer_description,
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
157 )
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
158
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
159 data_manager_dict["data_tables"][DATA_TABLE_NAME].extend(data)
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
160 print(data_manager_dict)
ae730ecdc7e7 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit f78536f45aa5ce801251a9725e468a47de1be44a"
iuc
parents:
diff changeset
161 json.dump(data_manager_dict, open(args.galaxy_datamanager_filename, "w"))