Spaces:
Sleeping
Sleeping
Rename Colony_Analyzer_AI2_HF.py to Organoid_Analyzer_AI2_HF.py
Browse files
Colony_Analyzer_AI2_HF.py → Organoid_Analyzer_AI2_HF.py
RENAMED
|
@@ -243,7 +243,7 @@ def analyze_colonies(mask, size_cutoff, circ_cutoff, img):
|
|
| 243 |
nec_list.append(nec)
|
| 244 |
|
| 245 |
data.append({
|
| 246 |
-
"
|
| 247 |
"necrotic_area": necrosis_area,
|
| 248 |
"centroid": centroid,
|
| 249 |
"percent_necrotic": necrosis_area/colony_area,
|
|
@@ -273,7 +273,7 @@ def main(args):
|
|
| 273 |
caption = np.ones((150, 2048, 3), dtype=np.uint8) * 255 # Multiply by 255 to make it white
|
| 274 |
cv2.putText(caption, 'No colonies detected.', (40, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 0), 3)
|
| 275 |
cv2.imwrite('results.png', np.vstack((img, caption)))
|
| 276 |
-
colonies = pd.DataFrame({"
|
| 277 |
with pd.ExcelWriter('results.xlsx') as writer:
|
| 278 |
colonies.to_excel(writer, sheet_name="Colony data", index=False)
|
| 279 |
return(np.vstack((img, caption)), 'results.png', 'results.xlsx')
|
|
@@ -283,8 +283,8 @@ def main(args):
|
|
| 283 |
img = cv2.copyMakeBorder(img,top=0, bottom=10,left=0,right=10, borderType=cv2.BORDER_CONSTANT, value=[255, 255, 255])
|
| 284 |
#print(colonies.to_string())
|
| 285 |
|
| 286 |
-
colonies = colonies.sort_values(by=["
|
| 287 |
-
colonies = colonies[colonies["
|
| 288 |
colonies.index = range(1,len(colonies.index)+1)
|
| 289 |
|
| 290 |
for i in range(len(colonies)):
|
|
@@ -300,31 +300,31 @@ def main(args):
|
|
| 300 |
colonies = colonies.drop('contour', axis=1)
|
| 301 |
colonies = colonies.drop('nec_contours', axis=1)
|
| 302 |
|
| 303 |
-
colonies.insert(loc=0, column="
|
| 304 |
total_area_dark = sum(colonies['necrotic_area'])
|
| 305 |
-
total_area_light = sum(colonies['
|
| 306 |
ratio = total_area_dark/(abs(total_area_light)+1)
|
| 307 |
-
radii = [np.sqrt(x/3.1415) for x in list(colonies['
|
| 308 |
volumes = [4.189*(x**3) for x in radii]
|
| 309 |
-
colonies['
|
| 310 |
del radii, volumes
|
| 311 |
-
meanpix = sum(colonies['mean_pixel_value'] * colonies['
|
| 312 |
-
colonies.loc[len(colonies)+1] = ["Total", total_area_light, total_area_dark, None, ratio, meanpix, sum(colonies['
|
| 313 |
del meanpix
|
| 314 |
-
colonies = colonies[["
|
| 315 |
if do_necrosis == False:
|
| 316 |
colonies = colonies.drop('necrotic_area', axis=1)
|
| 317 |
colonies = colonies.drop('percent_necrotic', axis=1)
|
| 318 |
-
Parameters = pd.DataFrame({"Minimum
|
| 319 |
with pd.ExcelWriter('results.xlsx') as writer:
|
| 320 |
-
colonies.to_excel(writer, sheet_name="
|
| 321 |
Parameters.to_excel(writer, sheet_name="Parameters", index=False)
|
| 322 |
caption = np.ones((150, 2068, 3), dtype=np.uint8) * 255 # Multiply by 255 to make it white
|
| 323 |
if do_necrosis == True:
|
| 324 |
cv2.putText(caption, "Total area necrotic: "+str(total_area_dark)+ ", Total area living: "+str(total_area_light)+", Ratio: "+str(ratio), (40, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 0), 3)
|
| 325 |
else:
|
| 326 |
cv2.putText(caption, "Total area: "+str(total_area_light), (40, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 0), 3)
|
| 327 |
-
cv2.putText(caption, "Total number of
|
| 328 |
|
| 329 |
|
| 330 |
cv2.imwrite('results.png', np.vstack((img, caption)))
|
|
|
|
| 243 |
nec_list.append(nec)
|
| 244 |
|
| 245 |
data.append({
|
| 246 |
+
"organoid_area": colony_area,
|
| 247 |
"necrotic_area": necrosis_area,
|
| 248 |
"centroid": centroid,
|
| 249 |
"percent_necrotic": necrosis_area/colony_area,
|
|
|
|
| 273 |
caption = np.ones((150, 2048, 3), dtype=np.uint8) * 255 # Multiply by 255 to make it white
|
| 274 |
cv2.putText(caption, 'No colonies detected.', (40, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 0), 3)
|
| 275 |
cv2.imwrite('results.png', np.vstack((img, caption)))
|
| 276 |
+
colonies = pd.DataFrame({"organoid_number":[], 'organoid_volume':[], "organoid_area":[],'mean_pixel_value':[], "centroid":[], "necrotic_area":[],"percent_necrotic":[]})
|
| 277 |
with pd.ExcelWriter('results.xlsx') as writer:
|
| 278 |
colonies.to_excel(writer, sheet_name="Colony data", index=False)
|
| 279 |
return(np.vstack((img, caption)), 'results.png', 'results.xlsx')
|
|
|
|
| 283 |
img = cv2.copyMakeBorder(img,top=0, bottom=10,left=0,right=10, borderType=cv2.BORDER_CONSTANT, value=[255, 255, 255])
|
| 284 |
#print(colonies.to_string())
|
| 285 |
|
| 286 |
+
colonies = colonies.sort_values(by=["organoid_area"], ascending=False)
|
| 287 |
+
colonies = colonies[colonies["organoid_area"]>= min_size]
|
| 288 |
colonies.index = range(1,len(colonies.index)+1)
|
| 289 |
|
| 290 |
for i in range(len(colonies)):
|
|
|
|
| 300 |
colonies = colonies.drop('contour', axis=1)
|
| 301 |
colonies = colonies.drop('nec_contours', axis=1)
|
| 302 |
|
| 303 |
+
colonies.insert(loc=0, column="organoid_number", value=[str(x) for x in range(1, len(colonies)+1)])
|
| 304 |
total_area_dark = sum(colonies['necrotic_area'])
|
| 305 |
+
total_area_light = sum(colonies['organoid_area'])
|
| 306 |
ratio = total_area_dark/(abs(total_area_light)+1)
|
| 307 |
+
radii = [np.sqrt(x/3.1415) for x in list(colonies['organoid_area'])]
|
| 308 |
volumes = [4.189*(x**3) for x in radii]
|
| 309 |
+
colonies['organoid_volume'] = volumes
|
| 310 |
del radii, volumes
|
| 311 |
+
meanpix = sum(colonies['mean_pixel_value'] * colonies['organoid_area'])/total_area_light
|
| 312 |
+
colonies.loc[len(colonies)+1] = ["Total", total_area_light, total_area_dark, None, ratio, meanpix, sum(colonies['organoid_volume'])]
|
| 313 |
del meanpix
|
| 314 |
+
colonies = colonies[["organoid_number", 'organoid_volume', "organoid_area",'mean_pixel_value', "centroid", "necrotic_area","percent_necrotic"]]
|
| 315 |
if do_necrosis == False:
|
| 316 |
colonies = colonies.drop('necrotic_area', axis=1)
|
| 317 |
colonies = colonies.drop('percent_necrotic', axis=1)
|
| 318 |
+
Parameters = pd.DataFrame({"Minimum organoid size in pixels":[min_size], "Minimum organoid circularity":[min_circ]})
|
| 319 |
with pd.ExcelWriter('results.xlsx') as writer:
|
| 320 |
+
colonies.to_excel(writer, sheet_name="Organoid data", index=False)
|
| 321 |
Parameters.to_excel(writer, sheet_name="Parameters", index=False)
|
| 322 |
caption = np.ones((150, 2068, 3), dtype=np.uint8) * 255 # Multiply by 255 to make it white
|
| 323 |
if do_necrosis == True:
|
| 324 |
cv2.putText(caption, "Total area necrotic: "+str(total_area_dark)+ ", Total area living: "+str(total_area_light)+", Ratio: "+str(ratio), (40, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 0), 3)
|
| 325 |
else:
|
| 326 |
cv2.putText(caption, "Total area: "+str(total_area_light), (40, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 0), 3)
|
| 327 |
+
cv2.putText(caption, "Total number of organoids: "+str(len(colonies)-1), (40, 110), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 0), 3)
|
| 328 |
|
| 329 |
|
| 330 |
cv2.imwrite('results.png', np.vstack((img, caption)))
|