def test_find_codiffusion_data(self): """multicolor.find_codiffusion: Test returning a pandas Panel""" codiff = multicolor.find_codiffusion(self.track, self.track) exp = pd.concat([self.track]*2, keys=["channel1", "channel2"], axis=1) exp["codiff", "particle"] = 0 pd.testing.assert_frame_equal(codiff, exp)
def test_find_codiffusion_rel_thresh(self): """multicolor.find_codiffusion: Test the `rel_threshold` parameter""" track2_1 = self.track.iloc[[0, 2, 3]].copy() track2_2 = self.track.iloc[4:].copy() track2_1["particle"] = 1 track2_2["particle"] = 2 numbers = multicolor.find_codiffusion( self.track, pd.concat((track2_1, track2_2)), abs_threshold=2, rel_threshold=0.8, return_data="numbers") np.testing.assert_allclose(numbers, [[1, 2, 4, 9]])
def test_find_codiffusion_abs_thresh(self): """multicolor.find_codiffusion: Test the `abs_threshold` parameter""" track2_1 = self.track.iloc[:5].copy() track2_2 = self.track.iloc[-3:].copy() track2_1["particle"] = 1 track2_2["particle"] = 2 numbers = multicolor.find_codiffusion( self.track, pd.concat((track2_1, track2_2)), abs_threshold=4, return_data="numbers") np.testing.assert_allclose(numbers, [[1, 1, 0, 4]])
def test_find_codiffusion_data_merge(self): """multicolor.find_codiffusion: Test merging into DataFrame""" t2_particle = 3 track2 = self.track.copy() track2["particle"] = t2_particle track2.drop(4, inplace=True) codiff = multicolor.find_codiffusion(self.track, track2) track2_exp = self.track.copy() track2_exp["particle"] = t2_particle track2_exp.loc[4, ["x", "y"]] = np.NaN exp = pd.concat([self.track, track2_exp], keys=["channel1", "channel2"], axis=1) exp["codiff", "particle"] = 0 pd.testing.assert_frame_equal(codiff, exp)
def test_find_codiffusion_long_channel2(self): """multicolor.find_codiffusion: Match two short tracks to one long""" track2_p1 = 1 track2_p2 = 2 track2_1 = self.track.iloc[:3].copy() track2_2 = self.track.iloc[-3:].copy() drop_idx = [3, 4, 5, 6] track2_1["particle"] = track2_p1 track2_2["particle"] = track2_p2 track2 = pd.concat((track2_1, track2_2)).reset_index(drop=True) data, numbers = multicolor.find_codiffusion( track2, self.track, return_data="both") np.testing.assert_allclose(numbers, [[1, 1, 0, 2], [2, 1, 7, 9]]) track1 = self.track.drop(drop_idx).reset_index(drop=True) exp = pd.concat([track2, track1], keys=["channel1", "channel2"], axis=1) exp["codiff", "particle"] = [0]*3 + [1]*3 pd.testing.assert_frame_equal(data, exp)
def test_find_codiffusion_numbers(self): """multicolor.find_codiffusion: Test returning the particle numbers""" codiff = multicolor.find_codiffusion(self.track, self.track, return_data="numbers") np.testing.assert_equal(codiff, [[1, 1, 0, len(self.track)-1]])