ATTENTION USERS: Help us with usability improvements!


Hi all,

Later in the year, the software engineers on the CP team would like to improve the usability of two modules in particular: LoadImages and IdentifyPrimaryObjects. These modules are among the most powerful to use, and for the same reason, can often be the most confusing to use, especially for beginners. So we’re hoping to streamline things a bit, and we’d like your thoughts in these two areas:

We’re asking users to post to this thread their thoughts on any (or all) the following issues.

How can we make LoadImages easier to use?
For example:

  • What current features/settings do you find easy to use? Difficult to use?
  • What software have you used that does a good job of showing the user how to load images? (e.g., ImageJ, Photoshop, etc)
  • Do you like the options presented in LoadImages as they are currently, or prefer a wizard
    (i.e., step-by-step guide), or something entirely? - What do you wish LoadImages would just “magically” know about your images, and be able to fill in without your help? (e.g., metadata, channel info, etc)
  • For those who extract metadata from the filename, how could this process be made easier?
  • Is there anything about specifying the input/output folders that you would change?

How can we make IdentifyPrimaryObjects easier to use?
For example:

  • What current features/settings do you find easy to use? Difficult to use?
  • What software have you used that does a good job of showing the user how to identify objects? (e.g., ImageJ, MetaMorph, etc)
  • Would more user interaction help with configuration of settings? For example, a user could be prompted to click on the smallest/largest isolated cells and CP would use that info to fill in the min/max diameter settings.
  • Do you think a “Simple” and “Advanced” mode would be useful? (The Advanced mode could be the interface as it is now, while the Simple mode would be a more basic version, asking minimal questions for more straightforward assays.) What questions should the Simple mode ask?

Again, feel free to answer the questions above or just post any of your thoughts on the subject in general.

-The CellProfiler team

Break IdentifyPrimaryObjects into two modules
Executing multicore CP analysis pipes without a cluster
Disable modules
Is it possible to comment a module?


i am very happy with the modules as they are.

i also like the metadata-extraction with regular expressions…ok, it is a bit of work…but it is so nice and powerful and also easy with your cool preview-thingy !

and if you want to add some “magic”, please keep the option to do it manual as well !!!
maybe the user could choose: “wizard” or “human”…

best, Tischi



In general I am very satisfied with both modules and CellProfiler. But I have some small wishes in the mentioned modules:

This week I tried for the first time the metadata extraction. It took some time to figure it all out. Maybe it is an idea to have a formula builder where you can choose all available expressions. More easy to implement and maybe sufficient is some extra examples in the help.

The objects are colored by the default colormap. Maybe it is an idea to make it possible to choose a colormap in the module itself?



For the Load Images Module: It would be nice if there were an option to load image names from a text file or Excel spreadsheet. So instead of regular expression or exact text match, the user would have to option to put the names of the files to load into a text document. This would also allow for some control over the order that images are loaded in.

Also, when using the regular expression option I found that sometimes I wished to apply two different criteria. For example, if I had images named D1.jpg, D2.jpg, D5.jpg, D10.jpg, and D20.jpg, and I wanted to load only D5, D10, and D20, there is no way to do this (as far as I know) using regular expressions. So what I am suggesting is a second criteria (or third, fourth, etc.) that would be loaded subsequently to the first and name the loaded images with the same name as the first. With the above example, the module would first load images matching “D[1-2]0.jpg” and run through the pipeline. When it was done with all those, it would move on to “D5.jpg”.

For the Identify Primary Objects Module: When using the “Intensity” “Method to distinguish clumped objects”, an option to display the intermediate image after the smoothing filter is applied would be nice for manually tweaking the size of the filter.

Thanks for all your hard work!


You’re in luck; this is exactly what the LoadData module is for! Take a look at it and see if it helps you out.


How can we make LoadImages easier to use?
I have migrated to CP from imageJ for a lot of my analysis.
In general i find the LoadImages Module straightforward and effective. It is much better than ImageJ.
I have also used the batch process function in Axiovision and Huygen’s.
Axiovision uses a “add images to batch approach” for manual image addition. Personally i find the approach in CP much more powerful.

The only trouble i had was with using the regular expressions to extract metadata
This could be perhaps simplified by allowing the user to select the parts of the filename required and giving them a field to specify a name.

Associated Image Metadata Extraction would be incredibly useful. Of course given the number of sources for images this could be difficult. However you could limit yourself to opensource acquisition platforms like micromanager. :smiley: For the project i am currently working on we have written a script to extract this that separately which then has to be added to the data generated by CP.

The other feature i can think of at the moment would be support for loading and processing TIF stacks. To me this is where CP falls down against imageJ. For example i want to process a 10000 frame movie and wish to use information from previous frames to assist in the analysis of the current frame.

How can we make IdentifyPrimaryObjects easier to use?*
I think the idea of a Simple and Advanced interface is a great idea, as is the idea of having some guided interaction to aid the user in getting the appropriate settings. Particularly for seperating objects. The biggest issue I have had is in analysing a time series of cells that change in size, shape and their distance from one another overtime. Often settings that seem ideal at one timepoint are inadequate at another leading to incorrect mask identification.
I am not sure if you can do this already, but the ability to use informtation from a previous image would be useful for this sort of thing.
Also the ability to specify the number of objects. For example. There will always be 2 objects in an image.

