Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simplify WDL Toil job graphs #4524

Merged
merged 29 commits into from
Aug 2, 2023
Merged
Show file tree
Hide file tree
Changes from 19 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
a470391
Add a node for doing a bunch of decls in a row which are the only thi…
adamnovak Jun 8, 2023
aba6a9d
Remove custom topological sort for WDL in favor of Graphlib
adamnovak Jun 8, 2023
2f629db
Get test_miniwdl_self_test passing on mac with DOCKER_HOST set
adamnovak Jun 8, 2023
a8b6869
Fix detection of nonexistent inputs
adamnovak Jun 8, 2023
d7664ed
Hook up node coalescing
adamnovak Jun 15, 2023
21d49dc
Make the leaf Toil jobs the ones that are only leaf nodes
adamnovak Jun 22, 2023
db3a353
Implement a postprocessing mini-language
adamnovak Jun 22, 2023
2def6df
Fix syntax
adamnovak Jun 22, 2023
ebffa60
Fix enough semantics that evaluation can actually fail
adamnovak Jun 22, 2023
38749c0
Merge remote-tracking branch 'upstream/master' into issues/4465-multi…
adamnovak Jul 6, 2023
4f825a1
Get the md5sum test working
adamnovak Jul 6, 2023
ea9b77f
Handle workflows with no body jobs
adamnovak Jul 6, 2023
b6cfd13
Actually populate visited set, and fix MyPy
adamnovak Jul 6, 2023
390eac4
Add missing super run()
adamnovak Jul 11, 2023
88d94ce
Merge remote-tracking branch 'upstream/master' into issues/4465-multi…
adamnovak Jul 20, 2023
6bbd376
Quiet debugging
adamnovak Jul 20, 2023
ac28374
Restrict Docker CUDA test to Docker
adamnovak Jul 20, 2023
6fd0908
Merge remote-tracking branch 'upstream/master' into issues/4465-multi…
adamnovak Jul 20, 2023
eb1f97f
Merge branch 'master' into issues/4465-multi-wdl
adamnovak Jul 24, 2023
e1b4842
Merge branch 'master' into issues/4465-multi-wdl
DailyDreaming Jul 25, 2023
ddc1f4d
Fix spelling
adamnovak Jul 27, 2023
e67eda2
Add testing for the decl coalescing logic
adamnovak Jul 27, 2023
c539c0e
Improve test comments
adamnovak Jul 27, 2023
bb7e8db
Merge remote-tracking branch 'upstream/issues/4465-multi-wdl' into is…
adamnovak Jul 27, 2023
782128d
Merge remote-tracking branch 'upstream/master' into issues/4465-multi…
adamnovak Jul 27, 2023
1b99bb8
Merge branch 'master' into issues/4465-multi-wdl
DailyDreaming Jul 27, 2023
7e6e896
Properly exclude dependencies on WDL nodes in the same Toil job
adamnovak Aug 1, 2023
2173e0a
Merge remote-tracking branch 'upstream/master' into issues/4465-multi…
adamnovak Aug 1, 2023
bdd2385
Stop insisting the Flatcar feeds be up
adamnovak Aug 2, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions requirements-wdl.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
miniwdl==1.10.0
wdlparse==0.1.0
graphlib-backport==1.0 ; python_version < '3.9'
2 changes: 1 addition & 1 deletion src/toil/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ def prepare_restart(self) -> None:
# auto-generated and point to a temp directory that could no longer
# exist and that can't safely be re-made.
self.write_messages = None


def setOptions(self, options: Namespace) -> None:
"""Creates a config object from the options object."""
Expand Down
2 changes: 1 addition & 1 deletion src/toil/jobStores/aws/jobStore.py
Original file line number Diff line number Diff line change
Expand Up @@ -757,7 +757,7 @@ def bucket_retry_predicate(error):
bucket_tagging.put(Tagging={'TagSet': flat_tags})

