Release Notes

Neuropype Version: 2020.0.4

  • OSCInput: updated

Neuropype Version: 2020.0.3

Bugfixes/Minor Changes:

  • LineNoise: added line_noise_frequency param
  • NWayPassthrough: add required_inputs param
  • CognionicsInput: support for Quick8r headset; additional diagnostic messages
  • New version check bugfix

Neuropype Version: 2020.0.2

Bugfixes/Minor Changes:

  • ImportEDF: Support for specifying marker field when not auto-detectable
  • ImportVHDR: Support for specifying marker field when not auto-detectable; Support for missing [Marker Infos] field in .vmrk file.
  • ImportCSV: Bugfix where importing events failed in some cases

Neuropype Version: 2020.0.1

  • Fixed tensorflow version incompatibility issue

Neuropype Version: 2020.0.0

New Nodes:

  • Cardiac package:
    • RespRate: Calculate the respiration rate from a detected R peak.
  • Device_io package:
    • CognionicsInput: Receive a data stream from a Cognionics (CGX) EEG device.
  • Diagnostics package:
  • Elementwise_math package:
    • OperateConstant: Add, subtract, multiply or divide each element in the data by a given constant.
    • ReplaceValues: Use the input dictionary to replace the keys with the values of the dictionary in the data.
  • Feature_extraction package:
    • CCA: Perform Canonical Correlation Analysis (CCA) and calculate matrices of scores for CCA.
    • ExtractComponentWeights: Convert transformation matrix metadata into a data block.
  • File_system package:
  • Formatting package:
    • BatchInstances: Group and batch instances based on some some criterion along a new feature axis.
    • SelectInstances: Select instances (trials) based on metadata contained in the instance data field.
  • Gaze package:
  • Machine_learning package:
  • Markers package:
  • Neural package:
  • Programming package:
  • Signal_processing package:
    • AlignStreams: Aligns multiple streams in the time domain.
    • AlignWindows: Aligns signals in two data packets.
    • CumulativeSum: Calculate the cumulative sum of the data over the specified axis.
    • Interpolate: Interpolate the given data along a desired axis (offline/online).
    • InterpolateGaps: Finds and interpolate gaps in data.
    • MSeq: Generates m sequence time series for the given order (m).
    • RefSignals: Generates sinusoidal reference signals with given frequencies.
    • TRCA: Perform Task-Related Component Analysis (TRCA) of the input data.
  • Statistics package:
    • CDF: Evaluate the cumulative distribution function for a given distribution with some fixed parameters element-wise.
    • CorrelationFromCovariance: Convert a covariance matrix into a matrix of correlations.
    • PDF: Evaluate the probability density function for a given distribution with some fixed parameters element-wise.
    • ZTest: Calculate a z-test.
  • Tensor_math package:
    • FiniteDifferencesCentral: Calculate the discrete n'th derivative of the given data along a chosen axis using central finite differences.
  • Utilities package:
  • Visualization package:
    • InspectData: Shows the contents of the data packet in a table, including values, axes, streams, and markers.

New Resources:

  • Added new headmodel: ICBM (339 channels, 5003 vertices)

Node Changes:

  • Added Set Breakpoint property to every node (to pause execution of pipeline on that node) (see also engine/breakpoints.py). See Debugging your Pipelines/Nodes for details.
  • HeartRate and HeartRateVariability: Now work with both offline and online (streaming) data.
  • RespRate: (Respiration Rate): Now works with both offline and online (streaming) data.
  • ExportH5: added rename_on_write option (default off)
  • ImportFile, ImportXDF: new use_streamnames option to retain original stream names on import (instead of renaming to 'eeg', 'eeg-1')
  • ImportXDF: support for max_marker_len option to separate out very long markers into a string table
  • PathIterator: added support for meta-data filter conditions as a Python expression string
  • ExtractStreams: added support for wildcards
  • FuseStreams: added stream_name support
  • MergeStreams: allow lexigraphic sort of chunks in packet
  • Segmentation: time axis stamps in sliding window segmentation case are now relative (vs absolute); no longer requires a marker stream to use "sliding" online segmentation mode
  • SetInstanceDetails: added support for transferring properties from chunk.props
  • AssignTargets: added new 'conditions' mapping format that takes python expressions; 'auto' mapping format renamed to 'compat'
  • MeasureLoss: added option to output two feature axes instead of one
  • AddEventMarker: added new trial_end property
  • RemoveIntersectingMarkers: added support for not flagging the locking marker itself as the marker to avoid, and for removing markers whose neighborhoods intersect specified other marker
  • BandPower: added option to use either Multitaper or Welch spectrum, added baseline removal option and max_gap_length for segmentation
  • EventRelatedPotential: added max_gap_length param for segmentation
  • LSLInput: added support for connectivity serialization over LSL
  • LSLOutput: added support for connectivity serialization over LSL; added optional ignore_signal_changed flag
  • RegulateChunkSizes: added reset_on_gap, also_reset_buffer properties
  • FixSignalUnit: log indicates whether computed factor is too large/small
  • CombineChannels: supports wildcards; returns an error message if a channel group resolves to no source channels
  • SelectRoiGroups: now works if exact syntax of the incoming ROIs differs from the predefined one (as long as region names are the same)
  • ChannelBaselineCalibration: added support for robust estimation
  • ZMQInput: now outputs None once timeout on socket is reached; closes zmq socket when blocking_read is set to False
  • GroupedMean: added allow_markers property
  • ConcatInputs: required_inputs property to require n inputs to contain data before concatenating
  • FoldIntoAxis: now supports a customizable separator character
  • OverrideAxis: only_signals now defaults to True; warns if no signal blocks found
  • ShiftTimestamps: added timestamp_pairs port to feed in timestamp pairs to shift by

