Releases: NeurodataWithoutBorders/pynwb
Releases · NeurodataWithoutBorders/pynwb
Latest (updated on 2025-10-06 17:10 UTC)
Add 'target_tables' kwarg to DynamicTable subclasses (#2097) Co-authored-by: Steph Prince <[email protected]>
3.1.2
Fixed
- Fixed parsing of the nwb_version attribute which followed the previous suggestion to have a
NWB-prefix.
@t-b #2118 - Fixed a performance regression introduced in pynwb 2.8.0 that affected reading NWB files with a large
number of objects or fields of objects. @rly #2121 - Fixed
load_type_config,unload_type_config, andget_loaded_type_configacting on a copy of the global type map
instead of the global type map itself. @rly #2121
Changed
- Added an argument
copytoget_type_mapto control whether a copy of the type map is returned or not.
Ifcopy=False, the returned type map will be a direct reference to the global type map. @rly
#2121 - Deprecated calling
get_type_mapwith theextensionsargument. Callload_namespaceson the returnedTypeMap
instead. @rly #2121
3.1.1
3.1.0
Breaking changes
- Removed unused functions
prepend_stringand_not_parentincore.py,_not_parentinfile.py, andNWBBaseTypeMapper.get_nwb_fileinio/core.py@oruebel #2036
Enhancements and minor changes
- Added support for NWB Schema 2.9.0.
- Added
BaseImageandExternalImageas new neurodata types. The first so bothImageandExternalImagecan inherit from it. The second to store external images. @rly #2079 - Added new
ElectrodesTableneurodata type. @mavaylon1 #1890 - Formally defined and renamed
ElectrodeTableas theElectrodesTableneurodata type. @mavaylon1 #1890 - Formally defined bands within
DecompositionSeriesas the neurodatatypeFrequencyBandsTable. @mavaylon1 @rly #2063 - Added new
DeviceModelneurodata type to store device model information. @rly #2088 - Deprecated
Device.model_name,Device.model_number, andDevice.manufacturerfields in favor ofDeviceModel. @rly #2088 - Added support for 2D
EventDetection.source_indexto indicate [time_index, channel_index]. @stephprince #2091 - Made
EventDetection.timesoptional. @stephprince #2091 - Deprecated
EventDetection.times. @stephprince #2101
- Added
- Automatically add timezone information to timestamps reference time if no timezone information is specified. @stephprince #2056
- Added option to disable typemap caching and updated type map cache location. @stephprince #2057
- Added dictionary-like operations directly on
ProcessingModuleobjects (e.g.,len(processing_module)). @bendichter #2020 - When an external file is detected when initializing an ImageSeries and no format is provided, automatically set format to "external" instead of raising an error. @stephprince #2060
- Added mask_type option to
mock_PlaneSegmentation. @pauladkisson #2067 - Improved the documentation of the
spike_timesin the Units table methods @h-mayorquin #2085 - Removed core namespace warning unless cached version is newer. @stephprince #2077
- Bumped minimum HDMF version to 4.1.0. @stephprince #2077
Bug fixes
- Fixed
add_data_interfacefunctionality that was mistakenly removed in PyNWB 3.0. @stephprince #2052 - Fixed bug in
IntracellularRecordingsTable.__init__wereIntracellularResponsesTablewasn't created correctly when custom category tables were provided @oruebel. #2031 - Fixed shape check in
SpikeEventSeries.__init__to supportAbstractDataChunkIteratorfor timestamps/data. @oruebel #2031 - Added unit tests to enhance coverage of
core.py,image.py,spec.py,icephys.py,epoch.pyand others. @oruebel #2031 - Fixed missing
IndexSeries.indexed_images. @rly #2074 - Fixed missing
__nwbfields__and_fieldsnameforNWBDataand its subclasses. @rly #2082 - Fixed caching of the type map when using HDMF 4.1.0. @rly #2087
- Removed use of complex numbers in scratch tutorial because of incompatibilities with HDMF 4.1.0. @stephprince #2090
- Made
ImagingPlane.descriptionoptional to conform with the NWB Schema. @rly #2051
Documentation and tutorial enhancements
3.0.0
Breaking changes
- The validation methods have been updated with multiple breaking changes. @stephprince #1911
- The behavior of
pynwb.validate(io=...)now matches the behavior ofpynwb.validate(path=...). In previous pynwb versions,pynwb.validate(io=...)did not use the cached namespaces during validation. To obtain the same behavior as in previous versions, you can update the function call topynwb.validate(io=..., use_cached_namespaces=False) pynwb.validatewill return only a list of validation errors instead of a tuple: (list of validation_errors, status code)- the
pynwb.validate(path=...)argument has been added as a replacement forpynwb.validate(paths=[...]), which will be deprecated in a future major release #2024 - The validate module has been renamed to
validation.py. The validate method can be
imported usingimport pynwb; pynwb.validateorfrom pynwb import validate
- The behavior of
Deprecations
- The following deprecated classes will now raise errors when creating new instances of these classes:
ClusteringWaveforms,Clustering,SweepTable. Reading files using these data types will continue to be supported. - The following methods and arguments have been deprecated:
ProcessingModule.add_containerandProcessingModule.add_data_interfaceare replaced byProcessingModule.addProcessingModule.get_containerandProcessingModule.get_data_interfaceare replaced byProcessingModule.getScratchData.notesis deprecated. UseScratchData.descriptioninstead.NWBFile.ic_electrodesis deprecated. UseNWBFile.icephys_electrodesinstead.NWBFile.ec_electrodesis deprecated. UseNWBFile.electrodesinstead.NWBFile.icephys_filteringis deprecated. UseIntracellularElectrode.filteringinstead.NWBFile.modulesis deprecated. UseNWBFile.processinginstead.ImageSeries.formatis fixed to 'external' if an external file is provided.ImageSeries.bits_per_pixelis deprecated.ImagingPlane.manifold,ImagingPlane.conversionandImagingPlane.unitare deprecated. UseImagingPlane.origin_coordsandImagingPlane.grid_spacinginstead.IndexSeries.unitis fixed to "N\A".IndexSeries.indexed_timeseriesis deprecated. UseIndexSeries.indexed_imagesinstead.
- The following deprecated methods have been removed:
NWBFile.add_ic_electrodeis removed. UseNWBFile.add_icephys_electrodeinstead.NWBFile.create_ic_electrodeis removed. UseNWBFile.create_icephys_electrodeinstead.NWBFile.get_ic_electrodeis removed. UseNWBFile.get_icephys_electrodeinstead.pynwb._get_resourcesis removed.
Enhancements and minor changes
- Added
__all__to modules. @bendichter #2021 - Added
pynwb.read_nwbconvenience method to simplify reading an NWBFile written with any backend @h-mayorquin #1994 - Constrained
hdmf<5to prevent future compatibility issues. #2040
Bug fixes
- Made distance, orientation, and field_of_view optional in OpticalSeries to match schema @bendichter #2023
- Added support for NWB schema 2.8.0. @rly #2001
- Removed
SpatialSeries.boundsfield that was not functional. This will be fixed in a future release. @rly #1907, #1996 - Added support for
NWBFile.was_generated_byfield. @stephprince #1924 - Added support for
model_number,model_name, andserial_numberfields toDevice. @stephprince #1997 - Deprecated
EventWaveformneurodata type. @rly #1940 - Deprecated
ImageMaskSeriesneurodata type. @rly #1941
- Removed
- Added enhancements to the validation CLI. @stephprince #1911
- Added an entry point for the validation module. You can now use
pynwb-validate "file.nwb". - Added the
--json-outpath-pathCLI argument to output validation results in a machine readable format.
- Added an entry point for the validation module. You can now use
- Removed python 3.8 support, added python 3.13 support. @stephprince #2007
- Added warnings when using positional arguments in
Containerconstructor methods. Positional arguments will raise errors in the next major release. @stephprince #1972 mock_ElectricalSeries. Make number of electrodes between data and electrode region agree when explicitly passing data @h-mayorquin #2019
Documentation and tutorial enhancements
- Updated
SpikeEventSeries,DecompositionSeries, andFilteredEphysexamples. @stephprince #2012 - Replaced deprecated
scipy.misc.facedataset in the images tutorial with another example. @stephprince #2016 - Removed Allen Brain Observatory example which was unnecessary and difficult to maintain. @rly #2026
3.0.0rc1
Breaking changes
- The validation methods have been updated with multiple breaking changes. @stephprince #1911
- The behavior of
pynwb.validate(io=...)now matches the behavior ofpynwb.validate(path=...). In previous pynwb versions,pynwb.validate(io=...)did not use the cached namespaces during validation. To obtain the same behavior as in previous versions, you can update the function call topynwb.validate(io=..., use_cached_namespaces=False) pynwb.validatewill return only a list of validation errors instead of a tuple: (list of validation_errors, status code)- the
pynwb.validate(path=...)argument has been added as a replacement forpynwb.validate(paths=[...]), which will be deprecated in a future major release #2024 - The validate module has been renamed to
validation.py. The validate method can be
imported usingimport pynwb; pynwb.validateorfrom pynwb import validate
- The behavior of
Deprecations
- The following deprecated classes will now raise errors when creating new instances of these classes:
ClusteringWaveforms,Clustering,SweepTable. Reading files using these data types will continue to be supported. - The following methods and arguments have been deprecated:
ProcessingModule.add_containerandProcessingModule.add_data_interfaceare replaced byProcessingModule.addProcessingModule.get_containerandProcessingModule.get_data_interfaceare replaced byProcessingModule.getScratchData.notesis deprecated. UseScratchData.descriptioninstead.NWBFile.ic_electrodesis deprecated. UseNWBFile.icephys_electrodesinstead.NWBFile.ec_electrodesis deprecated. UseNWBFile.electrodesinstead.NWBFile.icephys_filteringis deprecated. UseIntracellularElectrode.filteringinstead.NWBFile.modulesis deprecated. UseNWBFile.processinginstead.ImageSeries.formatis fixed to 'external' if an external file is provided.ImageSeries.bits_per_pixelis deprecated.ImagingPlane.manifold,ImagingPlane.conversionandImagingPlane.unitare deprecated. UseImagingPlane.origin_coordsandImagingPlane.grid_spacinginstead.IndexSeries.unitis fixed to "N\A".IndexSeries.indexed_timeseriesis deprecated. UseIndexSeries.indexed_imagesinstead.
- The following deprecated methods have been removed:
NWBFile.add_ic_electrodeis removed. UseNWBFile.add_icephys_electrodeinstead.NWBFile.create_ic_electrodeis removed. UseNWBFile.create_icephys_electrodeinstead.NWBFile.get_ic_electrodeis removed. UseNWBFile.get_icephys_electrodeinstead.pynwb._get_resourcesis removed.
Enhancements and minor changes
- Added
pynwb.read_nwbconvenience method to simplify reading an NWBFile written with any backend @h-mayorquin #1994 - Added support for NWB schema 2.8.0. @rly #2001
- Removed
SpatialSeries.boundsfield that was not functional. This will be fixed in a future release. @rly #1907, #1996 - Added support for
NWBFile.was_generated_byfield. @stephprince #1924 - Added support for
model_number,model_name, andserial_numberfields toDevice. @stephprince #1997 - Deprecated
EventWaveformneurodata type. @rly #1940 - Deprecated
ImageMaskSeriesneurodata type. @rly #1941
- Removed
- Added enhancements to the validation CLI. @stephprince #1911
- Added an entry point for the validation module. You can now use
pynwb-validate "file.nwb". - Added the
--json-outpath-pathCLI argument to output validation results in a machine readable format.
- Added an entry point for the validation module. You can now use
- Removed python 3.8 support, added python 3.13 support. @stephprince #2007
- Added warnings when using positional arguments in
Containerconstructor methods. Positional arguments will raise errors in the next major release. @stephprince #1972 mock_ElectricalSeries. Make number of electrodes between data and electrode region agree when explicitly passing data @h-mayorquin #2019
Documentation and tutorial enhancements
- Updated
SpikeEventSeries,DecompositionSeries, andFilteredEphysexamples. @stephprince #2012 - Replaced deprecated
scipy.misc.facedataset in the images tutorial with another example. @stephprince #2016
2.8.3
Enhancements and minor changes
- Made gain an optional argument for PatchClampSeries to match the schema. @stephprince #1975
- Added warning when writing files with
NWBHDF5IOwithout the.nwbextension. @stephprince #1978 - Added
NWBHDF5IO.read_nwbconvenience method to simplify reading an NWB file. @h-mayorquin #1979 - Removed unused references to region references and builders in preparation for changes in HDMF 4.0. @rly #1991
Documentation and tutorial enhancements
- Added documentation example for
SpikeEventSeries. @stephprince #1983 - Added documentation example for
AnnotationSeries. @stephprince #1989 - Added documentation example for
DecompositionSeries. @stephprince #1981
Performance
- Cache global type map to speed import 3X. @sneakers-the-rat #1931
Bug fixes
2.8.2
Enhancements and minor changes
- Added support for numpy 2.0. @mavaylon1 #1956
- Make
get_cached_namespaces_to_validatea public function @stephprince #1961
Documentation and tutorial enhancements
- Added pre-release pull request instructions to release process documentation @stephprince #1928
- Added section on how to use the
familydriver inh5pyfor splitting data across multiple files @oruebel #1949
Bug fixes
- Fixed
can_readmethod to return False if no nwbfile version can be found @stephprince #1934 - Changed
epoch_tagsto be a NWBFile property instead of constructor argument. @stephprince #1935 - Exposed option to not cache the spec in
NWBHDF5IO.export. @rly #1959
2.8.1
Documentation and tutorial enhancements
- Simplified the introduction to NWB tutorial. @rly #1914
- Simplified the ecephys and ophys tutorials. #1915
- Add comments to
src/pynwb/io/file.pyto improve developer documentation. @rly #1925
Bug fixes
- Fixed use of
channel_conversioninTimeSeriesget_data_in_units. @rohanshah 1923
2.8.0
Enhancements and minor changes
- Set rate default value inside
mock_ElectricalSeriesto avoid having to setrate=Noneexplicitly when passing timestamps. @h-mayorquin #1894 - Integrate validation through the
TypeConfigurator. @mavaylon1 #1829 - Exposed
aws_regiontoNWBHDF5IO. @rly #1903