# Configure bucket so that we can make objects in
# it public, which was the historical default.
# it public, which was the historical default.
enable_public_objects(bucket_name)
elif block:
raise
Expand Down
2 changes: 1 addition & 1 deletion src/toil/test/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -578,7 +578,7 @@ def needs_docker(test_item: MT) -> MT:
return test_item
else:
return unittest.skip("Install docker to include this test.")(test_item)

def needs_singularity(test_item: MT) -> MT:
"""
Use as a decorator before test classes or methods to only run them if
Expand Down
14 changes: 7 additions & 7 deletions src/toil/test/wdl/wdltoil_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

import pytest

from toil.test import ToilTest, needs_docker, needs_docker_cuda, needs_google_storage, needs_java, needs_singularity_or_docker, slow
from toil.test import ToilTest, needs_docker_cuda, needs_google_storage, needs_java, needs_singularity_or_docker, slow
from toil.version import exactPython
# Don't import the test case directly or pytest will test it again.
import toil.test.wdl.toilwdlTest
Expand Down Expand Up @@ -79,16 +79,16 @@ def setUpClass(cls) -> None:
"""Runs once for all tests."""
cls.base_command = [exactPython, '-m', 'toil.wdl.wdltoil']

# We inherit a testMD5sum but it is going to need Singularity and not
# Docker now. And also needs to have a WDL 1.0+ WDL file. So we replace it.
# We inherit a testMD5sum but it is going to need Singularity or Docker
# now. And also needs to have a WDL 1.0+ WDL file. So we replace it.
@needs_singularity_or_docker
def testMD5sum(self):
"""Test if Toil produces the same outputs as known good outputs for WDL's
GATK tutorial #1."""
wdl = os.path.abspath('src/toil/test/wdl/md5sum/md5sum.1.0.wdl')
json_file = os.path.abspath('src/toil/test/wdl/md5sum/md5sum.json')

result_json = subprocess.check_output(self.base_command + [wdl, json_file, '-o', self.output_dir, '--logDebug'])
result_json = subprocess.check_output(self.base_command + [wdl, json_file, '-o', self.output_dir, '--logDebug', '--retryCount=0'])
result = json.loads(result_json)

assert 'ga4ghMd5.value' in result
Expand All @@ -114,7 +114,7 @@ def test_miniwdl_self_test(self):
wdl_file = os.path.abspath('src/toil/test/wdl/miniwdl_self_test/self_test.wdl')
json_file = os.path.abspath('src/toil/test/wdl/miniwdl_self_test/inputs.json')

result_json = subprocess.check_output(self.base_command + [wdl_file, json_file, '-o', self.output_dir, '--outputDialect', 'miniwdl'])
result_json = subprocess.check_output(self.base_command + [wdl_file, json_file, '--logDebug', '-o', self.output_dir, '--outputDialect', 'miniwdl'])
result = json.loads(result_json)

# Expect MiniWDL-style output with a designated "dir"
Expand All @@ -141,7 +141,7 @@ def test_miniwdl_self_test(self):
@slow
@needs_docker_cuda
def test_giraffe_deepvariant(self):
"""Test if Giraffe and CPU DeepVariant run. This could take 25 minutes."""
"""Test if Giraffe and GPU DeepVariant run. This could take 25 minutes."""
# TODO: enable test if nvidia-container-runtime and Singularity are installed but Docker isn't.

json_dir = self._createTempDir()
Expand Down Expand Up @@ -184,7 +184,7 @@ def test_giraffe_deepvariant(self):
@slow
@needs_singularity_or_docker
def test_giraffe(self):
"""Test if Giraffe runs. This could take 12 minutes. Also we scale it down."""
"""Test if Giraffe runs. This could take 12 minutes. Also we scale it down but it still demands lots of memory."""
# TODO: enable test if nvidia-container-runtime and Singularity are installed but Docker isn't.

json_dir = self._createTempDir()
Expand Down
Loading