cedalion.sigdecomp.multimodal.arc_ebm

Independent Component Analysis by Entropy Bound Minimization (ICA-EBM).

This code is based on Li and Adali [LA10b] and converted matlab versions provided by the MLSP Lab at the University of Maryland, which is available here: https://mlsp.umbc.edu/resources.html.

(Yang et al. [YVD+25]) H. Yang, T. Vu, Ehsan Ahmed Dhrubo, V. D. Calhoun, and Tülay Adali, “A Flexible Constrained ICA Approach for Multisubject fMRI Analysis,” International Journal of Biomedical Imaging, vol. 2025, no. 1, Jan. 2025, doi: https://doi.org/10.1155/ijbi/2064944.

Functions

arc_ebm(X, guess_mat[, constraint])

Adaptive-reverse Constrained ICA by Entropy Bound Minimization (arc-EBM) is a constrained ICA algorithm.

auction(assignCost[, guard])

Performs assignment using Bertsekas' auction algorithm.

inv_sqrtmH(B)

Helper function for ICA EBM: computes the inverse square root of a matrix.

pre_processing(X)

Helper function for ICA EBM: pre-processing (DC removal & spatial pre-whitening).

simplified_ppval(pp, xs)

Helper function for ICA EBM: simplified version of ppval.

symdecor(M)

Helper function for ICA EBM: fast symmetric orthogonalization.

cedalion.sigdecomp.multimodal.arc_ebm.arc_ebm(X: ndarray, guess_mat, constraint='correlation') ndarray[source]
Adaptive-reverse Constrained ICA by Entropy Bound Minimization (arc-EBM) is a constrained ICA algorithm.

arc-EBM calculates the blind source separation demixing matrix corresponding to X, using the reference signals in guess_mat and the constraint specified by constraint.

Parameters:
  • X (np.ndarray, (Channels, Time Points)) – the [N x T] input multivariate time series with dimensionality N observations/channels and T time points

  • guess_mat (np.ndarray, (Time Points, Referenced Channels)), (np.ndarray, (Time Points/2, Referenced Channels)) – Time or frequency domain reference signals. The number of reference signals should be less than or equal to the number of channels in X. The first dimension should be T for time domain signals and T/2 for frequency domain signals.

  • constraint (str) – the constraint to be used for the gradient step, either ‘correlation’ (default) or ‘psd’

Returns:

the [N x N] demixing matrix with weights for N channels/sources.

To obtain the independent components, the demixed signals can be calculated as S = W @ X.

Return type:

W (np.ndarray, (Channels, Channels))

Initial Contributors:

References: This code is based on the matlab version by Xi-Lin Li (Li and Adali [LA10b])

Xi-Lin Li and Tulay Adali, “Independent component analysis by entropy bound minimization,” IEEE Trans. Signal Processing, vol. 58, no. 10, pp. 5151-5164, Oct. 2010.

(Yang et al. [YVD+25]) H. Yang, T. Vu, Ehsan Ahmed Dhrubo, V. D. Calhoun, and Tülay Adali, “A Flexible Constrained ICA Approach for Multisubject fMRI Analysis,” International Journal of Biomedical Imaging, vol. 2025, no. 1, Jan. 2025, doi: https://doi.org/10.1155/ijbi/2064944.

cedalion.sigdecomp.multimodal.arc_ebm.simplified_ppval(pp: dict, xs: float) float[source]
Helper function for ICA EBM: simplified version of ppval.

This function evaluates a piecewise polynomial at a specific point.

Parameters:
  • pp (dict) – a dictionary containing the piecewise polynomial representation of a function

  • xs (float) – the evaluation point

Returns:

the value of the function at xs

Return type:

v (float)

cedalion.sigdecomp.multimodal.arc_ebm.inv_sqrtmH(B: ndarray) ndarray[source]

Helper function for ICA EBM: computes the inverse square root of a matrix.

Parameters:

B (np.ndarray) – a square matrix

Returns:

the inverse square root of B

Return type:

A (np.ndarray)

cedalion.sigdecomp.multimodal.arc_ebm.pre_processing(X: ndarray) tuple[ndarray, ndarray][source]

Helper function for ICA EBM: pre-processing (DC removal & spatial pre-whitening).

Parameters:

X (np.ndarray, (Channels, Time Points)) – the data matrix [N x T]

Returns:

the pre-processed data matrix [N x T] P (np.ndarray, (Channels, Channels)): the pre-whitening matrix [N x N]

Return type:

X (np.ndarray, (Channels, Time Points))

cedalion.sigdecomp.multimodal.arc_ebm.symdecor(M: ndarray) ndarray[source]

Helper function for ICA EBM: fast symmetric orthogonalization.

Parameters:

M (np.ndarray, (Channels, Channels)) – the matrix to be orthogonalized [N x N]

Returns:

the orthogonalized matrix [N x N]

Return type:

W (np.ndarray, (Channels, Channels))

cedalion.sigdecomp.multimodal.arc_ebm.auction(assignCost, guard=None)[source]

Performs assignment using Bertsekas’ auction algorithm.

Parameters: assignCost (ndarray): m x n matrix of costs for associating each row with each column. m >= n. guard (float, optional): Cost of column non-assignment. All assignments will have cost < guard.

Returns: colsol (ndarray): Column assignments, where colsol[j] gives the row assigned to column j. rowsol (ndarray): Row assignments, where rowsol[i] gives the column assigned to row i.