ReyaLabColumbia commited on
Commit
288ef52
·
verified ·
1 Parent(s): 2d57e6c

Rename Colony_Analyzer_AI_zstack2_HF.py to Organoid_Analyzer_AI_zstack2_HF.py

Browse files
Colony_Analyzer_AI_zstack2_HF.py → Organoid_Analyzer_AI_zstack2_HF.py RENAMED
@@ -234,7 +234,7 @@ def analyze_colonies(mask, size_cutoff, circ_cutoff, img):
234
  nec_list.append(nec)
235
 
236
  data.append({
237
- "colony_area": colony_area,
238
  "necrotic_area": necrosis_area,
239
  "centroid": centroid,
240
  "percent_necrotic": necrosis_area/colony_area,
@@ -327,11 +327,11 @@ def main(args):
327
  if img.ndim == 2:
328
  img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
329
  caption = np.ones((150, 2048, 3), dtype=np.uint8) * 255 # Multiply by 255 to make it white
330
- cv2.putText(caption, 'No colonies detected.', (40, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 0), 3)
331
  cv2.imwrite('results.png', np.vstack((img, caption)))
332
- colonies = pd.DataFrame({"Colony Number":[], 'Colony volume':[], "colony_area":[],'mean_pixel_value':[], "centroid":[], "necrotic_area":[],"percent_necrotic":[]})
333
  with pd.ExcelWriter('results.xlsx') as writer:
334
- colonies.to_excel(writer, sheet_name="Colony data", index=False)
335
  return(np.vstack((img, caption)), 'results.png', 'results.xlsx')
336
  counts = {}
337
  for x in range(len(files)):
@@ -368,12 +368,12 @@ def main(args):
368
  pass
369
 
370
  img = cv2.copyMakeBorder(img,top=0, bottom=10,left=0,right=10, borderType=cv2.BORDER_CONSTANT, value=[255, 255, 255])
371
- colonies = colonies.sort_values(by=["colony_area"], ascending=False)
372
- colonies = colonies[colonies["colony_area"]>= min_size]
373
  colonies.index = range(1,len(colonies.index)+1)
374
  #nearby is a boolean list of whether a colony has overlapping colonies. If so, labelling positions change
375
  nearby = [False]*len(colonies)
376
- areas = list(colonies["colony_area"])
377
  if img.ndim == 2:
378
  img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
379
  for i in range(len(colonies)):
@@ -418,31 +418,31 @@ def main(args):
418
  colonies = colonies.drop('exclude', axis=1)
419
  img = cv2.copyMakeBorder(img,top=10, bottom=0,left=10,right=0, borderType=cv2.BORDER_CONSTANT, value=[255, 255, 255])
420
 
421
- colonies.insert(loc=0, column="Colony Number", value=[str(x) for x in range(1, len(colonies)+1)])
422
  total_area_dark = sum(colonies['necrotic_area'])
423
- total_area_light = sum(colonies['colony_area'])
424
  ratio = total_area_dark/(abs(total_area_light)+1)
425
- radii = [np.sqrt(x/3.1415) for x in list(colonies['colony_area'])]
426
  volumes = [4.189*(x**3) for x in radii]
427
- colonies['Colony volume'] = volumes
428
  del radii, volumes
429
- meanpix = sum(colonies['mean_pixel_value'] * colonies['colony_area'])/total_area_light
430
- colonies.loc[len(colonies)+1] = ["Total", total_area_light, total_area_dark, None, ratio, None, meanpix, sum(colonies['Colony volume'])]
431
  del meanpix
432
- colonies = colonies[["Colony Number", 'Colony volume', "colony_area",'mean_pixel_value', "centroid", "necrotic_area","percent_necrotic", "source"]]
433
- Parameters = pd.DataFrame({"Minimum colony size in pixels":[min_size], "Minimum colony circularity":[min_circ]})
434
  if do_necrosis == False:
435
  colonies = colonies.drop('necrotic_area', axis=1)
436
  colonies = colonies.drop('percent_necrotic', axis=1)
437
  with pd.ExcelWriter("Group_analysis_results.xlsx") as writer:
438
- colonies.to_excel(writer, sheet_name="Colony data", index=False)
439
  Parameters.to_excel(writer, sheet_name="Parameters", index=False)
440
  caption = np.ones((150, 2068, 3), dtype=np.uint8) * 255 # Multiply by 255 to make it white
441
  if do_necrosis == True:
442
  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)
443
  else:
444
  cv2.putText(caption, "Total area: "+str(total_area_light), (40, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 0), 3)
445
- cv2.putText(caption, "Total number of colonies: "+str(len(colonies)-1), (40, 110), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 0), 3)
446
  print('img ndim: ' +str(img.ndim))
