@@ -99,8 +99,11 @@ def distance_label_2d(label, cell_radius, neighbor_radius):
9999 int (max (centroid [1 ] - cell_radius , 0 )):int (min (centroid [1 ] + cell_radius , label .shape [1 ]))
100100 ]
101101 nucleus_crop_dist = distance_transform_edt (nucleus_crop )
102- if np .max (nucleus_crop_dist ) > 0 :
103- nucleus_crop_dist = nucleus_crop_dist / np .max (nucleus_crop_dist )
102+ max_dist = np .max (nucleus_crop_dist )
103+ if max_dist > 0 :
104+ nucleus_crop_dist = nucleus_crop_dist / max_dist
105+ else :
106+ continue
104107 label_dist [
105108 int (max (centroid [0 ] - cell_radius , 0 )):int (min (centroid [0 ] + cell_radius , label .shape [0 ])),
106109 int (max (centroid [1 ] - cell_radius , 0 )):int (min (centroid [1 ] + cell_radius , label .shape [1 ]))
@@ -126,9 +129,8 @@ def distance_label_2d(label, cell_radius, neighbor_radius):
126129 nucleus_neighbor_crop_dist = distance_transform_edt (nucleus_neighbor_crop )
127130 nucleus_neighbor_crop_dist = nucleus_neighbor_crop_dist * nucleus_neighbor_crop_nucleus
128131 if np .max (nucleus_neighbor_crop_dist ) > 0 :
129- # nucleus_neighbor_crop_dist = nucleus_neighbor_crop_dist / np.max(nucleus_neighbor_crop_dist)
130- # For elongated objects the scaling is not good (broad large distance values/areas)
131- denominator = np .minimum (np .max (nucleus_neighbor_crop_dist ), 1.1 * props [i ].minor_axis_length ) + 1e-8
132+ denominator = np .minimum (max_dist + 3 , # larger than max_dist since scaled later on (improves small cells)
133+ np .max (nucleus_neighbor_crop_dist ))
132134 nucleus_neighbor_crop_dist = nucleus_neighbor_crop_dist / denominator
133135 nucleus_neighbor_crop_dist = np .clip (nucleus_neighbor_crop_dist , 0 , 1 )
134136 else :
0 commit comments