def test_read_analogsignal(self):
        """
        Tests reading files in the 2 different formats:
        - with GIDs, with times as floats
        - with GIDs, with time as integer
        """

        filename = get_test_file_full_path(
                ioclass=NestIO,
                filename='0gid-1time-2gex-3Vm-1261-0.dat',
                directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)
        r.read_analogsignal(gid=1, t_stop=1000. * pq.ms,
                            sampling_period=pq.ms, lazy=False,
                            id_column=0, time_column=1,
                            value_column=2, value_type='V_m')
        r.read_segment(gid_list=[1], t_stop=1000. * pq.ms,
                       sampling_period=pq.ms, lazy=False, id_column_dat=0,
                       time_column_dat=1, value_columns_dat=2,
                       value_types='V_m')

        filename = get_test_file_full_path(
                ioclass=NestIO,
                filename='0gid-1time_in_steps-2Vm-1263-0.dat',
                directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)
        r.read_analogsignal(gid=1, t_stop=1000. * pq.ms,
                            time_unit=pq.CompoundUnit('0.1*ms'),
                            sampling_period=pq.ms, lazy=False,
                            id_column=0, time_column=1,
                            value_column=2, value_type='V_m')
        r.read_segment(gid_list=[1], t_stop=1000. * pq.ms,
                       time_unit=pq.CompoundUnit('0.1*ms'),
                       sampling_period=pq.ms, lazy=False, id_column_dat=0,
                       time_column_dat=1, value_columns_dat=2,
                       value_types='V_m')

        filename = get_test_file_full_path(
                ioclass=NestIO,
                filename='0gid-1time-2Vm-1259-0.dat',
                directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)
        r.read_analogsignal(gid=1, t_stop=1000. * pq.ms,
                            time_unit=pq.CompoundUnit('0.1*ms'),
                            sampling_period=pq.ms, lazy=False,
                            id_column=0, time_column=1,
                            value_column=2, value_type='V_m')
        r.read_segment(gid_list=[1], t_stop=1000. * pq.ms,
                       time_unit=pq.CompoundUnit('0.1*ms'),
                       sampling_period=pq.ms, lazy=False, id_column_dat=0,
                       time_column_dat=1, value_columns_dat=2,
                       value_types='V_m')
Ejemplo n.º 2
0
    def test_read_analogsignal(self):
        """
        Tests reading files in the 2 different formats:
        - with GIDs, with times as floats
        - with GIDs, with time as integer
        """

        filename = get_test_file_full_path(
            ioclass=NestIO,
            filename='0gid-1time-2gex-3Vm-1261-0.dat',
            directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)
        r.read_analogsignal(gid=1, t_stop=1000. * pq.ms,
                            sampling_period=pq.ms, lazy=False,
                            id_column=0, time_column=1,
                            value_column=2, value_type='V_m')
        r.read_segment(gid_list=[1], t_stop=1000. * pq.ms,
                       sampling_period=pq.ms, lazy=False, id_column_dat=0,
                       time_column_dat=1, value_columns_dat=2,
                       value_types='V_m')

        filename = get_test_file_full_path(
            ioclass=NestIO,
            filename='0gid-1time_in_steps-2Vm-1263-0.dat',
            directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)
        r.read_analogsignal(gid=1, t_stop=1000. * pq.ms,
                            time_unit=pq.CompoundUnit('0.1*ms'),
                            sampling_period=pq.ms, lazy=False,
                            id_column=0, time_column=1,
                            value_column=2, value_type='V_m')
        r.read_segment(gid_list=[1], t_stop=1000. * pq.ms,
                       time_unit=pq.CompoundUnit('0.1*ms'),
                       sampling_period=pq.ms, lazy=False, id_column_dat=0,
                       time_column_dat=1, value_columns_dat=2,
                       value_types='V_m')

        filename = get_test_file_full_path(
            ioclass=NestIO,
            filename='0gid-1time-2Vm-1259-0.dat',
            directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)
        r.read_analogsignal(gid=1, t_stop=1000. * pq.ms,
                            time_unit=pq.CompoundUnit('0.1*ms'),
                            sampling_period=pq.ms, lazy=False,
                            id_column=0, time_column=1,
                            value_column=2, value_type='V_m')
        r.read_segment(gid_list=[1], t_stop=1000. * pq.ms,
                       time_unit=pq.CompoundUnit('0.1*ms'),
                       sampling_period=pq.ms, lazy=False, id_column_dat=0,
                       time_column_dat=1, value_columns_dat=2,
                       value_types='V_m')
Ejemplo n.º 3
0
    def test_read_integer(self):
        """
        Tests if spike times are actually stored as integers if they are stored
        in time steps in the file.
        """
        filename = get_test_file_full_path(
            ioclass=NestIO,
            filename='0time_in_steps-1257-0.gdf',
            directory=self.local_test_dir,
            clean=False)
        r = NestIO(filenames=filename)
        st = r.read_spiketrain(gdf_id=None,
                               t_start=400. * pq.ms,
                               t_stop=500. * pq.ms,
                               time_unit=pq.CompoundUnit('0.1*ms'),
                               lazy=False,
                               id_column=None,
                               time_column=0)
        self.assertTrue(st.magnitude.dtype == np.int32)
        seg = r.read_segment(gid_list=[None],
                             t_start=400. * pq.ms,
                             t_stop=500. * pq.ms,
                             time_unit=pq.CompoundUnit('0.1*ms'),
                             lazy=False,
                             id_column_gdf=None,
                             time_column_gdf=0)
        sts = seg.spiketrains
        self.assertTrue(all([st.magnitude.dtype == np.int32 for st in sts]))

        filename = get_test_file_full_path(
            ioclass=NestIO,
            filename='0gid-1time_in_steps-1258-0.gdf',
            directory=self.local_test_dir,
            clean=False)
        r = NestIO(filenames=filename)
        st = r.read_spiketrain(gdf_id=1,
                               t_start=400. * pq.ms,
                               t_stop=500. * pq.ms,
                               time_unit=pq.CompoundUnit('0.1*ms'),
                               lazy=False,
                               id_column=0,
                               time_column=1)
        self.assertTrue(st.magnitude.dtype == np.int32)
        seg = r.read_segment(gid_list=[1],
                             t_start=400. * pq.ms,
                             t_stop=500. * pq.ms,
                             time_unit=pq.CompoundUnit('0.1*ms'),
                             lazy=False,
                             id_column_gdf=0,
                             time_column_gdf=1)
        sts = seg.spiketrains
        self.assertTrue(all([st.magnitude.dtype == np.int32 for st in sts]))
