Quantifying vesicle distribution inside cells

HI everyone!

I’m aware that there has been at least one previous topic focused on a similar problem (Quantification of the distribution of vesicles in different sections of a cell (fluorescence intensity)), but I would like to ask a different question.

I can see by eye that most of the cells I’m studying do display polarization of their intracellular vesicles, but want to automate the analysis process so as to prove that observation beyond any reasonable doubt.

However, I am struggling to determine what would be the ideal logical process to create cell subdivision ROIs. I’m calculating the angle of each particle relative to a horizontal line and thought that calculating the average angle of all intracellular particles to then build quadrants around it would be a good approach, since it immediately resolves situations in which there is polarization and does not significantly affect situations in which the particles distribute randomly:

However, I am struggling with the mathematics behind this (and actually think it may be fairly simple, but I don’t know how to define this situation more mathematically): the polarization example would numerically result in e.g. 3 particles having angles between 0 and 45 and the 4th particle having an angle close to 360 degrees, given the calculation relative to the horizontal line - and thus the average angle calculation is skewed to a completely different value than what I would find usable.


How can I perform a “correct” calculation of the average angle?

Thank you in advance!

Hi @pedrolmoura,

I assume that your cells and the vesicles are in two separate channels?

Here is the method I like to use for this analysis:

  1. Segment the cells
  2. Analyze the centroids of the cells WITHOUT intensity weighting
  3. Analyze the centroids of the cells WITH grayvalue weighting, but use the vesicle channel as the intensity

This will give you two points inside each cell. These two points represent the true geometric center, then another center that is “pulled” in the average direction of the vesicles.

Between these two points you can calculate a vector: the magnitude is how polarized your vesicles are, and the angle is where they are polarized to.

This way you don’t need to worry about the case where you average angles such as 1 degree and 359 degrees to get 180 degrees, which is the opposite of the correct answer!

Do you think this would get you the same answer you need? Unfortunately I don’t know how to calculate this information in FIJI (though I am 99% sure you can)! I normally do this in Python using regionprops from scikit-image.

1 Like

Hi @tlancon,

Thank you for your reply!

Indeed, the cells and vesicles are in two separate channels (generated through color deconvolution of a BF image). Generating a vector from the true centroid and a weighted centroid is an extremely interesting idea and one that had not occurred to me at all! I think that implementing that should solve my problem fairly easily, so I’ll start looking into it right now.

Thank you very much!


1 Like

Hi @tlancon,

I’m pleased to report that it worked perfectly, thanks again!

For future reference if anyone else wants to do this, the FIJI/ImageJ approach (as scripted for several images) would be as follows:

rt = new ResultsTable()
an = new Analyzer(Img, Analyzer.CENTER_OF_MASS + Analyzer.CENTROID, rt)
double CenterMassX = rt.getValue("XM",rt.getCounter() - 1)
double CenterMassY = rt.getValue("YM",rt.getCounter() - 1)
double CentroidX = rt.getValue("X",rt.getCounter() - 1)
double CentroidY = rt.getValue("Y",rt.getCounter() - 1)
def polarizationAngle = getAngle(CentroidX, CentroidY, CenterMassX, CenterMassY)


1 Like

Awesome, and it looks pretty easy in ImageJ!