Skip to content

Commit d6db72b

Browse files
committed
added SurfaceThickness with thresholds 3 and 5 mm
1 parent a00d906 commit d6db72b

1 file changed

Lines changed: 14 additions & 2 deletions

File tree

src/calc_features.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from TPTBox.core import np_utils
1010
from TPTBox.core.sitk_utils import nii_to_sitk
1111

12-
from calc_label_thickness import calc_label_thickness
12+
from src.calc_label_thickness import calc_label_thickness
1313

1414
simplefilter("ignore", category=ConvergenceWarning)
1515

@@ -35,6 +35,8 @@ class FEATURES(Enum):
3535
SurfaceThicknessLIST = auto() # list of thicknesses for each voxel in the label
3636
SurfaceThickness95Percentile = auto() # 95th percentile of thicknesses
3737
SurfaceCoverage = auto() # percentage of surface voxels in the label
38+
SurfaceThickness3mm = auto() # percentage of surface voxels with a thickness of at least 3mm
39+
SurfaceThickness5mm = auto() # percentage of surface voxels with a thickness of at least 5mm
3840
#
3941
SpatialRelation = auto()
4042
SpatialRelationMerged = auto() # wenn label + label+8 merged
@@ -146,8 +148,18 @@ def features_from_two_labels(label_s: int, label_v: int, seg_label_s: NII, seg_l
146148
features[featurename((label_s, label_v), FEATURES.SurfaceThickness95Percentile)] = float(
147149
np.percentile(features[featurename((label_s, label_v), FEATURES.SurfaceThicknessLIST)], 95)
148150
)
151+
features[featurename((label_s, label_v), FEATURES.SurfaceThickness3mm)] = float(
152+
np.sum(np.array(features[featurename((label_s, label_v), FEATURES.SurfaceThicknessLIST)]) >= 3.0)
153+
/ len(features[featurename((label_s, label_v), FEATURES.SurfaceThicknessLIST)])
154+
)
155+
features[featurename((label_s, label_v), FEATURES.SurfaceThickness5mm)] = float(
156+
np.sum(np.array(features[featurename((label_s, label_v), FEATURES.SurfaceThicknessLIST)]) >= 5.0)
157+
/ len(features[featurename((label_s, label_v), FEATURES.SurfaceThicknessLIST)])
158+
)
149159
else:
150-
features[featurename((label_s, label_v), FEATURES.SurfaceThickness95Percentile)] = np.nan
160+
features[featurename((label_s, label_v), FEATURES.SurfaceThickness95Percentile)] = 0
161+
features[featurename((label_s, label_v), FEATURES.SurfaceThickness3mm)] = 0
162+
features[featurename((label_s, label_v), FEATURES.SurfaceThickness5mm)] = 0
151163
else:
152164
features[featurename((label_s, label_v), FEATURES.SpatialRelation)] = np.nan
153165
features[featurename((label_s, label_v), FEATURES.SpatialRelationMerged)] = np.nan

0 commit comments

Comments
 (0)