comparison generate_macros.py @ 0:e2e9fae080ad draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/ebi_tools commit 7a9c88c1c80b80aaa63e55e9d9125b6a4dd695ac
author iuc
date Thu, 01 Dec 2016 15:27:59 -0500
parents
children 6155fa39a899
comparison
equal deleted inserted replaced
-1:000000000000 0:e2e9fae080ad
1 #!/usr/bin/env python3
2
3 import ebeye_urllib
4
5
6 def add_option(value, name, selected=False):
7 to_write = '<option '
8 to_write += 'value="%s"' % (value)
9 if selected:
10 to_write += ' selected="true"'
11 to_write += '>%s' % (name)
12 to_write += '</option>\n'
13 return to_write
14
15
16 def add_select_parameter(name, label, multiple=False):
17 to_write = '<param '
18 to_write += 'name="%s" ' % (name)
19 to_write += 'type="select" '
20 to_write += 'label="%s" ' % (label)
21 if multiple:
22 to_write += 'multiple=\"true\"'
23 to_write += '>\n'
24 return to_write
25
26
27 def write_macros_file(macros_filepath, domains_fields):
28 spaces = ' '
29 to_write = '<macros>\n'
30
31 to_write += '%s<xml name="requirements">\n' % (spaces)
32 to_write += '%s<requirements>\n' % (2 * spaces)
33 to_write += '%s<requirement type="package" version="3.1.1">xmltramp2</requirement>\n' % (3 * spaces)
34 to_write += '%s<requirement type="package" version="1.12">urllib3</requirement>\n' % (3 * spaces)
35 to_write += '%s<yield/>\n' % (3 * spaces)
36 to_write += '%s</requirements>\n' % (2 * spaces)
37 to_write += '%s</xml>\n' % (spaces)
38
39 to_write += '%s<xml name="inputs">\n' % (spaces)
40
41 to_write += '%s<conditional name="searched_domain">\n' % (2 * spaces)
42 to_write += '%s%s' % (3 * spaces, add_select_parameter(
43 'domain',
44 'Domain to query'))
45
46 sorted_domains = [(d, domains_fields[d]['name']) for d in domains_fields.keys()]
47 sorted_domains = sorted(sorted_domains, key=lambda tup: tup[1])
48 for domain in sorted_domains:
49 to_write += '%s%s' % (4 * spaces, add_option(
50 domain[0],
51 domain[1]))
52
53 to_write += '%s</param>\n\n' % (3 * spaces)
54
55 for d in sorted_domains:
56 domain = d[0]
57 to_write += '%s<when value="%s">\n' % (3 * spaces, domain)
58
59 to_write += '%s%s' % (4 * spaces, add_select_parameter(
60 'fields',
61 'Fields to extract',
62 multiple=True))
63 for field in domains_fields[domain]['retrievable_fields']:
64 to_write += '%s%s' % (5 * spaces, add_option(
65 field,
66 field,
67 selected=True))
68 to_write += '%s<validator type="no_options" message="Please select at least one field" />\n' % (5 * spaces)
69 to_write += '%s</param>\n' % (4 * spaces)
70
71 to_write += '%s<repeat name="queries" title="Add a query">\n' % (
72 4 * spaces)
73
74 to_write += '%s%s' % (5 * spaces, add_select_parameter(
75 'combination_operation',
76 'Combination operation'))
77 to_write += '%s%s' % (6 * spaces, add_option('AND', 'AND'))
78 to_write += '%s%s' % (6 * spaces, add_option('OR', 'OR'))
79 to_write += '%s%s' % (6 * spaces, add_option('NOT', 'NOT'))
80 to_write += '%s</param>\n' % (5 * spaces)
81
82 to_write += '%s%s' % (5 * spaces, add_select_parameter(
83 'query_field',
84 'Fields'))
85 for field in domains_fields[domain]['searchable_fields']:
86 to_write += '%s%s' % (6 * spaces, add_option(field, field))
87 to_write += '%s</param>\n' % (5 * spaces)
88
89 to_write += '%s<conditional name="comp_operation">\n' % (5 * spaces)
90 to_write += '%s%s' % (6 * spaces, add_select_parameter(
91 'operation',
92 'Comparison operation'))
93 to_write += '%s%s' % (7 * spaces, add_option('equal', 'equal'))
94 to_write += '%s%s' % (7 * spaces, add_option('not', 'not'))
95 to_write += '%s%s' % (7 * spaces, add_option('range', 'range'))
96 to_write += '%s</param>\n' % (6 * spaces)
97
98 to_write += '%s<when value="equal">\n' % (6 * spaces)
99 to_write += '%s<param name="query_text" type="text" label="Searched term"/>\n' % (7 * spaces)
100 to_write += '%s</when>\n' % (6 * spaces)
101
102 to_write += '%s<when value="not">\n' % (6 * spaces)
103 to_write += '%s<param name="query_text" type="text" label="Searched term"/>\n' % (7 * spaces)
104 to_write += '%s<param name="not_query_text" type="text" label="Limiting term"/>\n' % (7 * spaces)
105 to_write += '%s</when>\n' % (6 * spaces)
106
107 to_write += '%s<when value="range">\n' % (6 * spaces)
108 to_write += '%s<param name="min" type="text" label="From"/>\n' % (7 * spaces)
109 to_write += '%s<param name="max" type="text" label="To"/>\n' % (
110 7 * spaces)
111 to_write += '%s</when>\n' % (6 * spaces)
112
113 to_write += '%s</conditional>\n' % (5 * spaces)
114
115 to_write += '%s</repeat>\n' % (4 * spaces)
116
117 to_write += '%s</when>\n\n' % (3 * spaces)
118
119 to_write += '%s</conditional>\n' % (2 * spaces)
120 to_write += '%s</xml>\n' % (spaces)
121
122 to_write += '%s<xml name="citations">\n' % (spaces)
123 to_write += '%s<citations>\n' % (2 * spaces)
124 to_write += '%s<citation type="doi">10.1093/bib/bbp065</citation>\n' % (3 * spaces)
125 to_write += '%s<citation type="doi">10.1093/nar/gkv316</citation>\n' % (3 * spaces)
126 to_write += '%s</citations>\n' % (2 * spaces)
127 to_write += '%s</xml>\n' % (spaces)
128
129 to_write += '</macros>\n'
130
131 with open(macros_filepath, 'w') as macros_file:
132 macros_file.write(to_write)
133
134
135 def generate_macros():
136 domains_fields = ebeye_urllib.getDomainHierarchy()
137 write_macros_file('macros.xml', domains_fields)
138
139
140 if __name__ == '__main__':
141 generate_macros()