This wiki orients developers to CellProfiler-related resources, the structure of CellProfiler’s code, the details of how modules function, the proper use of settings and their display in the user interface, and how image and object measurements are processed and stored.
The source code for the CellProfiler project is hosted in Git repositories administered by GitHub. The code can be checked out from these locations:
We perform regular builds of our source code for both CellProfiler and CellProfiler Analyst. They are not as heavily vetted as our releases, but are available here.
There are development lists for the CellProfiler and CellProfiler Analyst tools. These are not high-traffic lists and are intended for discussions or questions ranging from code details to long-term plans for the projects. The mailing lists are hosted on Google Groups:
Most users should use the CellProfiler forum to ask for help and report issues. We monitor the forum and may be able to help you find a workaround for the problem. If you have discovered a new bug, we will take care of filing a bug report on your behalf and include all necessary technical information.
The issue tracker on Github is primarily for developer of CellProfiler and related software. There is a special form for submitting new issues with attachments. If you use this form for reporting bugs, please attach sufficient information to reproduce the bug. For many bugs, it is appropriate to attach a CellProfiler pipeline and an image.
The developer community contributes to a Roadmap for future development of CellProfiler.
For a full list of command-line options, run CellProfiler like this:
python CellProfiler.py --help
To run CellProfiler 2.X without the graphical user interface, use this:
python CellProfiler.py -c -r -i ~/my_image_directory -o ~/my_output_directory -p ~/my_pipe.mat
On Mac OS X, to run a compiled install of CellProfiler 2.X without the graphical user interface (add ' --help' to the end to see all the switches),
arch -i386 /Applications/<YOUR_CP_APP_NAME>/Contents/MacOS/CellProfiler
This page has a detailed discussion of issues and strategies involving integrating CellProfiler into a LIMS or cluster environment. The page also has a list and explanation of the CellProfiler command-line switches that are designed to be used in an integration.
We will be glad to take a look at any code you wish to contribute to the CellProfiler Python project, though we cannot guarantee that the code will be included. New modules can be easily run in CellProfiler as a plugin; see Distributing your Module for more details. A plugin would make sense for feature that are decoupled from all the others, e.g, MeasureTexture has code that operates entirely separately from MeasureObjectSizeShape and if someone were to add another measurement module, it might as well be a plugin.
For more sophisticated features, the situation is more complicated. For example, if someone wrote an improvement to our watershed algorithm, it would fit better as an option to IdentifyPrimaryObjects which would allow them to avoid having to copy the code to do the thresholding and initial segmentation.
In short, the decision as to where code best fits is often pragmatic:
The following procedure will create a PDF manual composed of the module and non-module help with a table of contents for each
In 2009, software engineers at the Imaging Platform at the Broad Institute began re-writing MATLAB-based CellProfiler 1.0 and created python-based CellProfiler 2.0, which was released in 2010. Our overall goals were: