I have made a CellProf. pipeline that identifies synaptic puncta (high intensity dots, basically) that are in 3 different channels. In my images I have between 3000-6000 puncta. I am trying to see the relationship between various combinations of channels, through colocalization of these puncta.
I understand how to, using Mask Objects, get the number of objects that overlap in two channels. However, I am wondering how to get populations of objects that represent 3 channels at the same time.
Using Mask Objects, if I mask channel1 by channel2 (c1x2), then mask this with channel 3 (c1x2 by c3) the options given mean that I lose information due to bias in my first mask.
In my first mask I can return the whole objects or partial objects for EITHER channel 1 or 2 depending on which channel is the “base”. But in my case, if I have an object in channel 3 that overlaps with channel 2, but not channel 1, only keeping the channel 1 objects means that when I mask with channel 3, I won’t get objects with an overlap.
Meanwhile, with Image Math, I can do all three channels at the same time, but I lose object segmentation by making the images binary. I could always re-segment on the resulting binary image, but I am concerned about how well this would work when objects are close together, reintroducing a clumping segmentation issue.
Can I solve this problem somehow programmatically with a bunch of combinations of masking? (c1x2, c2x1, c2x3, c3x2, c1x2x3?) Would Image Math work better? Is there another module (Relate objects?) that would work better for what I’m trying to do?
I can of course post my pipeline or example images if this doesn’t make sense.