Neuropype Version: 2021.0.3

  • Reinstate some deprecated nodes that were removed prematurely
  • Bugfix in ArtifactRemoval node

Neuropype Version: 2021.0.2

  • Build-related bugfix

Neuropype Version: 2021.0.1

  • Update LSLInput, LSLOutput nodes to handle LSL stream format from certain devices
  • Fix Windows 11 compatibility issue

Neuropype Version: 2021.0.0

Installation Notes:

  • Windows 10 and up are officially supported. (There may be an issue installing Neuropype on certain Windows 7 versions. Windows 7 may or may not be fully supported going forward.)

Node packages:

  • New NIRS package with nodes specific to NIRS signal data

New Nodes:

  • Connectivity package:
    • Efficiency: Calculate the (global or local) efficiency parameters of a weighted-directed network.
  • Diagnostics package:
    • DataCounter: Counts data passing through the node in a given stream, and prints a log message every n seconds (configurable) with the number of samples received (along the time axis), since last check as well as total so far.
    • EegQualityMetrics: Computes various quality metrics for an EEG dataset/file.
    • NirsIntensityQualityMetrics: Compute various quality metrics from NIRS "raw" Intensity signal data.
    • NirsOpticalDensityQualityMetrics: Computes various quality metrics from NIRS data that has been converted to optical density.
    • SignalToNoise: Signal to noise, computed as the log ratio of signal (filtered) and noise (unfiltered - filtered) data segments, with a baseline removed.
    • ConditionalReplaceValues: Replace values that meet a given criteria.
    • Round: Round each element.
  • Feature_extraction package:
  • File_system package:
  • Formatting package:
  • Machine_learning package:
    • CovarianceMDM: Classify covariance matrices based on a Riemannian minimum-distance-to-mean criterion.
    • LinearToProbabilities: Convert linear predictions to (two-class) probabilities.
  • Markers package:
  • Network package:
    • MIDIOutput: Send data stream to a MIDI Output Port.
  • Nirs package:
    • AddProbeLocations: Assign probe locations to channels from a NIRS device.
    • BaselinePCA: Perform Baseline PCA artifact removal.
    • CBSI: Apply the Correlation-Based Signal Improvement method to enhance the HbO/HbR contrast and downweight artifacts.
    • EstimateConcentrations: Estimate chromophore concentrations (HbO, HbR) from delta-optical density (OD) at multiple wavelengths.
    • IntensityToOpticalDensity: Convert light intensity to delta-optical density (OD).
    • SeparateChannelsByDistance: Calculate the distance between channels and separate/remove those which fall below/above a threshold.
    • TDDR: Apply the TDDR method for fNIRS motion artifact reduction.
    • ReadEnvironmentVariable: Reads in an environment variable from the system.
  • Signal_processing package:
  • Source_localization package:
    • CoregisterExistingLocations: Coregister the locations in the given data with the NeuroPype internal coordinate system.
    • ROIsToVertices: Expand ROI activations such that each ROI gets broadcast to all of its vertices.
    • DateOperation: Perform one out of a range of supported date-related operations.
    • CovarianceTaper: Compute a spatial taper matrix for covariance regularization.
    • LinearTrend: Calculate the linear trend over a given axis.
    • OverlappedLinearModel: Estimate a linear model with temporally overlapped responses.
    • ParseStatsTable: Extract data from stats stream returned by a stats node.
  • Tensor_math package:
  • Visualization package:

New Resources:

  • AdultMNI152 headmodel plus support for .mshs headmodels
  • Example pipelines for use of Gaze nodes

Engine updates:

  • Axis: allow ad-hoc addition of arrays to axis subclasses
  • Axis: axis arrays now support non ndarray values (i.e., lists), support for [] indexing ability
  • Axis: find axis by custom_label using axis.custom_label syntax
  • Axis: new .items property to make arrays & props easier to find in an axis
  • Axis: support for initialization of an axis array whose shape differs in extra dimensions
  • SpaceAxis: added positions_source array for positions of sources (positions used for detectors) (NIRS)
  • New NamedAxis base class (provides .names field to SpaceAxis, FeatureAxis)
  • InstanceAxis: support for struct arrays and/or arrays of recs.
  • Block: new splat syntax (i.e. ..., *space[:5], ... expands to all space axes in the block)
  • Block: new + operator for axis concatenation
  • Block: colon index : returns a view not a copy
  • Block: indexing no longer copies non-mutated axes (memory optimization)
  • Block: support for backends other than numpy
  • Added limited copy-on-write support to Packet data structure and its components
  • Added support for declaring custom axis types
  • Expanded constants.py with NIRS-related constants and others
  • Port: added ComboPort property
  • DataPort can now automatically wrap/unwrap plain Chunks and/or Blocks to Packets, allowing nodes to be seamlessly callable on these object types
  • Many usability improvements

Breaking changes:

  • Opening a pipeline that was created with Pipeline Designer 2021 (a separate application that is distributed with the Neuropype Suite) in older versions Pipeline Designer (2020 or older), will revert the nodes to their custom settings. Install Neuropype 2021 to ensure ongoing compatibility.
  • Block: indexing a Block axis using an integer index or a single index value produces a view (indexing a block axis with a 1-element list produces a copy as before)