Engine Changes:

  • Debugging!: breakpoints.py allows a breakpoint to be triggered on an exception when running Neuropype in --debug mode, and/or a breakpoint to be set on each node. See Debugging your Pipelines/Nodes for details.
  • Added support for writing Neuropype pipelines with Jupyter Notebooks.
  • InstanceAxis.append_fields field_data argument is now optional (defaults to all-nan)
  • New Axis.data_without_props, Axis.get_unique_fields_and_values methods
  • New --on_error=raise argument (to raise an Exception on error) to serve.py
  • New Chunk.is_marker_stream method (returns True if stream has as an instance axis and no time axis)
  • ListPort: a numpy array will validate as (and be converted to) a list
  • New AliasPort class: allows an alias to be created for a port, for backward compatibility when renaming a port on a node

Bug Fixes/Minor Tweaks:

  • Too many to list!

Neuropype Version: 2019.1.2

Fixes/Changes:

  • Updated visualization plot nodes (Bar, TimeSeries, TopoPlot).
  • Updated sample pipelines.
  • Bugfix in ROIActivation.
  • Documentation links point to new location under neuropype.io/docs

Neuropype Version: 2019.1.1

Fixes/Changes:

  • Fix to resolve scikit-learn package compatibility issue.

Neuropype Version: 2019.1.0

New Nodes:

  • Diagnostics package:
  • ChannelDiagnostics: Generates plots showing various quality metrics (streaming data)
  • CorrelationMetric: Computes a channel correlation signal QA metric
  • HighFrequencyNoise: Computes a high frequency noise signal QA metric
  • LineNoise: Computes a line noise signal QA metric
  • ElementWiseMath package:
  • Discretize: Convert continuous data into discrete values using multi-level thresholding
  • FileSystem: package:
  • ExportCSV: Export signal data to CSV format
  • Visualization package:
  • MarkerStreamWindow: Display a window showing markers as they are received in realtime (for QA)
  • ScrollPlot: Plot multi-channel continuous time-series data in a scrollable plot (for offline data)
  • TopoPlotViewer: Plot EEG electrodes on a 2D head colored based on incoming data (i.e., a metric)

Pipelines:

  • Signal Quality Assessment: Displays various plots showing realtime signal quality

Fixes/Changes:

  • OverrideAxis: fixed case where running this node would change the axis order
  • ExportEDF: writing > 1 marker/sec optional as not supported by all EDF import libraries
  • ImportBrainvision: fixed formatting of event marker stream
  • Fixed issue that caused Windows not to find python.exe in some cases
  • Minor bugfixes

Other:

  • Neuropype QuickLaunch: (Run Pipeline ...): support for enum and bool parameter inputs, parameter validity check, graphic makeover, etc.

Neuropype Version: 2019.0.1

  • Minor bugfixes, including issue with launch on Windows under certain circumstances

Neuropype Version: 2019.0.0