All in all I think this a truly great platform, that can only get better.

As a quick aside is there away to extract data from the matlab file that is saved. The data i want didn’t end up in the spreadsheet, but i know it is there somewhere.




Frpm my comments above:

[quote]The biggest issue I have had is in analysing a time series of cells that change in size, shape and their distance from one another overtime.
Also the ability to specify the number of objects. For example. There will always be 2 objects in an image.[/quote]

I attempted to solve this (with some success) by manually creating a “Nucleus Mask” and then using the Identify secondary objects. The best result in my hands was achieved using Watershed Gradient. The segmentation however was not always as good as that achieved by Identify Primary objects and then separating by Shape. I wonder if the two approaches were combined, fixing the number of objects and separating by shape, if the results would be improved.
It would be nice if u could specify that the number of objects within a group of images would stay the same and put a limit on how large the in change in object size and shape can be between sequential images.



I would like to be able to load a whole series of images, perform an intensity projection on the loaded images, then use the projection for the rest of the pipeline. As it is now, I always have to run two pipelines to process my images: one to do the projections, then one where the projections are loaded and processed.

What I’d *really *like to see for an improved overall usability would be a (1) faster GUI and (2) a solution to the “memory error” that shows up all the time. Other image analysis programs can easily analyse my images without crashing due to memory problems so why shouldn’t Cellprofiler be able to do it? (yes, I’ve tried to use the conservememory module and close down the results windows, but it rarely, if ever, helps)

Apart from those issues, Cellprofiler is really good.



I have one small suggestion, not entirely related to the modules but related to the philosophy and certainly related to the usability.

To make the CP world and usage really, fully Open Source, I would weaken the links between CellProfiler and Matlab. When I was learning about CP and saw the .mat file and usage, I couldn’t help wondering why would such a great, useful, open source program such as CellProfiler (made at least in part with another free, open source language such as Phyton -correct me if I’m wrong), generate a proprietary Matlab file format as one of its output?
I understand that maybe this is not easy to do right away since a lot of people use Matlab (including the developers, I guess), but at least the .mat file could be accompanied by another file to one of the free, open source alternatives of Matlab, namely Scilab (the other is GNU Octave, and there are not a lot more, that I am aware of anyway).


Hi James,

Sorry it took a while to notice this question. What sort of data were you expecting, and where? Per-image or per-object? If you have MATLAB, you can open the output file with that, but we are in the process of moving away from MATLAB support.


The objects are colored by the default colormap. Maybe it is an idea to make it possible to choose a colormap in the module itself?

Hi Peter,
We snuck this in under the radar, but the default colormap is actually selectable under File > Preference…s.


We have maintained the connection for legacy purposes, as you surmise. However, we are in the process of moving the measurements over to an HDF5 wrapper, which promises to be more powerful (and I believe is supported by SciLab).


Hi all,

By way of a follow-up, we have roadmap now on our developer’s wiki, with nascent plans and ideas. It’s not intended to replace our detailed bug-tracking/feature request system, but instead to stay big-picture and prioritize the next year’s plans: … r_Roadmap#

In particular, those interested in this thread may want to check out this section: … provements



I would appreciate the ability to toggle modules on/off in a pipeline (i.e., enable/disable). For example, I may not always want to save images, but will want to do so again with the same module settings later. Same for object tracking. I recognize that there will be some cases when this breaks the pipeline, because of modules that depend on prior modules. But the platform already does a great job of checking pipeline integrity, so I bet this can be overcome.



I’d like to second Ben’s request for disabling modules. If this is implemented then being able to select more than one module at once would be very helpful.


Hi all,

Since late last year, we have been working on an improved image loading interface for CellProfiler. It is still in development but can be previewed and we would appreciate feedback! You can obtain this version in tow ways:

  • Download a compiled installation package from here
    . On Windows, if you already have a CellProfiler installation, simply specify a different folder to install into. - Use git to check out the source code
    from the multiprocessing branch from our GitHub repository. If using Windows, we recommend using GitHub for Windows to do this.
    Please note that since this version is experimental, you should consider any pipelines that you construct to be unusable with the current and future releases of CellProfiler.

Lastly, you can check out our roadmap to see where we are headed in our development.

Let us know what you think!
-The CellProfiler team


We’d be interested in testing that, I can’t download the Mac “experimental” version. The Windows ones appear fine though, could you get someone to take a look.



Hi Nick,
Thanks for pointing that out; the link is fixed.


Thank you, it’s downloading as I type.


Hi guys,

I have downloaded and installed the non-official new CellProf version mainly to use its multi-core functionality. Unfortunately I was not able to run any pipeline with it. Even the simplest one would not start.

Can you help me on this?

Thanks a lot!!

Edit: Here is my error code:

**Traceback (most recent call last):
File “cellprofiler\gui\pipelinecontroller.pyc”, line 1166, in on_analyze_images
File “cellprofiler\pipeline.pyc”, line 1935, in prepare_run
File “numpy\core\fromnumeric.pyc”, line 1800, in amax
ValueError: zero-size array to ufunc.reduce without identity
and another error I frequently get:

Traceback (most recent call last):
File “wx_core.pyc”, line 14640, in
File “cellprofiler\cellprofilerapp.pyc”, line 114, in cb2
AttributeError: ‘CellProfilerApp’ object has no attribute ‘version’