Node Features:

  • All: Memory performance optimizations by avoiding copying of non-mutated axes when passing through a node
  • Cardiac: option to wait for buffer (time or samples) to fill before outputting values
  • ChannelDiagnostics: added line_noise_frequency and min_corr properties
  • CopyData: now copies data of any type, not just Packet
  • EstimateLag: add threshold property, window popup (optional), and output lag values through separate port
  • NoDataAlert: add popup_window property to allow/suppress popup window
  • ExportH5 / ImportH5: support for chunked storage and compression, can specify chunk size
  • ExportMDA: support MDA file format
  • ExportNWB: add I/O for NWB:N file format
  • ExportStructure: Uses pickle protocol 4 by default (removes 4G limit)
  • ImportCSV: add properties to specify unit, skip empty rows, custom delimiter; support import of marker data only
  • Import/ExportSET: support for Matlab 7.3+
  • ImportFile: support for python pickle (.pkl) format
  • ImportEDF / ImportVHDR: added support for stim_channel param
  • ImportXDF: support for source/detector positions and wavelengths (NIRS)
  • ExtractStreams: allow selection of streams by stream props
  • RenameStreams: wildcard support
  • SelectInstances: added support for an additional string "condition" clause that combines with the programmatic criteria
  • StreamData: data dtype conversion now optional (default float64 for backward compat)
  • ExtractGazeEvents: add has_markers flag
  • AssignTargets: support use of formulas to calculate the target value (conditions mapping format)
  • BalanceClasses: handle case of more than one eligible stream
  • BayesianGaussianMixtureClassification: added VBGMM classifier mode
  • LarsRegression: support for leave-one-X-out where X is identified by an Instance axis field
  • CovarianceMDM: example for writing a non-sklearn based machine learning node
  • LinearDiscriminantAnalysis: support for robust estimation, MCD method, orthogonal dimensionality reduction
  • LogisticRegression: support for elasticnet regularizer, feature scaling; updated solvers
  • SupportVectorClassification: add cond_field, feature_selection properties
  • AddEventMarker: add match_first_event_only param to only create new marker for first matched event in trial
  • InsertMarkers: support for condition expressions for the anchor markers and the excepted markers
  • TrimMarkerSegment: add before_start and after_end properties; allow * to indicate any start/end marker; support for dropping markers
  • LSLInput/Output: add support for metadata in field; relay metadata including channel positions and unit; buffer optimizations; accommodate common stream header errors; separator property for joining tensor axes; make stream same data type as incoming block data; added numeric_marker_precision property, marker_field property to select field to use to populate marker stream
  • BadChannelRemoval: store list of bad channels removed in props.diagnostics.bad_channels
  • ChannelRepair: added support for .positions_source field in the space axis
  • FixSignalUnit: significantly faster
  • InterpolateMissingChannels: support for NIRS; support for preventing rank-deficient data using additive noise; montage_type property
  • RemoveBadTimeWindows: store percent (ratio) of data removed in props.diagnostics.dropped_samples_ratio
  • RemoveOutlierTrials: New artifact features for NIRS
  • ApplyLinearTransformation: added support for pre/post pending an intercept feature
  • MovingWindow: re-emit last most recent output Packet if input is None
  • PeakAmplitude: add direction property where ==either finds either the negative or positive peak (whichever is greater)
  • PruneFlatlineChannels: store list of pruned channels in props.diagnostics.flatline_channels; support for detecting channels that are flat the whole recording
  • RobustRectangularStandardization: support for half-normal distribution (e.g. rectified)
  • SignalWhitening: support for riemannian whitening; ability to do offline chunk-by-chunk with multiprocessing; support for backing up state
  • ROIActivations: support for fnmatch syntax in subset param; add fill_with_nan property; added ROI groupings for specific networks (MNN, salience, DMN)
  • RemoveUnlocalizedChannels: support for protecting channels from removal; additional data output for unlocalized data
  • Averages: add bandwidths array to frequency axis
  • ConcatInputs: use first nonempty dataport as reference; match properties to non-empty dataports; allow custom_label to be assigned to new axis
  • OverrideAxis: refactor for special cases
  • OverrideTimestamps: always set srate to 1.0 if only one timestamp; handle case where no nominal_rate specified; support for marker streams
  • ShiftTimestamps: beginning_from_zero now works with streaming data; add use_time_axis property to force use of time axis
  • BarPlot: add auto_bar_colors property to auto assign colors from colormap, add font_size property for plot text
  • TimeSeriesPlot: add font_size property for plot text
  • TopoPlotViewer: add background_color param
  • ParameterPort: remove enum as a value_type; add limits and combo as values for select property; domain support for subtypes (i.e., list[int])

Renamed Nodes:

  • SeparateSignalChunks --> SeparateSignalStreams
  • OverrideProperties --> SetStreamProperties
  • QualityMetricsCompute --> EegQualityMetrics
  • OverrideAxisLabel --> SetAxisLabel
  • ExtractChunkProperty --> ExtractStreamProperty
  • ExtractStream --> ExtractStreams
  • StringFormat --> FormatString
  • ListConstant --> ConstantList
  • StringConstant --> ConstantString

Deprecated Nodes:

  • AccumulateCalibrationDataMultiEmit --> use AccumulateCalibrationData
  • FileIterator --> use PathIterator
  • ConditionalMean --> use GroupedMean
  • RenameChannels --> use SetAxisValues
  • MovingWindowMultitaperSpectrum --> use MovingWindow and MultitaperSpectrum in succession
  • MovingWindowWelchSpectrum --> use MovingWindow and WelchSpectrum in succession