Analysis of Microarrays

Hello, I’ve been trying out your software and I think it would be great for my particular application however I was hoping that I could get some help.

What we are investigating is if cells or other objects adhere to a particular coating. The coating is printed into circular features in a microarray design. We are dealing with thousands of features in a single analysis which is why CellProfiler’s automated analysis would be useful.

The sort of pipeline that I’d like to use would be something as described below:

Open images (bright field and other channels for single circular feature)
Crop/Mask circular feature in bright field
Apply Crop/Mask to other channels
Count cells inside and outside Crop/Mask
Close images
Repeat for all images

The problems arise due to variability in the images and the circular feature. The feature is roughly circular, roughly in the centre, can vary in size (from 400-1000um), and can have faint borders. Also due to the large number of images it would not be ideal for manual input to be involved for every image.
If someone could suggest a way to tackle this it would be very much appreciated. If it helps I can include some example images if requested.


Hi Matthew,

Have you seen the CellProfiler Examples page here (, especially the “Yeast Patch identification” example pipeline? Prior to having seen your images, it might be of use.

Regardless, so that we can best assist you, can you please post here:
(1) At least one sample image (or set of images that comprise a minimal data set). Better yet, an example of both a positive and a negative control, or in this case, an easy-to-define circular spot and a hard one.
(2) A CellProfiler pipeline (i.e. a *.cp file). Any attempt that you have made is beneficial to us.


Hi David,

Thanks for getting back to me. I’ve attached two example sets of images: one from an easily identifiable circular feature and one where cells have crowded the feature making the feature difficult to define. Each set contains a brightfield (_B) and a DAPI (_D) image.

I’ve also included my pipeline so far which on the easier spot appears to be able to define the feature spot well but not the harder one. At the moment I’ve used an OverlayOutline command which may not be the right tool for the job of separating the cells inside and outside the feature but may better describe what I’m looking for.

The yeast patch analysis does look like it has components that would apply to my analysis but you’d be able to say better than I could.
Please have a look whenever you can.


Matt’s Pipeline.cp (7.24 KB)

Thanks for writing back, Matt. Segmentation with brightfield images is always hard, so I wasn’t too hopeful at first, but I think I have made the pipeline more robust. I heavily modified your pipeline (mine is attached), but it was very instructive to have yours as a starting point. Please note that I made comments in the Module Notes window at the top of many of the modules to guide you in my thinking. Let us know how this looks.

DLogan_Pipeline.cp (11 KB)

Hi David,

Your pipeline is very good and works pretty well on the example images. I’ve done a manual cell count on the Easy Spot and it matches well with the generated result. Nuclei counting does not seem to be as robust for the Hard Spot though (see below). I’ve tried it out on some other images and have encountered some problems.

In a few cases the feature is not identified and so the relate tool gives a value of 0 cells attached. I realise you said that this can be a difficult function to perform but if you can think of anything I’ve attached an image with cells clearly present inside and outside the feature.

Another common problem is that the analysis will wrongly identify the topography of the feature as nuclei to which I thought that if it were to identify cells instead of just nuclei that should reduce this misinterpretation. I’m aware that CP is ideal for finding and segregating cells and so your assistance in fine tuning cell counting on the Hard Spot example and the attached would be very helpful.


Hi Matthew,

The simplest answer to your problem is to make the “Feature” spot fluorescent! Well, easiest for me, at least :smile:

Barring that, I have attached a pipeline that seems to help. What you define as the Feature is, for me, hard to tell exactly. Presumably, it is the vaguely circular region, however there are some blobs at the top of the most recent example image that look very similar to aspects of the inner circle. Some tweaking of the parameters are likely still in order, but it seems to work for all 3 examples well enough.

DLogan_Pipeline2.cp (8.69 KB)

Hi David,

Thank you so much for your help. I think the pipeline is at a place that I am happy with. I have made some tweaks to further improve it for my use which I will upload for your interest and for the community.

I have kept all your enhancing steps to get the feature identified as a primary object. Then in order to identify nuclei better I have put in a crop command which essentially does nothing but allows me to use the PerObject thresholding method which is working well. It then goes on to relate and filter nuclei against the feature and gives me a value of before and after. Finally it will export to a database which I have yet to try.

I’m looking to get data such as feature area, intensity, nuclei count pre/post filtering etc. out of this analysis. Would CellProfiler Analyst be your recommendation for this task or would you suggest using a databasing software like SQLite?

Thanks again for your help, I certainly wouldn’t have been able to accomplish this without your support.
Matt’s Finished Pipeline 18-02-13.cp (11.6 KB)

Hi Matthew,

Glad to hear the pipeline is working well now with your modifications.

As for analyzing the results, if the output will fit into Excel, i.e. it isn’t terribly large amounts of data, then we recommend using the ExportToSpreadsheet module. It will output a CSV file, which your favorite analysis tool will likely read in (Excel, Matlab, etc). If you are doing high-throughput work (say, >65,000 output rows/sites) then a database is probably the best choice. Indeed, you can use CellProfiler Analyst to inspect the data and make scatterplots, histograms and other simple views on the data, but I would suggest using another tool if you are not familiar with CPA. It was originally designed as a user-friendly machine-learning classifier, and all the other visualizations were add-ons. E.g., there are not any statistical tests built in. So use whatever analysis tool you are most comfortable with.

And please do cite the CellProfiler project when you do publish! Here’s how: