The core functionality of trackpy is grouped into three separate steps:
- Locating features in an image
- Refining feature coordinates to obtain subpixel precision
- Identifying features through time, linking them into trajectories.
Convenience functions for feature finding, refinement, and linking are readily available:
.. autosummary::
:toctree: generated/
trackpy.locate
trackpy.batch
trackpy.link
For more control on your tracking "pipeline", the following core functions are provided:
.. autosummary::
:toctree: generated/
trackpy.grey_dilation
trackpy.find_link
.. autosummary::
:toctree: generated/
trackpy.refine_com
trackpy.refine_leastsq
.. autosummary::
:toctree: generated/
trackpy.link
trackpy.link_iter
trackpy.link_df_iter
trackpy.link_partial
trackpy.reconnect_traj_patch
:func:`~trackpy.linking.link` and :func:`~trackpy.linking.link_df_iter` run the same underlying code. :func:`~trackpy.linking.link` operates on a single DataFrame containing data for an entire movie. :func:`~trackpy.linking.link_df_iter` streams through larger data sets, in the form of one DataFrame for each video frame. :func:`~trackpy.linking.link_iter` streams through a series of numpy ndarrays. :func:`~trackpy.linking.link_partial` can patch a region of trajectories in an already linked dataset.
See the tutorial on large data sets for more.
.. autosummary::
:toctree: generated/
trackpy.static.proximity
trackpy.static.pair_correlation_2d
trackpy.static.pair_correlation_3d
trackpy.static.cluster
.. autosummary::
:toctree: generated/
trackpy.motion.msd
trackpy.motion.imsd
trackpy.motion.emsd
trackpy.motion.compute_drift
trackpy.motion.subtract_drift
trackpy.motion.vanhove
trackpy.motion.relate_frames
trackpy.motion.velocity_corr
trackpy.motion.direction_corr
trackpy.motion.is_typical
trackpy.motion.diagonal_size
trackpy.motion.theta_entropy
trackpy.motion.min_rolling_theta_entropy
trackpy.filtering.filter_stubs
trackpy.filtering.filter_clusters
Trackpy extends the Crocker--Grier algoritm using a prediction framework, described in the prediction tutorial.
.. autosummary:: :toctree: generated/ trackpy.predict.NullPredict trackpy.predict.ChannelPredict trackpy.predict.DriftPredict trackpy.predict.NearestVelocityPredict trackpy.predict.predictor trackpy.predict.instrumented
Trackpy includes functions for plotting the data in ways that are commonly useful. If you don't find what you need here, you can plot the data any way you like using matplotlib, seaborn, or any other plotting library.
.. autosummary::
:toctree: generated/
trackpy.annotate
trackpy.scatter
trackpy.plot_traj
trackpy.annotate3d
trackpy.scatter3d
trackpy.plot_traj3d
trackpy.plot_displacements
trackpy.subpx_bias
trackpy.plot_density_profile
These two are almost too simple to justify their existence -- just a convenient shorthand for a common plotting task.
.. autosummary::
:toctree: generated/
trackpy.mass_ecc
trackpy.mass_size
By default, :func:`~trackpy.feature.locate` applies a bandpass and a percentile-based
threshold to the image(s) before finding features. You can turn off this functionality
using preprocess=False, percentile=0.) In many cases, the default bandpass, which
guesses good length scales from the diameter parameter, "just works." But if you want
to executre these steps manually, you can.
.. autosummary::
:toctree: generated/
trackpy.find.percentile_threshold
trackpy.preprocessing.bandpass
trackpy.preprocessing.lowpass
trackpy.preprocessing.scale_to_gamut
trackpy.preprocessing.invert_image
trackpy.preprocessing.convert_to_int
Trackpy implements a generic interface that could be used to store and retrieve particle tracking data in any file format. We hope that it can make it easier for researchers who use different file formats to exchange data. Any in-house format could be accessed using the same simple interface in trackpy.
At present, the interface is implemented only for HDF5 files. There are several different implementations, each with different performance optimizations. :class:`~trackpy.framewise_data.PandasHDFStoreBig` is a good general-purpose choice.
.. autosummary::
:toctree: generated/
trackpy.PandasHDFStore
trackpy.PandasHDFStoreBig
trackpy.PandasHDFStoreSingleNode
trackpy.FramewiseData
That last class cannot be used directly; it is meant to be subclassed to support other formats. See Writing Your Own Interface in the streaming tutorial for more.
Trackpy issues log messages. This functionality is mainly used to report the progress of lengthy jobs, but it may be used in the future to report details of feature-finding and linking for debugging purposes.
When trackpy is imported, it automatically calls handle_logging(), which sets the logging level and attaches a logging handler that plays nicely with IPython notebooks. You can override this by calling ignore_logging() and configuring the logger however you like.
.. autosummary::
:toctree: generated/
trackpy.quiet
trackpy.handle_logging
trackpy.ignore_logging
.. autosummary::
:toctree: generated/
trackpy.minmass_v03_change
trackpy.minmass_v04_change
trackpy.utils.fit_powerlaw
.. autosummary:: :toctree: generated/ trackpy.diag.performance_report trackpy.diag.dependencies
Trackpy implements the most intensive (read: slowest) parts of the core feature-finding and linking algorithm in pure Python (with numpy) and also in numba, which accelerates Python code. Numba can offer a major performance boost, but it is still relatively new, and it can be challenging to use. If numba is available, trackpy will use the numba implementation by default; otherwise, it will use pure Python. The following functions allow sophisticated users to manually switch between numba and pure-Python modes. This may be used, for example, to measure the performance of these two implementations on your data.
.. autosummary:: :toctree: generated/ trackpy.enable_numba trackpy.disable_numba
All of the linking functions in trackpy provide the same level of control over the linking algorithm itself. For almost all users, the functions above will be sufficient. But :func:`~trackpy.linking.link_df` and :func:`~trackpy.linking.link_df_iter` above do assume that the data is stored in a pandas DataFrame. For users who want to use some other iterable data structure, the functions below provide direct access to the linking code.
.. autosummary::
:toctree: generated/
trackpy.link_iter
trackpy.link
And the following classes can be subclassed to implement a customized linking procedure.
.. autosummary::
:toctree: generated/
trackpy.SubnetOversizeException
These functions may also be useful for rolling your own algorithms:
.. autosummary::
:toctree: generated/
trackpy.masks.binary_mask
trackpy.masks.r_squared_mask
trackpy.masks.x_squared_masks
trackpy.masks.cosmask
trackpy.masks.sinmask
trackpy.masks.theta_mask
trackpy.masks.gaussian_kernel
trackpy.masks.mask_image
trackpy.masks.slice_image
A full overview of all modules and functions can be found below:
.. autosummary::
:toctree: generated/
:recursive:
trackpy