Identifying objects and accounting for exposures

Hi all, I’ve been trying to work through and make a pipeline for my image analyses and I am having a super hard time with it. Here’s the short explanation of what I need to do: I have pictures of C. elegans gonads under 3 different fluorescent stains. One of them is the DAPI (nuclei). What I would like to do is have CellProfiler use the DAPI images to identify spermatids and spermatocytes (they are different sizes, but I’ve had a hard time getting the IdentifyPrimaryObjects module to find them correctly). I want to then use the identification from these images to measure and compare the intensity (and for one of the stains colocalization) of brightness within the other two stains between strains (ie strain 1 green has brighter staining than strain 2 green). The major problems I’ve run into so far are:
A) correctly identifying spermatids from spermatocytes-this could be that I just need to modify the size boundaries, but it wasn’t even close before. I think what would be ideal, if it exists, is something I could use to basically teach it to identify a spermatid region vs a spermatocyte region, since they have a fairly linear cutoff. I don’t know if that’s something I can do though. I’ve been practicing just running through with one strain and I tried using the manual setting and I was able to just circle around the whole region as a single object, but this was a very long and painful task, and it was only a pretty small fraction of my data, so if possible I’d like to try to find a more efficient way to do this.
B) I hadn’t done any microscopy research before and so for a large portion of my data, I have inconsistent exposure times that need to be compared. I have figured out how to include the exposures in my metadata, and I would like to have CellProfiler be able to read from that and account for it in intensity measures. I thought CorrectIllumination might be the best candidate for this, but that seemed like that may not be the goal of that module.
I’m including some sample pictures that can show the different regions I’m trying to look at. The region with the small circles in the DAPI (blue) in the lower right area of that image is the spermatid region and the larger circles in the DAPI are the spermatocytes. One of the stains (green) is looking at a protein so it has a very different appearance than the others (nuclei-blue and methylation-red). I would include my actual project file, but to be honest I don’t even think it’d be helpful. I’ve loaded the images and metadata and then just kept trying different pipelines without any success so I just kept deleting them. Any help at all would be greatly appreciated. I’m kind of floundering!

I’m attaching a pipeline which does the following:

  • Identify the region of interest (ROI, i.e, the worm) to make identifying the sub-compartments easier. I take advantage of the fact that the non-specific DAPI staining is a bit higher than the background auto-florescence.
  • Mask all 3 channels with this ROI object.
  • Identify the nuclei, both true and false positives. I had to adjust the smoothign and maxims suppression so as to capture both sets of needed objects.
  • Measure the morphology, and display the form factor (a measure of roundness) in order to filter for the true nuclei.
  • With the true nuclei, measure the morphology and display the mean radius in order to establish a cutoff for spermatids vs. spermatocytes. Using the DisplayDataOnImage and ClassifyObjects module serve the same purpose of visual display for the purpose to determining a cutoff, just that the show the results in different ways, which I often find useful.
  • Filter for both of these objects based on the measurement and cutoff determined above.

The pipeline is not perfect, but it’s a start.

In the attached project file, the Metadata module includes metadata extraction for each of the channels. Later in the pipeline, I placed the CalculateMath so you can see how to do an arithmetic operation with metadata (change the operation to whatever you want). However, keep in mind that metadata is typically assumed to be the same for a given image set (i.e, collection of channels) rather than per-channel as you have here. Therefore, you must specify the correct metadata for the operation that you want to do. For example, there is gain and exposure information for the DAPI channel (named “dGain” and “dExposure”); however, these same metadata terms exist for the FITC and TRITC channels as well, but are set to nothing. So trying to do an arithmetic operation with a null operator will result in an error.

Hope this helps!

assay.cppipe (19.4 KB)