Releases: NeurodataWithoutBorders/pynwb
Releases · NeurodataWithoutBorders/pynwb
2.3.2
PyNWB 2.3.2 (April 10, 2023)
Enhancements and minor changes
- Fixed typos and added codespell GitHub action to check spelling in the future. @yarikoptic #1648
Documentation and tutorial enhancements
- 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
Bug fixes
- 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
2.3.1
2.3.0
PyNWB 2.3.0 (February 23, 2023)
Enhancements and minor changes
- 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
Documentation and tutorial enhancements:
- 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
Bug fixes
- 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
2.2.0
PyNWB 2.2.0 (October 19, 2022)
Enhancements and minor changes
- 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
Internal enhancements
Bug fixes
- 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
2.1.1
PyNWB 2.1.1 (September 1, 2022)
Documentation and tutorial enhancements:
- 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)
Enhancements and minor changes
- 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 ofNWBHDF5IO
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
2.1.0
PyNWB 2.1.0 (July 6, 2022)
Breaking changes:
- 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 the
TimeIntervals.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)
Enhancements and minor changes
- 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 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)
Documentation and tutorial enhancements:
- 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)
Bug fixes:
- Fixed input data types to allow only
float
for fieldsconversion
andoffset
in definition of
TimeSeries
. @CodyCBakerPhD (#1424) - Fixed incorrect warning in
RoiResponseSeries.__init__
about mismatch between the second dimension of data and
the length of rois. @rly (#1491)
2.0.1
PyNWB 2.0.1 (March 16, 2022)
Bug fixes:
- Add
environment-ros3.yml
toMANIFEST.in
for inclusion in source distributions. @rly (#1398) - Fix bad error check in
IntracellularRecordingsTable.add_recording
when addingIZeroClampSeries
. @oruebel (#1410) - Skip ros3 tests if internet access or the ros3 driver are not available. @oruebel (#1414)
- Fix CI issues. @rly (#1427)
Documentation and tutorial enhancements:
- 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)
Minor improvements:
- Added checks for data orientation in
TimeSeries
,ElectricalSeries
, andRoiResponseSeries
.
@bendichter (#1426) - Enhanced issue template forms on GitHub. @CodyCBakerPhD (#1434)
2.0.0
Breaking changes:
SweepTable
has been deprecated in favor of the new icephys metadata tables. Use ofSweepTable
is still possible but no longer recommended. @oruebel (#1349TimeSeries.__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 most
TimeSeries
, this is a 1-dimensional empty array with dtype uint8. ForImageSeries
and
DecompositionSeries
, 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 most
TimeSeries
, this is "unknown". ForIndexSeries
, this is "N/A" according to the NWB 2.4.0 schema. @rly (#1274)
New features:
- Added new intracellular electrophysiology hierarchical table structure from ndx-icephys-meta to NWB core.
This includes the new typesTimeSeriesReferenceVectorData
,IntracellularRecordingsTable
,
SimultaneousRecordingsTable
,SequentialRecordingsTable
,RepetitionsTable
and
ExperimentalConditionsTable
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.
Tutorial enhancements:
- Added new tutorial for intracellular electrophysiology to describe the use of the new metadata tables
and declared the previous tutoral usingSweepTable
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)
Minor new features:
- 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)
Bug fixes:
- 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)
1.5.1
1.5.0
New features:
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.