Counting CD3+ (DAB+) cells in tissue IHC sections


Hi there,

I am looking for advice on how best to identify CD3+ T cells in hematoxylin-costained IHC tissue sections. The pipeline I have set up right now seems to do a decent job but would anyone have suggestions on how to improve the object identification?

Also, the pipeline I have set up now has the user manually draw an ROI before quantifying T cells in that area. In practice we draw ROIs in the Aperio Webscope program to quantify tumor area. I’d like to be able to submit to CellProfiler screenshots or snapshots of tumors with an ROI already drawn around it (see example) so that the user would not need to manually redefine this area each time. Is that possible using CellProfiler? Any advice or suggestions would be much appreciated!


AL_DABCD3_wROI.cpproj (651.7 KB)

CD3 and CD8 T cells count pipelin e


You may consider making 2 separate pipelines:

  • First pipeline to manually mark the ROIs, then save the ROI_masks (or save ROI_outline as objects), as shown in this example AL_DABCD3_wROI_beforeROI.cpproj (637.4 KB)
    Note that: here I saved both masks and objects, but you can just choose one.
  • Second pipeline to load the masked ROI, and do downstream analysis, as shown in this example AL_DABCD3_wROI_afterROI.cpproj (1.1 MB)

This practice has some benefits:

  • It serves your purpose well: the next user don’t need to draw ROI over again.
  • When you analyze many of this kind of pictures, you would want to draw all the ROIs in all the images first, and then let the second pipeline automatically runs the downstream analysis by itself (i.e. identify small cells, measure intensities etc…).
    Because the downstream analysis may take several minutes or hours. You don’t want to stay attending and wait to draw the next ROI of the next image set.

Regarding improving cell identification, I suggest to use Global or Adaptive Otsu segmentation, not “Automatic” as it is currently. However , it is best to first have a good cell membrane marker to identify individual cells.

If it’s not possible, you may consider to try ilastik. After identifying cells with ilastik, you can export the map of cells, and load into CellProfiler to do downstream analysis, similarly to the above 2-step method.

Hope that helps.