Ejemplo n.º 4
0
    def test_read_spiketrain(self):
        """
        Tests reading files in the 4 different formats:
        - without GIDs, with times as floats
        - without GIDs, with times as integers in time steps
        - with GIDs, with times as floats
        - with GIDs, with times as integers in time steps
        """
        filename = get_test_file_full_path(
            ioclass=NestIO,
            filename='0time-1255-0.gdf',
            directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)
        r.read_spiketrain(t_start=400. * pq.ms, t_stop=500. * pq.ms, lazy=False,
                          id_column=None, time_column=0)
        r.read_segment(t_start=400. * pq.ms, t_stop=500. * pq.ms, lazy=False,
                       id_column_gdf=None, time_column_gdf=0)

        filename = get_test_file_full_path(
            ioclass=NestIO,
            filename='0time_in_steps-1257-0.gdf',
            directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)
        r.read_spiketrain(t_start=400. * pq.ms, t_stop=500. * pq.ms,
                          time_unit=pq.CompoundUnit('0.1*ms'), lazy=False,
                          id_column=None, time_column=0)
        r.read_segment(t_start=400. * pq.ms, t_stop=500. * pq.ms,
                       time_unit=pq.CompoundUnit('0.1*ms'), lazy=False,
                       id_column_gdf=None, time_column_gdf=0)

        filename = get_test_file_full_path(
            ioclass=NestIO,
            filename='0gid-1time-1256-0.gdf',
            directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)
        r.read_spiketrain(gdf_id=1, t_start=400. * pq.ms, t_stop=500. * pq.ms,
                          lazy=False, id_column_gdf=0, time_column_gdf=1)
        r.read_segment(gid_list=[1], t_start=400. * pq.ms, t_stop=500. * pq.ms,
                       lazy=False, id_column_gdf=0, time_column_gdf=1)

        filename = get_test_file_full_path(
            ioclass=NestIO,
            filename='0gid-1time_in_steps-1258-0.gdf',
            directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)
        r.read_spiketrain(gdf_id=1, t_start=400. * pq.ms, t_stop=500. * pq.ms,
                          time_unit=pq.CompoundUnit('0.1*ms'), lazy=False,
                          id_column=0, time_column=1)
        r.read_segment(gid_list=[1], t_start=400. * pq.ms, t_stop=500. * pq.ms,
                       time_unit=pq.CompoundUnit('0.1*ms'), lazy=False,
                       id_column_gdf=0, time_column_gdf=1)
    def test_read_spiketrain(self):
        """
        Tests reading files in the 4 different formats:
        - without GIDs, with times as floats
        - without GIDs, with times as integers in time steps
        - with GIDs, with times as floats
        - with GIDs, with times as integers in time steps
        """
        filename = get_test_file_full_path(
                ioclass=NestIO,
                filename='0time-1255-0.gdf',
                directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)
        r.read_spiketrain(t_start=400. * pq.ms, t_stop=500. * pq.ms, lazy=False,
                          id_column=None, time_column=0)
        r.read_segment(t_start=400. * pq.ms, t_stop=500. * pq.ms, lazy=False,
                       id_column_gdf=None, time_column_gdf=0)

        filename = get_test_file_full_path(
                ioclass=NestIO,
                filename='0time_in_steps-1257-0.gdf',
                directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)
        r.read_spiketrain(t_start=400. * pq.ms, t_stop=500. * pq.ms,
                          time_unit=pq.CompoundUnit('0.1*ms'), lazy=False,
                          id_column=None, time_column=0)
        r.read_segment(t_start=400. * pq.ms, t_stop=500. * pq.ms,
                       time_unit=pq.CompoundUnit('0.1*ms'), lazy=False,
                       id_column_gdf=None, time_column_gdf=0)

        filename = get_test_file_full_path(
                ioclass=NestIO,
                filename='0gid-1time-1256-0.gdf',
                directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)
        r.read_spiketrain(gdf_id=1, t_start=400. * pq.ms, t_stop=500. * pq.ms,
                          lazy=False, id_column_gdf=0, time_column_gdf=1)
        r.read_segment(gid_list=[1], t_start=400. * pq.ms, t_stop=500. * pq.ms,
                       lazy=False, id_column_gdf=0, time_column_gdf=1)

        filename = get_test_file_full_path(
                ioclass=NestIO,
                filename='0gid-1time_in_steps-1258-0.gdf',
                directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)
        r.read_spiketrain(gdf_id=1, t_start=400. * pq.ms, t_stop=500. * pq.ms,
                          time_unit=pq.CompoundUnit('0.1*ms'), lazy=False,
                          id_column=0, time_column=1)
        r.read_segment(gid_list=[1], t_start=400. * pq.ms, t_stop=500. * pq.ms,
                       time_unit=pq.CompoundUnit('0.1*ms'), lazy=False,
                       id_column_gdf=0, time_column_gdf=1)
    def test_notimeid(self):
        """
        Test for warning, when no time column id was provided.
        """

        filename = get_test_file_full_path(
                ioclass=NestIO,
                filename='0gid-1time-2gex-1262-0.dat',
                directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)

        t_start_targ = 450. * pq.ms
        t_stop_targ = 460. * pq.ms
        sampling_period = pq.CompoundUnit('5*ms')

        with warnings.catch_warnings(record=True) as w:
            # Cause all warnings to always be triggered.
            warnings.simplefilter("always")
            seg = r.read_segment(gid_list=[], t_start=t_start_targ,
                                 sampling_period=sampling_period,
                                 t_stop=t_stop_targ, lazy=False,
                                 id_column_dat=0, time_column_dat=None,
                                 value_columns_dat=2, value_types='V_m')
            # Verify number and content of warning
            self.assertEqual(len(w), 1)
            self.assertIn("no time column id", str(w[0].message))
        sts = seg.analogsignals
        for st in sts:
            self.assertTrue(st.t_start == 1 * 5 * pq.ms)
            self.assertTrue(
                    st.t_stop == len(st) * sampling_period + 1 * 5 * pq.ms)
    def test_wrong_input(self):
        """
        Tests two cases of wrong user input, namely
        - User does not specify a value column
        - User does not make any specifications
        - User does not define sampling_period as a unit
        - User specifies a non-default value type without
          specifying a value_unit
        - User specifies t_start < 1.*sampling_period
        """

        filename = get_test_file_full_path(
                ioclass=NestIO,
                filename='0gid-1time-2gex-1262-0.dat',
                directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)
        with self.assertRaises(ValueError):
            r.read_segment(t_stop=1000. * pq.ms, lazy=False,
                           id_column_dat=0, time_column_dat=1)
        with self.assertRaises(ValueError):
            r.read_segment()
        with self.assertRaises(ValueError):
            r.read_segment(gid_list=[1], t_stop=1000. * pq.ms,
                           sampling_period=1. * pq.ms, lazy=False,
                           id_column_dat=0, time_column_dat=1,
                           value_columns_dat=2, value_types='V_m')

        with self.assertRaises(ValueError):
            r.read_segment(gid_list=[1], t_stop=1000. * pq.ms,
                           sampling_period=pq.ms, lazy=False,
                           id_column_dat=0, time_column_dat=1,
                           value_columns_dat=2, value_types='U_mem')
    def test_read_segment(self):
        """
        Tests if signals are correctly stored in a segment.
        """

        filename = get_test_file_full_path(
                ioclass=NestIO,
                filename='0gid-1time-2gex-1262-0.dat',
                directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)

        id_list_to_test = range(1, 10)
        seg = r.read_segment(gid_list=id_list_to_test,
                             t_stop=1000. * pq.ms,
                             sampling_period=pq.ms, lazy=False,
                             id_column_dat=0, time_column_dat=1,
                             value_columns_dat=2, value_types='V_m')

        self.assertTrue(len(seg.analogsignals) == len(id_list_to_test))

        id_list_to_test = []
        seg = r.read_segment(gid_list=id_list_to_test,
                             t_stop=1000. * pq.ms,
                             sampling_period=pq.ms, lazy=False,
                             id_column_dat=0, time_column_dat=1,
                             value_columns_dat=2, value_types='V_m')

        self.assertEqual(len(seg.analogsignals), 50)
