Coder Social home page Coder Social logo

sstgroup / independent_vector_analysis Goto Github PK

View Code? Open in Web Editor NEW
9.0 2.0 2.0 121 KB

Python versions of Independent Vector Analysis (IVA-G and IVA-L-SOS).

License: MIT License

Python 72.46% Jupyter Notebook 27.54%
blind-source-separation independent-component-analysis independent-vector-analysis

independent_vector_analysis's Introduction

Independent Vector Analysis

This package contains the Python versions of Independent Vector Analysis (IVA-G [1] and IVA-L-SOS [2]), converted from the MLSP-Lab MATLAB Codes.

Installing independent_vector_analysis

The only pre-requisite is to have Python 3 (>= version 3.6) installed. The iva package can be installed with

pip install independent_vector_analysis

Required third party packages will automatically be installed.

Quickstart

First, the imports:

import numpy as np
from independent_vector_analysis import iva_g, consistent_iva
from independent_vector_analysis.data_generation import MGGD_generation

Create 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 matrix A is 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)

W is the estimated demixing matrix. cost is the cost for each iteration. Sigma_n[:,:,n] contains the covariance matrix of the nth SCV. isi is 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)

where iva_results is 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 as Sigma_n in iva_g / iva_l_sos)
  • 'cross_isi' : cross joint ISI for each run compated with all other runs

Contact

In case of questions, suggestions, problems etc. please send an email to [email protected], or open an issue here on Github.

Citing

If 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

independent_vector_analysis's People

Contributors

isabelllehmann avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

mentel1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.