# Independent Vector Analysis
This package contains the Python versions of IVA-G [1] and IVA-L-SOS [2], converted from the [MLSP-Lab MATLAB Codes](http://mlsp.umbc.edu/resources.html).
- **Website:** http://mlsp.umbc.edu/jointBSS_introduction.html
- **Source-code:** https://github.com/SSTGroup/independent_vector_analysis
## 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
[comment]: <> (If you see a bug, open an [issue](https://github.com/tensorly/tensorly/issues), or better yet, a [pull-request](https://github.com/tensorly/tensorly/pulls>)!)
## Contact
In case of questions, suggestions, problems etc. please send an email to isabell.lehmann@sst.upb.de, 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
Raw data
{
"_id": null,
"home_page": "https://github.com/SSTGroup/independent_vector_analysis",
"name": "independent-vector-analysis",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": "",
"keywords": "iva,independent vector analysis,bss,multiset analysis",
"author": "Isabell Lehmann",
"author_email": "isabell.lehmann@sst.upb.de",
"download_url": "https://files.pythonhosted.org/packages/5b/8e/ac184e12f845e2c61391a20ca4757ec4f0c417bbdd9f98d545dcb67dfcdd/independent_vector_analysis-0.3.3.tar.gz",
"platform": null,
"description": "# Independent Vector Analysis\r\n \r\nThis package contains the Python versions of IVA-G [1] and IVA-L-SOS [2], converted from the [MLSP-Lab MATLAB Codes](http://mlsp.umbc.edu/resources.html).\r\n\r\n- **Website:** http://mlsp.umbc.edu/jointBSS_introduction.html\r\n- **Source-code:** https://github.com/SSTGroup/independent_vector_analysis\r\n\r\n\r\n## Installing independent_vector_analysis\r\n\r\nThe only pre-requisite is to have **Python 3** (>= version 3.6) installed.\r\nThe iva package can be installed with\r\n\r\n pip install independent_vector_analysis\r\n\r\nRequired third party packages will automatically be installed.\r\n\r\n\r\n## Quickstart\r\n\r\nFirst, the imports:\r\n\r\n import numpy as np\r\n from independent_vector_analysis import iva_g, consistent_iva\r\n from independent_vector_analysis.data_generation import MGGD_generation\r\n\r\nCreate a dataset with N=3 sources, which are correlated across K=4 datasets.\r\nEach source consists of T=10000 samples:\r\n \r\n N = 3\r\n K = 4\r\n T = 10000\r\n rho = 0.7\r\n S = np.zeros((N, T, K))\r\n for idx in range(N):\r\n S[idx, :, :] = MGGD_generation(T, K, 'ar', rho, 1)[0].T\r\n A = np.random.randn(N,N,K)\r\n X = np.einsum('MNK, NTK -> MTK', A, S)\r\n W, cost, Sigma_n, isi = iva_g(X, A=A, jdiag_initW=False)\r\n\r\nApply IVA-G to reconstruct the sources.\r\nIf the mixing matrix *A* is passed, the ISI is calculated.\r\nLet the demixing matrix W be initialized by joint diagonalization:\r\n\r\n W, cost, Sigma_n, isi = iva_g(X, A=A, jdiag_initW=False)\r\n\r\n*W* is the estimated demixing matrix.\r\n*cost* is the cost for each iteration.\r\n*Sigma_n*[:,:,n] contains the covariance matrix of the nth SCV.\r\n*isi* is the joint ISI for each iteration.\r\n\r\nFind the most consistent result of 500 runs in IVA-L-SOS:\r\n \r\n iva_results = consistent_iva(X, which_iva='iva_l_sos', n_runs=500)\r\n\r\nwhere *iva_results* is a dict containing:\r\n* 'W' : estimated demixing matrix of dimensions N x N x K\r\n* 'W_change' : change in W for each iteration\r\n* 'S' : estimated sources of dimensions N x T x K\r\n* 'A' : estimated mixing matrix of dimensions N x N x K\r\n* '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)\r\n* 'cross_isi' : cross joint ISI for each run compated with all other runs\r\n\r\n[comment]: <> (If you see a bug, open an [issue](https://github.com/tensorly/tensorly/issues), or better yet, a [pull-request](https://github.com/tensorly/tensorly/pulls>)!)\r\n\r\n## Contact\r\n\r\nIn case of questions, suggestions, problems etc. please send an email to isabell.lehmann@sst.upb.de, or open an issue here on Github.\r\n\r\n## Citing\r\n\r\nIf you use this package in an academic paper, please cite [3].\r\n\r\n @inproceedings{Lehmann2022,\r\n title = {Multi-task fMRI Data Fusion Using IVA and PARAFAC2},\r\n 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},\r\n booktitle={ICASSP 2022-2022 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)},\r\n pages={1466--1470},\r\n year={2022},\r\n organization={IEEE}\r\n } \r\n \r\n\r\n[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\r\n\r\n[2] S. Bhinge, R. Mowakeaa, V.D. Calhoun, T. Adal\u00c4\u00b1, **Extraction of time-varying spatio-temporal networks using parameter-tuned constrained IVA**, *IEEE Transactions on Medical Imaging*, 2019, vol. 38, no. 7, 1715-1725\r\n\r\n[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\r\n\r\n",
"bugtrack_url": null,
"license": "LICENSE",
"summary": "Implementation of IVA-G and IVA-L-SOS",
"version": "0.3.3",
"split_keywords": [
"iva",
"independent vector analysis",
"bss",
"multiset analysis"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "a13df324cdd63d0af69c4661df5464d3ae49998a573cf7cac4bcc6b8982689bf",
"md5": "850231bcc78367a98e9ef348e0d26198",
"sha256": "de40a8f4ede62b388f2559e9c669993a4ca4eb430cb5a966fc0b8474ead7d56e"
},
"downloads": -1,
"filename": "independent_vector_analysis-0.3.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "850231bcc78367a98e9ef348e0d26198",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 37129,
"upload_time": "2023-03-23T10:26:35",
"upload_time_iso_8601": "2023-03-23T10:26:35.294872Z",
"url": "https://files.pythonhosted.org/packages/a1/3d/f324cdd63d0af69c4661df5464d3ae49998a573cf7cac4bcc6b8982689bf/independent_vector_analysis-0.3.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5b8eac184e12f845e2c61391a20ca4757ec4f0c417bbdd9f98d545dcb67dfcdd",
"md5": "7ee9604ad1521a55034f3f91da903166",
"sha256": "11334ed1affa0a43ccc544d051b9e4747f8339346d4549c1e0a073e2fffda3cd"
},
"downloads": -1,
"filename": "independent_vector_analysis-0.3.3.tar.gz",
"has_sig": false,
"md5_digest": "7ee9604ad1521a55034f3f91da903166",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 25513,
"upload_time": "2023-03-23T10:26:40",
"upload_time_iso_8601": "2023-03-23T10:26:40.844334Z",
"url": "https://files.pythonhosted.org/packages/5b/8e/ac184e12f845e2c61391a20ca4757ec4f0c417bbdd9f98d545dcb67dfcdd/independent_vector_analysis-0.3.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-03-23 10:26:40",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "SSTGroup",
"github_project": "independent_vector_analysis",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "independent-vector-analysis"
}