Skip to content

Commit d2196cb

Browse files
committed
implement collect step for depicition pipeline
1 parent 1d162c1 commit d2196cb

File tree

3 files changed

+38
-23
lines changed

3 files changed

+38
-23
lines changed
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
commands:
22
dispatch: python -m depiction_targeted_preproc.app_interface.dispatch_app
3-
process: python -m depiction_targeted_preproc.app_interface.run_chunk
3+
process: python -m depiction_targeted_preproc.app_interface.process_chunk
4+
collect: python -m depiction_targeted_preproc.app_interface.collect_chunk
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from pathlib import Path
2+
3+
import cyclopts
4+
import yaml
5+
6+
app = cyclopts.App()
7+
8+
9+
@app.default
10+
def collect_chunk(workunit_ref: int | Path, chunk_dir: Path) -> None:
11+
chunk_dir = chunk_dir.absolute()
12+
zip_file_path = chunk_dir / f"{chunk_dir.name}.zip"
13+
14+
outputs = [
15+
{
16+
"type": "bfabric_copy_resource",
17+
"local_path": str(zip_file_path.absolute()),
18+
"store_entry_path": zip_file_path.name,
19+
}
20+
]
21+
result = {"outputs": outputs}
22+
with (chunk_dir / "outputs.yml").open("w") as f:
23+
yaml.safe_dump(result, f)
24+
25+
26+
if __name__ == "__main__":
27+
app()

src/depiction_targeted_preproc/app_interface/run_chunk.py renamed to src/depiction_targeted_preproc/app_interface/process_chunk.py

Lines changed: 9 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
import cyclopts
55
import yaml
6-
76
from depiction_targeted_preproc.pipeline.prepare_params import Params
87
from depiction_targeted_preproc.pipeline_config.artifacts_mapping import get_result_files_new
98
from depiction_targeted_preproc.workflow.snakemake_invoke import SnakemakeInvoke
@@ -12,37 +11,25 @@
1211

1312

1413
@app.default()
15-
def run_chunk(chunk_dir: Path):
16-
zip_file_path = run_workflow(sample_dir=chunk_dir)
17-
outputs = [
18-
{
19-
"type": "bfabric_copy_resource",
20-
"local_path": str(zip_file_path.absolute()),
21-
"store_entry_path": zip_file_path.name,
22-
}
23-
]
24-
result = {"outputs": outputs}
25-
with (chunk_dir / "outputs.yml").open("w") as f:
26-
yaml.safe_dump(result, f)
27-
28-
29-
def run_workflow(sample_dir: Path) -> Path:
14+
def run_workflow(chunk_dir: Path) -> Path:
15+
chunk_dir = chunk_dir.absolute()
16+
3017
# TODO to be refactored
31-
params = Params.model_validate(yaml.safe_load((sample_dir / "params.yml").read_text()))
32-
result_files = get_result_files_new(requested_artifacts=params.requested_artifacts, sample_dir=sample_dir)
18+
params = Params.model_validate(yaml.safe_load((chunk_dir / "params.yml").read_text()))
19+
result_files = get_result_files_new(requested_artifacts=params.requested_artifacts, sample_dir=chunk_dir)
3320

3421
# invoke snakemake
3522
# TODO note report file is deactivated because it's currently broken due to dependencies (jinja2)
36-
SnakemakeInvoke(report_file=None).invoke(work_dir=sample_dir.parent, result_files=result_files)
23+
SnakemakeInvoke(report_file=None).invoke(work_dir=chunk_dir.parent, result_files=result_files)
3724

3825
# zip the results
39-
sample_name = sample_dir.name
40-
output_dir = sample_dir / "outputs"
26+
sample_name = chunk_dir.name
27+
output_dir = chunk_dir / "outputs"
4128
output_dir.mkdir(exist_ok=True)
4229
zip_file_path = output_dir / f"{sample_name}.zip"
4330
with zipfile.ZipFile(zip_file_path, "w") as zip_file:
4431
for result_file in result_files:
45-
zip_entry_path = result_file.relative_to(sample_dir.parent)
32+
zip_entry_path = result_file.relative_to(chunk_dir.parent)
4633
zip_file.write(result_file, arcname=zip_entry_path)
4734
return zip_file_path
4835

0 commit comments

Comments
 (0)