Mitochondrial Characterization with 2 Channel Fluorescence Intensity Analysis

I am new to using CellProfiler and have limited experience using ImageJ and would greatly appreciate some advice on how to best perform the analysis for my experiment.

I have images from cells that were stained with MitoTracker GreenFM (for mito. mass) and MitoTracker Red Cmx Ros (for mito. membrane potential) and imaged in a 5x5 panel at 20x on a 12-well plate using an automated live-cell microscope (Lionheart). There is some overlap between the images as they were subsequently stitched into a single image (Unless the stitched images are used for the analysis, it may be necessary to take this into account so that the same cells aren’t measured twice). There are 4 treatment groups corresponding to each column of the plate (3 replicates per group).
Ultimately, I need to determine the fluorescence intensity of both channels so that I can calculate the mitochondrial membrane potential relative to mass.

The images are saved as individual tiffs for each channel (“GFP” and “Cy5”) and do not appear to contain any metadata beyond the file names. The regular expression for the files is “” so for example: “A1_1_GFP.tiff” and the stitched images are named like “A1_1_Stitched[GFP 469,685]” for example (Note: anything within the brackets will not seem to work for organizing images in the “NamesAndTypes” module on CellProfiler).

My goal is to design a pipeline in CellProfiler (or a script/macro in imageJ) to accomplish this task in an automated fashion. I would need to keep track of the matching images so that the ratios are calculated appropriately (ie. A1_1_GFP and A1_1_Cy5 are from the same field/location). So first of all, any advice as to how to set up my “NamesAndTypes” module in CellProfiler would be much appreciated.

Next, I would like to create an outline of each cell in the image, by using thresholding and/or generating a mask (I’m assuming using the “IdentifyPrimaryObjects” module in CellProfiler might accomplish this task) and then measuring the fluorescence intensity on both channels within the same outlined area (mask?). Even better if this can be accomplished on a per-cell basis as well as being averaged for the entire image (within the masked area). I’m uncertain as to whether a background subtraction step would be necessary.

Ultimately, I would like to output the data to a spreadsheet where I can perform any remaining calculations that are necessary (such as the ratios) and transfer the data into Graphpad/Prism for statistical analysis. Ideally, I would also like to keep saved images of how the cells were masked so that I can attempt to match the setup for future related experiments.

I believe this should process should be fairly reasonable to accomplish, but I am having a great deal of trouble figuring out how to automate the process. Once again, I would greatly appreciate any help and advice you can provide in regard to the best approach to handling this analysis.

Here are some examples of the matching images from each channel. I was only able to upload the individual images as there was an error with the larger stitched images:

A1_1_CY5.tif (2.1 MB) A1_1_GFP.tif (2.1 MB)

All of what you describe (identifying cells with IdentifyPrimaryObjects, measuring each cell in all channels with MeasureObjectIntensity, and exporting the data to spreadsheet with ExportToSpreadsheet) and more (you can easily calculate the ratio of channels in each cell after measurement using the CalculateMath module) are definitely possible within CellProfiler, so you’re on the right track for sure!.

You may want to check out our example pipelines- especially the Colocalizaiton example and/or our YouTube playlist of video tutorials to help you get started- it should help you get your NamesAndTypes issues sorted out and get more easily underway. We do also hold office hours every 2 weeks, next one being in a bit over a week.

If after trying, you still can’t quite get one aspect or another, feel free to post your pipeline-to-date- it’s a lot easier for us to help you by improving the pipeline you’ve already started rather than trying to build one from scratch.

Best of luck!

Hi bcimini,

Thank you for your suggestions. I hadn’t considered the fact that the colocalization example would be so similar to what I was looking for. Although I am not actually interested in measuring the colocalization of the two stains, I found the example very useful and was able to modify it for my own purpose fairly well so far.

However, I did notice one odd thing about the colocalization example which is making me unsure of how to set up my own pipeline. In the example, they perform illumination corrections in the first three modules. Yet, when they move on to the align module, they do not use the corrected images, instead, they revert back to the original images for alignment, then proceed to use the aligned images for the remainder of the analysis. As far as I can tell, the illumination corrected images go completely unused for the entire analysis (after the first 3 modules). If that’s the case, what was the point of the illumination correction?