New Nodes:

  • Cardiac package:
  • HeartRate: calculates BPM from R peaks
  • HeartRateVariability: calculates HRV from R peaks
  • RDetection: detect R peaks in QRS complexes in ECG time series and peaks in PPG time series and signals
  • Connectivity package:
  • PhaseLockingValue: calculates the phase-locking value between all pairs of channels
  • FeatureExtraction package:
  • FactorAnalyis: perform Factor Analysis of given data
  • TensorDecomposition: decompose a tensor into a number of rank-1 tensors
  • FileSystem package:
  • Export nodes for JSON, MAT, YAML formats
  • Import nodes for Axon, BCI2000, BrainVision, NSX, Neuralynx, NeuroExplorer, PLX, Spike2, and TDT file formats
  • PathIterator: powerful iterator over a list of paths names, captures metadata, accepts wildcards, or a study manifest file
  • SkipIfExists: skip file path if checked path already exists
  • Formatting package:
  • GetAxisMask: get data slices that meet criteria parameters and output the result as a mask packet
  • ApplyAxisMask: apply axis mask created with GetAxisMask
  • SeparateSignalChunks: separate signal from non-signal chunks (streams)
  • Markers package:
  • RemoveIntersectingMarkerSpans: remove spans of markers that intersect signal boundaries
  • AddEventMarker: find trials matching a defined set of event markers and add a new marker matching one of those events
  • ExportMarkers: export all markers found in data to CSV list
  • RewriteMarkers: rewrite event markers according to mapping rules (supports regex)
  • Neural package:
  • ArtifactDetection: detect artifacts in a sliding window fashion and mark them up with NaNs
  • FixSignalUnit: infer and then correct the unit of an electrophysiological signal
  • RemoveOutlierTrials: remove trials with abnormally large signal values
  • Programming package:
  • CreateList: create a list from a series of input values
  • Passthrough: pass data through when update flag is set
  • StringParse: parse a string using a pattern with placeholders in it
  • SignalProcessing package:
  • ApplyLinearTransformation: calculate the dot product of the data tensor with a filters tensor
  • FixGaps: repair data gaps in a time series
  • MedianFilter: calculate a sliding-window median over the data
  • PeakFinding: find all peaks in the given data along a given axis using a continous wavelet method
  • QuantileStandardization: standardize data by converting into quantiles relative to a sliding window
  • RobustRectangularStandardization: robustly standardize the signal in a sliding rectangular window
  • ShiftedWindows: extract overlapped windows from the given time series
  • SignalWhitening: perform a whitening (sphering) transform of the signal
  • UnitNormalization: normalize the data along an axis
  • Spectral package:
  • ContinuousWaveletTransform: calculate a spectrogram (periodogram) of the data using the Continuous Wavelet Transform (CWT)
  • Statistics package:
  • CurveLength: compute the curve length of the data over a given axis
  • GroupedMean: group instances based on given criteria then calculate the mean (and error) for each group
  • RootMeanSquare: compute the root mean square over a given axis
  • TTest: calculate a t-test (1-sample or 2-sample unpaired and paired t-tests)
  • TTestTwoInput: calculate a t-test from two inputs (1-sample and 2-sample unpaired and paired t-tests)
  • Winsorize: winsorize the data
  • TensorMath package:
  • Operate: perform a mathematical operation on all data between pairs of elements along an axis
  • StripSingletonAxis: strip the given singleton axis from the data
  • __Diagnostics__package:
  • CopyData: copy the given data
  • RandomMatrix: create a packet of random data
  • Utilities package:
  • CountAlongAxis: count number of instances along an axis
  • DiscardNaNChunks: discard chunks with NaNs
  • ExtractChunkProperty: extract a given property from one of the chunks of a packet
  • OverrideAxisLabel: override the label of an axis
  • OverrideProperties: override a meta-data property of a chunk
  • RepeatAlongAxis: repeat the data along a given axis
  • StripMetadata: strip undesired meta-data from a packet
  • Visualization package:
  • BarPlotPG: plot EEG channels as a bar plot

Resources

  • egi-gsn-hydrocell-257.locs: montage for EGI Hydrocel GSN

Major Engine Changes:

  • Caching of intermediate results
  • Instance axis can have any number of custom per-element fields
  • graph.connect() precedence rules changed if port not given
  • Graph now has high-level load/save operations
  • Scripting: nodes that accept input1..N can now be given a list of data packets
  • Improved workflow for writing nodes that make use of other nodes
  • New migrate parameter in ports that can be used to migrate legacy values for backward compatibility
  • Scripting: scripts involving nodes now support full auto-complete for node names and their arguments (this is aided by the new refresh_nodes script)
  • iPython included with Neuropype to enable Jupyter notebook workflow!

Node Improvements and Bugfixes:

  • Too many to list!

Neuropype Version: 2017.3.2

  • Minor bugfixes

Neuropype Version: 2017.3.1

