Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_copy(self):
self.nwbfile.add_unit(spike_times=[1., 2., 3.])
device = self.nwbfile.create_device('a')
elecgrp = self.nwbfile.create_electrode_group('a', 'b', device=device, location='a')
self.nwbfile.add_electrode(np.nan, np.nan, np.nan, np.nan, 'a', 'a', elecgrp, id=0)
self.nwbfile.add_electrode(np.nan, np.nan, np.nan, np.nan, 'b', 'b', elecgrp)
elec_region = self.nwbfile.create_electrode_table_region([1], 'name')
ts1 = TimeSeries('test_ts1', [0, 1, 2, 3, 4, 5], 'grams', timestamps=[0.0, 0.1, 0.2, 0.3, 0.4, 0.5])
ts2 = ElectricalSeries('test_ts2', [0, 1, 2, 3, 4, 5],
electrodes=elec_region, timestamps=[0.0, 0.1, 0.2, 0.3, 0.4, 0.5])
self.nwbfile.add_acquisition(ts1)
self.nwbfile.add_acquisition(ts2)
self.nwbfile.add_trial(start_time=50.0, stop_time=70.0)
self.nwbfile.add_invalid_times_column('comments', 'description of reason for omitting time')
self.nwbfile.create_processing_module('test_mod', 'test_description')
self.nwbfile.create_time_intervals('custom_interval', 'a custom time interval')
self.nwbfile.intervals['custom_interval'].add_interval(start_time=10., stop_time=20.)
newfile = self.nwbfile.copy()
# test dictionaries
self.assertIs(self.nwbfile.devices['a'], newfile.devices['a'])
self.assertIs(self.nwbfile.acquisition['test_ts1'], newfile.acquisition['test_ts1'])
self.assertIs(self.nwbfile.acquisition['test_ts2'], newfile.acquisition['test_ts2'])
self.assertIs(self.nwbfile.processing['test_mod'], newfile.processing['test_mod'])
def test_init(self):
data = list(range(10))
ts = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
table = make_electrode_table()
region = DynamicTableRegion('electrodes', [0, 2], 'the first and third electrodes', table)
eS = ElectricalSeries('test_eS', data, region, timestamps=ts) # noqa: F405
self.assertEqual(eS.name, 'test_eS')
self.assertEqual(eS.data, data)
self.assertEqual(eS.timestamps, ts)
def setUpContainer(self):
data = list(range(10))
ts = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
TestElectricalSeriesIO.make_electrode_table(self)
region = DynamicTableRegion('electrodes', [0, 2], 'the first and third electrodes', self.table)
self.eS = ElectricalSeries('test_eS', data, region, timestamps=ts)
eD = EventDetection('detection_method', self.eS, (1, 2, 3), (0.1, 0.2, 0.3))
return eD
def setUpElectricalSeriesContainers(self):
TestElectricalSeriesIO.make_electrode_table(self)
region1 = DynamicTableRegion('electrodes', [0, 2], 'the first and third electrodes', self.table)
region2 = DynamicTableRegion('electrodes', [1, 3], 'the second and fourth electrodes', self.table)
data1 = list(zip(range(10), range(10, 20)))
data2 = list(zip(reversed(range(10)), reversed(range(10, 20))))
timestamps = list(map(lambda x: x/10, range(10)))
es1 = ElectricalSeries('test_eS1', data1, region1, timestamps=timestamps)
es2 = ElectricalSeries('test_eS2', data2, region2, channel_conversion=[4., .4], timestamps=timestamps)
return es1, es2
def setUpElectricalSeriesContainers(self):
TestElectricalSeriesIO.make_electrode_table(self)
region1 = DynamicTableRegion('electrodes', [0, 2], 'the first and third electrodes', self.table)
region2 = DynamicTableRegion('electrodes', [1, 3], 'the second and fourth electrodes', self.table)
data1 = list(zip(range(10), range(10, 20)))
data2 = list(zip(reversed(range(10)), reversed(range(10, 20))))
timestamps = list(map(lambda x: x/10, range(10)))
es1 = ElectricalSeries('test_eS1', data1, region1, timestamps=timestamps)
es2 = ElectricalSeries('test_eS2', data2, region2, channel_conversion=[4., .4], timestamps=timestamps)
return es1, es2
def test_link(self):
table = make_electrode_table()
region = DynamicTableRegion('electrodes', [0, 2], 'the first and third electrodes', table)
ts1 = ElectricalSeries('test_ts1', [0, 1, 2, 3, 4, 5], region, timestamps=[0.0, 0.1, 0.2, 0.3, 0.4, 0.5])
ts2 = ElectricalSeries('test_ts2', ts1, region, timestamps=ts1)
ts3 = ElectricalSeries('test_ts3', ts2, region, timestamps=ts2)
self.assertEqual(ts2.data, [0, 1, 2, 3, 4, 5])
self.assertEqual(ts2.timestamps, [0.0, 0.1, 0.2, 0.3, 0.4, 0.5])
self.assertEqual(ts3.data, [0, 1, 2, 3, 4, 5])
self.assertEqual(ts3.timestamps, [0.0, 0.1, 0.2, 0.3, 0.4, 0.5])
def test_link(self):
table = make_electrode_table()
region = DynamicTableRegion('electrodes', [0, 2], 'the first and third electrodes', table)
ts1 = ElectricalSeries('test_ts1', [0, 1, 2, 3, 4, 5], region, timestamps=[0.0, 0.1, 0.2, 0.3, 0.4, 0.5])
ts2 = ElectricalSeries('test_ts2', ts1, region, timestamps=ts1)
ts3 = ElectricalSeries('test_ts3', ts2, region, timestamps=ts2)
self.assertEqual(ts2.data, [0, 1, 2, 3, 4, 5])
self.assertEqual(ts2.timestamps, [0.0, 0.1, 0.2, 0.3, 0.4, 0.5])
self.assertEqual(ts3.data, [0, 1, 2, 3, 4, 5])
self.assertEqual(ts3.timestamps, [0.0, 0.1, 0.2, 0.3, 0.4, 0.5])
def test_add_electrical_series(self):
lfp = LFP() # noqa: F405
dev1 = Device('dev1') # noqa: F405
group = ElectrodeGroup( # noqa: F405, F841
'tetrode1', 'tetrode description', 'tetrode location', dev1)
table = make_electrode_table()
region = DynamicTableRegion('electrodes', [0, 2], 'the first and third electrodes', table)
eS = ElectricalSeries( # noqa: F405
'test_eS', [0, 1, 2, 3], region, timestamps=[0.1, 0.2, 0.3, 0.4])
lfp.add_electrical_series(eS)
self.assertEqual(lfp.electrical_series.get('test_eS'), eS)
# create-epochs: start
epoch_tags = ('example_epoch',)
f.create_epoch(name='epoch1', start_time=0.0, stop_time=1.0, tags=epoch_tags,
description="the first test epoch", timeseries=[ephys_ts, spatial_ts])
f.create_epoch(name='epoch2', start_time=0.0, stop_time=1.0, tags=epoch_tags,
description="the second test epoch", timeseries=[ephys_ts, spatial_ts])
# create-epochs: end
# create-compressed-timeseries: start
from pynwb.ecephys import ElectricalSeries
from pynwb.behavior import SpatialSeries
from pynwb.form.backends.hdf5 import H5DataIO
ephys_ts = ElectricalSeries('test_compressed_ephys_data',
'an hypothetical source',
H5DataIO(ephys_data, compress=True),
electrode_table_region,
timestamps=H5DataIO(ephys_timestamps, compress=True),
resolution=0.001,
comments="This data was randomly generated with numpy, using 1234 as the seed",
description="Random numbers generated with numpy.random.rand")
f.add_acquisition(ephys_ts)
spatial_ts = SpatialSeries('test_compressed_spatial_timeseries',
'a stumbling rat',
H5DataIO(spatial_data, compress=True),
'origin on x,y-plane',
timestamps=H5DataIO(spatial_timestamps, compress=True),
resolution=0.1,
comments="This data was generated with numpy, using 1234 as the seed",
# After an extension has been created, it can be used by downstream codes for reading and writing data.
# There are two main mechanisms for reading and writing extension data with PyNWB.
# The first involves defining new :py:class:`~pynwb.core.NWBContainer` classes that are then mapped
# to the neurodata types in the extension.
from pynwb import register_class, load_namespaces
from pynwb.ecephys import ElectricalSeries
from hdmf.utils import docval, call_docval_func, getargs, get_docval
ns_path = "mylab.namespace.yaml"
load_namespaces(ns_path)
@register_class('TetrodeSeries', 'mylab')
class TetrodeSeries(ElectricalSeries):
__nwbfields__ = ('trode_id',)
@docval(*get_docval(ElectricalSeries.__init__) + (
{'name': 'trode_id', 'type': int, 'doc': 'the tetrode id'},))
def __init__(self, **kwargs):
call_docval_func(super(TetrodeSeries, self).__init__, kwargs)
self.trode_id = getargs('trode_id', kwargs)
####################
# .. note::
#
# See the API docs for more information about :py:func:`~hdmf.utils.docval`
# :py:func:`~hdmf.utils.call_docval_func`, :py:func:`~hdmf.utils.getargs`
# and :py:func:`~hdmf.utils.get_docval`