Understanding Measuring Object Skeleton Results for Fibroblasts

Hi everyone,
I am an undergraduate student working on designing a pipeline capable of measuring the skeleton of human fetal lung fibroblasts, which is something I have not really seen done in literature. I have been able to successfully use the measure object skeleton module to give me an accurate output, but I am confused as to how to interpret the results and/or manipulate them to give the measurements that I am looking for.
I start with composite images like the one below, with nuclei shown in white to be identified by IdentifyPrimaryObjects and cells in gray to be identified by IdentifySecondaryObjects.

plate1-dmso100k-1-comp.tif (1.2 MB)

Then, the images are run through ConvertObjectstoImage, Closing, Morphological Skeleton, and
MeasureImageSkeleton, and MeasureObjectSkeleton for a final result like this:

Although I think my pipeline is functioning well with recognizing cells, this skeleton that it is creating is not very helpful to what I am trying to accomplish, which is to measure each branch of the cells so that treatment groups can be compared in the number and length of branches. Is there some way to change my pipeline or use the data it gives me to accomplish this? I am also struggling with the fact that longer projections seem to be broken down into smaller segments, but it seems to me I have no way of identifying which segment is which in order to combine them, as the module does not give out the length of each branch, just the total skeleton per cell.

Also, would someone mind explaining to me what in my images would be counted as a Branch/Trunk/Endpoint? I have read the technical explanations involving the number of neighbors that each pixel has but I am struggling with relating it to my results. For example, would the number of endpoints be equal to the number of long branches protruding from the cell?

Hi @emwelter,

Thanks for the explanation But, we could help you better if you could share your pipeline that you are working with along with a sample image. I think as per your explanation you are interested in number of branches & its length for each cell.
Trunk depends on the seed object that you have chosen in the “MeasureObjectSkeleton” module. PFA image

Here the blue point is the end point though is it coming from the cell since it doesn’t have a another pixel i.e. any other branch it is counted as endpoint not a branch.
A branch should have another pixels (or branched to be connected which could be one pixel in length)

Yes, any branch more than 2 pixels (i.e. what is the definition of long?) in length.

Beyond this you may have to share your pipeline to help you better.

Regards,
Lakshmi
www.wakoautomation.com

Hi @lakshmi,
Thank you for your response, that is very helpful! I’m not authorized to post my entire pipeline (my apologies), but I’ve tried to make this image below to demonstrate what I am hoping to do. I am wanting to measure each extending ‘arm’ coming from the central nucleus of the cell, without all of these additional measurement bits branching to the sides of the cell. Is there any way I can accomplish this? I have thought of attempting to measure the distance between the nucleus and endpoints that CellProfiler gives, but I have not seen the coordinates of endpoints in the output from the program. Are these supplied anywhere, or is there some other way to accomplish this that I am not thinking of?

Hi @emwelter,

Ok. I worked your sample a bit. PFA pipeline. Mostly similar to yours, but I have done a slightly different skeletonisation. In the image below, all the trunks are the points you need I think.

I have given nuclei as the seed in MorphologicalObject skeleton. I tried to exporting the skeleton graph relationship. It generates a vertices & edge file. Though I am not sure about the columns there & I will get back to you on that later. I think you need the number of trunks per object.
I think the this skeletonisation is better.
Hope this helps as of now.
skeleton.cpproj (400.5 KB)

Regards,
Lakshmi
www.wakoautomation.com

Hi @emwelter,

As mentioned earlier, is the number of trunks per nuclei is what you are looking for, here is refined pipeline. Please ignore my earlier one.
skeleton.cpproj (94.8 KB)

In the results file MyExpt_Nuclei.csv file the column “ObjectSkeleton_NumberTrunks_MorphologicalSkeleton” will give that number for every nuclei. PFA same file as well.
MyExpt_Nuclei.csv (8.8 KB)

Hope this helps.

Regards,
Lakshmi
www.wakoautomation.com