Ejemplo n.º 9
0
    def test_signal_group_mode(self):
        dirname = get_test_file_full_path(ioclass=TdtIO,
                                          filename='aep_05',
                                          directory=self.local_test_dir,
                                          clean=False)

        # TdtIO is a hard case they are 3 groups at rawio level
        # there are 3 groups of signals
        nb_sigs_by_group = [1, 16, 16]

        signal_group_mode = 'group-by-same-units'
        reader = TdtIO(dirname=dirname)
        bl = reader.read_block(signal_group_mode=signal_group_mode)
        for seg in bl.segments:
            assert len(seg.analogsignals) == 3
            i = 0
            for anasig in seg.analogsignals:
                # print(anasig.shape, anasig.sampling_rate)
                assert anasig.shape[1] == nb_sigs_by_group[i]
                i += 1

        signal_group_mode = 'split-all'
        reader = TdtIO(dirname=dirname)
        bl = reader.read_block(signal_group_mode=signal_group_mode)
        for seg in bl.segments:
            assert len(seg.analogsignals) == np.sum(nb_sigs_by_group)
            for anasig in seg.analogsignals:
                # print(anasig.shape, anasig.sampling_rate)
                assert anasig.shape[1] == 1
 def setUp(self):
     BaseTestIO.setUp(self)
     filename = get_test_file_full_path(
             ioclass=NestIO,
             filename='0gid-1time-2Vm-3gex-4gin-1260-0.dat',
             directory=self.local_test_dir, clean=False)
     self.testIO = ColumnIO(filename=filename)
Ejemplo n.º 11
0
 def setUp(self):
     BaseTestIO.setUp(self)
     filename = get_test_file_full_path(
         ioclass=NestIO,
         filename='0gid-1time-2Vm-3gex-4gin-1260-0.dat',
         directory=self.local_test_dir, clean=False)
     self.testIO = ColumnIO(filename=filename)
Ejemplo n.º 12
0
    def test_signal_group_mode(self):
        dirname = get_test_file_full_path(ioclass=TdtIO,
                                          filename='aep_05', directory=self.local_test_dir,
                                          clean=False)

        # TdtIO is a hard case they are 3 groups at rawio level
        # there are 3 groups of signals
        nb_sigs_by_group = [1, 16, 16]

        signal_group_mode = 'group-by-same-units'
        reader = TdtIO(dirname=dirname)
        bl = reader.read_block(signal_group_mode=signal_group_mode)
        for seg in bl.segments:
            assert len(seg.analogsignals) == 3
            i = 0
            for anasig in seg.analogsignals:
                # print(anasig.shape, anasig.sampling_rate)
                assert anasig.shape[1] == nb_sigs_by_group[i]
                i += 1

        signal_group_mode = 'split-all'
        reader = TdtIO(dirname=dirname)
        bl = reader.read_block(signal_group_mode=signal_group_mode)
        for seg in bl.segments:
            assert len(seg.analogsignals) == np.sum(nb_sigs_by_group)
            for anasig in seg.analogsignals:
                # print(anasig.shape, anasig.sampling_rate)
                assert anasig.shape[1] == 1
Ejemplo n.º 13
0
    def test_wrong_input(self):
        """
        Tests two cases of wrong user input, namely
        - User does not specify a value column
        - User does not make any specifications
        - User does not define sampling_period as a unit
        - User specifies a non-default value type without
          specifying a value_unit
        - User specifies t_start < 1.*sampling_period
        """

        filename = get_test_file_full_path(
            ioclass=NestIO,
            filename='0gid-1time-2gex-1262-0.dat',
            directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)
        with self.assertRaises(ValueError):
            r.read_segment(t_stop=1000. * pq.ms, lazy=False,
                           id_column_dat=0, time_column_dat=1)
        with self.assertRaises(ValueError):
            r.read_segment()
        with self.assertRaises(ValueError):
            r.read_segment(gid_list=[1], t_stop=1000. * pq.ms,
                           sampling_period=1. * pq.ms, lazy=False,
                           id_column_dat=0, time_column_dat=1,
                           value_columns_dat=2, value_types='V_m')

        with self.assertRaises(ValueError):
            r.read_segment(gid_list=[1], t_stop=1000. * pq.ms,
                           sampling_period=pq.ms, lazy=False,
                           id_column_dat=0, time_column_dat=1,
                           value_columns_dat=2, value_types='U_mem')
Ejemplo n.º 14
0
    def test_notimeid(self):
        """
        Test for warning, when no time column id was provided.
        """

        filename = get_test_file_full_path(
            ioclass=NestIO,
            filename='0gid-1time-2gex-1262-0.dat',
            directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)

        t_start_targ = 450. * pq.ms
        t_stop_targ = 460. * pq.ms
        sampling_period = pq.CompoundUnit('5*ms')

        with warnings.catch_warnings(record=True) as w:
            # Cause all warnings to always be triggered.
            warnings.simplefilter("always")
            seg = r.read_segment(gid_list=[], t_start=t_start_targ,
                                 sampling_period=sampling_period,
                                 t_stop=t_stop_targ, lazy=False,
                                 id_column_dat=0, time_column_dat=None,
                                 value_columns_dat=2, value_types='V_m')
            # Verify number and content of warning
            self.assertEqual(len(w), 1)
            self.assertIn("no time column id", str(w[0].message))
        sts = seg.analogsignals
        for st in sts:
            self.assertTrue(st.t_start == 1 * 5 * pq.ms)
            self.assertTrue(
                st.t_stop == len(st) * sampling_period + 1 * 5 * pq.ms)
