{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Feature finding in 3D confocal images" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Confocal microscopy is a techique that is able to make image slices of your sample. New developments (spinning disk scanning, resonant mirrors) have made this technique sufficiently fast for 3D tracking. Commonly, the sample is mounted on a piezo stage that is able to quickly scan the sample in Z direction. In this way, sequences of Z pictures can be made. By repeating this, the sample can be followed real-time in 3D.\n", "\n", "Because of the different techniques used for XY and Z resolution, pixel sizes in these directions are mostly not equal. It is easy to extend the method of Crocker & Grier to 3 dimensions with different feature sizes. Trackpy can do this from version v0.3; the only thing you need to do is load your images as 3 dimensional numpy arrays and supply a tuple value for diameter, describing feature size in each dimension." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, we initalize IPython and load the required packages. PIMS and Trackpy v0.3 are required." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Setup IPython, pims, trackpy" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import matplotlib as mpl\n", "import matplotlib.pyplot as plt\n", "mpl.rc('figure', figsize=(10, 6))\n", "import numpy as np\n", "import pandas as pd\n", "from pandas import DataFrame, Series # for convenience\n", "\n", "import pims\n", "import trackpy as tp\n", "\n", "import warnings\n", "warnings.filterwarnings(\"ignore\", module=\"matplotlib\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Import 3D images" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We make use of `ImageSequenceND`. This reader class searches for files matching a certain search string. The filename should contain indentifiers for each axis (dimension). For example `\"demo_t001_z001.png\"` contains identifiers `t` and `z`. We set the returned image axes to `zyx` and the iterating axis to `t`. In this way we get 3D images indexed by `t`.\n", "\n", "For this tutorial, the images are inside a zipfile. You can extract the images from the specified archive to check them out." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\n", "Source: /Users/charles/codes/trackpy-examples/sample_data/pmma_colloids.zip\n", "Axes: 4\n", "Axis 'z' size: 25\n", "Axis 't' size: 33\n", "Axis 'y' size: 128\n", "Axis 'x' size: 128\n", "Pixel Datatype: uint8" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "frames = pims.ImageSequenceND(r'../sample_data/pmma_colloids.zip', axes_identifiers = ['z', 't'])\n", "frames.bundle_axes = ['z', 'y', 'x']\n", "frames.iter_axes = 't'\n", "frames" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The time-index of the first frame is always 0, regardless of the index in the filename. We can use `pims` 3d scrollable stack feature to display a 3D image. Use the scroll wheel to scroll through the focal planes.\n", "\n", "This feature will not work online, download the example and run it yourself to checkout the scrollable stack feature." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "Frame([[[ 0, 0, 0, ..., 7, 0, 0],\n", " [ 0, 0, 0, ..., 3, 0, 0],\n", " [ 0, 2, 0, ..., 13, 4, 0],\n", " ..., \n", " [ 0, 3, 6, ..., 0, 0, 0],\n", " [ 5, 0, 0, ..., 1, 0, 0],\n", " [12, 14, 0, ..., 2, 0, 0]],\n", "\n", " [[ 3, 24, 18, ..., 34, 14, 4],\n", " [ 0, 0, 0, ..., 33, 9, 1],\n", " [ 6, 14, 6, ..., 0, 0, 0],\n", " ..., \n", " [ 5, 6, 0, ..., 0, 0, 0],\n", " [31, 11, 2, ..., 0, 0, 1],\n", " [ 4, 0, 2, ..., 1, 0, 0]],\n", "\n", " [[ 5, 0, 6, ..., 4, 2, 4],\n", " [ 0, 0, 0, ..., 5, 2, 8],\n", " [ 7, 0, 0, ..., 12, 5, 3],\n", " ..., \n", " [ 0, 0, 4, ..., 1, 0, 3],\n", " [ 4, 0, 0, ..., 0, 0, 2],\n", " [ 0, 1, 1, ..., 0, 1, 0]],\n", "\n", " ..., \n", " [[12, 17, 24, ..., 4, 4, 3],\n", " [12, 1, 0, ..., 0, 0, 0],\n", " [ 0, 5, 0, ..., 0, 0, 0],\n", " ..., \n", " [ 4, 0, 0, ..., 16, 19, 5],\n", " [ 8, 7, 23, ..., 16, 19, 18],\n", " [ 0, 0, 0, ..., 7, 1, 0]],\n", "\n", " [[ 0, 0, 0, ..., 40, 23, 7],\n", " [ 0, 0, 10, ..., 5, 3, 0],\n", " [ 0, 0, 0, ..., 14, 7, 3],\n", " ..., \n", " [ 0, 0, 4, ..., 7, 11, 15],\n", " [ 8, 1, 0, ..., 13, 5, 5],\n", " [25, 0, 15, ..., 0, 0, 3]],\n", "\n", " [[ 0, 2, 0, ..., 12, 0, 0],\n", " [15, 1, 14, ..., 30, 15, 1],\n", " [ 0, 4, 0, ..., 0, 0, 0],\n", " ..., \n", " [ 0, 0, 0, ..., 0, 0, 0],\n", " [ 0, 5, 0, ..., 21, 5, 2],\n", " [27, 9, 0, ..., 6, 8, 5]]], dtype=uint8)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "frames[0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Feature finding" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can use `trackpy.locate` to generate a table (a pandas `DataFrame`) of the feature coordinates. `locate` only requires a feature diameter. This needs to be an odd integer and can be specified for each dimension seperately. The order of dimensions is the same as the order of the image array, typically (z, y, x)." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
xyzmasssize_xsize_ysize_zeccsignalraw_massep_xep_yep_zframe
092.7674669.0714012.0124987546.1101852.8607612.6657101.405736NaN119.94842511471.00.0114640.0114640.0051390
154.69907412.2276421.9135054283.3195612.8222522.6106931.350248NaN77.3860817476.00.0179940.0179940.0080670
267.94081836.9203172.0337956039.4999282.9300732.9246571.355519NaN83.1900379711.00.0136460.0136460.0061170
34.87305637.9466931.9599035162.6189022.8970052.7907641.331927NaN81.7390488632.00.0154480.0154480.0069250
458.81561580.0250632.0598165191.1550192.8140452.5932171.386939NaN98.1835907986.00.0167740.0167740.0075200
\n", "
" ], "text/plain": [ " x y z mass size_x size_y size_z \\\n", "0 92.767466 9.071401 2.012498 7546.110185 2.860761 2.665710 1.405736 \n", "1 54.699074 12.227642 1.913505 4283.319561 2.822252 2.610693 1.350248 \n", "2 67.940818 36.920317 2.033795 6039.499928 2.930073 2.924657 1.355519 \n", "3 4.873056 37.946693 1.959903 5162.618902 2.897005 2.790764 1.331927 \n", "4 58.815615 80.025063 2.059816 5191.155019 2.814045 2.593217 1.386939 \n", "\n", " ecc signal raw_mass ep_x ep_y ep_z frame \n", "0 NaN 119.948425 11471.0 0.011464 0.011464 0.005139 0 \n", "1 NaN 77.386081 7476.0 0.017994 0.017994 0.008067 0 \n", "2 NaN 83.190037 9711.0 0.013646 0.013646 0.006117 0 \n", "3 NaN 81.739048 8632.0 0.015448 0.015448 0.006925 0 \n", "4 NaN 98.183590 7986.0 0.016774 0.016774 0.007520 0 " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "features = tp.locate(frames[0], diameter=(5, 9, 9))\n", "features.head() # displays first 5 rows" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Because we specified different diameters for each dimension, trackpy we return `size` and `ep` (static error) for each dimension seperately. We can plot the feature locations on top of the original picture. You can see that there are no features found at the edges. This is because these particles partly fall out of the measurement box." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "Frame([[[[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " ..., \n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]]],\n", "\n", "\n", " [[[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " ..., \n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]]],\n", "\n", "\n", " [[[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " ..., \n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]]],\n", "\n", "\n", " ..., \n", " [[[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " ..., \n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]]],\n", "\n", "\n", " [[[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " ..., \n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]]],\n", "\n", "\n", " [[[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " ..., \n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]]]], dtype=float32)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tp.annotate3d(features, frames[0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To see wether the features are biased by the pixelation, we can take histograms of the decimal part of the coordinates. As particles don't know about the pixel grid, these distributions should be flat." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Features found: 147\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlMAAAF1CAYAAADMXG9eAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAH9NJREFUeJzt3X+wX3V95/HnG4KVJcoPo3fTgF67\noC0lq8hdi+Pu9kbUQdgxzNSlMNENO1kztdramnZN687090zcTnSVZWvj4hAdNFDUTUZkXZbmuwyO\noKQoEag1wlWJSIpA6kVrDb73j+8JXkJuvufez/d8z/ckz8fMnfs93++55/v6fvO9J697zuecE5mJ\nJEmSFue4tgNIkiR1mWVKkiSpgGVKkiSpgGVKkiSpgGVKkiSpgGVKkiSpgGVKkiSpgGVKkiSpgGVK\nkiSpgGVKxSLiX0TEoxHximr6ZyPi7yNiuuVokjQ0EfG7EfHJQ+77YER8oK1MGg/h5WQ0DBHxVuC3\ngSng08DuzPyddlNJ0vBExHJgD7AiMx+PiCXAd4A3ZOaudtOpTW6Z0lBk5ofpr2TuAJYD72k3kSQN\nV2Y+BNwK/PvqrguBRyxSskxpmD4MnANcmZk/ajuMJDVgK/Dm6vabgY+1mEVjwt18GoqIWAp8BdgJ\nvAFYmZmPtptKkoYrIp4NPAT8G+B24OzM/Fa7qdQ2y5SGIiKuBpZm5q9GxBbglMy8tO1ckjRsEfFh\n4Jfo7+J7Tdt51D5386lYRKymP3bgbdVd7wJeERFr2kslSY3ZCqzEXXyquGVKkqQFiIgXAn8L/PPM\n/Ie286h9bpmSJKmmiDiO/tb3bRYpHbSk7QCSJHVBRJwEPAx8k/7QBglwN58kSVIRd/NJkiQVsExJ\nkiQVGOmYqWXLluXk5GSteZ944glOOumkZgMNUdfyQvcydy0vdC9znby7du16JDOfP6JIneS6brx0\nLXPX8kL3MtfNW3t9l5kj+zrvvPOyrp07d9aedxx0LW9m9zJ3LW9m9zLXyQvcmSNcb3Txy3XdeOla\n5q7lzexe5rp5667v3M0nSZJUwDIlSZJUwDIlSZJUwDIlSZJUwDOgSx0yufHGRpY7s+niRparwXbv\n3c8VDfy7+m8qjY5bpiRJkgpYpiRJkgpYpiRJkgpYpiRJkgpYpiRJkgpYpiRJkgpYpiRJkgpYpiRJ\n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\ne48laVwM3M2Xmb+Xmadn5iRwGfDXmbkG2Am8qZptLbC9sZSSJEljquQ8U+8G3hURe+iPobp6OJEk\nSZK6o85uvqdkZg/oVbfvB145/EiSJEnd4RnQJUmSClimJEmSClimJEmSClimJEmSClimJEmSClim\nJEmSClimJEmSClimJEmSClimJEmSClimJEmSClimJEmSClimJEmSClimJEmSClimJEmSClimJEmS\nClimJEmSClimJEmSClimJEmSCgwsUxHx7Ij4YkR8JSLuiYg/qu5/cUTcERF7IuK6iHhW83ElSZLG\nS50tUz8CXpOZLwNeDlwYEecD7wXen5lnAo8B65qLKUmSNJ4Glqnsm60mT6i+EngNcEN1/1bgkkYS\nSpIkjbHIzMEzRRwP7ALOBK4C/hy4vdoqRUScAdyUmecc5mfXA+sBJiYmztu2bdvA55udneWB/U8u\n4GXUt3LFyUNf5uzsLEuXLh36cpvUtcxdy7vv0f08/MO2U9S3csXJtd/jVatW7crMqRHEkqROWFJn\npsx8Enh5RJwCfBr4+bpPkJlbgC0AU1NTOT09PfBner0em297ou5TLMjMmsHPv1C9Xo86r2ucdC1z\n1/Jeee12Nu+u9es1FmbWTHfuPZakcbGgo/ky83FgJ/Aq4JSIOPi/xenA3iFnkyRJGnt1juZ7frVF\niog4EXgdcB/9UvWmara1wPamQkqSJI2rOvshlgNbq3FTxwHXZ+ZnIuJeYFtE/ClwF3B1gzklSZLG\n0sAylZl3A+ce5v77gVc2EUqSJKkrPAO6JElSAcuUJElSAcuUJElSAcuUJElSAcuUJElSAcuUJElS\nAcuUJElSAcuUJElSAcuUJElSAcuUJElSAcuUJElSAcuUJElSAcuUJElSAcuUJElSAcuUJElSAcuU\nJElSAcuUJElSgYFlKiLOiIidEXFvRNwTEe+s7j8tIm6OiK9X309tPq4kSdJ4qbNl6gCwITPPBs4H\n3h4RZwMbgVsy8yzglmpakiTpmDKwTGXmQ5n5N9Xt7wP3ASuA1cDWaratwCVNhZQkSRpXCxozFRGT\nwLnAHcBEZj5UPfRdYGKoySRJkjogMrPejBFLgf8H/FlmfioiHs/MU+Y8/lhmPmPcVESsB9YDTExM\nnLdt27aBzzU7O8sD+5+s+RIWZuWKk4e+zNnZWZYuXTr05Tapa5m7lnffo/t5+Idtp6hv5YqTa7/H\nq1at2pWZUyOIJUmdsKTOTBFxAvBJ4NrM/FR198MRsTwzH4qI5cC+w/1sZm4BtgBMTU3l9PT0wOfr\n9Xpsvu2JOtEWbGbN4OdfqF6vR53XNU66lrlrea+8djubd9f69RoLM2umO/ceS9K4qHM0XwBXA/dl\n5vvmPLQDWFvdXgtsH348SZKk8VbnT+dXA28BdkfEl6v7fh/YBFwfEeuAbwKXNhNRkiRpfA0sU5l5\nGxDzPHzBcONIkiR1S3cGdQzJ5MYbh77MDSsPMD30pUqSpC7wcjKSJEkFLFOSJEkFLFOSJEkFLFOS\nJEkFLFOSJEkFLFOSJEkFLFOSJEkFLFOSJEkFLFOSJEkFLFOSJEkFLFOSJEkFLFOSJEkFLFOSJEkF\nLFOSJEkFLFOSJEkFLFOSJEkFLFOSJEkFBpapiPhIROyLiK/Oue+0iLg5Ir5efT+12ZiSJEnjqc6W\nqWuACw+5byNwS2aeBdxSTUuSJB1zBpapzLwVePSQu1cDW6vbW4FLhpxLkiSpEyIzB88UMQl8JjPP\nqaYfz8xTqtsBPHZw+jA/ux5YDzAxMXHetm3bBj7f7OwsD+x/suZLaN/EifCC005uO8aCzM7OsnTp\n0rZj1Na1vPse3c/DP2w7RX0rV5xc+z1etWrVrsycGkEsSeqEJaULyMyMiHkbWWZuAbYATE1N5fT0\n9MBl9no9Nt/2RGm0kdmw8gCX1nhd46TX61Hn32JcdC3vldduZ/Pu4l+vkZlZM92591iSxsVij+Z7\nOCKWA1Tf9w0vkiRJUncstkztANZWt9cC24cTR5IkqVvqnBrhE8AXgJdGxIMRsQ7YBLwuIr4OvLaa\nliRJOuYMHNSRmZfP89AFQ84iSZLUOZ4BXZIkqYBlSpIkqYBlSpIkqYBlSpIkqYBlSpIkqYBlSpIk\nqYBlSpIkqYBlSpIkqYBlSpIkqYBlSpIkqYBlSpIkqYBlSpIkqYBlSpIkqYBlSpIkqYBlSpIkqYBl\nSpIkqcCStgMcLSY33tjIcmc2XdzIctXX1L/bhpWNLFaSNIaKtkxFxIUR8bWI2BMRG4cVSpIkqSsW\nXaYi4njgKuANwNnA5RFx9rCCSZIkdUHJlqlXAnsy8/7M/CdgG7B6OLEkSZK6oaRMrQC+PWf6weo+\nSZKkY0bjA9AjYj2wvpqcjYiv1fixZcAjzaUart9sMG+8t4mlAh17j+lY3iY/E02oPmd1M7+o0TCS\n1DElZWovcMac6dOr+54mM7cAWxay4Ii4MzOnCrKNVNfyQvcym7d5XcwsSeOgZDffl4CzIuLFEfEs\n4DJgx3BiSZIkdcOit0xl5oGIeAfwOeB44COZec/QkkmSJHVA0ZipzPws8NkhZZlrQbsFx0DX8kL3\nMpu3eV3MLEmti8xsO4MkSVJneW0+SZKkAq2WqUGXo4mIn4mI66rH74iIydGnfFqeQXnfFRH3RsTd\nEXFLRLR6CHndy/1ExK9EREZE60dy1ckcEZdW7/M9EfHxUWc8JMugz8QLI2JnRNxVfS4uaiPnnDwf\niYh9EfHVeR6PiPhg9XrujohXjDqjJHVNa2Wq5uVo1gGPZeaZwPuB5s66NEDNvHcBU5n5L4EbgP86\n2pQ/VfdyPxHxHOCdwB2jTfhMdTJHxFnA7wGvzsxfBH5r5EF/mqXOe/xfgOsz81z6R7z+j9GmfIZr\ngAuP8PgbgLOqr/XAX4wgkyR1WptbpupcjmY1sLW6fQNwQUTECDPONTBvZu7MzB9Uk7fTP/dWW+pe\n7udP6JfUfxxluHnUyfxW4KrMfAwgM/eNOONcdfIm8Nzq9snAd0aY7xky81bg0SPMshr4aPbdDpwS\nEctHk06SuqnNMlXncjRPzZOZB4D9wPNGku6ZFnr5nHXATY0mOrKBeatdOGdk5o2jDHYEdd7jlwAv\niYjPR8TtEXGkrSxNq5P3D4E3R8SD9I98/Y3RRFs0LxMlSQvU+OVkjkUR8WZgCvjltrPMJyKOA94H\nXNFylIVaQn8X1DT9LX+3RsTKzHy81VTzuxy4JjM3R8SrgI9FxDmZ+ZO2g0mShqPNLVN1Lkfz1DwR\nsYT+bpLvjSTdM9W6fE5EvBZ4D/DGzPzRiLIdzqC8zwHOAXoRMQOcD+xoeRB6nff4QWBHZv44Mx8A\n/o5+uWpDnbzrgOsBMvMLwLPpXwNvXNX6nEuSfqrNMlXncjQ7gLXV7TcBf53tnRhrYN6IOBf4S/pF\nqs2xPDAgb2buz8xlmTmZmZP0x3i9MTPvbCcuUO8z8b/ob5UiIpbR3+13/yhDzlEn77eACwAi4hfo\nl6m/H2nKhdkB/IfqqL7zgf2Z+VDboSRpnLW2m2++y9FExB8Dd2bmDuBq+rtF9tAfNHvZmOf9c2Ap\n8FfVOPlvZeYbxzjvWKmZ+XPA6yPiXuBJ4Hczs5WtlTXzbgA+HBG/TX8w+hUt/kFARHyCfhldVo3j\n+gPgBIDM/BD9cV0XAXuAHwD/sZ2kktQdngFdkiSpgGdAlyRJKmCZkiRJKmCZkiRJKmCZkiRJKmCZ\nkiRJKmCZkiRJKmCZkiRJKmCZkiRJKvD/ATHu64X3j/LsAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "tp.subpx_bias(features)\n", "print('Features found: {0}'.format(len(features)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can do better by increasing the diameter size:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Features found: 86\n" ] }, { "data": { "image/png": "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\n0vfIVEQsA5Zl5ucj4lRgJ/AaYC3wUGZeGREbgDMy8z82HViSJGmU9D0ylZn7M/Pz1fNvA3cBy+ld\nI7OlWm0LvYIlSZJ0QlnQNVMRsQLYDqwE7s/M06vXA3j48LIkSdKJYuD7TEXEGPAR4M2Z+a1ef+rJ\nzIyIo7ayiFgHrAM45ZRTzjvrrLP6/lmPP/44J53UrS8amnk4zDw8x8r9la985cHMfOaQI0nSSBqo\nTEXEU+gVqWsz86PVyw9ExLLM3F9dV3XgaL+bmZuATQCTk5O5Y8eOvn/e9PQ0U1NTg0QbGWYeDjMP\nz7FyR8RXh5tGkkbXIN/mC+Bq4K7MfPest7YBl1fPLweurz+eJEnSaBvkyNRLgdcCuyLi8J2t/xNw\nJfChiLgC+CpwUTMRJUmSRlffMpWZtwAxz9vn1xtHkiSpW7p3VawkSdIIsUxJkiQVGPjWCJLat2LD\nDY1te8+VFza2bUk6nnlkSpIkqYBlSpIkqYBlSpIkqYBlSpIkqYBlSpIkqYBlSpIkqYBlSpIkqYBl\nSpIkqYBlSpIkqYBlSpIkqYBlSpIkqYBlSpIkqYBlSpIkqYBlSpIkqYBlSpIkqYBlSpIkqYBlSpIk\nqYBlSpIkqYBlSpIkqYBlSpIkqYBlSpIkqYBlSpIkqYBlSpIkqYBlSpIkqUDfMhUR10TEgYjYPeu1\nd0bEvoi4vXpc0GxMSZKk0TTIkanNwOqjvP6Hmfn86vGJemNJkiR1Q98ylZnbgYeGkEWSJKlzIjP7\nrxSxAvh4Zq6slt8JrAW+BewA1mfmw/P87jpgHcD4+Ph5W7du7fvnzczMMDY2Nkj+kWHm4TjRM+/a\nd7CW7RzNxPLTjlg+Vu5Vq1btzMzJxsJIUocstkyNAw8CCbwLWJaZv9ZvO5OTk7ljx46+f9709DRT\nU1N91xslZh6OEz3zig031LKdo9lz5YVHLB8rd0RYpiSpsqhv82XmA5n5WGY+DrwXeFG9sSRJkrph\nUWUqIpbNWvwFYPd860qSJB3PlvRbISKuA6aAMyNiL/AOYCoink/vNN8e4DcazChJkjSy+papzLzk\nKC9f3UAWSZKkzvEO6JIkSQX6HplqS5PfWmrC5tVL244gSZJa4JEpSZKkApYpSZKkApYpSZKkApYp\nSZKkApYpSZKkApYpSZKkApYpSZKkApYpSZKkApYpSZKkApYpSZKkApYpSZKkApYpSZKkApYpSZKk\nApYpSZKkApYpSZKkApYpSZKkApYpSZKkApYpSZKkApYpSZKkApYpSZKkApYpSZKkApYpSZKkApYp\nSZKkApYpSZKkAn3LVERcExEHImL3rNeeERE3RsTd1c8zmo0pSZI0mgY5MrUZWD3ntQ3ATZl5DnBT\ntSxJknTC6VumMnM78NCcl9cAW6rnW4DX1JxLkiSpExZ7zdR4Zu6vnn8DGK8pjyRJUqdEZvZfKWIF\n8PHMXFktP5KZp896/+HMPOp1UxGxDlgHMD4+ft7WrVv7/nkzMzPcd/CxQfKPjLNPO5mxsbG2YyzI\nzMyMmYegzsy79h2sZTtHM7H8tCOWj5V71apVOzNzsrEwktQhSxb5ew9ExLLM3B8Ry4AD862YmZuA\nTQCTk5M5NTXVd+PT09NsvOXRRUZrx+bVSxnk7zZKpqenzTwEdWZeu+GGWrZzNHsunTpiuYv7WpLa\nsNjTfNuAy6vnlwPX1xNHkiSpWwa5NcJ1wOeA50XE3oi4ArgSeEVE3A28vFqWJEk64fQ9zZeZl8zz\n1vk1Z5EkSeoc74AuSZJUwDIlSZJUYLHf5tMcu/YdbOSbVnuuvLD2bUqSpPp4ZEqSJKmAZUqSJKmA\nZUqSJKmAZUqSJKmAZUqSJKmAZUqSJKmAt0bQCW1FQxMHe0sLSTpxeGRKkiSpgGVKkiSpgGVKkiSp\ngGVKkiSpgGVKkiSpgGVKkiSpgGVKkiSpgGVKkiSpgGVKkiSpgGVKkiSpgGVKkiSpgGVKkiSpgGVK\nkiSpwJK2A0jHoxUbbnji+fqJQ6ydtSxJOr54ZEqSJKmAZUqSJKmAZUqSJKlA0TVTEbEH+DbwGHAo\nMyfrCCVJktQVdVyAviozH6xhO5IkSZ3jaT5JkqQCkZmL/+WI+4CHgQT+LDM3HWWddcA6gPHx8fO2\nbt3ad7szMzPcd/CxRedqw/gp8MB369/uxPLT6t9oZWZmhrGxsca2X6dd+w4Cze3nJnUl89zP2rE+\nH6tWrdrpaX1J6iktU8szc19EPAu4EXhDZm6fb/3JycncsWNH3+1OT0+z9lOPLjpXG9ZPHGLjrvpv\n27Xnygtr3+Zh09PTTE1NNbb9Oh2+b1NT+7lJXck897N2rM9HRFimJKlSdJovM/dVPw8AHwNeVEco\nSZKkrlh0mYqIpRFx6uHnwCuB3XUFkyRJ6oKScw/jwMci4vB2PpCZn6ollSRJUkcsukxl5r3AT9eY\nRZIkqXO8NYIkSVKB0f+K0Qnu8LfYmrB+4hBra95+k98+lCRpFHlkSpIkqYBlSpIkqYBlSpIkqYBl\nSpIkqYBlSpIkqYBlSpIkqYC3RlCtmryVgyRJo8gjU5IkSQUsU5IkSQUsU5IkSQUsU5IkSQUsU5Ik\nSQUsU5IkSQUsU5IkSQUsU5IkSQUsU5IkSQUsU5IkSQUsU5IkSQUsU5IkSQUsU5IkSQUsU5IkSQUs\nU5IkSQUsU5IkSQUsU5IkSQWKylRErI6IL0fEPRGxoa5QkiRJXbHoMhURJwPvAV4FnAtcEhHn1hVM\nkiSpC0qOTL0IuCcz783M7wNbgTX1xJIkSeqGkjK1HPjarOW91WuSJEknjCVN/wERsQ5YVy3ORMSX\nB/i1M4EHm0tVvzeaeSjM3Jz4/Se9dKzcz2k0jCR1SEmZ2gecNWv52dVrR8jMTcCmhWw4InZk5mRB\ntqEz83CYeXi6mluShq3kNN/fAOdExNkR8VTgYmBbPbEkSZK6YdFHpjLzUES8Hvg0cDJwTWbeUVsy\nSZKkDii6ZiozPwF8oqYssy3otOCIMPNwmHl4uppbkoYqMrPtDJIkSZ3ldDKSJEkFWitT/aaiiYgf\niogPVu/fFhErhp/yyQbI/daIuDMivhgRN0VE618hH3Tan4j4xYjIiGj9G1yDZI6Ii6p9fUdEfGDY\nGY+Sp99n48ci4uaI+EL1+bigjZxzMl0TEQciYvc870dE/HH1d/piRLxw2BkladS1UqYGnIrmCuDh\nzPxnwB8CT74LzpANmPsLwGRm/hTwYeC/DjflkQad9iciTgXeBNw23IRPNkjmiDgHeBvw0sz8SeDN\nQw96ZJ5B9vN/Bj6UmS+g9+3X/znclEe1GVh9jPdfBZxTPdYBfzKETJLUKW0dmRpkKpo1wJbq+YeB\n8yMihpjxaPrmzsybM/M71eKt9O6/1aZBp/15F73C+g/DDDePQTL/OvCezHwYIDMPDDnjXINkTuCH\nq+enAV8fYr6jysztwEPHWGUN8BfZcytwekQsG046SeqGtsrUIFPRPLFOZh4CDgI/MpR081voFDpX\nAJ9sNFF/fTNXp27OyswbhhnsGAbZz88FnhsRn42IWyPiWEdXhmGQzO8ELouIvfS+BfuG4UQr4rRR\nktRH49PJnKgi4jJgEvi5trMcS0ScBLwbWNtylIVaQu/U0xS9o3/bI2IiMx9pNdWxXQJszsyNEfES\n4H0RsTIzH287mCRp8do6MjXIVDRPrBMRS+idFvn7oaSb30BT6ETEy4G3A6/OzO8NKdt8+mU+FVgJ\nTEfEHuDFwLaWL0IfZD/vBbZl5g8y8z7gK/TKVVsGyXwF8CGAzPwc8DR689+NsoE+85J0ImurTA0y\nFc024PLq+S8Bf5Xt3xSrb+74M6UxAAABDElEQVSIeAHwZ/SKVNvX8UCfzJl5MDPPzMwVmbmC3nVe\nr87MHe3EBQb7fPxvekeliIgz6Z32u3eYIecYJPP9wPkAEfET9MrUN4eacuG2Ab9SfavvxcDBzNzf\ndihJGiWtnOabbyqaiPhdYEdmbgOupnca5B56F8he3EbW2QbM/QfAGPCX1fXy92fmq0c880gZMPOn\ngVdGxJ3AY8BvZ2ZrRy4HzLweeG9EvIXexehr2/4fhIi4jl4pPbO6lusdwFMAMvNP6V3bdQFwD/Ad\n4FfbSSpJo8s7oEuSJBXwDuiSJEkFLFOSJEkFLFOSJEkFLFOSJEkFLFOSJEkFLFOSJEkFLFOSJEkF\nLFOSJEkF/j9TXyNhTovPsAAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "features2 = tp.locate(frames[0], diameter=(7, 11, 11))\n", "tp.subpx_bias(features2)\n", "print('Features found: {0}'.format(len(features2)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But now we lost 54 features! This is because of two things: 1) the margins become larger, 2) trackpy removes particles that are closer than `diameter` from each other. Mainly the second effect is responsible for the large loss in this case. We can force the minimum separation in trackpy to a lower value, to keep features that are closer than diameter from each other. We should keep in mind that the coordinates of two close particles will be biased towards each other." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Features found: 167\n" ] }, { "data": { "text/html": [ "
" ], "text/plain": [ "Frame([[[[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " ..., \n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]]],\n", "\n", "\n", " [[[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " ..., \n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]]],\n", "\n", "\n", " [[[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " ..., \n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]]],\n", "\n", "\n", " ..., \n", " [[[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " ..., \n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]]],\n", "\n", "\n", " [[[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " ..., \n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]]],\n", "\n", "\n", " [[[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " ..., \n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " ..., \n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1.]]]], dtype=float32)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "features3 = tp.locate(frames[0], diameter=(7, 11, 11), separation=(3, 11, 11))\n", "print('Features found: {0}'.format(len(features3)))\n", "tp.annotate3d(features3, frames[0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Batch processing" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We use the optimized settings and iterate through the full movie." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Frame 32: 161 features\n" ] } ], "source": [ "f = tp.batch(frames, diameter=(7, 11, 11), separation=(3, 11, 11))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Linking" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The linking features of trackpy support an arbitrary number of dimensions. The argument pos_columns will determine which and how many dimensions will be used. The standard set of columns is `['x', 'y']`. For 3d we have to set this to `['x', 'y', 'z']`. \n", "Linking treats all dimensions equally. For this example we are using a file with unequal pixel sizes: 0.21 microns in XY and 0.75 microns in Z, so we first define new columns in units of microns." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "f['xum'] = f['x'] * 0.21\n", "f['yum'] = f['y'] * 0.21\n", "f['zum'] = f['z'] * 0.75" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Experimentally, there is a tradeoff between framerate and z pixel size. If you want to have higher z resolution, you scan slower and your framerate goes down. In this specific experiment the z resolution is low, so that we are able to link particles between subsequent frames. We try several linking distances here." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nyg033EBKSgoDBgygoKAAgEcffZTk5GTS09MZPnx4xN/taNUvIoqIiFRXb4yDL1ZGt89WafCDiRU2\nWb9+PdOmTaN3794A3H///SQlJVFYWEh2djYrVqwgPT0dgObNm7NkyRKeeOIJJk2axFNPPcU999xD\n//79ueuuu3jzzTd5+umngeKV5WfMmMGCBQto0KABN998My+88AIjRoz41vFj8XBxgMmTJzN9+nQy\nMzP5/e9/T7NmzY5ps3z5ctauXUtSUhIdO3Zk9OjRfPzxx/zxj3/kscceKw1TJa699lrGjRvH0KFD\nOXjwIEVFRWzZsoUlS5awatUqOnTowOLFi3nmmWf46KOPcHfOPfdcLrzwQpo1a8b69ev561//ytSp\nUxk2bBgvv/wy1113HRMnTmTjxo2ccsop7N27t8rf+XgUyERERKq5du3alYYxgJkzZzJlyhSOHDlC\nXl4ea9asKQ1kl19+OQA9e/bklVdeAeDDDz9k9uzZAAwcOLA0+MyfP5/FixfTq1cvAAoKCjjjjDOO\nOX4sHi4+duxYfvOb32Bm/OY3v+EXv/gFf/7zn49p16tXL1q3bg3AOeecw4ABAwBIS0s7JiTu27eP\nbdu2MXToUIBvjdJlZWXRoUMHoPh8DB06lISEBKD4nH3wwQcMHjyYDh06kJGRARSfw02bNgGQnp7O\ntddey2WXXcZll10WxTNRTIFMREQkXJWMZMVKSXAA2LhxI5MmTSI3N5dmzZoxatQoDh48WPr+Kaec\nAkBcXBxHjhypsF93Z+TIkTzwwAMVtovFCFnLli1LX99www0MGjSo3HYl3wegXr16pdv16tWr9PuV\nVfYcVqTs8eLi4kovWb7++uu8//77vPbaa9x///2sXLkyqnPRNIdMRESkBsnPzychIYGmTZuyfft2\n3njjjUo/06dPH2bOnAnAvHnz+PLLLwHIzs5m1qxZ7NixA4A9e/awefPmYz7/yCOPsGzZsmP+RHK5\nMi8vr/T17NmzSU1NrXJfJRITE2nbti1z5swBih+qfuDAgWPa9e3blzlz5nDgwAG+/vprZs+eTd++\nfY/bb8llz379+vHggw/y1VdfsX///ojrLUsjZCIiIjVIt27d6N69O126dOGss86iT58+lX5mwoQJ\nXH311Tz33HOcd955tGrVisTERJo3b859993HgAEDKCoqokGDBjz++OO0a9cuohrbt29Pfn4+hw8f\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for search_range in [1.0, 1.5, 2.0, 2.5]:\n", " linked = tp.link_df(f, search_range, pos_columns=['xum', 'yum', 'zum'])\n", " hist, bins = np.histogram(np.bincount(linked.particle.astype(int)),\n", " bins=np.arange(30), normed=True)\n", " plt.step(bins[1:], hist, label='range = {} microns'.format(search_range))\n", "plt.ylabel('relative frequency')\n", "plt.xlabel('track length (frames)')\n", "plt.legend();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Mean squared displacement" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We use a search range of 2.0 microns, because there is no significant improvement between 2.0 and 2.5 microns." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "linked = tp.link_df(f, 2.0, pos_columns=['xum', 'yum', 'zum'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With the trajectories we can calculate the mean squared displacement. To calculate the mean squared displacement from all three dimensions, we need to tell trackpy which position columns to use. It defaults to `['x', 'y']`.\n", "\n", "We specify `mpp=1` because we have already transformed our data to microns." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnMAAAF7CAYAAAC5Cw3+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3X90ZWV97/HPx0xgjjgYfgw/JgMO\nWAg/lCEYEK+2BREyIoUpd24drBUEnYUXBV0lLWm9qHXZcptb6qV0VUeloKVj1YZACxhmgV5qq0KG\nwGSAifxwqjkzwggNgpzBTOZ7/8jJmMmckJwk5+y9z3m/1jor5zz72ft8Zy8mfGY/+9mPI0IAAADI\nptckXQAAAABmjzAHAACQYYQ5AACADCPMAQAAZBhhDgAAIMMIcwAAABlW9TBn+wjb37H9mO1HbV9V\nbD/Q9nrbTxR/HjDF/hcX+zxh++LqVg8AAJAurvZz5mwfLunwiHjI9iJJGyStlHSJpOcj4jrb10g6\nICL+eNK+B0rqk9QmKYr7viUi/quafwYAAIC0qPqVuYjYFhEPFd+/KOlxSc2SLpB0S7HbLRoLeJO1\nS1ofEc8XA9x6SSsqXzUAAEA6JXrPnO1lklol/VDSoRGxrbjpZ5IOLbFLs6SfTvg8VGwDAACoSwuS\n+mLbr5P0z5I+HhG/sL17W0SE7VmP/9peI2mNJO23335vOe644+ZaLgAAwG6bf/aiRkZ37dXe2PAa\nHXfYolkfd8OGDT+PiMXl7JNImLPdqLEgd2tEdBebn7F9eERsK95X92yJXfOSzpjweamk707uFBFr\nJa2VpLa2tujr65vH6gEAQL076po7VeqqkyX1XfeeWR/X9n+Wu08Ss1kt6SuSHo+I6ydsukPS+OzU\niyXdXmL3Xknn2D6gONv1nGIbAABA1SxpypXVXklJ3DP3dkl/IOmdth8uvs6VdJ2ks20/Ieldxc+y\n3Wb7y5IUEc9L+qykB4uvPyu2AQAAVE1He4tyjQ17tOUaG9TR3lL1Wqr+aJJqY5gVAABUQk9/Xl29\ng9o6XNCSppw62lu0snVu8zJtb4iItnL2SWwCRJJGRkY0NDSkHTt2JF1KTVq4cKGWLl2qxsbGpEsB\nAKBiVrY2zzm8zYe6DHNDQ0NatGiRli1bpomzaDF3EaHnnntOQ0NDOuqoo5IuBwCAmleXa7Pu2LFD\nBx10EEGuAmzroIMO4qonAABVUpdhThJBroI4twAAVE/dhrmk2db73//+3Z937typxYsX67zzzpMk\nPfPMMzrvvPO0fPlynXDCCTr33HMlSVu2bFEul1Nra6uOP/54nXbaabr55ptLfkdfX5+uvPLKsupa\nsWKFli9frhNPPFGXX365RkdHJUmXXHKJjjrqKC1fvlzHHnusPvCBD2hoaGgWf3IAADCf6vKeuXJV\nYrbKfvvtp02bNqlQKCiXy2n9+vVqbv71Ma+99lqdffbZuuqqqyRJGzdu3L3tjW98o/r7+yVJTz/9\ntC688EJFhD74wQ/u8R1tbW1qaytrQoy+8Y1vaP/991dEaNWqVfrmN7+p1atXS5K6urq0atUqRYQ+\n//nP653vfKc2bdqkffbZZ1bnAAAAzB1X5qbR059XZ/eA8sMFhaT8cEGd3QPq6c/P+djnnnuu7rzz\nTknSunXrdNFFF+3etm3bNi1dunT355NOOqnkMY4++mhdf/31uuGGG/ba9t3vfnf3lb5Pf/rTuvTS\nS3XGGWfo6KOPLtlfkvbff39JY1cKf/WrX5UcMrWtT3ziEzrssMN09913z/BPCwAAKoEwN42u3kEV\nRkb3aCuMjKqrd3DOx169erW+/vWva8eOHdq4caPe+ta37t52xRVX6LLLLtOZZ56pz33uc9q6deuU\nxznllFO0efPmab9v8+bN6u3t1QMPPKDPfOYzGhkZKdmvvb1dhxxyiBYtWqRVq1bN+XsBAEDlEOam\nsXW4UFZ7OU466SRt2bJF69at231P3Lj29nY9/fTT+vCHP6zNmzertbVV27dvL3mcmT74+T3veY/2\n3XdfHXzwwTrkkEP0zDPPlOzX29urbdu26ZVXXtF999035fFq/YHTAABkAWFuGpVee+3888/X1Vdf\nvccQ67gDDzxQ73vf+/S1r31Np556qu6///6Sx+jv79fxxx8/7Xftu+++u983NDRo586dU/ZduHCh\nLrjgAt1+e6klcsv7XgAAUDmEuWlUeu21Sy+9VJ/61Kf05je/eY/2++67Ty+//LIk6cUXX9RTTz2l\nI488cq/9t2zZoquvvlof+9jH5lzLSy+9pG3btkkau2fuzjvv1HHHHbdXv4jQDTfcoG3btmnFihVz\n/l4AADB7zGadxvis1fmezTpu6dKlJR8fsmHDBn30ox/VggULtGvXLn3oQx/Sqaeeqi1btuipp55S\n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\nooo1AgAApEpqrsxFxE7bH5XUK6lB0k0R8ajtP5PUFxF3SPqKpK/ZflLS8xoLfAAAAHUrNWFOkiLi\nLkl3TWq7dsL7HZL+R5mHXTsPpdUizktpnJfSOC9745yUxnkpjfNSGudlb2WfEzNKCQAAkF1pumcO\nAAAAZarpMDfd8mD1yPYRtr9myUBHAAAGe0lEQVRj+zHbj9q+Kuma0sJ2g+1+2/+adC1pYbvJ9rds\nb7b9uO23JV1TGtj+RPHvzybb62wvTLqmJNi+yfazEx//ZPtA2+ttP1H8eUCSNSZhivPSVfx7tNH2\nbbabkqyx2kqdkwnb/tB22D44idqSNNV5sf2x4n8vj9r+y+mOU7NhbobLg9WjnZL+MCJOkHS6pCs4\nL7tdJenxpItImf8r6dsRcZyk5eL8yHazpCsltUXEmzQ2YateJ2PdLGnFpLZrJN0bEcdIurf4ud7c\nrL3Py3pJb4qIkyT9SFJntYtK2M3a+5zI9hGSzpH0k2oXlBI3a9J5sX2mxla8Wh4RJ0r6P9MdpGbD\nnGa2PFjdiYhtEfFQ8f2LGvuf8+SVNuqO7aWS3iPpy0nXkha2Xy/ptzQ2i1wR8auIGE62qtRYIClX\nfN7layVtTbieRETE/Rp7ssBEE5ddvEXSyqoWlQKlzktE3FNcuUiSfqCxZ6nWjSn+W5HG1ln/I0l1\neQP/FOflI5Kui4hXin2ene44tRzmZrI8WF2zvUxSq6QfJltJKnxeY79QdiVdSIocJWm7pL8vDj9/\n2fZ+SReVtIjIa+xfyj+RtE3SCxFxT7JVpcqhEbGt+P5nkg5NspiUulTS3UkXkTTbF0jKR8QjSdeS\nMsdK+k3bP7T9/2yfOt0OtRzm8Cpsv07SP0v6eET8Iul6kmT7PEnPRsSGpGtJmQWSTpH0dxHRKumX\nqs8hsz0U7wG7QGNhd4mk/Wy/P9mq0qn4UPe6vOIyFdt/qrHbXW5NupYk2X6tpD+RdO10fevQAkkH\nauxWqA5J37DtV9uhlsPcTJYHq0u2GzUW5G6NiO6k60mBt0s63/YWjQ3Hv9P2PyRbUioMSRqKiPEr\nt9/SWLird++S9OOI2B4RI5K6Jf23hGtKk2dsHy5JxZ/TDhHVC9uXSDpP0u+zepHeqLF/ED1S/N27\nVNJDtg9LtKp0GJLUHWMe0NiI0atODqnlMDeT5cHqTjHdf0XS4xFxfdL1pEFEdEbE0ohYprH/Tu6L\niLq/0hIRP5P0U9vjiz6fJemxBEtKi59IOt32a4t/n84SE0Mmmrjs4sWSbk+wltSwvUJjt3KcHxEv\nJ11P0iJiICIOiYhlxd+9Q5JOKf7eqXc9ks6UJNvHStpH0s9fbYeaDXPFG03Hlwd7XNI3IuLRZKtK\nhbdL+gONXX16uPg6N+mikFofk3Sr7Y2STpb05wnXk7jilcpvSXpI0oDGfo/W5VPsba+T9H1JLbaH\nbF8m6TpJZ9t+QmNXMa9LssYkTHFebpS0SNL64u/dLyRaZJVNcU7q3hTn5SZJRxcfV/J1SRdPdyWX\nFSAAAAAyrGavzAEAANQDwhwAAECGEeYAAAAyjDAHAACQYYQ5AACADCPMAQAAZBhhDgAAIMMIcwBq\nlu2X5uEYTbb/56S2/5jrcaf4rqW231uJYwOoXYQ5AHh1TZL2CHMRUam1WM8S698CKBNhDkDNs91j\ne4PtR22vmdD+v2wP2v6e7XW2ry6x+3WS3lhcgqmruN9LxZ/LbG+2fbPtH9m+1fa7bP+77Sdsn1bs\n937bDxSP8UXbDSVqfIek6yWtKvY7uhLnAkDtIcwBqAeXRsRbJLVJutL2QbZPlfTfJS2X9O7itlKu\nkfRURJwcER0ltv+GpL+SdFzx9T5J75B0taQ/sX28pPdKentEnCxpVNLvTz5IRHxP0oOSLih+19Oz\n/+MCqCcLki4AAKrgStu/W3x/hKRjJJ0u6faI2CFph+1/meWxfxwRA5Jk+1FJ90ZE2B6QtExjQ6dv\nkfSgbUnKSXp2imO1SNo8yzoA1CnCHICaZvsMSe+S9LaIeNn2dyUtnMeveGXC+10TPu/S2O9YS7ol\nIjqnqfNgSS9ExM55rA1AHWCYFUCte72k/yoGueM0dkVOkv5d0u/YXmj7dZLOm2L/FyUtmsP336ux\n++AOkSTbB9p+Q4l+yyRtncP3AKhThDkAte7bkhbYflxjkxl+IEkR8aCkOyRtlHS3pAFJL0zeOSKe\nk/TvtjeNT4AoR0Q8JumTku6xvVHSekmHl+i6WdLBxe+p1GxZADXIEZF0DQCQCNuvi4iXbL9W0v2S\n1kTEQ0nXBQDl4J45APVsre0TNHYP3S0EOQBZxJU5AACADOOeOQAAgAwjzAEAAGQYYQ4AACDDCHMA\nAAAZRpgDAADIMMIcAABAhhHmAAAAMowwBwAAkGH/H/VryrPaH6v2AAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "msd3D = tp.emsd(linked, mpp=1, fps=1/0.8582, max_lagtime=20,\n", " pos_columns=['xum', 'yum', 'zum'])\n", "ax = msd3D.plot(style='o', label='MSD in 3D')\n", "ax.set_ylabel(r'$\\langle \\Delta r^2 \\rangle$ [$\\mu$m$^2$]')\n", "ax.set_xlabel('lag time $t$')\n", "ax.set_xlim(0, 16)\n", "ax.set_ylim(0, 20)\n", "ax.legend(loc='upper left');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The mean squared displacement in three dimensional Brownian motion is described by the following relation:\n", "\n", "$$\\langle x^2 \\rangle = 6 D t$$\n", "\n", "Let's do a fit and calculate the diffusion constant!" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The diffusion constant is 0.20 μm²/s\n" ] }, { "data": { "image/png": "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\nAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "slope = np.linalg.lstsq(msd3D.index[:, np.newaxis], msd3D)[0][0]\n", "\n", "ax = msd3D.plot(style='o', label='MSD in 3D')\n", "ax.plot(np.arange(20), slope * np.arange(20), label='linear fit')\n", "ax.set(ylabel=r'$\\langle \\Delta r^2 \\rangle$ [$\\mu$m$^2$]', xlabel='lag time $t$')\n", "ax.set(xlim=(0, 16), ylim=(0, 20))\n", "ax.legend(loc='upper left')\n", "print(r'The diffusion constant is {0:.2f} μm²/s'.format(slope / 6))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## About this work" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This tutorial was written by Casper van der Wel, as part of his PhD thesis in Daniela Kraft’s group at the Huygens-Kamerlingh-Onnes laboratory, Institute of Physics, Leiden University, The Netherlands. This work was supported by the Netherlands Organisation for Scientific Research (NWO/OCW). " ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.3" } }, "nbformat": 4, "nbformat_minor": 1 }