447
  print('caption ndim: ' +str(caption.ndim))
448
 
 
234
  nec_list.append(nec)
235
 
236
  data.append({
237
+ "organoid_area": colony_area,
238
  "necrotic_area": necrosis_area,
239
  "centroid": centroid,
240
  "percent_necrotic": necrosis_area/colony_area,
 
327
  if img.ndim == 2:
328
  img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
329
  caption = np.ones((150, 2048, 3), dtype=np.uint8) * 255 # Multiply by 255 to make it white
330
+ cv2.putText(caption, 'No organoids detected.', (40, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 0), 3)
331
  cv2.imwrite('results.png', np.vstack((img, caption)))
332
+ colonies = pd.DataFrame({"organoid_number":[], 'organoid_volume':[], "organoid_area":[],'mean_pixel_value':[], "centroid":[], "necrotic_area":[],"percent_necrotic":[]})
333
  with pd.ExcelWriter('results.xlsx') as writer:
334
+ colonies.to_excel(writer, sheet_name="Organoid data", index=False)
335
  return(np.vstack((img, caption)), 'results.png', 'results.xlsx')
336
  counts = {}
337
  for x in range(len(files)):
 
368
  pass
369
 
370
  img = cv2.copyMakeBorder(img,top=0, bottom=10,left=0,right=10, borderType=cv2.BORDER_CONSTANT, value=[255, 255, 255])
371
+ colonies = colonies.sort_values(by=["organoid_area"], ascending=False)
372
+ colonies = colonies[colonies["organoid_area"]>= min_size]
373
  colonies.index = range(1,len(colonies.index)+1)
374
  #nearby is a boolean list of whether a colony has overlapping colonies. If so, labelling positions change
375
  nearby = [False]*len(colonies)
376
+ areas = list(colonies["organoid_area"])
377
  if img.ndim == 2:
378
  img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
379
  for i in range(len(colonies)):
 
418
  colonies = colonies.drop('exclude', axis=1)
419
  img = cv2.copyMakeBorder(img,top=10, bottom=0,left=10,right=0, borderType=cv2.BORDER_CONSTANT, value=[255, 255, 255])
420
 
421
+ colonies.insert(loc=0, column="organoid_number", value=[str(x) for x in range(1, len(colonies)+1)])
422
  total_area_dark = sum(colonies['necrotic_area'])
423
+ total_area_light = sum(colonies['organoid_area'])
424
  ratio = total_area_dark/(abs(total_area_light)+1)
425
+ radii = [np.sqrt(x/3.1415) for x in list(colonies['organoid_area'])]
426
  volumes = [4.189*(x**3) for x in radii]
427
+ colonies['organoid_volume'] = volumes
428
  del radii, volumes
429
+ meanpix = sum(colonies['mean_pixel_value'] * colonies['organoid_area'])/total_area_light
430
+ colonies.loc[len(colonies)+1] = ["Total", total_area_light, total_area_dark, None, ratio, None, meanpix, sum(colonies['organoid_volume'])]
431
  del meanpix
432
+ colonies = colonies[["organoid_number", 'organoid_volume', "organoid_area",'mean_pixel_value', "centroid", "necrotic_area","percent_necrotic", "source"]]
433
+ Parameters = pd.DataFrame({"Minimum organoid size in pixels":[min_size], "Minimum organoid circularity":[min_circ]})
434
  if do_necrosis == False:
435
  colonies = colonies.drop('necrotic_area', axis=1)
436
  colonies = colonies.drop('percent_necrotic', axis=1)
437
  with pd.ExcelWriter("Group_analysis_results.xlsx") as writer:
438
+ colonies.to_excel(writer, sheet_name="Organoid data", index=False)
439
  Parameters.to_excel(writer, sheet_name="Parameters", index=False)
440
  caption = np.ones((150, 2068, 3), dtype=np.uint8) * 255 # Multiply by 255 to make it white
441
  if do_necrosis == True:
442
  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)
443
  else:
444
  cv2.putText(caption, "Total area: "+str(total_area_light), (40, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 0), 3)
445
+ cv2.putText(caption, "Total number of organoids: "+str(len(colonies)-1), (40, 110), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 0), 3)
446
  print('img ndim: ' +str(img.ndim))
447
  print('caption ndim: ' +str(caption.ndim))
448