May 10 6PM EDT - May 11 6PM EDT
Slack workspace: https://hack-a-tron.slack.com
Join the #colony_counting channel.
Colony counting and picking functionality for OpenTrons.
Pre-prepped agar plates with visible colonies are loaded onto the OpenTrons deck. Colony location data is uploaded to OpenTrons. After calibration, OpenTrons picks individual colonies using pipettor for processing.
-
Add a camera to head assembly
- Take photo
- Add custom instrument
- Add
capture_image
function
-
Add agar plate labware
- Calibrate robot position
- https://docs.opentrons.com/examples.html?highlight=vector#precision-pipetting
-
Add
count_colonies
function- ImageJ --headless: https://imagej.nih.gov/ij/plugins/colony-counter.html
- Run macro: ImageJ --headless -macro custom_macro.ijm
- Returns count
-
Add second camera for depth detection
-
Add
analyze_colonies
function- Returns count
- Returns list of colonies with (x,y,z) coordinates
-
Adjust agar plate labware object to include (x,y,z) coordinates of each colony
- Intuitive interface can be something like:
plate.colonies('1')
- Use center of mass for each colony (e.g. move_to plate.colonies('1') will go to center of mass or centroid)
- Intuitive interface can be something like:
-
Alternative: Take image of agar plate, each pixel is a "well" e.g. 800 x 600 image = 480000 wells
-
Image Normalization
- Perspective correction using homography with OpenCV:
This repository provides a way to import ImageJ regions of interest (ROI) data into python.
ImageJ outputs ROI data in a binary format. Dylan Muir provides a Matlab script to read binary ROI data to import into Matlab.
We use Octave, an open-source Matlab clone, to convert ROI data from binary to csv format for import into python.
- Obtain plate image
- Run ImageJ Colony Counter on plate image (note location of ROI zip file output)
- Edit variables in
ColonyROI2csv.m
(createDATA_DIR
if it doesn't exist) - Import data into python (example):
from colony_roi_import import ColonyROIImportCSV
DATA_DIR = "data"
roi_import = ColonyROIImportCSV(DATA_DIR)
colony_count = roi_import.get_colony_count()
colony_roi_data = roi_import.colony_data()
Colony roi data is a python dictionary:
colony_data = {
'colony_name': colony_name,
'roi_data': roi_data,
}
Where roi_data
is a list of (x,y) pixel coordinates for the boundaries drawn around colonies by ImageJ.
- Create another python file to extend labware functionality interface, e.g.
plate.colonies('1')
- Improve
agar_plate.py
to use colony interface - Use a machine learning algorithm to improve performance of colony detection