Releases: catalystneuro/neuroconv
Releases · catalystneuro/neuroconv
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...
v0.2.4
v0.2.4
Deprecation
- All usages of
use_times
have been removed from spikeinterface tools and interfaces. The functionadd_electrical_series
now determines whether the timestamps of the spikeinterface recording extractor are uniform or not and automatically stores the data according to best practices PR #40
Features
- Added a tool for determining rising and falling frames from TTL signals (
parse_rising_frames_from_ttl
andget_falling_frames_from_ttl
). PR #244 - Added the
SpikeGLXNIDQInterface
for reading data from.nidq.bin
files, as well as the ability to parse event times from specific channels via theget_event_starting_times_from_ttl
method. Also included aneuroconv.tools.testing.MockSpikeGLXNIDQInterface
for testing purposes. PR #247 - Improved handling of writing multiple probes to the same
NWB
file PR #255
Pending deprecation
- Added
DeprecationWarnings
to allspikeextractors
backends. PR #265 - Added
DeprecationWarning
s forspikeextractors
objects inneuroconv.tools.spikeinterface
. PR #266
Fixes
- Temporarily hotfixed the
tensorflow
dependency after the release ofdeeplabcut==2.3.0
. PR #268 - Fixed cleanup of waveform tests in SI tools. PR #277
- Added propagation of the
load_sync_channel
argument for theSpikeGLXNIDQInterface
. PR #282 - Fixed the default
es_key
used by stand-alone write using anyRecordingExtractorInterface
orLFPExtractorInterface
. PR #288 - Fixed the default
ExtractorName
used to load the spikeinterface extractor of theSpikeGLXLFPInterface
. PR #288
Testing
- Re-organized the
test_gin_ecephys
file by splitting into each sub-modality. PR #282
v0.2.3
v0.2.3
Documentation and tutorial enhancements
- 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 specifiy metadata. PR #241
- Added the
BaseDataInterface
in the API docs. PR #242 - Fixed type in styling section. PR #253
Features
- Added
AudioInterface
for files inWAV
format using theadd_acoustic_waveform_series
utility function
fromtools/audio
to write audio data to NWB. PR #196 - Added the
MCSRaw
for writing data stored in MCSRaw (.raw) format. PR #220 - Added the
MEArecRecordingInterface
for writing data stored in MEArec (structured .h5) format. PR #218 - Added the
AlphaOmegaRecordingInterface
for writing data stored in AlphaOmega (folder of .mrx) format. PR #212 - Added the
PlexonRecordingInterface
for writing data stored in Plexon (.plx) format. PR #206 - Added the
BiocamRecordingInterface
for writing data stored in Biocam (.bwr) format. PR #210 - Added function to add acoustic series as
AcousticWaveformSeries
object 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_conversion
duringadd_electrical_series
if the vector of gains is uniform; in this case, they are now combined into the scalarconversion
value. 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
Testing
- Added a
session_id
to the test file for theautomatic_dandi_upload
helper function. PR #199 pre-commit
version bump. PR #235
Fixes
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
VideoInterface
where it would useDataChunkIterator
even if the conversion options indicated that it should not. PR #200 - Update usage requirements for HDMF to prevent a buffer overflow isssue fixed in hdmf-dev/hdmf#780. PR #195
- Remove the deprecated
distutils.version
in favor ofpackaging.version
PR #233
v0.2.2
v0.2.2
Testing
- Added a set of dev branch gallery tests for PyNWB, HDMF, SI, and NEO. PR #113
- Added tests for the
TypeError
andValueError
raising for the newstarting_frames
argument 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
Fixes
- Fixed a new docval typing error that arose in
hdmf>3.4.6
versions. PR #113 - Fixed a new input argument issue for
starting_frames
when usingexternal_file
for anImageSeries
inpynwb>2.1.0
versions. 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_imaging
androiextractors.write_segmentation
. PR #159
Documentation and tutorial enhancements
- Added a note in User Guide/DataInterfaces to help installing custom dependencies for users who use Z-shell (
zsh
). PR #180 - Added
MovieInterface
example in the conversion gallery. PR #183
Features
- Added
ConverterPipe
, a class that allows chaining previously intialized interfaces for batch conversion and corresponding tests PR #169 - Added automatic extraction of metadata for
NeuralynxRecordingInterface
including filtering information for channels, device and recording time information PR #170 - Added stubbing capabilities to timestamp extraction in the
MovieInterface
avoiding scanning through the whole file whenstub_test=True
PR #181 - Added a flag
include_roi_acceptance
totools.roiextractors.write_segmentation
and corresponding interfaces to allow disabling the addition of boolean columns indicating ROI acceptance. PR #193
Pending deprecation
- Replaced the
MovieInterface
withVideoInterface
and introduced deprecation warnings for the former. PR #74
v0.2.1
v0.2.0
v0.2.0
Back-compatability break
- All built-in DataInterfaces are now nested under the
neuroconv.datainterfaces
import 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
AxonaRecordingExtractorInterface
has been renamed toAxonaRecordingInterface
. PR #74 - The
AxonaUnitRecordingExtractorInterface
has been renamed toAxonaUnitRecordingInterface
. PR #74 - The
BlackrockRecordingExtractorInterface
has been renamed toBlackrockRecordingInterface
. PR #74 - The
BlackrockSortingExtractorInterface
has been renamed toBlackrockSortingInterface
. PR #74 - The
OpenEphysRecordingExtractorInterface
has been renamed toOpenEphysRecordingInterface
. PR #74 - The
OpenEphysSortingExtractorInterface
has been renamed toOpenEphysSortingInterface
. PR #74 - The
KilosortSortingInterface
has been renamed toKiloSortSortingInterface
to be more consistent with SpikeInterface. PR #107 - The
Neuroscope
interfaces have been renamed toNeuroScope
to be more consistent with SpikeInterface. PR #107 - The
tools.roiextractors.add_epoch
functionality has been retired in the newest versions of ROIExtractors. PR #112 - Removed deprecation warnings for
save_path
argument (which is nownwbfile_path
everywhere 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
Fixes
- Prevented the CEDRecordingInterface from writing non-ecephys channel data. PR #37
- Fixed description in
write_sorting
and inadd_units_table
to have "neuroconv" in the description. PR #104 - Updated
spikeinterface
version number to 0.95.1 to fix issue withSpikeGLXInterface
probe annotations.
The issue is described here. PR #132
Improvements
- Unified the
run_conversion
method ofBaseSegmentationExtractorInterface
with that of all the other base interfaces. The methodwrite_segmentation
now uses the commonmake_or_load_nwbfile
context manager PR #29 - Coerced the recording extractors with
spikeextractors_backend=True
to BaseRecording objects for Axona, Blackrock, Openephys, and SpikeGadgets. PR #38 - Added function to add PlaneSegmentation objects to an nwbfile in
roiextractors
and corresponding unit tests. PR #23 use_times
argument to be deprecated on the ecephys pipeline. The functionadd_electrical_series
now 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
NWBFile
metadata 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
roiextractors
and corresponding unit tests.
The df over f traces are now added to aDfOverF
container instead of theFluorescence
container.
The metadata schema has been changed for theBaseSegmentationExtractorInterface
to allow metadata forDfOverF
,
andFlurorescence
is 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
ImagingDataChunkIterator
to be compatible with volumetric data. PR #90 - Integrated the
ImagingDataChunkIterator
with thewrite_imaging
methods. 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: str
andinclude_roi_centroids: bool
to theadd_plane_segmentation
helper andwrite_segmentation
functions for thetools.roiextractors
submodule. PR #117 - Propagate
output_struct_name
argument toExtractSegmentationInterface
to 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_type
argument totools.roiextractors.add_plane_segmentation
function and all upstream calls. This allows users to request writing not just the image_masks (still the default) but also pixels, voxels orNone
of the above. PR #119 utils.json_schema.get_schema_from_method_signature
now allowsOptional[...]
annotation typing and subsequentNone
values during validation as long as it is still only applied to a simple non-conflicting type (noOptional[Union[..., ...]]
). PR #119
Documentation and tutorial enhancements:
- 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
Features
- 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
ImagingExtractor
objects. 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](https://gi...
v0.1.1
v0.1.1
Fixes
- Fixed the behavior of the
file_paths
usage in the MovieInterface when run via the YAML conversion specification. PR #33
Improvements
- Added function to add ImagingPlane objects to an nwbfile in
roiextractors
and corresponding unit tests. PR #19
Features
- Add non-iterative writing capabilities to
add_electrical_series
. PR #32
Testing
- Added unittests for the
write_as
functionality in theadd_electrical_series
of the spikeinterface module. PR #32
v0.1.0
v0.1.0
The first release of NeuroConv.