Ejemplo n.º 15
0
    def test_t_start_t_stop(self):
        """
        Test for correct t_start and t_stop values of AnalogSignalArrays.
        """
        filename = get_test_file_full_path(
            ioclass=NestIO,
            filename='0gid-1time-2gex-1262-0.dat',
            directory=self.local_test_dir,
            clean=False)
        r = NestIO(filenames=filename)

        t_start_targ = 450. * pq.ms
        t_stop_targ = 480. * pq.ms

        seg = r.read_segment(gid_list=[],
                             t_start=t_start_targ,
                             t_stop=t_stop_targ,
                             lazy=False,
                             id_column_dat=0,
                             time_column_dat=1,
                             value_columns_dat=2,
                             value_types='V_m')
        anasigs = seg.analogsignals
        for anasig in anasigs:
            self.assertTrue(anasig.t_start == t_start_targ)
            self.assertTrue(anasig.t_stop == t_stop_targ)
Ejemplo n.º 16
0
    def test_values(self):
        """
        Tests if the function returns the correct values.
        """

        filename = get_test_file_full_path(
            ioclass=NestIO,
            filename='0gid-1time-2gex-3Vm-1261-0.dat',
            directory=self.local_test_dir,
            clean=False)

        id_to_test = 1
        r = NestIO(filenames=filename)
        seg = r.read_segment(gid_list=[id_to_test],
                             t_stop=1000. * pq.ms,
                             sampling_period=pq.ms,
                             lazy=False,
                             id_column_dat=0,
                             time_column_dat=1,
                             value_columns_dat=2,
                             value_types='V_m')

        dat = np.loadtxt(filename)
        target_data = dat[:, 2][np.where(dat[:, 0] == id_to_test)]
        target_data = target_data[:, None]
        st = seg.analogsignals[0]
        np.testing.assert_array_equal(st.magnitude, target_data)
Ejemplo n.º 17
0
    def test_read_segment(self):
        """
        Tests if spiketrains are correctly stored in a segment.
        """
        filename = get_test_file_full_path(ioclass=NestIO,
                                           filename='0gid-1time-1256-0.gdf',
                                           directory=self.local_test_dir,
                                           clean=False)
        r = NestIO(filenames=filename)

        id_list_to_test = range(1, 10)
        seg = r.read_segment(gid_list=id_list_to_test,
                             t_start=400. * pq.ms,
                             t_stop=500. * pq.ms,
                             lazy=False,
                             id_column_gdf=0,
                             time_column_gdf=1)
        self.assertTrue(len(seg.spiketrains) == len(id_list_to_test))

        id_list_to_test = []
        seg = r.read_segment(gid_list=id_list_to_test,
                             t_start=400. * pq.ms,
                             t_stop=500. * pq.ms,
                             lazy=False,
                             id_column_gdf=0,
                             time_column_gdf=1)
        self.assertTrue(len(seg.spiketrains) == 50)
Ejemplo n.º 18
0
 def test_read_float(self):
     """
     Tests if spike times are stored as floats if they
     are stored as floats in the file.
     """
     filename = get_test_file_full_path(ioclass=NestIO,
                                        filename='0gid-1time-1256-0.gdf',
                                        directory=self.local_test_dir,
                                        clean=False)
     r = NestIO(filenames=filename)
     st = r.read_spiketrain(gdf_id=1,
                            t_start=400. * pq.ms,
                            t_stop=500. * pq.ms,
                            lazy=False,
                            id_column=0,
                            time_column=1)
     self.assertTrue(st.magnitude.dtype == np.float)
     seg = r.read_segment(gid_list=[1],
                          t_start=400. * pq.ms,
                          t_stop=500. * pq.ms,
                          lazy=False,
                          id_column_gdf=0,
                          time_column_gdf=1)
     sts = seg.spiketrains
     self.assertTrue(all([s.magnitude.dtype == np.float for s in sts]))
Ejemplo n.º 19
0
    def test_read_segment_range_is_reasonable(self):
        """
        Tests if error is thrown correctly, when second entry is smaller than
        the first one of the range.
        """
        filename = get_test_file_full_path(ioclass=NestIO,
                                           filename='0gid-1time-1256-0.gdf',
                                           directory=self.local_test_dir,
                                           clean=False)
        r = NestIO(filenames=filename)

        seg = r.read_segment(gid_list=(10, 10),
                             t_start=400. * pq.ms,
                             t_stop=500. * pq.ms,
                             lazy=False,
                             id_column_gdf=0,
                             time_column_gdf=1)
        self.assertEqual(len(seg.spiketrains), 1)
        with self.assertRaises(ValueError):
            r.read_segment(gid_list=(10, 9),
                           t_start=400. * pq.ms,
                           t_stop=500. * pq.ms,
                           lazy=False,
                           id_column_gdf=0,
                           time_column_gdf=1)
Ejemplo n.º 20
0
    def test_t_start_t_stop(self):
        """
        Tests if the t_start and t_stop arguments are correctly processed.
        """
        filename = get_test_file_full_path(ioclass=NestIO,
                                           filename='0gid-1time-1256-0.gdf',
                                           directory=self.local_test_dir,
                                           clean=False)
        r = NestIO(filenames=filename)

        t_stop_targ = 490. * pq.ms
        t_start_targ = 410. * pq.ms

        seg = r.read_segment(gid_list=[],
                             t_start=t_start_targ,
                             t_stop=t_stop_targ,
                             lazy=False,
                             id_column_gdf=0,
                             time_column_gdf=1)
        sts = seg.spiketrains
        self.assertTrue(
            np.max([np.max(st.magnitude) for st in sts if len(st) > 0]) <
            t_stop_targ.rescale(sts[0].times.units).magnitude)
        self.assertTrue(
            np.min([np.min(st.magnitude) for st in sts if len(st) > 0]) >=
            t_start_targ.rescale(sts[0].times.units).magnitude)
Ejemplo n.º 21
0
    def test_read_segment(self):
        """
        Tests if signals are correctly stored in a segment.
        """

        filename = get_test_file_full_path(
            ioclass=NestIO,
            filename='0gid-1time-2gex-1262-0.dat',
            directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)

        id_list_to_test = range(1, 10)
        seg = r.read_segment(gid_list=id_list_to_test,
                             t_stop=1000. * pq.ms,
                             sampling_period=pq.ms, lazy=False,
                             id_column_dat=0, time_column_dat=1,
                             value_columns_dat=2, value_types='V_m')

        self.assertTrue(len(seg.analogsignals) == len(id_list_to_test))

        id_list_to_test = []
        seg = r.read_segment(gid_list=id_list_to_test,
                             t_stop=1000. * pq.ms,
                             sampling_period=pq.ms, lazy=False,
                             id_column_dat=0, time_column_dat=1,
                             value_columns_dat=2, value_types='V_m')

        self.assertEqual(len(seg.analogsignals), 50)
