Counting fluorescent cells

Hi !
I am currently trying to count the number of dividing cells,that are fluorescent (green), in ovary tissue. To obtain a percentage of dividing cells I use DAPI as a stainer for all the cells nuclei. My pipeline is working fine with the DAPI counting but not great with the dividing ones, specially when there are not a lot of dividing/fluorescent cells. Maybe because the automatic detection based on intensity is not the good one, but I can’t get any other to work better.
Attached is my pipeline and a set of the pictures I am using.

Thanks a lot for your help !

Marie

PS: I use crop to be able to isolate only one follicule before counting the cells.





PipelineF.cpproj (532 KB)

Hi,

A few suggestions:
(1) Try and save your original images in grayscale. Your ColorToGray chooses colors that don’t quite line up with the images’ color values provided (This is not that important though)
(2) Change the setting in the first EnhanceOrSuppressFeatures from Circles to Speckles, and raise the feature size to 30. ‘Circles’ enhances rings and not necessarily filled circles, so the Speckles setting should work better.
(3) Your first IdentifyPrimaryObjects isn’t loading the output of EnhanceOrSuppressObjects. Change the input to FilteredBlue. Also, the 10-30 pixel cutoff is pretty strict on the 30 pixel end, so you may be losing some cells on the high end.

Is your goal then to (a) find cells using DAPI and then (b) count the cells that are bright green, i.e. dividing? If so, then I would suggest looking at my attached pipeline. See if that helps!

David
PipelineF_DLogan.cppipe (16.5 KB)

Thanks a lot David, it’s working just fine with the color pictures as well as the grayscale ones :smiley: .

Marie

OK good!
David

Hi !

Thanks again for your help. I have another question. I tested the pipeline you proposed on a couple of images and, depending on the contrast it is working great or it is not detecting any division but you can clearly see by eye that cells are dividing (I attached an example). I noticed that if I decrease the minimum treshold value in the filter objects module it works better. Is there any way to have an automatic measurement for this treshold or do I have to change it manually depending on the set of pictures I am using ?

Marie







Pipeline.cpproj (549 KB)

There is no straightforward way to filter objects with an automatic threshold that I can think of. It might be a nice addition someday. Also note that you might want to aggregate the objects across images to get and/or apply the same automatically calculated threshold for bright/dim objects across an experiment or set of images. To do this would require that you do a little post hoc analysis on your Per_Object table – in fact, that is what I have done in the past for some of my own projects and what I would suggest here. You could plot all your per_object measurements and pick a threshold, or calculate a threshold automatically as you suggest, and then finally apply this threshold in a single filter step to your per_object data in a CSV or an SQL query for databases.

Best,
David

Hi David,

I have to say you lost me a little. From what I understood, and correct me if I am wrong, a way to fix my problem would be to pick a treshold value, for example averaging all the treshold I get for each set of images ?
I enclosed an example to make sure I am considering the good treshold. In this one I would keep 0.318 and average it with the treshold of the other images.
Thanks for your help (and patience)

Marie


Hi Marie,

Sorry for the slow response, but briefly, we always find it preferable to have an automatic threshold than a fixed one. It may be hard to find a decent method to do this for all your images, but it is better than a fixed threshold.

So at this point, if you are still needing help, I’d suggest posting your current pipeline with a couple examples – one with decent counts and one with bad counts.

Cheers,
David

Hi David,

Thanks for the answer. I have been working with the following pipeline for a while now but I have to say I never really solved this problem. What I usually do is that I manually modify the minimum threshold in the FilterObjects module so it more or less fits with the threshold given in the identify secondary objects module. But I am not very happy with this solution because it takes long and I don’t like the idea of interfering in the choice of the treshold, still it is giving better results than a fixed one that wouldn’t change depending on the image set.
I attached two sets on images, one working ok with the following method, one not that much because of the lack of contrast I guess.

Thanks again for your help,

Marie









Projet.cpproj (79 KB)

Hi Marie,

Sorry for the delay - I was away on holiday and family leave for awhile. Have you solved this issue?

Cheers,
David