independent-vector-analysis


Nameindependent-vector-analysis JSON
Version 0.3.3 PyPI version JSON
download
home_pagehttps://github.com/SSTGroup/independent_vector_analysis
SummaryImplementation of IVA-G and IVA-L-SOS
upload_time2023-03-23 10:26:40
maintainer
docs_urlNone
authorIsabell Lehmann
requires_python>=3.6
licenseLICENSE
keywords iva independent vector analysis bss multiset analysis
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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]&#40;https://github.com/tensorly/tensorly/issues&#41;, or better yet, a [pull-request]&#40;https://github.com/tensorly/tensorly/pulls>&#41;!)

## 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]&#40;https://github.com/tensorly/tensorly/issues&#41;, or better yet, a [pull-request]&#40;https://github.com/tensorly/tensorly/pulls>&#41;!)\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"
}
        
Elapsed time: 0.04839s