Issues with muscle fiber histology analysis



I was hopeful you could provide assistance with my analysis.

At the bottom of this description, you will find a link to the two images discussed below.

The first image is a cross-section of muscle fibers which were stained for MHC-1 (green). The black fibers are therefore MHC-IIa or IIx containing fibers by process of elimination. Unfortunately, the “background” of the image is also black, which is causing some of the problems, even when conducting pixel classification in ilastik. DAPI was used to identify myonuclei.

The second image is a stain for a protein within the cytosol. The more intensely red the stain, the more of the specific protein being probed for.

Critically, I want to calculate the fiber-type specific contents of this protein, based on the intensity of the stain using CellProfiler. I was hopeful you could provide an effective pipeline to do so as the pipelines available on the site, and custom pipelines I’ve built are not producing trustworthy results:

Here’s the breakdown of what I want to do.

  1. I need to remove background noise and segment/separate type-I fibers (green) from type 2 fibers (black) effectively. I do not need the myonuclei for this analysis, so eliminating them is fine. However, if you can provide a way to keep those in and separate them from the fibers to count them and calculate their size, that would be helpful.

  2. I then need these fibers labeled or classified as their own specific “object”. That is, I need them to be identified as type 1 or type 2 fibers in order to calculate fiber-type specific protein amounts.

  3. I would then like to overlap or align this fiber-type classified image with the second image (red stain) in order to elucidate fiber-type specific amounts of this protein more accurately and efficiently. I am aware this will likely require gray scaling and that multiple modules can be used for various steps, but wanted to ask for your expertise to expedite this as much as possible.

I look forward to your assistance.



Pretty images but quite a challenging problem when there isn’t a membrane stain.
I think what we can try is to use the biological arrangement of nuclei of the muscle fibers as a “psedo-membrane” marker, since they are at the peripheral of the fibers.
So if you use EnhanceOrSuppressFeature on the blue channel >> “Neurites” > “Tubeness” input high values, e.g. 25.,
you’d kind of “connect the dots” of the nuclei, and create a pseudo-membrane, something like this:

On the other hand, you can easily identify the bright green fibers, so go ahead, identify them and mask them out of business:

The remaining of the masked image would become valuable, if you use ImageMath to add it up with the “connected nuclei” created previously:

Now that’s ^ quite an OK image to identify your “dark fibers”, as shown here a result, red contours are for dark fibers, yellow for green:

It’s not perfect but hopefully give you an idea to start Fibers.cpproj (857.1 KB)
Also, with this pipeline, you already identified green and dark fibers separately, your downstream analysis with protein targets is quite ready.

Good luck.



Thank you for your quick response.

This pipeline is indeed producing more sensible values than previous attempts.

However, I want to clarify a few things before analysis, and for future muscle tissue analyses.

1.) Please find two similar images at the links below that contain a membrane stain.

For these images, how would you advise modifying the pipeline, given the membrane stain, to calculate:
a) the number of fast and slow fibers,
b) the number of nuclei,
c) the cross-sectional area of each individual fiber

2.) I have used some of the measurement modules, but would like to ensure that the most accurate methods are used to calculate values for the key dependent variables for each image.

Therefore, what modules do you recommend to calculate the cross-sectional area of each individual fiber and how would you recommend sequencing modules and their exportation to a .csv to most efficiently calculate the difference between two image’s average cross-sectional area data?

3.) You alluded to the calculation of fiber-type protein content being expedited with the pipeline provided, but, to be certain, what module/s do you recommend to calculate the fiber-type specific protein contents?

Lastly, how would you recommend accurately calculating total myonuclei and myonuclear number surrounding specific fiber-types?

Thanks so much for your assistance, Minh.



With membrane stain, it becomes quite similar with this topic.
The idea is : you can use EnhanceOrSuppressFeatures on the membrane channel (e.g. OrigRed after ColorToGray split), with “Tubeness” size about 10-25.
Then invert the resulted image and identify the fibers. You may need to use large “Size of smoothing filter” and “local maxima distance”, because of the large size of fibers.

After you identify individual fibers, you can just add MeasureObjectIntensity to measure the all the signals you need to differentiate fast and slow types of fibers.

Then add MeasureObjectSizeShape to measure the cross section area .

For the total myonuclei surrounding specific fiber-types:
You will need to IdentifyPrimaryObjects independently for nuclei, then use RelateObjects to relate which nuclei belong to which fibers. However, I think this is a challenging issue, because the nuclei often look very much “in between” fibers.
Nevertheless, it works to some extent. In the end you will have a “count” number of child nuclei per parent fiber.

After all these measurements and relation, you then use FilterObjects to classify Fast and Slow fibers based on intensity limit. For example, fast fibers have high mean intensity for Green signal, while slow fibers have it lower.

In the end, when you ExportToSpreadsheet , you can choose to export each fiber type to 1 separate table, or merge them both in 1 spreadsheet.

Example pipeline: Fibers2.cpproj (647.3 KB)


Thank you, Minh.

I have fine tuned another pipeline based on your assistance, and I think I am all set. I may reach out to you within the next couple of days during analysis to clarify any additional methods.

I really appreciate your help.