{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# [Montbrio SDE model using Cupy](https://github.com/Ziaeemehr/vbi_paper/blob/main/docs/examples/mpr_sde_cupy.ipynb)\n", "\n", "Estimation of global coupling $G$.\n", "\n", "\"Open" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "import os\n", "import vbi\n", "import torch\n", "import numpy as np\n", "import networkx as nx\n", "from copy import deepcopy\n", "import sbi.utils as utils\n", "import matplotlib.pyplot as plt\n", "from sbi.analysis import pairplot\n", "from vbi.sbi_inference import Inference\n", "from vbi.models.cupy.mpr import MPR_sde\n", "\n", "import warnings\n", "warnings.filterwarnings(\"ignore\")" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "seed = 42\n", "np.random.seed(seed)\n", "path = \"output/mpr_sde_cupy_\"\n", "os.makedirs(path, exist_ok=True)\n", "LOAD_DATA = True" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "LABESSIZE = 10\n", "plt.rcParams['axes.labelsize'] = LABESSIZE\n", "plt.rcParams['xtick.labelsize'] = LABESSIZE\n", "plt.rcParams['ytick.labelsize'] = LABESSIZE" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "loading connectivity matrix" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "number of nodes: 88\n" ] } ], "source": [ "D = vbi.LoadSample(nn=88)\n", "weights = D.get_weights()\n", "nn = weights.shape[0]\n", "print(f\"number of nodes: {nn}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Simulating BOLD single for a sample value of $G$" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "TR = 300.0\n", "fs = 1 / (TR / 1000)\n", "t_cut = 20\n", "par = {\n", " \"G\": 0.506, # global coupling strength\n", " \"weights\": weights, # connection matrix\n", " \"method\": \"heun\", # integration method\n", " \"dt\": 0.01,\n", " \"t_cut\": 20_000,\n", " \"t_end\": 100_000, # [ms]\n", " \"num_sim\": 1, # number of simulations\n", " \"tr\": TR,\n", " \"rv_decimate\": 10,\n", " \"engine\": \"cpu\", # cpu or gpu\n", " \"seed\": seed, # seed for random number generator\n", " \"RECORD_RV\": True,\n", " \"RECORD_BOLD\": True,\n", "}" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Integrating: 0%| | 0/999999 [00:00" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "if fmri_d.ndim == 3:\n", " fig, ax = plt.subplots(3, figsize=(10, 5), sharex=True)\n", " ax[0].set_ylabel(\"BOLD\")\n", " ax[0].plot(fmri_t, fmri_d[:,:,0], lw=0.1)\n", " ax[0].margins(0, 0.1)\n", " ax[1].plot(rv_t, rv_d[:, :nn, 0], lw=0.1, alpha=0.1)\n", " ax[2].plot(rv_t, rv_d[:, nn:, 0], lw=0.1, alpha=0.1)\n", " ax[1].set_ylabel(\"r\")\n", " ax[2].set_ylabel(\"v\")\n", " ax[2].set_xlabel(\"Time [s]\")\n", " ax[1].margins(0, 0.01)\n", " plt.tight_layout()\n", " plt.show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Training data**\n", "\n", "- Uniform prior for $G$ and sampling from prior;\n", "- Selecting GPU as engine;\n", "- Storing training BOLD signals;\n", "- Extracting features from the simulated BOLD signals;\n", "- Visualizing some of the features;\n", "- Training NN and estimating parameter of G for given observed signal;\n", "- Visualising the posterior distribution.\n" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "num_sim = 512\n", "G_min, G_max = 0.0, 1.0\n", "\n", "prior_min = [G_min]\n", "prior_max = [G_max]\n", "prior = utils.torchutils.BoxUniform(\n", " low=torch.as_tensor(prior_min), high=torch.as_tensor(prior_max)\n", ")\n", "\n", "obj = Inference()\n", "theta = obj.sample_prior(prior, num_sim, seed=seed)\n", "\n", "par_batch = deepcopy(par)\n", "par_batch['G'] = theta.numpy().astype(np.float64).squeeze()\n", "par_batch['num_sim'] = num_sim\n", "par_batch['engine'] = 'gpu'\n", "par_batch['RECORD_RV'] = False" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['fmri_d', 'fmri_t', 'theta']\n" ] } ], "source": [ "if LOAD_DATA and os.path.exists(path + \"/bolds.npz\"):\n", " sol = np.load(path + \"/bolds.npz\")\n", " print(sol.files)\n", "else:\n", " obj = MPR_sde(par_batch)\n", " sol = obj.run()" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "fmri_d.shape = (266, 88, 512)\n", "fmri_t.shape = (266,)\n", "theta.shape = torch.Size([512, 1])\n", "bolds.shape = (512, 88, 266)\n" ] } ], "source": [ "fmri_d = sol[\"fmri_d\"]\n", "fmri_t = sol[\"fmri_t\"]\n", "fmri_d = fmri_d\n", "fmri_t = fmri_t\n", "bolds = np.transpose(fmri_d, (2, 1, 0))\n", "\n", "if not LOAD_DATA:\n", " np.savez(path + \"/bolds.npz\", fmri_d=bolds, fmri_t=fmri_t, theta=theta.numpy().squeeze())\n", "print(f\"fmri_d.shape = {fmri_d.shape}\")\n", "print(f\"fmri_t.shape = {fmri_t.shape}\")\n", "print(f\"theta.shape = {theta.shape}\")\n", "print(f\"bolds.shape = {bolds.shape}\")" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "torch.Size([512])" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "theta = np.load(path + \"/bolds.npz\")[\"theta\"]\n", "theta = torch.tensor(theta).float()\n", "theta.shape" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Selected features:\n", "------------------\n", "■ Domain: connectivity\n", " ▢ Function: fcd_stat\n", " ▫ description: Extracts features from dynamic functional connectivity (FCD)\n", " ▫ function : vbi.feature_extraction.features.fcd_stat\n", " ▫ parameters : {'TR': 1.0, 'win_len': 30, 'positive': False, 'eigenvalues': True, 'masks': None, 'verbose': False, 'pca_num_components': 3, 'quantiles': [0.05, 0.25, 0.5, 0.75, 0.95], 'k': None, 'features': ['sum', 'max', 'min', 'mean', 'std', 'skew', 'kurtosis']}\n", " ▫ tag : ['fmri', 'eeg', 'meg']\n", " ▫ use : yes\n" ] } ], "source": [ "from vbi import (\n", " get_features_by_domain,\n", " get_features_by_given_names,\n", " report_cfg,\n", " extract_features,\n", ")\n", "\n", "cfg = get_features_by_domain(\"connectivity\")\n", "cfg = get_features_by_given_names(cfg, [\"fcd_stat\"])\n", "report_cfg(cfg)" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 512/512 [00:04<00:00, 108.12it/s]\n" ] }, { "data": { "application/vnd.microsoft.datawrangler.viewer.v0+json": { "columns": [ { "name": "index", "rawType": "int64", "type": "integer" }, { "name": "fcd_full_sum", "rawType": "float64", "type": "float" }, { "name": "fcd_full_ut_std", "rawType": "float64", "type": "float" }, { "name": "G", "rawType": "float32", "type": "float" } ], "ref": "9e6c644e-daa6-4be4-b502-98cf2b3c4577", "rows": [ [ "0", "7322.4306640625", "0.03303716331720352", "0.4294045" ], [ "1", null, null, "0.8854429" ], [ "2", "7455.4052734375", "0.032545045018196106", "0.57390445" ], [ "3", "6776.82421875", "0.025232113897800446", "0.26658005" ], [ "4", "7109.46142578125", "0.025810761377215385", "0.62744915" ] ], "shape": { "columns": 3, "rows": 5 } }, "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
fcd_full_sumfcd_full_ut_stdG
07322.4306640.0330370.429404
1NaNNaN0.885443
27455.4052730.0325450.573904
36776.8242190.0252320.266580
47109.4614260.0258110.627449
\n", "
" ], "text/plain": [ " fcd_full_sum fcd_full_ut_std G\n", "0 7322.430664 0.033037 0.429404\n", "1 NaN NaN 0.885443\n", "2 7455.405273 0.032545 0.573904\n", "3 6776.824219 0.025232 0.266580\n", "4 7109.461426 0.025811 0.627449" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = extract_features(bolds, fs, cfg, n_workers=10, output_type=\"dataframe\")\n", "df = df[[\"fcd_full_sum\", \"fcd_full_ut_std\"]]\n", "df['G'] = theta.numpy().squeeze()\n", "df.to_csv(path + \"/g_cupy_features.csv\", index=False)\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['fcd_full_sum', 'fcd_full_ut_std', 'G'], dtype='object')" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.columns" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxwAAAEiCAYAAABz6NT8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAACo+UlEQVR4nOzdeZgV5Znw/2/V2bfe96ZZG1SQxQVUVBD3uMVkHKOjr0tiTDK+zm/ilXFidEQTEzPJjFkm7zhREyWZMRo1GVHjFhVQUAEXNoGmobvpvft0nz77Vsvvj+pz6IZmFehG78919aXUqVNV59DUU/dzP8/9KKZpmgghhBBCCCHEEaCO9gUIIYQQQgghPrsk4BBCCCGEEEIcMRJwCCGEEEIIIY4YCTiEEEIIIYQQR4wEHEIIIYQQQogjRgIOIYQQQgghxBEjAYcQQgghhBDiiJGAQwghhBBCCHHESMAhhBBCCCGEOGIk4BBCCCGE+JQUReGcc875VMdYtmwZiqJw3333HfB7zjnnHBRFGbbtiSeeQFEUnnjiiU91PUIcLhJwiM+N5uZmFEXZ589IGhoauP3225kxYwYFBQW4XC7Gjx/PVVddxXPPPYdhGPl9czf53I+qqhQUFDBp0iS++MUv8h//8R/09/cfrY8shBDiUzjUdmOsOhxBkRCHwj7aFyDE0TZlyhSuv/76A9r33//93/nnf/5nDMPgrLPO4oILLsDr9dLa2spf//pXnnvuOb761a/ym9/8Ztj7zjvvPM466ywAYrEYbW1tvP322yxdupTFixfz61//mr/927897J9NCCHE4Xcw7canMW/ePDZv3kxZWdmnOs6XvvQlTj/9dKqrqw/TlQnx6UjAIT536uvrDyhd/cgjj/Cd73yHiRMn8txzz3HyyScPe13TNJYsWcLbb7+9x3vPP/98vvvd7w7bpus6TzzxBLfffjvXXnsthYWFXHjhhZ/qswghhDjyDrTd+LS8Xi/HH3/8pz5OYWEhhYWFh+GKhDg8ZEiVECMIh8P80z/9E06nk5deemmPYAPAbrfzta99jV//+tcHdEybzcbXvvY1/uu//gtd17njjjswTXO/70ulUvz7v/87s2fPprCwEL/fz5QpU7j22mvZsGFDfr/77rsPRVFYtmzZHscYaTxvbqjATTfdxObNm7nssssoKiqiuLiYa6+9lmAwCMD777/PBRdcQEFBAcXFxXz9618nHo8f0GcWQojPs5HmV+TcdNNNKIpCc3Nzftu+5nC88847LFy4EJ/PR2lpKV/5yldobW0d8di73/NzxwVYvnz5sCFhTzzxBI8//jiKovDTn/50xOP95S9/QVEU/r//7/878A8vxBAScAgxgmeeeYZIJMJVV13F9OnT97mvy+U6qGNff/31TJw4kU2bNrFx48b97n/jjTfyne98B4Cbb76Z2267jXnz5vHWW2/xwQcfHNS5R9LU1MT8+fNJp9PccsstzJ49m6eeeoorr7ySlStXsmjRIrxeL7feeitTpkzhscce4x//8R8/9XmFEEIcmDfeeINzzz2X999/n6uuuopbb72VpqYmzjzzTEKh0H7fP3HiRBYvXgzAhAkTWLx4cf5nzpw5fOUrX6GwsJDHHntsxPfntt9yyy2H70OJzxUZUiU+dxobG0fsPbr44os5/fTTAVi5ciUA55577mE/v6qqnH322TQ3N7NmzRpmzpy5133D4TDPPPMMp556Ku+99x42my3/mq7rRKPRT309K1as4Oc//3m+58o0TS677DL+8pe/cNlll/GHP/yBL37xiwBks1lOPfVUlixZwgMPPEBlZeWnPr8QQox1B9JuHCmGYXDrrbeiaRorVqzIzw80TZPrr7+eJ598cr/HmDhxIvfddx/3339//v93d/311/P//t//Y8WKFSxYsCC/vaenhxdffJHTTjttn+2VEPsiAYf43Nm+fTv333//HtuLioryDUdXVxcA48aNOyLXUFNTA5AftrQ3iqJgmiYul2tYsAHWEK2ioqJPfS2TJ0/m9ttvH3bOa665hr/85S+cdNJJ+WADwOFwcNVVV3HvvfeyefNmCTiEEJ8LB9JuHCnvvPMOO3bs4PLLL88HG2Ddq3/0ox/x9NNPo+v6pz7PN77xDf7f//t/PPbYY8MCjiVLlpDNZvn617/+qc8hPr9kSJX43LnoooswTXOPn6M5TOhA5m4AFBQUcPHFF7Ny5UpOPvlkfvSjH/H222+TyWQO27XMnj0bVR1+K8hVNpkzZ84e++dea29vP2zXIIQQY9lothvr1q0D4Oyzz97jtQkTJlBXV3dYzjNz5kzOOOMMnn32WcLhcH77b3/7W/x+P1/5ylcOy3nE55MEHEKMoKqqCjhyD9WdnZ0AlJeX73ffZ599lu9973sMDAxw9913s2DBAsrKyvjHf/xHEonEp76WgoKCPbbZ7fb9vpbNZj/1uYUQQuxb7uG/oqJixNcPZ6b51ltvJZlM8j//8z+AlV3ZsmUL1157LX6//7CdR3z+SMAhxAjOPPNMwJqod7gZhsGKFSsAmDt37n739/l8/PCHP2THjh3s2LGD3/zmNxx//PH84he/4Nvf/nZ+v1yWQtO0PY4xtLdKCCHE0XE47su58rY9PT0jvt7d3X2IV7enr3zlKxQVFeUnief+K8OpxKclAYcQI7jqqqsoKCjgueeeY8uWLfvcN51OH9Sxf//739PS0sLMmTOZMWPGQb130qRJfPWrX2X58uX4/X6WLl2af624uBgYOSvz0UcfHdR5hBBCfHp7uy8bhpEfKrU/s2fPBhhxzaeWlpa9lsYdiaqq+5zv4fF4uP766/noo49Yvnw5zzzzDLNmzTqgzjEh9kUCDiFGUFRUxE9/+lPS6TSXXnopH3/88R776LrOkiVL+OY3v3lAx9R1nd/+9rd861vfwmaz8dBDD+21PntOb28vq1ev3mN7KBQinU7j8Xjy20499VQAfve732EYRn77u+++m0+PCyGEOHpy9+WhayABPPTQQzQ1NR3QMc466ywmTZrEiy++yDvvvJPfbpom3/ve9w5qwnhJSQltbW373Ocb3/gGAH/3d39HIpGQ7IY4LKRKlRB7ceuttxKJRPjud7/LySefzIIFCzjppJPweDy0t7fzxhtv0N7ePmJd8r/+9a+kUikAEokEbW1trFixgvb2dkpKSvj973/P+eefv99raG9v57TTTmPGjBmcfPLJ1NbW0tfXx/PPP082m+XOO+/M73v66adzxhln8Oabb3LGGWewYMECWlpaWLp0KZdffjl//vOfD9+XI4QQYr9uvvlmfvKTn3Dffffx8ccfM2XKFNauXcvGjRtZuHAhy5cv3+8xVFXlkUce4ZJLLuH888/nK1/5CjU1Nbz55pt0dnYya9Ys1q9ff0DXc+655/LHP/6Rq666ipNOOgmbzcall146rNztiSeeyPz581m1ahVut5vrr7/+kD+/EDkScAixD9/5zne44oor+I//+A/efPNNHnvsMdLpNBUVFcydO5df/OIXfPnLX97jfW+88QZvvPEGiqLg8/koKyvj5JNP5rvf/S7XXXddPs2+P7l66W+++SZ//etf6evryx/r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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "LABELSIZE = 14\n", "plt.rc('axes', labelsize=LABELSIZE)\n", "plt.rc('axes', titlesize=LABELSIZE)\n", "plt.rc('figure', titlesize=LABELSIZE)\n", "plt.rc('legend', fontsize=LABELSIZE)\n", "plt.rc('xtick', labelsize=LABELSIZE)\n", "plt.rc('ytick', labelsize=LABELSIZE)\n", "\n", "f_kwargs = {\n", " \"lw\": 1,\n", " \"alpha\": 0.5,\n", " \"marker\": \"o\",\n", " \"linestyle\": \"\",\n", " \"markerfacecolor\": \"none\",\n", "}\n", "\n", "fig, ax = plt.subplots(1,2, figsize=(8, 3))\n", "ax[0].plot(df[\"G\"], df[\"fcd_full_sum\"], **f_kwargs)\n", "ax[1].plot(df[\"G\"], df[\"fcd_full_ut_std\"]**2, **f_kwargs)\n", "\n", "titles = [\"FCD sum\", \"Fluidity\"]\n", "for i in range(2):\n", " ax[i].set_xlabel(\"G\")\n", " ax[i].set_title(titles[i])\n", "plt.tight_layout()" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [], "source": [ "# drop G column\n", "X = df.drop(columns=[\"G\"]).values\n", "X = torch.tensor(X, dtype=torch.float32)" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:root:Found 146 NaN simulations and 0 Inf simulations. They will be excluded from training.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Neural network successfully converged after 265 epochs.train Done in 0 hours 0 minutes 06.043956 seconds\n" ] } ], "source": [ "obj_inf = Inference()\n", "posterior = obj_inf.train(theta, X, prior=prior, num_threads=4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Observation point" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 1/1 [00:00<00:00, 8.79it/s]\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e6f49dda85034b8b9bdf02b65a4f3d48", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/10000 [00:00" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "bold_obs = np.load(path+\"/bold_obs.npz\")['fmri_d']\n", "bold_obs = np.transpose(bold_obs, (2, 1, 0))\n", "\n", "\n", "x_obs = extract_features(bold_obs, 0.3, cfg, output_type=\"dataframe\")\n", "x_obs = x_obs[[\"fcd_full_sum\", \"fcd_full_ut_std\"]].values\n", "samples = obj_inf.sample_posterior(x_obs, 10000, posterior)\n", "\n", "limits = [[i, j] for i, j in zip(prior_min, prior_max)]\n", "fig, ax = pairplot(\n", " samples,\n", " points=[par['G']],\n", " figsize=(5, 5),\n", " limits=limits,\n", " labels=[\"G\"],\n", " diag=\"kde\",\n", " fig_kwargs=dict(\n", " points_offdiag=dict(marker=\"*\", markersize=10),\n", " points_colors=[\"g\"],\n", " ),\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 2 }