How do I measure 'circularness' of spots on a 2D grid?
Entering edit mode
15 months ago
ngarber ▴ 60

This will be a bit of a long question in hopes that someone can give advice on the best way to do what I'm trying to do.

I do SPOT peptide arrays to measure peptide-protein binding, which effectively consist of a 2D grid of circular spots, and my output is infrared fluorescent signal in a grayscale image.

Binding strength is logarithmically proportional to spot brightness, and I measure brightness by densitometry after subtracting background, which I infer from the signal in the 'valleys' between the spots. So far, I'm doing this in GelAnalyzer 19.1, a standalone program which is designed for western blots, but which works well for this application - essentially, I call each row of the array a 'lane', and each spot is a 'band'. Background is defined using the 'rolling ball method', which draws lines under the peaks, and then the signal is declared as equal to the area under the peak curve.

Here's an example showing the plot for one 'lane', shown at the bottom of this post. The background varies across the array, which is on a cellulose substrate. The blue areas are the integrated curves that the densitometric values comes from, which are used as spot signal intensities.

The thing is, I can't make accurate calls about which spots are 'positive' by only using a cutoff for the densitometric values, because this leads to some combination of false positives or false negatives. It's because some of the spots are what we call 'smears', in that they don't look like neat bright circles, but are more just a hyperintensity of background on that square that gets mistakenly considered as a peak.

Right now, I'm manually going through and making calls on which spots are actually bright spots above background ('positive') and which are just smears that aren't defined circles like they should be ('negative'), but this is obviously not ideal. Is there such a thing as an image processing tool, either as a program or as a script I can run, that will let me analyze a grid of spots to make calls on which have bright sharp circles and which do not? A measure of circle-ness, as it were.

GelAnalyzer 19.1 screenshot showing single 'lane' of 2D array

microarray 2D GelAnalyzer Python image • 620 views
Entering edit mode
15 months ago

There's a whole community of people working on image analysis and plenty of tools to do the job. One of the most popular tools is ImageJ/Fiji but there are also command line ones and libraries (check for example scikit-image for python or the EBImage Bioconductor package for R. Also the community hangs out on where you can ask exactly this type of question.

EDIT: To give a bit of domain-specific vocabulary, what you're asking about is called segmentation (i.e. separating background from foreground signal) and there are a few features that can be used to measure how round a segmented object is such as circularity, eccentricity, compactness ... (see these slides).

Entering edit mode

Tagging this excellent answer with some Python options since that was a category tag. See here, and here, plus maybe look into Napari and BioImage Model Zoo/ Along the lines of Napari, here will probably help give a good sense of what it can do. (Plus, here.) And I know has a Python library, see here and here.


Login before adding your answer.

Traffic: 1113 users visited in the last hour
Help About
Access RSS

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6