Ejemplo n.º 22
0
 def test_read_analogsignal_and_spiketrain(self):
     """
     Test if spiketrains and analogsignals can be read simultaneously
     using read_segment
     """
     files = [
         '0gid-1time-2gex-3Vm-1261-0.dat', '0gid-1time_in_steps-1258-0.gdf'
     ]
     filenames = [
         get_test_file_full_path(ioclass=NestIO,
                                 filename=file,
                                 directory=self.local_test_dir,
                                 clean=False) for file in files
     ]
     r = NestIO(filenames=filenames)
     seg = r.read_segment(gid_list=[],
                          t_start=400 * pq.ms,
                          t_stop=600 * pq.ms,
                          id_column_gdf=0,
                          time_column_gdf=1,
                          id_column_dat=0,
                          time_column_dat=1,
                          value_columns_dat=2)
     self.assertEqual(len(seg.spiketrains), 50)
     self.assertEqual(len(seg.analogsignals), 50)
Ejemplo n.º 23
0
    def test__handle_pathlib_filename(self):
        if self.files_to_test:
            filename = get_test_file_full_path(self.ioclass,
                                               filename=self.files_to_test[0],
                                               directory=self.local_test_dir)
            pathlib_filename = pathlib.Path(filename)

            if self.ioclass.mode == 'file':
                self.ioclass(filename=pathlib_filename)
            elif self.ioclass.mode == 'dir':
                self.ioclass(dirname=pathlib_filename)
Ejemplo n.º 24
0
 def test_no_gid_no_time(self):
     filename = get_test_file_full_path(
         ioclass=NestIO,
         filename='N1-0Vm-1267-0.dat',
         directory=self.local_test_dir, clean=False)
     r = NestIO(filenames=filename)
     anasig = r.read_analogsignal(gid=None,
                                  sampling_period=pq.ms, lazy=False,
                                  id_column=None, time_column=None,
                                  value_column=0, value_type='V_m')
     self.assertEqual(anasig.annotations['id'], None)
     self.assertEqual(len(anasig), 19)
 def test_single_gid(self):
     filename = get_test_file_full_path(
             ioclass=NestIO,
             filename='N1-0gid-1time-2Vm-1265-0.dat',
             directory=self.local_test_dir, clean=False)
     r = NestIO(filenames=filename)
     anasig = r.read_analogsignal(gid=1, t_stop=1000. * pq.ms,
                                  time_unit=pq.CompoundUnit('0.1*ms'),
                                  sampling_period=pq.ms, lazy=False,
                                  id_column=0, time_column=1,
                                  value_column=2, value_type='V_m')
     assert anasig.annotations['id'] == 1
 def test_no_gid_no_time(self):
     filename = get_test_file_full_path(
             ioclass=NestIO,
             filename='N1-0Vm-1267-0.dat',
             directory=self.local_test_dir, clean=False)
     r = NestIO(filenames=filename)
     anasig = r.read_analogsignal(gid=None,
                                  sampling_period=pq.ms, lazy=False,
                                  id_column=None, time_column=None,
                                  value_column=0, value_type='V_m')
     self.assertEqual(anasig.annotations['id'], None)
     self.assertEqual(len(anasig), 19)
Ejemplo n.º 27
0
 def test_single_gid(self):
     filename = get_test_file_full_path(
         ioclass=NestIO,
         filename='N1-0gid-1time-2Vm-1265-0.dat',
         directory=self.local_test_dir, clean=False)
     r = NestIO(filenames=filename)
     anasig = r.read_analogsignal(gid=1, t_stop=1000. * pq.ms,
                                  time_unit=pq.CompoundUnit('0.1*ms'),
                                  sampling_period=pq.ms, lazy=False,
                                  id_column=0, time_column=1,
                                  value_column=2, value_type='V_m')
     assert anasig.annotations['id'] == 1
Ejemplo n.º 28
0
 def test_no_gid(self):
     filename = get_test_file_full_path(
         ioclass=NestIO,
         filename='N1-0time-1Vm-1266-0.dat',
         directory=self.local_test_dir, clean=False)
     r = NestIO(filenames=filename)
     anasig = r.read_analogsignal(gid=None, t_stop=1000. * pq.ms,
                                  time_unit=pq.CompoundUnit('0.1*ms'),
                                  sampling_period=pq.ms, lazy=False,
                                  id_column=None, time_column=0,
                                  value_column=1, value_type='V_m')
     self.assertEqual(anasig.annotations['id'], None)
     self.assertEqual(len(anasig), 19)
    def test_read_integer(self):
        """
        Tests if spike times are actually stored as integers if they are stored
        in time steps in the file.
        """
        filename = get_test_file_full_path(
                ioclass=NestIO,
                filename='0time_in_steps-1257-0.gdf',
                directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)
        st = r.read_spiketrain(gdf_id=None, t_start=400. * pq.ms,
                               t_stop=500. * pq.ms,
                               time_unit=pq.CompoundUnit('0.1*ms'),
                               lazy=False, id_column=None, time_column=0)
        self.assertTrue(st.magnitude.dtype == np.int32)
        seg = r.read_segment(gid_list=[None], t_start=400. * pq.ms,
                             t_stop=500. * pq.ms,
                             time_unit=pq.CompoundUnit('0.1*ms'),
                             lazy=False, id_column_gdf=None, time_column_gdf=0)
        sts = seg.spiketrains
        self.assertTrue(all([st.magnitude.dtype == np.int32 for st in sts]))

        filename = get_test_file_full_path(
                ioclass=NestIO,
                filename='0gid-1time_in_steps-1258-0.gdf',
                directory=self.local_test_dir, clean=False)
        r = NestIO(
                filenames=filename)
        st = r.read_spiketrain(gdf_id=1, t_start=400. * pq.ms,
                               t_stop=500. * pq.ms,
                               time_unit=pq.CompoundUnit('0.1*ms'),
                               lazy=False, id_column=0, time_column=1)
        self.assertTrue(st.magnitude.dtype == np.int32)
        seg = r.read_segment(gid_list=[1], t_start=400. * pq.ms,
                             t_stop=500. * pq.ms,
                             time_unit=pq.CompoundUnit('0.1*ms'),
                             lazy=False, id_column_gdf=0, time_column_gdf=1)
        sts = seg.spiketrains
        self.assertTrue(all([st.magnitude.dtype == np.int32 for st in sts]))
Ejemplo n.º 30
0
 def test_read_spiketrain_can_return_empty_spiketrain(self):
     """
     Tests if read_spiketrain returns an empty SpikeTrain if no spikes are in
     time range.
     """
     filename = get_test_file_full_path(
         ioclass=NestIO,
         filename='0gid-1time-1256-0.gdf',
         directory=self.local_test_dir, clean=False)
     r = NestIO(filenames=filename)
     st = r.read_spiketrain(gdf_id=0, t_start=400. * pq.ms,
                            t_stop=410. * pq.ms)
     self.assertEqual(st.size, 0)
 def test_no_gid(self):
     filename = get_test_file_full_path(
             ioclass=NestIO,
             filename='N1-0time-1Vm-1266-0.dat',
             directory=self.local_test_dir, clean=False)
     r = NestIO(filenames=filename)
     anasig = r.read_analogsignal(gid=None, t_stop=1000. * pq.ms,
                                  time_unit=pq.CompoundUnit('0.1*ms'),
                                  sampling_period=pq.ms, lazy=False,
                                  id_column=None, time_column=0,
                                  value_column=1, value_type='V_m')
     self.assertEqual(anasig.annotations['id'], None)
     self.assertEqual(len(anasig), 19)
