Closed alejoe91 closed 2 years ago
SpikeInterface allows channel_ids to be of any type, but currently the write_recording function expects int
write_recording
int
import spikeinterface.full as si from nwb_conversion_tools.utils.spike_interface import write_recording from datetime import datetime rec, sort = si.toy_example(num_segments=1) rec_str = rec.channel_slice(channel_ids=rec.get_channel_ids(), renamed_channel_ids=[str(ch) for ch in rec.get_channel_ids()]) print(rec_str.get_channel_ids()) start_time = datetime.now() metadata = {"NWBFile": {'session_start_time': start_time}} write_recording(rec_str, save_path="test_nwb_str.nwb", metadata=metadata)
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) /var/folders/vl/0vmqjsjn0dg8ycnxdx_mqrdw0000gr/T/ipykernel_71428/3145529863.py in <module> ----> 1 write_recording(rec_str, save_path="test_nwb_str1.nwb", metadata=metadata) ~/Documents/Codes/catalyst/nwb-conversion-tools/nwb_conversion_tools/utils/spike_interface.py in write_recording(recording, save_path, overwrite, nwbfile, starting_time, use_times, metadata, write_as, es_key, write_electrical_series, write_scaled, compression, compression_opts, iterator_type, iterator_opts) 977 nwbfile = make_nwbfile_from_metadata(metadata=metadata) 978 --> 979 add_all_to_nwbfile( 980 recording=recording, 981 nwbfile=nwbfile, ~/Documents/Codes/catalyst/nwb-conversion-tools/nwb_conversion_tools/utils/spike_interface.py in add_all_to_nwbfile(recording, nwbfile, starting_time, use_times, metadata, write_as, es_key, write_electrical_series, write_scaled, compression, compression_opts, iterator_type, iterator_opts) 825 assert isinstance(nwbfile, pynwb.NWBFile), "'nwbfile' should be of type pynwb.NWBFile" 826 --> 827 add_electrodes_info(recording=recording, nwbfile=nwbfile, metadata=metadata) 828 829 if write_electrical_series: ~/Documents/Codes/catalyst/nwb-conversion-tools/nwb_conversion_tools/utils/spike_interface.py in add_electrodes_info(recording, nwbfile, metadata) 753 add_devices(nwbfile=nwbfile, metadata=metadata) 754 add_electrode_groups(recording=recording, nwbfile=nwbfile, metadata=metadata) --> 755 add_electrodes(recording=recording, nwbfile=nwbfile, metadata=metadata) 756 757 ~/Documents/Codes/catalyst/nwb-conversion-tools/nwb_conversion_tools/utils/spike_interface.py in add_electrodes(recording, nwbfile, metadata, exclude) 438 electrode_kwargs.update(dict(group=nwbfile.electrode_groups[str(group_id)], group_name=str(group_id))) 439 --> 440 nwbfile.add_electrode(**electrode_kwargs) 441 # add columns for existing electrodes: 442 for col_name, cols_args in elec_columns_append.items(): ~/anaconda3/envs/nwb2/lib/python3.8/site-packages/hdmf/utils.py in func_call(*args, **kwargs) 580 if is_method: 581 def func_call(*args, **kwargs): --> 582 pargs = _check_args(args, kwargs) 583 return func(args[0], **pargs) 584 else: ~/anaconda3/envs/nwb2/lib/python3.8/site-packages/hdmf/utils.py in _check_args(args, kwargs) 573 if parse_err: 574 msg = '%s: %s' % (func.__qualname__, ', '.join(parse_err)) --> 575 raise ExceptionType(msg) 576 577 return parsed['args'] TypeError: NWBFile.add_electrode: incorrect type for 'id' (got 'str_', expected 'int')
latest versions of NCT, hdmf, SI
Yep, we're aware of this. Supposed to be a part of https://github.com/catalystneuro/nwb-conversion-tools/pull/374 but that seems to be dragging a bit. Happy to take an isolated updated for this, then.
Description
SpikeInterface allows channel_ids to be of any type, but currently the
write_recording
function expectsint
Steps to Reproduce
Error
Environment
latest versions of NCT, hdmf, SI
Checklist