Releases: catalystneuro/neuroconv
v0.4.8
v0.4.8 (March 20, 2024)
Bug fixes
- Fixed writing the
electrodes
field inadd_electrical_series
when multiple groups are present. PR #784
Improvements
- Upgraded Pydantic support to
>v2.0.0
. PR #767 - Absorbed the
DatasetInfo
model into theDatasetIOConfiguration
model. PR #767 - Keyword argument
field_name
of theDatasetIOConfiguration.from_neurodata_object
method has been renamed todataset_name
to be more consistent with its usage. This only affects direct initialization of the model; usage via theBackendConfiguration
constructor and its associated helper functions inneuroconv.tools.nwb_helpers
is unaffected. PR #767 - Manual construction of a
DatasetIOConfiguration
now 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_signature
to extract descriptions from the method docval. PR #771
v0.4.7
v0.4.7 (February 21, 2024)
Deprecation
- Removed
.get_electrode_table_json()
on theBaseRecordingExtractorInterface
in favor of GUIDE specific interactions. PR #431 - Removed the
SIPickleRecordingInterface
andSIPickleSortingInterface
interfaces. PR #757 - Removed the
SpikeGLXLFPInterface
interface. PR #757
Bug fixes
- LocalPathExpander matches only
folder_paths
orfile_paths
if 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
ElectricalSeries
to the NWBFile. This fixes an issue when the converter pipeline ofSpikeGLXConverterPipe
was writing the electrode table region of the NIDQ stream incorrectly. PR #678 - Fix
configure_backend
when applied toTimeSeries
contents that leverage internal links fordata
ortimestamps
. PR #732
Features
- Changed the
Suite2pSegmentationInterface
to support multiple plane segmentation outputs. The interface now has aplane_name
andchannel_name
arguments to determine which plane output and channel trace add to the NWBFile. PR #601 - Added
create_path_template
and corresponding tests PR #680 - Added tool function
configure_datasets
for configuring all datasets of an in-memoryNWBFile
to be backend specific. PR #571 - Added
LightningPoseConverter
to 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 plx recording file. PR #723
Improvements
nwbinspector
has been removed as a minimal dependency. It becomes an extra (optional) dependency withneuroconv[dandi]
. PR #672- Added a
from_nwbfile
class method constructor to allBackendConfiguration
models. PR #673 - Added compression to
FicTracDataInterface
. PR #678 - Exposed
block_index
to all OpenEphys interfaces. PR #695 - Added support for
DynamicTable
columns in theconfigure_backend
tool function. PR #700 - Refactored
ScanImagingInterface
to 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_summaries
totools.importing
(and exposed at highest level). PR #734
Testing
RecordingExtractorInterfaceTestMixin
now compares eithergroup_name
,group
or a default value ofElectrodeGroup
to thegroup
property in theNWBRecordingExtractor
instead of comparinggroup
togroup
as it was done before PR #736TestScanImageImagingInterfaceRecent
now checks metadata against new roiextractors implementation PR #741.
v0.4.6
v0.4.6
Back-compatability break
- Changed the metadata schema for
Fluorescence
andDfOverF
where the traces metadata should 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 theFluorescence
andDfOverF
containers. PR #632
Features
- Added Pydantic data models of
BackendConfiguration
for both HDF5 and Zarr datasets (container/mapper of all theDatasetConfiguration
s for a particular file). PR #568 - Modify the filtering of traces to also filter out traces with empty values. PR #649
- Added tool function
get_default_dataset_configurations
for identifying and collecting all fields of an in-memoryNWBFile
that 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_configuration
for conveniently packaging the results ofget_default_dataset_configurations
into 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
Fixes
- 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.floor
andnp.prod
usage tomath.floor
andmath.prod
in various files. PR #638 - Updated minimal required version of DANDI CLI; updated
run_conversion_from_yaml
API function and tests to be compatible with naming changes. PR #664
Improvements
v0.4.5
v0.4.5
Back-compatibility break
- The
CEDRecordingInterface
has now been removed; use theSpike2RecordingInterface
instead. PR #602
Features
- Added
session_start_time
extraction toFicTracDataInterface
. PR #598 - Added
imaging_plane_name
keyword argument toadd_imaging_plane
function to determine which imaging plane to add from the metadata by name instead ofimaging_plane_index
. - Added reference for
imaging_plane
to 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_container
keyword argument toadd_photon_series
that 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) andDatasetConfiguration
for 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
MockRecordingInterface
PR #611 - Added
NeuralynxNvtInterface
, which can read position tracking NVT files. PR #580 - Adding radius as a conversion factor in
FicTracDataInterface
. PR #619 - Coerce
FicTracDataInterface
original 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_name
keyword argument to determine which plane segmentation to add from the metadata by name instead ofplane_segmentation_index
.
plane_segmentation_name
is exposed atBaseSegmentationExtractorInterface.add_to_nwbfile()
function to support adding segmentation output from multiple planes. PR #623 - Added
SegmentationImages
to metadata_schema inBaseSegmentationExtractorInterface
to 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
Fixes
- Remove
starting_time
reset to default value (0.0) when adding the rate and updating thephoton_series_kwargs
orroi_response_series_kwargs
, inadd_photon_series
oradd_fluorescence_traces
. PR #595 - Changed the date parsing in
OpenEphysLegacyRecordingInterface
todatetime.strptime
with 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
Deprecation
- Removed
use_times
andbuffer_size
fromadd_photon_series
. PR #600
Testing
- Adds
MockImagingInterface
as a general testing mechanism for ophys imaging interfaces PR #604.
v0.4.4
v0.4.3
v0.4.2
v0.4.2
Fixes
- Exposed
es_key
argument 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_sorting
whereend_frame
could exceed recording length. PR #551 - Alter
add_electrodes
behavior, 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
Features
- Added converters for Bruker TIF format to support multiple streams of imaging data.
AddedBrukerTiffSinglePlaneConverter
for single plane imaging data which initializes aBrukerTiffSinglePlaneImagingInterface
for each data stream.
The available data streams can be checked byBrukerTiffSinglePlaneImagingInterface.get_streams(folder_path)
method.
AddedBrukerTiffMultiPlaneConverter
for volumetric imaging data withplane_separation_type
argument that defines
whether to load the imaging planes as a volume ("contiguous"
) or separately ("disjoint"
).
The available data streams for the definedplane_separation_type
can be checked byBrukerTiffMultiPlaneImagingInterface.get_streams(folder_path, plane_separation_type)
method. - Added FicTrac data interface. PR #517
Documentation and tutorial enhancements
- Added FicTrac to the conversion gallery and docs API. PR #560
v0.4.1
v0.4.1
Fixes
- Propagated additional arguments, such as
cell_id
, from themetadata["Icephys"]["Electrodes"]
dictionary used intools.neo.add_icephys_electrode
. PR #538 - Fixed mismatch between expected
Electrodes
key intools.neo.add_icephys_electrode
and the metadata automatically generated by theAbfInterface
. PR #538
v0.4.0
v0.4.0
Back-compatibility break
- Created separate
.add_to_nwbfile
method for all DataInterfaces. This is effectively the previous.run_conversion
method but limited to operations on an in-memorynwbfile
: pynwb.NWBFile` object and does not handle any I/O. PR #455
Fixes
- Set gzip compression by default on spikeinterface based interfaces
run_conversion
. PR #499
Features
-
Added stream control with the
stream_name
argument to theNeuralynxRecordingExtractor
. PR #369 -
Added a common
.temporally_align_data_interfaces
method to theNWBConverter
class to use as a specification of the protocol for temporally aligning the data interfaces of the converter. PR #362 -
Added
CellExplorerRecordingInterface
for adding data raw and lfp data from the CellExplorer format. CellExplorer's new format contains abasename.session.mat
file 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 -
CellExplorerSortingInterface
now supports extracting sampling frequency from the new data format. CellExplorer's new format contains abasename.session.mat
file containing
rich metadata including the sorting sampling frequency PR #491 and PR #502 -
Added
MiniscopeBehaviorInterface
for Miniscope behavioral data. The interface usesndx-miniscope
extension to add aMiniscope
device with the behavioral camera metadata,
and anImageSeries
in external mode that is linked to the device. PR #482CellExplorerSortingInterface
now supports adding channel metadata to the nwbfile withwrite_ecephys_metadata=True
as a conversion option PR #494
-
Added
MiniscopeImagingInterface
for Miniscope imaging data stream. The interface usesndx-miniscope
extension to add aMiniscope
device with the microscope device metadata,
and the imaging data asOnePhotonSeries
. PR #468 -
Added
MiniscopeConverter
for combining the conversion of Miniscope imaging and behavioral data streams. PR #498
Improvements
-
Avoid redundant timestamp creation in
add_eletrical_series
for recording objects without time vector. PR #495 -
Avoid modifying the passed
metadata
structure viadeep_dict_update
inmake_nwbfile_from_metadata
. PR #476
Testing
- Added gin test for
CellExplorerRecordingInterface
. CellExplorer's new format contains abasename.session.mat
file 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.mat
file 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
v0.3.0
v0.3.0
Back-compatibility break
ExtractorInterface
classes now access their extractor with the classmethodcls.get_extractor()
instead of the attributeself.Extractor
. PR #324- The
spikeextractor_backend
option was removed for allRecordingExtractorInterface
classes. (PR #324, PR #309] - The
NeuroScopeMultiRecordingExtractor
has been removed. If your conversion required this, please submit an issue requesting instructions for how to implement it. PR #309 - The
SIPickle
interfaces have been removed. PR #309 - The previous conversion option
es_key
has been moved to the__init__
of allBaseRecordingExtractorInterface
classes. It is no longer possible to use this argument in therun_conversion
method. PR #318 - Change
BaseDataInterface.get_conversion_options_schema
fromclassmethod
to object method. PR #353 - Removed
utils.json_schema.get_schema_for_NWBFile
and 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
Features
- The
OpenEphysRecordingInterface
is now a wrapper forOpenEphysBinaryRecordingInterface
. PR #294 - Swapped the backend for
CellExplorerSortingInterface
fromspikeextactors
tospikeinterface
. PR #267 - In the conversion YAML,
DataInterface
classes 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
OpenEphysRecordingInterface
now 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
OpenEphysLegacyRecordingInterface
to support Open Ephys legacy format (.continuous
files). PR #295 - Added
PlexonSortingInterface
to support plexon spiking data. PR #316 - Changed
SpikeGLXRecordingInterface
to accept either the AP or LF bands as file paths. Each will automatically set the corresepondinges_key
and corresponding metadata for each band or probe. PR #298 - The
OpenEphysRecordingInterface
redirects toOpenEphysLegacyRecordingInterface
for legacy format files instead of raising NotImplementedError. PR #349 - Added a
SpikeGLXConverter
for easy combination of multiple IMEC and NIDQ data streams. PR #292 - Added an
interfaces_by_category
lookup table toneuroconv.datainterfaces
to make searching for interfaces by modality and format easier. PR #352 neuroconv.utils.jsonschema.get_schema_from_method_signature
can now support theDict[str, str]
typehint, which allowsDataInterface.__init__
and.run_conversion
to handle dictionary arguments. PR #360- Added
neuroconv.tools.testing.data_interface_mixins
module, which contains test suites for different types of
DataInterfaces PR #357 - Added
keywords
toDataInterface
classes. PR #375 - Uses
open-cv-headless
instead of open-cv, making the package lighter PR #387. - Adds
MockRecordingInterface
as a general testing mechanism for ecephys interfaces PR #395. metadata
returned byDataInterface.get_metadata()
is now aDeepDict
object, making it easier to add and adjust metadata. PR #404.- The
OpenEphysLegacyRecordingInterface
is now extracts thesession_start_time
inget_metadata()
fromNeo
(OpenEphysRawIO
) and does not depend onpyopenephys
anymore. 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 theBaseRecordingExtractorInterface
as a convenience helper for the GUIDE project. PR #431 - Added
BrukerTiffImagingInterface
to 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
MicroManagerTiffImagingInterface
to 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
TemporallyAlignedDataInterface
definition for convenience when creating a custom interface for pre-aligned data. PR #434 - Added
write_as
,units_name
,units_description
toBaseSortingExtractorInterface
run_conversion
method to be able to modify them in conversion options. PR #438 - Added basic temporal alignment methods to the VideoInterface. These are
align_starting_time
is split intoalign_starting_times
(list of times, one per video file) andalign_global_starting_time
(shift all by a scalar amount).align_by_interpolation
is not yet implemented for this interface. PR #283 - Added stream control for the
OpenEphysBinaryRecordingInterface
. PR #445 - Added the
BaseTemporalAlignmentInterface
to 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_time
is split intoalign_starting_times
(list of times, one per audio file) andalign_global_starting_time
(shift all by a scalar amount).align_by_interpolation
and other timestamp-based approaches is not yet implemented for this interface. PR #402 - Changed the order of recording properties extraction in
NeuroscopeRecordingInterface
andNeuroScopeLFPInterface
to make them consistent with each other PR #466 - The
ScanImageImagingInterface
has been updated to read metadata from more recent versions of ScanImage PR #457 - Refactored
add_two_photon_series()
toadd_photon_series()
and addedphoton_series_type
optional argument which can be either"OnePhotonSeries"
or"TwoPhotonSeries"
.
Changedget_default_ophys_metadata()
to addDevice
andImagingPlane
metadata which are both used by imaging and segmentation.
Addedphoton_series_type
toget_nwb_imaging_metadata()
to fill metadata forOnePhotonSeries
orTwoPhotonSeries
. PR #462 - Split
align_timestamps
andalign_starting_times
intoalign_segment_timestamps
andalign_segment_starting_times
for API consistency for multi-segmentRecordingInterface
s. PR #463 - Rename
align_timestamps
andalign_segmentt_timestamps
intoset_aligned_timestamps
andset_aligned_segment_timestamps
to more clearly indicate...