Пример #1
0
    def read_block(self, lazy=False, cascade=True):
        """

        """

        blk = Block()
        if cascade:
            seg = Segment(file_origin=self._absolute_filename)

            blk.channel_indexes = self._channel_indexes

            blk.segments += [seg]

            seg.analogsignals = self.read_analogsignal(lazy=lazy,
                                                       cascade=cascade)
            try:
                seg.irregularlysampledsignals = self.read_tracking()
            except Exception as e:
                print('Warning: unable to read tracking')
                print(e)
            seg.spiketrains = self.read_spiketrain()

            # TODO Call all other read functions

            seg.duration = self._duration

            # TODO May need to "populate_RecordingChannel"

            # spiketrain = self.read_spiketrain()

            # seg.spiketrains.append()

        blk.create_many_to_one_relationship()
        return blk
Пример #2
0
    def test__construct_subsegment_by_unit(self):
        nb_seg = 3
        nb_unit = 7
        unit_with_sig = np.array([0, 2, 5])
        signal_types = ['Vm', 'Conductances']
        sig_len = 100

        # channelindexes
        chxs = [ChannelIndex(name='Vm',
                             index=unit_with_sig),
                ChannelIndex(name='Conductance',
                             index=unit_with_sig)]

        # Unit
        all_unit = []
        for u in range(nb_unit):
            un = Unit(name='Unit #%d' % u, channel_indexes=np.array([u]))
            assert_neo_object_is_compliant(un)
            all_unit.append(un)

        blk = Block()
        blk.channel_indexes = chxs
        for s in range(nb_seg):
            seg = Segment(name='Simulation %s' % s)
            for j in range(nb_unit):
                st = SpikeTrain([1, 2], units='ms',
                                t_start=0., t_stop=10)
                st.unit = all_unit[j]

            for t in signal_types:
                anasigarr = AnalogSignal(np.zeros((sig_len,
                                                   len(unit_with_sig))),
                                         units='nA',
                                         sampling_rate=1000. * pq.Hz,
                                         channel_indexes=unit_with_sig)
                seg.analogsignals.append(anasigarr)

        blk.create_many_to_one_relationship()
        for unit in all_unit:
            assert_neo_object_is_compliant(unit)
        for chx in chxs:
            assert_neo_object_is_compliant(chx)
        assert_neo_object_is_compliant(blk)

        # what you want
        newseg = seg.construct_subsegment_by_unit(all_unit[:4])
        assert_neo_object_is_compliant(newseg)
Пример #3
0
    def test__construct_subsegment_by_unit(self):
        nb_seg = 3
        nb_unit = 7
        unit_with_sig = np.array([0, 2, 5])
        signal_types = ['Vm', 'Conductances']
        sig_len = 100

        # channelindexes
        chxs = [ChannelIndex(name='Vm',
                             index=unit_with_sig),
                ChannelIndex(name='Conductance',
                             index=unit_with_sig)]

        # Unit
        all_unit = []
        for u in range(nb_unit):
            un = Unit(name='Unit #%d' % u, channel_indexes=np.array([u]))
            assert_neo_object_is_compliant(un)
            all_unit.append(un)

        blk = Block()
        blk.channel_indexes = chxs
        for s in range(nb_seg):
            seg = Segment(name='Simulation %s' % s)
            for j in range(nb_unit):
                st = SpikeTrain([1, 2], units='ms',
                                t_start=0., t_stop=10)
                st.unit = all_unit[j]

            for t in signal_types:
                anasigarr = AnalogSignal(np.zeros((sig_len,
                                                        len(unit_with_sig))),
                                              units='nA',
                                              sampling_rate=1000.*pq.Hz,
                                              channel_indexes=unit_with_sig)
                seg.analogsignals.append(anasigarr)

        blk.create_many_to_one_relationship()
        for unit in all_unit:
            assert_neo_object_is_compliant(unit)
        for chx in chxs:
            assert_neo_object_is_compliant(chx)
        assert_neo_object_is_compliant(blk)

        # what you want
        newseg = seg.construct_subsegment_by_unit(all_unit[:4])
        assert_neo_object_is_compliant(newseg)
