{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "import nibabel as ni\n", "\n", "import osmosis.model.analysis as oza\n", "import osmosis.model.sparse_deconvolution as ssd\n", "import osmosis.model.dti as dti\n", "import osmosis.viz.mpl as mpl" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "import os\n", "import osmosis as oz\n", "import osmosis.io as oio\n", "oio.data_path = os.path.join(oz.__path__[0], 'data')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "subject = 'SUB1'\n", "data_1k_1, data_1k_2 = oio.get_dwi_data(1000, subject)\n", "data_2k_1, data_2k_2 = oio.get_dwi_data(2000, subject)\n", "data_4k_1, data_4k_2 = oio.get_dwi_data(4000, subject)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "wm_mask = np.zeros(ni.load(data_1k_1[0]).shape[:3])\n", "wm_nifti = ni.load(oio.data_path + '/%s/%s_wm_mask.nii.gz'%(subject, subject)).get_data()\n", "wm_mask[np.where(wm_nifti==1)] = 1\n" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "l1_ratio = 0.8\n", "alpha = 0.0005 \n", "solver_params = dict(l1_ratio=l1_ratio, alpha=alpha, fit_intercept=False, positive=True)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "ad_rd = oio.get_ad_rd(subject, 1000)\n", "SD_1k_1 = ssd.SparseDeconvolutionModel(*data_1k_1, mask=wm_mask, params_file = 'temp', axial_diffusivity=ad_rd[0]['AD'], radial_diffusivity=ad_rd[0]['RD'], solver_params=solver_params)\n", "SD_1k_2 = ssd.SparseDeconvolutionModel(*data_1k_2, mask=wm_mask, params_file = 'temp', axial_diffusivity=ad_rd[1]['AD'], radial_diffusivity=ad_rd[1]['RD'], solver_params=solver_params)\n", "ad_rd = oio.get_ad_rd(subject, 2000)\n", "SD_2k_1 = ssd.SparseDeconvolutionModel(*data_2k_1, mask=wm_mask, params_file = 'temp', axial_diffusivity=ad_rd[0]['AD'], radial_diffusivity=ad_rd[0]['RD'], solver_params=solver_params)\n", "SD_2k_2 = ssd.SparseDeconvolutionModel(*data_2k_2, mask=wm_mask, params_file = 'temp', axial_diffusivity=ad_rd[1]['AD'], radial_diffusivity=ad_rd[1]['RD'], solver_params=solver_params)\n", "ad_rd = oio.get_ad_rd(subject, 4000)\n", "SD_4k_1 = ssd.SparseDeconvolutionModel(*data_4k_1, mask=wm_mask, params_file = 'temp', axial_diffusivity=ad_rd[0]['AD'], radial_diffusivity=ad_rd[0]['RD'], solver_params=solver_params)\n", "SD_4k_2 = ssd.SparseDeconvolutionModel(*data_4k_2, mask=wm_mask, params_file = 'temp', axial_diffusivity=ad_rd[1]['AD'], radial_diffusivity=ad_rd[1]['RD'], solver_params=solver_params)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b1000_1.bvals\n", "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b1000_1.bvecs\n", "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b1000_2.bvals\n", "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b1000_2.bvecs\n", "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b2000_1.bvals\n", "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b2000_1.bvecs\n", "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b2000_2.bvals\n", "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b2000_2.bvecs\n", "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b4000_1.bvals\n", "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b4000_1.bvecs\n", "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b4000_2.bvals\n", "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b4000_2.bvecs\n" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "#pred_1k_1 = np.concatenate([SD_1k_1.S0[...,np.newaxis], SD_1k_1.fit], -1)\n", "#pred_1k_2 = np.concatenate([SD_1k_2.S0[...,np.newaxis], SD_1k_2.fit], -1)\n", "#new_bvecs1 = np.concatenate([np.array([[0,0,0]]).T, SD_1k_1.bvecs[:, SD_1k_1.b_idx]], -1)\n", "#new_bvecs2 = np.concatenate([np.array([[0,0,0]]).T, SD_1k_2.bvecs[:, SD_1k_2.b_idx]], -1)\n", "#new_bvals = np.hstack([0, SD_1k_1.bvals[:,SD_1k_1.b_idx]])\n", "#TM_1k_1 = dti.TensorModel(pred_1k_1, new_bvecs1, new_bvals, mask=wm_mask, params_file='temp')\n", "#TM_1k_2 = dti.TensorModel(pred_1k_2, new_bvecs2, new_bvals, mask=wm_mask, params_file='temp')\n", "\n", "#pred_2k_1 = np.concatenate([SD_2k_1.S0[...,np.newaxis], SD_2k_1.fit], -1)\n", "#pred_2k_2 = np.concatenate([SD_2k_2.S0[...,np.newaxis], SD_2k_2.fit], -1)\n", "#new_bvecs1 = np.concatenate([np.array([[0,0,0]]).T, SD_2k_1.bvecs[:, SD_2k_1.b_idx]], -1)\n", "#new_bvecs2 = np.concatenate([np.array([[0,0,0]]).T, SD_2k_2.bvecs[:, SD_2k_2.b_idx]], -1)\n", "#new_bvals = np.hstack([0, SD_2k_1.bvals[:,SD_2k_1.b_idx]])\n", "#TM_2k_1 = dti.TensorModel(pred_2k_1, new_bvecs1, new_bvals, mask=wm_mask, params_file='temp')\n", "#TM_2k_2 = dti.TensorModel(pred_2k_2, new_bvecs2, new_bvals, mask=wm_mask, params_file='temp')\n", "\n", "#pred_4k_1 = np.concatenate([SD_4k_1.S0[...,np.newaxis], SD_4k_1.fit], -1)\n", "#pred_4k_2 = np.concatenate([SD_4k_2.S0[...,np.newaxis], SD_4k_2.fit], -1)\n", "#new_bvecs1 = np.concatenate([np.array([[0,0,0]]).T, SD_4k_1.bvecs[:, SD_4k_1.b_idx]], -1)\n", "#new_bvecs2 = np.concatenate([np.array([[0,0,0]]).T, SD_4k_2.bvecs[:, SD_4k_2.b_idx]], -1)\n", "#new_bvals = np.hstack([0, SD_4k_1.bvals[:,SD_4k_1.b_idx]])\n", "#TM_4k_1 = dti.TensorModel(pred_4k_1, new_bvecs1, new_bvals, mask=wm_mask, params_file='temp')\n", "#TM_4k_2 = dti.TensorModel(pred_4k_2, new_bvecs2, new_bvals, mask=wm_mask, params_file='temp')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "TM_1k_1 = dti.TensorModel(*data_1k_1, mask=wm_mask, params_file='temp')\n", "TM_1k_2 = dti.TensorModel(*data_1k_2, mask=wm_mask, params_file='temp')\n", "TM_2k_1 = dti.TensorModel(*data_2k_1, mask=wm_mask, params_file='temp')\n", "TM_2k_2 = dti.TensorModel(*data_2k_2, mask=wm_mask, params_file='temp')\n", "TM_4k_1 = dti.TensorModel(*data_4k_1, mask=wm_mask, params_file='temp')\n", "TM_4k_2 = dti.TensorModel(*data_4k_2, mask=wm_mask, params_file='temp')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b1000_1.bvals\n", "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b1000_1.bvecs\n", "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b1000_2.bvals\n", "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b1000_2.bvecs\n", "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b2000_1.bvals\n", "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b2000_1.bvecs\n", "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b2000_2.bvals\n", "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b2000_2.bvecs\n", "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b4000_1.bvals\n", "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b4000_1.bvecs\n", "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b4000_2.bvals\n", "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b4000_2.bvecs\n" ] } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "# Reliability estimated via the tensor model: \n", "pdd_rel_1k = oza.pdd_reliability(TM_1k_1, TM_1k_2)\n", "pdd_rel_2k = oza.pdd_reliability(TM_2k_1, TM_2k_2)\n", "pdd_rel_4k = oza.pdd_reliability(TM_4k_1, TM_4k_2)\n", "\n", "# Or directly on the SD model:\n", "#pdd_rel_1k = oza.pdd_reliability(SD_1k_1, SD_1k_2)\n", "#pdd_rel_2k = oza.pdd_reliability(SD_2k_1, SD_2k_2)\n", "#pdd_rel_4k = oza.pdd_reliability(SD_4k_1, SD_4k_2)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b1000_1.nii.gz\n", "Fitting TensorModel params using dipy" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b1000_2.nii.gz" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Fitting TensorModel params using dipy" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b2000_1.nii.gz" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Fitting TensorModel params using dipy" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b2000_2.nii.gz" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Fitting TensorModel params using dipy" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b4000_1.nii.gz" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Fitting TensorModel params using dipy" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Loading from file: /Users/arokem/usr/lib/python2.7/site-packages/osmosis/data/SUB1/SUB1_b4000_2.nii.gz" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Fitting TensorModel params using dipy" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "fig = mpl.probability_hist(pdd_rel_1k[np.isfinite(pdd_rel_1k)], label='b=%s'%str(1000), color=[0.8, 0.8, 0.8])\n", "print(\"For b=1000, the median PDD reliability is %2.2f\"%np.median(pdd_rel_1k[np.isfinite(pdd_rel_1k)]))\n", "fig = mpl.probability_hist(pdd_rel_2k[np.isfinite(pdd_rel_2k)], fig=fig, label='b=%s'%str(2000), color=[0.59, 0.59, 0.59])\n", "print(\"For b=2000, the median PDD reliability is %2.2f\"%np.median(pdd_rel_2k[np.isfinite(pdd_rel_2k)]))\n", "fig = mpl.probability_hist(pdd_rel_4k[np.isfinite(pdd_rel_4k)], fig=fig, label='b=%s'%str(4000), color=[0.32, 0.32, 0.32])\n", "print(\"For b=4000, the median PDD reliability is %2.2f\"%np.median(pdd_rel_4k[np.isfinite(pdd_rel_4k)]))\n", "ax = fig.axes[0]\n", "ax.set_xlim([0,90])\n", "plt.legend()\n", "fig.savefig('figures/tensor_pdd_reliability.svg')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "For b=1000, the median PDD reliability is 3.62\n", "For b=2000, the median PDD reliability is 3.80\n", "For b=4000, the median PDD reliability is 5.01\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "pdd_rel_1k = oza.pdd_reliability(SD_1k_1, SD_1k_2)\n", "pdd_rel_2k = oza.pdd_reliability(SD_2k_1, SD_2k_2)\n", "pdd_rel_4k = oza.pdd_reliability(SD_4k_1, SD_4k_2)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " \r", "SparseDeconvolutionModel.model_params [****************100%******************] 64463 of 64464 complete " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "fig = mpl.probability_hist(pdd_rel_1k[np.isfinite(pdd_rel_1k)], label='b=%s'%str(1000), color=[0.8, 0.8, 0.8])\n", "print(\"For b=1000, the median PDD reliability is %2.2f\"%np.median(pdd_rel_1k[np.isfinite(pdd_rel_1k)]))\n", "fig = mpl.probability_hist(pdd_rel_2k[np.isfinite(pdd_rel_2k)], fig=fig, label='b=%s'%str(2000), color=[0.59, 0.59, 0.59])\n", "print(\"For b=2000, the median PDD reliability is %2.2f\"%np.median(pdd_rel_2k[np.isfinite(pdd_rel_2k)]))\n", "fig = mpl.probability_hist(pdd_rel_4k[np.isfinite(pdd_rel_4k)], fig=fig, label='b=%s'%str(4000), color=[0.32, 0.32, 0.32])\n", "print(\"For b=4000, the median PDD reliability is %2.2f\"%np.median(pdd_rel_4k[np.isfinite(pdd_rel_4k)]))\n", "ax = fig.axes[0]\n", "ax.set_xlim([0,90])\n", "plt.legend()\n", "fig.savefig('figures/sfm_pdd_reliability.svg')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "For b=1000, the median PDD reliability is 31.08\n", "For b=2000, the median PDD reliability is 35.90" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "For b=4000, the median PDD reliability is 37.80\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nAMV9Bto8jkU2AAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "\n" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 } ], "metadata": {} } ] }