Telomeres in Cell Profiler

Hi all!

I have a pipeline that detects number of spots per nucleus. The spot is a telomere protein (TRF2) and I expect the number of spots to be similar in all cells (~138 for this hypertriploid cell line, U2OS). There could be some variability due to genomic instability in these cancer cells or due to multiple telomeres overlapping.

However, the number of spots per nucleus has a really wide spread in each sample. The best I can do is to set the threshold quite stringent (average of ~45 spots per nucleus) in order to avoid many cells with false positive spots (>150). My pipeline already filters out large cells so I assume G2/S cells are not counted. 2019_1210_Lois_SLX4_Tin2_TRF2_Colocalization_v2.cpproj (1.9 MB)

Any ideas on the following:

  1. how to get a more narrow spread of TRF2 per nucleus? I am using global thresholding, would adaptive help?
  2. can I compare the number of spots per nucleus across samples with automatic thresholding? or do I need to do manual?
  3. I am doing object based colocalization (number of red spots colocalized with green spots with a Pearson’s coefficient above a threshold, see pipeline). Can I do intensity based colocalization after setting a threshold? It seems like it is working but I worry that if the threshold is binary the coefficient is not legitimate.

Images are here.
I acquired them on a StellarVision SV20 microscope. This is synthetic aperture optics so there is some artifact.


Hi @dodson,

Looking at your pipeline, the thresholding step before identifying puncta is actually generating a binary mask, which limits your ability to segment touching objects. You may be better off just adding those thresholding parameters into the IdentifyPrimaryObjects module, which will give you more flexibility. It also looks like your threshold is coming out quite high, so dimmer objects are being missed.

To answer your questions:
1 - Adaptive thresholding may help, but some level of variability is going to be unavoidable as spots are likely to overlap. One option might be to add a FilterObjects module after the RelateObjects module in order to restrict further analysis down to cells which contain an acceptable number of detected puncta.

2 - Automated thresholding should be fine as long as the settings aren’t changed between different images.

3 - You’d probably be best off using the raw input images for the measurement modules. Analysis will be restricted to the puncta objects, so there’s no need to be using a thresholded input image. Using a binary image will substantially reduce the resolution of your analysis there.

Hope that helps.

Hi @DStirling,

Thanks for the reply.

Binary mask threshold:
Your explanation makes sense. I got rid of the binary mask thresholding step and it does make a difference in the numbers.

Threshold correction factor:
Any advice on how to set this? I would love to read to find some clear criteria. With the modification of removing the binary mask, I can get similar numbers with threshold correction factors from 1.5 to 3. Right now I am taking the empty vector control sample for each experiment, setting the threshold such that there are ~40 TRF2 foci per nucleus, and then applying the same threshold to the remainder of samples in that experiment.

adaptive thresholding:
I will hold off on adaptive thresholding for now in order to avoid adding time to the analysis. I am considering doing “per nucleus” thresholding with the plugin of @PetterRanefall as in this post IdentifyPrimaryObjects Threshold per object
It looks like some of my images with very few cells have excessive numbers of spots per cell.

Filter Objects:
I couldn’t figure out how to do this in CellProfiler. I only get the option to FilterObjects based on measurements and then count doesn’t come up. I am filtering in excel afterwards but would like to do it in CP, let me know if you know how.

Hi again,

Regarding threshold correction factor, this is simply a number that the automatically generated threshold is multiplied by to produce a final threshold value. With a correction factor of 2 a threshold of 0.2 becomes 0.4. This is generally used to fine-tune a threshold generated by the automated methods, so trying to keep it close to 1 is best. If you’re using a correction factor of 3 that usually suggests that your threshold settings may not be very effective, since the correction factor starts to have a bigger impact than any change in the original detected threshold.

Regarding the detection of excessive object numbers, that plugin may be a good option. Unusually low cell numbers may interfere with the automated thresholding, but to partially alleviate this you can specify lower and upper bounds for the threshold in IdentifyPrimaryObjects to ensure it always uses a sensible value.

For object filtering, you’ll need to have the RelateObjects module after both IdentifyPrimaryObjects modules but before FilterObjects. The whole nuclei should be the parent objects used in RelateObjects. If that’s done correctly FilterObjects should be able to find counts under Category ‘Children’. If it doesn’t could you post a copy of the current version of this pipeline?

Regarding threshold correction factor: I see, my numbers are so far away from 1 that maybe this is not the best method for me. I will give the plugin and manual threshold a try.

For object filtering, I can’t take a screenshot now since I am running 70 image sets through a pipeline at the moment. I will confirm later. As I remember, I did use the order of ID both primary objects, then relate objects, then filter objects. Category children was available but I couldn’t specify the count. The pipeline was made in 3.1.9 and the version I am running is 3.1.8.

I finished the analysis for this experiment during the work at home period :wink: I hope everyone is doing well. Ultimately I used raw images to avoid artifacts from reconstruction. Without reconstruction there was variation in the background within each nucleus, and Otsu and the other Identify Object methods in CellProfiler did not do a good job calling foci. I used the Ranefall plugin linked above and it worked great. It was also much faster. This did not require any threshold correction factor. I removed the threshold step.

I removed fields of view without nuclei by manual inspection or by looking for outlier nuclei with strange numbers of foci called. Lower and upper bounds will be a good idea for next time now that I have the values.

There is still high variation in the number of foci but I think it is due to the imaging method. I haven’t tested what happens if I use a confocal and Nyquist sampling, but I may in the future. For now, these results are sufficient for me to make a conclusion and test that with a non-microscopy method.

Best wishes,