99from TPTBox .core import np_utils
1010from 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
1414simplefilter ("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