def cleanup_file(self, path):
     '''
     Remove test files or directories safely.
     '''
     cleanup_test_file(self.ioclass, path, directory=self.local_test_dir)
Ejemplo n.º 2
0
 def cleanup_file(self, path):
     '''
     Remove test files or directories safely.
     '''
     cleanup_test_file(self.ioclass, path, directory=self.local_test_dir)
    def test_Riehle_et_al_97_UE(self):      
        from neo.rawio.tests.tools import (download_test_file,
                                           create_local_temp_dir,
                                           make_all_directories)
        from neo.test.iotest.tools import (cleanup_test_file)
        url = [
            "https://raw.githubusercontent.com/ReScience-Archives/" +
            "Rostami-Ito-Denker-Gruen-2017/master/data",
            "https://raw.githubusercontent.com/ReScience-Archives/" +
            "Rostami-Ito-Denker-Gruen-2017/master/data"]
        shortname = "unitary_event_analysis_test_data"
        local_test_dir = create_local_temp_dir(
            shortname, os.environ.get("ELEPHANT_TEST_FILE_DIR"))
        files_to_download = ["extracted_data.npy", "winny131_23.gdf"]
        make_all_directories(files_to_download,
                             local_test_dir)
        for f_cnt, f in enumerate(files_to_download):
            download_test_file(f, local_test_dir, url[f_cnt])

        # load spike data of figure 2 of Riehle et al 1997
        sys.path.append(local_test_dir)
        file_name = '/winny131_23.gdf'
        trigger = 'RS_4'
        t_pre = 1799 * pq.ms
        t_post = 300 * pq.ms
        spiketrain = self.load_gdf2Neo(local_test_dir + file_name,
                                       trigger, t_pre, t_post)

        # calculating UE ...
        winsize = 100 * pq.ms
        binsize = 5 * pq.ms
        winstep = 5 * pq.ms
        pattern_hash = [3]
        method = 'analytic_TrialAverage'
        t_start = spiketrain[0][0].t_start
        t_stop = spiketrain[0][0].t_stop
        t_winpos = ue._winpos(t_start, t_stop, winsize, winstep)
        significance_level = 0.05

        UE = ue.jointJ_window_analysis(
            spiketrain, binsize, winsize, winstep,
            pattern_hash, method=method)
        # load extracted data from figure 2 of Riehle et al 1997
        try:
            extracted_data = np.load(
                local_test_dir + '/extracted_data.npy').item()
        except UnicodeError:
            extracted_data = np.load(
                local_test_dir + '/extracted_data.npy', encoding='latin1').item()
        Js_sig = ue.jointJ(significance_level)
        sig_idx_win = np.where(UE['Js'] >= Js_sig)[0]
        diff_UE_rep = []
        y_cnt = 0
        for tr in range(len(spiketrain)):
            x_idx = np.sort(
                np.unique(UE['indices']['trial' + str(tr)],
                          return_index=True)[1])
            x = UE['indices']['trial' + str(tr)][x_idx]
            if len(x) > 0:
                # choose only the significant coincidences
                xx = []
                for j in sig_idx_win:
                    xx = np.append(xx, x[np.where(
                        (x * binsize >= t_winpos[j]) &
                        (x * binsize < t_winpos[j] + winsize))])
                x_tmp = np.unique(xx) * binsize.magnitude
                if len(x_tmp) > 0:
                    ue_trial = np.sort(extracted_data['ue'][y_cnt])
                    diff_UE_rep = np.append(
                        diff_UE_rep, x_tmp - ue_trial)
                    y_cnt += +1
        np.testing.assert_array_less(np.abs(diff_UE_rep), 0.3)
        cleanup_test_file('dir', local_test_dir)