Ejemplo n.º 32
0
 def test_read_spiketrain_annotates(self):
     """
     Tests if correct annotation is added when reading a spike train.
     """
     filename = get_test_file_full_path(
         ioclass=NestIO,
         filename='0gid-1time-1256-0.gdf',
         directory=self.local_test_dir, clean=False)
     r = NestIO(filenames=filename)
     ID = 7
     st = r.read_spiketrain(gdf_id=ID, t_start=400. * pq.ms,
                            t_stop=500. * pq.ms)
     self.assertEqual(ID, st.annotations['id'])
 def test_read_spiketrain_annotates(self):
     """
     Tests if correct annotation is added when reading a spike train.
     """
     filename = get_test_file_full_path(
             ioclass=NestIO,
             filename='0gid-1time-1256-0.gdf',
             directory=self.local_test_dir, clean=False)
     r = NestIO(filenames=filename)
     ID = 7
     st = r.read_spiketrain(gdf_id=ID, t_start=400. * pq.ms,
                            t_stop=500. * pq.ms)
     self.assertEqual(ID, st.annotations['id'])
 def test_read_spiketrain_can_return_empty_spiketrain(self):
     """
     Tests if read_spiketrain returns an empty SpikeTrain if no spikes are in
     time range.
     """
     filename = get_test_file_full_path(
             ioclass=NestIO,
             filename='0gid-1time-1256-0.gdf',
             directory=self.local_test_dir, clean=False)
     r = NestIO(filenames=filename)
     st = r.read_spiketrain(gdf_id=0, t_start=400. * pq.ms,
                            t_stop=1. * pq.ms)
     self.assertEqual(st.size, 0)
Ejemplo n.º 35
0
 def test_read_segment_can_return_empty_spiketrains(self):
     """
     Tests if read_segment makes sure that only non-zero spike trains are
     returned.
     """
     filename = get_test_file_full_path(
         ioclass=NestIO,
         filename='0gid-1time-1256-0.gdf',
         directory=self.local_test_dir, clean=False)
     r = NestIO(filenames=filename)
     seg = r.read_segment(gid_list=[], t_start=400.4 * pq.ms,
                          t_stop=400.5 * pq.ms)
     for st in seg.spiketrains:
         self.assertEqual(st.size, 0)
Ejemplo n.º 36
0
 def test_read_segment_annotates(self):
     """
     Tests if correct annotation is added when reading a segment.
     """
     filename = get_test_file_full_path(
         ioclass=NestIO,
         filename='0gid-1time-1256-0.gdf',
         directory=self.local_test_dir, clean=False)
     r = NestIO(filenames=filename)
     IDs = (5, 11)
     sts = r.read_segment(gid_list=(5, 11), t_start=400. * pq.ms,
                          t_stop=500. * pq.ms)
     for ID in np.arange(5, 12):
         self.assertEqual(ID, sts.spiketrains[ID - 5].annotations['id'])
    def test_read_segment_accepts_range(self):
        """
        Tests if spiketrains can be retrieved by specifying a range of GDF IDs.
        """
        filename = get_test_file_full_path(
                ioclass=NestIO,
                filename='0gid-1time-1256-0.gdf',
                directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)

        seg = r.read_segment(gid_list=(10, 39), t_start=400. * pq.ms,
                             t_stop=500. * pq.ms, lazy=False,
                             id_column_gdf=0, time_column_gdf=1)
        self.assertEqual(len(seg.spiketrains), 30)
 def test_read_segment_annotates(self):
     """
     Tests if correct annotation is added when reading a segment.
     """
     filename = get_test_file_full_path(
             ioclass=NestIO,
             filename='0gid-1time-1256-0.gdf',
             directory=self.local_test_dir, clean=False)
     r = NestIO(filenames=filename)
     IDs = (5, 11)
     sts = r.read_segment(gid_list=(5, 11), t_start=400. * pq.ms,
                          t_stop=500. * pq.ms)
     for ID in np.arange(5, 12):
         self.assertEqual(ID, sts.spiketrains[ID - 5].annotations['id'])
Ejemplo n.º 39
0
    def test_read_segment_accepts_range(self):
        """
        Tests if spiketrains can be retrieved by specifying a range of GDF IDs.
        """
        filename = get_test_file_full_path(
            ioclass=NestIO,
            filename='0gid-1time-1256-0.gdf',
            directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)

        seg = r.read_segment(gid_list=(10, 39), t_start=400. * pq.ms,
                             t_stop=500. * pq.ms, lazy=False,
                             id_column_gdf=0, time_column_gdf=1)
        self.assertEqual(len(seg.spiketrains), 30)
 def test_read_segment_can_return_empty_spiketrains(self):
     """
     Tests if read_segment makes sure that only non-zero spike trains are
     returned.
     """
     filename = get_test_file_full_path(
             ioclass=NestIO,
             filename='0gid-1time-1256-0.gdf',
             directory=self.local_test_dir, clean=False)
     r = NestIO(filenames=filename)
     seg = r.read_segment(gid_list=[], t_start=400. * pq.ms,
                          t_stop=1. * pq.ms)
     for st in seg.spiketrains:
         self.assertEqual(st.size, 0)
 def test_t_stop_undefined_raises_error(self):
     """
     Tests if undefined t_stop, i.e., t_stop=None raises error.
     """
     filename = get_test_file_full_path(
             ioclass=NestIO,
             filename='0gid-1time-1256-0.gdf',
             directory=self.local_test_dir, clean=False)
     r = NestIO(filenames=filename)
     with self.assertRaises(ValueError):
         r.read_spiketrain(gdf_id=1, t_start=400. * pq.ms, lazy=False,
                           id_column=0, time_column=1)
     with self.assertRaises(ValueError):
         r.read_segment(gid_list=[1, 2, 3], t_start=400. * pq.ms, lazy=False,
                        id_column_gdf=0, time_column_gdf=1)
Ejemplo n.º 42
0
 def test_signal_group_mode(self):
     filename = get_test_file_full_path(ioclass=NeuroExplorerIO, 
                 filename='File_neuroexplorer_1.nex',directory=self.local_test_dir,
                 clean=False)
     
     #test that 2 signals are rendered with 2 sampling_rate
     for signal_group_mode in ('group-by-same-units', 'split-all'):
         reader = NeuroExplorerIO(filename=filename)
         bl = reader.read_block(signal_group_mode=signal_group_mode)
         seg = bl.segments[0]
         assert len(seg.analogsignals) ==2
         anasig0  = seg.analogsignals[0]
         anasig1  = seg.analogsignals[1]
         assert anasig0.sampling_rate != anasig1.sampling_rate
         assert anasig0.shape != anasig1.shape
