Identifying cells based on expression of DAPI plus a fluorophore?


I’m trying to create a pipeline that will identify RFP+ cells and GFP+ cells. And I want to make sure from my DAPI channel that each identified cell has ONLY ONE NUCLEUS.

My current pipeline (uploaded here: PAX6-1.cpproj (830.7 KB)
) involves three IdentifyPrimaryObjects steps. One identifies RFP+ cells, one identifies GFP+ cells, and one identifies nuclei. And then two IdentifyTertiaryObjects modules relate nuclei to GFP+ and RFP+ cells.

However, I am wondering if there is a better way to make sure that I’m actually identifying only RFP and GFP+ cells with one nucleus…? I wonder if I should be using a FilterObjects or Relate Objects module instead?



Why not use IdentifySecondary objects with nuclei as the seeds to find your cells? Is there a reason you need to use IdentifyPrimary for cell recognition?

So, I did try that method. However, I found that it was identifying far too many cells that way (essentially for every nucleus as a primary object, the pipeline was registering an RFP+ cell, whereas on visual inspection it’s very clear that not every cell with a DAPI+ nucleus has meaningful RFP expression. In about an hour I can upload an image set to demonstrate. Sorry for delay.

I can definitely take a look at your images + pipeline next week, but my bet is that you’re going to get better results from the pipeline I’m uploading now. I had to guess at some of the parameters, but give it a shot and tweak it a bit and let me know if you have questions or how it turns out.

PAX6-1_usesecondary.cppipe (22.4 KB)

1 Like

Thanks so much for taking a look at this.
This is an example of the images I’m working with.
Thanks for the pipeline you shared. I have two concerns regarding this:

  • Will the Mask steps pick up colabeled cells?
  • The pipeline is not able to perform the MaskObjects steps, as it is requesting a binary image. Does this mean I should set the ApplyThreshold outputs to binary rather than grayscale? If so, do you know if this will interfere at all with the Identify Secondary Objects step?
    With thanks,

PS Had to make these images low-res to upload them; sorry if that causes any problem.

Unfortunately, we probably do need full-resolution images - can you place them somewhere online?

1 Like

Understood. They’re here:

Thanks so much for taking a look. Please let me know if there is any issue with the photos.
cells with colocalized expression possibly getting missed and am not sure how best to guard against this…

With thanks,
PAX6-1.cpproj (826.4 KB)

Hi Ruth,
It looks like you’ve made some tweaks here to answer your own questions (great job btw!), but as to the final one- the pipeline is definitely capable of picking up colabeled cells. I’ve made a few tweaks here-

  • Without the images, I didn’t know that the RFP was on a nuclear protein; it doesn’t make sense to use that to help define cell bodies so I switched the cell finding to the GFP channel only.
  • I added a module to show you that some cells are both GFP and RFP +, and added their outlines in OverlayOutlines .
  • I played with the thresholding settings for the GFP channel a bit.

If you think cells are getting missed, my advice is to first look at the ApplyThreshold settings to make sure you agree with where the threshold is being set, then at the MaskObjects settings- I originally set it that a cell would get kept as “positive” if at least 50% of it overlapped the thresholded area for GFP or RFP but that may not be right for your images. Playing around in test mode is really the best way to figure out where those lines should be drawn for your experiment.

Also, don’t get misled by the OverlayOutlines output- if a cell had been found as both GFP+ and RFP+, you’d still only see one set of outlines (since they’d both be drawn in the same place, one covers the other).

Good luck!

PAX6-1_edits2.cppipe (28.0 KB)


This is extremely helpful; thank you so much!!
All best,