.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/example_mcca.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_examples_example_mcca.py: Multiway canonical correlation analysis (mCCA) ============================================== Find a set of components which are shared between different datasets. Uses meegkit.cca.mmca() .. GENERATED FROM PYTHON SOURCE LINES 10-17 .. code-block:: Python import matplotlib.pyplot as plt import numpy as np from meegkit import cca rng = np.random.default_rng(5) .. GENERATED FROM PYTHON SOURCE LINES 18-22 First example ----------------------------------------------------------------------------- We create 3 uncorrelated data sets. There should be no common structure between them. .. GENERATED FROM PYTHON SOURCE LINES 24-25 Build data .. GENERATED FROM PYTHON SOURCE LINES 25-32 .. code-block:: Python x1 = rng.standard_normal((10000, 10)) x2 = rng.standard_normal((10000, 10)) x3 = rng.standard_normal((10000, 10)) x = np.hstack((x1, x2, x3)) C = np.dot(x.T, x) print(f"Aggregated data covariance shape: {C.shape}") .. rst-class:: sphx-glr-script-out .. code-block:: none Aggregated data covariance shape: (30, 30) .. GENERATED FROM PYTHON SOURCE LINES 33-34 Apply CCA .. GENERATED FROM PYTHON SOURCE LINES 34-37 .. code-block:: Python [A, score, AA] = cca.mcca(C, 10) z = x.dot(A) .. GENERATED FROM PYTHON SOURCE LINES 38-39 Plot results .. GENERATED FROM PYTHON SOURCE LINES 39-51 .. code-block:: Python f, axes = plt.subplots(1, 3, figsize=(12, 4)) axes[0].imshow(A, aspect="auto") axes[0].set_title("mCCA transform matrix") axes[1].imshow(A.T.dot(C.dot(A)), aspect="auto") axes[1].set_title("Covariance of\ntransformed data") axes[2].imshow(x.T.dot(x.dot(A)), aspect="auto") axes[2].set_title("Cross-correlation between\nraw & transformed data") axes[2].set_xlabel("transformed") axes[2].set_ylabel("raw") plt.plot(np.mean(z ** 2, axis=0)) plt.show() .. image-sg:: /auto_examples/images/sphx_glr_example_mcca_001.png :alt: mCCA transform matrix, Covariance of transformed data, Cross-correlation between raw & transformed data :srcset: /auto_examples/images/sphx_glr_example_mcca_001.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 52-55 Second example ----------------------------------------------------------------------------- Now Create 3 data sets with some shared parts. .. GENERATED FROM PYTHON SOURCE LINES 57-58 Build data .. GENERATED FROM PYTHON SOURCE LINES 58-66 .. code-block:: Python x1 = rng.standard_normal((10000, 5)) x2 = rng.standard_normal((10000, 5)) x3 = rng.standard_normal((10000, 5)) x4 = rng.standard_normal((10000, 5)) x = np.hstack((x2, x1, x3, x1, x4, x1)) C = np.dot(x.T, x) print(f"Aggregated data covariance shape: {C.shape}") .. rst-class:: sphx-glr-script-out .. code-block:: none Aggregated data covariance shape: (30, 30) .. GENERATED FROM PYTHON SOURCE LINES 67-68 Apply mCCA .. GENERATED FROM PYTHON SOURCE LINES 68-70 .. code-block:: Python A, score, AA = cca.mcca(C, 10) .. GENERATED FROM PYTHON SOURCE LINES 71-72 Plot results .. GENERATED FROM PYTHON SOURCE LINES 72-83 .. code-block:: Python f, axes = plt.subplots(1, 3, figsize=(12, 4)) axes[0].imshow(A, aspect="auto") axes[0].set_title("mCCA transform matrix") axes[1].imshow(A.T.dot(C.dot(A)), aspect="auto") axes[1].set_title("Covariance of\ntransformed data") axes[2].imshow(x.T.dot(x.dot(A)), aspect="auto") axes[2].set_title("Cross-correlation between\nraw & transformed data") axes[2].set_xlabel("transformed") axes[2].set_ylabel("raw") plt.show() .. image-sg:: /auto_examples/images/sphx_glr_example_mcca_002.png :alt: mCCA transform matrix, Covariance of transformed data, Cross-correlation between raw & transformed data :srcset: /auto_examples/images/sphx_glr_example_mcca_002.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 84-90 Third example ----------------------------------------------------------------------------- Finally let's create 3 identical 10-channel data sets. Only 10 worthwhile components should be found, and the transformed dataset should perfectly explain all the variance (empty last two block-columns in the cross-correlation plot). .. GENERATED FROM PYTHON SOURCE LINES 92-93 Build data .. GENERATED FROM PYTHON SOURCE LINES 93-98 .. code-block:: Python x1 = rng.standard_normal((10000, 10)) x = np.hstack((x1, x1, x1)) C = np.dot(x.T, x) print(f"Aggregated data covariance shape: {C.shape}") .. rst-class:: sphx-glr-script-out .. code-block:: none Aggregated data covariance shape: (30, 30) .. GENERATED FROM PYTHON SOURCE LINES 99-100 Compute mCCA .. GENERATED FROM PYTHON SOURCE LINES 100-102 .. code-block:: Python A, score, AA = cca.mcca(C, 10) .. GENERATED FROM PYTHON SOURCE LINES 103-104 Plot results .. GENERATED FROM PYTHON SOURCE LINES 104-114 .. code-block:: Python f, axes = plt.subplots(1, 3, figsize=(12, 4)) axes[0].imshow(A, aspect="auto") axes[0].set_title("mCCA transform matrix") axes[1].imshow(A.T.dot(C.dot(A)), aspect="auto") axes[1].set_title("Covariance of\ntransformed data") axes[2].imshow(x.T.dot(x.dot(A)), aspect="auto") axes[2].set_title("Cross-correlation between\nraw & transformed data") axes[2].set_xlabel("transformed") axes[2].set_ylabel("raw") plt.show() .. image-sg:: /auto_examples/images/sphx_glr_example_mcca_003.png :alt: mCCA transform matrix, Covariance of transformed data, Cross-correlation between raw & transformed data :srcset: /auto_examples/images/sphx_glr_example_mcca_003.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.579 seconds) .. _sphx_glr_download_auto_examples_example_mcca.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: example_mcca.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: example_mcca.py ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_