Ticket #79 (closed task: fixed)
Opened 2010-06-01T15:11:23-05:00
Last modified 2012-02-23T14:38:09-06:00
Run ImageJ Neuron Plugin from CellProfiler
Reported by: | afraser | Owned by: | leek |
---|---|---|---|
Priority: | major | Milestone: |
|
Component: | CellProfiler | Version: | |
Severity: | minor | Keywords: | |
Cc: | Blocked By: | ||
Blocking: | #22 |
Description
Part of our grant is to show that interfacing with ImageJ allows CellProfiler users to do something they couldn't do before. CP is currently lacking neuron-processing modules, so this is a good use case to start with.
Will search for existing fully automated neuron plugins in ImageJ, and use the CP-IJ connection that we've built to make use of it. If an existing plugin can not be found, I will find a useful neuron-processing/measuring algorithm and implement it as an ImageJ plugin first.
We have begun to use ImageJ to process images in a neuron-related assay. The Tubeness plugin ( http://homepages.inf.ed.ac.uk/s9808248/imagej/tubeness/) enhances neurites in neuron images by enhancing gradients at particular scales.
Part of this effort involved integrating ImageJ into our Unix cluster infrastructure. We're running Python, CellProfiler and ImageJ using the Xvfb ( http://en.wikipedia.org/wiki/Xvfb) virtual frame buffer server for X-windows - this lets us "display" GUI elements during headless operation; drawing operations take place on the virtual frame buffer instead of on a true video device.
We have used a color deconvolution plugin ( http://www.dentistry.bham.ac.uk/landinig/software/cdeconv/cdeconv.html), stack focuser ( http://rsbweb.nih.gov/ij/plugins/stack-focuser.html) and a kalman filter ( http://rsbweb.nih.gov/ij/plugins/kalman.html) successfully, but informally in CellProfiler through the bridge to ImageJ.
CellProfiler processes a stack of images sequentially as part of an image group; ImageJ maintains the entire stack in memory simultaneously. I enhanced CellProfiler's ImageJ module to run macros at the start and end of group processing so that I could use the stack focuser on a stack of images. My pipeline initializes the ImageJ stack at the start of group processing, adds images to the stack during group processing, then runs the stack focuser (or other stack operation) at the conclusion of group processing.