I was able to adapt many of the modules to my own images so far, but I am unsure if I should continue to follow suit with the example and ignore my illumination corrected images. Admittedly, I could not distinguish any difference in the “corrected” images compared to the originals. I’m also unsure as to what would be expected for publication. When I look at phase contrast images from the scope I used, there is distinctly uneven illumination. However, the original fluorescence images do not appear to be uneven (at least not obviously). I would appreciate any advice and explanation that you or anyone else can provide.


Hmm, I expect that’s an error that crept into the pipeline at some point- ideally the Align module (which creates the images downstream) would indeed use the two corrected images- nice catch!

Thanks bcimini,

I believe I may have discovered why that error occurred. As I’ve explained, I am adapting this pipeline for my own application. Throughout this process, I have tested the pipeline using my own images (only 8 representative images, similar to the example) ending with the Measure Colocalization module. Interestingly, when I use the original images rather than the corrected images the pipeline runs just fine (although it does take a few minutes to process on my computer). However, when I change the settings so that the illumination corrected images are used for the align module on, the program does not respond and never completes the analysis. I know the hardware of my computer can be a bit of a bottleneck for processing speed, but its strange to me that it would finish in a few minutes with the original images, but never complete the analysis (I left it run for over 1hr) when using the illumination corrected images. That just doesn’t make sense to me, as it shouldn’t add a significant complication to the pipeline. It seems as though it is a glitch within CellProfiler itself that is not allowing the analysis to be completed. I’m interested to hear your or anyone else’s thoughts on the matter. Perhaps I am missing something that would solve this problem for me (which, honestly, would be ideal).

That’s definitely weird and sounds like a bug- to help us confirm, can you send the EXACT pipeline your’e using? Thanks!

Sorry for the delay, but the pipeline I used was the example pipeline for colocalization. The only change that I made before this issue occured was to make it so that the align (and subsequent modules) used the illumination corrected images rather than the originals. Everything else was kept the same, but this caused the program to stop responding pretty much indefinitely. This happened with both the example images as well as my own images. I attached a pipeline from an earlier save where I was modifying the example pipeline. This one should have the same issue I mentioned, but there are more modifications than necessary for the problem to occur and I used my own images (I believe the error still occurs with the associated example images).Problem Pipeline_Modified Colocalization Example.cpproj (612.6 KB)

Beyond the error regarding illumination correction, I have a couple more questions to help me complete my pipeline. I have included my current pipeline, which is still a work in progress. My overall goal is to produce a mask that selects a fairly large and central region of interest (containing the majority of mitochondria) for each cell using a threshold. I then want to use this mask to measure the intensity of the area inside the selected cells (without measuring background) on both the green and red channels. What I am having a bit more trouble with is in how the measurements and calculations are performed and reported. Ideally, I would like it to produce a spreadsheet containing the mean and integrated intensity for both channels on a per-cell bases. However, I believe the way I set it up using a mask means that it will only measure the entire image within the masked area.

I would appreciate some help in figuring out how to achieve the following things:

  • How to measure all of the cells individually on both channels within an identical area (using IdentifyPrimaryObjects for each channel results in different sized perimeters between the two channels, which I feel would be an issue).
  • How to set up a CalculateMath (or alternative) module so that it calculates mitochondrial membrane potential (red intensity) relative to mitochondrial mass (green intensity).
  • Finally, I would like to produce a spreadsheet that, ideally, includes the individual mean and integrated intensities for each cell (and/or the whole masked image area if necessary) as well as the relative ratio (the calculation above).

From there I should be able to produce a graph that displays mitochondrial membrane potential relative to mass for each treatment group. I’m a bit unsure as to how to go about performing these calculations for this graph. I’m sure it’s fairly straightforward, but for some reason, I’m currently struggling to work it out. Additionally, I was thinking that having per cell measurements may be beneficial for use in GraphPad/Prism to calculate significance, but I’d love to hear others’ feedback in this regard.