Mercurial > repos > iuc > data_manager_primer_scheme_bedfiles
comparison data_manager/install_primer_scheme_bedfiles.py @ 3:a2953ef09fe1 draft
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_primer_scheme_bedfiles commit 1e0936cb95a0318809b3306fad43ce444d7682b0"
author | iuc |
---|---|
date | Mon, 12 Oct 2020 13:47:03 +0000 |
parents | b3710e492ee4 |
children | 157a5c9ea72a |
comparison
equal
deleted
inserted
replaced
2:b3710e492ee4 | 3:a2953ef09fe1 |
---|---|
16 import requests | 16 import requests |
17 | 17 |
18 DATA_TABLE_NAME = "primer_scheme_bedfiles" | 18 DATA_TABLE_NAME = "primer_scheme_bedfiles" |
19 | 19 |
20 | 20 |
21 def write_good_bed(input_file, bed_output_filename): | 21 def write_artic_style_bed(input_file, bed_output_filename): |
22 with open(bed_output_filename, "w") as bed_output_file: | 22 with open(bed_output_filename, "w") as bed_output_file: |
23 for line in input_file: | 23 for line in input_file: |
24 fields = line.split("\t") | 24 fields = line.split("\t") |
25 if len(fields) < 6: | 25 if len(fields) < 6: |
26 # too short to encode the strand format | 26 # too short to encode the strand format |
27 exit("invalid format in BED file: {}".format(line.rstrip())) | 27 exit("invalid format in BED file: {}".format(line.rstrip())) |
28 try: | 28 try: |
29 # try and parse field 5 as a number | 29 # try and parse field 5 as a number |
30 float(fields[4]) | 30 score = float(fields[4]) |
31 except ValueError: | 31 except ValueError: |
32 # ARTIC with broken BED, set field 5 to 60 | 32 # Alright, this is an ARTIC-style bed, |
33 fields[4] = "60" | 33 # which is actually against the specs, but required by the |
34 # ARTIC pipeline. | |
35 pass | |
36 else: | |
37 # This is a regular bed with numbers in the score column. | |
38 # We need to "fix" it for the ARTIC pipeline. | |
39 fields[4] = '_{0}'.format(score) | |
34 bed_output_file.write("\t".join(fields)) | 40 bed_output_file.write("\t".join(fields)) |
35 | 41 |
36 | 42 |
37 def fetch_artic_primers(output_directory, primers): | 43 def fetch_artic_primers(output_directory, primers): |
38 primer_sets = { | 44 primer_sets = { |
54 response.status_code, | 60 response.status_code, |
55 file=sys.stderr, | 61 file=sys.stderr, |
56 ) | 62 ) |
57 exit(response.status_code) | 63 exit(response.status_code) |
58 bed_output_filename = os.path.join(output_directory, name + ".bed") | 64 bed_output_filename = os.path.join(output_directory, name + ".bed") |
59 write_good_bed(StringIO(response.text), bed_output_filename) | 65 write_artic_style_bed(StringIO(response.text), bed_output_filename) |
60 description = name[:-2] + " " + name[-2:] + " primer set" | 66 description = name[:-2] + " " + name[-2:] + " primer set" |
61 data.append(dict(value=name, path=bed_output_filename, description=description)) | 67 data.append(dict(value=name, path=bed_output_filename, description=description)) |
62 return data | 68 return data |
63 | 69 |
64 | 70 |
66 output_directory, input_filename, primer_name, primer_description | 72 output_directory, input_filename, primer_name, primer_description |
67 ): | 73 ): |
68 name = re.sub(r"\W", "", str(primer_name).replace(" ", "_")) | 74 name = re.sub(r"\W", "", str(primer_name).replace(" ", "_")) |
69 output_filename = os.path.join(output_directory, name + ".bed") | 75 output_filename = os.path.join(output_directory, name + ".bed") |
70 with open(input_filename) as input_file: | 76 with open(input_filename) as input_file: |
71 write_good_bed(input_file, output_filename) | 77 write_artic_style_bed(input_file, output_filename) |
72 data = [dict(value=name, description=primer_description, path=output_filename)] | 78 data = [dict(value=name, description=primer_description, path=output_filename)] |
73 return data | 79 return data |
74 | 80 |
75 | 81 |
76 class SplitArgs(argparse.Action): | 82 class SplitArgs(argparse.Action): |