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
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)
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)
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')
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')