Several Issues


I wanna give a short outline on what I’m doing and what I’m planning to use your cell profiler for. I do research on atherosclerosis and have macrophages in coculture with human vascular smooth muscle cells. I mark my macrophages with red LDL and monitor how and how often it is transferred from the immune cells into the VSMC. (Yes, that’s what happening). I use green anti-Alpha Actin Antibodies to proof that the low density lipoprotein is indeed found in VSMC.

Since there will be A LOT of images to process, I would love to do this with the cell profiler. So far I think I got a basic understanding on how it works, however there’s a point where I got stuck and don’t think it’ll be smart to try more features before I get this right.

Right now, I don’t get the program to properly distinguish between the different nuclei. Those of VSMC are larger and not as bright as those of the macrophages. If I do measurements with e.g. Axio Vision from Carl Zeiss, it shows that the small nuclei have a diameter of about 8-11 pixel. However, the program seems to artificially magnify the actual size. If I play with the threshold, I don’t get satisfying results either. Can you think of what I am doing wrong?

I included the picture I’m working with right now. It’s converted into jpeg to reduce the size. Besides you can see the pipeline that I constructed so far. Not much yet – I know, but I like to go step by step.

I’d appreciate any help. Thx for that great tool you built there :wink:

Matthias Roeper (216 KB)


I bet we can help. The IdentifyPrimaryObjects module is pretty automatic and does a good job finding objects given only some rough idea of the appropriate size. In your case, it is doing too good a job finding nuclei! Even when you specify a small size range, the signal-to-noise of your images is so nice that CellProfiler also sees the very obvious large nuclei and includes them. Tweaking the size range is in this case mainly determining how much to split or merge clumped objects.

Thus, most likely you should have a single IdentifyPrimaryObjects module to identify all nuclei in the image, then use ClassifyObjects to separate the two classes, based on size alone or perhaps based on shape features too if they are relevant and if size alone is insufficient. Want to give that a try and let us know how it turns out?

Note also that identifying objects in an image when there are two populations with very distinct morphology is often actually quite a challenge. Tweaking parameters to identify one population accurately (e.g., the small nuclei) often ends up disturbing the proper identification of the other (e.g., large nuclei are then split in two!).



Thanks a lot for the input! I spent much time with ImageJ and CellProfiler, trying all kinds of features and modules to get the results I’d like to have. I managed to make some progress, but right now, I’m at some point where I’m running out of ideas.

I took your advice and tried the ClassifyObjects Module. However, there are a lot of clumped objects that do not get separated properly, so the result would be false in the first place. The classifying works ok. I have two populations: (high intensity, low area = Macrophages; low intensity, high area = VSMC) How can I assign the other 2 “false” populations to another one? For example, I got several MPHs, which are slightly dimmer and end up as LOW-LOW. On the other hand, I have many HIGH-HIGH Objects, since CP doesn’t separate some of the clumped MPHs. The pipeline which uses the ClassifyObjects module isn’t working right now, but I included it nonetheless.

After all, I had the feeling, that the results were better when I separated both nuclei by size in the first place. By enhancing the contrast and playing with the size cut-off, I managed to get a decent algorithm. The problem I have right now is the fact, that a watershed doesn’t seem enough to separate between clumped nuclei. I tried enhancing the pictures with ImageJ (different contrast, manual tresholding and converting to binary pictures, enhance edges, add/ subtract/multiply features, eliminating the background, running watershed, etc …) On one hand, even with manual tresholding and a watershed filter it is not possible to separate the nuclei properly, so I am not sure if simple tresholding will be enough for my project. On the other hand, I have problems running the ImageJ module. Although I have written a few simple, working Macros and ImageJ is running in my pipeline, the pictures are not edited. Is that a bug??? (So I edited the pictures myself for now). Furthermore, I get an error when I try to load a binary image from ImageJ (It is still an 8bit image, but the values are only at 1 and 255). How do I solve that?

Identifying the Alpha Actin positive cells seems to be a challenge as well. The cells are not round, differ in shape and size and the intensity varies since the staining is complicated and not every cell is stained perfectly. Here I see the same problem: Treshholding doesn’t seem to be sufficient to fit my needs. Is there a way to implement some sort of directional information of the actin fibres for example? By the way, I tried identifying the VSMC as primary objects as well. The results are not better, maybe even worse, since the input from the nuclei is missing.

Last but not least, I wondered if there are people in Germany or even my State or city that use cellprofiler as well. Being able to talk to someone who is experienced in handling this program might be a great help, considering I am doing everything from scratch on and rely on handbooks, papers and your online support :wink: You ask for personal information on your download page. Do you think you could help me out with contacts?

I know, that’s a lot of information and issues that I got, but I think the CellProfiler will be a tremendous help once I have a running pipeline. I can’t thank you enough for your help and support!

Best Regards,

Matthias Roeper

PS: I included my current pipelines, the images and my ImageJ Macro in the zip file.
CellProfiler - (2.85 MB)

I’m attaching a pipeline that takes a somewhat different appraoch from what Anne suggested. Since the MPH cells are high intensity and the VSMC nuclei are low intensity, I have two IdentifyPrimObjs modules, one tuned for the MPH and the other for nuclei. The main difference is using Otsu 3-class thresholding to differentiate between the two. In order to pull the VSMC nuclei, I then establish a parent-child relationship between the two sets of nuclei using the Relate module and use FilterObjects to remove all nuclei that have 1 child or more (in other words, MPH nuclei that overlap with all the nuclei). Hopefully, this should leave the VSMC nuclei. the added bonus is that while the 2nd IdentifyPrimaryObjs should be tuned towards finding the large dim nuclei, it doesn’t have to be perfect since the small, bright misegmentations are mostly likely MPHs and will get filtered out anyway.

As far as I know, we don’t have a large user community in Germany, although there are folks at ETH-Zurich who might be helpful; I suggest contacting Peter Horvath if you go that route. Another option is to look through the members list for the forum (here) and see if anyone has listed Germany as their location. Lastly, if you have funds to visit Boston and are willing, we would happy to give you a tutorial in person!

2010_11_08.cp (9.06 KB)