Tracking bright spots detected by Laplacian of Gaussian filter
[ ]:
%pip install -q --upgrade -r requirements.txt
#%pip install --upgrade -r requirements.txt
#%pip uninstall -y laptrack
#%pip install -e ../../
Importing packages
laptrack.LapTrack is the core object for tracking. We also import blob_log from skimage to detect bright spots.
[1]:
import napari
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from skimage.feature import blob_log
from laptrack import LapTrack
from laptrack import datasets
Loading images and showing in napari
[2]:
viewer = napari.Viewer()
images = datasets.bright_brownian_particles()
viewer.add_image(images)
[2]:
<Image layer 'images' at 0x7f998ad6f130>
Detecting spots by Laplacian of Gaussian filter
[3]:
spots = []
for frame, image in enumerate(images):
_spots = blob_log(image, min_sigma=1, max_sigma=3, num_sigma=3, overlap=0.5)
df = pd.DataFrame(_spots, columns=["y", "x", "sigma"])
df["frame"] = frame
spots.append(df)
spots_df = pd.concat(spots)
viewer.add_points(
spots_df[["frame", "y", "x"]], size=3, edge_color="yellow", face_color="#ffffff00"
)
[3]:
<Points layer 'Points' at 0x7f998cf691b0>
Tracking by LapTrack
[4]:
lt = LapTrack(cutoff=5**2)
track_df, _, _ = lt.predict_dataframe(spots_df, ["y", "x"], only_coordinate_cols=False)
track_df = track_df.reset_index()
viewer.add_tracks(track_df[["track_id", "frame", "y", "x"]], tail_length=50)
[4]:
<Tracks layer 'Tracks' at 0x7f995861aec0>
[5]:
viewer.dims.current_step = (9, 0, 0)
plt.imshow(viewer.screenshot())
plt.xticks([])
plt.yticks([])
[5]:
([], [])
[ ]: