cwl_utils.cwl_v1_0_expression_refactor ====================================== .. py:module:: cwl_utils.cwl_v1_0_expression_refactor .. autoapi-nested-parse:: CWL Expression refactoring tool for CWL v1.0 . Attributes ---------- .. autoapisummary:: cwl_utils.cwl_v1_0_expression_refactor.EMPTY_FILE cwl_utils.cwl_v1_0_expression_refactor.TOPLEVEL_SF_EXPR_ERROR cwl_utils.cwl_v1_0_expression_refactor.TOPLEVEL_FORMAT_EXPR_ERROR Functions --------- .. autoapisummary:: cwl_utils.cwl_v1_0_expression_refactor.expand_stream_shortcuts cwl_utils.cwl_v1_0_expression_refactor.escape_expression_field cwl_utils.cwl_v1_0_expression_refactor.clean_type_ids cwl_utils.cwl_v1_0_expression_refactor.get_expression cwl_utils.cwl_v1_0_expression_refactor.etool_to_cltool cwl_utils.cwl_v1_0_expression_refactor.traverse cwl_utils.cwl_v1_0_expression_refactor.load_step cwl_utils.cwl_v1_0_expression_refactor.generate_etool_from_expr cwl_utils.cwl_v1_0_expression_refactor.get_input_for_id cwl_utils.cwl_v1_0_expression_refactor.find_expressionLib cwl_utils.cwl_v1_0_expression_refactor.replace_expr_with_etool cwl_utils.cwl_v1_0_expression_refactor.replace_wf_input_ref_with_step_output cwl_utils.cwl_v1_0_expression_refactor.empty_inputs cwl_utils.cwl_v1_0_expression_refactor.example_input cwl_utils.cwl_v1_0_expression_refactor.process_workflow_inputs_and_outputs cwl_utils.cwl_v1_0_expression_refactor.process_workflow_reqs_and_hints cwl_utils.cwl_v1_0_expression_refactor.process_level_reqs cwl_utils.cwl_v1_0_expression_refactor.add_input_to_process cwl_utils.cwl_v1_0_expression_refactor.traverse_CommandLineTool cwl_utils.cwl_v1_0_expression_refactor.rename_step_source cwl_utils.cwl_v1_0_expression_refactor.remove_JSReq cwl_utils.cwl_v1_0_expression_refactor.replace_step_clt_expr_with_etool cwl_utils.cwl_v1_0_expression_refactor.replace_clt_hintreq_expr_with_etool cwl_utils.cwl_v1_0_expression_refactor.cltool_inputs_to_etool_inputs cwl_utils.cwl_v1_0_expression_refactor.cltool_step_outputs_to_workflow_outputs cwl_utils.cwl_v1_0_expression_refactor.generate_etool_from_expr2 cwl_utils.cwl_v1_0_expression_refactor.traverse_step cwl_utils.cwl_v1_0_expression_refactor.workflow_step_to_InputParameters cwl_utils.cwl_v1_0_expression_refactor.replace_step_valueFrom_expr_with_etool cwl_utils.cwl_v1_0_expression_refactor.traverse_workflow Module Contents --------------- .. py:function:: expand_stream_shortcuts(process) Rewrite the "type: stdout" shortcut to use an explicit random filename. .. py:function:: escape_expression_field(contents) Escape sequences similar to CWL expressions or param references. .. py:function:: clean_type_ids(cwltype) Simplify type identifiers. .. py:function:: get_expression(string, inputs, self) Find and return a normalized CWL expression, if any. CWL expressions in the $() form are converted to the ${} form. .. py:function:: etool_to_cltool(etool, expressionLib = None) Convert a ExpressionTool to a CommandLineTool. .. py:function:: traverse(process, replace_etool, inside, skip_command_line1, skip_command_line2) Convert the given process and any subprocesses. .. py:function:: load_step(step, replace_etool, skip_command_line1, skip_command_line2) If the step's Process is not inline, load and process it. .. py:function:: generate_etool_from_expr(expr, target, no_inputs = False, self_type = None, extra_processes = None) Convert a CWL Expression into an ExpressionTool. .. py:function:: get_input_for_id(name, tool) Determine the CommandInputParameter for the given input name. .. py:function:: find_expressionLib(processes) Return the expressionLib from the highest priority InlineJavascriptRequirement. processes: should be in order of least important to most important (Workflow, WorkflowStep, ... CommandLineTool/ExpressionTool) .. py:function:: replace_expr_with_etool(expr, name, workflow, target, source, replace_etool = False, extra_process = None, source_type = None) Modify the given workflow, replacing the expr with an standalone ExpressionTool. .. py:function:: replace_wf_input_ref_with_step_output(workflow, name, target) Refactor all reference to a workflow input to the specified step output. .. py:function:: empty_inputs(process_or_step, parent = None) Produce a mock input object for the given inputs. .. py:function:: example_input(some_type) Produce a fake input for the given type. .. py:data:: EMPTY_FILE .. py:data:: TOPLEVEL_SF_EXPR_ERROR :value: "Input '{}'. Sorry, CWL Expressions as part of a secondaryFiles specification in a Workflow... .. py:data:: TOPLEVEL_FORMAT_EXPR_ERROR :value: "Input '{}'. Sorry, CWL Expressions as part of a format specification in a Workflow level input... .. py:function:: process_workflow_inputs_and_outputs(workflow, replace_etool) Do any needed conversions on the given Workflow's inputs and outputs. .. py:function:: process_workflow_reqs_and_hints(workflow, replace_etool) Convert any expressions in a workflow's reqs and hints. Each expression will be converted to an additional step. The converted requirement will be copied to all workflow steps that don't have that requirement type. Those affected steps will gain an additional input from the relevant synthesized expression step. .. py:function:: process_level_reqs(process, step, parent, replace_etool, skip_command_line1, skip_command_line2) Convert expressions inside a process into new adjacent steps. .. py:function:: add_input_to_process(process, name, inptype, loadingOptions) Add a new InputParameter to the given CommandLineTool. .. py:function:: traverse_CommandLineTool(clt, parent, step, replace_etool, skip_command_line1, skip_command_line2) Extract any CWL Expressions within the given CommandLineTool into sibling steps. .. py:function:: rename_step_source(workflow, old, new) Update step source names to the new name. .. py:function:: remove_JSReq(process, skip_command_line1) Since the InlineJavascriptRequirement is longer needed, remove it. .. py:function:: replace_step_clt_expr_with_etool(expr, name, workflow, target, step, replace_etool, self_name = None) Convert a step level CWL Expression to a sibling expression step. .. py:function:: replace_clt_hintreq_expr_with_etool(expr, name, workflow, target, step, replace_etool, self_name = None) Factor out an expression inside a CommandLineTool req or hint into a sibling step. .. py:function:: cltool_inputs_to_etool_inputs(tool) Copy CommandLineTool input objects into the equivalent ExpressionTool input objects. .. py:function:: cltool_step_outputs_to_workflow_outputs(cltool_step, etool_step_id, etool_out_id) Copy CommandLineTool outputs into the equivalent Workflow output parameters. Connects the outputSources for each of the new output parameters to the step they came from. .. py:function:: generate_etool_from_expr2(expr, target, inputs, self_name = None, process = None, extra_processes = None) Generate an ExpressionTool to achieve the same result as the given expression. .. py:function:: traverse_step(step, parent, replace_etool, skip_command_line1, skip_command_line2) Process the given WorkflowStep. .. py:function:: workflow_step_to_InputParameters(step_ins, parent, except_in_id) Create InputParameters to match the given WorkflowStep inputs. .. py:function:: replace_step_valueFrom_expr_with_etool(expr, name, workflow, target, step, step_inp, original_process, original_step_ins, source, replace_etool, source_type = None) Replace a WorkflowStep level 'valueFrom' expression with a sibling ExpressionTool step. .. py:function:: traverse_workflow(workflow, replace_etool, skip_command_line1, skip_command_line2) Traverse a workflow, processing each step.