New Nodes

  • FixGaps: remove gaps between segmented data with level adjustment (for streaming)
  • ExportMarkersToCSV: export event marker names & timestamps to a CSV file

Node Changes

  • TimeSeriesPlot: do not override sampling rate by default
  • ChannelRepair: account for instance with very low sampling rate
  • FoldIntoAxis: now supports folding instance axis into time axis
  • RecordToXDF: bugfix

NeuroPype Version: 2017.3

New Nodes

  • ImportH5: import HDF5 files written with ExportH5
  • RemoveIntersectingMarkers: remove markers that are within some margin of a data gap
  • ExtractStreams: like ExtractStream, but can retain multiple streams
  • SqueezeAxes: remove any axes from the data that have only one element
  • Resample: resample data to a target sampling rate (offline)
  • FuseMarkerStreams: combine multiple marker streams into one
  • DiscardLongChunks: discard chunks longer than a threshold, to minimize processing hitches during real-time operation
  • Largest / Smallest: find the largest/smallest element along some axis

Node Changes

  • New Neural node category for nodes specific to neural data processing (related notes moved there)
  • CollapseToFeatures: now generates feature labels
  • ConditionalMean: now supports robust estimators and error measures
  • ExportH5: now supports nested dictionaries of packets, too
  • ExportSET: can now insert boundary markers
  • ExportStructure: added support for additional file formats
  • RecordToCSV: support for absolute instance timestamps
  • RecordToXDF: support for session notes
  • All Export/Record nodes: output folder is created if does not exist
  • ImportFile: fix to concatenation option, also writes source_url and source_paths
  • ImportStructure: support for additional file formats
  • ImportSET: support for .times field
  • MergeStreams: supports replace_if_exists option
  • Segmentation: added support for discarding epochs that intersect data gaps and fixed off-by-1-sample issue
  • AccumulateCalibrationData: improved logic in some corner cases & added support for hardcoded calibration time windows
  • AssignTargets: added support for wildcard expressions
  • ClearTargets: added support for clearing a subset of trials
  • LSLInput: added support for reading only marker streams and no other streams
  • LSLOutput: added support for custom timestamps and setting the marker source id explicitly
  • ArrayLookup: generalized node for programmatic array lookup
  • BreakStructure: streamlined logic and added support for optional default values
  • ConditionSwitch: improved logic
  • CreateStructure: added option for outputting None if all inputs empty
  • StringFormat: better error message
  • Detrend: now supports irregularly spaced samples
  • FIRFilter: now supports overlap-add convolution for multi-KHz sampling rates
  • FrequencyNormalization: support for a flexible falloff exponent
  • IIRFilter: added offline filtfilt style option
  • MovingAverage: added support for ignoring NaNs
  • MovingWindow: fixed issue where the node wouldn’t work for some orders of axes
  • PeakLatency: added support for finding peaks along the frequency axis
  • PruneFlatlineChannels: fixed initialization time range handling
  • RectangularMovingWindowStandardization: added support for outputting standard deviation too
  • WindowFunction: added support for raised-cosine window
  • AssignChannelLocations: optimized code
  • Head model functionality is now object-oriented
  • ROIActivations: optimized code
  • InsertMarkers: added pass-through mode
  • ZMQInput/Output: added support for blocking operation and some other features
  • MultitaperSpectrum: added support for overriding the nfft parameter
  • Coherence: added default sampling rate for Time axis
  • WelchSpectrum: added support for overriding the fft size, also added support for averaging over overlapped time windows
  • Standardization: fixed an elif case and removed some unused parameters
  • Sum: added support for multiple axes of same type in data (e.g., space/space)
  • Variance: better documentation
  • ConcatInputs: better error messages
  • FoldIntoAxis: added support for instance axis
  • ConcatSuccessivePackets: more extensive logging, added support for padding incompatible dimensions
  • TimeSeriesPlot: added support for plotting data that has just an instance axis; also added support for drawing event markers
  • ParameterPort: improved logic
  • BadChannelRemoval: fixed initialization range behavior during online processing
  • ChannelRepair: fixed initialization range behavior during online processing
  • RemoveBadTimeWindows: fix eager loading of heavy dependency

Engine Changes

  • New Run Pipeline console for quickly configuring and running a pipeline (right-click on NeuroPype icon in taskbar and select 'Run Pipeline' to access)
  • REST API refactored for higher concurrency and improved responsiveness during offline (file, not stream) processing
  • Improved error messages
  • Additional debugging hooks
  • Moved engine.debugging into utilities package
  • Moved executable scripts to bin/
  • The included Python distribution is now a valid conda environment