Measure Distance Cells Have Migrated

New user here. My name is Sam. I have cerebellar microexplants on coverslips, that is to say I have cubes of tissue ~1mm in diameter derived from the cerebella of neonatal mice. Over one week in culture, cells migrate away from the main body of the explant. I stain nuclei with Hoechst and collect fluorescence images. I need to quantify the distance each cell is from the main body of the explant. For simplicity, I’ve overlaid the explant with a 50% gray circle. I can get both the explant and the migrated cells to be identified (see image ending in _Outline2), but I don’t know how to calculate distance of each cell from the explant. Any help would be much appreciated.

Hi Sam,

We don’t have a straightforward way to measure this. But here are a few ideas which use built-in solutions in CellProfiler:

  • MeasureObjectRadialDistribution - You could convert your objects to a binary image (ConvertObjectsToImage), shrink them to points (ExpandOrShrinkObjects) and then measure the radial distribution of this set of points. The intensity will be proportional to the number of points in each ring. This collapses the individual object data, but might give a good enough approximation to your outgrowth
  • You ought to be able to use IdentifySecondaryObjects to measure distances to a parent object. It would be grown infinitely out from your explant, to segment the rest of the image excluding the explant. Then RelateObjects on the cells as children and IDSecondary object as parent, and then measure distances to the additional explant object. But I tried and can’t get IDSecondary to grow out into the whole image. This should work and was my first instinct, but I’ll ned to file a bug report before this will work I think (try yourself anyway!)
  • You could try a modification of this pipeline. The distance transform from the explant gives the distance at each point in the rest of the image to the nearest explant pixel, which is exactly what you want. You could binarize your objects as in my first example above, and then measure the intensity of your objects in the distance transform image. I haven’t tried this, but I think it would work.

Let us know how it goes!



Thanks for the help! I was able to get your first suggestion to work…mostly. After identifying all of the primary objects, I shrunk the nuclei to points, then converted those objects to a binary image (black & white). I then used MeasureObjectRadialDistribution on that binary image to measure the ShrunkenNuclei from the edge of the Explant. I got good data, but it’s clear the distribution bins were measured from the center of the Explant, rather than the edges. Just to test, I changed the module to measure from the center of the Explant and got the same distribution. Any idea why the module wouldn’t measure from the edge of the Explant?


Hi Sam,

Would you post your pipeline so we can take a look? What do you have set for the setting “Object to use as center?”


Here’s the pipeline and the images. Thanks!

Select objects to measure (ShrunkenNuclei)
Object to use as center (Edges of other objects)
Select objects to use as centers (Explant)

151014 Find Nuclei 3 - identifies radial distribution.cpproj (870 KB)


I think the issue here is that in your MeasureObjectRadialDistrubution you need the “Entire” image to be used as the “Object to measure” and not the ShrunkenNuclei points. Our typical use case is measuring some cytoplasmic marker from the nucleus out to the cell membrane. So the analogous objects here are the explant (nucleus), the ‘Entire’ image (cell membrane) and the cytoplasmic markers (your ShrunkenNuclei). If you do that it works for me, at least as far as I can tell, i.e. it does not give me zeros for the first many annuli.

Does that help?


I must be missing something. I’ll upload a picture of my MeasureObjectRadialDistrubution settings and the resulting spreadsheet. I don’t get a radial distribution with the settings as I interpreted your advice.

Sorry for the slow reply, but these are my settings for that module: