Skip to content

Commit d660c00

Browse files
committed
Merge branch 'main' into taskvine_fix
2 parents 203f238 + dbd3a39 commit d660c00

5 files changed

Lines changed: 356 additions & 95 deletions

File tree

docs/source/generating_workflow_benchmarks.rst

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,24 @@ workflow benchmark for running with Nextflow::
132132
benchmark.create_benchmark(pathlib.Path("/tmp/"), cpu_work=100, data=10, percent_cpu=0.6)
133133

134134
# generate a Nextflow workflow
135-
translator = NextflowTranslator(benchmark.workflow)
136-
translator.translate(output_folder=pathlib.Path("./nextflow-wf/""))
135+
translator = NextflowTranslator(
136+
benchmark.workflow,
137+
use_subworkflows=False,
138+
max_tasks_per_subworkflow=1000,
139+
)
140+
translator.translate(output_folder=pathlib.Path("./nextflow-wf/"))
141+
142+
If you want to split large workflows across multiple Nextflow module files, enable
143+
subworkflows and set the maximum number of tasks per module. This produces a
144+
``modules/`` directory plus a top-level ``workflow.nf`` that includes and runs
145+
the modules sequentially::
146+
147+
translator = NextflowTranslator(
148+
benchmark.workflow,
149+
use_subworkflows=True,
150+
max_tasks_per_subworkflow=250,
151+
)
152+
translator.translate(output_folder=pathlib.Path("./nextflow-wf/"))
137153

138154
.. warning::
139155

tests/requirements.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
pytest
2+
pytest-cov
3+
docker

tests/translators_loggers/test_translators_loggers.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ def _additional_setup_swiftt(container):
105105
"dask": noop,
106106
"parsl": noop,
107107
"nextflow": noop,
108+
"nextflow_subworkflow": noop,
108109
"airflow": noop,
109110
"bash": noop,
110111
"taskvine": _additional_setup_taskvine,
@@ -203,6 +204,7 @@ def run_workflow_swiftt(container, num_tasks, str_dirpath):
203204
"dask": run_workflow_dask,
204205
"parsl": run_workflow_parsl,
205206
"nextflow": run_workflow_nextflow,
207+
"nextflow_subworkflow": run_workflow_nextflow,
206208
"airflow": run_workflow_airflow,
207209
"bash": run_workflow_bash,
208210
"taskvine": run_workflow_taskvine,
@@ -216,6 +218,7 @@ def run_workflow_swiftt(container, num_tasks, str_dirpath):
216218
"dask": DaskTranslator,
217219
"parsl": ParslTranslator,
218220
"nextflow": NextflowTranslator,
221+
"nextflow_subworkflow": NextflowTranslator,
219222
"airflow": AirflowTranslator,
220223
"bash": BashTranslator,
221224
"taskvine": TaskVineTranslator,
@@ -235,6 +238,7 @@ class TestTranslators:
235238
"dask",
236239
"parsl",
237240
"nextflow",
241+
"nextflow_subworkflow",
238242
"airflow",
239243
"bash",
240244
"taskvine",
@@ -256,7 +260,10 @@ def test_translator(self, backend) -> None:
256260

257261
# Perform the translation
258262
sys.stderr.write(f"\n[{backend}] Translating workflow...\n")
259-
translator = translator_classes[backend](benchmark.workflow)
263+
if backend == "nextflow_subworkflow":
264+
translator = translator_classes[backend](benchmark.workflow, use_subworkflows=True, max_tasks_per_subworkflow=10)
265+
else:
266+
translator = translator_classes[backend](benchmark.workflow)
260267
translator.translate(output_folder=dirpath)
261268

262269
# # Make the directory that holds the translation world-writable,
@@ -266,7 +273,7 @@ def test_translator(self, backend) -> None:
266273
# os.chmod(dirpath, 0o777)
267274

268275
# Start the Docker container
269-
container = _start_docker_container(backend, str_dirpath, str_dirpath, str_dirpath + "bin/")
276+
container = _start_docker_container(backend if backend != "nextflow_subworkflow" else "nextflow", str_dirpath, str_dirpath, str_dirpath + "bin/")
270277

271278
# Do whatever necessary setup
272279
additional_setup_methods[backend](container)

0 commit comments

Comments
 (0)