Skip to content

← signal_processing package

InfomaxICA

Compute an ICA solution on calibration data and subsequently transform data into component space.

Note that this filter does not update itself incrementally -- once it is calibrated, the solution will remain fixed, and is used to transform both the calibration data, and any subsequent streaming data. The difference between this filter and the ICA method under the Feature Extraction category is that this one accepts a channels by time signal, and outputs a components by time signal, whereas the other method can operate on data of any dimensionality and axes, and outputs a feature axis (which is not as readily usable if you want to chain other nodes from the filters category after it). Also, Infomax ICA is considered a higher-quality approach for EEG and MEG than the FastICA algorithm used in the other node. If this filter is used on streaming data and has not yet been calibrated, then it will first buffer n seconds of calibration data to determine some statistics, before any output is produced. More Info... Version 1.2.0

Ports/Properties

data

Data to process.

  • verbose name: Data
  • default value: None
  • port type: DataPort
  • value type: Packet (can be None)
  • data direction: INOUT

max_iters

Number of iterations. This will determine how long it takes for the algorithm to calibrate itself once the calibration data has been collected. Lower values will result in less accurate components being learned.

  • verbose name: Number Of Iterations
  • default value: 1200
  • port type: IntPort
  • value type: int (can be None)

method

Method to use. This can be used to compare performance between the methods.

  • verbose name: Method
  • default value: infomax
  • port type: EnumPort
  • value type: str (can be None)

learning_rate

Learning rate. Reduce if the algorithm diverges on your data.

  • verbose name: Learning Rate
  • default value: 0.5
  • port type: FloatPort
  • value type: float (can be None)

verbosity

Verbosity level.

  • verbose name: Verbosity
  • default value: 1
  • port type: IntPort
  • value type: int (can be None)

calib_seconds

Amount of data, in seconds, to gather for calibration. When this filter is run online and has not yet been calibrated, then it will first buffer this many seconds of data in order to compute its solution before any output is produced. Note that, when you have many channels, this algorithm requires quite a bit of calibration data.

  • verbose name: Gather This Much Calibration Data
  • default value: 300
  • port type: IntPort
  • value type: int (can be None)

include_chunks

Chunks to include along with the filtered data as additional streams. It is recommended to include at least the patterns (weight inverse) matrix, which is necessary for component interpretation and classification. The streams start with the same name prefix as the input data, and end with -ica_{matrix name}, e.g., 'eeg-ica_patterns' if your input stream is named 'eeg'. Note the original channel level input stream (e.g. 'eeg') will be output as the source level IC activations and the space axis that contained the channels will be replaced by a feature axis that contains the component numbers.

  • verbose name: Include Chunks
  • default value: ['patterns']
  • port type: SubsetPort
  • value type: list (can be None)

use_caching

Enable caching. This will significantly speed up re-use of the same data.

  • verbose name: Use Caching
  • default value: False
  • port type: BoolPort
  • value type: bool (can be None)

order_by_var

Reorder components by descending variance of component activations in calibration data.

  • verbose name: Order By Var
  • default value: True
  • port type: BoolPort
  • value type: bool (can be None)

backend

Optional compute backend to use. Keep is the current default, which resolves to that of the template array if one is provided and otherwise numpy unless overridden. Numpy is the standard CPU backend that underpins most of NeuroPype's operations. The others require one or more GPUs to be present on the system, except for torch-cpu. For best performance, keep all arrays that interact with each other (via processing nodes) on the same backend.

  • verbose name: Backend
  • default value: keep
  • port type: EnumPort
  • value type: str (can be None)

precision

Numeric precision to use. Keep resolves to the precision of the template array if one is provided, and otherwise to the current default (usually 64-bit). Can be reduced to save memory (e.g. if running on GPU).

  • verbose name: Precision
  • default value: keep
  • port type: EnumPort
  • value type: str (can be None)

num_cores

Enforce maximum number of cores to use. If None, this doesn't do anything. If set to -1, this will allow the node to use all cores (including hyperthreads) on the machine. It can be helpful to set this to the number of physical processors on the machine.

  • verbose name: Num Cores
  • default value: None
  • port type: IntPort
  • value type: int (can be None)

random_seed

Random seed. Different values may yield slightly different results.

  • verbose name: Random Seed
  • default value: 12345
  • port type: IntPort
  • value type: int (can be None)

set_breakpoint

Set a breakpoint on this node. If this is enabled, your debugger (if one is attached) will trigger a breakpoint.

  • verbose name: Set Breakpoint (Debug Only)
  • default value: False
  • port type: BoolPort
  • value type: bool (can be None)

metadata

User-definable meta-data associated with the node. Usually reserved for technical purposes.

  • verbose name: Metadata
  • default value: {}
  • port type: DictPort
  • value type: dict (can be None)