BOA
Fyron treats Body-and-Organ-Analysis workflows as one clinical imaging domain with three focused submodules:
fyron.boa_extractionturns BOA cohort folders into patient-level feature tables.fyron.boa_radiomicsextracts PyRadiomics texture and shape features from BOA masks.fyron.visualizationturns BOA CT and segmentation folders into review collages.
Keeping the Python modules separate is intentional. Extraction creates measurement features from JSON outputs. Radiomics creates texture and shape features from image-mask pairs. Visualization creates images for quality control, reports, and publication figures. They often use the same patient folders, but they have different outputs, dependencies, and failure modes.
BOA Folder Pattern
Most BOA workflows produce one folder per case:
boa-cohort/
patient0001/
bca-measurements.json
total-measurements.json
ct.nii.gz
body-regions.nii.gz
tissues.nii.gz
total.nii.gz
patient0002/
bca-measurements.json
total-measurements.json
ct.nii.gz
body-regions.nii.gz
tissues.nii.gz
total.nii.gzThe folder name is used as download_id by default in extraction, and as the row label source in visualization unless you pass explicit labels.
Choose The Right Submodule
| Goal | Use | Output |
|---|---|---|
| Find completed BOA patient folders | fyron.boa_extraction.discover_boa_cases | list of patient folder paths |
| Extract body-region tissue volumes | fyron.boa_extraction.extract_body_region_features | feature dictionary or DataFrame |
| Extract organ volume, HU, CNR, ratios | fyron.boa_extraction.extract_total_segmentation_features | feature dictionary or DataFrame |
| Extract experimental aortic calcification burden | fyron.boa_extraction.extract_experimental_aortic_calcification_features | feature dictionary or DataFrame |
| Build one modeling table from BOA outputs | fyron.boa_extraction.extract_boa_features | pandas.DataFrame |
Extract radiomics from total.nii.gz or body-regions.nii.gz | fyron.boa_radiomics.extract_boa_radiomics_features | patient-level radiomics DataFrame |
| Create visual QC collages | fyron.visualization.create_boa_segmentation_collage | PNG and metadata |
| Configure collage layers | fyron.visualization.SegmentationLayer | layer configuration object |
Typical Clinical Data Science Workflow
from fyron.boa_extraction import discover_boa_cases, extract_boa_features
from fyron.boa_radiomics import extract_boa_radiomics_features
from fyron.visualization import create_boa_segmentation_collage
cases = discover_boa_cases("/data/boa-cohort")
features = extract_boa_features(
cases,
num_workers=8,
show_progress=True,
)
features.to_csv("boa_features.csv", index=False)
radiomics = extract_boa_radiomics_features(
cases,
segmentation_kind="total",
labels={"liver": 5, "spleen": 1},
num_workers=8,
)
create_boa_segmentation_collage(
boa_folders=cases[:6],
output_path="boa_qc.png",
segmentation_layers=["body_regions", "tissues", "total"],
slice_fraction=0.5,
)Use measurement and radiomics table outputs for cohort joins, survival analysis, ML models, and correlation plots. Use the collage output to inspect whether the segmentations and selected slices are clinically plausible.
CLI Workflow
Run BOA feature extraction as a repeatable terminal step when patient folders already exist on disk:
fyron boa-extract \
--cohort-folder data/boa \
--output boa_features.csv \
--include-body-regions \
--include-total \
--include-aortic-experimental \
--num-workers 8Radiomics can be exported from the same folder structure:
fyron boa-radiomics \
--cohort-folder data/boa \
--segmentation total \
--output boa_radiomics.csv \
--num-workers 8Submodule Documentation
Start with the subpage that matches the task:
- BOA Extraction for features, measurements, DataFrames, and model-ready tables.
- BOA Radiomics for PyRadiomics features from
body-regions.nii.gzandtotal.nii.gz. - BOA Visualization for segmentation collages, CT overlays, slice selection, and body-region cropping.
Design Boundary
The combined BOA docs page is a workflow map, not a fourth API layer. Keeping the actual package APIs as fyron.boa_extraction, fyron.boa_radiomics, and fyron.visualization prevents ambiguous function names and keeps imports explicit in notebooks:
from fyron.boa_extraction import extract_boa_features
from fyron.boa_radiomics import extract_boa_radiomics_features
from fyron.visualization import create_boa_segmentation_collage