Ejemplo n.º 43
0
 def test_t_stop_undefined_raises_error(self):
     """
     Tests if undefined t_stop, i.e., t_stop=None raises error.
     """
     filename = get_test_file_full_path(
         ioclass=NestIO,
         filename='0gid-1time-1256-0.gdf',
         directory=self.local_test_dir, clean=False)
     r = NestIO(filenames=filename)
     with self.assertRaises(ValueError):
         r.read_spiketrain(gdf_id=1, t_start=400. * pq.ms, lazy=False,
                           id_column=0, time_column=1)
     with self.assertRaises(ValueError):
         r.read_segment(gid_list=[1, 2, 3], t_start=400. * pq.ms, lazy=False,
                        id_column_gdf=0, time_column_gdf=1)
Ejemplo n.º 44
0
 def test_adding_custom_annotation(self):
     """
     Tests if custom annotation is correctly added.
     """
     filename = get_test_file_full_path(
         ioclass=NestIO,
         filename='0gid-1time-1256-0.gdf',
         directory=self.local_test_dir, clean=False)
     r = NestIO(filenames=filename)
     st = r.read_spiketrain(gdf_id=0, t_start=400. * pq.ms,
                            t_stop=500. * pq.ms,
                            layer='L23', population='I')
     self.assertEqual(0, st.annotations.pop('id'))
     self.assertEqual('L23', st.annotations.pop('layer'))
     self.assertEqual('I', st.annotations.pop('population'))
     self.assertEqual({}, st.annotations)
 def test_adding_custom_annotation(self):
     """
     Tests if custom annotation is correctly added.
     """
     filename = get_test_file_full_path(
             ioclass=NestIO,
             filename='0gid-1time-1256-0.gdf',
             directory=self.local_test_dir, clean=False)
     r = NestIO(filenames=filename)
     st = r.read_spiketrain(gdf_id=0, t_start=400. * pq.ms,
                            t_stop=500. * pq.ms,
                            layer='L23', population='I')
     self.assertEqual(0, st.annotations.pop('id'))
     self.assertEqual('L23', st.annotations.pop('layer'))
     self.assertEqual('I', st.annotations.pop('population'))
     self.assertEqual({}, st.annotations)
Ejemplo n.º 46
0
    def test_signal_group_mode(self):
        filename = get_test_file_full_path(ioclass=NeuroExplorerIO,
                                           filename='File_neuroexplorer_1.nex',
                                           directory=self.local_test_dir,
                                           clean=False)

        # test that 2 signals are rendered with 2 sampling_rate
        for signal_group_mode in ('group-by-same-units', 'split-all'):
            reader = NeuroExplorerIO(filename=filename)
            bl = reader.read_block(signal_group_mode=signal_group_mode)
            seg = bl.segments[0]
            assert len(seg.analogsignals) == 2
            anasig0 = seg.analogsignals[0]
            anasig1 = seg.analogsignals[1]
            assert anasig0.sampling_rate != anasig1.sampling_rate
            assert anasig0.shape != anasig1.shape
Ejemplo n.º 47
0
    def test_multiple_value_columns(self):
        """
        Test for simultaneous loading of multiple columns from dat file.
        """

        filename = get_test_file_full_path(
            ioclass=NestIO,
            filename='0gid-1time-2Vm-3Iex-4Iin-1264-0.dat',
            directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)

        sampling_period = pq.CompoundUnit('5*ms')
        seg = r.read_segment(gid_list=[1001],
                             value_columns_dat=[2, 3],
                             sampling_period=sampling_period)
        anasigs = seg.analogsignals
        self.assertEqual(len(anasigs), 2)
    def test_multiple_value_columns(self):
        """
        Test for simultaneous loading of multiple columns from dat file.
        """

        filename = get_test_file_full_path(
                ioclass=NestIO,
                filename='0gid-1time-2Vm-3Iex-4Iin-1264-0.dat',
                directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)

        sampling_period = pq.CompoundUnit('5*ms')
        seg = r.read_segment(gid_list=[1001],
                             value_columns_dat=[2, 3],
                             sampling_period=sampling_period)
        anasigs = seg.analogsignals
        self.assertEqual(len(anasigs), 2)
 def test_wrong_input(self):
     """
     Tests two cases of wrong user input, namely
     - User does not specify neuron IDs although the file contains IDs.
     - User does not make any specifications.
     """
     filename = get_test_file_full_path(
             ioclass=NestIO,
             filename='0gid-1time-1256-0.gdf',
             directory=self.local_test_dir, clean=False)
     r = NestIO(filenames=filename)
     with self.assertRaises(ValueError):
         r.read_segment(t_start=400. * pq.ms, t_stop=500. * pq.ms,
                        lazy=False,
                        id_column_gdf=0, time_column_gdf=1)
     with self.assertRaises(ValueError):
         r.read_segment()
Ejemplo n.º 50
0
 def test_wrong_input(self):
     """
     Tests two cases of wrong user input, namely
     - User does not specify neuron IDs although the file contains IDs.
     - User does not make any specifications.
     """
     filename = get_test_file_full_path(
         ioclass=NestIO,
         filename='0gid-1time-1256-0.gdf',
         directory=self.local_test_dir, clean=False)
     r = NestIO(filenames=filename)
     with self.assertRaises(ValueError):
         r.read_segment(t_start=400. * pq.ms, t_stop=500. * pq.ms,
                        lazy=False,
                        id_column_gdf=0, time_column_gdf=1)
     with self.assertRaises(ValueError):
         r.read_segment()
