Skip to content

Commit

Permalink
feat: ✨ Auto generate rerun script for relabeling step of segment blo…
Browse files Browse the repository at this point in the history
…ckwise
  • Loading branch information
rhoadesScholar committed Apr 17, 2024
1 parent e41a9a3 commit 44c0b20
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 1 deletion.
40 changes: 40 additions & 0 deletions dacapo/blockwise/scheduler.py
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,47 @@ def segment_blockwise(
if success:
shutil.rmtree(tmpdir, ignore_errors=True)
else:
# Write a relabel script to tmpdir
output_container = kwargs["output_array_identifier"].container
output_dataset = kwargs["output_array_identifier"].dataset
out_string = "from dacapo.blockwise import DaCapoBlockwiseTask\n"
out_string += (
"from dacapo.store.local_array_store import LocalArrayIdentifier\n"
)
out_string += "import daisy\n"
out_string += "from funlib.geometry import Roi, Coordinate\n"
out_string += "from upath import UPath as Path\n"
out_string += f"output_array_identifier = LocalArrayIdentifier(Path({output_container}), {output_dataset})\n"
out_string += (
f"total_roi = Roi({total_roi.get_begin()}, {total_roi.get_shape()})\n"
)
out_string += (
f"read_roi = Roi({read_roi.get_begin()}, {read_roi.get_shape()})\n"
)
out_string += (
f"write_roi = Roi({write_roi.get_begin()}, {write_roi.get_shape()})\n"
)
out_string += "task = DaCapoBlockwiseTask(\n"
out_string += f' "{str(Path(Path(dacapo.blockwise.__file__).parent, "relabel_worker.py"))}"),\n'
out_string += " total_roi,\n"
out_string += " read_roi,\n"
out_string += " write_roi,\n"
out_string += f" {num_workers},\n"
out_string += f" {max_retries},\n"
out_string += f" {timeout},\n"
out_string += f" tmpdir={tmpdir},\n"
out_string += f" output_array_identifier=output_array_identifier,\n"
out_string += ")\n"
out_string += "success = daisy.run_blockwise([task])\n"
out_string += "if success:\n"
out_string += f" shutil.rmtree({tmpdir}, ignore_errors=True)\n"
out_string += "else:\n"
out_string += ' print("Relabeling failed")\n'
with open(Path(tmpdir, "relabel.py"), "w") as f:
f.write(out_string)
raise RuntimeError(
f"Blockwise segmentation failed. Can rerun with merge files stored at:\n\t{tmpdir}"
f"Use read_roi: {read_roi} and write_roi: {write_roi} to rerun."
f"Or simply run the script at {Path(tmpdir, 'relabel.py')}"
)
return success
1 change: 0 additions & 1 deletion dacapo/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import click
import logging
from funlib.geometry import Roi, Coordinate
from funlib.persistence import open_ds
from dacapo.experiments.datasplits.datasets.dataset import Dataset
from dacapo.experiments.tasks.post_processors.post_processor_parameters import (
PostProcessorParameters,
Expand Down

0 comments on commit 44c0b20

Please sign in to comment.