Mercurial > repos > shellac > guppy_basecaller
diff env/lib/python3.7/site-packages/planemo/training/tool_input.py @ 5:9b1c78e6ba9c draft default tip
"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
author | shellac |
---|---|
date | Mon, 01 Jun 2020 08:59:25 -0400 |
parents | 79f47841a781 |
children |
line wrap: on
line diff
--- a/env/lib/python3.7/site-packages/planemo/training/tool_input.py Thu May 14 16:47:39 2020 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,231 +0,0 @@ -"""Module contains code for the ToolInput class, dealing with the description of tool in workflow and XML.""" - -from planemo import templates -from planemo.io import info - - -INPUT_PARAM = """ ->{{space}}- *"{{param_label}}"*: `{{param_value}}` -""" - -INPUT_FILE_TEMPLATE = """ ->{{space}}- {{ '{%' }} icon {{icon}} {{ '%}' }} *"{{input_name}}"*: {{input_value}} -""" - -INPUT_SECTION = """ ->{{space}}- In *"{{section_label}}"*: -""" - -INPUT_ADD_REPEAT = """ ->{{space}}- {{ '{%' }} icon param-repeat {{ '%}' }} *"Insert {{repeat_label}}"* -""" - -SPACE = ' ' - - -class ToolInput(object): - """Class to describe a tool input / parameter and its value from a workflow.""" - - def __init__(self, tool_inp_desc, wf_param_values, wf_steps, level, should_be_there=False, force_default=False): - """Init an instance of ToolInput.""" - self.name = tool_inp_desc['name'] - if 'type' not in tool_inp_desc: - raise ValueError("No type for the parameter %s" % tool_inp_desc['name']) - self.type = tool_inp_desc['type'] - self.tool_inp_desc = tool_inp_desc - self.level = level - self.wf_param_values = wf_param_values - self.wf_steps = wf_steps - self.formatted_desc = '' - self.force_default = force_default - - if self.name not in self.wf_param_values: - if not should_be_there: - info("%s not in workflow" % self.name) - else: - raise ValueError("%s not in workflow" % (self.name)) - else: - self.wf_param_values = self.wf_param_values[self.name] - - def get_formatted_inputs(self): - """Format the inputs of a step.""" - inputlist = '' - inps = [] - if isinstance(self.wf_param_values, list): - # multiple input (not collection) - icon = 'param-files' - for i in self.wf_param_values: - inps.append('`%s` %s' % ( - i['output_name'], - get_input_tool_name(i['id'], self.wf_steps))) - else: - inp = self.wf_param_values - if 'id' in inp: - # sinle input or collection - inp_type = self.wf_steps[str(inp['id'])]['type'] - if 'collection' in inp_type: - icon = 'param-collection' - else: - icon = 'param-file' - inps = ['`%s` %s' % ( - inp['output_name'], - get_input_tool_name(inp['id'], self.wf_steps))] - if len(inps) > 0: - inputlist += templates.render(INPUT_FILE_TEMPLATE, **{ - "icon": icon, - "input_name": self.tool_inp_desc['label'], - "input_value": ', '.join(inps), - "space": SPACE * self.level - }) - return inputlist - - def get_lower_param_desc(self): - """Get the formatted description of the paramaters in the 'inputs' of the tool description.""" - sub_param_desc = '' - for inp in self.tool_inp_desc["inputs"]: - tool_inp = ToolInput( - inp, - self.wf_param_values, - self.wf_steps, - self.level + 1) - sub_param_desc += tool_inp.get_formatted_desc() - return sub_param_desc - - def get_formatted_section_desc(self): - """Format the description (label and value) for parameters in a section.""" - section_paramlist = '' - sub_param_desc = self.get_lower_param_desc() - if sub_param_desc != '': - section_paramlist += templates.render(INPUT_SECTION, **{ - 'space': SPACE * self.level, - 'section_label': self.tool_inp_desc['title']}) - section_paramlist += sub_param_desc - return section_paramlist - - def get_formatted_conditional_desc(self): - """Format the description (label and value) for parameters in a conditional.""" - conditional_paramlist = '' - # Get conditional parameter - inp = ToolInput( - self.tool_inp_desc['test_param'], - self.wf_param_values, - self.wf_steps, - self.level, - should_be_there=True, - force_default=True) - conditional_paramlist = inp.get_formatted_desc() - cond_param = inp.wf_param_values - - # Get parameters in the when and their values - tmp_tool_inp_desc = self.tool_inp_desc - for case in tmp_tool_inp_desc['cases']: - if case['value'] == cond_param and len(case['inputs']) > 0: - self.tool_inp_desc = case - conditional_paramlist += self.get_lower_param_desc() - self.tool_inp_desc = tmp_tool_inp_desc - return conditional_paramlist - - def get_formatted_repeat_desc(self): - """Format the description (label and value) for parameters in a repeat.""" - repeat_paramlist = '' - if self.wf_param_values != '[]': - tool_inp = {} - for inp in self.tool_inp_desc["inputs"]: - tool_inp.setdefault(inp['name'], inp) - tmp_wf_param_values = self.wf_param_values - cur_level = self.level - for ind, param in enumerate(tmp_wf_param_values): - self.wf_param_values = param - self.level = cur_level + 1 - paramlist_in_repeat = self.get_lower_param_desc() - if paramlist_in_repeat != '': - # add first click - repeat_paramlist += templates.render(INPUT_ADD_REPEAT, **{ - 'space': SPACE * (self.level), - 'repeat_label': self.tool_inp_desc['title']}) - repeat_paramlist += paramlist_in_repeat - self.level = cur_level - self.wf_param_values = tmp_wf_param_values - - repeat_desc = '' - if repeat_paramlist != '': - repeat_desc += templates.render(INPUT_SECTION, **{ - 'space': SPACE * self.level, - 'section_label': self.tool_inp_desc['title']}) + repeat_paramlist - return repeat_desc - - def get_formatted_other_param_desc(self): - """Get value of a 'simple' parameter if different from the default value, None otherwise.""" - param_value = None - if self.tool_inp_desc['value'] == self.wf_param_values and not self.force_default: - param_value = None - elif self.type == 'boolean': - if bool(self.tool_inp_desc['value']) == self.wf_param_values: - param_value = None - else: - param_value = 'Yes' if self.wf_param_values else 'No' - elif self.type == 'select': - param_values = [] - for opt in self.tool_inp_desc['options']: - if opt[1] == self.wf_param_values: - param_values.append(opt[0]) - param_value = ', '.join(param_values) - elif self.type == 'data_column': - param_value = "c%s" % self.wf_param_values - else: - param_value = self.wf_param_values - - param_desc = '' - if param_value is not None: - param_desc = templates.render(INPUT_PARAM, **{ - 'space': SPACE * self.level, - 'param_label': self.tool_inp_desc['label'], - 'param_value': param_value}) - return param_desc - - def get_formatted_desc(self): - """Get the formatted description (ready for hands-on tutorial) of the parameter.""" - if self.wf_param_values: - if self.type == 'data' or self.type == 'data_collection': - self.formatted_desc += self.get_formatted_inputs() - elif self.type == 'section': - self.formatted_desc += self.get_formatted_section_desc() - elif self.type == 'conditional': - self.formatted_desc += self.get_formatted_conditional_desc() - elif self.type == 'repeat': - self.formatted_desc += self.get_formatted_repeat_desc() - else: - self.formatted_desc += self.get_formatted_other_param_desc() - return self.formatted_desc - - -def get_input_tool_name(step_id, steps): - """Get the string with the name of the tool that generated an input.""" - inp_provenance = '' - inp_prov_id = str(step_id) - if inp_prov_id in steps: - name = steps[inp_prov_id]['name'] - if 'Input dataset' in name: - inp_provenance = "(%s)" % name - else: - inp_provenance = "(output of **%s** {%% icon tool %%})" % name - return inp_provenance - - -def get_empty_input(): - """Get the string for an empty input.""" - return templates.render(INPUT_FILE_TEMPLATE, **{ - 'space': 1 * SPACE, - 'icon': 'param-file', - 'input_name': 'Input file', - 'input_value': 'File' - }) - - -def get_empty_param(): - """Get the string for an empty param.""" - return templates.render(INPUT_PARAM, **{ - 'space': 1 * SPACE, - 'param_label': 'Parameter', - 'param_value': 'a value' - })