Ejemplo n.º 51
0
 def test_gdf_id_illdefined_raises_error(self):
     """
     Tests if ill-defined gdf_id in read_spiketrain (i.e., None, list, or
     empty list) raises error.
     """
     filename = get_test_file_full_path(
         ioclass=NestIO,
         filename='0gid-1time-1256-0.gdf',
         directory=self.local_test_dir, clean=False)
     r = NestIO(filenames=filename)
     with self.assertRaises(ValueError):
         r.read_spiketrain(gdf_id=[], t_start=400. * pq.ms,
                           t_stop=500. * pq.ms)
     with self.assertRaises(ValueError):
         r.read_spiketrain(gdf_id=[1], t_start=400. * pq.ms,
                           t_stop=500. * pq.ms)
     with self.assertRaises(ValueError):
         r.read_spiketrain(t_start=400. * pq.ms, t_stop=500. * pq.ms)
 def test_gdf_id_illdefined_raises_error(self):
     """
     Tests if ill-defined gdf_id in read_spiketrain (i.e., None, list, or
     empty list) raises error.
     """
     filename = get_test_file_full_path(
             ioclass=NestIO,
             filename='0gid-1time-1256-0.gdf',
             directory=self.local_test_dir, clean=False)
     r = NestIO(filenames=filename)
     with self.assertRaises(ValueError):
         r.read_spiketrain(gdf_id=[], t_start=400. * pq.ms,
                           t_stop=500. * pq.ms)
     with self.assertRaises(ValueError):
         r.read_spiketrain(gdf_id=[1], t_start=400. * pq.ms,
                           t_stop=500. * pq.ms)
     with self.assertRaises(ValueError):
         r.read_spiketrain(t_start=400. * pq.ms, t_stop=500. * pq.ms)
    def test_read_segment_range_is_reasonable(self):
        """
        Tests if error is thrown correctly, when second entry is smaller than
        the first one of the range.
        """
        filename = get_test_file_full_path(
                ioclass=NestIO,
                filename='0gid-1time-1256-0.gdf',
                directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)

        seg = r.read_segment(gid_list=(10, 10), t_start=400. * pq.ms,
                             t_stop=500. * pq.ms, lazy=False,
                             id_column_gdf=0, time_column_gdf=1)
        self.assertEqual(len(seg.spiketrains), 1)
        with self.assertRaises(ValueError):
            r.read_segment(gid_list=(10, 9), t_start=400. * pq.ms,
                           t_stop=500. * pq.ms, lazy=False,
                           id_column_gdf=0, time_column_gdf=1)
 def test_read_float(self):
     """
     Tests if spike times are stored as floats if they
     are stored as floats in the file.
     """
     filename = get_test_file_full_path(
             ioclass=NestIO,
             filename='0gid-1time-1256-0.gdf',
             directory=self.local_test_dir, clean=False)
     r = NestIO(filenames=filename)
     st = r.read_spiketrain(gdf_id=1, t_start=400. * pq.ms,
                            t_stop=500. * pq.ms,
                            lazy=False, id_column=0, time_column=1)
     self.assertTrue(st.magnitude.dtype == np.float)
     seg = r.read_segment(gid_list=[1], t_start=400. * pq.ms,
                          t_stop=500. * pq.ms,
                          lazy=False, id_column_gdf=0, time_column_gdf=1)
     sts = seg.spiketrains
     self.assertTrue(all([s.magnitude.dtype == np.float for s in sts]))
 def test_read_analogsignal_and_spiketrain(self):
     """
     Test if spiketrains and analogsignals can be read simultaneously
     using read_segment
     """
     files = ['0gid-1time-2gex-3Vm-1261-0.dat',
              '0gid-1time_in_steps-1258-0.gdf']
     filenames = [get_test_file_full_path(ioclass=NestIO, filename=file,
                                          directory=self.local_test_dir,
                                          clean=False)
                  for file in files]
     r = NestIO(filenames=filenames)
     seg = r.read_segment(gid_list=[], t_start=400 * pq.ms,
                          t_stop=600 * pq.ms,
                          id_column_gdf=0, time_column_gdf=1,
                          id_column_dat=0, time_column_dat=1,
                          value_columns_dat=2)
     self.assertEqual(len(seg.spiketrains), 50)
     self.assertEqual(len(seg.analogsignals), 50)
    def test_values(self):
        """
        Tests if the routine loads the correct numbers from the file.
        """
        id_to_test = 1
        filename = get_test_file_full_path(
                ioclass=NestIO,
                filename='0gid-1time-1256-0.gdf',
                directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)
        seg = r.read_segment(gid_list=[id_to_test],
                             t_start=400. * pq.ms,
                             t_stop=500. * pq.ms, lazy=False,
                             id_column_gdf=0, time_column_gdf=1)

        dat = np.loadtxt(filename)
        target_data = dat[:, 1][np.where(dat[:, 0] == id_to_test)]

        st = seg.spiketrains[0]
        np.testing.assert_array_equal(st.magnitude, target_data)
    def test_id_column_none_multiple_neurons(self):
        """
        Tests if function correctly raises an error if the user tries to read
        from a file which does not contain unit IDs, but data for multiple
        units.
        """

        filename = get_test_file_full_path(
                ioclass=NestIO,
                filename='0time-1255-0.gdf',
                directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)
        with self.assertRaises(ValueError):
            r.read_analogsignal(t_stop=1000. * pq.ms, lazy=False,
                                sampling_period=pq.ms,
                                id_column=None, time_column=0,
                                value_column=1)
            r.read_segment(t_stop=1000. * pq.ms, lazy=False,
                           sampling_period=pq.ms, id_column_gdf=None,
                           time_column_gdf=0)
    def test_read_segment(self):
        """
        Tests if spiketrains are correctly stored in a segment.
        """
        filename = get_test_file_full_path(
                ioclass=NestIO,
                filename='0gid-1time-1256-0.gdf',
                directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)

        id_list_to_test = range(1, 10)
        seg = r.read_segment(gid_list=id_list_to_test, t_start=400. * pq.ms,
                             t_stop=500. * pq.ms, lazy=False,
                             id_column_gdf=0, time_column_gdf=1)
        self.assertTrue(len(seg.spiketrains) == len(id_list_to_test))

        id_list_to_test = []
        seg = r.read_segment(gid_list=id_list_to_test, t_start=400. * pq.ms,
                             t_stop=500. * pq.ms, lazy=False,
                             id_column_gdf=0, time_column_gdf=1)
        self.assertTrue(len(seg.spiketrains) == 50)
    def test_t_start_t_stop(self):
        """
        Test for correct t_start and t_stop values of AnalogSignalArrays.
        """
        filename = get_test_file_full_path(
                ioclass=NestIO,
                filename='0gid-1time-2gex-1262-0.dat',
                directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)

        t_start_targ = 450. * pq.ms
        t_stop_targ = 480. * pq.ms

        seg = r.read_segment(gid_list=[], t_start=t_start_targ,
                             t_stop=t_stop_targ, lazy=False,
                             id_column_dat=0, time_column_dat=1,
                             value_columns_dat=2, value_types='V_m')
        anasigs = seg.analogsignals
        for anasig in anasigs:
            self.assertTrue(anasig.t_start == t_start_targ)
            self.assertTrue(anasig.t_stop == t_stop_targ)
    def test_t_start_t_stop(self):
        """
        Tests if the t_start and t_stop arguments are correctly processed.
        """
        filename = get_test_file_full_path(
                ioclass=NestIO,
                filename='0gid-1time-1256-0.gdf',
                directory=self.local_test_dir, clean=False)
        r = NestIO(filenames=filename)

        t_stop_targ = 490. * pq.ms
        t_start_targ = 410. * pq.ms

        seg = r.read_segment(gid_list=[], t_start=t_start_targ,
                             t_stop=t_stop_targ, lazy=False,
                             id_column_gdf=0, time_column_gdf=1)
        sts = seg.spiketrains
        self.assertTrue(np.max([np.max(st.magnitude) for st in sts
                                if len(st) > 0])
                        < t_stop_targ.rescale(sts[0].times.units).magnitude)
        self.assertTrue(np.min([np.min(st.magnitude) for st in sts
                                if len(st) > 0])
                        >= t_start_targ.rescale(sts[0].times.units).magnitude)