From 15bcc09655220669fef5af5a061bbd4041df89d8 Mon Sep 17 00:00:00 2001 From: "a.ott" Date: Wed, 20 May 2020 15:23:45 +0200 Subject: [PATCH] add reference and test for detect spikes --- unittests/testHelperFunctions.py | 56 +++++++++++++++++++++++++------- 1 file changed, 45 insertions(+), 11 deletions(-) diff --git a/unittests/testHelperFunctions.py b/unittests/testHelperFunctions.py index 76576e2..a64c4c8 100644 --- a/unittests/testHelperFunctions.py +++ b/unittests/testHelperFunctions.py @@ -2,9 +2,17 @@ import unittest import numpy as np import helperFunctions as hF import matplotlib.pyplot as plt +from CellData import icelldata_of_dir +from Baseline import BaselineCellData +import os class HelperFunctionsTester(unittest.TestCase): + reference_base_spikes = {'2012-12-21-an-invivo-1': 39, '2012-07-12-ag-invivo-1': 21, '2012-12-13-ac-invivo-1': 19, + '2012-12-20-ac-invivo-1': 43, '2013-01-08-ad-invivo-1': 29, '2012-06-27-an-invivo-1': 19, + '2012-12-13-ah-invivo-1': 35, '2012-12-13-ag-invivo-1': 26, '2012-12-13-an-invivo-1': 29, + '2012-12-21-ai-invivo-1': 55, '2012-12-20-aa-invivo-1': 24, '2012-12-21-am-invivo-1': 26, + '2012-06-27-ah-invivo-1': 27, '2012-07-12-ap-invivo-1': 35, '2012-12-21-ak-invivo-1': 30} noise_levels = [0, 0.05, 0.1, 0.2] frequencies = [0, 1, 5, 30, 100, 500, 750, 1000] @@ -30,18 +38,44 @@ class HelperFunctionsTester(unittest.TestCase): self.assertEqual(0, round(hF.__vector_strength__(rel_spike_times, eod_durations), 5)) - # def test_eods_around_spikes(self): - # - # time = np.arange(0, 3, 0.01) - # eod = np.sin(2*np.pi * 2 * time) - # - # spikes = [0.2, 0.5, 0.6] - # indices = np.searchsorted(time, spikes) - # - # rel_spike_time, eod_duration = hF.eods_around_spikes(time, eod, indices) - # - # print("meep") + def test_detect_spiketimes(self): + count = 0 + for cell_data in icelldata_of_dir("./test_data/"): + print(cell_data.get_data_path()) + # if "21-ai" not in cell_data.get_data_path() and "20-ac" not in cell_data.get_data_path(): + # continue + spikes = np.array(cell_data.get_base_spikes()[0]) + + time_length = 0.2 + time = cell_data.get_base_traces(cell_data.TIME)[0] + length_data_points = int(time_length / cell_data.get_sampling_interval()) + + start_idx = 0 + end_idx = length_data_points + 1 + end_idx = end_idx if end_idx <= len(time) else len(time) + + bot_lim_spikes = spikes[spikes > time[start_idx]] + top_lim_spikes = bot_lim_spikes[bot_lim_spikes < time[end_idx]] + + expected = self.reference_base_spikes[os.path.basename(cell_data.get_data_path())] + if len(top_lim_spikes) == expected: + print("yay") + else: + + print("detected: {:}, reference: {:}".format(len(top_lim_spikes), expected)) + print("nay") + baseline = BaselineCellData(cell_data) + baseline.plot_baseline(position=0, time_length=0.2) + + count += 1 + + def test_automatic_splitting(self): + for cell_data in icelldata_of_dir("./test_data/"): + print(cell_data.get_data_path()) + v1 = cell_data.get_base_traces(cell_data.V1)[0] + + hF.detect_spike_indices_automatic_split(v1) # todo # search_eod_start_and_end_times ? (not used anymore ?)