- 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
, andserial_number
fields toDevice
. @stephprince #1997 - Deprecated
EventWaveform
neurodata type. @rly #1940 - Deprecated
ImageMaskSeries
neurodata type. @rly #1941
- Removed
- Removed python 3.8 support, added python 3.13 support. @stephprince #2007
- 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
- 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 - Cache global type map to speed import 3X. @sneakers-the-rat #1931
- Fixed bug in how
ElectrodeGroup.__init__
validates itsposition
argument. @oruebel #1770 - Changed
SpatialSeries.reference_frame
from required to optional as specified in the schema. @rly #1986
- Added documentation example for
SpikeEventSeries
. @stephprince #1983 - Added documentation example for
AnnotationSeries
. @stephprince #1989 - Added documentation example for
DecompositionSeries
. @stephprince #1981
- Added support for numpy 2.0. @mavaylon1 #1956
- Make
get_cached_namespaces_to_validate
a public function @stephprince #1961
- Added pre-release pull request instructions to release process documentation @stephprince #1928
- Added section on how to use the
family
driver inh5py
for splitting data across multiple files @oruebel #1949
- 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
- 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
- Fixed use of
channel_conversion
inTimeSeries
get_data_in_units
. @rohanshah 1923
- Set rate default value inside
mock_ElectricalSeries
to avoid having to setrate=None
explicitly when passing timestamps. @h-mayorquin #1894 - Integrate validation through the
TypeConfigurator
. @mavaylon1 #1829 - Exposed
aws_region
toNWBHDF5IO
. @rly #1903
- 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
- Added
bounds
field toSpatialSeries
to set optional boundary range (min, max) for each dimension of data. @mavaylon1 #1869 - Added support for NWB schema 2.7.0. See 2.7.0 release notes for details
- Deprecated
ImagingRetinotopy
neurodata type. @rly #1813 - Modified
OptogeneticSeries
to allow 2D data, primarily in extensions ofOptogeneticSeries
. @rly #1812 - Support
stimulus_template
as optional predefined column inIntracellularStimuliTable
. @stephprince #1815 - Support
NWBDataInterface
andDynamicTable
inNWBFile.stimulus
. @rly #1842 - Added support for python 3.12 and upgraded dependency versions. This also includes infrastructure updates for developers. @mavaylon1 #1853
- Added
grid_spacing
,grid_spacing_unit
,origin_coords
,origin_coords_unit
toImagingPlane
fields. @h-mayorquin #1892 - Added
mock_Units
for generating Units tables. @h-mayorquin #1875 and #1883 - Allow datetimes without a timezone and without a time. @rly #1886
- No longer automatically set the timezone to the local timezone when not provided. #1886
- Updated testing to not install in editable mode and not run
coverage
by default. #1897
- Fix bug with reading file with linked
TimeSeriesReferenceVectorData
@rly #1865 - Fix bug where extra keyword arguments could not be passed to
NWBFile.add_{x}_column
for use in customVectorData
classes. @rly #1861
- For
NWBHDF5IO()
, change the default of argload_namespaces
fromFalse
toTrue
. @bendichter #1748 - Add
NWBHDF5IO.can_read()
. @bendichter #1703 - Add
pynwb.get_nwbfile_version()
. @bendichter #1703 - Fix usage of the
validate
function in thepynwb.testing.testh5io
classes and cache the spec by default in those classes. @rly #1782 - Updated timeseries data checks to warn instead of error when reading invalid files. @stephprince #1793 and #1809
- Expose the offset, conversion and channel conversion parameters in
mock_ElectricalSeries
. @h-mayorquin #1796 - Expose
starting_time
inmock_ElectricalSeries
. @h-mayorquin #1805 - Enhance
get_data_in_units()
to work with objects that have achannel_conversion
attribute like theElectricalSeries
. @h-mayorquin #1806 - Refactor validation CLI tests to use
{sys.executable} -m coverage
to use the same Python version and run correctly on Debian systems. @yarikoptic #1811 - Fixed tests to address newly caught validation errors. @rly #1839
- Fix bug where namespaces were loaded in "w-" mode. @h-mayorquin #1795
- Fix bug where pynwb version was reported as "unknown" to readthedocs @stephprince #1810
- Fixed bug to allow linking of
TimeSeries.data
by setting thedata
constructor argument to anotherTimeSeries
. @oruebel #1766 - Fix recursion error in html representation generation in jupyter notebooks. @stephprince #1831
- Add RemFile to streaming tutorial. @bendichter #1761
- Fix typos and improve clarify throughout tutorials. @zm711 #1825
- Fix internal links in docstrings and tutorials. @stephprince #1827
- Add Zarr IO tutorial @bendichter #1834
- Added
TimeSeries.get_timestamps()
. @bendichter #1741 - Added
TimeSeries.get_data_in_units()
. @bendichter #1745 - Updated
ExternalResources
name change toHERD
, along with HDMF 3.9.0 being the new minimum. @mavaylon1 #1754
- Updated streaming tutorial to ensure code is run on tests and clarify text. @bendichter #1760 @oruebel #1762
- Fixed minor documentation build warnings and broken links to
basic_trials
tutorial @oruebel #1762
- Stop running validation tests as part of integration tests. They cause issues in CI and can be run separately. @rly #1740
- Added support for
ExternalResources
. @mavaylon1 #1684 - Updated links for making a release. @mavaylon1 #1720
- Fixed sphinx-gallery setting to correctly display index in the docs with sphinx-gallery>=0.11. @oruebel #1733
- Added thumbnail for Optogentics tutorial. @oruebel #1729
- Updated and fixed errors in tutorials. @bendichter @oruebel
- Remove unused, deprecated
codecov
package from dev installation requirements. @rly #1688 - Remove references to discontinued
requires.io
service in documentation. @rly #1690 - Update
requirements-doc.txt
to resolve Python 3.7 incompatibility. @rly #1694 - Fixed test battery to show and check for warnings appropriately. @rly #1698
- Fixed typos and added codespell GitHub action to check spelling in the future. @yarikoptic #1648
- Added
OnePhotonSeries
to calcium imaging tutorial. @bendichter #1658 - Add tutorial for optogenetics. @bendichter #1657
- Update testing of gallery examples and disable testing of the allensdk tutorial. #1680
- Updated tutorials to follow best practices. @bendichter #1656
- Fixed bug when initializing
OnePhotonSeries
with no value forbinning
. @bendichter #1660 - Fixed bug in
NWBHDF5IO.nwb_version
property to support files written by third-party software with a fixed-lengthnwb_version
attribute. @oruebel #1669 - Fixed search bar and missing jquery in ReadTheDocs documentation. @rly #1671
- Requires HDMF 3.5.4 which includes bug fixes. @rly #1672
- Fixed issue with deprecated pkg_resources. @rly #1678
- Fixed an issue where NWB files with version "2.0b" could not be read. @rly #1651
- Added support for NWB Schema 2.6.0. @mavaylon1 #1636
- Added a class and tests for the
OnePhotonSeries
new in NWB v2.6.0. @CodyCBakerPhD #1593(see also NWB Schema #523 Subject.age
can be input as atimedelta
type. @bendichter #1590- Added
Subject.age__reference
field. @bendichter (#1540) IntracellularRecordingsTable.add_recording
: theelectrode
arg is now optional, and is automatically populated from the stimulus or response. #1597- Added module
pynwb.testing.mock.icephys
and corresponding tests. @bendichter 1595 - Removed redundant object mapper code. @rly #1600
- Fixed pending deprecations and issues in CI. @rly #1594
- Added
NWBHDF5IO.nwb_version
property to get the NWB version from an NWB HDF5 file @oruebel #1612 - Updated
NWBHDF5IO.read
to check NWB version before read and raise more informative error if an unsupported version is found @oruebel #1612 - Added the
driver
keyword argument to thepynwb.validate
function as well as the corresponding namespace caching. @CodyCBakerPhD #1588 - Updated HDMF requirement to version 3.5.1. #1611
- Increased the stacklevel of the warning from
_add_missing_timezone
inpynwb.file
to make identification of which datetime field is missing a timezone easier. @CodyCBakerPhD #1641
- Adjusted ecephys tutorial to create fake data with proper dimensions @bendichter #1581
- Refactored testing documentation, including addition of section on
pynwb.testing.mock
submodule. @bendichter #1583 - Updated round trip tutorial to the newer
NWBH5IOMixin
andAcquisitionH5IOMixin
classes. @bendichter #1586 - Added more informative error message for common installation error. @bendichter, @rly #1591
- Updated citation for PyNWB in docs and duecredit to use the eLife NWB paper. @oruebel #1604
- Fixed docs build warnings due to use of hardcoded links. @oruebel #1604
- Updated the iterative write tutorial to reference the new
GenericDataChunkIterator
functionality and use the newH5DataIO.dataset
property to simplify the custom I/O section. @oruebel #1633 - Updated the parallel I/O tutorial to use the new
H5DataIO.dataset
feature to set up an empty dataset for parallel write. @oruebel #1633
- Added shape constraint to
PatchClampSeries.data
. @bendichter #1596 - Updated the images tutorial to provide example usage of an
IndexSeries
with a reference toImages
. @bendichter #1602 - Fixed an issue with the
tox
tool when upgrading to tox 4. @rly #1608 - Fixed an issue where
Images
were not allowed as stimulus templates. @rly #1638
- Enhanced
pynwb.validate
API function to accept a list of file paths as well as the ability to operate on cached namespaces. Also adjusted the validate CLI to directly use the API function. @CodyCBakerPhD #1511
- Fixed bug in
pynwb.testing.mock.file.mock_NWBFile
to identifier UUID to string. @oruebel #1557 - Minor fixes to test suite to prevent warnings. @rly #1571
- Made build wheel python 3 only. @mavaylon1 #1572
- Updated README.rst. @mavaylon1 #1573
- Added support for explicit ordering of sphinx gallery tutorials in the docs. @oruebel #1504, @bdichter #1495
- Added developer guide on how to create a new tutorial. @oruebel #1504
- Added images tutorial. @weiglszonja #1470
- Added example code for fsspec in the streaming tutorial. @bdichter #1499
- Add voxel_mask tutorial. @codycbakerphd (#1544)
- Updated coverage workflow, report separate unit vs integration coverage. @rly #1509
- Deleted test files generated from running sphinx gallery examples. @rly #1517
- Enabled passing an S3File created through s3fs, which provides a method for reading an NWB file directly
from s3 that is an alternative to ros3. This required relaxing of
NWBHDF5IO
input validation. Thepath
arg is not needed iffile
is provided.mode
now has a default value of "r". @bendichter #1499 - Added a method to
NWBMixin
that only raises an error when a check is violated on instance creation, otherwise throws a warning when reading from a file. The new checks inImageSeries
whenexternal_file
is provided is used with this method to ensure that that files with invalid data can be read, but prohibits the user from creating new instances when these checks are violated. @weiglszonja #1516 - Created a GitHub Actions workflow to generate test files for testing backward compatibility. @rly #1548
- Updated requirements, including allowing numpy 1.23. @rly #1550
- Enhanced docs for
LabMetaData
to clarify its usage. @oruebel #1546 - Add testing/mock, which provides mock neurodata objects for testing. @bendichter #1454
- Updated
TimeIntervals
to use the newTimeSeriesReferenceVectorData
type. This does not alter the overall structure ofTimeIntervals
in a major way aside from changing the value of theneurodata_type
attribute of theTimeIntervals.timeseries
column fromVectorData
toTimeSeriesReferenceVectorData
. This change facilitates creating common functionality aroundTimeSeriesReferenceVectorData
. For NWB files with version 2.4.0 and earlier, theTimeIntervals.timeseries
column is automatically migrated on read in theTimeIntervalsMap
object mapper class to use theTimeSeriesReferenceVectorData
container class, so that users are presented a consistent API for existing and new files. This change affects all existingTimeIntervals
tables e.g.,NBWFile.epochs
,NWBFile.trials
, andNWBFile.invalid_times
. While this is technically a breaking change, the impact user codes should be minimal as this change primarily adds functionality while the overall behavior of the API is largely consistent with existing behavior. @oruebel, @rly (#1390)
- A warning is now raised if
SpatialSeries.data
has more than 3 columns. @bendichter, @rly (#1455, #1480) - The arguments x, y, z, imp, location, filtering are no longer required in the electrodes table. @h-mayorquin, @rly (#1448)
- Added
cell_id
attribute toIntracellularElectrode
. @bendichter (#1459) - Added
offset
field toTimeSeries
and its subtypes. @codycbakerphd (#1424) - Added support for NWB 2.5.0.
- Added support for updated
IndexSeries
type, neworder_of_images
field inImages
, and new neurodata_typeImageReferences
. @rly (#1483)
- Added support for updated
- Added support for HDMF 3.3.1. This is now the minimum version of HDMF supported. Importantly, HDMF 3.3 introduces warnings when the constructor of a class mapped to an HDMF-common data type or an autogenerated data type class is passed positional arguments instead of all keyword arguments. @rly (#1484)
- Moved logic that checks the 0th dimension of TimeSeries data equals the length of timestamps to a private method in the
TimeSeries
class. This is to avoid raising a warning when an ImageSeries is used with external file. @weiglszonja (#1486) - Improved warning text when dimensions are not matched in
TimeSeries
,ElectricalSeries
, andRoiResponseSeries
. @rly (#1491)
- Added tutorial on annotating data via
TimeIntervals
. @oruebel (#1390) - Added copy button to code blocks. @weiglszonja (#1460)
- Created behavioral tutorial. @weiglszonja (#1464)
- Enhanced display of icephys pandas tutorial by using
dataframe_image
to render and display large tables as images. @oruebel (#1469) - Created tutorial about reading and exploring an existing
NWBFile
. @weiglszonja (#1453) - Added new logo for PyNWB. @oruebel (#1461)
- Minor text fixes. @oruebel @bendichter (#1443, #1462, #1463, #1466, #1472, #1473)
- Fixed input data types to allow only
float
for fieldsconversion
andoffset
in definition ofTimeSeries
. @codycbakerphd (#1424) - Fixed incorrect warning in
RoiResponseSeries.__init__
about mismatch between the second dimension of data and the length of rois. @rly (#1491)
- Added
environment-ros3.yml
toMANIFEST.in
for inclusion in source distributions. @rly (#1398) - Fixed bad error check in
IntracellularRecordingsTable.add_recording
when addingIZeroClampSeries
. @oruebel (#1410) - Skipped ros3 tests if internet access or the ros3 driver are not available. @oruebel (#1414)
- Fixed CI issues. @rly (#1427)
- Enhanced ordering of sphinx gallery tutorials to use alphabetic ordering based on tutorial headings. @oruebel (#1399)
- Updated the general tutorial to add documentation about the
Images
type. @bendichter (#1353) - Updated the main index of the documentation to make the documentation easier to navigate. @oruebel (#1402)
- Merged the "NWB File" overview section with the "NWB File Basics" tutorial. @oruebel (#1402)
- Updated and created separated installation instructions for users and developers . @oruebel (#1402)
- Updated the Extracellular electrophysiology tutorial. @bendichter, @weiglszonja (#1391)
- Extended the general tutorial with more data types (e.g.,
Subject
,SpatialSeries
,Position
). @weiglszonja (#1403) - Improved constructor docstrings for Image types. @weiglszonja (#1418)
- Added documentation for exporting NWB files. @rly (#1417)
- Improved documentation formatting. @bendichter (#1438)
- Minor text fixes. @bendichter (#1437, #1400)
- Improved constructor docstrings for Image types. @weiglszonja (#1418)
- Added checks for data orientation in
TimeSeries
,ElectricalSeries
, andRoiResponseSeries
@bendichter (#1428) - Added checks for data orientation in
TimeSeries
,ElectricalSeries
, andRoiResponseSeries
. @bendichter (#1426) - Enhanced issue template forms on GitHub. @CodyCBakerPHD (#1434)
SweepTable
has been deprecated in favor of the new icephys metadata tables. Use ofSweepTable
is still possible but no longer recommended. @oruebel (#1349)TimeSeries.__init__
now requires thedata
argument because the 'data' dataset is required by the schema. If aTimeSeries
is read without a value fordata
, it will be set to a default value. For mostTimeSeries
, this is a 1-dimensional empty array with dtype uint8. ForImageSeries
andDecompositionSeries
, this is a 3-dimensional empty array with dtype uint8. @rly (#1274)TimeSeries.__init__
now requires theunit
argument because the 'unit' attribute is required by the schema. If aTimeSeries
is read without a value forunit
, it will be set to a default value. For mostTimeSeries
, this is "unknown". ForIndexSeries
, this is "N/A" according to the NWB 2.4.0 schema. @rly (#1274)
- Added new intracellular electrophysiology hierarchical table structure from ndx-icephys-meta to NWB core.
This includes the new types
TimeSeriesReferenceVectorData
,IntracellularRecordingsTable
,SimultaneousRecordingsTable
,SequentialRecordingsTable
,RepetitionsTable
andExperimentalConditionsTable
as well as corresponding updates toNWBFile
to support interaction with the new tables. @oruebel (#1349) - Added support for NWB 2.4.0. See Release Notes for more details. @oruebel, @rly (#1349)
- Dropped Python 3.6 support, added Python 3.9 support. @rly (#1377)
- Updated requirements to allow compatibility with HDMF 3 and h5py 3. @rly (#1377)
- When using HDMF 3 and h5py 3, users can now stream NWB files from an S3 bucket.
- Added new tutorial for intracellular electrophysiology to describe the use of the new metadata tables
and declared the previous tutorial using
SweepTable
as deprecated. @oruebel (#1349) - Added new tutorial for querying intracellular electrophysiology metadata
(
docs/gallery/domain/plot_icephys_pandas.py
). @oruebel (#1349, #1383) - Added thumbnails for tutorials to improve presentation of online docs. @oruebel (#1349)
- Used
sphinx.ext.extlinks
extension in docs to simplify linking to common targets. @oruebel (#1349) - Created new section for advanced I/O tutorials and moved parallel I/O tutorial to its own file. @oruebel (#1349)
- Overhauled documentation on extensions. @bendichter, @rly, @oruebel (#1350)
- Updated the optical physiology / Calcium imaging tutorial. @bendichter, @weiglszonja (#1375)
- Added a tutorial on streaming using the ROS3 driver. @rly (#1393)
- Added RRID for citing PyNWB to the docs. @oruebel (#1372)
- Updated CI and tests to handle deprecations in libraries. @rly (#1377)
- Added test utilities for icephys (
pynwb.testing.icephys_testutils
) to ease creation of test data for tests and tutorials. @oruebel (#1349, #1383) - Added on-push and nightly tests of streaming using the ROS3 driver. @rly (#1393)
- These tests make use of a new dandiset for testing the API: https://gui.dandiarchive.org/#/dandiset/000126
- Improve documentation and test for
CorrectedImageStack
,MotionCorrection
. @rly, @bendichter (#1306, #1374)
- Updated behavior of
make clean
command for docs to ensure tutorial files are cleaned up. @oruebel (#1349) - Enforced electrode ID uniqueness during insertion into table. @CodyCBakerPhD (#1344)
- Fixed integration tests with invalid test data that will be caught by future hdmf validator version. @dsleiter, @rly (#1366, #1376)
- Fixed build warnings in docs. @oruebel (#1380)
- Fix intersphinx links in docs for numpy. @oruebel (#1386)
- Previously, the
data
argument was required inOpticalSeries.__init__
even thoughexternal_file
could be provided in place ofdata
.OpticalSeries.__init__
now makesdata
optional. However, this has the side effect of moving the position ofdata
to later in the argument list, which may break code that relies on positional arguments forOpticalSeries.__init__
. @rly (#1274) - Fixed
setup.py
not being able to importversioneer
when installing in an embedded Python environment. @ikhramts (#1395) - Removed broken option to validate against a given namespace file and updated associated documentation. @rly (#1397)
- Raise minimum version of pandas from 0.23 to 1.0.5 to be compatible with numpy 1.20, and raise minimum version of HDMF to use the corresponding change in HDMF. @rly (#1363)
- Update documentation and update structure of requirements files. @rly (#1363)
NWBFile.add_scratch(...)
andScratchData.__init__(...)
now accept scalar data in addition to the currently accepted types. @rly (#1309)- Support
pathlib.Path
paths when opening files withNWBHDF5IO
. @dsleiter (#1314) - Use HDMF 2.5.1. See the HDMF release notes for details.
- Support
driver='ros3'
inNWBHDF5IO
for streaming NWB files directly from s3. @bendichter (#1331) - Update documentation, CI GitHub processes. @oruebel @yarikoptic, @bendichter, @TomDonoghue, @rly (#1311, #1336, #1351, #1352, #1345, #1340, #1327)
- Set default
neurodata_type_inc
forNWBGroupSpec
,NWBDatasetSpec
. @rly (#1295) - Block usage of h5py 3+ for now. h5py>=2.9, <3 is supported. (#1355)
- Fix incompatibility issue with downstream github-release tool used to deploy releases to GitHub. @rly (#1245)
- Fix issue with Sphinx gallery. @rly
- Add citation information to documentation and support for duecredit tool. @rly
- Remove use of ColoredTestRunner for more readable verbose test output. @rly
- Add support for nwb-schema 2.3.0. @rly (#1245, #1330)
- Add optional
waveforms
column to theUnits
table. - Add optional
strain
field toSubject
. - Add to
DecompositionSeries
an optionalDynamicTableRegion
calledsource_channels
. - Add to
ImageSeries
an optional link toDevice
. - Add optional
continuity
field toTimeSeries
. - Add optional
filtering
attribute toElectricalSeries
. - Clarify documentation for electrode impedance and filtering.
- Set the
stimulus_description
forIZeroCurrentClamp
to have the fixed value "N/A". - See https://nwb-schema.readthedocs.io/en/latest/format_release_notes.html for full schema release notes.
- Add optional
- Add support for HDMF 2.5.5 and upgrade HDMF requirement from 2.1.0 to 2.5.5. @rly @ajtritt
(#1325, #1355, #1360, #1245, #1287). This includes several relevant features and bug fixes, including:
- Fix issue where dependencies of included types were not being loaded in namespaces / extensions.
- Add
HDF5IO.get_namespaces(path=path, file=file)
method which returns a dict of namespace name mapped to the namespace version (the largest one if there are multiple) for each namespace cached in the given HDF5 file. - Add methods for automatic creation of
MultiContainerInterface
classes. - Add ability to specify a custom class for new columns to a
DynamicTable
that are notVectorData
,DynamicTableRegion
, orVocabData
usingDynamicTable.__columns__
orDynamicTable.add_column(...)
. - Add support for creating and specifying multi-index columns in a
DynamicTable
usingadd_column(...)
. - Add capability to add a row to a column after IO.
- Add method
AbstractContainer.get_fields_conf
. - Add functionality for storing external resource references.
- Add method
hdmf.utils.get_docval_macro
to get a tuple of the current values for a docval_macro, e.g., 'array_data' and 'scalar_data'. DynamicTable
can be automatically generated usingget_class
. Now the HDMF API can read files with extensions that contain a DynamicTable without needing to import the extension first.- Add
EnumData
type for storing data that comes from a fixed set of values. - Add
AlignedDynamicTable
type which defines a DynamicTable that supports storing a collection of subtables. - Allow
np.bool_
as a validbool
dtype when validating. - See https://github.com/hdmf-dev/hdmf/releases for full HDMF release notes.
Users can now add/remove containers from a written NWB file and export the modified NWBFile to a new file path. @rly (#1280)
- See https://pynwb.readthedocs.io/en/stable/tutorials/general/add-remove-containers.html for examples and more information.
- PyNWB no longer works with HDMF version < 2.1.0. If you have pinned HDMF version < 2 in your package but allow PyNWB
version 1.4.0, please beware that
pip
may install PyNWB version 1.4.0 with an incompatible version of HDMF (version < 2). - Use of HDMF 2.1.0 fixes
__getitem__
-based access ofMultiContainerInterface
types, e.g,,fluorescence['roi_response_series_name']
, where previously if theMultiContainerInterface
contained only one item, then any key could be used within the square brackets to access the containedContainer
, even if the key did not match the name of the containedContainer
. This update patches this bug such that the key used within the square brackets must match the name of the containedContainer
or else an error will be raised.
- Update requirements to use HDMF 2.1.0. @rly (#1256)
- Start FAQ section in documentation. @rly (#1249)
- Improve deprecation warnings. @rly (#1261)
- Update CI to test Python 3.8, update requirements. @rly (#1267, #1275)
- Make use of
MultiContainerInterface
andLabelledDict
that have been moved to HDMF. @bendichter @rly (#1260)
- For
ImageSeries
, add check ifexternal_file
is provided withoutstarting_frame
in__init__
. @rly (#1264) - Improve docstrings for
TimeSeries.data
and for the electrode table. @rly (#1271, #1272) - Fix Azure Pipelines configuration. @rly (#1281)
- Update requirements to use HDMF 1.6.4. @rly (#1256)
- Fix writing optional args to electrodes table. @rly (#1246)
- Fix missing method UnitsMap.get_nwb_file. @rly (#1227)
- Add support for nwb-schema 2.2.5. @rly (#1243)
- This schema version fixes incorrect dims and shape for
ImagingPlane.origin_coords
andImagingPlane.grid_spacing
, and fixes incorrect dims forTwoPhotonSeries.field_of_view
.
- This schema version fixes incorrect dims and shape for
- Fix bugged
Device
constructor. @rly (#1209) - Fix link to code of conduct page in docs. @rly (#1229)
- Fix docs for
get_type_map
. @oruebel (#1233) - Pass file object to parent when loading namespaces. @NileGraddis (#1242)
- Update CI to use supported MacOS version. @rly (#1211)
- Clean up tests to remove conversion warnings and use keyword args. @rly (#1202)
- Fix flake8 errors. @rly (#1235)
- Add changelog. @rly (#1215)
- Update release process with notes about coordinating with nwb-schema. @rly (#1214)
- Inform which unit value is actually overwritten. @yarikoptic (#1219)
- Do not print out logging.DEBUG statements to stdout for test.py. @rly (#1240)
- Add support for nwb-schema 2.2.4. @rly (#1213)
- Make
ImagingPlane.imaging_rate
optional. This moves theimaging_rate
argument down the list of constructor arguments forImagingPlane.__init__
. This will break existing code that calls the constructor ofImagingPlane
with at least 6 positional arguments, such that one positional argument matchesimaging_rate
.
- Make
- Add support for nwb-schema 2.2.2. @rly (#1146)
- This is a large change. See the PR and schema release notes for more information.
- Validate against most specific namespace. @t-b, @rly (#1094)
- Replace 'ic_electrode' with 'icephys_electrode' in
NWBFile
. @oruebel (#1200) - Integrate minor enhancements and bug fixes introduced in HDMF 1.6.0 and 1.6.1, including improved handling of namespaces that lack a version key,
- Add nightly testing of validation CLI. @t-b, @rly (#1164, #1195, #1197)
- Treat ipython notebooks as binary in git. @t-b (#1168)
- Use proper file removal in tests. @t-b (#1165)
- Use hdmf-docutils instead of nwb-docutils for documentation. @jcfr (#1176)
- Run minimum requirements testing n Python 3.6. @rly (#1194)
- Fix API documentation. @bendichter (#1159)
- Fix unit testing output. @rly (#1158)
- Fix copying files with Subject. @rly (#1171)
- Add "unit" attribute back as an optional attribute in icephys classes. @rly (#1188)
- Fix reported development status in
setup.py
. @rly (#1201)
- Fix ReadTheDocs build. @rly (#1155)
- Update manifest to fix conda build. @rly (#1156)
- Add new logo to docs. @rly (#1096)
- Add warning when referencing electrode table before it exists. @ajtritt (#1098)
- Refactor internal calls to docval. @rly (#1104)
- Enhance icephys example and documentation. @t-b (#1081)
- Add multi index and time bounds to get_unit_spikes. @bendichter (#1001)
- Improve ophys docstrings. @bendichter (#1126)
- Improve icephys docstrings for gain. @bendichter (#1129)
- Update legal information. @rly (#1131)
- Add support for device description and manufacturer. @rly (#1135)
- Update dependencies and remove explicit six, unittest2 dependency. @rly (#1136, #1138, #1142, #1137, #1154)
- Add object ID tutorial. @rly (#1140)
- Update CI. @rly (#1141)
- Catch critical warnings and throw errors in unit tests. @rly (#1112)
- Create and use testing module, remove builder tests, clean up test code. @rly (#1117)
- Add and test minimum requirements for PyNWB. @rly (#1148)
- Improve docs for get_class. @bendichter (#1149)
- Fix versioneer reporting version. @rly (#1100)
- Fix
DynamicTable
import after move to hdmf.common. @bendichter (#1103) - Fix handling of unmapped attributes. @rly (#1105)
- Update tests and documentation to reflect new selection behavior of
DynamicTable
. @oruebel (#1106) - Fix reference images not being mapped in PlaneSegmentation. @rly (#1109)
- Fix legacy import of
ObjectMapper
. @rly (#1124) - Fix extensions documentation typo: 'str' -> 'text'. @bendichter (#1132)
- Revert "PatchClampSeries: Force sweep_number to uint64". @t-b (#1123)
- Fix sphinx code to use latest sphinx. @rly (#1139)
- Use latest HDMF 1.3.3. #1093 (@rly)
- Expose HDMF export_spec utility function for use by extensions. #1092 (@rly)
- Fix bug in writing SpikeEventSeries data or timestamps datasets with a DataChunkIterator. #1089 (@bendichter)
PyNWB 1.1.0 does not work with HDMF>=1.3. This release will work with HDMF>=1.3.2.
- Support newly added channel-specific conversion factor for ElectricalSeries #1072 (@bendichter)
- Move generic types out of PyNWB into hdmf-common. #1061 (@ajtritt)
- Update documentation to reflect the above changes. #1078 (@rly)
- Add new case to the iterative write tutorial. #1029 (@oruebel)
- Improve CI. #1079 (@rly)
- Pin the current latest version of HDMF to requirements for setup.py. #1083 (@rly)
- Add object ID to all neurodata types #991 (@ajtritt, @rly)
- Add NWBFile shallow copy method #994 (@ajtritt, @rly)
- Drop official Python 2.7 support #1028 (@rly)
- Add scratch space #1027 #1038 (@ajtritt, @rly)
- Support multiple experimenters #988 #1035 (@ajtritt, @rly)
- Support multiple related publications #1047 (@rly)
- Update schema to 2.1.0 (see release notes in https://nwb-schema.readthedocs.io/en/latest/format_release_notes.html) (@rly, @bendichter, @ajtritt, @oruebel, @t-b)
- Add iterative write check for TimeSeries timestamps #1012 (@bendichter, @oruebel)
- Add functions to convert between pixel mask and image mask for ophys data #766 (@mamelara)
- Add cortical surface extension example #1040 (@bendichter)
- Match API with schema defaults #1033 (@rly)
- Core schema is now a git submodule #1045 (@ajtritt)
- Implement better support for floating point data for Python 3.5 on Windows #1043 (@rly)
- Enhance iterative write tutorial #1029 (@oruebel)
- Allow empty data in DynamicTable with non-empty VectorIndex #887 (@ajtritt)
- Allow OpticalSeries constructor argument 'field_of_view' to be H5Dataset #1063 (@bendichter)
- Clarify documentation for deprecated ImageSeries constructor arg 'bits_per_pixel' #1065 (@rly)
- Adjust code to explicitly map properties after changes made in HDMF 1.2 #1048 #1069 (@rly)
- Improvements to CI, documentation, and GitHub repo structure #1055 (@rly)
- Add MPI functionality to NWBHDF5IO (@bendichter)
- Add option to exclude columns from DynamicTable.to_dataframe() (@NileGraddis)
- Remove ability to add DecompositionSeries to LFP (@bendichter)
- Remove num_samples from TimeSeries (@NileGraddis)
- Automatically detect ragged arrays in from_dataframe (@bendichter)
- Cache the spec by default on write (@rly)
- Improve printing of NWB objects (@rly)
- Change ProcessingModule.add_data_interface() to .add(), ProcessingModule.get_data_interface() to .get(), NWBFile.modules to NWBFile.processing (@bendichter)
- Remove unused SpecFile type (@oruebel)
- Add ability to validate files against the cached spec (@t-b)
- Make CurrentClampSeries/VoltageClampSeries parameters optional (@t-b)
- Update documentation (@t-b, @rly)
- Update copyright/license
- Improve tests and CI
- Update requirements
- See also HDMF changes https://github.com/hdmf-dev/hdmf/releases/tag/1.0.4
- Fix dynamictableregion iteration failure after roundtrip (@NileGraddis)
- Fix from_dataframe for children of DynamicTable (@bendichter)
- Fix for modular (cross-file) storage of timeseries timestamps (@NileGraddis)
- Fix bug on loading lists of strings from hdmf 1.0.4 (@rly)
- Fix IO for intervals (@bendichter)
- Fix round trip for Subject.date_of_birth (@bendichter)
- DecompositionSeries "source_timeseries" link is no longer required (@bendichter)
- Reorder keys (@rly)
- Remove NWBFile "specifications" group (@oruebel)
- CorrectedImageStack and ImagingRetinotopy inherits from NWBDataInterface instead of NWBContainer (@rly)
- Fix typo in unit of resistance_comp_prediction/correction (@t-b)
- Add option for third dimension for Units "waveforms" dataset to represent different electrodes (@bendichter)
- Update NWBFile.nwb_version to 2.0.2