How to analyze costainings?

cellprofiler

#1

Hello,

I performed a coculture experiment in which my cells of interest have red nuclei. I want to determine the percentage of those nuclei that are also green and/or blue.

On FIJI I would use a watershed segmentation, threshold my 3 channels, create a mask in the red channel, transfer it to the green and blue channels and count the number of particles in each channel.

How do I translate this in CP? Should I “IdentifyPrimaryObjects” in each channel and then use the “RelateObjects” module, once with the green objects as child objects and once with the blue ones and child objects? I guess this would work for the Red+Green+ and Red+Blue+ populations, but how to I obtain the Red+Green+Blue+ population?

Is there anything I should be careful about? Any downstream modules I should use?

Thanks for your help,

Laura


#2

Hi,

Your strategy will work, though by using “RelateObjects” you’ll catch anytime there’s only even a single pixel overlap between the a red and blue object- to get the tricolor, you could make the children be the third color (ie Green) and the parent be the double (ie Red-Blue). For that reason I personally prefer MaskObjects, which allows you to keep the overlap based on what fraction of the object overlaps.

Depending, you may also find it a bit faster to segment just once in your green channels, then either threshold the other channels into masks and use MaskObjects or measure the red objects in the green and blue channels and use FilterObjects to determine positive cells. What works faster and best will depend on your particular images.

Good luck!


#3

Thanks @bcimini!
I assumed that RelateObjects would only take into account the objects properly overlapping. MaskObjects would make more sense then!
However, I have an issue with MaskObjects: When I was using RelateObjects, I filtered the “children” but the option disappears when I use MaskObjects. Is that normal? How do you filter in such case?
Thanks!


#4

MaskObjects should produce Children objects, at least for the object being masked. If you want the masking object to have the resulting object as a child as well, you can add an extra RelateObjects module to achieve this.


#5

Thanks a lot @bcimini, I managed to have it working!