Add All Folders
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
from dagster import job, graph, op
|
||||
from pathlib import Path
|
||||
from .ops import (
|
||||
read_image_and_mask,
|
||||
read_image_and_mask_from_case,
|
||||
filter_image,
|
||||
extract_features,
|
||||
write_outputs,
|
||||
enumerate_cases_auto
|
||||
)
|
||||
|
||||
# Extract image file name from config for single file mode
|
||||
@op(config_schema={"image_path": str})
|
||||
def get_case_name_from_config(context) -> str:
|
||||
image_path = context.op_config["image_path"]
|
||||
return Path(image_path).stem
|
||||
|
||||
# Extract case_name from case dictionary for batch mode
|
||||
@op
|
||||
def get_case_name_from_case(context, case: dict) -> str:
|
||||
return case["case_name"]
|
||||
|
||||
# Single-case workflow job
|
||||
@job(config={
|
||||
"ops": {
|
||||
"read_image_and_mask": {
|
||||
"config": {
|
||||
"image_path": "C:/Users/Omen16/Documents/Radiuma_Mini/data/images/CT_pitch.nii.gz",
|
||||
"mask_path": "C:/Users/Omen16/Documents/Radiuma_Mini/data/masks/CT_pitch_mask.nii.gz",
|
||||
}
|
||||
},
|
||||
"get_case_name_from_config": {
|
||||
"config": {
|
||||
"image_path": "C:/Users/Omen16/Documents/Radiuma_Mini/data/images/CT_pitch.nii.gz"
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
def radiomics_job():
|
||||
image, mask = read_image_and_mask()
|
||||
filtered = filter_image(image)
|
||||
feats = extract_features(image=filtered, mask=mask)
|
||||
case_name = get_case_name_from_config()
|
||||
write_outputs(features=feats, case_name=case_name)
|
||||
|
||||
# Graph that processes one case dict (used for batch mapping)
|
||||
@graph
|
||||
def process_case(case):
|
||||
image, mask = read_image_and_mask_from_case(case)
|
||||
filtered = filter_image(image)
|
||||
feats = extract_features(image=filtered, mask=mask)
|
||||
case_name = get_case_name_from_case(case)
|
||||
write_outputs(features=feats, case_name=case_name)
|
||||
|
||||
# Batch workflow job (auto-discovery + dynamic mapping)
|
||||
@job
|
||||
def radiomics_batch_job():
|
||||
cases = enumerate_cases_auto()
|
||||
cases.map(process_case)
|
||||
|
||||
# Preprocessing-only workflow job
|
||||
@job(config={
|
||||
"ops": {
|
||||
"read_image_and_mask": {
|
||||
"config": {
|
||||
"image_path": "C:/Users/Omen16/Documents/Radiuma_Mini/data/images/CT_pitch.nii.gz",
|
||||
"mask_path": "C:/Users/Omen16/Documents/Radiuma_Mini/data/masks/CT_pitch_mask.nii.gz",
|
||||
}
|
||||
},
|
||||
"get_case_name_from_config": {
|
||||
"config": {
|
||||
"image_path": "C:/Users/Omen16/Documents/Radiuma_Mini/data/images/CT_pitch.nii.gz"
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
def preprocessing_job():
|
||||
image, mask = read_image_and_mask()
|
||||
filtered = filter_image(image)
|
||||
feats = extract_features(image=filtered, mask=mask)
|
||||
case_name = get_case_name_from_config()
|
||||
write_outputs(features=feats, case_name=case_name)
|
||||
|
||||
# Feature-extraction-only workflow job
|
||||
@job(config={
|
||||
"ops": {
|
||||
"read_image_and_mask": {
|
||||
"config": {
|
||||
"image_path": "C:/Users/Omen16/Documents/Radiuma_Mini/data/images/CT_pitch.nii.gz",
|
||||
"mask_path": "C:/Users/Omen16/Documents/Radiuma_Mini/data/masks/CT_pitch_mask.nii.gz",
|
||||
}
|
||||
},
|
||||
"get_case_name_from_config": {
|
||||
"config": {
|
||||
"image_path": "C:/Users/Omen16/Documents/Radiuma_Mini/data/images/CT_pitch.nii.gz"
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
def feature_extraction_job():
|
||||
image, mask = read_image_and_mask()
|
||||
feats = extract_features(image=image, mask=mask)
|
||||
case_name = get_case_name_from_config()
|
||||
write_outputs(features=feats, case_name=case_name)
|
||||
Reference in New Issue
Block a user