From ecf65515b8de849675125b8b1ce536c7046b561e Mon Sep 17 00:00:00 2001 From: Oscar Esteban Date: Thu, 10 Mar 2022 21:42:05 +0100 Subject: [PATCH] enh: transfer notebooks from mriqc and implement api client --- docs/notebooks/MRIQC Web API.ipynb | 333 ++++++++++++ docs/notebooks/MRIQC-workbook.ipynb | 499 ++++++++++++++++++ docs/notebooks/Paper-v1.0.ipynb | 331 ++++++++++++ docs/notebooks/Paper-v2.0.ipynb | 539 ++++++++++++++++++++ docs/notebooks/SpikesPlotter.ipynb | 143 ++++++ docs/notebooks/Supplemental Materials.ipynb | 135 +++++ docs/notebooks/finding_spikes.ipynb | 329 ++++++++++++ mriqc_learn/datasets/webapi.py | 65 +++ 8 files changed, 2374 insertions(+) create mode 100644 docs/notebooks/MRIQC Web API.ipynb create mode 100644 docs/notebooks/MRIQC-workbook.ipynb create mode 100644 docs/notebooks/Paper-v1.0.ipynb create mode 100644 docs/notebooks/Paper-v2.0.ipynb create mode 100644 docs/notebooks/SpikesPlotter.ipynb create mode 100644 docs/notebooks/Supplemental Materials.ipynb create mode 100644 docs/notebooks/finding_spikes.ipynb create mode 100644 mriqc_learn/datasets/webapi.py diff --git a/docs/notebooks/MRIQC Web API.ipynb b/docs/notebooks/MRIQC Web API.ipynb new file mode 100644 index 0000000..de0bded --- /dev/null +++ b/docs/notebooks/MRIQC Web API.ipynb @@ -0,0 +1,333 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Querying the MRIQC Web API\n", + "\n", + "This notebook shows how the web-API can be leveraged to analyze the image quality metrics (IQMs) that have been extracted with MRIQC\n", + "\n", + "This notebook is a derivative work of https://gist.github.com/chrisfilo/eccdb8b98f8e74d24a3395a49fbadf03" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from json import load\n", + "import urllib.request, json \n", + "from pandas.io.json import json_normalize\n", + "import seaborn as sns\n", + "import pylab as plt\n", + "import multiprocessing as mp\n", + "import numpy as np\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preparation\n", + "\n", + "Let's define a function that will query the appropriate endpoint and a helper function to plot some distributions (at the bottom of this notebook)." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def get_iqms(modality, versions=None, software='mriqc'):\n", + " \"\"\"\n", + " Grab all iqms for the given modality and the list of versions\n", + " \"\"\"\n", + " url_root = 'https://mriqc.nimh.nih.gov/api/v1/{modality}?{query}'\n", + " page = 1\n", + " dfs = []\n", + " \n", + " if versions is None:\n", + " versions = ['*']\n", + "\n", + " for version in versions:\n", + " while True:\n", + " query = []\n", + " \n", + " if software is not None:\n", + " query.append('\"provenance.software\":\"%s\"' % software)\n", + " \n", + " if version != '*':\n", + " query.append('\"provenance.version\":\"%s\"' % version)\n", + " \n", + " page_url = url_root.format(\n", + " modality=modality,\n", + " query='where={%s}&page=%d' % (','.join(query), page)\n", + " )\n", + " with urllib.request.urlopen(page_url) as url:\n", + " data = json.loads(url.read().decode())\n", + " dfs.append(json_normalize(data['_items']))\n", + " if 'next' not in data['_links'].keys():\n", + " break\n", + " else:\n", + " page += 1\n", + "\n", + " # Compose a pandas dataframe\n", + " return pd.concat(dfs, ignore_index=True)\n", + "\n", + "\n", + "def plot_measure(data, xlabel=None, label=None, ax=None, min=None, max=None):\n", + " \"\"\"\n", + " Distribution plot of a given measure\n", + " \"\"\"\n", + " sns.distplot(data, ax=ax, label=label)\n", + " \n", + " if xlabel is not None:\n", + " ax.set_xlabel(xlabel)\n", + " \n", + " if min is None:\n", + " min = np.percentile(data, 0.5)\n", + " \n", + " if max is None:\n", + " max = np.percentile(data, 99.5)\n", + " ax.set_xlim((min, max))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fetch IQMs\n", + "\n", + "Let's fetch IQMs for the two principal modalities of MRIQC, T1-weighted images and BOLD-fMRI. Filter out repeated images to obtain unique records." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# T1\n", + "df_t1w = get_iqms('T1w', software=None)\n", + "df_t1w_unique = df_t1w.drop_duplicates(subset=['provenance.md5sum'])\n", + "\n", + "# BOLD\n", + "df_bold = get_iqms('bold')\n", + "df_bold_unique = df_bold.drop_duplicates(subset=['provenance.md5sum'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Evolution of IQMs submission\n", + "\n", + "This code generates Figure 3A of the abstract" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import datetime\n", + "from dateutil import parser\n", + "import matplotlib.dates as mdates\n", + "\n", + "dates_t1w = [parser.parse(d) for d in df_t1w['_created'].values]\n", + "dates_t1w.sort()\n", + "\n", + "dates_t1w_u = [parser.parse(d) for d in df_t1w_unique['_created'].values]\n", + "dates_t1w_u.sort()\n", + "# mindate = dates_t1w[0]\n", + "ax = plt.subplot(111)\n", + "ax.plot(dates_t1w, list(range(1, len(dates_t1w) + 1)), label='total')\n", + "ax.plot(dates_t1w_u, list(range(1, len(dates_t1w_u) + 1)), label='unique')\n", + "ax.set_title('Number of T1w records in database')\n", + "ax.legend()\n", + "\n", + "plt.savefig(\"fig03a-0.svg\", bbox_inches='tight', transparent=False, pad_inches=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "dates_bold = [parser.parse(d) for d in df_bold['_created'].values]\n", + "dates_bold.sort()\n", + "dates_bold_u = [parser.parse(d) for d in df_bold_unique['_created'].values]\n", + "dates_bold_u.sort()\n", + "# mindate = dates_t1w[0]\n", + "ax = plt.subplot(111)\n", + "ax.plot(dates_bold, list(range(1, len(dates_bold) + 1)), label='total')\n", + "ax.plot(dates_bold_u, list(range(1, len(dates_bold_u) + 1)), label='unique')\n", + "ax.set_title('Number of BOLD records in database')\n", + "ax.legend()\n", + "plt.savefig(\"fig03a-1.svg\", bbox_inches='tight', transparent=False, pad_inches=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Playing with T1w IQMs\n", + "\n", + "Let's plot some of the IQMs for the T1w modality. First, let's check the names of the IQMs. These measures are explained in the documentation (http://mriqc.readthedocs.io/en/stable/iqms/t1w.html)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "cjv,cnr,efc,fber,fwhm_avg,fwhm_x,fwhm_y,fwhm_z,icvs_csf,icvs_gm,icvs_wm,inu_med,inu_range,qi_1,qi_2,rpve_csf,rpve_gm,rpve_wm,size_x,size_y,size_z,snr_csf,snr_gm,snr_total,snr_wm,snrd_csf,snrd_gm,snrd_total,snrd_wm,spacing_x,spacing_y,spacing_z,summary_bg_k,summary_bg_mad,summary_bg_mean,summary_bg_median,summary_bg_n,summary_bg_p05,summary_bg_p95,summary_bg_stdv,summary_csf_k,summary_csf_mad,summary_csf_mean,summary_csf_median,summary_csf_n,summary_csf_p05,summary_csf_p95,summary_csf_stdv,summary_gm_k,summary_gm_mad,summary_gm_mean,summary_gm_median,summary_gm_n,summary_gm_p05,summary_gm_p95,summary_gm_stdv,summary_wm_k,summary_wm_mad,summary_wm_mean,summary_wm_median,summary_wm_n,summary_wm_p05,summary_wm_p95,summary_wm_stdv,tpm_overlap_csf,tpm_overlap_gm,tpm_overlap_wm,wm2max\n" + ] + } + ], + "source": [ + "print(','.join([l for l in df_t1w.columns \n", + " if not l.startswith('_') and not l.startswith('bids_meta') and not l.startswith('provenance')]))" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "f, ax = plt.subplots(1, 5, figsize=(25,5))\n", + "plot_measure(df_t1w_unique.cjv, xlabel='Coefficient of joint variation (CJV)', ax=ax[0])\n", + "plot_measure(df_t1w_unique.cnr, xlabel='Contrast-to-noise ratio (CNR)', ax=ax[1])\n", + "plot_measure(df_t1w_unique.snr_wm, xlabel='Signal-to-noise ratio estimated on the white-matter (SNR)', ax=ax[2])\n", + "plot_measure(df_t1w_unique.fwhm_avg, xlabel='Smoothness (FWHM)', ax=ax[3])\n", + "plot_measure(df_t1w_unique.wm2max, xlabel='WM-to-max intensity ratio (WM2MAX)', ax=ax[4])\n", + "plt.suptitle('Distributions of some IQMs extracted from T1-weighted MRI')\n", + "plt.savefig(\"fig03b-0.svg\", bbox_inches='tight', transparent=False, pad_inches=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Playing with BOLD IQMs\n", + "\n", + "Let's plot some of the IQMs for the BOLD modality. First, let's check the names of the IQMs. These measures are explained in the documentation (http://mriqc.readthedocs.io/en/stable/iqms/bold.html)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "aor,aqi,dummy_trs,dvars_nstd,dvars_std,dvars_vstd,efc,fber,fd_mean,fd_num,fd_perc,fwhm_avg,fwhm_x,fwhm_y,fwhm_z,gcor,gsr_x,gsr_y,size_t,size_x,size_y,size_z,snr,spacing_tr,spacing_x,spacing_y,spacing_z,summary_bg_k,summary_bg_mad,summary_bg_mean,summary_bg_median,summary_bg_n,summary_bg_p05,summary_bg_p95,summary_bg_stdv,summary_fg_k,summary_fg_mad,summary_fg_mean,summary_fg_median,summary_fg_n,summary_fg_p05,summary_fg_p95,summary_fg_stdv,tsnr\n" + ] + } + ], + "source": [ + "print(','.join([l for l in df_bold.columns \n", + " if not l.startswith('_') and not l.startswith('bids_meta') and not l.startswith('provenance')]))" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "f, ax = plt.subplots(1, 5, figsize=(25,5))\n", + "plot_measure(df_bold_unique[df_bold_unique.fd_mean < 10].fd_mean, xlabel='Framewise Displacement (mm)', max=2, ax=ax[0])\n", + "plot_measure(df_bold_unique[df_bold_unique.dvars_nstd < 100].dvars_nstd, xlabel='DVARS', ax=ax[1])\n", + "plot_measure(df_bold_unique.gcor, xlabel='Global correlation', ax=ax[2])\n", + "plot_measure(df_bold_unique.gsr_x, label='x-axis', ax=ax[3])\n", + "plot_measure(df_bold_unique.gsr_y, xlabel='Ghost-to-signal ratio (GSR)', label='y-axis', ax=ax[3])\n", + "ax[3].legend()\n", + "plot_measure(df_bold_unique.tsnr, xlabel='Temporal SNR (tSNR)', ax=ax[4])\n", + "plt.suptitle('Distributions of some IQMs extracted from BOLD fMRI')\n", + "plt.savefig(\"fig03b-1.png\", bbox_inches='tight', transparent=False, pad_inches=0, facecolor='white')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/notebooks/MRIQC-workbook.ipynb b/docs/notebooks/MRIQC-workbook.ipynb new file mode 100644 index 0000000..d8e6c89 --- /dev/null +++ b/docs/notebooks/MRIQC-workbook.ipynb @@ -0,0 +1,499 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "%load_ext autoreload\n", + "%autoreload 2\n", + "import os.path as op\n", + "import numpy as np\n", + "import pandas as pd\n", + "from mriqc.viz.misc import (\n", + " raters_variability_plot, plot_abide_stripplots, plot_corrmat, plot_histograms, figure1, plot_batches\n", + ")\n", + "from pkg_resources import resource_filename as pkgrf\n", + "from mriqc.classifier.data import read_dataset, combine_datasets\n", + "import matplotlib.pyplot as plt\n", + "from matplotlib.gridspec import GridSpec\n", + "import seaborn as sn\n", + "sn.set(style=\"whitegrid\")\n", + "\n", + "out_path = op.abspath('results')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "x_path = pkgrf('mriqc', 'data/csv/x_abide.csv')\n", + "y_path = pkgrf('mriqc', 'data/csv/y_abide.csv')\n", + "ds030_x_path = pkgrf('mriqc', 'data/csv/x_ds030.csv')\n", + "ds030_y_path = pkgrf('mriqc', 'data/csv/y_ds030.csv')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Testing sklearn's splits" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from sklearn.model_selection import PredefinedSplit\n", + "naive_x = np.array(list(range(20)))\n", + "naive_y = np.zeros(15).tolist() + np.ones(5).tolist()\n", + "\n", + "ps = PredefinedSplit(test_fold=(np.array(naive_y) - 1).tolist())\n", + "print(ps.get_n_splits(naive_x, naive_y))\n", + "\n", + "for train_index, test_index in ps.split():\n", + " print(train_index)\n", + " print(test_index)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from mriqc.classifier.sklearn._split import RepeatedPartiallyHeldOutKFold\n", + "\n", + "train_y = fulldata[['rater_1']].values.ravel()\n", + "groups = (fulldata.site == 'UM').astype(int)\n", + "sp = RepeatedPartiallyHeldOutKFold(n_splits=3).split(fulldata.values, y=train_y, groups=groups)\n", + "\n", + "for i, (train_index, test_index) in enumerate(sp):\n", + "# print(len(train_index), len(test_index))\n", + " y = train_y[test_index]\n", + " unique_y, y_inversed = np.unique(y, return_inverse=True)\n", + " y_counts = np.bincount(y_inversed)\n", + "# print(\"Counts[%d]:\" % i, y_counts)\n", + "\n", + "from sklearn.model_selection import StratifiedKFold\n", + "from mriqc.classifier.sklearn._split import RepeatedBalancedKFold\n", + "\n", + "train_y = fulldata[['rater_1']].values.ravel()\n", + "sp = RepeatedBalancedKFold(n_splits=10, n_repeats=5).split(fulldata[coi], y=train_y)\n", + "\n", + "for i, (train_index, test_index) in enumerate(sp):\n", + " y = train_y[test_index]\n", + " unique_y, y_inversed = np.unique(y, return_inverse=True)\n", + " y_counts = np.bincount(y_inversed)\n", + " print(\"Counts[%d]:\" % i, y_counts)\n", + " \n", + "from mriqc.classifier.sklearn._split import RobustLeavePGroupsOut\n", + "\n", + "sites = fulldata[['site']].values.ravel().tolist()\n", + "sitenames = list(set(sites))\n", + "groups = [sitenames.index(s) for s in sites]\n", + "cv = RobustLeavePGroupsOut(n_groups=1)\n", + "cvs = cv.split(fulldata[coi], y=fulldata[['rater_1']].values.ravel().tolist(), groups=groups)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Testing new preprocessing steps" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from mriqc.classifier.sklearn import preprocessing as mcsp\n", + "select = mcsp.SiteCorrelationSelector()\n", + "selected = select.fit_transform(scaled[features + ['site']].values, None)\n", + "try1 = scaled[features + ['site']].columns[select.mask_].ravel().tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "print('Removed %s:\\n' % sorted(list(set(features) - set(try1))))\n", + "print('Kept %s:\\n' % sorted(try1))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "print(try1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from mriqc.classifier.sklearn import preprocessing as mcsp\n", + "\n", + "select = mcsp.CustFsNoiseWinnow()\n", + "selected = select.fit_transform(fulldata[features].values, fulldata.rater_1.values)\n", + "try1 = fulldata[features].columns[select.mask_].ravel().tolist()\n", + "\n", + "select2 = mcsp.CustFsNoiseWinnow()\n", + "selected2 = select2.fit_transform(fulldata[features].values, fulldata.rater_1.values)\n", + "try2 = fulldata[features].columns[select.mask_].ravel().tolist()\n", + "\n", + "select3 = mcsp.CustFsNoiseWinnow()\n", + "selected3 = select3.fit_transform(fulldata[features].values, fulldata.rater_1.values)\n", + "try3 = fulldata[features].columns[select.mask_].ravel().tolist()\n", + "\n", + "select4 = mcsp.CustFsNoiseWinnow()\n", + "selected4 = select4.fit_transform(fulldata[features].values, fulldata.rater_1.values)\n", + "try4 = fulldata[features].columns[select.mask_].ravel().tolist()\n", + "\n", + "intersection = set(try1) & set(try2) & set(try3) & set(try4)\n", + "print(list(sorted(intersection)))\n", + "print(len(intersection))\n", + "print(list(sorted(set(features) - intersection)))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from sklearn.preprocessing import LabelBinarizer\n", + "from sklearn.metrics import roc_auc_score\n", + "from sklearn.ensemble import ExtraTreesClassifier, ExtraTreesRegressor\n", + "from sklearn.model_selection import train_test_split\n", + "\n", + "selmask = fulldata[features].columns.isin(intersection)\n", + "selmask = np.zeros(len(features), dtype=bool)\n", + "selmask[[0, 1, 2, 10]] = True\n", + "\n", + "X = fulldata[features].values\n", + "binarize = LabelBinarizer()\n", + "y = binarize.fit_transform(fulldata.site.values.ravel().tolist())\n", + "\n", + "\n", + "\n", + "clf = ExtraTreesClassifier(\n", + " n_estimators=1000,\n", + " criterion='gini',\n", + " max_depth=None,\n", + " min_samples_split=2,\n", + " min_samples_leaf=1,\n", + " min_weight_fraction_leaf=0.0,\n", + " max_features='sqrt',\n", + " max_leaf_nodes=None,\n", + " min_impurity_split=1e-07,\n", + " bootstrap=True,\n", + " oob_score=False,\n", + " n_jobs=8,\n", + " random_state=None,\n", + " verbose=0,\n", + " warm_start=False,\n", + " class_weight='balanced'\n", + ")\n", + "\n", + "clf = clf.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "print(roc_auc_score(y_test, clf.predict(X_test), average='macro', sample_weight=None))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "clf.feature_importances_" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from sklearn.preprocessing import RobustScaler\n", + "from mriqc.classifier.sklearn import preprocessing as mcsp\n", + "\n", + "scaler = mcsp.BatchScaler(RobustScaler(with_scaling=False), columns=coi)\n", + "scaled = scaler.fit_transform(fulldata)\n", + "fig = plot_batches(scaled[coi], excl_columns=['rater_1'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from sklearn.pipeline import Pipeline\n", + "# del fulldata['provenance']\n", + "clf = Pipeline([\n", + " ('std', mcsp.BatchScaler(RobustScaler(), groups='site', columns=coi)), \n", + " ('feature_selection', mcsp.CustFsNoiseWinnow(features=features)),\n", + "])\n", + "\n", + "clf.fit(fulldata, fulldata[['rater_1']].values.ravel())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "mit_csv = '/home/oesteban/mriqc/mit-satra/T1-mit.csv'\n", + "abide_csv = op.join(data_path, 'runs/20170505_0.9.3-2017-04-23-2ba2c2e40c39/T1w.csv')\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "mit_df = pd.read_csv(mit_csv, index_col=False, dtype={'subject_id': object})\n", + "abide_df, pp_cols = read_dataset(abide_csv, op.join(data_path, 'ABIDE_QC_all.csv'), rate_label='rater_1')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "mit_df['rater'] = [1] * len(mit_df)\n", + "mit_df['site'] = ['MIT'] * len(mit_df)\n", + "abide_df['rater'] = [0] * len(abide_df)\n", + "\n", + "del abide_df['rater_1']\n", + "mdata = pd.concat([abide_df, mit_df], axis=0)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "zscored = mcsp.BatchRobustScaler(by='site', columns=coi).fit_transform(mdata)\n", + "\n", + "colnames = [col for col in sorted(pp_cols)\n", + " if not (col.startswith('spacing') or col.startswith('summary') or col.startswith('size'))]\n", + "\n", + "nrows = len(colnames)\n", + "# palette = ['dodgerblue', 'darkorange']\n", + "\n", + "fig = plt.figure(figsize=(18, 2 * nrows))\n", + "gs = GridSpec(nrows, 2, hspace=0.2)\n", + "\n", + "for i, col in enumerate(sorted(colnames)):\n", + " ax_nzs = plt.subplot(gs[i, 0])\n", + " ax_zsd = plt.subplot(gs[i, 1])\n", + "\n", + " sn.distplot(mdata.loc[(mdata.rater == 0), col], norm_hist=False,\n", + " label='ABIDE', ax=ax_nzs, color='dodgerblue')\n", + " sn.distplot(mdata.loc[(mdata.rater == 1), col], norm_hist=False,\n", + " label='MIT', ax=ax_nzs, color='darkorange')\n", + " ax_nzs.legend()\n", + "\n", + " sn.distplot(zscored.loc[(zscored.rater == 0), col], norm_hist=False,\n", + " label='ABIDE', ax=ax_zsd, color='dodgerblue')\n", + " sn.distplot(zscored.loc[(zscored.rater == 1), col], norm_hist=False,\n", + " label='MIT', ax=ax_zsd, color='darkorange')\n", + "\n", + " alldata = mdata[[col]].values.ravel().tolist()\n", + " minv = np.percentile(alldata, 0.2)\n", + " maxv = np.percentile(alldata, 99.8)\n", + " ax_nzs.set_xlim([minv, maxv])\n", + "\n", + " alldata = zscored[[col]].values.ravel().tolist()\n", + " minv = np.percentile(alldata, 0.2)\n", + " maxv = np.percentile(alldata, 99.8)\n", + " ax_zsd.set_xlim([minv, maxv])\n", + " \n", + " ax_zsd.set_ylabel(col)\n", + "fig.savefig('/home/oesteban/tmp/mriqc-ml-tests-2/histograms-mit.svg', format='svg', pad_inches=0, dpi=100)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "abide_df, pp_cols = read_dataset(abide_csv, op.join(data_path, 'ABIDE_QC_all.csv'), rate_label='rater_1')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "accept = abide_df[abide_df.rater_1 == 0]\n", + "exclude = abide_df[abide_df.rater_1 == 1]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "mit_df = pd.read_csv(mit_csv, index_col=False, dtype={'subject_id': object})\n", + "\n", + "means = {}\n", + "for i, col in enumerate(sorted(colnames)):\n", + " means[col] = np.median(accept[[col]].values)\n", + " mit_copy = mit_df.copy()\n", + " mit_copy[[col]] = [means[col]] * len(mit_copy)\n", + " \n", + " mit_copy.to_csv('/home/oesteban/tmp/mriqc-ml-tests-2/mit_t1_%s.csv' % col, index=False)\n", + " \n", + " bad_m = np.median(exclude[[col]].values)\n", + " print('%s: %f +- %f :: %f +- %f' % (col, means[col], accept[[col]].std(), bad_m, exclude[[col]].std()))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "pred = pd.read_csv('/home/oesteban/tmp/mriqc-ml-tests-2/predicted_orig.csv', index_col=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "for i, col in enumerate(sorted(colnames)):\n", + " pred[col] = pd.read_csv('/home/oesteban/tmp/mriqc-ml-tests-2/predicted_mit_t1_%s.csv' % col).prediction.values" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "pred.to_csv('/home/oesteban/tmp/mriqc-ml-tests-2/predictions_wrt_iqms.csv', index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "pred.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/notebooks/Paper-v1.0.ipynb b/docs/notebooks/Paper-v1.0.ipynb new file mode 100644 index 0000000..c46707c --- /dev/null +++ b/docs/notebooks/Paper-v1.0.ipynb @@ -0,0 +1,331 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "%load_ext autoreload\n", + "%autoreload 2\n", + "import matplotlib.pyplot as plt\n", + "import os.path as op\n", + "import pandas as pd\n", + "import numpy as np\n", + "import seaborn as sn\n", + "\n", + "sn.set(style=\"whitegrid\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from mriqc.classifier import data as mcd\n", + "abide, _ = mcd.read_dataset(x_path, y_path, rate_label='rater_1')\n", + "sites = list(sorted(set(abide.site.values.ravel())))\n", + "\n", + "fmt = r'{site} & \\pixmat{{{size[0]:d}$\\pm${sr[0]:d}}}{{{size[1]:d}$\\pm${sr[1]:d}}}{{{size[2]:d}$\\pm${sr[1]:d}}}'\n", + "fmt += r'& \\pixmat[mm]{{{sp[0]:.2f}$\\pm${spr[0]:.2f}}}{{{sp[1]:.2f}$\\pm${spr[1]:.2f}}}{{{sp[2]:.2f}$\\pm${spr[1]:.2f}}}'\n", + "\n", + "\n", + "for site in sites:\n", + " subabide = abide.loc[abide.site.str.contains(site)]\n", + " \n", + " medians = np.median(subabide[['size_x', 'size_y', 'size_z', 'spacing_x', 'spacing_y', 'spacing_z']],\n", + " axis=0)\n", + " \n", + " mins = np.abs(medians - np.min(\n", + " subabide[['size_x', 'size_y', 'size_z', 'spacing_x', 'spacing_y', 'spacing_z']], axis=0))\n", + "\n", + " maxs = np.abs(medians - np.max(\n", + " subabide[['size_x', 'size_y', 'size_z', 'spacing_x', 'spacing_y', 'spacing_z']], axis=0))\n", + "\n", + " ranges = np.max(np.vstack((maxs, mins)), axis=0)\n", + " \n", + " print(\n", + " fmt.format(\n", + " site=site,\n", + " size=tuple(medians[:3].astype(int)),\n", + " sr=tuple(ranges[:3].astype(int)),\n", + " sp=tuple(medians[3:]),\n", + " spr=tuple(ranges[3:]),\n", + "\n", + "))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#data_path = '/home/oesteban/Google Drive/mriqc'\n", + "data_path = '/home/oesteban/tmp/mriqc-ml-tests-2/'\n", + "out_path = data_path\n", + "loso = pd.read_csv(op.join(data_path, 'cv_loso_inner.csv'), index_col=False)\n", + "kfold = pd.read_csv(op.join(data_path, 'cv_kfold_inner.csv'), index_col=False)\n", + "\n", + "kfold_outer = pd.read_csv(op.join(data_path, 'cv_kfold_outer.csv'), index_col=False)\n", + "loso_outer = pd.read_csv(op.join(data_path, 'cv_loso_outer.csv'), index_col=False)\n", + "\n", + "def gen_newparams(dataframe):\n", + " thisdf = dataframe.copy()\n", + " thisdf['zscored_str'] = ['nzs'] * len(thisdf['zscored'])\n", + " thisdf.loc[thisdf.zscored == 1, 'zscored_str'] = 'zs'\n", + " thisdf['params'] = thisdf['clf'] + '-' + thisdf['zscored_str'] + ' ' + thisdf['params']\n", + " del thisdf['zscored_str']\n", + " return thisdf\n", + "\n", + "loso = gen_newparams(loso)\n", + "kfold = gen_newparams(kfold)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "loso_models_list = list(set(loso.params.values.ravel().tolist()))\n", + "kfold_models_list = list(set(kfold.params.values.ravel().tolist()))\n", + "\n", + "best_param = {}\n", + "\n", + "spstr = ['LoSo', '10-fold']\n", + "best_models = {}\n", + "for i, split_cv in enumerate([loso, kfold]):\n", + " best_models[spstr[i]] = {}\n", + " splitcols = [col for col in split_cv.columns.ravel() if col.startswith('split0')]\n", + " for clf in ['svc_linear-nzs', 'svc_rbf-nzs', 'rfc-nzs', 'svc_linear-zs', 'svc_rbf-zs', 'rfc-zs']:\n", + " thismodeldf = split_cv.loc[split_cv.params.str.contains(clf)]\n", + " max_auc = thismodeldf.mean_auc.max()\n", + " best = thismodeldf.loc[thismodeldf.mean_auc >= max_auc]\n", + " best_list = best.params.values.ravel().tolist()\n", + " \n", + " if len(best_list) == 1:\n", + " best_models[spstr[i]][clf] = best_list[0]\n", + " else:\n", + " overall_means = [thismodeldf.loc[thismodeldf.params.str.contains(pset), 'mean_auc'].mean()\n", + " for pset in best_list]\n", + " overall_max = np.max(overall_means)\n", + " if sum([val >= overall_max for val in overall_means]) == 1:\n", + " best_models[spstr[i]][clf] = best_list[np.argmax(overall_means)]\n", + " else:\n", + " best_models[spstr[i]][clf] = best_list[0]\n", + " \n", + "newdict = {'AUC': [], 'Classifier': [], 'Split scheme': []}\n", + "\n", + "modelnames = {'rfc-nzs': 'RFC-nzs', 'rfc-zs': 'RFC-zs',\n", + " 'svc_linear-nzs': 'SVC_lin-nzs', 'svc_linear-zs': 'SVC_lin-zs',\n", + " 'svc_rbf-nzs': 'SVC_rbf-nzs', 'svc_rbf-zs': 'SVC_rbf-zs'}\n", + "\n", + "for key, val in list(best_models['LoSo'].items()):\n", + " scores = loso.loc[loso.params.str.contains(val), 'mean_auc'].values.ravel().tolist()\n", + " nscores = len(scores)\n", + " \n", + " newdict['AUC'] += scores\n", + " newdict['Classifier'] += [modelnames[key]] * nscores\n", + " newdict['Split scheme'] += ['LoSo (16 folds)'] * nscores\n", + " \n", + "for key, val in list(best_models['10-fold'].items()):\n", + " scores = kfold.loc[kfold.params.str.contains(val), 'mean_auc'].values.ravel().tolist()\n", + " nscores = len(scores)\n", + " \n", + " newdict['AUC'] += scores\n", + " newdict['Classifier'] += [modelnames[key]] * nscores\n", + " newdict['Split scheme'] += ['10-fold'] * nscores\n", + "\n", + "newdf = pd.DataFrame(newdict).sort_values(by=['Split scheme', 'Classifier'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def plot_cv_outer(data, score='auc', zscored=0, ax=None, ds030_score=None,\n", + " split_type='LoSo', color='dodgerblue'):\n", + " \n", + " if ax is None:\n", + " ax = plt.gca()\n", + " \n", + " outer_score = data.loc[data[score].notnull(), [score, 'zscored']]\n", + " sn.distplot(outer_score.loc[outer_score.zscored==zscored, score],\n", + " hist=True, norm_hist=True, ax=ax, color=color, label=split_type)\n", + " ax.set_xlim([0.4, 1.0])\n", + " ax.grid(False)\n", + " ax.set_yticklabels([])\n", + " \n", + " mean = outer_score.loc[outer_score.zscored==zscored, score].mean()\n", + " std = outer_score.loc[outer_score.zscored==zscored, score].std()\n", + "\n", + " mean_coord = draw_line(mean, ax=ax, color=color, lw=2.0, marker='o', extend=True)\n", + " \n", + " ymax = ax.get_ylim()[1]\n", + " draw_line(mean - std, ax=ax, color=color, extend=True)\n", + " draw_line(mean + std, ax=ax, color=color, extend=True)\n", + " \n", + " \n", + " ax.annotate(\n", + " '$\\mu$=%0.3f' % mean, xy=(mean_coord[0], 0.75*ymax), xytext=(-35, 30),\n", + " textcoords='offset points', va='center', color='w', size=14,\n", + " bbox=dict(boxstyle='round', fc=color, ec='none', color='none', lw=0),\n", + " arrowprops=dict(\n", + " arrowstyle='wedge,tail_width=0.8', lw=0, patchA=None, patchB=None,\n", + " fc=color, ec='none', relpos=(0.5, 0.5)))\n", + " sigmay = 0.70*ymax\n", + " ax.annotate(s='', xy=(mean - std, sigmay), xytext=(mean + std, sigmay), arrowprops=dict(arrowstyle='<->'))\n", + " ax.annotate(\n", + " '$2\\sigma$=%0.3f' % (2 * std), xy=(mean_coord[0], 0.70*ymax), xytext=(-25, -12),\n", + " textcoords='offset points', va='center', color='k', size=12,\n", + " bbox=dict(boxstyle='round', fc='w', ec='none', color='none', alpha=.7, lw=0))\n", + " \n", + " if ds030_score is not None:\n", + " ds030_coord = draw_line(ds030_score, ax=ax, color='k', marker='o')\n", + " ax.annotate(\n", + " 'DS030', xy=ds030_coord, xytext=(-100, 0),\n", + " textcoords='offset points', va='center', color='w', size=16,\n", + " bbox=dict(boxstyle='round', fc=color, ec='none', color='none', lw=0),\n", + " arrowprops=dict(\n", + " arrowstyle='wedge,tail_width=0.8', lw=0, patchA=None, patchB=None,\n", + " fc=color, ec='none', relpos=(0.5, 0.5)))\n", + " \n", + " \n", + "def draw_line(score, ax=None, color='k', marker=None, lw=.7, extend=False):\n", + " if ax is None:\n", + " ax = plt.gca()\n", + " \n", + " if score > 1.0:\n", + " score = 1.0\n", + " \n", + " coords = [score, -1]\n", + " pdf_points = ax.lines[0].get_data()\n", + " coords[1] = np.interp([coords[0]], pdf_points[0], pdf_points[1])\n", + " \n", + " if extend:\n", + " ax.axvline(coords[0], ymin=coords[1] / ax.get_ylim()[1], ymax=0.75, color='gray', lw=.7)\n", + " \n", + " ax.axvline(coords[0], ymin=coords[1] / ax.get_ylim()[1], ymax=0, color=color, marker=marker, markevery=2,\n", + " markeredgewidth=1.5, markerfacecolor='w', markeredgecolor=color, lw=lw)\n", + "\n", + " return coords" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "sn.set(style=\"whitegrid\")\n", + "\n", + "fig = plt.figure(figsize=(20, 8)) \n", + "ax1 = plt.subplot2grid((2,4), (0,0), colspan=2, rowspan=2)\n", + "\n", + "sn.violinplot(x='Classifier', y='AUC', hue='Split scheme', data=newdf, split=True,\n", + " palette=['dodgerblue', 'darkorange'], ax=ax1)\n", + "ax1.set_ylim([0.70, 1.0])\n", + "ax1.set_ylabel('AUC')\n", + "ax1.set_xlabel('Model')\n", + "ax1.set_title('Model selection - Inner loop of nested cross-validation')\n", + "\n", + "ax2 = plt.subplot2grid((2,4), (0, 2))\n", + "plot_cv_outer(kfold_outer, zscored=0, score='auc', ax=ax2, ds030_score=0.695, split_type='10-fold')\n", + "ax2.set_xlabel('')\n", + "ax2.legend()\n", + "ax2.set_title('Evaluation - Outer loop of nested cross-validation')\n", + "ax2.title.set_position([1.1, 1.0])\n", + "\n", + "ax3 = plt.subplot2grid((2,4), (1, 2))\n", + "plot_cv_outer(loso_outer, zscored=0, score='auc', ax=ax3, ds030_score=0.695, color='darkorange', split_type='LoSo (17 folds)')\n", + "ax3.legend()\n", + "ax3.set_xlabel('AUC')\n", + "\n", + "ax4 = plt.subplot2grid((2,4), (0, 3))\n", + "plot_cv_outer(kfold_outer, zscored=0, score='acc', ax=ax4, ds030_score=0.7283, split_type='10-fold')\n", + "ax4.set_xlabel('')\n", + "ax4.legend()\n", + "\n", + "ax5 = plt.subplot2grid((2,4), (1, 3))\n", + "plot_cv_outer(loso_outer, zscored=0, score='acc', ax=ax5, ds030_score=0.7283, color='darkorange', split_type='LoSo (17 folds)')\n", + "ax5.legend()\n", + "ax5.set_xlabel('Accuracy')\n", + "\n", + "\n", + "fig.savefig(op.join(out_path, 'crossvalidation.pdf'),\n", + " bbox_inches='tight', pad_inches=0, dpi=300)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "zscoreddf = loso_outer.loc[loso_outer.zscored == 0, ['auc', 'acc', 'site']]\n", + "palette = sn.color_palette(\"cubehelix\", len(set(zscoreddf.site)))\n", + "sn.pairplot(zscoreddf.loc[zscoreddf.auc.notnull(), ['auc', 'acc', 'site']], hue='site', palette=palette)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "sites = sorted(list(set(loso_outer.site.ravel().tolist())))\n", + "palette = sn.color_palette(\"husl\", len(sites))\n", + "fig = plt.figure()\n", + "for i, site in enumerate(sites):\n", + " sitedf = loso_outer.loc[loso_outer.site == site]\n", + " accdf = sitedf.loc[sitedf.zscored==0]\n", + " sn.distplot(accdf.acc.values.ravel(), bins=20, kde=0, label=site, color=palette[i])\n", + "\n", + "fig.gca().legend()\n", + "fig.gca().set_xlim([0.5, 1.0])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/notebooks/Paper-v2.0.ipynb b/docs/notebooks/Paper-v2.0.ipynb new file mode 100644 index 0000000..8df1256 --- /dev/null +++ b/docs/notebooks/Paper-v2.0.ipynb @@ -0,0 +1,539 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Generation of tables and figures of MRIQC paper\n", + "\n", + "This notebook is associated to the paper:\n", + "\n", + "Esteban O, Birman D, Schaer M, Koyejo OO, Poldrack RA, Gorgolewski KJ; MRIQC: Predicting Quality in Manual MRI Assessment Protocols Using No-Reference Image Quality Measures; bioRxiv 111294; doi:[10.1101/111294](https://doi.org/10.1101/111294)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "scrolled": true + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "%load_ext autoreload\n", + "%autoreload 2\n", + "import os.path as op\n", + "import numpy as np\n", + "import pandas as pd\n", + "from pkg_resources import resource_filename as pkgrf\n", + "\n", + "from mriqc.viz import misc as mviz\n", + "from mriqc.classifier.data import read_dataset, combine_datasets\n", + "\n", + "# Where the outputs should be saved\n", + "outputs_path = '../../mriqc-data/'\n", + "\n", + "# Path to ABIDE's BIDS structure\n", + "abide_path = '/home/oesteban/Data/ABIDE/'\n", + "# Path to DS030's BIDS structure\n", + "ds030_path = '/home/oesteban/Data/ds030/'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Read some data (from mriqc package)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "x_path = pkgrf('mriqc', 'data/csv/x_abide.csv')\n", + "y_path = pkgrf('mriqc', 'data/csv/y_abide.csv')\n", + "ds030_x_path = pkgrf('mriqc', 'data/csv/x_ds030.csv')\n", + "ds030_y_path = pkgrf('mriqc', 'data/csv/y_ds030.csv')\n", + "\n", + "rater_types = {'rater_1': float, 'rater_2': float, 'rater_3': float}\n", + "mdata = pd.read_csv(y_path, index_col=False, dtype=rater_types)\n", + "\n", + "sites = list(sorted(list(set(mdata.site.values.ravel().tolist()))))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Figure 1: artifacts in MRI\n", + "Shows a couple of subpar datasets from the ABIDE dataset" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "out_file = op.join(outputs_path, 'figures', 'fig01-artifacts.svg')\n", + "mviz.figure1(\n", + " op.join(abide_path, 'sub-50137', 'anat', 'sub-50137_T1w.nii.gz'),\n", + " op.join(abide_path, 'sub-50110', 'anat', 'sub-50110_T1w.nii.gz'),\n", + " out_file)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "out_file_pdf = out_file[:4] + '.pdf'\n", + "!rsvg-convert -f pdf -o $out_file_pdf $out_file" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Figure 2: batch effects\n", + "\n", + "This code was use to generate the second figure" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from mriqc.classifier.sklearn import preprocessing as mcsp\n", + "\n", + "# Concatenate ABIDE & DS030\n", + "fulldata = combine_datasets([\n", + " (x_path, y_path, 'ABIDE'),\n", + " (ds030_x_path, ds030_y_path, 'DS030'),\n", + "])\n", + "\n", + "# Names of all features\n", + "features =[\n", + " 'cjv', 'cnr', 'efc', 'fber',\n", + " 'fwhm_avg', 'fwhm_x', 'fwhm_y', 'fwhm_z',\n", + " 'icvs_csf', 'icvs_gm', 'icvs_wm',\n", + " 'inu_med', 'inu_range', \n", + " 'qi_1', 'qi_2',\n", + " 'rpve_csf', 'rpve_gm', 'rpve_wm',\n", + " 'size_x', 'size_y', 'size_z',\n", + " 'snr_csf', 'snr_gm', 'snr_total', 'snr_wm',\n", + " 'snrd_csf', 'snrd_gm', 'snrd_total', 'snrd_wm',\n", + " 'spacing_x', 'spacing_y', 'spacing_z',\n", + " 'summary_bg_k', 'summary_bg_mad', 'summary_bg_mean', 'summary_bg_median', 'summary_bg_n', 'summary_bg_p05', 'summary_bg_p95', 'summary_bg_stdv',\n", + " 'summary_csf_k', 'summary_csf_mad', 'summary_csf_mean', 'summary_csf_median', 'summary_csf_n', 'summary_csf_p05', 'summary_csf_p95', 'summary_csf_stdv',\n", + " 'summary_gm_k', 'summary_gm_mad', 'summary_gm_mean', 'summary_gm_median', 'summary_gm_n', 'summary_gm_p05', 'summary_gm_p95', 'summary_gm_stdv',\n", + " 'summary_wm_k', 'summary_wm_mad', 'summary_wm_mean', 'summary_wm_median', 'summary_wm_n', 'summary_wm_p05', 'summary_wm_p95', 'summary_wm_stdv',\n", + " 'tpm_overlap_csf', 'tpm_overlap_gm', 'tpm_overlap_wm',\n", + " 'wm2max'\n", + "]\n", + "\n", + "# Names of features that can be normalized\n", + "coi = [\n", + " 'cjv', 'cnr', 'efc', 'fber', 'fwhm_avg', 'fwhm_x', 'fwhm_y', 'fwhm_z',\n", + " 'snr_csf', 'snr_gm', 'snr_total', 'snr_wm', 'snrd_csf', 'snrd_gm', 'snrd_total', 'snrd_wm',\n", + " 'summary_csf_mad', 'summary_csf_mean', 'summary_csf_median', 'summary_csf_p05', 'summary_csf_p95', 'summary_csf_stdv', 'summary_gm_k', 'summary_gm_mad', 'summary_gm_mean', 'summary_gm_median', 'summary_gm_p05', 'summary_gm_p95', 'summary_gm_stdv', 'summary_wm_k', 'summary_wm_mad', 'summary_wm_mean', 'summary_wm_median', 'summary_wm_p05', 'summary_wm_p95', 'summary_wm_stdv'\n", + "]\n", + "\n", + "# Plot batches\n", + "fig = mviz.plot_batches(fulldata, cols=list(reversed(coi)),\n", + " out_file=op.join(outputs_path, 'figures/fig02-batches-a.pdf'))\n", + "\n", + "# Apply new site-wise scaler\n", + "scaler = mcsp.BatchRobustScaler(by='site', columns=coi)\n", + "scaled = scaler.fit_transform(fulldata)\n", + "fig = mviz.plot_batches(scaled, cols=coi, site_labels='right',\n", + " out_file=op.join(outputs_path, 'figures/fig02-batches-b.pdf'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Figure 3: Inter-rater variability\n", + "\n", + "In this figure we evaluate the inter-observer agreement between both raters on the 100 data points overlapping of ABIDE. Also the Cohen's Kappa is computed." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.metrics import cohen_kappa_score\n", + "overlap = mdata[np.all(~np.isnan(mdata[['rater_1', 'rater_2']]), axis=1)]\n", + "y1 = overlap.rater_1.values.ravel().tolist()\n", + "y2 = overlap.rater_2.values.ravel().tolist()\n", + "fig = mviz.inter_rater_variability(y1, y2, out_file=op.join(outputs_path, 'figures', 'fig02-irv.pdf'))\n", + "\n", + "print(\"Cohen's Kappa %f\" % cohen_kappa_score(y1, y2))\n", + "\n", + "y1 = overlap.rater_1.values.ravel()\n", + "y1[y1 == 0] = 1\n", + "\n", + "y2 = overlap.rater_2.values.ravel()\n", + "y2[y2 == 0] = 1\n", + "print(\"Cohen's Kappa (binarized): %f\" % cohen_kappa_score(y1, y2))\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Figure 5: Model selection" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import seaborn as sn\n", + "rfc_acc=[0.842, 0.815, 0.648, 0.609, 0.789, 0.761, 0.893, 0.833, 0.842, 0.767, 0.806, 0.850, 0.878, 0.798, 0.559, 0.881, 0.375]\n", + "svc_lin_acc=[0.947, 0.667, 0.870, 0.734, 0.754, 0.701, 0.750, 0.639, 0.877, 0.767, 0.500, 0.475, 0.837, 0.768, 0.717, 0.050, 0.429]\n", + "svc_rbf_acc=[0.947, 0.852, 0.500, 0.578, 0.772, 0.712, 0.821, 0.583, 0.912, 0.767, 0.500, 0.450, 0.837, 0.778, 0.441, 0.950, 0.339]\n", + "\n", + "df = pd.DataFrame({\n", + " 'site': list(range(len(sites))) * 3,\n", + " 'accuracy': rfc_acc + svc_lin_acc + svc_rbf_acc,\n", + " 'Model': ['RFC'] * len(sites) + ['SVC_lin'] * len(sites) + ['SVC_rbf'] * len(sites)\n", + " \n", + "})\n", + "\n", + "\n", + "x = np.arange(len(sites))\n", + "data = list(zip(rfc_acc, svc_lin_acc, svc_rbf_acc))\n", + "\n", + "dim = len(data[0])\n", + "w = 0.81\n", + "dimw = w / dim\n", + "\n", + "colors = ['dodgerblue', 'orange', 'darkorange']\n", + "\n", + "allvals = [rfc_acc, svc_lin_acc, svc_rbf_acc]\n", + "\n", + "fig = plt.figure(figsize=(10, 3))\n", + "ax2 = plt.subplot2grid((1, 4), (0, 3))\n", + "plot = sn.violinplot(data=df, x='Model', y=\"accuracy\", ax=ax2, palette=colors, bw=.1, linewidth=.7)\n", + "for i in range(dim):\n", + " ax2.axhline(np.average(allvals[i]), ls='--', color=colors[i], lw=.8)\n", + "# ax2.axhline(np.percentile(allvals[i], 50), ls='--', color=colors[i], lw=.8)\n", + "# sn.swarmplot(x=\"model\", y=\"accuracy\", data=df, color=\"w\", alpha=.5, ax=ax2);\n", + "ax2.yaxis.tick_right()\n", + "ax2.set_ylabel('')\n", + "ax2.set_xticklabels(ax2.get_xticklabels(), rotation=40)\n", + "ax2.set_ylim([0.0, 1.0])\n", + "\n", + "ax1 = plt.subplot2grid((1, 4), (0, 0), colspan=3) \n", + "for i in range(dim):\n", + " y = [d[i] for d in data]\n", + " b = ax1.bar(x + i * dimw, y, dimw, bottom=0.001, color=colors[i], alpha=.6)\n", + " print(np.average(allvals[i]), np.std(allvals[i]))\n", + " ax1.axhline(np.average(allvals[i]), ls='--', color=colors[i], lw=.8)\n", + " \n", + " \n", + "\n", + "plt.xlim([-0.2, 16.75])\n", + "plt.grid(False)\n", + "_ = plt.xticks(np.arange(0, 17) + 0.33, sites, rotation='vertical')\n", + "ax1.set_ylim([0.0, 1.0])\n", + "ax1.set_ylabel('Accuracy (ACC)')\n", + "fig.savefig(op.join(outputs_path, 'figures/fig05-acc.pdf'), bbox_inches='tight', dpi=300)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "rfc_roc_auc=[0.597, 0.380, 0.857, 0.610, 0.698, 0.692, 0.963, 0.898, 0.772, 0.596, 0.873, 0.729, 0.784, 0.860, 0.751, 0.900, 0.489]\n", + "svc_lin_roc_auc=[0.583, 0.304, 0.943, 0.668, 0.691, 0.754, 1.000, 0.778, 0.847, 0.590, 0.857, 0.604, 0.604, 0.838, 0.447, 0.650, 0.501]\n", + "svc_rbf_roc_auc=[0.681, 0.217, 0.827, 0.553, 0.738, 0.616, 0.889, 0.813, 0.845, 0.658, 0.779, 0.493, 0.726, 0.510, 0.544, 0.500, 0.447]\n", + "\n", + "df = pd.DataFrame({\n", + " 'site': list(range(len(sites))) * 3,\n", + " 'auc': rfc_roc_auc + svc_lin_roc_auc + svc_rbf_roc_auc,\n", + " 'Model': ['RFC'] * len(sites) + ['SVC_lin'] * len(sites) + ['SVC_rbf'] * len(sites)\n", + " \n", + "})\n", + "\n", + "x = np.arange(len(sites))\n", + "data = list(zip(rfc_roc_auc, svc_lin_roc_auc, svc_rbf_roc_auc))\n", + "\n", + "dim = len(data[0])\n", + "w = 0.81\n", + "dimw = w / dim\n", + "\n", + "colors = ['dodgerblue', 'orange', 'darkorange']\n", + "\n", + "allvals = [rfc_roc_auc, svc_lin_roc_auc, svc_rbf_roc_auc]\n", + "\n", + "fig = plt.figure(figsize=(10, 3))\n", + "ax2 = plt.subplot2grid((1, 4), (0, 3))\n", + "plot = sn.violinplot(data=df, x='Model', y=\"auc\", ax=ax2, palette=colors, bw=.1, linewidth=.7)\n", + "for i in range(dim):\n", + " ax2.axhline(np.average(allvals[i]), ls='--', color=colors[i], lw=.8)\n", + "\n", + "ax2.yaxis.tick_right()\n", + "ax2.set_ylabel('')\n", + "ax2.set_xticklabels(ax2.get_xticklabels(), rotation=40)\n", + "ax2.set_ylim([0.0, 1.0])\n", + "\n", + "ax1 = plt.subplot2grid((1, 4), (0, 0), colspan=3) \n", + "for i in range(dim):\n", + " y = [d[i] for d in data]\n", + " b = ax1.bar(x + i * dimw, y, dimw, bottom=0.001, color=colors[i], alpha=.6)\n", + " print(np.average(allvals[i]), np.std(allvals[i]))\n", + " ax1.axhline(np.average(allvals[i]), ls='--', color=colors[i], lw=.8)\n", + " \n", + " \n", + "\n", + "plt.xlim([-0.2, 16.75])\n", + "plt.grid(False)\n", + "_ = plt.xticks(np.arange(0, 17) + 0.33, sites, rotation='vertical')\n", + "ax1.set_ylim([0.0, 1.0])\n", + "ax1.set_ylabel('Area under the curve (AUC)')\n", + "fig.savefig(op.join(outputs_path, 'figures/fig05-auc.pdf'), bbox_inches='tight', dpi=300)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Evaluation on DS030\n", + "\n", + "This section deals with the results obtained on DS030.\n", + "\n", + "### Table 4: Confusion matrix" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from sklearn.metrics import confusion_matrix\n", + "\n", + "pred_file = op.abspath(op.join(\n", + " '..', 'mriqc/data/csv',\n", + " 'mclf_run-20170724-191452_mod-rfc_ver-0.9.7-rc8_class-2_cv-loso_data-test_pred.csv'))\n", + "\n", + "pred_y = pd.read_csv(pred_file)\n", + "true_y = pd.read_csv(ds030_y_path)\n", + "true_y.rater_1 *= -1\n", + "true_y.rater_1[true_y.rater_1 < 0] = 0\n", + "print(confusion_matrix(true_y.rater_1.tolist(), pred_y.pred_y.values.ravel().tolist(), labels=[0, 1]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Figure 6A: Feature importances" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import seaborn as sn\n", + "from sklearn.externals.joblib import load as loadpkl\n", + "sn.set_style(\"white\")\n", + "\n", + "# Get the RFC\n", + "estimator = loadpkl(pkgrf('mriqc', 'data/mclf_run-20170724-191452_mod-rfc_ver-0.9.7-rc8_class-2_cv-loso_data-train_estimator.pklz'))\n", + "forest = estimator.named_steps['rfc']\n", + "\n", + "# Features selected in cross-validation\n", + "features = [\n", + " \"cjv\", \"cnr\", \"efc\", \"fber\", \"fwhm_avg\", \"fwhm_x\", \"fwhm_y\", \"fwhm_z\", \"icvs_csf\", \"icvs_gm\", \"icvs_wm\",\n", + " \"qi_1\", \"qi_2\", \"rpve_csf\", \"rpve_gm\", \"rpve_wm\", \"snr_csf\", \"snr_gm\", \"snr_total\", \"snr_wm\", \"snrd_csf\",\n", + " \"snrd_gm\", \"snrd_total\", \"snrd_wm\", \"summary_bg_k\", \"summary_bg_stdv\", \"summary_csf_k\", \"summary_csf_mad\",\n", + " \"summary_csf_mean\", \"summary_csf_median\", \"summary_csf_p05\", \"summary_csf_p95\", \"summary_csf_stdv\",\n", + " \"summary_gm_k\", \"summary_gm_mad\", \"summary_gm_mean\", \"summary_gm_median\", \"summary_gm_p05\", \"summary_gm_p95\",\n", + " \"summary_gm_stdv\", \"summary_wm_k\", \"summary_wm_mad\", \"summary_wm_mean\", \"summary_wm_median\", \"summary_wm_p05\",\n", + " \"summary_wm_p95\", \"summary_wm_stdv\", \"tpm_overlap_csf\", \"tpm_overlap_gm\", \"tpm_overlap_wm\"]\n", + "\n", + "nft = len(features)\n", + "\n", + "forest = estimator.named_steps['rfc']\n", + "importances = np.median([tree.feature_importances_ for tree in forest.estimators_],\n", + " axis=0)\n", + "# importances = np.median(, axis=0)\n", + "indices = np.argsort(importances)[::-1]\n", + "\n", + "df = {'Feature': [], 'Importance': []}\n", + "for tree in forest.estimators_:\n", + " for i in indices:\n", + " df['Feature'] += [features[i]]\n", + " df['Importance'] += [tree.feature_importances_[i]]\n", + "fig = plt.figure(figsize=(20, 6))\n", + "# plt.title(\"Feature importance plot\")\n", + "sn.boxplot(x='Feature', y='Importance', data=pd.DataFrame(df), linewidth=1, notch=True)\n", + "plt.xlabel('Features selected (%d)' % len(features))\n", + "# plt.bar(range(nft), importances[indices],\n", + "# color=\"r\", yerr=std[indices], align=\"center\")\n", + "plt.xticks(range(nft))\n", + "plt.gca().set_xticklabels([features[i] for i in indices], rotation=90)\n", + "plt.xlim([-1, nft])\n", + "plt.show()\n", + "fig.savefig(op.join(outputs_path, 'figures', 'fig06-exp2-fi.pdf'),\n", + " bbox_inches='tight', pad_inches=0, dpi=300)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Figure 6B: Misclassified images of DS030" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "fn = ['10225', '10235', '10316', '10339', '10365', '10376',\n", + " '10429', '10460', '10506', '10527', '10530', '10624',\n", + " '10696', '10891', '10948', '10968', '10977', '11050',\n", + " '11052', '11142', '11143', '11149', '50004', '50005',\n", + " '50008', '50010', '50016', '50027', '50029', '50033',\n", + " '50034', '50036', '50043', '50047', '50049', '50053',\n", + " '50054', '50055', '50085', '60006', '60010', '60012',\n", + " '60014', '60016', '60021', '60046', '60052', '60072',\n", + " '60073', '60084', '60087', '70051', '70060', '70072']\n", + "fp = ['10280', '10455', '10523', '11112', '50020', '50048',\n", + " '50052', '50061', '50073', '60077']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "fn_clear = [\n", + " ('10316', 98),\n", + " ('10968', 122),\n", + " ('11050', 110),\n", + " ('11149', 111)\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "from mriqc.viz.utils import plot_slice\n", + "import nibabel as nb\n", + "for im, z in fn_clear:\n", + " image_path = op.join(ds030_path, 'sub-%s' % im, 'anat', 'sub-%s_T1w.nii.gz' % im)\n", + " imdata = nb.load(image_path).get_data()\n", + " \n", + " fig, ax = plt.subplots()\n", + " plot_slice(imdata[..., z], annotate=True)\n", + " fig.savefig(op.join(outputs_path, 'figures', 'fig-06_sub-%s_slice-%03d.svg' % (im, z)),\n", + " dpi=300, bbox_inches='tight')\n", + " plt.clf()\n", + " plt.close()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "fp_clear = [\n", + " ('10455', 140),\n", + " ('50073', 162),\n", + "]\n", + "for im, z in fp_clear:\n", + " image_path = op.join(ds030_path, 'sub-%s' % im, 'anat', 'sub-%s_T1w.nii.gz' % im)\n", + " imdata = nb.load(image_path).get_data()\n", + " \n", + " fig, ax = plt.subplots()\n", + " plot_slice(imdata[..., z], annotate=True)\n", + " fig.savefig(op.join(outputs_path, 'figures', 'fig-06_sub-%s_slice-%03d.svg' % (im, z)),\n", + " dpi=300, bbox_inches='tight')\n", + " plt.clf()\n", + " plt.close()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/docs/notebooks/SpikesPlotter.ipynb b/docs/notebooks/SpikesPlotter.ipynb new file mode 100644 index 0000000..7ab764d --- /dev/null +++ b/docs/notebooks/SpikesPlotter.ipynb @@ -0,0 +1,143 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "%load_ext autoreload\n", + "%autoreload 2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import os.path as op\n", + "wf_path = '/home/oesteban/tmp/mriqc-newcircle/work/workflow_enumerator/funcMRIQC/'\n", + "\n", + "in_fft = op.join(wf_path, 'ComputeIQMs/_in_file_..home..oesteban..Data..example_artifacts_dataset..sub-ben01'\n", + " '..func..sub-ben01_task-unknown_bold.nii.gz/SpikesFinderFFT/sub-ben01_task-unknown_bold_zsfft.nii.gz')\n", + "\n", + "in_file = op.join(wf_path, '_in_file_..home..oesteban..Data..example_artifacts_dataset..sub-ben01..func..sub-ben01_'\n", + " 'task-unknown_bold.nii.gz/reorient_and_discard/sub-ben01_task-unknown_bold.nii.gz')\n", + "in_spikes = op.join(wf_path, 'ComputeIQMs/_in_file_..home..oesteban..Data..example_artifacts_dataset..sub-ben01..func..'\n", + " 'sub-ben01_task-unknown_bold.nii.gz/SpikesFinderFFT/sub-ben01_task-unknown_bold_spikes.tsv')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "in_fft = op.join(wf_path, 'ComputeIQMs/_in_file_..home..oesteban..Data..circle-tests..sub-ds205s09'\n", + " '..func..sub-ds205s09_task-view_acq-LR_run-02_bold.nii.gz/SpikesFinderFFT/sub-ds205s09_task-view_acq-LR_run-02_bold_zsfft.nii.gz')\n", + "\n", + "in_file = op.join(wf_path, '_in_file_..home..oesteban..Data..circle-tests..sub-ds205s09..func..sub-ds205s09_'\n", + " 'task-view_acq-LR_run-02_bold.nii.gz/reorient_and_discard/sub-ds205s09_task-view_acq-LR_run-02_bold.nii.gz')\n", + "in_spikes = op.join(wf_path, 'ComputeIQMs/_in_file_..home..oesteban..Data..circle-tests..sub-ds205s09'\n", + " '..func..sub-ds205s09_task-view_acq-LR_run-02_bold.nii.gz/SpikesFinderFFT/sub-ds205s09_task-view_acq-LR_run-02_bold_spikes.tsv')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from mriqc.viz import utils as mvu" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "spikes_list = [tuple(i) for i in np.atleast_2d(np.loadtxt(in_spikes, dtype=int)).tolist()]\n", + "spikes_list += [(5, 14)]\n", + "mvu.plot_spikes(in_file, in_fft, spikes_list)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "%load_ext autoreload\n", + "%autoreload 2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import os.path as op\n", + "\n", + "data_path = '/home/oesteban/Data/ABIDE/sub-50465/anat/sub-50465_T1w.nii.gz'\n", + "data_path = '/home/oesteban/tmp/mriqc-newcircle/work/workflow_enumerator/funcMRIQC/_in_file_..home..oesteban..Data..example_artifacts_dataset..sub-ben04..func..sub-ben04_task-unknown_bold.nii.gz/compute_tsnr/stdev.nii.gz'\n", + "#data_path = '/home/oesteban/Data/rewardBeastBIDS2/sub-119/func/sub-119_task-rest_sbref.nii.gz'\n", + "#data_path ='/home/oesteban/tmp/mriqc-newcircle/work/workflow_enumerator/funcMRIQC/_in_file_..home..oesteban..Data..circle-tests..sub-ds003s03..func..sub-ds003s03_task-rhymejudgment_bold.nii.gz/compute_tsnr/stdev.nii.gz'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from mriqc.viz import utils as mvu\n", + "mvu.plot_mosaic(data_path, cmap='viridis')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.2" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/docs/notebooks/Supplemental Materials.ipynb b/docs/notebooks/Supplemental Materials.ipynb new file mode 100644 index 0000000..7399c45 --- /dev/null +++ b/docs/notebooks/Supplemental Materials.ipynb @@ -0,0 +1,135 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Generation of supplemental materials for the MRIQC paper\n", + "\n", + "This notebook is associated to the paper:\n", + "\n", + "Esteban O, Birman D, Schaer M, Koyejo OO, Poldrack RA, Gorgolewski KJ; MRIQC: Predicting Quality in Manual MRI Assessment Protocols Using No-Reference Image Quality Measures; bioRxiv 111294; doi:[10.1101/111294](https://doi.org/10.1101/111294)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "%load_ext autoreload\n", + "%autoreload 2\n", + "import os.path as op\n", + "import numpy as np\n", + "import pandas as pd\n", + "from mriqc.viz import misc as mviz\n", + "from pkg_resources import resource_filename as pkgrf\n", + "outputs_path = '../../mriqc-data/'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "x_path = pkgrf('mriqc', 'data/csv/x_abide.csv')\n", + "y_path = pkgrf('mriqc', 'data/csv/y_abide.csv')\n", + "ds030_x_path = pkgrf('mriqc', 'data/csv/x_ds030.csv')\n", + "ds030_y_path = pkgrf('mriqc', 'data/csv/y_ds030.csv')\n", + "\n", + "rater_types = {'rater_1': float, 'rater_2': float, 'rater_3': float}\n", + "mdata = pd.read_csv(y_path, index_col=False, dtype=rater_types)\n", + "\n", + "sites = list(sorted(list(set(mdata.site.values.ravel().tolist()))))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "fig = mviz.raters_variability_plot(\n", + " mdata, raters=['rater_1', 'rater_2', 'rater_3'], \n", + " rater_names=['Rater 1', 'Rater 2A', 'Rater 2B'],\n", + " out_file=op.join(outputs_path, 'figures', 'suppl-fig02.pdf'),\n", + " only_overlap=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.metrics import cohen_kappa_score\n", + "overlap = mdata[np.all(~np.isnan(mdata[['rater_2', 'rater_3']]), axis=1)]\n", + "y1 = overlap.rater_2.values.ravel().tolist()\n", + "y2 = overlap.rater_3.values.ravel().tolist()\n", + "\n", + "fig = mviz.inter_rater_variability(y1, y2, raters=['Protocol A', 'Protocol B'],\n", + " out_file=op.join(outputs_path, 'figures', 'suppl-intrarv.pdf'))\n", + "\n", + "print(\"Cohen's Kappa %f\" % cohen_kappa_score(y1, y2))\n", + "\n", + "y1 = overlap.rater_2.values.ravel()\n", + "y1[y1 == 0] = 1\n", + "\n", + "y2 = overlap.rater_3.values.ravel()\n", + "y2[y2 == 0] = 1\n", + "print(\"Cohen's Kappa (binarized): %f\" % cohen_kappa_score(y1, y2))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "fig = mviz.plot_corrmat(x_path)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "fig = mviz.plot_histograms(x_path, y_path)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/notebooks/finding_spikes.ipynb b/docs/notebooks/finding_spikes.ipynb new file mode 100644 index 0000000..50e4653 --- /dev/null +++ b/docs/notebooks/finding_spikes.ipynb @@ -0,0 +1,329 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import nibabel, nipy, nilearn\n", + "from nipy.labs.mask import compute_mask\n", + "from nilearn.masking import compute_epi_mask\n", + "from nilearn.image import mean_img, new_img_like\n", + "import pylab as plt\n", + "import seaborn as sns\n", + "from nilearn.plotting import plot_epi, plot_anat, plot_roi\n", + "import numpy as np\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "compute_mask?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "in_file = \"data/sub-ben01_task-unknown_bold.nii.gz\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "in_4d_nii = nibabel.load(in_file)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "mean_nii = mean_img(in_4d_nii)\n", + "plot_anat(mean_nii)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#mask_nii = compute_epi_mask(in_4d_nii)\n", + "\n", + "mask_data = compute_mask(mean_nii.get_data())\n", + "mask_nii = new_img_like(mean_nii, mask_data)\n", + "\n", + "plot_roi(mask_nii, mean_nii)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a = np.where(mask_nii.get_data() != 0)\n", + "bbox = np.max(a[0]) - np.min(a[0]), np.max(a[1]) - np.min(a[1]), np.max(a[2]) - np.min(a[2])\n", + "print(bbox)\n", + "print(np.argmax(bbox))\n", + "longest_axis = np.argmax(bbox)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from scipy import ndimage\n", + "\n", + "# Input here is a binarized and intersected mask data from previous section\n", + "dil_mask = ndimage.binary_dilation(mask_nii.get_data(), iterations=int(mask_nii.shape[longest_axis]/8))\n", + "\n", + "# Now, we visualize the same using `plot_roi` with data being converted to Nifti\n", + "# image. In all new image like, reference image is the same but second argument\n", + "# varies with data specific\n", + "dil_mask_nii = new_img_like(\n", + " mask_nii,\n", + " dil_mask.astype(np.int))\n", + "plot_roi(dil_mask_nii, mean_nii)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dil_mask.shape" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "rep = list(mask_nii.shape)\n", + "rep[longest_axis] = -1\n", + "new_mask_2d = dil_mask.max(axis=longest_axis).reshape(rep)\n", + "new_mask_2d.shape" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "rep = [1,1,1]\n", + "rep[longest_axis] = mask_nii.shape[longest_axis]\n", + "new_mask_3d = np.logical_not(np.tile(new_mask_2d, rep))\n", + "#new_mask_3d = " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "new_mask_nii = new_img_like(\n", + " mask_nii,\n", + " new_mask_3d.astype(np.int))\n", + "plot_roi(new_mask_nii, mean_nii)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from scipy.stats.mstats import zscore\n", + "\n", + "data4d = in_4d_nii.get_data()\n", + "for slice_i in range(in_4d_nii.shape[2]):\n", + " slice_data = data4d[:,:,slice_i,:][new_mask_3d[:,:,slice_i]].mean(axis=0)\n", + " slice_data = zscore(slice_data)\n", + " plt.plot(slice_data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data4d[:,:,slice_i,:][new_mask_3d[:,:,slice_i]].shape" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data4d.shape" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "compute_mask?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def plot_spikes(in_file, skip=0):\n", + " in_4d_nii = nibabel.load(in_file)\n", + " mean_nii = mean_img(in_4d_nii)\n", + " plot_anat(mean_nii)\n", + " mask_data = compute_mask(mean_nii.get_data())\n", + " mask_nii = new_img_like(mean_nii, mask_data)\n", + "\n", + " plot_roi(mask_nii, mean_nii)\n", + " \n", + " a = np.where(mask_nii.get_data() != 0)\n", + " bbox = np.max(a[0]) - np.min(a[0]), np.max(a[1]) - np.min(a[1]), np.max(a[2]) - np.min(a[2])\n", + " print(bbox)\n", + " print(np.argmax(bbox))\n", + " longest_axis = np.argmax(bbox)\n", + " \n", + " from scipy import ndimage\n", + "\n", + " # Input here is a binarized and intersected mask data from previous section\n", + " dil_mask = ndimage.binary_dilation(mask_nii.get_data(), iterations=int(mask_nii.shape[longest_axis]/8))\n", + "\n", + " # Now, we visualize the same using `plot_roi` with data being converted to Nifti\n", + " # image. In all new image like, reference image is the same but second argument\n", + " # varies with data specific\n", + " dil_mask_nii = new_img_like(\n", + " mask_nii,\n", + " dil_mask.astype(np.int))\n", + " plot_roi(dil_mask_nii, mean_nii)\n", + " \n", + " rep = list(mask_nii.shape)\n", + " rep[longest_axis] = -1\n", + " new_mask_2d = dil_mask.max(axis=longest_axis).reshape(rep)\n", + " new_mask_2d.shape\n", + " \n", + " rep = [1,1,1]\n", + " rep[longest_axis] = mask_nii.shape[longest_axis]\n", + " new_mask_3d = np.logical_not(np.tile(new_mask_2d, rep))\n", + " \n", + " new_mask_nii = new_img_like(\n", + " mask_nii,\n", + " new_mask_3d.astype(np.int))\n", + " plot_roi(new_mask_nii, mean_nii)\n", + " \n", + " from scipy.stats.mstats import zscore\n", + "\n", + " data4d = in_4d_nii.get_data()[:,:,:,skip:]\n", + " plt.figure()\n", + " for slice_i in range(in_4d_nii.shape[2]):\n", + " slice_data = data4d[:,:,slice_i,:][new_mask_3d[:,:,slice_i]].mean(axis=0)\n", + " #slice_data = zscore(slice_data)\n", + " plt.plot(slice_data)\n", + " plt.title(in_file)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plot_spikes(\"D:/example_artifacts_dataset/sub-ben01/func/sub-ben01_task-unknown_bold.nii.gz\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from glob import glob" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "for file in glob(\"D:/*/sub-*/func/sub-*_task-*_bold.nii.gz\"):\n", + " plot_spikes(file)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "plot_anat?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "glob(\"D:/*/sub-*/func/sub-*_task-*_bold.nii.gz\")" + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/mriqc_learn/datasets/webapi.py b/mriqc_learn/datasets/webapi.py new file mode 100644 index 0000000..bfa3bda --- /dev/null +++ b/mriqc_learn/datasets/webapi.py @@ -0,0 +1,65 @@ +# emacs: -*- mode: python; py-indent-offset: 4; indent-tabs-mode: nil -*- +# vi: set ft=python sts=4 ts=4 sw=4 et: +# +# Copyright 2022 The NiPreps Developers +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# We support and encourage derived works from this project, please read +# about our expectations at +# +# https://www.nipreps.org/community/licensing/ +# +"""Access to the MRIQC Web-API.""" +from functools import partial +import random +from time import sleep +import json +import asyncio +import concurrent.futures +import requests +import tqdm + + +def get_page(page, endpoint="T1w", max_results=50, progress=None, jitter=True): + """Get a given page.""" + if jitter: + sleep(random.random() * 3.0) + if not (r := requests.get(f"https://mriqc.nimh.nih.gov/api/v1/{endpoint}", params={"page": page, "max_results": max_results})).ok: + return + + data = json.loads(r.text) + if not data["_items"]: + return + + if progress is not None: + progress.update(1) + + return data + +def get_npages(endpoint="T1w", max_results=50): + """Get number of pages in a given endpoint.""" + if (n := get_page(1, endpoint=endpoint, max_results=50)) is not None: + return int(n["_links"]["last"]["href"].rsplit("page=")[-1]) + + raise RuntimeError("Could not get number of pages - perhaps inexistent endpoint?") + + +def fetch(endpoint="T1w", njobs=None): + """Fetch all entries from an endpoint.""" + total_pages = get_npages(endpoint) + pbar = tqdm.tqdm(total=total_pages) + callback = partial(get_page, endpoint=endpoint, progress=pbar) + + with concurrent.futures.ThreadPoolExecutor(max_workers=njobs) as executor: + return executor.map(callback, range(1, total_pages + 1))