Skip to content

Releases: esi-neuroscience/syncopy

Syncopy v2023.09

25 Sep 11:18
Compare
Choose a tag to compare

Syncopy release v2023.09

NEW

  • Add 'channelcmb' parameter to connectivityanalysis frontend. This allows users to compute connectivity measures only between a subset of the channels instead of all channels, which can reduce the required computational cost dramatically. See #565 for details.

Changed

  • Improvements to serializable dict: better error messages, add _serialize_value helper to try to turn some non-serializable data structures into compatible, serializable ones. #569

Fixed

  • Security fix: increase minimal required tornado version to 6.3.3 to address an issue in tornado.

Syncopy v2023.07

28 Jul 09:22
Compare
Choose a tag to compare

Syncopy release 2023.07

This release brings spike plotting and additional data import and export functions to improve interoperability with other neuroscience software packages.

NEW

  • Add spike plotting, implements #434
  • Conversion to and from mne's RawArray and EpochsArray
  • Add export of to NWB format for AnalogData, TimeLockData, and SpikeData. #508
  • Add support for reading NWB files containing SpikeData, related to #508
  • Add support for concatenating Syncopy data objects (e.g., to add channels) with new spy.concat (PR 522)

Changed

  • When reading/importing NWB files, support trials (in addition to epochs, which were interpreted as trials). Epochs are still supported.

Fixed

  • Fix SpikeData string rep, #511
  • corrected slepian/dpss default taper settings, #559

Syncopy 2023.05

10 May 08:30
93ff0a0
Compare
Choose a tag to compare

Patch release

Considerable performance tweaks and fixes were introduced with #489 and #454, severely improving runtime across the board. Minor additions include NaN handling of FIR filters and the new spy.synthdata module.

What's Changed

Full Changelog: v2023.03...v2023.05

Syncopy 2023.03

06 Apr 08:50
1a7fc00
Compare
Choose a tag to compare

New Features

  • new Pairwise phase consistency (PPC) method, see connectivityanalysis function with method=ppc
  • new frontend function redefinetrial to cut trials/move time axes
  • Jackknifing for coherence and Granger analysis, see new parameter jackknife for connectivityanalysis function
  • logging functionality and respective developer documentation, new function log #208
  • waveform extra dataset to DiscreteData to store raw data around spikes, #238
  • create Syncopy data objects from Python generators (yeah!)
  • concatenation of Syncopy data objects along trials

Changes

  • spectral power for mtmfft now independent of padding as originally intended
  • support unequal trial sizes for load_ft_raw
  • major performance improvements for DiscreteData #403 #418, #424

Fixed

  • fix bug #394 'Copying a spy.StructDict returns a dict'.
  • serializable .cfg #392
  • single trial cross-corr bug #446
  • fix bug #457, Syncopy does not warn about temp storage dir size exceeding reporting threshold at startup

Detailed contributions

Full Changelog: v2022.12...v2023.03

Syncopy 2022.12

15 Dec 16:07
2372d98
Compare
Choose a tag to compare

New Features

  • descriptive statistics: spy.mean, spy.var, spy.std and spy.median
  • new high-level function spy.timelockanalysis
  • inter trial coherence: spy.itc
  • PSTH method: spy.spike_psth
  • added Welch's method to spy.freqanalysis
  • connectivity analysis from SpectralData input
  • time dependent coherence
  • .info entries for Granger and FOOOF analyses with fixed metadata labels

Changes

  • spy.selectdata now works with latency and frequency instead of toi/toilim, foi/foilim like ft_selectdata
  • a valid latency selection will always return timelocked data

Fixes

  • user selections don't get silently wiped by high-level function calls like spy.freqanalysis #332
  • SpikeData slow loading issue #360
  • mempory consumption of trial averaging, both sequential and parallel #380
  • custom dimord support for plotting #349
  • updated dependencies, support for Python >= 3.8 to allow default conda environments w/o Python pinning #363
  • nwb reader improved memory footprint

Detailed Changes

Full Changelog: v2022.08...v2022.12

Syncopy v2022.08

10 Aug 15:23
Compare
Choose a tag to compare

New Features

  • Added down- and resampling algorithms for the new meta-function resampledata
  • Added FOOOF method as a post-processing option for the freqanalysis method mtmfft.
  • Added load_tdt to import data from the TDT system, thanks to @kajal5888
  • Added .info attribute for all data classes to store auxiliary meta information
  • Added zscore normalization to preprocessing
  • new global spy.copy() function which copies entire Syncopy objects on disk

