Releases: NeurodataWithoutBorders/pynwb
Releases · NeurodataWithoutBorders/pynwb
2.1.0
PyNWB 2.1.0 (July 6, 2022)
Breaking changes:
- Updated
TimeIntervalsto use the newTimeSeriesReferenceVectorDatatype. This does not alter the overall
structure ofTimeIntervalsin a major way aside from changing the value of theneurodata_typeattribute of the
TimeIntervals.timeseriescolumn fromVectorDatatoTimeSeriesReferenceVectorData. This change facilitates
creating common functionality aroundTimeSeriesReferenceVectorData. For NWB files with version 2.4.0 and earlier,
theTimeIntervals.timeseriescolumn is automatically migrated on read in theTimeIntervalsMap
object mapper class to use theTimeSeriesReferenceVectorDatacontainer class, so that users are presented a
consistent API for existing and new files. This change affects all existingTimeIntervalstables
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.datahas 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_idattribute toIntracellularElectrode. @bendichter (#1459) - Added
offsetfield toTimeSeriesand 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
TimeSeriesclass. 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_imageto 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
floatfor fieldsconversionandoffsetin 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.ymltoMANIFEST.infor inclusion in source distributions. @rly (#1398) - Fix bad error check in
IntracellularRecordingsTable.add_recordingwhen 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
Imagestype. @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:
SweepTablehas been deprecated in favor of the new icephys metadata tables. Use ofSweepTable
is still possible but no longer recommended. @oruebel (#1349TimeSeries.__init__now requires thedataargument because the 'data' dataset is required by the schema.
If aTimeSeriesis 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. ForImageSeriesand
DecompositionSeries, this is a 3-dimensional empty array with dtype uint8. @rly (#1274)TimeSeries.__init__now requires theunitargument because the 'unit' attribute is required by the schema.
If aTimeSeriesis 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,RepetitionsTableand
ExperimentalConditionsTableas well as corresponding updates toNWBFileto 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 usingSweepTableas 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.extlinksextension 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 cleancommand 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
dataargument was required inOpticalSeries.__init__even thoughexternal_filecould
be provided in place ofdata.OpticalSeries.__init__now makesdataoptional. However, this has the
side effect of moving the position ofdatato later in the argument list, which may break code that relies
on positional arguments forOpticalSeries.__init__. @rly (#1274) - Fixed
setup.pynot being able to importversioneerwhen 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.Pathpaths when opening files withNWBHDF5IO. @dsleiter (#1314) - Use HDMF 2.5.1. See the HDMF release notes for details.
- Support
driver='ros3'inNWBHDF5IOfor 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_incforNWBGroupSpec,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
waveformscolumn to theUnitstable. - Add optional
strainfield toSubject. - Add to
DecompositionSeriesan optionalDynamicTableRegioncalledsource_channels. - Add to
ImageSeriesan optional link toDevice. - Add optional
continuityfield toTimeSeries. - Add optional
filteringattribute toElectricalSeries. - Clarify documentation for electrode impedance and filtering.
- Set the
stimulus_descriptionforIZeroCurrentClampto 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
MultiContainerInterfaceclasses. - Add ability to specify a custom class for new columns to a
DynamicTablethat are notVectorData,
DynamicTableRegion, orVocabDatausingDynamicTable.__columns__orDynamicTable.add_column(...). - Add support for creating and specifying multi-index columns in a
DynamicTableusingadd_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_macroto get a tuple of the current values for a docval_macro, e.g., 'array_data'
and 'scalar_data'. DynamicTablecan 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
EnumDatatype for storing data that comes from a fixed set of values. - Add
AlignedDynamicTabletype which defines a DynamicTable that supports storing a collection of subtables. - Allow
np.bool_as a validbooldtype when validating. - See https://github.com/hdmf-dev/hdmf/releases for full HDMF release notes.
1.4.0
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.
Internal improvements:
- 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
MultiContainerInterfaceandLabelledDictthat have been moved to HDMF. @bendichter @rly (#1260)
Bug fixes:
1.3.3
1.3.2
1.3.1
Bug fixes:
- Fix bugged
Deviceconstructor. @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)
Internal improvements:
- 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_rateoptional. This moves theimaging_rateargument down the list of constructor forImagingPlane.__init__. This will break existing code that calls the constructor ofImagingPlanewith at least 6 positional arguments, such that one positional argument matchesimaging_rate.
- Make
1.3.0
New features:
- 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: https://nwb-schema.readthedocs.io/en/latest/format_release_notes.html#march-2-2020
- 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,
Internal improvements:
- 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)
Bug fixes: