Package: independent-vector-analysis
Independent Vector AnalysisThis package contains the Python versions of IVA-G [1] and IVA-L-SOS [2], converted from theMLSP-Lab MATLAB Codes.Website:http://mlsp.umbc.edu/jointBSS_introduction.htmlSource-code:https://github.com/SSTGroup/independent_vector_analysisInstalling independent_vector_analysisThe only pre-requisite is to havePython 3(>= version 3.6) installed.
The iva package can be installed withpip install independent_vector_analysisRequired third party packages will automatically be installed.QuickstartFirst, the imports:import numpy as np
from independent_vector_analysis import iva_g, consistent_iva
from independent_vector_analysis.data_generation import MGGD_generationCreate a dataset with N=3 sources, which are correlated across K=4 datasets.
Each source consists of T=10000 samples:N = 3
K = 4
T = 10000
rho = 0.7
S = np.zeros((N, T, K))
for idx in range(N):
    S[idx, :, :] = MGGD_generation(T, K, 'ar', rho, 1)[0].T
A = np.random.randn(N,N,K)
X = np.einsum('MNK, NTK -> MTK', A, S)
W, cost, Sigma_n, isi = iva_g(X, A=A, jdiag_initW=False)Apply IVA-G to reconstruct the sources.
If the mixing matrixAis passed, the ISI is calculated.
Let the demixing matrix W be initialized by joint diagonalization:W, cost, Sigma_n, isi = iva_g(X, A=A, jdiag_initW=False)Wis the estimated demixing matrix.costis the cost for each iteration.Sigma_n[:,:,n] contains the covariance matrix of the nth SCV.isiis the joint ISI for each iteration.Find the most consistent result of 500 runs in IVA-L-SOS:iva_results = consistent_iva(X, which_iva='iva_l_sos', n_runs=500)whereiva_resultsis a dict containing:'W' : estimated demixing matrix of dimensions N x N x K'W_change' : change in W for each iteration'S' : estimated sources of dimensions N x T x K'A' : estimated mixing matrix of dimensions N x N x K'scv_cov' : covariance matrices of the SCVs, of dimensions K x K x N (the same asSigma_nin iva_g / iva_l_sos)'cross_isi' : cross joint ISI for each run compated with all other runsContactIn case of questions, suggestions, problems etc. please send an email toisabell.lehmann@sst.upb.de, or open an issue here on Github.CitingIf you use this package in an academic paper, please cite [3].@inproceedings{Lehmann2022,
  title   = {Multi-task fMRI Data Fusion Using IVA and PARAFAC2},
  author  = {Lehmann, Isabell and Acar, Evrim and Hasija, Tanuj and Akhonda, M.A.B.S. and Calhoun, Vince D. and Schreier, Peter J. and Adali, T{\"u}lay},
  booktitle={ICASSP 2022-2022 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)},
  pages={1466--1470},
  year={2022},
  organization={IEEE}
  }[1] M. Anderson, T. Adali, & X.-L. Li,Joint Blind Source Separation with Multivariate Gaussian Model: Algorithms and Performance Analysis,IEEE Transactions on Signal Processing, 2012, 60, 1672-1683[2] S. Bhinge, R. Mowakeaa, V.D. Calhoun, T. AdalÄ±,Extraction of time-varying spatio-temporal networks using parameter-tuned constrained IVA,IEEE Transactions on Medical Imaging, 2019, vol. 38, no. 7, 1715-1725[3] I. Lehmann, E. Acar, et al.,Multi-task fMRI Data Fusion Using IVA and PARAFAC2,ICASSP 2022 - 2022 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), 2022, pp. 1466-1470