Changes

  • the out.cfg attached to an analysis result now allows to replay all analysis methods
  • connectivityanalysis now has FT compliant output support for the coherence
  • spy.cleanup now has exposed interactive parameter
  • removed keyword deep from copy(), all our copies are in fact deep
  • demeaning after tapering for granger analysis
  • detrending is now possible without filtering in preprocessing

Fixes

  • out.cfg global side-effects (sorry again @kajal5888)
  • CrossSpectralData plotting
  • mixing of explicit keywords and cfg to control analysis
  • fixed error on initializing SpikeData with empty ndarray (#257)

Detailed contributions and changes

New Contributors

2022.05

13 May 10:22
Compare
Choose a tag to compare

[2022.05] - 2022-05-13

Bugfixes and features additions for EventData objects.

NEW

CHANGED

  • Include specific example how to create an "all-to-all" trialdefinition array
    by invoking definetrial without arguments in the function's docstring.
  • Modified versioning scheme: use a date-based scheme instead of increasing
    version numbers
  • Aligned padding API to FieldTrip in both freqanalysis and connectivityanalysis:
    use pad instead of pad_to_length with three supported modes ('maxperlen',
    float, 'nextpow2').

DEPRECATED

  • Removed support for calling freqanalysis with a toi array as well as an
    input dataset that has an active in-place time-selection attached

FIXED

  • Improved legibility of spy.__version__ for non-release installations
  • Correctly process equidistant toi arrays with large spacing in freqanalysis
  • Corrected trialtime for DiscreteData objects (thanks to @KatharineShapcott)

[v0.21] - 2022-04-13

13 Apr 12:42
Compare
Choose a tag to compare

Feature update and bugfixes.

NEW

  • Added preprocessing functionality
  • Added experimental loading functionality for NWB 2.0 files
  • Added experimental loading functionality for Matlab mat files
  • Added support for "scalar" selections, i.e., things like selectdata(trials=0)
    or data.selectdata(channels='mychannel')
  • Added command line argument "--full" for more granular testing: the new default
    for running the testing pipeline is to execute a trimmed-down testing suite that
    does not probe all possible input permutations but focuses on the core functionality
    without sacrificing coverage.
  • New meta-function taper_opt parameter to control arbitrary taper (e.g. kaiser)
    parameters

CHANGED

  • Renamed _selection class property to selection
  • Reworked plotting framework and made it matplotlib 3.5 compatible
  • The output of show is now automatically squeezed (i.e., singleton dimensions
    are removed from the returned array).
  • Enhanced online documentation, now also covering connectivity analysis
  • Multi-tapering (freqanalysis, connectivityanalysis) now is switched on by
    only specifying the tapsmofrq parameter, removed the need for the additional
    and redundant setting of taper='dpss'
  • Granger-Geweke algorithm now matches the reference implementation (Dhamala 2008)
    with machine precision

REMOVED

  • Do not parse scalars using numbers.Number, use numpy.number instead to
    catch Boolean values
  • Do not raise a SPYTypeError if an arithmetic operation is performed using
    objects of different numerical types (real/complex; closes #199)

DEPRECATED

  • Removed loading code for ESI binary format that is no longer supported
  • Repaired top-level imports: renamed connectivity to connectivityanalysis
    and the "connectivity" module is now called "nwanalysis"
  • Included conda clean in CD pipeline to avoid disk fillup by unused conda
    packages/cache
  • Inverted selectdata messaging policy: only actual on-disk copy operations
    trigger a SPYInfo message (closes #197)
  • Matched selector keywords and class attribute names, i.e., selecting channels
    is now done by using a select dictionary with key 'channel' (not 'channels'
    as before). See the documentation of selectdata for details.
  • Retired Travis CI tests since free test runs are exhausted. Migrated to GitHub
    actions (and re-included codecov)

FIXED

  • The trialdefinition arrays constructed by the Selector class were incorrect
    for SpectralData objects without time-axis, resulting in "empty" trials. This
    has been fixed (closes #207)
  • Repaired array_parser to adequately complain about mixed-type arrays (closes #211)
  • The show routine now consistently returns a list of trials if and only if
    multiple trials are selected

0.2

18 Jan 16:13
Compare
Choose a tag to compare
0.2

[v0.2] - 2022-01-18

Major Release

NEW

  • Added Connectivity submodule with csd, granger and coh measures
  • Added new CrossSpectralData class for connectivity data
  • Added Superlet spectral estimation method to freqanalysis
  • Added arithmetic operator overloading for SyNCoPy objects: it is now possible
    to perform simple arithmetic operations directly, e.g.,data1 + data2.
  • Added equality operator for SyNCoPy objects: two objects can be parsed for
    identical contents using the "==" operator
  • Added full object padding functionality
  • Added support for user-controlled in-place selections
  • Added show class method for easy data access in all SyNCoPy objects
  • Added de-trending suppport in freqanalysis via the polyremoval keyword
  • New interface for synthetic data generation: using a list of NumPy arrays for
    instantiation interprets each array as nChannels x nSamples trial data
    which are combined to generate a AnalogData object
  • Made SyNCoPy PEP 517 compliant: added pyproject.toml and modified setup.py
    accordingly
  • Added IBM POWER testing pipeline (via dedicated GitLab Runner)

CHANGED

  • Multi-tapering now works with smoothing frequencies in Hz
  • Streamlined padding interface

REMOVED

  • Retired tox in slurmtest CI pipeline in favor of a "simple" pytest testing
    session due to file-locking problems of tox environments on NFS mounts

DEPRECATED

  • Removed ACME from source repository: the submodule setup proved to be too
    unreliable and hard to maintain. ACME is now an optional (but recommended)
    dependency of SyNCoPy

FIXED

  • Non-standard dimord objects are now parsed and processed by ComputationalRoutine
  • Impromptu padding performed by freqanalysis is done in a more robust way
  • Stream-lined GitLab Runner setup: use cluster-wide conda instead of local
    installations (that differ slightly across runners) and leverage tox-conda
    to fetch pre-built dependencies

v0.1b1

18 Jan 13:12
Compare
Choose a tag to compare

[v0.1b1] - 2020-10-23

First public pre-release of SyNCoPy on PyPI and GitHub.

NEW

  • Included selectdata as a computeFunction that uses the parallelization
    framework in ComputationalRoutine to perform arbitrary data-selection tasks
    (including but not limited to unordered lists, repetitions and removals).
  • Included time-frequency analysis routines mtmconvol and wavelet
  • Added plotting functionality: functions singlepanelplot and multiplanelplot
    allow quick visual inspection of AnalogData and SpectralData objects
  • Added support to process multiple SyNCoPy objects in a single meta-function
    call (all decorators have been modified accordingly)
  • Introduced standardized warning messages via new class SPYWarning
  • Included (more or less) extensive developer docs
  • Added Travis CI and included badges on GitHub landing page
  • New convenience scripts to ease developing/testing
  • New conda.yml file + script for consolidating conda/pip requirements: all
    of SyNCoPy's dependencies are now collected in syncopy.yml, the respective
    pip-specific requirements.txt and requirements-test.txt files are generated
    on the fly by a new function conda2pip that relies on ruamel.yaml (new
    required dependency for building SyNCoPy)
  • New GitLab CI directive for uploading SyNCoPy to PyPI
  • Included GitHub templates for new issues/pull requests
  • SyNCoPy docu is now hosted on readthedocs (re-directed from syncopy.org)
  • New logo + icon

CHANGED

  • Made cluster_cleanup more robust (works with LocalCluster objects now)
  • Made data-parser more feature-rich: check for emptiness, parse non-data
    datasets etc.
  • Made generate_artificial_data more robust: change usage of random number
    seed to allow persistent comparisons across testing runs
  • Updated CI dependencies (SyNCoPy now requires NumPy 1.18 and Matplotlib 3.3.x)

REMOVED

  • All *.py-file headers have been removed
  • Removed examples sub-module from main package (examples will be part of a
    separate repo)

DEPRECATED

  • Wiped all hand-crafted array-matching routines; use best_match instead
  • Do not use pbr in the build system any more; rely instead on up-to-date
    setuptools functionality
  • Retired memory map support and raw binary data reading routines

FIXED

  • Improved temporary storage handling so that dask workers that import the
    package do not repeat all temp-dir I/O tests (and potentially run into
    dead-locks or race conditions)