Source code for palmari.processing.steps.trackpy_tracker
from .base import *
[docs]class ConservativeTracker(Tracker):
def __init__(self, max_diffusivity: float = 5.0):
# Attributes will automatically be detected as parameters of the step and stored/loaded.
# Parameters must have default values
self.max_diffusivity = max_diffusivity
[docs] def track(self, locs: pd.DataFrame):
# This is where the actual tracking happen.
import trackpy as tp
delta_t = self.estimate_delta_t(locs) # This is a Tracker's method.
dim = 2
max_radius = np.sqrt(2 * dim * self.max_diffusivity * delta_t)
logging.info("Max radius is %.2f" % max_radius)
tracks = tp.link(locs, search_range=max_radius, link_strategy="drop")
locs["n"] = tracks["particle"]
return locs
@property
def name(self):
# This is for printing
return "Default tracker (Trackpy)"
# The following dicts are used when setting the parameters through a graphic interface, using open_in_napari()
widget_types = {
"max_diffusivity": "FloatSpinBox",
"delta_t": "FloatSpinBox",
}
# For details about widget types, see https://napari.org/magicgui/
widget_options = {
"delta_t": {
"step": 0.01,
"tooltip": "time interval between frames (in seconds)",
"min": 0.0,
"label": "Time delta (s)",
},
"max_diffusivity": {
"step": 1.0,
"tooltip": "Assumed maximum diffusivity (in microns per square second).\nThis is used in conjunction with the Time delta to set the maximal distance between consecutive localizations",
"label": "D_max (um^2/s)",
"min": 0.0,
},
}