Mercurial > repos > iuc > ebi_search_rest_results
diff generate_macros.py @ 0:bb7989bd88ba 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:28:20 -0500 |
parents | |
children | b6029f2c71cb |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/generate_macros.py Thu Dec 01 15:28:20 2016 -0500 @@ -0,0 +1,141 @@ +#!/usr/bin/env python3 + +import ebeye_urllib + + +def add_option(value, name, selected=False): + to_write = '<option ' + to_write += 'value="%s"' % (value) + if selected: + to_write += ' selected="true"' + to_write += '>%s' % (name) + to_write += '</option>\n' + return to_write + + +def add_select_parameter(name, label, multiple=False): + to_write = '<param ' + to_write += 'name="%s" ' % (name) + to_write += 'type="select" ' + to_write += 'label="%s" ' % (label) + if multiple: + to_write += 'multiple=\"true\"' + to_write += '>\n' + return to_write + + +def write_macros_file(macros_filepath, domains_fields): + spaces = ' ' + to_write = '<macros>\n' + + to_write += '%s<xml name="requirements">\n' % (spaces) + to_write += '%s<requirements>\n' % (2 * spaces) + to_write += '%s<requirement type="package" version="3.1.1">xmltramp2</requirement>\n' % (3 * spaces) + to_write += '%s<requirement type="package" version="1.12">urllib3</requirement>\n' % (3 * spaces) + to_write += '%s<yield/>\n' % (3 * spaces) + to_write += '%s</requirements>\n' % (2 * spaces) + to_write += '%s</xml>\n' % (spaces) + + to_write += '%s<xml name="inputs">\n' % (spaces) + + to_write += '%s<conditional name="searched_domain">\n' % (2 * spaces) + to_write += '%s%s' % (3 * spaces, add_select_parameter( + 'domain', + 'Domain to query')) + + sorted_domains = [(d, domains_fields[d]['name']) for d in domains_fields.keys()] + sorted_domains = sorted(sorted_domains, key=lambda tup: tup[1]) + for domain in sorted_domains: + to_write += '%s%s' % (4 * spaces, add_option( + domain[0], + domain[1])) + + to_write += '%s</param>\n\n' % (3 * spaces) + + for d in sorted_domains: + domain = d[0] + to_write += '%s<when value="%s">\n' % (3 * spaces, domain) + + to_write += '%s%s' % (4 * spaces, add_select_parameter( + 'fields', + 'Fields to extract', + multiple=True)) + for field in domains_fields[domain]['retrievable_fields']: + to_write += '%s%s' % (5 * spaces, add_option( + field, + field, + selected=True)) + to_write += '%s<validator type="no_options" message="Please select at least one field" />\n' % (5 * spaces) + to_write += '%s</param>\n' % (4 * spaces) + + to_write += '%s<repeat name="queries" title="Add a query">\n' % ( + 4 * spaces) + + to_write += '%s%s' % (5 * spaces, add_select_parameter( + 'combination_operation', + 'Combination operation')) + to_write += '%s%s' % (6 * spaces, add_option('AND', 'AND')) + to_write += '%s%s' % (6 * spaces, add_option('OR', 'OR')) + to_write += '%s%s' % (6 * spaces, add_option('NOT', 'NOT')) + to_write += '%s</param>\n' % (5 * spaces) + + to_write += '%s%s' % (5 * spaces, add_select_parameter( + 'query_field', + 'Fields')) + for field in domains_fields[domain]['searchable_fields']: + to_write += '%s%s' % (6 * spaces, add_option(field, field)) + to_write += '%s</param>\n' % (5 * spaces) + + to_write += '%s<conditional name="comp_operation">\n' % (5 * spaces) + to_write += '%s%s' % (6 * spaces, add_select_parameter( + 'operation', + 'Comparison operation')) + to_write += '%s%s' % (7 * spaces, add_option('equal', 'equal')) + to_write += '%s%s' % (7 * spaces, add_option('not', 'not')) + to_write += '%s%s' % (7 * spaces, add_option('range', 'range')) + to_write += '%s</param>\n' % (6 * spaces) + + to_write += '%s<when value="equal">\n' % (6 * spaces) + to_write += '%s<param name="query_text" type="text" label="Searched term"/>\n' % (7 * spaces) + to_write += '%s</when>\n' % (6 * spaces) + + to_write += '%s<when value="not">\n' % (6 * spaces) + to_write += '%s<param name="query_text" type="text" label="Searched term"/>\n' % (7 * spaces) + to_write += '%s<param name="not_query_text" type="text" label="Limiting term"/>\n' % (7 * spaces) + to_write += '%s</when>\n' % (6 * spaces) + + to_write += '%s<when value="range">\n' % (6 * spaces) + to_write += '%s<param name="min" type="text" label="From"/>\n' % (7 * spaces) + to_write += '%s<param name="max" type="text" label="To"/>\n' % ( + 7 * spaces) + to_write += '%s</when>\n' % (6 * spaces) + + to_write += '%s</conditional>\n' % (5 * spaces) + + to_write += '%s</repeat>\n' % (4 * spaces) + + to_write += '%s</when>\n\n' % (3 * spaces) + + to_write += '%s</conditional>\n' % (2 * spaces) + to_write += '%s</xml>\n' % (spaces) + + to_write += '%s<xml name="citations">\n' % (spaces) + to_write += '%s<citations>\n' % (2 * spaces) + to_write += '%s<citation type="doi">10.1093/bib/bbp065</citation>\n' % (3 * spaces) + to_write += '%s<citation type="doi">10.1093/nar/gkv316</citation>\n' % (3 * spaces) + to_write += '%s</citations>\n' % (2 * spaces) + to_write += '%s</xml>\n' % (spaces) + + to_write += '</macros>\n' + + with open(macros_filepath, 'w') as macros_file: + macros_file.write(to_write) + + +def generate_macros(): + domains_fields = ebeye_urllib.getDomainHierarchy() + write_macros_file('macros.xml', domains_fields) + + +if __name__ == '__main__': + generate_macros()