34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
import json
|
|
import os
|
|
from pathlib import Path
|
|
import shutil
|
|
import luigi
|
|
from engine.utils import ensure_dir
|
|
|
|
|
|
class ImageWriter(luigi.Task):
|
|
artifacts_dir = luigi.Parameter(default="artifacts")
|
|
|
|
def requires(self):
|
|
from engine.tasks_radiomics import FeatureExtraction
|
|
return FeatureExtraction(artifacts_dir=self.artifacts_dir)
|
|
|
|
def output(self):
|
|
return luigi.LocalTarget(os.path.join(self.artifacts_dir, "final_output.json"))
|
|
|
|
def run(self):
|
|
# Copy Excel file generated by PySERA to artifacts/radiomics3d
|
|
excel_src = Path(self.artifacts_dir) / "Radiomics_Results.xlsx"
|
|
if excel_src.exists():
|
|
dst_dir = ensure_dir(Path(self.artifacts_dir) / "radiomics3d")
|
|
excel_dst = dst_dir / "Radiomics_Results.xlsx"
|
|
shutil.copy2(excel_src, excel_dst)
|
|
|
|
# Load summary JSON from FeatureExtraction
|
|
with self.requires().output().open("r") as f:
|
|
summary = json.load(f)
|
|
|
|
# Write final summary JSON
|
|
with self.output().open("w") as f:
|
|
json.dump(summary, f, indent=2, ensure_ascii=False)
|