- Removed deprecated wrapper functions from
roiextractors_pending_deprecation.py(March 2026 deadline):add_imaging_plane_to_nwbfile,add_image_segmentation_to_nwbfile,add_photon_series_to_nwbfile,add_plane_segmentation_to_nwbfile,add_background_plane_segmentation_to_nwbfile,add_background_fluorescence_traces_to_nwbfile,add_summary_images_to_nwbfile. PR #1680 - Added
*argspositional argument deprecation toadd_imaging_to_nwbfileto enforce keyword-only arguments. Will be enforced on or after September 2026. PR #1680 - Removed the deprecated
stagingparameter fromautomatic_dandi_upload. Usesandboxinstead. PR #1678 - Removed the deprecated
container_nameparameter fromImageInterface.add_to_nwbfileandDeepLabCutInterface.add_to_nwbfile. Usemetadata_keyin__init__instead. PR #1678 - Removed the deprecated
time_series_nameparameter fromadd_recording_as_time_series_to_nwbfile. Usemetadata_keyinstead. PR #1678
- Fixed
get_json_schema_from_method_signatureto resolve PEP 563 string annotations (fromfrom __future__ import annotations) before passing them to pydantic. This affected any interface defined in a module with deferred annotations (e.g.MiniscopeConverter, or external subclasses from SpikeInterface). PR #1670
- Added column-first fast path for writing Units tables when the table is new (no append/merge). Uses
id.extend()+add_column()instead of per-rowadd_unit()calls, reducing Python overhead for large sortings. PR #1669
- Fixed timestamp writing logic in
_add_photon_series_to_nwbfile,add_photon_series_to_nwbfile, and_add_fluorescence_traces_to_nwbfileto checkget_native_timestamps()whenhas_time_vector()is False. Previously, native hardware timestamps from source formats (e.g. Minian, ScanImage) were silently dropped, falling back to sampling rate only. PR #1662 - Fixed
TypeError: Object of type type is not JSON serializablewhen passingtypeorcallableobjects (e.g.progress_bar_class) inconversion_options. The validation step now serializes these to their qualified module path for JSON schema validation while passing the original objects through to conversion unchanged. PR #1667
- Enforced keyword-only arguments across all data interfaces:
__init__methods now only acceptfile_path/folder_path/file_pathsas positional arguments, andadd_to_nwbfilemethods only acceptnwbfileandmetadataas positional arguments. Existing positional usage inadd_to_nwbfilewill emit aFutureWarningand will be removed on or after August 2026. PR #1663 - Deprecated using
write_imaging_to_nwbfileandwrite_segmentation_to_nwbfilewithoutnwbfile_path. Useadd_imaging_to_nwbfileandadd_segmentation_to_nwbfileinstead for adding data to in-memory NWBFile objects. Will be removed on or after June 2026. PR #1649 - Deprecated returning NWBFile when using
append_on_disk_nwbfile=Trueinwrite_imaging_to_nwbfileandwrite_segmentation_to_nwbfile. Will return None on or after June 2026. PR #1649
- Fixed
UnicodeDecodeErroron Windows when reading YAML and JSON files containing UTF-8 characters by adding explicitencoding='utf-8'parameter to all text file operations. This ensures cross-platform compatibility per PEP 597 recommendations. PR #1657 - Fixed bug in
write_imaging_to_nwbfilewherenwbfilewas incorrectly passed toadd_imaging_to_nwbfileinstead of the created/loaded nwbfile. PR #1649 - Fixed bug in
write_segmentation_to_nwbfilewhere invalidplane_numparameter was passed toadd_segmentation_to_nwbfile. PR #1649 - Fixed
get_json_schema_from_method_signatureto skip*args(VAR_POSITIONAL) parameters, which was causing schema validation errors when methods used the*argspattern for deprecating positional arguments. PR #1647 - Fixed a bug in unit table addition to nwbfile where
unit_namevalues containing apostrophes could fail matching due to pandasto_dataframe().query(...)parsing. Replaced query-based matching with directunit_namecolumn mapping, with improved memory efficiency as a side effect. Added regression coverage for quoted unit names. PR #1666
- Added
roi_ids_to_addparameter toBaseSegmentationExtractorInterface.add_to_nwbfile()to select a subset of ROIs during conversion, reducing file size by excluding rejected or unwanted ROIs. Also addedroi_idsproperty to inspect available ROI IDs. Requires roiextractors >= 0.8.0. PR #1658 - Added
backend,backend_configuration, andappend_on_disk_nwbfileparameters towrite_imaging_to_nwbfileandwrite_segmentation_to_nwbfilefor better control over file writing, matching the pattern from spikeinterface write functions. PR #1649 - Added support for stream_name to TDT recording interface #1645
- Added
backend,backend_configuration, andappend_on_disk_nwbfileparameters towrite_imaging_to_nwbfileandwrite_segmentation_to_nwbfilefor better control over file writing, matching the pattern from spikeinterface write functions. PR #1649 - Added
backend,backend_configuration, andappend_on_disk_nwbfilesupport toLightningPoseConverter. PR #1652 - Added
backend,backend_configuration, andappend_on_disk_nwbfileparameters towrite_imaging_to_nwbfileandwrite_segmentation_to_nwbfilefor better control over file writing, matching the pattern from spikeinterface write functions. PR #1649
- Added explicit numpy conversion for pandas data to ensure HDMF compatibility with pandas 3.0+. Changed
.valuesto.to_numpy()in interfaces that read CSV data (TimeIntervalsInterface, FicTracDataInterface, MiniscopeHeadOrientationInterface, LightningPoseDataInterface) and added.item()conversion for row iteration inconvert_df_to_time_intervals. PR #1646 - Renamed test variables
values_dictoelectrode_row_kwargsandunit_row_kwargsin SpikeInterface tests for improved clarity. PR #1651 - Removed cap on NumPy version for ecephys and icephys formats now that python-quantities v0.16.4 supports NumPy 2.4. #1648
- Added
EncodingWarningenforcement viapytest-envto catch missingencoding=inopen()calls during tests (PEP 597). PR #1660
- Deprecated
_VideoInterfaceinLightningPoseConverterwith migration toExternalVideoInterface#1596 - Deprecated
waveform_meansandwaveform_sdsparameters inadd_sorting_to_nwbfile. Use the newwaveform_data_dictparameter instead, which bundles waveform data with associated metadata. Will be removed on or after July 2026. PR #1628
- Fixed
add_electrodes_to_nwbfileandadd_sorting_to_nwbfilefunctions to only compute null values for existing table properties when new rows will actually be added. Previously, null values were computed preemptively even when no new electrodes/units needed to be added, causing errors when properties lacked sensible defaults. #1633, #1640 - Added cap on NumPy version for all ecephys formats. #1626
- Added Numba as a dependency of the sorting_analyzer environment. #1627, #1635
- Added cap on NumPy version for all icephys formats. #1634
- Updated DANDI instance names to fix Ember DANDI upload. #1631
- Added cap on OpenCV version for Mac OS Intel. #1637
- Replaced pytz with zoneinfo #1638
- Removed deprecated
exclude_channel_comparisonparameter fromcheck_imaging_equalcall in imaging interface tests to fix compatibility with updated roiextractors. #1642
- Added
waveform_data_dictkeyword-only parameter toadd_sorting_to_nwbfileandBaseSortingExtractorInterface.add_to_nwbfilefor passing waveform data with associated metadata (means,sds,sampling_rate,unit). The Units table now properly setswaveform_rate,waveform_unit, andresolutionattributes, enabling proper HDF5 attribute propagation for downstream tools like MatNWB. PR #1628
- Improved warning message in
get_moduleto show both existing and new (ignored) descriptions when there's a mismatch, making it easier to debug processing module conflicts. PR #1620 - Corrected
MiniscopeImagingInterfacedocumentation and docstrings:timeStamps.csvis now correctly documented as required (an error is raised if missing), and removed inaccurate statement about automatic timestamp generation from sampling frequency. PR #1621 null_values_for_propertiesis exposed to more functions inspikeinterfacetools allowing user to manually specify the default properties. This is especially helpful when there exists properties which it has no default value when using any adding function related toadd_electrodes_to_nwbfile. PR #1624- Made
dichroic_mirroroptional inTDTFiberPhotometryInterfaceto match latest version ofndx-fiber-photometrywhere this field is not required. PR #1636 - Fixed multiple errors in backend configuration documentation: removed unused imports, corrected NWBHDF5IO parameter name from
nwbfile_pathtopath, fixed undefinednwbfilevariable in streamlined example, corrected compression options key fromcleveltocompression_opts, and removed non-existentexportparameter. Updated examples to useread_nwbfor cleaner code. PR #1641
- Removed
VideoInterfaceclass scheduled for removal in September 2025. The class is now private (_VideoInterface) and used internally byLightningPoseConverter. Users should useExternalVideoInterfaceorInternalVideoInterfaceinstead. PR #1589 - Removed deprecated ScanImage interfaces that were scheduled for removal in October 2025:
ScanImageMultiFileImagingInterface,ScanImageMultiPlaneImagingInterface,ScanImageMultiPlaneMultiFileImagingInterface,ScanImageSinglePlaneImagingInterface, andScanImageSinglePlaneMultiFileImagingInterface. UseScanImageImagingInterfaceinstead. PR #1576 - Removed deprecated SpikeInterface functions scheduled for removal in October 2025:
add_electrical_series_to_nwbfile,check_if_recording_traces_fit_into_memory,add_electrodes_info_to_nwbfile, andadd_units_table_to_nwbfile. Useadd_recording_to_nwbfile,add_recording_metadata_to_nwbfile, andadd_sorting_to_nwbfileinstead. PR #1583 - Removed deprecated
BaseRecordingExtractorInterface.subset_recording()method scheduled for removal in October 2025. PR #1583 - Removed deprecated
write_electrical_seriesparameter fromadd_recording_to_nwbfilescheduled for removal in October 2025. Useadd_recording_metadata_to_nwbfileif only metadata addition is desired. PR #1583 - Removed deprecated
write_scaledparameter fromadd_recording_to_nwbfileandwrite_recording_to_nwbfilescheduled for removal in October 2025. The functions now automatically handle channel conversion and offsets. PR #1583 - Removed deprecated
num_framesparameter fromMockImagingInterfaceandMockSegmentationInterfacescheduled for removal in February 2025. Usenum_samplesinstead. PR #1583 - Removed deprecated
output_filepathparameter fromconfigure_and_write_nwbfile. Usenwbfile_pathinstead. PR #1582 - Deprecated
configuration_file_pathparameter inMiniscopeImagingInterfaceand will be removed on or after May 2026. Usefolder_pathinstead for standard folder structures. PR #1593 - Deprecated
get_device_metadatafunction inspikeglx_utilsand will be removed on or after May 2026. UseSpikeGLXRecordingInterface._get_device_metadata_from_probe()instead, which extracts device metadata directly from probe information. PR #1599 - Deprecated
iterator_optsparameter in favor ofiterator_optionsacross all SpikeInterface conversion functions and data interfaces. The deprecated parameter will be removed on or after May 2026. This change improves consistency with naming conventions. PR #1603 - Deprecated
es_keyparameter inSpikeGLXNIDQInterfaceand will be removed on or after May 2026. This parameter has no effect as the interface writes analog data as TimeSeries and digital data as LabeledEvents, not ElectricalSeries. PR #1615 - Removed deprecated
file_pathparameter fromSpikeGLXRecordingInterfaceandSpikeGLXNIDQInterface. Usefolder_pathandstream_idinstead. PR #1616
- Fixed bug with TDTFiberPhotometryInterface tests by swapping out test_all_conversion_checks_stub_test_invalid with test_check_run_conversion_stub_test_invalid (avoiding unittest.TestCase.subTests). PR #1579
- Fixed DANDI live service tests to support dandi-cli 0.73.2 instance-specific API key environment variables (
DANDI_SANDBOX_API_KEY,EMBER_SANDBOX_API_KEY, etc.). Updated all workflows and test files to use the appropriate API key for each DANDI instance. PR #1588
- Miniscope converter now uses the configuration file to read general folder structures PR #1528 PR #1604
- Added a workflow to repack nwbfiles that have already been written to disk with desired chunking and compression settings: PR #1003 PR #1592
- Enhanced
TiffImagingInterfaceto support multi-file TIFF datasets usingMultiTIFFMultiPageExtractorfrom roiextractors. Added support for configurable dimension orders (dimension_order), multi-channel data (num_channels,channel_name), and volumetric imaging (num_planes). Bothfile_path(single file) andfile_paths(multiple files) parameters are now supported for backward compatibility. PR #1577 PR #1578 - Added
add_recording_as_spatial_series_to_nwbfilefunction to write SpikeInterface recordings asSpatialSeriesfor behavioral tracking data (e.g., position, head direction, gaze tracking). PR #1574 - Enhanced
SpikeGLXNIDQInterfaceto support custom metadata for digital channels, enabling users to specify semantic labels, descriptions, and names for NIDQ digital events. Addedmetadata_keyparameter to support multiple NIDQ interfaces in the same conversion. Addeddigital_channel_groupsparameter for init-time configuration of digital channels, matching the pattern used byanalog_channel_groups. PR #1580 PR #1615 - Enhanced
SpikeGLXNIDQInterfaceto support custom metadata for analog channels, enabling users to split NIDQ analog channels into multiple TimeSeries objects with custom groupings via the newanalog_channel_groupsparameter. Users can now organize analog channels semantically (e.g., audio, accelerometer, temperature sensors). The default behavior (single TimeSeries for all analog channels) remains unchanged. PR #1601 PR #1615 - Added ADC multiplexing properties (
adc_groupandadc_sample_order) to SpikeGLX recordings. These properties preserve hardware provenance information about which ADC each electrode is connected to and its sampling order, enabling downstream computation of inter-sample shifts even when channels are sliced. Requires probeinterface >= 0.3.1. PR #1597 PR #1609 - Added
SpikeGLXSyncChannelInterfacefor converting Neuropixel synchronization channels from SpikeGLX recordings. PR #1600 - The
SpikeGLXConverterPipenow includes sync channels. PR #1600 - Added
MiniscopeHeadOrientationInterfacefor converting Miniscope head orientation data from BNO055 IMU sensor.PR #1610
- Improved metadata handling in
add_recording_as_spatial_series_to_nwbfileto no longer modify input and copies are avoided of metadata dictionaries. Made required field defaults explicit. PR #1605 - Improved SpikeGLX device metadata extraction to use probe information from probeinterface instead of parsing meta files. Device metadata now includes serial number as a separate field and enriched description with part number, port, slot, model name, and manufacturer from probe annotations. PR #1599
- Added comprehensive how-to guide "How to Add Behavioral and Sensor Data from Acquisition Systems" documenting usage of
add_recording_as_time_series_to_nwbfileandadd_recording_as_spatial_series_to_nwbfilefor adding behavioral data from any SpikeInterface-supported format. PR #1575 - Enhanced CSV interface documentation with comprehensive tutorial-style examples showing CSV format requirements, basic usage with column descriptions, customization options for storage location (trials/epochs/custom intervals), and advanced reading options. Fixed in-memory access to
nwbfile.trialsandnwbfile.epochs. Improved docstrings acrossTimeIntervalsInterfaceandconvert_df_to_time_intervals. PR #1572 - Enhanced live service testing CI to fail explicitly with clear error messages when repository secrets are unavailable for external contributors. Added validation step in workflow to check required credentials and updated documentation to explain the workflow for external contributors (maintainers fork PRs to run live tests). PR #1590 PR #1598
- Ophys: Low-level helper functions
add_background_plane_segmentation_to_nwbfile,add_fluorescence_traces_to_nwbfile,add_background_fluorescence_traces_to_nwbfile, andadd_summary_images_to_nwbfileare deprecated and will be removed on or after March 2026. These are low-level functions that should not be called directly. PR #1559 - Refactored extractor interfaces to use explicit
_initialize_extractormethod instead of implicit string-based initialization, improving code clarity and maintainability across all recording, sorting, imaging, and segmentation interfaces PR #1515 - SpikeInterface tools: Using
write_recording_to_nwbfile,write_sorting_to_nwbfile, orwrite_sorting_analyzer_to_nwbfilewithoutnwbfile_pathto only add data to an in-memory nwbfile is deprecated and will be removed in or after March 2026. Use the correspondingadd_*_to_nwbfilefunctions instead. PR #1565 - SpikeInterface tools: Returning an NWBFile object from
write_recording_to_nwbfile,write_sorting_to_nwbfile, andwrite_sorting_analyzer_to_nwbfilein append mode is deprecated and will return None in or after March 2026. This matches the pattern used in `BaseDataInterface.run_conversionPR #1565 - Extractor interfaces: The
extractorattribute andget_extractor()method are deprecated and will be removed on or after March 2026. These were confusingly named as they return extractor classes, not instances. Use the private_extractor_classattribute or access the instance directly via_extractor_instancePR #1515
- Excluded
contact_idsproperty from being added as a duplicate column in the electrodes table. This property is already represented via theelectrode_namecolumn which uses probe contact identifiers. PR #1560 - Fixed
DeepLabCutInterfaceto support output files without 'DLC' in the filename by extracting scorer from CSV/H5 header instead of parsing filename. This improves compatibility with DeepLabCut outputs that don't follow the typical naming convention while maintaining backward compatibility. PR #1573
- Support roiextractors 0.7.2 PR #1566
- SpikeInterface tools: Enhanced
write_recording_to_nwbfile,write_sorting_to_nwbfile, andwrite_sorting_analyzer_to_nwbfileto support backend configuration parameters (backend,backend_configuration) for controlling HDF5/Zarr compression and chunking settings, matching the pattern used inBaseDataInterface.run_conversion. PR #1565 - Added citation information to README, documentation, and CITATION.cff with reference to the SciPy 2025 conference paper PR #1569
- Ophys: Low-level helper functions
add_imaging_plane_to_nwbfile,add_image_segmentation_to_nwbfile,add_photon_series_to_nwbfile, andadd_plane_segmentation_to_nwbfileare deprecated and will be removed on or after March 2026. These are low-level functions that should not be called directly. PR #1552 - Ophys: Passing
pynwb.device.Deviceobjects inmetadata['Ophys']['Device']toadd_devices_to_nwbfilenow issues aFutureWarningand is deprecated. This feature will be removed on or after March 2026. Pass device definitions as dictionaries instead (e.g.,{ "name": "Microscope" }). . PR #1513 - Ecephys: The
iterator_optsparameter is deprecated across all ecephys interfaces and will be removed on or after March 2026. Useiterator_optionsinstead for consistent naming with ophys and behavior interfaces. PR #1546 - Ophys: The
iterator_type='v1'option for imaging data is deprecated and will be removed on or after March 2026. Useiterator_type='v2'orNone(no chunking). This aligns ophys with ecephys, which only supports 'v2' and None. PR #1546 - Bump minimal python-neo version to 0.14.3 PR #1550
- Add macos-15 intel to CI testing matrix. We no longer support macos 13 and 14 with intel as there is no free runner available PR #1555
- Ophys: Passing
ratein trace metadata (e.g.,metadata['Ophys']['Fluorescence']['PlaneSegmentation']['raw']['rate']) is deprecated and will be removed on or after March 2026. PR #1543
- Capped h5py to <3.15 for macOS to prevent compatibility issues PR #1551
- Temporary ceiling on hdmf-zarr (<0.12) to retain compatibility with existing code that uses read_io.file.store PR #1547
- Fixed
append_on_disk_nwbfile=Trueraising ValueError when file exists. Replacedmake_or_load_nwbfilewith direct pynwbNWBHDF5IOusage in append mode and improved code organization with private helper methods_write_nwbfileand_append_nwbfilein bothBaseDataInterfaceandNWBConverterPR #1540 - Refactored
_is_dataset_written_to_fileto use path comparison with publicsourceattribute instead of protected_fileattribute, avoiding dependency on hdmf-zarr internal APIs. Now usespathlib.Path.resolve()for robust cross-platform path comparison. PR #1545 - Enhanced SpikeGLX interface to set
channel_nameproperty showing all available streams (e.g., "AP0,LF0") for multi-stream deduplication, properly handling cases where AP and LF bands record from the same physical electrodes. PR #1553
- Support NIDQ analog streams in
OpenEphysBinaryAnalogInterfacePR #1503 - Added
MiniscopeImagingInterfacefor single Miniscope acquisition folders with automatic session_start_time extraction, improved docstrings, and comprehensive documentation showingMiniscopeConverterfor multi-acquisition data,MiniscopeImagingInterfacefor individual folders, andConverterPipefor custom multi-acquisition workflows PR #1524 - Added
iterator_optionsparameter toInternalVideoInterfaceto support tqdm progress bars and custom chunking options during video write operations. PR #1546 - Added EMBER support via the new
instanceoption forneuroconv.tools.data_transfers.automatic_dandi_upload. PR #1486
- Refactored electrode table infrastructure to add
electrode_namecolumn for probe-based recordings. The electrode table now uses(group_name, electrode_name, channel_name)as the unique identifier, enabling channel-specific metadata storage whileelectrode_nameindicates which channels share physical electrodes. This supports multi-band recordings (e.g., AP/LF in Neuropixels) and multi-probe setups. PR #1548 - Refactored
_add_fluorescence_traces_to_nwbfileand_create_roi_table_regionto removedeepcopy(metadata)anddict_deep_updatepatterns. Now extracts DfOverF and Fluorescence metadata separately from user or defaults, checks user metadata first before falling back to defaults for each trace, and passes unmodified metadata to dependencies without mutation. PR #1543 - Aligned iterator type support across ecephys and ophys modules. Both now support only
iterator_type='v2'andNone. Fixed misleading error message in spikeinterface that incorrectly mentioned 'v1' support. PR #1546 - Standardized iterator parameter naming across the codebase by introducing
iterator_optionsas the preferred parameter name. UpdatedBaseRecordingExtractorInterfaceandadd_recording_to_nwbfileto accept bothiterator_options(new) anditerator_opts(deprecated) for backward compatibility. Improved documentation with comprehensive iterator options descriptions including tqdm progress bar support. PR #1546 - Refactored
add_imaging_plane_to_nwbfileto avoiddict_deep_updateand metadata mutation, applying targeted defaults only for required fields at point of object creation (issue #1511) PR #1530 - Refactored
add_devices_to_nwbfileandadd_imaging_plane_to_nwbfileto avoiddict_deep_updateand metadata mutation, using defaults directly from single source of truth_get_default_ophys_metadata()PR #1527 - Refactored ecephys metadata functions to use a single source of truth pattern, eliminating hardcoded duplications and improving maintainability PR #1522
- Refactored ophys metadata functions to use a single source of truth pattern, preventing accidental mutation of global state and improving maintainability PR #1521
- Add ruff-rule to detect non-pep585 annotation PR #1520
- Replaced deprecated
frame_to_time()method calls withget_timestamps()in optical physiology interfaces PR #1513 - Added SpikeGLXNIDQ interface to conversion gallery with documentation on how different channel types (XA, MA, MD, XD) are converted to NWB PR #1505
- Refactored extractor interfaces to use explicit
_initialize_extractormethod instead of implicit string-based initialization, improving code clarity and maintainability across all recording, sorting, imaging, and segmentation interfaces PR #1513 - Updated
TDTFiberPhotometryInterfaceto support the latest version ofndx-fiber-photometry(v0.2.1) PR #1430 - Updated ophys roiextractors tests to use only public APIs instead of accessing private attributes, improving compatibility with roiextractors segmentation model changes PR #1526
- Refactored
add_photon_series_to_nwbfileto removeget_nwb_imaging_metadatamiddleman and inline extractor derivation. Now only derivesdimensionfrom imaging extractor when user doesn't provide it, ensuring user-provided values are always respected. Passes unmodified metadata to dependencies without mutation. PR #1537 - Refactored
_add_plane_segmentationto removedeepcopy(metadata)anddict_deep_updatepatterns. Now extracts user plane segmentation metadata directly, fills missing required fields with defaults, and passes unmodified metadata to dependencies without mutation. Tracks user intent to provide clear error messages when custom plane segmentation names are not found. PR #1539 - Refactored
add_summary_images_to_nwbfileto removedeepcopy(metadata)anddict_deep_updatepatterns. Now uses_get_default_ophys_metadata()directly and extracts SegmentationImages metadata from user or uses defaults. Changed error handling fromAssertionErrortoValueErrorfor invalid plane segmentation names. PR #1540
- Changed
automatic_dandi_upload()function parameter fromstaging: bool = Falsetosandbox: bool = Falseto align with DANDI Archive's server name change from "staging" to "sandbox". The oldstagingparameter is deprecated and will be removed in February 2026. PR #1437
- Fixed
write/add_sorting_analyzer_to_nwbfiledocstring for requirements of the recording object PR #1506 - Fixed deprecated SpikeInterface extractor imports to use
spikeinterface.extractors.extractor_classesand updated docstring references to wrapper functions for compatibility with SpikeInterface changes PR #1490 - Fixed documentation version switcher not properly distinguishing between stable and development versions PR #1483
- Fixed sleap-io compatibility by updating to version 0.5.2 and adjusting import path for
append_nwb_datafunction PR #1496
- Added
SortedSpikeGLXConverterfor handling multiple SpikeGLX streams with their corresponding sorting data, enabling proper unit-to-electrode linkage across multiple probes PR #1449 - Added
EDFAnalogInterfacefor converting non-electrode/analog channels from EDF files to NWB TimeSeries and a conversion gallery example showing how to combineEDFRecordingInterfaceandEDFAnalogInterfaceto handle mixed EDF files. PR #1487
- Added test to mimic bad channel removal in
write_sorting_analyzer_to_nwbfilePR #1506 - Enhanced
SortedRecordingConverterdocumentation with detailed explanation of the timing problem it solves when linking units to electrodes, and moved electrode linking guide from user guide to how-to section PR #1479 - Use attestation instead of token for publish action PR #1497
- Segmentation writing pipeline no longer supports writing segmentation data without image or pixel masks PR #1400
- Removed deprecated arguments:
load_sync_channelinSpikeGLXNIDQInterfaceinitialization andstart_time,write_asandwrite_electrical_seriesinSpikeGLXNIDQInterface.add_to_nwbfile(). PR #1378 - Removed
starting_timeas an argument from the recording interfacesadd_to_nwbfilemethod and the stand aloneadd_recording_segmentutility PR #1378 - Deprecated the
container_nameparameter inImageInterface.add_to_nwbfile()method. Usemetadata_keyin__init__instead. This parameter will be removed on or after February 2026. PR #1439 - Removed deprecated type aliases
FolderPathType,FilePath,OptionalFilePath, andOptionalFolderPathTypefrom utils. Usepydantic.DirectoryPath,pydantic.FilePath, or their optional variants directly. PR #1442
- Fixed SpikeInterface physical unit properties being incorrectly included in electrodes table PR #1406
- Fixed deprecated ROI extractor method calls: replaced
get_image_size()withget_frame_shape(),get_num_frames()withget_num_samples(), andframe_slice()withslice_samples()in ophys interfaces PR #1443 - Fixed logic bug in
get_packagefunction where boolean check was incorrectly compared toNonePR #1477 - Fixed docstring typos: corrected "default: Falsee" to "default: False" in multiple datainterface files PR #1472
- Segmentation interfaces now support roi ids that are strings PR #1390
- Added
MinianSegmentationInterfacefor converting Minian segmentation stream data PR #1107 - Added
InscopixImagingInterfacefor converting Inscopix imaging data. PR #1361 - Added
InscopixSegmentationInterfacefor converting Inscopix segmentation data. PR #1364 - Added
AxonRecordingInterfacefor converting extracellular electrophysiology data from Axon Binary Format (ABF) files with automatic session start time extraction PR #1413 - Added
FemtonicsImagingInterfacefor converting Femtonics imaging data. PR #1408 - Added
get_available_subjectsstatic method toDeepLabCutInterfacefor extracting subject names from DeepLabCut output files PR #1425 - Added
MockPoseEstimationInterfacefor testing pose estimation workflows with deterministic Lissajous figure motion patterns PR #1435 - Added
IntanAnalogInterfacefor converting non-amplifier analog streams from Intan data files, supporting RHD2000 auxiliary input channels, RHD2000 supply voltage channels, USB board ADC input channels, and DC amplifier channels (RHS system only) PR #1440 - Added
metadata_keyparameter toImageInterfaceto allow custom naming and organization of image containers in NWB files. This enables multiple image interfaces to coexist with distinct container names. PR #1439 - Added per-image metadata support to
ImageInterfaceallowing users to specify individualresolution(pixels/cm), name anddescriptionfor each image through metadata structure. PR #1441 - Added
rename_unit_ids()method toBaseSortingExtractorInterfacefor dictionary-based unit ID renaming, enabling clean handling of multiple sorting interfaces with overlapping unit IDs PR #1451 - Added support for setting ProbeGroup objects in
BaseRecordingExtractorInterface.set_probe()methodPR #1464 - Added comprehensive tests for
set_probemethod inBaseRecordingExtractorInterfaceto verify probe and probe group functionality with proper electrode group organization in NWB files PR #1464 - Added PyData Sphinx Theme version switcher to documentation navbar, enabling users to switch between stable (latest release) and main (development) versions PR #1478
- Added comprehensive FFmpeg video conversion how-to guide for converting bespoke video formats to DANDI-compatible formats PR #1426
- Refactored Femtonics Imaging Interface session, munit and channel selection logic. PR #1433
- Implemented PEP 735 dependency groups for test, docs, and dev dependencies PR #1434
- Expanded test coverage for
CaimanSegmentationInterfaceto include all stub files and added quality metrics properties (r_values, SNR_comp, cnn_preds) to the PlaneSegmentation table as segmentation_extractor_properties PR #1436 - Added comprehensive how-to guide "Adding Multiple Sorting Interfaces" documenting approaches for handling multiple spike sorting outputs, including unit renaming strategies, separate processing tables, and adding custom properties for provenance tracking PR #1451 PR #1473
- The copy button no longer copies the prompt (>>>) in the conversion gallery PR 1467
- Removed automatic subject addition for DeepLabCutInterface. A link is now created only if the skeleton metadata matches the subject ID. PR #1362
- Fix a bug for avoiding loading the sync stream in
SpikeGLXConverterPipePR #1373 - Fixed a bug in the
BrukerTiffSinglePlaneImagingInterfacewhere the criteria to identify frames belonging to a specific stream relied on the file name instead of the stream name. PR #1375 - Fixed a bug with the Docker dev build PR #1376
- Added
apply_global_compressionmethod toBackendConfigurationclasses to apply compression settings globally across all datasets in a backend configuration. This method allows users to easily configure compression options for all datasets at once rather than setting them individually. PR #1379 - Extra optional kwargs to
BlackrockRecordingInterfaceandBlackrockSortingInterfacefor finer control of the neo reader PR #1290
- Add a
how todocumentation for adding extracellular electrophysiology metadata PR #1311 - Improved the docker dailies PR #1372
- Re-enable and improve conversion gallery testing PR #1380
- Implemented cross-OS caches in GitHub Actions load-data action to enable cache sharing between Ubuntu, Windows, and macOS runners, reducing cache storage usage and improving CI efficiency PR #1385
MedPCformat is now tested on the conversion gallery PR #1382- Added conversion gallery testing to daily workflows PR #1387
- Added full metadata support for PoseEstimation container in DeepLabCutInterface PR #1392.
- Drop support for python 3.9 PR #1313
- Updated type hints to take advantage of the | operator PR #1316
- Deprecated the following ScanImage interfaces:
ScanImageMultiFileImagingInterface,ScanImageMultiPlaneImagingInterface,ScanImageMultiPlaneMultiFileImagingInterface,ScanImageSinglePlaneImagingInterface, andScanImageSinglePlaneMultiFileImagingInterface. These interfaces will be removed in or after October 2025. UseScanImageImagingInterfacefor all those cases instead. PR #1330 PR #1331 - Set minimum version requirement for
ndx-poseto 0.2.0 PR #1322 - Set minimum version for roiextractors as 0.5.13. PR #1339
- ndx-events is now a required dependency by spikeglx PR #1353
- Fix
AudioInterfaceto correctly handle WAV filenames with multiple dots by validating only the last suffix. PR #1327 - Fix a stubbing bug in
SpikeGLXNIDQInterfaceandOpenEphysBinaryAnalogInterfacePR #1360
- Add metadata support for
DeepLabCutInterface. PR #1319 AudioInterfaceAdding support for IEEE float in WAV format PR #1325- Added a RecordingInterface for WhiteMatter ephys data PR #1297 PR #1333
- Improved
ScanImageIntefaceto support both single and multi-file data PR #1330 DeepDictnow behaves as a python dict when printed in notebooks PR #1351- Enable chunking for
InternalVideoInterfacePR #1338 ImageSeriesandTwoPhotonSeriesnow are chunked by default even if the data is passed as a plain array PR #1338- Added support for 'I;16' mode in
ImageInterface. This mode is mapped toGrayscaleImagein NWB PR #1365
- Make metadata optional in
NWBConverter.add_to_nwbfilePR #1309 - Add installation instructions on the documentation for
neuroconvPR #1344 - Separate dailies and dev-dailies workflows PR #1343
- Added support for renaming Skeletons with
DeepLabCutInterfacePR #1359 - Updated default
PoseEstimationSeriesnames inDeepLabCutInterfacePR #1363 - Testing dependencies include only testing packages (.e.g pytest, pytest-cov) PR #1357
- Testing modalities now run in their separated environment to avoid sequence contamination of dependencies PR #1357
- Release pydantic ceiling PR #1273
write_scaledbehavior onadd_electrical_series_to_nwbfileis deprecated and will be removed in or after October 2025 PR #1292add_electrical_series_to_nwbfilenow requires both gain and offsets to write scaling factor for voltage conversion when writing to NWB PR #1292add_electrical_series_to_nwbfile,add_units_table_to_nwbfileandadd_electrodes_to_nwbfileandadd_electrode_groups_to_nwbfileare becoming private methods. Useadd_recording_to_nwbfile,add_sorting_to_nwbfileandadd_recording_metadata_to_nwbfileinstead PR #1298- Set a new minimal dependency for
hdmfto 4.0.0,pynwbto 3.0.0 andhdmf-zarr0.11 PR #1303
- Fixed import errors in main modules caused by non-lazy dependencies. Added tests to prevent regressions. PR #1305
- Added a new
add_recording_as_time_series_to_nwbfilefunction to add recording extractors from SpikeInterface as recording extractors to an nwbfile as time series PR #1296 - Added
OpenEphysBinaryAnalogInterfacefor converting OpenEphys analog channels data similar to the SpikeGLX NIDQ interface PR #1237 - Expose iterative write options on
BaseImagingExtractorInterfacePR #1307
- Add documentation for conversion options with
NWBConverterPR #1301 - Support roiextractors 0.5.12 PR #1306
configure_backendis now exposed to be imported asfrom neuroconv.tools import configure_and_write_nwbfilePR #1287- Added metadata section to video conversion gallery PR #1276
DeepLabCutInterfacenow calculates whether the timestamps come from a constant sampling rate and adds that instead if detected PR #1293- Fixed a bug in the extractor interfaces where segmentation and sorting interfaces were initialized twice PR #1288
- Support python 3.13 PR #1117
- Added how to documentation on how to set a probe to a recording interfaces PR #1300
- Fix API docs for
OpenEphysRecordingInterfacePR #1302
- Split VideoInterface (now deprecated) into ExternalVideoInterface and InternalVideoInterface PR #1251 PR #1256 PR #1278
output_filepathdeprecated onconfigure_and_write_nwbfileusenwbfile_pathinstead PR #1270- Temporary set a ceiling on pydantic
<2.11PR #1275
- Fixed a check in
_configure_backendon neurodata_object ndx_events.Events to work only when ndx-events==0.2.0 is used. PR #998 - Added an
append_on_disk_nwbfileargumento torun_conversion. This changes the semantics of the overwrite parameter from assuming append mode when a file exists to a more conventionalsafe writingmode where confirmation is required to overwrite an existing file. Append mode now is controlled with theappend_on_disk_nwbfile. PR #1256
- Added
SortedRecordingConverterto convert sorted recordings to NWB with correct metadata mapping between units and electrodes PR #1132 - Support roiextractors 0.5.11 PR #1236
- Added stub_test option to TDTFiberPhotometryInterface PR #1242
- Added ThorImagingInterface for Thor TIFF files with OME metadata PR #1238
- Added
always_write_timestampsparameter to ExternalVideoInterface and InternalVideoInterface to force writing timestamps even when they are regular #1279
- Filter out warnings for missing timezone information in continuous integration PR #1240
FilePathTypeis deprecated, useFilePathfrom pydantic instead PR #1239- Change
np.NANtonp.nanto support numpy 2.0 PR #1245 - Re activate Plexon tests on Mac. Testing this for a while as they are unreliable tests PR #1195
- Testing: only run tests for oldest and newest versions of python PR #1249
- Improve error display on scan image interfaces PR #1246
- Added concurrency to live-service-testing GitHub Actions workflow to prevent simultaneous write to the dandiset. PR #1252
- Updated GitHub Actions workflows to use Environment Files instead of the deprecated
set-outputcommand PR #1259 - Propagate
verboseparameter from Converters to Interfaces PR #1253 - Replace uses of scipy load_mat and h5storage loadmat with pymat_reader read_mat in
CellExplorerSortingInterfacePR #1254 - Added camera device support for ExternalVideoInterface and InternalVideoInterface: PR #1282
- Fix parsing of group_names in
tools.spikeinterfacePR #1234
- Testing suite now supports numpy 2.0. PR #1235
- Interfaces and converters now have
verbose=Falseby default PR #1153 - Added
metadataandconversion_optionsas arguments toNWBConverter.temporally_align_data_interfacesPR #1162 - Deprecations in the ecephys pipeline: compression options, old iterator options, methods that did not end up in *to_nwbfile and the
get_schema_from_method_signaturefunction PR #1207 - Removed all deprecated functions from the roiextractors module:
add_fluorescence_traces,add_background_fluorescence_traces,add_summary_images,add_segmentation, andwrite_segmentationPR #1233
run_conversiondoes not longer trigger append mode whennwbfile_pathpoints to a faulty file PR #1180DatasetIOConfigurationnow recommendschunk_shape = (len(candidate_dataset),)for datasets with compound dtypes as used by hdmf >= 3.14.6. PR #1146OpenEphysBinaryRecordingInterfaceno longer stores analog data as anElectricalSeriesPR #1179
- Added
PlexonLFPInterfacefor converting PlexonFPl-Low Pass Filteredstream data PR #1209 - Added
ImageInterfacefor writing large collection of images to NWB and automatically map the images to the correct NWB data types PR #1190 - Fixed AudioInterface to properly handle 24-bit WAV files by disabling memory mapping for 24-bit files PR #1226
- Use the latest version of ndx-pose for
DeepLabCutInterfaceandLightningPoseDataInterfacePR #1128 - Added a first draft of
.clinerulesPR #1229 - Support for pynwb 3.0 PR #1231
- Support for hdmf 4.0 PR #1204
- Support for numpy 2.0 PR #1206
- Support Spikeinterface 0.102 PR #1194
- Simple writing no longer uses a context manager PR #1180
- Added Returns section to all getter docstrings PR #1185
- ElectricalSeries have better chunking defaults when data is passed as plain array PR #1184
- Ophys interfaces now call
get_metadataby default when no metadata is passed PR #1200 and PR #1232
- Temporary set a ceiling for hdmf to avoid a chunking bug PR #1175
- Add description to inter-sample-shift for
SpikeGLXRecordingInterfacePR #1177
get_json_schema_from_method_signaturenow throws a more informative error when an untyped parameter is passed #1157- Improve the naming of ElectrodeGroups in the
SpikeGLXRecordingInterfacewhen multi probes are present PR #1177 - Detect mismatch errors between group and group names when writing ElectrodeGroups PR #1165
- Fix metadata bug in
IntanRecordingInterfacewhere extra devices were added incorrectly if the recording contained multiple electrode groups or names #1166 - Source validation is no longer performed when initializing interfaces or converters PR #1168
- Removed use of
jsonschema.RefResolveras it will be deprecated from the jsonschema library PR #1133 - Completely removed compression settings from most placesPR #1126
- Completely removed compression settings from most places PR #1126
- Soft deprecation for
file_pathas an argument ofSpikeGLXNIDQInterfaceandSpikeGLXRecordingInterfacePR #1155 starting_timein RecordingInterfaces has given a soft deprecation in favor of time alignment methods PR #1158
- datetime objects now can be validated as conversion options PR #1139
- Make
NWBMetaDataEncoderpublic again PR #1142 - Fix a bug where data in
DeepLabCutInterfacefailed to write whenndx-posewas not imported. #1144 SpikeGLXConverterPipeconverter now accepts multi-probe structures with multi-trigger and does not assume a specific folder structure #1150SpikeGLXNIDQInterfaceis no longer written as an ElectricalSeries #1152- Fix a bug on ecephys interfaces where extra electrode group and devices were written if the property of the "group_name" was set in the recording extractor #1164
- Propagate the
unit_electrode_indicesargument from the spikeinterface tools toBaseSortingExtractorInterface. This allows users to map units to the electrode table when adding sorting data PR #1124 - Imaging interfaces have a new conversion option
always_write_timestampsthat can be used to force writing timestamps even if neuroconv's heuristics indicates regular sampling rate PR #1125 - Added .csv support to DeepLabCutInterface PR #1140
SpikeGLXRecordingInterfacenow also acceptsfolder_pathmaking its behavior equivalent to SpikeInterface #1150- Added the
rclone_transfer_batch_jobhelper function for executing Rclone data transfers in AWS Batch jobs. PR #1085 - Added the
deploy_neuroconv_batch_jobhelper function for deploying NeuroConv AWS Batch jobs. PR #1086 - YAML specification files now accepts an outer keyword
upload_to_dandiset="< six-digit ID >"to automatically upload the produced NWB files to the DANDI archive PR #1089 *SpikeGLXNIDQInterfacenow handdles digital demuxed channels (XD0) #1152
- Use mixing tests for ecephy's mocks PR #1136
- Use pytest format for dandi tests to avoid window permission error on teardown PR #1151
- Added many docstrings for public functions PR #1063
- Clean up warnings and deprecations in the testing framework for the ecephys pipeline PR #1158
- Enhance the typing of the signature on the
NWBConverterby adding zarr as a literal option on the backend and backend configuration PR #1160
- Using in-house
GenericDataChunkIteratorPR #1068 - Data interfaces now perform source (argument inputs) validation with the json schema PR #1020
- Improve the error message when writing a recording extractor with multiple offsets PR #1111
- Added
channels_to_skiptoEDFRecordingInterfaceso the user can skip non-neural channels PR #1110
- Remove dev test from PR PR #1092
- Run only the most basic testing while a PR is on draft PR #1082
- Test that zarr backend_configuration works in gin data tests PR #1094
- Consolidated weekly workflows into one workflow and added email notifications PR #1088
- Avoid running link test when the PR is on draft PR #1093
- Centralize gin data preparation in a github action PR #1095
- Fixed a setup bug introduced in
v0.6.2where installation process created a directory instead of a file for test configuration file PR #1070 - The method
get_extractornow works forMockImagingInterfacePR #1076 - Updated opencv version for security PR #1087
- Solved a bug of
PlexonRecordingInterfacewhere data with multiple streams could not be opened PR #989
- Added chunking/compression for string-only compound objects: PR #1042
- Added automated EFS volume creation and mounting to the
submit_aws_jobhelper function. PR #1018 - Added a mock for segmentation extractors interfaces in ophys:
MockSegmentationInterfacePR #1067 - Added a
MockSortingInterfacefor testing purposes. PR #1065 - BaseRecordingInterfaces have a new conversion options
always_write_timestampsthat can be used to force writing timestamps even if neuroconv heuristic indicates regular sampling rate PR #1091
- Testing on mac sillicon PR #1061
- Add writing to zarr test for to the test on data PR #1056
- Modified the CI to avoid running doctests twice PR #1077
- Consolidated daily workflows into one workflow and added email notifications PR #1081
- Added zarr tests for the test on data with checking equivalent backends PR #1083
- Fixed a bug where
IntanRecordingInterfaceadded two devices PR #1059 - Fix a bug in
add_sorting_to_nwbfilewhereunit_electrode_indiceswas only propagated ifwaveform_meanswas passed PR #1057
- The following classes and objects are now private
NWBMetaDataEncoder,NWBMetaDataEncoder,check_if_imaging_fits_into_memory,NoDatesSafeLoaderPR #1050
- Make
config_file_pathoptional inDeepLabCutInterfacePR #1031 - Added
get_stream_namestoOpenEphysRecordingInterface: PR #1039 - Most data interfaces and converters now use Pydantic to validate their inputs, including existence of file and folder paths. PR #1022
- All remaining data interfaces and converters now use Pydantic to validate their inputs, including existence of file and folder paths. PR #1055
- Using ruff to enforce existence of public classes' docstrings PR #1034
- Separated tests that use external data by modality PR #1049
- Added Unit Table descriptions for phy and kilosort: PR #1053
- Using ruff to enforce existence of public functions's docstrings PR #1062
- Improved device metadata of
IntanRecordingInterfaceby adding the type of controller used PR #1059
- Fixed the JSON schema inference warning on excluded fields; also improved error message reporting of which method triggered the error. PR #1037
- Deprecated
WaveformExtractorusage. PR #821 - Changed the
tools.spikeinterfacefunctions (e.g.add_recording,add_sorting) to have_to_nwbfileas suffix PR #1015 - Deprecated use of
compressionandcompression_optionsinVideoInterfacePR #1005 get_schema_from_method_signaturehas been deprecated; please useget_json_schema_from_method_signatureinstead. PR #1016neuroconv.utils.FilePathTypeandneuroconv.utils.FolderPathTypehave been deprecated; please usepydantic.FilePathandpydantic.DirectoryPathinstead. PR #1017- Changed the
tools.roiextractorsfunction (e.g.add_imagingandadd_segmentation) to have the_to_nwbfilesuffix PR #1017
- Added
MedPCInterfacefor operant behavioral output files. PR #883 - Support
SortingAnalyzerin theSpikeGLXConverterPipe. PR #821 - Added
TDTFiberPhotometryInterfacedata interface, for converting fiber photometry data from TDT file formats. PR #920 - Add argument to
add_electrodesthat grants fine control of what to do with the missing values. As a side effect this drops the implicit casting to int when writing int properties to the electrodes table PR #985 - Add Plexon2 support PR #918
- Converter working with multiple
VideoInterfaceinstances PR #914 - Added helper function
neuroconv.tools.data_transfers.submit_aws_batch_jobfor basic automated submission of AWS batch jobs. PR #384 - Data interfaces
run_conversionmethod now performs metadata validation before running the conversion. PR #949 - Introduced
null_values_for_propertiestoadd_units_tableto give user control over null values behavior PR #989
- Fixed the default naming of multiple electrical series in the
SpikeGLXConverterPipe. PR #957 - Write new properties to the electrode table use the global identifier channel_name, group PR #984
- Removed a bug where int64 was casted lossy to float PR #989
- The
OpenEphysBinaryRecordingInterfacenow useslxmlfor extracting the session start time from the settings.xml file and does not depend onpyopenephysanymore. PR #971 - Swap the majority of package setup and build steps to
pyproject.tomlinstead ofsetup.py. PR #955 - The
DeeplabcutInterfacenow skips inferring timestamps from movie when timestamps are specified, running faster. PR #967 - Improve metadata writing for SpikeGLX data interface. Added contact ids, shank ids and, remove references to shanks for neuropixels 1.0. Also deprecated the previous neuroconv exclusive property "electrode_shank_number` PR #986
- Add tqdm with warning to DeepLabCut interface PR #1006
BaseRecordingInterfacenow calls default metadata when metadata is not passing mimickingrun_conversionbehavior. PR #1012- Added
get_json_schema_from_method_signaturewhich constructs Pydantic models automatically from the signature of any function with typical annotation types used throughout NeuroConv. PR #1016 - Replaced all interface annotations with Pydantic types. PR #1017
- Changed typehint collections (e.g.
List) to standard collections (e.g.list). PR #1021 - Testing now is only one dataset per test PR #1026
- The usage of
compression_optionsdirectly through theneuroconv.tools.audiosubmodule is now deprecated - users should refer to the newconfigure_backendmethod for a general approach for setting compression. PR #939 - The usage of
compressionandcompression_optsdirectly through theFicTracDataInterfaceis now deprecated - users should refer to the newconfigure_backendmethod for a general approach for setting compression. PR #941 - The usage of
compressiondirectly through theneuroconv.tools.neosubmodule is now deprecated - users should refer to the newconfigure_backendmethod for a general approach for setting compression. PR #943 - The usage of
compression_optionsdirectly through theneuroconv.tools.ophyssubmodule is now deprecated - users should refer to the newconfigure_backendmethod for a general approach for setting compression. PR #940 - Removed the option of running
interface.run_conversionwithoutnwbfile_pathargument . PR #951
- Added docker image and tests for an automated Rclone configuration (with file stream passed via an environment variable). PR #902
- Fixed the conversion option schema of a
SpikeGLXConverterwhen used inside anotherNWBConverter. PR #922 - Fixed a case of the
NeuroScopeSortingExtractorwhen the optionalxml_file_pathis not specified. PR #926 - Fixed
Can't specify experiment type when converting .abf to .nwb with Neuroconv. PR #609 - Remove assumption that the ports of the Intan acquisition system correspond to electrode groupings in
IntanRecordingInterfacePR #933 - Add ValueError for empty metadata in
make_or_load_nwbfilewhen an nwbfile needs to be created PR #948
- Make annotations from the raw format available on
IntanRecordingInterface. PR #934 - Add an option to suppress display the progress bar (tqdm) in
VideoContextPR #937 - Automatic compression of data in the
LightnignPoseDataInterfacehas been disabled - users should refer to the newconfigure_backendmethod for a general approach for setting compression. PR #942 - Port over
dlc2nwbutility functions for ease of maintenance. PR #946
- Added a skip condition in
get_default_dataset_io_configurationsfor datasets with any zero-length axis in theirfull_shape. PR #894 - Added
packagingexplicitly to minimal requirements. PR #904 - Fixed bug when using
make_or_load_nwbfilewithoverwrite=Trueon an existing (but corrupt) HDF5 file. PR #911 - Change error trigger with warning trigger when adding both
OnePhotonSeriesandTwoPhotonSeriesto the same file (Issue #906). PR #907
- Propagated
photon_series_typetoBaseImagingExtractorInterfaceinit instead of passing it as an argument ofget_metadata()andget_metadata_schema(). PR #847 - Converter working with multiple VideoInterface instances PR 914
- Fixed bug causing overwrite of NWB GUIDE watermark. PR #890
- Removed
stream_idas an argument fromIntanRecordingInterface. PR #794 - The usage of
compressionandcompression_optsdirectly through theneuroconv.tools.spikeinterfacesubmodule are now deprecated - users should refer to the newconfigure_backendmethod for a general approach for setting compression. PR #805 - Dropped the testing of Python 3.8 on the CI. Dropped support for Python 3.8 in setup. PR #853
- Deprecated skip_features argument in
add_sorting. PR #872 - Deprecate old (v1) iterator from the ecephys pipeline. PR #876
- Added
backendcontrol to themake_or_load_nwbfilehelper method inneuroconv.tools.nwb_helpers. PR #800 - Released the first official Docker images for the package on the GitHub Container Repository (GHCR). PR #383
- Support "one-file-per-signal" and "one-file-per-channel" mode with
IntanRecordingInterface. PR #791 - Added
get_default_backend_configurationmethod to allDataInterfaceclasses. Also added HDF5backendcontrol to all standalone.run_conversion(...)methods for those interfaces. PR #801 - Added
get_default_backend_configurationmethod to allNWBConverterclasses. Also added HDF5backendcontrol to.run_conversion(...). PR #804 - Released the first official Docker images for the package on the GitHub Container Repository (GHCR). PR #383
- Added
ScanImageMultiFileImagingInterfacefor multi-file (buffered) ScanImage format and changedScanImageImagingInterfaceto be routing classes for single and multi-plane imaging. PR #809 - Added a function to generate ogen timestamps and data from onset times and parameters to
tools.optogenetics. PR #832 - Added
configure_and_write_nwbfileand optimized imports intools.nwb_helpersmodule. PR #848 configure_backendmay now apply aBackendConfigurationto equivalent in-memorypynwb.NWBFileobjects that have different address in RAM. PR #848- Add support for doubled ragged arrays in
add_units_tablePR #879 - Add support for doubled ragged arrays in
add_electrodesPR #881 - Propagate
ignore_integrity_checksfrom neo to IntanRecordingInterface PR #887
- Remove JSON Schema
definitionsfrom thepropertiesfield. PR #818 - Fixed writing waveforms directly to file. PR #799
- Avoid in-place modification of the metadata in the
VideoInterfaceand on neo tools. PR #814 - Replaced
waveform_extractor.is_extensionwithwaveform_extractor.has_extension. PR #799 - Fixed an issue with
set_aligned_starting_timefor allSortingInterface's that did not have an initial segment start set (and no recording attached). PR #823 - Fixed a bug with
parameterizedandpytest-xdist==3.6.1in theScanImageImagingInterfacetests. PR #829 - Added
XXandXOto the base metadata schema. PR #833 BaseImagingExtractor.add_to_nwbfile()is fixed in the case where metadata is not supplied. PR #849- Prevent
SpikeGLXConverterPipefrom setting false properties on the sub-SpikeGLXNIDQInterface. PR #860 - Fixed a bug when adding ragged arrays to the electrode and units table. PR #870
- Fixed a bug where
write_recordingwill call an empty nwbfile when passing a path. PR #877 - Fixed a bug that failed to properly include time alignment information in the output NWB file for objects added from any
RecordingInterfacein combination withstub_test=True. PR #884 - Fixed a bug that prevented passing
nwbfile=Noneand abackend_configurationtoNWBConverter.run_conversion. PR #885
- Added soft deprecation warning for removing
photon_series_typefromget_metadata()andget_metadata_schema()(in PR #847). PR #866 - Fixed docstrings related to backend configurations for various methods. PR #822
- Added automatic
backenddetection when abackend_configurationis passed to an interface or converter. PR #840 - Improve printing of bytes. PR #831
- Support for pathlib in source data schema validation. PR #854
- Use
ZoneInfoinstead ofdateutil.tzin the conversion gallery. PR #858 - Exposed
progress_bar_classto ecephys and ophys data iterators. PR #861 - Unified the signatures between
add_units,add_sortingandwrite_sorting. PR #875 - Improved descriptions of all folder and file paths in the source schema, useful for rendering in the GUIDE. PR #886
- Added watermark via
source_scriptfield ofNWBFilemetadata.source_script_file_nameis also required to be specified in this case to avoid invalidation. PR #888 - Remove parsing xml parsing from the
__init__ofBrukerTiffSinglePlaneImagingInterfacePR #895
- Add general test for metadata in-place modification by interfaces. PR #815
- Fixed writing the
electrodesfield inadd_electrical_serieswhen multiple groups are present. PR #784
- Upgraded Pydantic support to
>v2.0.0. PR #767 - Absorbed the
DatasetInfomodel into theDatasetIOConfigurationmodel. PR #767 - Keyword argument
field_nameof theDatasetIOConfiguration.from_neurodata_objectmethod has been renamed todataset_nameto be more consistent with its usage. This only affects direct initialization of the model; usage via theBackendConfigurationconstructor and its associated helper functions inneuroconv.tools.nwb_helpersis unaffected. PR #767 - Manual construction of a
DatasetIOConfigurationnow requires the fielddataset_name, and will be validated to match the final path oflocation_in_file. Usage via the automated constructors is unchanged. PR #767 - Enhance
get_schema_from_method_signatureto extract descriptions from the method docval. PR #771 - Avoid writing
channel_to_uVandoffset_to_uVinadd_electrodesPR #803 BaseSegmentationExtractorInterfacenow supports optional background plane segmentations and associated fluorescence traces PR #783
- Removed
.get_electrode_table_json()on theBaseRecordingExtractorInterfacein favor of GUIDE specific interactions. PR #431 - Removed the
SIPickleRecordingInterfaceandSIPickleSortingInterfaceinterfaces. PR #757 - Removed the
SpikeGLXLFPInterfaceinterface. PR #757
- LocalPathExpander matches only
folder_pathsorfile_pathsif that is indicated in the passed specification. PR #679 and [PR #675](#679 - Fixed depth consideration in partial chunking pattern for the ROI data buffer. PR #677
- Fix mapping between channel names and the electrode table when writing more than one
ElectricalSeriesto the NWBFile. This fixes an issue when the converter pipeline ofSpikeGLXConverterPipewas writing the electrode table region of the NIDQ stream incorrectly. PR #678 - Fix
configure_backendwhen applied toTimeSeriescontents that leverage internal links fordataortimestamps. PR #732
- Changed the
Suite2pSegmentationInterfaceto support multiple plane segmentation outputs. The interface now has aplane_nameandchannel_namearguments to determine which plane output and channel trace add to the NWBFile. PR #601 - Added
create_path_templateand corresponding tests PR #680 - Added tool function
configure_datasetsfor configuring all datasets of an in-memoryNWBFileto be backend specific. PR #571 - Added
LightningPoseConverterto add pose estimation data and the original and the optional labeled video added as ImageSeries to NWB. PR #633 - Added gain as a required
__init__argument forTdtRecordingInterface. PR #704 - Extract session_start_time from Plexon
plxrecording file. PR #723
nwbinspectorhas been removed as a minimal dependency. It becomes an extra (optional) dependency withneuroconv[dandi]. PR #672- Added a
from_nwbfileclass method constructor to allBackendConfigurationmodels. PR #673 - Added compression to
FicTracDataInterface. PR #678 - Exposed
block_indexto all OpenEphys interfaces. PR #695 - Added support for
DynamicTablecolumns in theconfigure_backendtool function. PR #700 - Refactored
ScanImagingInterfaceto reference ROIExtractors' version ofextract_extra_metadata. PR #731 - Added support for Long NHP probe types for the
SpikeGLXRecorddingInterfacce. PR #701 - Remove unnecessary duplication of probe setting in
SpikeGLXRecordingInterface. PR #696 - Added associated suffixes to all interfaces and converters. PR #734
- Added convenience function
get_format_summariestotools.importing(and exposed at highest level). PR #734
RecordingExtractorInterfaceTestMixinnow compares eithergroup_name,groupor a default value ofElectrodeGroupto thegroupproperty in theNWBRecordingExtractorinstead of comparinggrouptogroupas it was done before PR #736TestScanImageImagingInterfaceRecentnow checks metadata against new roiextractors implementation PR #741.- Removed editable installs from the CI workflow. PR #756
- Added Pydantic data models of
BackendConfigurationfor both HDF5 and Zarr datasets (container/mapper of all theDatasetConfigurations for a particular file). PR #568 - Changed the metadata schema for
FluorescenceandDfOverFwhere the traces metadata can be provided as a dict instead of a list of dicts. The name of the plane segmentation is used to determine which traces to add to theFluorescenceandDfOverFcontainers. PR #632 - Modify the filtering of traces to also filter out traces with empty values. PR #649
- Added tool function
get_default_dataset_configurationsfor identifying and collecting all fields of an in-memoryNWBFilethat could become datasets on disk; and return instances of the Pydantic dataset models filled with default values for chunking/buffering/compression. PR #569 - Added tool function
get_default_backend_configurationfor conveniently packaging the results ofget_default_dataset_configurationsinto an easy-to-modify mapping from locations of objects within the file to their correseponding dataset configuration options, as well as linking to a specific backend DataIO. PR #570 - Added
set_probe()method toBaseRecordingExtractorInterface. PR #639 - Changed default chunking of
ImagingExtractorDataChunkIteratorto selectchunk_shapeless than the chunk_mb threshold while keeping the original image size. The defaultchunk_mbchanged to 10MB. PR #667
- Fixed GenericDataChunkIterator (in hdmf.py) in the case where the number of dimensions is 1 and the size in bytes is greater than the threshold of 1 GB. PR #638
- Changed
np.floorandnp.produsage tomath.floorandmath.prodin various files. PR #638 - Updated minimal required version of DANDI CLI; updated
run_conversion_from_yamlAPI function and tests to be compatible with naming changes. PR #664
- Change metadata extraction library from
fparsetoparse. PR #654 - The
dandiCLI/API is now an optional dependency; it is still required to use thetoolfunction for automated upload as well as the YAML-based NeuroConv CLI. PR #655
- The
CEDRecordingInterfacehas now been removed; use theSpike2RecordingInterfaceinstead. PR #602
- Added support for python 3.12 PR #626
- Added
session_start_timeextraction toFicTracDataInterface. PR #598 - Added
imaging_plane_namekeyword argument toadd_imaging_planefunction to determine which imaging plane to add from the metadata by name instead ofimaging_plane_index. - Added reference for
imaging_planeto default plane segmentation metadata. PR #594 - Changed Compass container for Position container in the
FicTracDataInterface. PR #606 - Added option to write units in meters by providing a radius in
FicTracDataInterface. PR #606 - Added
parent_containerkeyword argument toadd_photon_seriesthat defines whether to add the photon series to acquisition or 'ophys' processing module. PR #587 - Added Pydantic data models of
DatasetInfo(immutable summary of core dataset values such as maximum shape and dtype) andDatasetConfigurationfor both HDF5 and Zarr datasets (the optional layer that specifies chunk/buffering/compression). PR #567 - Added alignment methods to
FicTracDataInterface. PR #607 - Added alignment methods support to
MockRecordingInterfacePR #611 - Added
NeuralynxNvtInterface, which can read position tracking NVT files. PR #580 - Adding radius as a conversion factor in
FicTracDataInterface. PR #619 - Coerce
FicTracDataInterfaceoriginal timestamps to start from 0. PR #619 - Added configuration metadata to
FicTracDataInterface. PR #618 - Expose number of jobs to
automatic_dandi_upload. PR #624 - Added
plane_segmentation_namekeyword argument to determine which plane segmentation to add from the metadata by name instead ofplane_segmentation_index.plane_segmentation_nameis exposed atBaseSegmentationExtractorInterface.add_to_nwbfile()function to support adding segmentation output from multiple planes. PR #623 - Added
SegmentationImagesto metadata_schema inBaseSegmentationExtractorInterfaceto allow for the modification of the name and description of Images container and description of the summary images. PR #622 - Default chunking pattern of RecordingInterfaces now attempts to use as many channels as possible up to 64 total, and fill with as much time as possible up to the
chunk_mb. This also required raising the lower HDMF version to 3.11.0 (which introduced 10 MB default chunk sizes). PR #630
- Remove
starting_timereset to default value (0.0) when adding the rate and updating thephoton_series_kwargsorroi_response_series_kwargs, inadd_photon_seriesoradd_fluorescence_traces. PR #595 - Changed the date parsing in
OpenEphysLegacyRecordingInterfacetodatetime.strptimewith the expected date format explicitly set to"%d-%b-%Y %H%M%S". PR #577 - Pin lower bound HDMF version to
3.10.0. PR #586
- Removed
use_timesandbuffer_sizefromadd_photon_series. PR #600
- Adds
MockImagingInterfaceas a general testing mechanism for ophys imaging interfaces PR #604.
DeepLabCutInterfacenow allows using custom timestamps viaset_aligned_timestampsmethod before running conversion. PR #531
- Reorganize timeintervals schema to reside in
schemas/dir to ensure its inclusion in package build. PR #573
- The
sonpypackage for the Spike2 interface no longer attempts installation on M1 Macs. PR #563 - Fixed
subset_sortingto explicitly castend_frameto int to avoid SpikeInterface frame slicing edge case. PR #565
- Exposed
es_keyargument to users where it was previously omitted onMaxOneRecordingInterface,OpenEphysLegacyRecordingInterface, andOpenEphysRecordingInterface. PR #542 - Added deepcopy for metadata in
make_nwbfile_from_metadata. PR #545 - Fixed edge case in
subset_sortingwhereend_framecould exceed recording length. PR #551 - Alter
add_electrodesbehavior, no error is thrown if a property is present in the metadata but not in the recording extractors. This allows the combination of recording objects that have different properties. PR #558
- Added converters for Bruker TIF format to support multiple streams of imaging data.
Added
BrukerTiffSinglePlaneConverterfor single plane imaging data which initializes aBrukerTiffSinglePlaneImagingInterfacefor each data stream. The available data streams can be checked byBrukerTiffSinglePlaneImagingInterface.get_streams(folder_path)method. AddedBrukerTiffMultiPlaneConverterfor volumetric imaging data withplane_separation_typeargument that defines whether to load the imaging planes as a volume ("contiguous") or separately ("disjoint"). The available data streams for the definedplane_separation_typecan be checked byBrukerTiffMultiPlaneImagingInterface.get_streams(folder_path, plane_separation_type)method. - Added FicTrac data interface. PR #517
- Added FicTrac to the conversion gallery and docs API. PR #560
- Propagated additional arguments, such as
cell_id, from themetadata["Icephys"]["Electrodes"]dictionary used intools.neo.add_icephys_electrode. PR #538 - Fixed mismatch between expected
Electrodeskey intools.neo.add_icephys_electrodeand the metadata automatically generated by theAbfInterface. PR #538
- Create separate
.add_to_nwbfilemethod for all DataInterfaces. This is effectively the previous.run_conversionmethod but limited to operations on an in-memorynwbfile: pynwb.NWBFile` object and does not handle any I/O. PR #455
-
Set gzip compression by default on spikeinterface based interfaces
run_conversion. PR #499 -
Temporarily disabled filtering for all-zero traces in
add_fluorescence_tracesas the current implementation is very slow for nearly all zero traces (e.g. suite2p deconvolved traces). PR #527
-
Added stream control with the
stream_nameargument to theNeuralynxRecordingExtractor. PR #369 -
Added a common
.temporally_align_data_interfacesmethod to theNWBConverterclass to use as a specification of the protocol for temporally aligning the data interfaces of the converter. PR #362 -
Added
CellExplorerRecordingInterfacefor adding data raw and lfp data from the CellExplorer format. CellExplorer's new format contains abasename.session.matfile containing rich metadata about the session which can be used to extract the recording information such as sampling frequency and type and channel metadata such as groups, location and brain area #488 -
CellExplorerSortingInterfacenow supports extracting sampling frequency from the new data format. CellExplorer's new format contains abasename.session.matfile containing rich metadata including the sorting sampling frequency PR #491 and PR #502 -
Added
MiniscopeBehaviorInterfacefor Miniscope behavioral data. The interface usesndx-miniscopeextension to add aMiniscopedevice with the behavioral camera metadata, and anImageSeriesin external mode that is linked to the device. PR #482CellExplorerSortingInterfacenow supports adding channel metadata to the nwbfile withwrite_ecephys_metadata=Trueas a conversion option PR #494
-
Added
MiniscopeImagingInterfacefor Miniscope imaging data stream. The interface usesndx-miniscopeextension to add aMiniscopedevice with the microscope device metadata, and the imaging data asOnePhotonSeries. PR #468 -
Added
MiniscopeConverterfor combining the conversion of Miniscope imaging and behavioral data streams. PR #498
-
Avoid redundant timestamp creation in
add_eletrical_seriesfor recording objects without time vector. PR #495 -
Avoid modifying the passed
metadatastructure viadeep_dict_updateinmake_nwbfile_from_metadata. PR #476
- Added gin test for
CellExplorerRecordingInterface. CellExplorer's new format contains abasename.session.matfile containing rich metadata about the session which can be used to extract the recording information such as sampling frequency and type and channel metadata such as groups, location and brain area #488.- Added gin test for
CellExplorerSortingInterface. CellExplorer's new format contains abasename.session.matfile containing rich metadata about the session which can be used to extract the recording information such as sampling frequency and type and channel metadata such as groups, location and brain area PR #494.
- Added gin test for
ExtractorInterfaceclasses now access their extractor with the classmethodcls.get_extractor()instead of the attributeself.Extractor. PR #324- The
spikeextractor_backendoption was removed for allRecordingExtractorInterfaceclasses. (PR #324, PR #309] - The
NeuroScopeMultiRecordingExtractorhas been removed. If your conversion required this, please submit an issue requesting instructions for how to implement it. PR #309 - The
SIPickleinterfaces have been removed. PR #309 - The previous conversion option
es_keyhas been moved to the__init__of allBaseRecordingExtractorInterfaceclasses. It is no longer possible to use this argument in therun_conversionmethod. PR #318 - Change
BaseDataInterface.get_conversion_options_schemafromclassmethodto object method. PR #353 - Removed
utils.json_schema.get_schema_for_NWBFileand moved base metadata schema to external json file. Added constraints to Subject metadata to match DANDI. PR #376 - Duplicate video file paths in the VideoInterface and AudioInterface are no longer silently resolved; please explicitly remove duplicates when initializing the interfaces. PR #403
- Duplicate audio file paths in the AudioInterface are no longer silently resolved; please explicitly remove duplicates when initializing the interfaces. PR #402
- The
OpenEphysRecordingInterfaceis now a wrapper forOpenEphysBinaryRecordingInterface. PR #294 - Swapped the backend for
CellExplorerSortingInterfacefromspikeextactorstospikeinterface. PR #267 - In the conversion YAML,
DataInterfaceclasses must now be specified as a dictionary instead of a list. PR #311 - In the conversion YAML, conversion_options can be specified on the global level. PR #312
- The
OpenEphysRecordingInterfacenow redirects to legacy or binary interface depending on the file format. It raises NotImplementedError until the interface for legacy format is added. PR #296 - Added the
OpenEphysLegacyRecordingInterfaceto support Open Ephys legacy format (.continuousfiles). PR #295 - Added
PlexonSortingInterfaceto support plexon spiking data. PR #316 - Changed
SpikeGLXRecordingInterfaceto accept either the AP or LF bands as file paths. Each will automatically set the corresepondinges_keyand corresponding metadata for each band or probe. PR #298 - The
OpenEphysRecordingInterfaceredirects toOpenEphysLegacyRecordingInterfacefor legacy format files instead of raising NotImplementedError. PR #349 - Added a
SpikeGLXConverterfor easy combination of multiple IMEC and NIDQ data streams. PR #292 - Added an
interfaces_by_categorylookup table toneuroconv.datainterfacesto make searching for interfaces by modality and format easier. PR #352 neuroconv.utils.jsonschema.get_schema_from_method_signaturecan now support theDict[str, str]typehint, which allowsDataInterface.__init__and.run_conversionto handle dictionary arguments. PR #360- Added
neuroconv.tools.testing.data_interface_mixinsmodule, which contains test suites for different types of DataInterfaces PR #357 - Added
keywordstoDataInterfaceclasses. PR #375 - Uses
open-cv-headlessinstead of open-cv, making the package lighter PR #387. - Adds
MockRecordingInterfaceas a general testing mechanism for ecephys interfaces PR #395. metadatareturned byDataInterface.get_metadata()is now aDeepDictobject, making it easier to add and adjust metadata. PR #404.- The
OpenEphysLegacyRecordingInterfaceis now extracts thesession_start_timeinget_metadata()fromNeo(OpenEphysRawIO) and does not depend onpyopenephysanymore. PR #410 - Added
expand_paths. PR #377 - Added basic temporal alignment methods to ecephys, ophys, and icephys DataInterfaces. These are
get_timestamps,align_starting_time,align_timestamps, andalign_by_interpolation. Added tests that serve as a first demonstration of the intended uses in a variety of cases. PR #237 PR #283 PR #400 - Added basic temporal alignment methods to the SLEAPInterface. Added holistic per-interface, per-method unit testing for ecephys and ophys interfaces. PR #401
- Added
expand_paths. PR #377, PR #448 - Added
.get_electrode_table_json()to theBaseRecordingExtractorInterfaceas a convenience helper for the GUIDE project. PR #431 - Added
BrukerTiffImagingInterfaceto support Bruker TIF imaging data. This format consists of individual TIFFs (each file contains a single frame) in OME-TIF format (.ome.tif files) and metadata in XML format (.xml file). PR #390 - Added
MicroManagerTiffImagingInterfaceto support Micro-Manager TIF imaging data. This format consists of multipage TIFFs in OME-TIF format (.ome.tif files) and configuration settings in JSON format ('DisplaySettings.json' file). PR #423 - Added a
TemporallyAlignedDataInterfacedefinition for convenience when creating a custom interface for pre-aligned data. PR #434 - Added
write_as,units_name,units_descriptiontoBaseSortingExtractorInterfacerun_conversionmethod to be able to modify them in conversion options. PR #438 - Added basic temporal alignment methods to the VideoInterface. These are
align_starting_timeis split intoalign_starting_times(list of times, one per video file) andalign_global_starting_time(shift all by a scalar amount).align_by_interpolationis not yet implemented for this interface. PR #283 - Added stream control for the
OpenEphysBinaryRecordingInterface. PR #445 - Added the
BaseTemporalAlignmentInterfaceto serve as the new base class for all new temporal alignment methods. PR #442 - Added direct imports for all base classes from the outer level; you may now call
from neuroconv import BaseDataInterface, BaseTemporalAlignmentInterface, BaseExtractorInterface. PR #442 - Added basic temporal alignment methods to the AudioInterface.
align_starting_timeis split intoalign_starting_times(list of times, one per audio file) andalign_global_starting_time(shift all by a scalar amount).align_by_interpolationand other timestamp-based approaches is not yet implemented for this interface. PR #402 - Changed the order of recording properties extraction in
NeuroscopeRecordingInterfaceandNeuroScopeLFPInterfaceto make them consistent with each other PR #466 - The
ScanImageImagingInterfacehas been updated to read metadata from more recent versions of ScanImage PR #457 - Refactored
add_two_photon_series()toadd_photon_series()and addedphoton_series_typeoptional argument which can be either"OnePhotonSeries"or"TwoPhotonSeries". Changedget_default_ophys_metadata()to addDeviceandImagingPlanemetadata which are both used by imaging and segmentation. Addedphoton_series_typetoget_nwb_imaging_metadata()to fill metadata forOnePhotonSeriesorTwoPhotonSeries. PR #462 - Split
align_timestampsandalign_starting_timesintoalign_segment_timestampsandalign_segment_starting_timesfor API consistency for multi-segmentRecordingInterfaces. PR #463 - Rename
align_timestampsandalign_segmentt_timestampsintoset_aligned_timestampsandset_aligned_segment_timestampsto more clearly indicate their usage and behavior. PR #470
- The tests for
automatic_dandi_uploadnow follow up-to-date DANDI validation rules for file name conventions. PR #310 - Deactivate
MaxOneRecordingInterfacemetadata tests [PR #371]((https://github.com/catalystneuro/neuroconv/pull/371) - Integrated the DataInterface testing mixin to the SLEAP Interface. PR #401
- Added holistic per-interface, per-method unit testing for ecephys and ophys interfaces. PR #283
- Live service tests now run in a separate non-required GitHub action. [PR #420]((https://github.com/catalystneuro/neuroconv/pull/420)
- Integrated the
DataInterfaceMixinclass of tests to theVideoInterface. PR #403 - Add
generate_path_expander_demo_ibland associated test forLocalPathExpanderPR #456 - Improved testing of all interface alignment methods via the new
TemporalAlignmentMixinclass. PR #459
BlackrockRecordingInterfacenow writes all ElectricalSeries to "acquisition" unless changed using thewrite_asflag inrun_conversion. PR #315- Excluding Python versions 3.8 and 3.9 for the
EdfRecordingInterfaceon M1 macs due to installation problems. PR #319 - Extend type array condition in
get_schema_from_hdmf_classfor dataset types (excludes that are DataIO). PR #418 - The
base_directoryargument to allPathExpanderclasses can now accept string inputs as well asPathinputs. PR #427 - Fixed the temporal alignment methods for the
RecordingInterfaceswhich has multiple segments. PR #411 - Fixes to the temporal alignment methods for the
SortingInterface, both single and multi-segment and recordingless. PR #413 - Fixes to the temporal alignment methods for the certain formats of the
RecordingInterface. PR #459 - Fixes the naming of LFP interfaces to be
ElectricalSeriesLFPinstead ofElectricalSeriesLF. PR #467 - Fixed an issue with incorrect modality-specific extra requirements being associated with certain behavioral formats. PR #469
- The instructions to build the documentation were moved to ReadTheDocs. PR #323
- Move testing instructions to ReadTheDocs. PR #320
- Moved NeuroConv catalogue from ReadMe.md to ReadTheDocs. PR #322
- Moved instructions to build the documentation from README.md to ReadTheDocs. PR #323
- Add
Spike2RecordingInterfaceto conversion gallery. PR #338 - Remove authors from module docstrings PR #354
- Add examples for
LocalPathExpanderusage PR #456 - Add better docstrings to the aux functions of the Neuroscope interface PR #485
- Change name from
CedRecordingInterfacetoSpike2RecordingInterface. PR #338
- Use
Literalin typehints (incompatible with Python<=3.8). PR #340 BaseDataInterface.get_source_schemamodified so it works for.__init__and.__new__. PR #374
- All usages of
use_timeshave been removed from spikeinterface tools and interfaces. The functionadd_electrical_seriesnow determines whether the timestamps of the spikeinterface recording extractor are uniform or not and automatically stores the data according to best practices PR #40 - Dropped Python 3.7 support. PR #237
- Added a tool for determining rising and falling frames from TTL signals (
parse_rising_frames_from_ttlandget_falling_frames_from_ttl). PR #244 - Added the
SpikeGLXNIDQInterfacefor reading data from.nidq.binfiles, as well as the ability to parse event times from specific channels via theget_event_starting_times_from_ttlmethod. Also included aneuroconv.tools.testing.MockSpikeGLXNIDQInterfacefor testing purposes. PR #247 - Improved handling of writing multiple probes to the same
NWBfile PR #255
- Added
DeprecationWarningsto allspikeextractorsbackends. PR #265 - Added
DeprecationWarnings forspikeextractorsobjects inneuroconv.tools.spikeinterface. PR #266
- Temporarily hotfixed the
tensorflowdependency after the release ofdeeplabcut==2.3.0. PR #268 - Fixed cleanup of waveform tests in SI tools. PR #277
- Fixed metadata structure for the CsvTimeIntervalsInterface, which was previously not passed validation in NWBConverters. PR #237
- Added propagation of the
load_sync_channelargument for theSpikeGLXNIDQInterface. PR #282 - Fixed the default
es_keyused by stand-alone write using anyRecordingExtractorInterfaceorLFPExtractorInterface. PR #288 - Fixed the default
ExtractorNameused to load the spikeinterface extractor of theSpikeGLXLFPInterface. PR #288
- Re-organized the
test_gin_ecephysfile by splitting into each sub-modality. PR #282 - Add testing support for Python 3.11. PR #234
- Remove
Path(path_to_save_nwbfile).is_file()from each of the gallery pages. PR #177 - Improve docstring for
SpikeGLXRecordingInterface. PR #226 - Correct typing of SpikeGLX in conversion gallery. PR #223
- Added tutorial for utilizing YAML metadata in a conversion pipeline. PR #240
- Added page in User Guide for how to use CSVs to specify metadata. PR #241
- Added the
BaseDataInterfacein the API docs. PR #242 - Fixed typo in styling section. PR #253
- Updated docs on JSON schema. PR #256
- Improved compliance with numpy-style docstring PR #260
- Added
AudioInterfacefor files inWAVformat using theadd_acoustic_waveform_seriesutility function fromtools/audioto write audio data to NWB. PR #196 - Added the
MaxOneRecordingInterfacefor writing data stored in MaxOne (.raw.h5) format. PR #222 - Added the
MCSRawRecordingInterfacefor writing data stored in MCSRaw (.raw) format. PR #220 - Added the
MEArecRecordingInterfacefor writing data stored in MEArec (structured .h5) format. PR #218 - Added the
AlphaOmegaRecordingInterfacefor writing data stored in AlphaOmega (folder of .mrx) format. PR #212 - Added the
PlexonRecordingInterfacefor writing data stored in Plexon (.plx) format. PR #206 - Added the
BiocamRecordingInterfacefor writing data stored in Biocam (.bwr) format. PR #210 - Added function to add acoustic series as
AcousticWaveformSeriesobject as acquisition or stimulus to NWB. PR #201 - Added new form to the GitHub repo for requesting support for new formats. PR #207
- Simplified the writing of
channel_conversionduringadd_electrical_seriesif the vector of gains is uniform; in this case, they are now combined into the scalarconversionvalue. PR #218 - Implement timestamp extraction from videos for the SLEAPInterface PR #238
- Prevented writing of default values for optional columns on the
ElectrodeTable. PR #219 - Add interfaces for Excel and Csv time intervals tables. PR #252
- Added a
session_idto the test file for theautomatic_dandi_uploadhelper function. PR #199 pre-commitversion bump. PR #235- Added a
testingsub-module tosrcand added a method (generate_mock_ttl_signal) for generating synthetic TTL pulses. PR #245
VideoInterface. Only raise a warning if the difference between the rate estimated from timestamps and the fps (frames per seconds) is larger than two decimals. PR #200- Fixed the bug in a
VideoInterfacewhere it would useDataChunkIteratoreven if the conversion options indicated that it should not. PR #200 - Update usage requirements for HDMF to prevent a buffer overflow issue fixed in hdmf-dev/hdmf#780. PR #195
- Remove the deprecated
distutils.versionin favor ofpackaging.versionPR #233
- Added a set of dev branch gallery tests for PyNWB, HDMF, SI, and NEO. PR #113
- Added tests for the
TypeErrorandValueErrorraising for the newstarting_framesargument ofMovieDataInterface.run_conversion(). PR #113 - Added workflow for automatic detection of CHANGELOG.md updates for PRs. PR #187
- Added support for python 3.10 PR #229
- Fixed a new docval typing error that arose in
hdmf>3.4.6versions. PR #113 - Fixed a new input argument issue for
starting_frameswhen usingexternal_filefor anImageSeriesinpynwb>2.1.0versions. PR #113 - Fixed issues regarding interaction between metadata rate values and extractor rate values in
tools.roiextractors. PR #159 - Fixed sampling frequency resolution issue when detecting this from timestamps in
roiextractors.write_imagingandroiextractors.write_segmentation. PR #159
- Added a note in User Guide/DataInterfaces to help installing custom dependencies for users who use Z-shell (
zsh). PR #180 - Added
MovieInterfaceexample in the conversion gallery. PR #183
- Added
ConverterPipe, a class that allows chaining previously initialized interfaces for batch conversion and corresponding tests PR #169 - Added automatic extraction of metadata for
NeuralynxRecordingInterfaceincluding filtering information for channels, device and recording time information PR #170 - Added stubbing capabilities to timestamp extraction in the
MovieInterfaceavoiding scanning through the whole file whenstub_test=TruePR #181 - Added a flag
include_roi_acceptancetotools.roiextractors.write_segmentationand corresponding interfaces to allow disabling the addition of boolean columns indicating ROI acceptance. PR #193 - Added
write_waveforms()function intools.spikeinterfaceto writeWaveformExtractorobjects PR #217
- Replaced the
MovieInterfacewithVideoInterfaceand introduced deprecation warnings for the former. PR #74
- Updated
BlackrockRecordingInterfaceto support multi stream file and added gin corresponding gin tests PR #176
- All built-in DataInterfaces are now nested under the
neuroconv.datainterfacesimport structure - they are no longer available from the outer level. To import a data interface, use the syntaxfrom neuroconv.datainterfaces import <name of interface>. PR #74 - The
AxonaRecordingExtractorInterfacehas been renamed toAxonaRecordingInterface. PR #74 - The
AxonaUnitRecordingExtractorInterfacehas been renamed toAxonaUnitRecordingInterface. PR #74 - The
BlackrockRecordingExtractorInterfacehas been renamed toBlackrockRecordingInterface. PR #74 - The
BlackrockSortingExtractorInterfacehas been renamed toBlackrockSortingInterface. PR #74 - The
OpenEphysRecordingExtractorInterfacehas been renamed toOpenEphysRecordingInterface. PR #74 - The
OpenEphysSortingExtractorInterfacehas been renamed toOpenEphysSortingInterface. PR #74 - The
KilosortSortingInterfacehas been renamed toKiloSortSortingInterfaceto be more consistent with SpikeInterface. PR #107 - The
Neuroscopeinterfaces have been renamed toNeuroScopeto be more consistent with SpikeInterface. PR #107 - The
tools.roiextractors.add_epochfunctionality has been retired in the newest versions of ROIExtractors. PR #112 - Removed deprecation warnings for
save_pathargument (which is nownwbfile_patheverywhere in the package). PR #124 - Changed default device name for the ecephys pipeline. Device_ecephys -> DeviceEcephys PR #154
- Change names of written electrical series on the ecephys pipeline. ElectricalSeries_raw -> ElectricalSeriesRaw, ElectricalSeries_processed -> ElectricalSeriesProcessed, ElectricalSeries_lfp -> ElectricalSeriesLFP PR #153
- Drop spikeextractor backend support for NeuralynxRecordingInterface PR #174
- Prevented the CEDRecordingInterface from writing non-ecephys channel data. PR #37
- Fixed description in
write_sortingand inadd_units_tableto have "neuroconv" in the description. PR #104 - Updated
spikeinterfaceversion number to 0.95.1 to fix issue withSpikeGLXInterfaceprobe annotations. The issue is described here. PR #132
- Unified the
run_conversionmethod ofBaseSegmentationExtractorInterfacewith that of all the other base interfaces. The methodwrite_segmentationnow uses the commonmake_or_load_nwbfilecontext manager PR #29 - Coerced the recording extractors with
spikeextractors_backend=Trueto BaseRecording objects for Axona, Blackrock, Openephys, and SpikeGadgets. PR #38 - Added function to add PlaneSegmentation objects to an nwbfile in
roiextractorsand corresponding unit tests. PR #23 use_timesargument to be deprecated on the ecephys pipeline. The functionadd_electrical_seriesnow determines whether the timestamps of the spikeinterface recording extractor are uniform or not and automatically stores the data according to best practices PR #40- Add
NWBFilemetadata key at the level of the base data interface so it can always be inherited to be available. PR #51. - Added spikeinterface support to Axona LFP and coerece gin tests for LFP to be spikeinterface objects PR #85
- Added function to add fluorescence traces to an nwbfile in
roiextractorsand corresponding unit tests. The df over f traces are now added to aDfOverFcontainer instead of theFluorescencecontainer. The metadata schema has been changed for theBaseSegmentationExtractorInterfaceto allow metadata forDfOverF, andFlurorescenceis now not required in the metadata schema. PR #41 - Improved default values of OpticalChannel object names and other descriptions for Imaging data. PR #88
- Extended the
ImagingDataChunkIteratorto be compatible with volumetric data. PR #90 - Integrated the
ImagingDataChunkIteratorwith thewrite_imagingmethods. PR #90 - Began work towards making SpikeInterface, SpikeExtractors, and ROIExtractors all non-minimal dependencies. PR #74
- Implemented format-wise and modality-wise extra installation requirements. If there are any requirements to use a module or data interface, these are defined in individual requirements files at the corresponding level of the package. These are in turn easily accessible from the commands
pip install neuroconv[format_name].pip install neuroconv[modality_name]will also install all dependencies necessary to make full use of any interfaces from that modality. PR #100 - Added frame stubbing to the
BaseSegmentationExtractorInterface. PR #116 - Added
mask_type: strandinclude_roi_centroids: boolto theadd_plane_segmentationhelper andwrite_segmentationfunctions for thetools.roiextractorssubmodule. PR #117 - Propagate
output_struct_nameargument toExtractSegmentationInterfaceto match its extractor arguments. PR #128 - Added compression and iteration (with options control) to all Fluorescence traces in
write_segmentation. PR #120 - For irregular recordings, timestamps can now be saved along with all traces in
write_segmentation. PR #130 - Added
mask_typeargument totools.roiextractors.add_plane_segmentationfunction and all upstream calls. This allows users to request writing not just the image_masks (still the default) but also pixels, voxels orNoneof the above. PR #119 utils.json_schema.get_schema_from_method_signaturenow allowsOptional[...]annotation typing and subsequentNonevalues during validation as long as it is still only applied to a simple non-conflicting type (noOptional[Union[..., ...]]). PR #119
- Unified the documentation of NeuroConv structure in the User Guide readthedocs. PR #39
- Added package for viewing source code in the neuroconv documentation PR #62
- Added Contributing guide for the Developer section of readthedocs. PR #73
- Added style guide to the readthedocs PR #28
- Added ABF data conversion tutorial @luiztauffer PR #89
- Added Icephys API documentation @luiztauffer PR #103
- Added Blackrock sorting conversion gallery example PR #134
- Extended the User Guide Get metadata section in DataInterfaces with a demonstration for loading metadata from YAML. PR #144
- Fixed a redundancy in PR #144 and API links. PR #154
- Added SLEAP conversion gallery example PR #161
- Added conversion interface for Neuralynx sorting data together with gin data test and a conversion example in the gallery. PR #58
- Added conversion interface for DeepLabCut data together with gin data test and a conversion example in the gallery. PR #24
- Allow writing of offsets to ElectricalSeries objects from SpikeInterface (requires PyNWB>=2.1.0). PR #37
- Added conversion interface for EDF (European Data Format) data together with corresponding unit tests and a conversion example in the gallery. PR #45
- Created ImagingExtractorDataChunkIterator, a data chunk iterator for
ImagingExtractorobjects. PR #54 - Added support for writing spikeinterface recording extractor with multiple segments and corresponding unit test PR #67
- Added spikeinterface support to the Axona data interface PR #61
- Added new util function
get_packagefor safely attempting to attempt a package import and informatively notifying the user of how to perform the installation otherwise. PR #74 - All built-in DataInterfaces now load their external dependencies on-demand at time of object initialization instead of on package or interface import. PR #74
- Adde spikeinterface support for Blackrock sorting interfacePR #134
- Added conversion interface for TDT recording data together with gin data test. PR #135
- Added conversion interface for SLEAP pose estimation data together with gin test for data. PR #160
- Added unittests for correctly writing the scaling factors to the nwbfile in the
add_electrical_seriesfunction of the spikeinterface module. PR #37 - Added unittest for compression options in the
add_electrical_seriesfunction of the spikeinterface module. PR #64 - Added unittests for chunking in the
add_electrical_seriesfunction of the spikeinterface module. PR #84 - Tests are now organized according to modality-wise lazy installations. PR #100
- Fixed the behavior of the
file_pathsusage in the MovieInterface when run via the YAML conversion specification. PR #33
- Added function to add ImagingPlane objects to an nwbfile in
roiextractorsand corresponding unit tests. PR #19 - Added function to add summary images from a
SegmentationExtractorobject to an nwbfile in the roiextractors module and corresponding unit tests PR #22 - Small improvements on ABFInterface @luiztauffer PR #89
- Add non-iterative writing capabilities to
add_electrical_series. PR #32
- Added unittests for the
write_asfunctionality in theadd_electrical_seriesof the spikeinterface module. PR #32
- The first release of NeuroConv.