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)