Пример #1
0
 def test_memory_removal(self):
     """BUG: A particle remains in memory after its Track is resumed, leaving two
     copies that can independently pick up desinations, leaving two Points in the
     same Track in a single level."""
     levels  = []
     levels.append([PointND(0, [1, 1]), PointND(0, [4, 1])])  # two points
     levels.append([PointND(1, [1, 1])])  # one vanishes, but is remembered
     levels.append([PointND(2, [1, 1]), PointND(2, [2, 1])]) # resume Track
     levels.append([PointND(3, [1, 1]), PointND(3, [2, 1]), PointND(3, [4, 1])])
     t = link(levels, 5, hash_generator((10, 10), 1), memory=2)
     assert len(t) == 3, len(t)
Пример #2
0
    def test_pathological_tracking(self):
        level_count = 5
        p_count = 16
        levels = []
        shift = 1

        for j in range(level_count):
            level = []
            for k in np.arange(p_count) * 2:
                level.append(PointND(k // 2, (j, k + j * shift)))
            levels.append(level)

        hash_generator = lambda: Hash_table(
            (level_count + 1, p_count * 2 + level_count * shift + 1), .5)
        tracks = self.link(levels, 8, hash_generator)

        assert len(tracks) == p_count, len(tracks)
Пример #3
0
    def test_easy_tracking(self):
        level_count = 5
        p_count = 16
        levels = []

        for j in range(level_count):
            level = []
            for k in np.arange(p_count) * 2:
                level.append(PointND(j, (j, k)))
            levels.append(level)

        hash_generator = lambda: Hash_table(
            (level_count + 1, p_count * 2 + 1), .5)
        tracks = self.link(levels, 1.5, hash_generator)

        assert len(tracks) == p_count

        for t in tracks:
            x, y = zip(*[p.pos for p in t])
            dx = np.diff(x)
            dy = np.diff(y)

            assert np.sum(dx) == level_count - 1
            assert np.sum(dy) == 0
Пример #4
0
import unittest
import nose
from numpy.testing import assert_almost_equal, assert_allclose
from numpy.testing.decorators import slow
from pandas.util.testing import (assert_series_equal, assert_frame_equal,
                                 assert_almost_equal)

import trackpy as tp
from trackpy.try_numba import NUMBA_AVAILABLE
from trackpy.linking import PointND, link, Hash_table

path, _ = os.path.split(os.path.abspath(__file__))
path = os.path.join(path, 'data')

# Call lambda function for a fresh copy each time.
unit_steps = lambda: [[PointND(t, (x, 0))] for t, x in enumerate(range(5))]

np.random.seed(0)
random_x = np.random.randn(5).cumsum()
random_x -= random_x.min()  # All x > 0
max_disp = np.diff(random_x).max()
random_walk_legacy = lambda: [[PointND(t, (x, 5))]
                              for t, x in enumerate(random_x)]


def hash_generator(dims, box_size):
    return lambda: Hash_table(dims, box_size)


def _skip_if_no_numba():
    if not NUMBA_AVAILABLE: