def test_readme_task(self):
        t = Task("task_name")
        t.inputs.append(Input(WdlType.parse_type("String"), "taskGreeting"))
        # command in next section
        t.outputs.append(
            Output(WdlType.parse_type("File"), "standardOut", "stdout()"))

        command = Task.Command("echo")
        command.inputs.append(
            Task.Command.CommandInput(
                "taskGreeting",
                optional=False,
                position=None,
                prefix="-a",
                separate_value_from_prefix=True,
                default=None,
            ))
        command.inputs.append(
            Task.Command.CommandInput(
                "otherInput",
                optional=True,
                position=2,
                prefix="optional-param=",
                separate_value_from_prefix=False,
                default=None,
            ))

        # t is the task
        t.command = command
        print(t.get_string())
    def test_readme(self):
        w = Workflow("workflow_name")

        w.imports.append(Workflow.WorkflowImport("tool_file", ""))
        w.inputs.append(Input(WdlType.parse_type("String"), "inputGreeting"))

        inputs_map = {"taskGreeting": "inputGreeting"}
        w.calls.append(
            WorkflowCall("Q.namspaced_task_identifier", "task_alias",
                         inputs_map))
        w.outputs.append(
            Output(WdlType.parse_type("File"), "standardOut",
                   "task_alias.standardOut"))

        print(w.get_string())
    def test_simple_task(self):
        # Task based on: https://github.com/openwdl/wdl/blob/master/versions/draft-2/SPEC.md#introduction
        t = Task("hello",
                 runtime=Task.Runtime(docker="broadinstitute/my_image"))
        t.inputs.extend([
            Input(WdlType.parse_type("String"), "pattern"),
            Input(WdlType.parse_type("File"), "in"),
        ])

        t.outputs.append(
            Output(WdlType.parse_type("Array[String]"), "matches",
                   "read_lines(stdout())"))

        t.command = Task.Command(
            "egrep",
            inputs=[Task.Command.CommandInput.from_input(i) for i in t.inputs])

        print(t.get_string())
        return t
Exemple #4
0
 def type_to_wdl(cls,
                 typ: cli_types.CliType,
                 optional: bool = False) -> WdlType:
     if isinstance(typ, cli_types.CliString):
         return WdlType(PrimitiveType(PrimitiveType.kString),
                        optional=optional)
     elif isinstance(typ, cli_types.CliFloat):
         return WdlType(PrimitiveType(PrimitiveType.kFloat),
                        optional=optional)
     elif isinstance(typ, cli_types.CliBoolean):
         return WdlType(PrimitiveType(PrimitiveType.kBoolean),
                        optional=optional)
     elif isinstance(typ, cli_types.CliInteger):
         return WdlType(PrimitiveType(PrimitiveType.kInt),
                        optional=optional)
     elif isinstance(typ, cli_types.CliFile):
         return WdlType(PrimitiveType(PrimitiveType.kFile),
                        optional=optional)
     elif isinstance(typ, cli_types.CliDir):
         return WdlType(PrimitiveType(PrimitiveType.kDirectory),
                        optional=optional)
     elif isinstance(typ, cli_types.CliTuple):
         if typ.homogenous:
             return WdlType(
                 ArrayType(cls.type_to_wdl(typ.values[0]),
                           requires_multiple=not optional))
         else:
             return WdlType(
                 ArrayType(
                     cls.type_to_wdl(lowest_common_type(typ.values)),
                     requires_multiple=not optional,
                 ))
     elif isinstance(typ, cli_types.CliList):
         return WdlType(
             ArrayType(cls.type_to_wdl(typ.value),
                       requires_multiple=not optional))
     elif isinstance(typ, cli_types.CliEnum):
         return WdlType(PrimitiveType(PrimitiveType.kString),
                        optional=optional)
     else:
         return WdlType(PrimitiveType(PrimitiveType.kString),
                        optional=optional)
Exemple #5
0
 def wdl(self, has_default=False) -> WdlType:
     qm = self._question_mark_if_optional(has_default)
     return WdlType.parse_type(
         NativeTypes.map_to_wdl(self.primitive()) + qm)