Пример #4
0
    def test__children(self):
        blk = Block(name='block1')
        blk.channel_indexes = [self.chx1]
        blk.create_many_to_one_relationship()

        self.assertEqual(self.chx1._container_child_objects, ('Unit', ))
        self.assertEqual(self.chx1._data_child_objects,
                         ('AnalogSignal', 'IrregularlySampledSignal'))
        self.assertEqual(self.chx1._single_parent_objects, ('Block', ))
        self.assertEqual(self.chx1._multi_child_objects, tuple())
        self.assertEqual(self.chx1._multi_parent_objects, ())
        self.assertEqual(self.chx1._child_properties, ())

        self.assertEqual(self.chx1._single_child_objects,
                         ('Unit', 'AnalogSignal', 'IrregularlySampledSignal'))

        self.assertEqual(self.chx1._container_child_containers, ('units', ))
        self.assertEqual(self.chx1._data_child_containers,
                         ('analogsignals', 'irregularlysampledsignals'))
        self.assertEqual(
            self.chx1._single_child_containers,
            ('units', 'analogsignals', 'irregularlysampledsignals'))
        self.assertEqual(self.chx1._single_parent_containers, ('block', ))
        self.assertEqual(self.chx1._multi_child_containers, tuple())
        self.assertEqual(self.chx1._multi_parent_containers, ())

        self.assertEqual(self.chx1._child_objects,
                         ('Unit', 'AnalogSignal', 'IrregularlySampledSignal'))
        self.assertEqual(
            self.chx1._child_containers,
            ('units', 'analogsignals', 'irregularlysampledsignals'))
        self.assertEqual(self.chx1._parent_objects, ('Block', ))
        self.assertEqual(self.chx1._parent_containers, ('block', ))

        self.assertEqual(len(self.chx1._single_children), 3 * self.nchildren)
        self.assertEqual(len(self.chx1._multi_children), 0)
        self.assertEqual(len(self.chx1.data_children), 2 * self.nchildren)
        self.assertEqual(len(self.chx1.data_children_recur),
                         2 * self.nchildren + 1 * self.nchildren**2)
        self.assertEqual(len(self.chx1.container_children), 1 * self.nchildren)
        self.assertEqual(len(self.chx1.container_children_recur),
                         1 * self.nchildren)
        self.assertEqual(len(self.chx1.children), 3 * self.nchildren)
        self.assertEqual(len(self.chx1.children_recur),
                         3 * self.nchildren + 1 * self.nchildren**2)

        assert_same_sub_schema(list(self.chx1._single_children),
                               self.units1a + self.sigarrs1a + self.irrsig1a,
                               exclude=['channel_index'])

        assert_same_sub_schema(list(self.chx1.data_children),
                               self.sigarrs1a + self.irrsig1a,
                               exclude=['channel_index'])
        assert_same_sub_schema(list(self.chx1.data_children_recur),
                               self.sigarrs1a + self.irrsig1a +
                               self.trains1[:2] + self.trains1[2:],
                               exclude=['channel_index'])

        assert_same_sub_schema(list(self.chx1.children),
                               self.sigarrs1a + self.irrsig1a + self.units1a,
                               exclude=['channel_index'])
        assert_same_sub_schema(list(self.chx1.children_recur),
                               self.sigarrs1a + self.irrsig1a +
                               self.trains1[:2] + self.trains1[2:] +
                               self.units1a,
                               exclude=['channel_index'])

        self.assertEqual(len(self.chx1.parents), 1)
        self.assertEqual(self.chx1.parents[0].name, 'block1')
Пример #5
0
    def test__children(self):
        blk = Block(name='block1')
        blk.channel_indexes = [self.chx1]
        blk.create_many_to_one_relationship()

        self.assertEqual(self.chx1._container_child_objects, ('Unit',))
        self.assertEqual(self.chx1._data_child_objects, ('AnalogSignal', 'IrregularlySampledSignal'))
        self.assertEqual(self.chx1._single_parent_objects, ('Block',))
        self.assertEqual(self.chx1._multi_child_objects, tuple())
        self.assertEqual(self.chx1._multi_parent_objects, ())
        self.assertEqual(self.chx1._child_properties, ())

        self.assertEqual(self.chx1._single_child_objects,
                         ('Unit', 'AnalogSignal', 'IrregularlySampledSignal'))

        self.assertEqual(self.chx1._container_child_containers, ('units',))
        self.assertEqual(self.chx1._data_child_containers,
                         ('analogsignals', 'irregularlysampledsignals'))
        self.assertEqual(self.chx1._single_child_containers,
                         ('units', 'analogsignals', 'irregularlysampledsignals'))
        self.assertEqual(self.chx1._single_parent_containers, ('block',))
        self.assertEqual(self.chx1._multi_child_containers,
                         tuple())
        self.assertEqual(self.chx1._multi_parent_containers, ())

        self.assertEqual(self.chx1._child_objects,
                         ('Unit', 'AnalogSignal', 'IrregularlySampledSignal'))
        self.assertEqual(self.chx1._child_containers,
                         ('units', 'analogsignals', 'irregularlysampledsignals'))
        self.assertEqual(self.chx1._parent_objects, ('Block',))
        self.assertEqual(self.chx1._parent_containers, ('block',))

        self.assertEqual(len(self.chx1._single_children), 3*self.nchildren)
        self.assertEqual(len(self.chx1._multi_children), 0)
        self.assertEqual(len(self.chx1.data_children), 2*self.nchildren)
        self.assertEqual(len(self.chx1.data_children_recur),
                         2*self.nchildren + 1*self.nchildren**2)
        self.assertEqual(len(self.chx1.container_children), 1*self.nchildren)
        self.assertEqual(len(self.chx1.container_children_recur),
                         1*self.nchildren)
        self.assertEqual(len(self.chx1.children), 3*self.nchildren)
        self.assertEqual(len(self.chx1.children_recur),
                         3*self.nchildren + 1*self.nchildren**2)

        assert_same_sub_schema(list(self.chx1._single_children),
                               self.units1a + self.sigarrs1a + self.irrsig1a,
                               exclude=['channel_index'])


        assert_same_sub_schema(list(self.chx1.data_children), self.sigarrs1a + self.irrsig1a,
                               exclude=['channel_index'])
        assert_same_sub_schema(list(self.chx1.data_children_recur),
                               self.sigarrs1a + self.irrsig1a +
                               self.trains1[:2] + self.trains1[2:],
                               exclude=['channel_index'])

        assert_same_sub_schema(list(self.chx1.children),
                               self.sigarrs1a + self.irrsig1a + self.units1a,
                               exclude=['channel_index'])
        assert_same_sub_schema(list(self.chx1.children_recur),
                               self.sigarrs1a + self.irrsig1a +
                               self.trains1[:2] + self.trains1[2:] +
                               self.units1a,
                               exclude=['channel_index'])

        self.assertEqual(len(self.chx1.parents), 1)
        self.assertEqual(self.chx1.parents[0].name, 'block1')