@@ -137,7 +137,7 @@ def find_inbetween_ids(
137137 negexc_negatives = find_overlapping_masks (arr_negexc , roi_seg , label_id_base = 1 )
138138 allweak_positives = find_overlapping_masks (arr_allweak , roi_seg , label_id_base = 2 )
139139 inbetween_ids = [int (i ) for i in set (negexc_negatives ).intersection (set (allweak_positives ))]
140- return inbetween_ids
140+ return inbetween_ids , allweak_positives , negexc_negatives
141141
142142
143143def get_median_intensity (file_negexc , file_allweak , center , data_seg , table ):
@@ -148,9 +148,19 @@ def get_median_intensity(file_negexc, file_allweak, center, data_seg, table):
148148 roi = get_roi (center , roi_halo )
149149
150150 roi_seg = data_seg [roi ]
151- inbetween_ids = find_inbetween_ids (arr_negexc , arr_allweak , roi_seg )
151+ inbetween_ids , allweak_positives , negexc_negatives = find_inbetween_ids (arr_negexc , arr_allweak , roi_seg )
152152 if len (inbetween_ids ) == 0 :
153- return None
153+ if len (allweak_positives ) == 0 and len (negexc_negatives ) == 0 :
154+ return None
155+
156+ subset_positive = table [table ["label_id" ].isin (allweak_positives )]
157+ subset_negative = table [table ["label_id" ].isin (negexc_negatives )]
158+ lowest_positive = float (subset_positive ["median" ].min ())
159+ highest_negative = float (subset_negative ["median" ].max ())
160+ if np .isnan (lowest_positive ) or np .isnan (highest_negative ):
161+ return None
162+
163+ return np .average ([lowest_positive , highest_negative ])
154164
155165 subset = table [table ["label_id" ].isin (inbetween_ids )]
156166 intensities = list (subset ["median" ])
@@ -172,7 +182,7 @@ def localize_median_intensities(annotation_dir, cochlea, data_seg, table_measure
172182 median_intensity = get_median_intensity (file_neg , file_pos , center_coord , data_seg , table_measure )
173183
174184 if median_intensity is None :
175- print (f"No inbetween IDs found for { center_str } ." )
185+ print (f"No threshold identified for { center_str } ." )
176186
177187 annotation_dic [center_str ]["median_intensity" ] = median_intensity
178188
0 commit comments