Release Notes
Neuropype Version: 2020.0.6
- ExtractTimestamps: restored
Neuropype Version: 2020.0.5
- CCA: bugfix
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:
- ComputeImpedance: Compute channel impedance for Cognionics (CGX) EEG devices.
- EstimateLag: Estimate the lag (delay) of the data in seconds
- EstimateUpdateRate: Estimate the update rate of NeuroPype.
- NoDataAlert: Alert if no data is present.
- QualityMetricsCompute: A meta-node (a node that calls other nodes), which generates a set of quality metrics for each signal file.
- SanityCheck: Check data coming from a file for certain criteria.
- 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:
- GetCurrentWorkingDirectory: None
- WaitForFiles: Wait for file(s) matching a certain criteria to exist in filesystem before continuing operation.
- 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:
- AdaptiveThreshold: Calculate adaptive threshold.
- ExtractGazeEvents: Detect fixations and saccades in pupil gaze data.
- GazeScreenCoordinateConversion: Perform coordinate conversions on gaze data.
- SanitizeGazeData: Clean up gaze data before extracting gaze events.
- SetGazeMetaData: Used to overwrite the screen related metadata of a packet with gaze data.
- Machine_learning package:
- BalanceClasses: Balance the per-class trial counts in the data.
- Markers package:
- StripLongMarkers: Removes (replaces) event markers that exceed a maximum length.
- TrimMarkerSegment: Trim data before and after specified begin/end markers.
- Neural package:
- ArtifactRemoval: Remove artifacts from EEG data (both offline and streaming).
- InterpolateMissingChannels: Interpolate missing channels in the given data.
- PowerBandRatio: Calculates a ratio of precomputed spectral power bands.
- PowerBands: Computes the standard power bands for various units (dB, PSD, relative PSD, sqrt(PSD), with configurable frequency ranges.
- Spatio-Spectral Decomposition: Extract components that are most representative of a given frequency band.
- Programming package:
- NWayPassthrough: Pass the input data through to the output.
- 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:
- AlignInstances: Line up streams with instance axes such that their instances and their order match.
- AssignStandardChannelNames: Assigns channel names to incoming channels based on known montages of specific EEG devices, which can be selected from a list.
- DiscardInvalidData: Remove slices of the incoming packets that contain invalid data.
- HoldLastPacket: Holds the most recently received packet.
- InterpolateMissingTimestamps: Interpolate data to repair gaps and jitter in the timestamps.
- 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) toserve.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