Skip to content

Releases: NeurodataWithoutBorders/pynwb

Latest (updated on 2025-10-06 17:10 UTC)

06 Oct 17:55
6ff7e44

Choose a tag to compare

Add 'target_tables' kwarg to DynamicTable subclasses (#2097)

Co-authored-by: Steph Prince <[email protected]>

3.1.2

13 Aug 20:47
07495a8

Choose a tag to compare

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, and get_loaded_type_config acting on a copy of the global type map
    instead of the global type map itself. @rly #2121

Changed

  • Added an argument copy to get_type_map to control whether a copy of the type map is returned or not.
    If copy=False, the returned type map will be a direct reference to the global type map. @rly
    #2121
  • Deprecated calling get_type_map with the extensions argument. Call load_namespaces on the returned TypeMap
    instead. @rly #2121

3.1.1

23 Jul 03:35
43cfa7b

Choose a tag to compare

Bug fixes

  • Fixed reading and exporting of files written with NWB Schema < 2.9.0 that contained a reference to the electrodes table. @rly #2112
  • Updated tests to skip streaming tests gracefully if offline. @rly #2113
  • Added check in PlaneSegmentation constructor for required columns. @rly #2102

3.1.0

08 Jul 21:54
f56b6f4

Choose a tag to compare

Breaking changes

  • Removed unused functions prepend_string and _not_parent in core.py, _not_parent in file.py, and NWBBaseTypeMapper.get_nwb_file in io/core.py @oruebel #2036

Enhancements and minor changes

  • Added support for NWB Schema 2.9.0.
    • Added BaseImage and ExternalImage as new neurodata types. The first so both Image and ExternalImage can inherit from it. The second to store external images. @rly #2079
    • Added new ElectrodesTable neurodata type. @mavaylon1 #1890
    • Formally defined and renamed ElectrodeTable as the ElectrodesTable neurodata type. @mavaylon1 #1890
    • Formally defined bands within DecompositionSeries as the neurodatatype FrequencyBandsTable. @mavaylon1 @rly #2063
    • Added new DeviceModel neurodata type to store device model information. @rly #2088
    • Deprecated Device.model_name, Device.model_number, and Device.manufacturer fields in favor of DeviceModel. @rly #2088
    • Added support for 2D EventDetection.source_index to indicate [time_index, channel_index]. @stephprince #2091
    • Made EventDetection.times optional. @stephprince #2091
    • Deprecated EventDetection.times. @stephprince #2101
  • 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 ProcessingModule objects (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_times in 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_interface functionality that was mistakenly removed in PyNWB 3.0. @stephprince #2052
  • Fixed bug in IntracellularRecordingsTable.__init__ were IntracellularResponsesTable wasn't created correctly when custom category tables were provided @oruebel. #2031
  • Fixed shape check in SpikeEventSeries.__init__ to support AbstractDataChunkIterator for timestamps/data. @oruebel #2031
  • Added unit tests to enhance coverage of core.py, image.py, spec.py, icephys.py, epoch.py and others. @oruebel #2031
  • Fixed missing IndexSeries.indexed_images. @rly #2074
  • Fixed missing __nwbfields__ and _fieldsname for NWBData and 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.description optional to conform with the NWB Schema. @rly #2051

Documentation and tutorial enhancements

  • Added NWB AI assistant to the home page of the documentation. @magland #2076

3.0.0

26 Feb 20:15
01d9ab9

Choose a tag to compare

Breaking changes

  • The validation methods have been updated with multiple breaking changes. @stephprince #1911
    • The behavior of pynwb.validate(io=...) now matches the behavior of pynwb.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 to pynwb.validate(io=..., use_cached_namespaces=False)
    • pynwb.validate will 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 for pynwb.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 using import pynwb; pynwb.validate or from pynwb import validate

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_container and ProcessingModule.add_data_interface are replaced by ProcessingModule.add
    • ProcessingModule.get_container and ProcessingModule.get_data_interface are replaced by ProcessingModule.get
    • ScratchData.notes is deprecated. Use ScratchData.description instead.
    • NWBFile.ic_electrodes is deprecated. Use NWBFile.icephys_electrodes instead.
    • NWBFile.ec_electrodes is deprecated. Use NWBFile.electrodes instead.
    • NWBFile.icephys_filtering is deprecated. Use IntracellularElectrode.filtering instead.
    • NWBFile.modules is deprecated. Use NWBFile.processing instead.
    • ImageSeries.format is fixed to 'external' if an external file is provided.
    • ImageSeries.bits_per_pixel is deprecated.
    • ImagingPlane.manifold, ImagingPlane.conversion and ImagingPlane.unit are deprecated. Use ImagingPlane.origin_coords and ImagingPlane.grid_spacing instead.
    • IndexSeries.unit is fixed to "N\A".
    • IndexSeries.indexed_timeseries is deprecated. Use IndexSeries.indexed_images instead.
  • The following deprecated methods have been removed:
    • NWBFile.add_ic_electrode is removed. Use NWBFile.add_icephys_electrode instead.
    • NWBFile.create_ic_electrode is removed. Use NWBFile.create_icephys_electrode instead.
    • NWBFile.get_ic_electrode is removed. Use NWBFile.get_icephys_electrode instead.
    • pynwb._get_resources is removed.

Enhancements and minor changes

  • Added __all__ to modules. @bendichter #2021
  • Added pynwb.read_nwb convenience method to simplify reading an NWBFile written with any backend @h-mayorquin #1994
  • Constrained hdmf<5 to 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.bounds field that was not functional. This will be fixed in a future release. @rly #1907, #1996
    • Added support for NWBFile.was_generated_by field. @stephprince #1924
    • Added support for model_number, model_name, and serial_number fields to Device. @stephprince #1997
    • Deprecated EventWaveform neurodata type. @rly #1940
    • Deprecated ImageMaskSeries neurodata type. @rly #1941
  • 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-path CLI argument to output validation results in a machine readable format.
  • Removed python 3.8 support, added python 3.13 support. @stephprince #2007
  • Added warnings when using positional arguments in Container constructor 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, and FilteredEphys examples. @stephprince #2012
  • Replaced deprecated scipy.misc.face dataset 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

29 Jan 02:02
81b0a49

Choose a tag to compare

3.0.0rc1 Pre-release
Pre-release

Breaking changes

  • The validation methods have been updated with multiple breaking changes. @stephprince #1911
    • The behavior of pynwb.validate(io=...) now matches the behavior of pynwb.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 to pynwb.validate(io=..., use_cached_namespaces=False)
    • pynwb.validate will 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 for pynwb.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 using import pynwb; pynwb.validate or from pynwb import validate

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_container and ProcessingModule.add_data_interface are replaced by ProcessingModule.add
    • ProcessingModule.get_container and ProcessingModule.get_data_interface are replaced by ProcessingModule.get
    • ScratchData.notes is deprecated. Use ScratchData.description instead.
    • NWBFile.ic_electrodes is deprecated. Use NWBFile.icephys_electrodes instead.
    • NWBFile.ec_electrodes is deprecated. Use NWBFile.electrodes instead.
    • NWBFile.icephys_filtering is deprecated. Use IntracellularElectrode.filtering instead.
    • NWBFile.modules is deprecated. Use NWBFile.processing instead.
    • ImageSeries.format is fixed to 'external' if an external file is provided.
    • ImageSeries.bits_per_pixel is deprecated.
    • ImagingPlane.manifold, ImagingPlane.conversion and ImagingPlane.unit are deprecated. Use ImagingPlane.origin_coords and ImagingPlane.grid_spacing instead.
    • IndexSeries.unit is fixed to "N\A".
    • IndexSeries.indexed_timeseries is deprecated. Use IndexSeries.indexed_images instead.
  • The following deprecated methods have been removed:
    • NWBFile.add_ic_electrode is removed. Use NWBFile.add_icephys_electrode instead.
    • NWBFile.create_ic_electrode is removed. Use NWBFile.create_icephys_electrode instead.
    • NWBFile.get_ic_electrode is removed. Use NWBFile.get_icephys_electrode instead.
    • pynwb._get_resources is removed.

Enhancements and minor changes

  • Added pynwb.read_nwb convenience 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.bounds field that was not functional. This will be fixed in a future release. @rly #1907, #1996
    • Added support for NWBFile.was_generated_by field. @stephprince #1924
    • Added support for model_number, model_name, and serial_number fields to Device. @stephprince #1997
    • Deprecated EventWaveform neurodata type. @rly #1940
    • Deprecated ImageMaskSeries neurodata type. @rly #1941
  • 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-path CLI argument to output validation results in a machine readable format.
  • Removed python 3.8 support, added python 3.13 support. @stephprince #2007
  • Added warnings when using positional arguments in Container constructor 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, and FilteredEphys examples. @stephprince #2012
  • Replaced deprecated scipy.misc.face dataset in the images tutorial with another example. @stephprince #2016

2.8.3

20 Nov 01:23
bb782e8

Choose a tag to compare

Enhancements and minor changes

  • Made gain an optional argument for PatchClampSeries to match the schema. @stephprince #1975
  • Added warning when writing files with NWBHDF5IO without the .nwb extension. @stephprince #1978
  • Added NWBHDF5IO.read_nwb convenience 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

Performance

Bug fixes

  • Fixed bug in how ElectrodeGroup.__init__ validates its position argument. @oruebel #1770
  • Changed SpatialSeries.reference_frame from required to optional as specified in the schema. @rly #1986

2.8.2

09 Sep 19:34
b9f9e5a

Choose a tag to compare

Enhancements and minor changes

Documentation and tutorial enhancements

  • Added pre-release pull request instructions to release process documentation @stephprince #1928
  • Added section on how to use the family driver in h5py for splitting data across multiple files @oruebel #1949

Bug fixes

  • Fixed can_read method to return False if no nwbfile version can be found @stephprince #1934
  • Changed epoch_tags to 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

03 Jul 21:57
d3ac4b9

Choose a tag to compare

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.py to improve developer documentation. @rly #1925

Bug fixes

  • Fixed use of channel_conversion in TimeSeries get_data_in_units. @rohanshah 1923

2.8.0

29 May 15:36
2.8.0
04a6506

Choose a tag to compare

Enhancements and minor changes

  • Set rate default value inside mock_ElectricalSeries to avoid having to set rate=None explicitly when passing timestamps. @h-mayorquin #1894
  • Integrate validation through the TypeConfigurator. @mavaylon1 #1829
  • Exposed aws_region to NWBHDF5IO. @rly #1903

Bug fixes

  • Revert changes in PyNWB 2.7.0 that allow datetimes without a timezone and without a time while issues with DANDI upload of NWB files missing timezone are resolved. @rly #1908