Esempio n. 1
0
    def test_expression_default(self):

        wf = WorkflowBuilder("test_expression_defaults")
        wf.input("inp", Optional[str])

        wf.step(
            "echo",
            EchoTestTool(inp="Hello, " +
                         If(IsDefined(wf.inp), wf.inp, ", Michael!")),
        )

        wf.output("out", source=wf.echo)

        wf.translate("cwl")
Esempio n. 2
0
    def test_workflow_string_not_null(self):
        w = WorkflowBuilder("wf")
        w.input("inp", Optional[str])
        w.output("out", source=w.inp.assert_not_null())

        cwltool = w.translate("cwl", allow_empty_container=True, to_console=False)[0]
        print(cwltool)
Esempio n. 3
0
    def test_with_str_default(self):
        w = WorkflowBuilder("wf")
        w.input("inp", str, default="hello")
        w.output("out", source=w.inp)
        out, _, _ = w.translate("wdl", to_console=False)
        expected = """\
version development



workflow wf {
  input {
    String? inp
  }
  output {
    String out = select_first([inp, "hello"])
  }
}"""
        self.assertEqual(expected, out)
Esempio n. 4
0
    def test_with_int_default(self):
        w = WorkflowBuilder("wf")
        w.input("inp", int, default=0)
        w.output("out", source=w.inp)
        out, _, _ = w.translate("wdl", to_console=False)
        expected = """\
version development



workflow wf {
  input {
    Int? inp
  }
  output {
    Int out = select_first([inp, 0])
  }
}"""
        self.assertEqual(expected, out)
Esempio n. 5
0
    def test_simple(self):
        w = WorkflowBuilder("wf")
        w.input("inp", str)
        w.output("out", source=w.inp)
        out, _, _ = w.translate("wdl", to_console=False)
        expected = """\
version development



workflow wf {
  input {
    String inp
  }
  output {
    String out = inp
  }
}"""
        self.assertEqual(expected, out)
Esempio n. 6
0
    def test_array_step_input(self):
        wf = WorkflowBuilder("cwl_test_array_step_input")
        wf.input("inp1", Optional[str])
        wf.input("inp2", Optional[str])

        wf.step(
            "print",
            ArrayTestTool(
                inps=[
                    If(IsDefined(wf.inp1), wf.inp1, "default1"),
                    If(IsDefined(wf.inp2), wf.inp2 + "_suffix", ""),
                ]
            ),
        ),

        wf.output("out", source=wf.print)

        ret, _, _ = wf.translate("cwl", allow_empty_container=True, to_console=False)
        self.maxDiff = None
        self.assertEqual(cwl_arraystepinput, ret)
Esempio n. 7
0
    def test_basic(self):
        w = WorkflowBuilder("wb")
        w.input("inp", str)
        w.step("echo", SingleTestTool(inputs=w.inp))
        w.step("echo_2", SingleTestTool(inputs=w.inp))

        wf, _, _ = w.translate(
            "wdl",
            to_console=False,
            with_resource_overrides=True,
            allow_empty_container=True,
        )
        _tooldef = """\
workflow wb {
  input {
    String inp
    Int? echo_runtime_memory
    Int? echo_runtime_cpu
    String echo_runtime_disks
    Int? echo_2_runtime_memory
    Int? echo_2_runtime_cpu
    String echo_2_runtime_disks
  }
  call T.TestStepTool as echo {
    input:
      inputs=inp,
      runtime_memory=echo_runtime_memory,
      runtime_cpu=echo_runtime_cpu,
      runtime_disks=echo_runtime_disks
  }
  call T.TestStepTool as echo_2 {
    input:
      inputs=inp,
      runtime_memory=echo_2_runtime_memory,
      runtime_cpu=echo_2_runtime_cpu,
      runtime_disks=echo_2_runtime_disks
  }
}"""
        self.assertEqual(_tooldef, "\n".join(wf.split("\n")[4:]))
Esempio n. 8
0
    @staticmethod
    def base_command():
        return "echo"  # non functional tool

    def inputs(self) -> List[ToolInput]:
        return [ToolInput("inp", DataTypeWithSecondary())]

    def outputs(self) -> List[ToolOutput]:
        return [
            ToolOutput("out",
                       DataTypeWithSecondary(),
                       glob=InputSelector("inp"))
        ]


if __name__ == "__main__":
    w = WorkflowBuilder("test_workflow")

    w.input("inp", DataTypeWithSecondary)
    w.step("stp", ToolThatAcceptsAndReturnsSecondary(inp=w.inp))
    w.output("out", source=w.stp)
    w.translate("wdl")

    w2 = WorkflowBuilder("scattered_test_workflow")
    w2.input("inp", Array(DataTypeWithSecondary), default=["path/to/file.ext"])
    w2.step("stp",
            ToolThatAcceptsAndReturnsSecondary(inp=w2.inp),
            scatter="inp")
    w2.output("out", source=w2.stp)
    w2.translate("wdl")
Esempio n. 9
0
from janis_core import (
    WorkflowBuilder,
    Array,
    String,
    ScatterDescription,
    StringFormatter,
)
from janis_unix import Echo

w = WorkflowBuilder("scatterlabel_test")

w.input("inps", Array(String), value=["test1,1", "test2,2", "test3,3"])

w.step(
    "print",
    Echo(inp=w.inps),
    scatter=ScatterDescription(["inp"], labels=["Printing 1", "Printing 2"]),
)

w.output("out", source=w.print, extension=".csv")

if __name__ == "__main__":
    w.translate("cwl")