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")
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)
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)
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)
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)
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)
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:]))
@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")
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")