Skip to content

Commit d070dd7

Browse files
committed
Improved threshold identification
1 parent 35ec865 commit d070dd7

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

flamingo_tools/segmentation/chreef_utils.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

143143
def 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

Comments
 (0)