ReyaLabColumbia commited on
Commit
2d57e6c
·
verified ·
1 Parent(s): 590cb4a

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
- "colony_area": colony_area,
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({"Colony Number":[], 'Colony volume':[], "colony_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,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=["colony_area"], ascending=False)
287
- colonies = colonies[colonies["colony_area"]>= min_size]
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="Colony 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['colony_area'])
306
  ratio = total_area_dark/(abs(total_area_light)+1)
307
- radii = [np.sqrt(x/3.1415) for x in list(colonies['colony_area'])]
308
  volumes = [4.189*(x**3) for x in radii]
309
- colonies['Colony volume'] = volumes
310
  del radii, volumes
311
- meanpix = sum(colonies['mean_pixel_value'] * colonies['colony_area'])/total_area_light
312
- colonies.loc[len(colonies)+1] = ["Total", total_area_light, total_area_dark, None, ratio, meanpix, sum(colonies['Colony volume'])]
313
  del meanpix
314
- colonies = colonies[["Colony Number", 'Colony volume', "colony_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 colony size in pixels":[min_size], "Minimum colony circularity":[min_circ]})
319
  with pd.ExcelWriter('results.xlsx') as writer:
320
- colonies.to_excel(writer, sheet_name="Colony 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 colonies: "+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)))
 
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)))