zitmen / thunderstorm

ThunderSTORM: a comprehensive ImageJ plugin for SMLM data analysis and super-resolution imaging
http://zitmen.github.io/thunderstorm/
GNU General Public License v3.0
92 stars 42 forks source link

Suggestion: Filter localizations based on local density #8

Closed zitmen closed 9 years ago

zitmen commented 9 years ago
First of all, sorry to use the bug tracker for just a feature suggestion if it wasn't
meant for this purpose.

I'd like to suggest a new kind of filtering based on localization density. This means
that for every localization event,  the number of neighbors at a given radius (in 2D
or 3D) is calculated, and if it is below a threshold number of neighbors, the localization
is discarded. The parameters are the radius for neighbors searching, and the minimum
numbers of neighbors necessary to keep the localization event.

It allows to very efficiently remove "noise" (i.e. isolated) localizations
when reconstructing a well-structured labeling (such as microtubules in STORM imaging).
Typically a radius of 100 nm and a minimum number of neighbors of 10 dramatically enhances
dense reconstructions (i.e. in the order of 1-5 10^6 localizations per 30 x 30 µm
image).

Do you think it could be added to ThunderSTORM? Thanks!

Original issue reported on code.google.com by lechristophe on 2014-04-08 10:28:38

zitmen commented 9 years ago
Posting suggestions here in Issue tracker is fine and we are glad you did so.

We think this feature is useful thus we accept the suggestion, however, it will take
some time since we are now finalizing version 1.2.

Original issue reported on code.google.com by zitmen on 2014-04-08 10:53:29

zitmen commented 9 years ago
Hi Christophe,

you might be interested in new feature we've added in the latest build of ThunderSTORM
(dev-2014-07-16-b1). Even though it was developed for a different purpose, it can serve
well for local density filtering.

Here is how it works:
1) load data into the Results table
2) run Plugins > ThunderSTORM > Colocalization > CBC
3) now we need to do a little workaround step; lets say you want radius 100nm - then
set radius step to 50nm and step count to 2 (this is simply because the minimum number
of steps for CBC is 2 - you could also set 100nm radius and 2 steps, which gives you
the same result but it will be little slower); finally uncheck all the checkboxes except
the last one and hit OK; (see attached screenshot)
4) two new columns have been added into your table; it should be fairly easy to apply
the filter of minimum number of neighbors, say you want more than 10; write `neighbors_in_dist_100
> 10` in the Filter and hit enter (or click Apply)

Hope it helped. We will add the UI for local density filtering later, so there will
be much less steps involved in future.

Best,
Martin

Original issue reported on code.google.com by zitmen on 2014-07-16 09:33:50


zitmen commented 9 years ago
I forgot to mention that this feature is 2D only, thus the radius is of a circle, not
a sphere.

Original issue reported on code.google.com by zitmen on 2014-07-16 10:00:00

zitmen commented 9 years ago
local density based filtering has been added to the results table in revision 47707eb79b20
daily build will be available later today

----------------------------------
The new feature works for both 2D and 3D. The module is able to work only with a single
radius. If you need filtering based on more radii, e.g., 3 molecules in 20nm && 5 in
50nm, then you have to use the CBC module as described above.

Original issue reported on code.google.com by zitmen on 2014-10-27 13:15:10