|
@@ -0,0 +1,691 @@
|
|
|
+{
|
|
|
+ "cells": [
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": null,
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [],
|
|
|
+ "source": [
|
|
|
+ "import numpy as np\n",
|
|
|
+ "import scipy as sp\n",
|
|
|
+ "import scipy.stats as sps\n",
|
|
|
+ "from scipy.io import loadmat\n",
|
|
|
+ "import matplotlib.pyplot as pl\n",
|
|
|
+ "from mpl_toolkits.axes_grid1.inset_locator import inset_axes\n",
|
|
|
+ "%matplotlib tk\n",
|
|
|
+ "from matplotlib import cm\n",
|
|
|
+ "from matplotlib.gridspec import GridSpec\n",
|
|
|
+ "from matplotlib import colors\n",
|
|
|
+ "import matplotlib \n",
|
|
|
+ "import copy\n",
|
|
|
+ "from itertools import combinations"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": null,
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [],
|
|
|
+ "source": [
|
|
|
+ "def getLobes():\n",
|
|
|
+ " rois = loadmat('./data/dataMEGasoMeM/ROIsLoc.mat')\n",
|
|
|
+ " lobes = rois['lobes']\n",
|
|
|
+ " Blobes = lobes[:,0].tolist()\n",
|
|
|
+ " bigLobes = []\n",
|
|
|
+ " for lob in Blobes:\n",
|
|
|
+ " bigLobes.append(lob[0])\n",
|
|
|
+ " bigLobes.append(lob[0])\n",
|
|
|
+ " bigLobes = np.array(bigLobes)\n",
|
|
|
+ " \n",
|
|
|
+ " Slobes = lobes[:,1].tolist()\n",
|
|
|
+ " smallLobes = []\n",
|
|
|
+ " for lob in Slobes:\n",
|
|
|
+ " smallLobes.append(lob[0])\n",
|
|
|
+ " smallLobes.append(lob[0])\n",
|
|
|
+ " smallLobes = np.array(smallLobes)\n",
|
|
|
+ " return bigLobes, smallLobes\n",
|
|
|
+ "\n",
|
|
|
+ "\n",
|
|
|
+ "def reOrderROis(x):\n",
|
|
|
+ " \" x: [T, ROI, Stages]\"\n",
|
|
|
+ " bigLobes, smallLobes = getLobes()\n",
|
|
|
+ " # indexes to reorder matrix entris\n",
|
|
|
+ " frontalOrigen = np.array([17, 20,47,50], dtype=np.int32) \n",
|
|
|
+ " frontalTo = np.array([21, 22,45,46], dtype=np.int32)\n",
|
|
|
+ " parietOrigen = np.array([18, 19, 21, 22,45,46,48,49], dtype=np.int32)\n",
|
|
|
+ " parietTo = np.array([17, 18, 19, 20,47,48,49,50], dtype=np.int32)\n",
|
|
|
+ " bothOrigen = np.hstack((frontalOrigen, parietOrigen))\n",
|
|
|
+ " bothTo = np.hstack((frontalTo, parietTo))\n",
|
|
|
+ " # reorder matrix\n",
|
|
|
+ " x_o = copy.deepcopy(x)\n",
|
|
|
+ " x_o[:,bothTo,:] = x_o[:, bothOrigen,:]\n",
|
|
|
+ " # indexes reorder lobes\n",
|
|
|
+ " origenLobes = np.hstack((2*frontalOrigen, 2*frontalOrigen+1, 2*parietOrigen, 2*parietOrigen+1))\n",
|
|
|
+ " toLobes = np.hstack((2*frontalTo, 2*frontalTo+1, 2*parietTo, 2*parietTo+1))\n",
|
|
|
+ " # reorder lobes\n",
|
|
|
+ " bigLobes = copy.deepcopy(bigLobes)\n",
|
|
|
+ " bigLobes[toLobes] = bigLobes[origenLobes]\n",
|
|
|
+ " smallLobes = copy.deepcopy(smallLobes)\n",
|
|
|
+ " smallLobes[toLobes] = smallLobes[origenLobes]\n",
|
|
|
+ " return x_o, bigLobes, smallLobes\n",
|
|
|
+ "\n",
|
|
|
+ "def colorBlobesYaxes(axco,bigLobes, lticks=10,wticks=5,bothAxis=False):\n",
|
|
|
+ " nroi = 68\n",
|
|
|
+ " axco.set_yticklabels(['']*nroi)\n",
|
|
|
+ " axco.set_yticks(np.arange(0, nroi))\n",
|
|
|
+ " axco.yaxis.set_tick_params(width=wticks)\n",
|
|
|
+ " if bothAxis:\n",
|
|
|
+ " axco.yaxis.set_ticks_position('both')\n",
|
|
|
+ " else:\n",
|
|
|
+ " axco.yaxis.set_ticks_position('left')\n",
|
|
|
+ " axco.tick_params('both', length=lticks, labelright=False, labeltop=False, direction='out')\n",
|
|
|
+ " for lobe, line in zip(bigLobes, axco.yaxis.get_ticklines()):\n",
|
|
|
+ " if lobe == 'Temp':\n",
|
|
|
+ " line.set_color('C0')\n",
|
|
|
+ " lineT = line\n",
|
|
|
+ " elif lobe == 'Occi':\n",
|
|
|
+ " line.set_color('C1')\n",
|
|
|
+ " lineO = line\n",
|
|
|
+ " elif lobe == 'Front':\n",
|
|
|
+ " line.set_color('C2')\n",
|
|
|
+ " lineF = line\n",
|
|
|
+ " elif lobe == 'Pari':\n",
|
|
|
+ " line.set_color('C3')\n",
|
|
|
+ " lineP = line\n",
|
|
|
+ " return axco "
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": null,
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [],
|
|
|
+ "source": [
|
|
|
+ "wiFC = [80,20,150] # Time windos time-locked to onset of stage\n",
|
|
|
+ "wiFCin = [80,20,120] # Time windos time-locked to end of stage \n",
|
|
|
+ "colorStg = ['C0','C1','C2','C3','C5']\n",
|
|
|
+ "colorStg = ['C0','orange','green','red','purple']\n",
|
|
|
+ "nameSt = ['pre-encoding','encoding','retrieval','decision','motor']"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": null,
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [],
|
|
|
+ "source": [
|
|
|
+ "file = './data/durationStages.mat'\n",
|
|
|
+ "data = loadmat(file) \n",
|
|
|
+ "durStg = data['stagesR']"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": null,
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [],
|
|
|
+ "source": [
|
|
|
+ "file = './data/PLI8ENVbumperp.mat'\n",
|
|
|
+ "data = loadmat(file)\n",
|
|
|
+ "pliW = data['pliW']\n",
|
|
|
+ "pliWsd = data['pliWsd']\n",
|
|
|
+ "pli01 = data['fcTh']\n",
|
|
|
+ "envZS = data['envZSW']\n",
|
|
|
+ "envZSo,bLobes, sLobes = reOrderROis(envZS)\n",
|
|
|
+ "\n",
|
|
|
+ "file = './data/FCsigmeanBySj_res.mat'\n",
|
|
|
+ "data = loadmat(file)\n",
|
|
|
+ "m_pliWSj = data['mSigFCw']\n",
|
|
|
+ "m_NOpliWSj = data['mNoSigFCw']\n",
|
|
|
+ "m_pliW = [None]*5\n",
|
|
|
+ "se_pliW = [None]*5\n",
|
|
|
+ "m_NOpliW = [None]*5\n",
|
|
|
+ "se_NOpliW = [None]*5\n",
|
|
|
+ "for i in range(5):\n",
|
|
|
+ " m_pliW[i] = np.mean(m_pliWSj[i][0], axis=2) # mean acrss subjects\n",
|
|
|
+ " se_pliW[i] = np.std(m_pliWSj[i][0], axis=2) / np.sqrt(18)\n",
|
|
|
+ " m_NOpliW[i] = np.mean(m_NOpliWSj[i][0], axis=2) # mean acrss subjects\n",
|
|
|
+ " se_NOpliW[i] = np.std(m_NOpliWSj[i][0], axis=2) / np.sqrt(18)\n"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": null,
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [],
|
|
|
+ "source": [
|
|
|
+ "imPath = '.data/imMEG/'\n",
|
|
|
+ "orint = ['axi','sagi','sagi2'];\n",
|
|
|
+ "nSt = 4\n",
|
|
|
+ "nV = 3\n",
|
|
|
+ "\n",
|
|
|
+ "imFC = [[None]*nV for _ in range(nSt)]\n",
|
|
|
+ "for iSt in range(nSt):\n",
|
|
|
+ " for iV in range(nV):\n",
|
|
|
+ " filename = imPath + 'BN_' + orint[iV] + '_stg_' + str(iSt+1) + '.png'\n",
|
|
|
+ " if iV == 0:\n",
|
|
|
+ " im_ = pl.imread(filename)[350:-420,340:-290,:]\n",
|
|
|
+ " imFC[iSt][iV] = copy.deepcopy(im_)\n",
|
|
|
+ " else:\n",
|
|
|
+ " im_ = pl.imread(filename)[60:-100,100:-50,:]\n",
|
|
|
+ " imFC[iSt][iV] = copy.deepcopy(im_)\n",
|
|
|
+ " if iV > 0 and iSt == 3:\n",
|
|
|
+ " im_ = pl.imread(filename)[270:-330,370:-350,:]\n",
|
|
|
+ " imFC[iSt][iV] = copy.deepcopy(im_) "
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "markdown",
|
|
|
+ "metadata": {},
|
|
|
+ "source": [
|
|
|
+ "Figure 1"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": null,
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [],
|
|
|
+ "source": [
|
|
|
+ "## one subplot per brain ##\n",
|
|
|
+ "simOn = np.int32(np.cumsum(np.round(np.mean(durStg,axis=0)/10)[1:])) # samples at 1/100\n",
|
|
|
+ "durM = np.int32(np.round(np.mean(durStg,axis=0)/10))\n",
|
|
|
+ "simOn = np.insert(simOn, 0, 0) + 9\n",
|
|
|
+ "onM = np.insert(np.cumsum(np.mean(durStg,axis=0)),0,0) # samples at 1/100\n",
|
|
|
+ "duraM = np.mean(durStg,axis=0) # samples at 1/100\n",
|
|
|
+ "# axes and subplots\n",
|
|
|
+ "leftOff, rightOff = 0.05, 0.95\n",
|
|
|
+ "topOff, bottOff = 0.91, 0.09\n",
|
|
|
+ "gridHspace = 0.1\n",
|
|
|
+ "gridWspace = 0.2\n",
|
|
|
+ "totWidth = rightOff-leftOff\n",
|
|
|
+ "totHeight = topOff-bottOff\n",
|
|
|
+ "fig = pl.figure()\n",
|
|
|
+ "fig.set_figheight(4.5)\n",
|
|
|
+ "fig.set_figwidth(7)\n",
|
|
|
+ "fig.set_dpi(900)\n",
|
|
|
+ "fontS = 6\n",
|
|
|
+ "lTicks = 2\n",
|
|
|
+ "# matplotlib.rcParams.update({'font.size': fontS,'font.stretch' : 'ultra-condensed' })\n",
|
|
|
+ "matplotlib.rcParams['font.stretch'] = 'ultra-condensed'\n",
|
|
|
+ "matplotlib.rcParams['font.size'] = fontS\n",
|
|
|
+ "matplotlib.rcParams['lines.linewidth'] = 0.5\n",
|
|
|
+ "matplotlib.rcParams['patch.linewidth'] = 0.5\n",
|
|
|
+ "matplotlib.rcParams['axes.linewidth'] = 0.25 \n",
|
|
|
+ "# matplotlib.rcParams['axes.labelpad'] = 1\n",
|
|
|
+ "matplotlib.rcParams['xtick.labelsize'] = fontS\n",
|
|
|
+ "matplotlib.rcParams['ytick.labelsize'] = fontS\n",
|
|
|
+ "matplotlib.rcParams['xtick.direction'] = 'inout'\n",
|
|
|
+ "matplotlib.rcParams['ytick.direction'] = 'inout'\n",
|
|
|
+ "matplotlib.rcParams['xtick.major.width'] = 0.25\n",
|
|
|
+ "matplotlib.rcParams['ytick.major.width'] = 0.25\n",
|
|
|
+ "matplotlib.rcParams['xtick.major.size'] = lTicks\n",
|
|
|
+ "matplotlib.rcParams['ytick.major.size'] = lTicks\n",
|
|
|
+ "matplotlib.rcParams['xtick.major.pad'] = 1\n",
|
|
|
+ "matplotlib.rcParams['ytick.major.pad'] = 1\n",
|
|
|
+ "\n",
|
|
|
+ "gridHratios = [0.04,0.23,0.23, 0.12,0.21,0.09]\n",
|
|
|
+ "gs = GridSpec(6,20,height_ratios=gridHratios,wspace=gridWspace,hspace=gridHspace,\n",
|
|
|
+ " left=leftOff, right=rightOff, top=topOff, bottom=bottOff) # 2 rows, 3 columns\n",
|
|
|
+ "axBr = np.empty((2,4),dtype=object)\n",
|
|
|
+ "axS = np.empty((3,4),dtype=object)\n",
|
|
|
+ "axBl = []\n",
|
|
|
+ "axCB = []\n",
|
|
|
+ "axCBon = np.arange(totWidth/8,totWidth+0.01-totWidth/8,totWidth/4)\n",
|
|
|
+ "\n",
|
|
|
+ "for iX, i in enumerate(range(0,20,5)):\n",
|
|
|
+ " axBl.append(fig.add_subplot(gs[1:3,i:i+2]))\n",
|
|
|
+ " axBr[0,iX] = fig.add_subplot(gs[1,i+2:i+5])\n",
|
|
|
+ " axBr[1,iX] = fig.add_subplot(gs[2,i+2:i+5])\n",
|
|
|
+ " axCB.append(fig.add_axes([leftOff+axCBon[iX]-0.1,0.53,0.07,0.01]))\n",
|
|
|
+ " for jX, j in enumerate(range(3,6)):\n",
|
|
|
+ " axS[jX, iX] = fig.add_subplot(gs[j,i:i+5])\n",
|
|
|
+ "ax0 = fig.add_subplot(gs[0,:])\n",
|
|
|
+ "\n",
|
|
|
+ "# stages overview\n",
|
|
|
+ "for i in range(5):\n",
|
|
|
+ " ax0.barh(y = 0,width=duraM[i], left=onM[i], height=0.5, color=colorStg[i])#,\n",
|
|
|
+ " ax0.text(onM[i] + duraM[i]/2, y=0, s=nameSt[i], ha='center', va='center',color='w')\n",
|
|
|
+ "ax0.set_xlim([0,onM[-1]])\n",
|
|
|
+ "ax0.xaxis.tick_top()\n",
|
|
|
+ "ax0.spines['right'].set_visible(False)\n",
|
|
|
+ "ax0.spines['bottom'].set_visible(False)\n",
|
|
|
+ "ax0.spines['left'].set_visible(False)\n",
|
|
|
+ "ax0.set_yticks([])\n",
|
|
|
+ "ax0.set_xlabel('Time [ms]')\n",
|
|
|
+ "ax0.xaxis.set_label_position('top') \n",
|
|
|
+ "ax0.text(0., -0.5,'Onset Stimuli',ha='center',va='center')\n",
|
|
|
+ "ax0.text(onM[-1], -0.5,'Response',ha='center',va='center')\n",
|
|
|
+ "\n",
|
|
|
+ "# # FC brain\n",
|
|
|
+ "for iSt in range(nSt):\n",
|
|
|
+ " axBl[iSt].imshow(imFC[iSt][0])\n",
|
|
|
+ " axBl[iSt].axis('off')\n",
|
|
|
+ " # colorbar\n",
|
|
|
+ " cmCol_ = cm.ScalarMappable( cmap = pl.get_cmap('cool'))\n",
|
|
|
+ " cmCol_.set_array([])\n",
|
|
|
+ " cm_ = fig.colorbar(cmCol_, cax=axCB[iSt], ticks=[0, 1],orientation='horizontal')\n",
|
|
|
+ " minSiso_ = MEGsiso[:,iSt].min()\n",
|
|
|
+ " maxSiso_ = MEGsiso[:,iSt].max()\n",
|
|
|
+ " middle_ = np.abs(minSiso_) / (maxSiso_ - minSiso_)\n",
|
|
|
+ " cm_.set_ticks([0,middle_,1])\n",
|
|
|
+ " cm_.set_ticklabels([str(minSiso_),'0', str(maxSiso_)]) # reverted because data was for BrainNet\n",
|
|
|
+ " #\n",
|
|
|
+ " for iV in range(2):\n",
|
|
|
+ " axBr[iV, iSt].imshow(imFC[iSt][iV+1])\n",
|
|
|
+ " axBr[iV, iSt].axis('off')\n",
|
|
|
+ "fig.text(leftOff+0.01,0.55, \"in - out deg.\", fontsize=fontS)\n",
|
|
|
+ "\n",
|
|
|
+ "\n",
|
|
|
+ "# FC over time\n",
|
|
|
+ "minmax = [0.038,0.053]\n",
|
|
|
+ "for i in range(4):\n",
|
|
|
+ " minVal = 10\n",
|
|
|
+ " maxVal = -10\n",
|
|
|
+ " axS[0,i].plot(m_NOpliW[i][wiFC[0]:wiFC[-1],i],c='gray')#,ls='--',linewidth=2)\n",
|
|
|
+ " ste_up = m_NOpliW[i][wiFC[0]:wiFC[-1],i] + se_NOpliW[i][wiFC[0]:wiFC[-1],i]\n",
|
|
|
+ " ste_down = m_NOpliW[i][wiFC[0]:wiFC[-1],i] - se_NOpliW[i][wiFC[0]:wiFC[-1],i]\n",
|
|
|
+ " axS[0,i].fill_between(np.arange(ste_up.shape[0]), ste_up, ste_down, color='gray',alpha=0.5)\n",
|
|
|
+ " minVal = np.min([minVal, ste_down.min()])\n",
|
|
|
+ " maxVal = np.max([maxVal, ste_up.max()])\n",
|
|
|
+ " \n",
|
|
|
+ " axS[0,i].plot(m_pliW[i][wiFC[0]:wiFC[-1],i], c=colorStg[i+1])#,linewidth=2)\n",
|
|
|
+ " ste_up = m_pliW[i][wiFC[0]:wiFC[-1],i] + se_pliW[i][wiFC[0]:wiFC[-1],i]\n",
|
|
|
+ " ste_down = m_pliW[i][wiFC[0]:wiFC[-1],i] - se_pliW[i][wiFC[0]:wiFC[-1],i]\n",
|
|
|
+ " axS[0,i].fill_between(np.arange(ste_up.shape[0]), ste_up, ste_down, color=colorStg[i+1],alpha=0.3) \n",
|
|
|
+ " minVal = np.min([minVal, ste_down.min()])\n",
|
|
|
+ " maxVal = np.max([maxVal, ste_up.max()])\n",
|
|
|
+ " \n",
|
|
|
+ " axS[0,i].axvspan(0, wiFC[1], facecolor='silver', alpha=0.7)\n",
|
|
|
+ " axS[0,i].axvspan(wiFC[1]+durM[i+1],wiFC[-1]-wiFC[0] , facecolor='silver', alpha=0.7) \n",
|
|
|
+ " axS[0,i].axvline(wiFC[1]-3, ymin=0, ymax=1, c='k')\n",
|
|
|
+ " axS[0,i].set_xlim([0,(wiFC[2]-wiFC[0])])\n",
|
|
|
+ " axS[0,i].axes.xaxis.set_ticklabels([])\n",
|
|
|
+ " axS[0,i].set_xticks(np.arange(2,(wiFC[2]-wiFC[0]), 15)) \n",
|
|
|
+ " axS[0,i].xaxis.set_ticks_position('both')\n",
|
|
|
+ " axS[0,i].set_yticks([minVal, maxVal])\n",
|
|
|
+ " axS[0,i].axes.yaxis.set_ticklabels([np.round(minVal,3), np.round(maxVal,3)], ha='left',ma='left')\n",
|
|
|
+ " axS[0,i].tick_params(axis=\"y\",direction=\"inout\", pad=-3)\n",
|
|
|
+ " axS[0,i].yaxis.get_major_ticks()[0].label1.set_verticalalignment('bottom') \n",
|
|
|
+ " axS[0,i].yaxis.get_major_ticks()[-1].label1.set_verticalalignment('top') \n",
|
|
|
+ "axS[0,0].set_ylabel('across-trials\\nmean dpFC',fontsize=fontS)\n",
|
|
|
+ "\n",
|
|
|
+ "# # INSET RESPONSE\n",
|
|
|
+ "axins = axS[0, 3].inset_axes([0.55, 0.85, 0.44, 0.44])\n",
|
|
|
+ "wiFCin = [100-(durM[-1]),(durM[-1]) ,105] \n",
|
|
|
+ "\n",
|
|
|
+ "# significant\n",
|
|
|
+ "axins.plot(m_pliW[-1][wiFCin[0]:wiFCin[-1],-1], c=colorStg[4])#,linewidth=2)\n",
|
|
|
+ "ste_up = m_pliW[-1][wiFCin[0]:wiFCin[-1],-1] + se_pliW[-1][wiFCin[0]:wiFCin[-1],-1]\n",
|
|
|
+ "ste_down = m_pliW[-1][wiFCin[0]:wiFCin[-1],-1] - se_pliW[-1][wiFCin[0]:wiFCin[-1],-1]\n",
|
|
|
+ "axins.fill_between(np.arange(ste_up.shape[0]), ste_up, ste_down, color=colorStg[4],alpha=0.3) \n",
|
|
|
+ "# NOT significant\n",
|
|
|
+ "axins.plot(m_NOpliW[-1][wiFCin[0]:wiFCin[-1],-1],c='gray')#,ls='--',linewidth=2)\n",
|
|
|
+ "ste_up = m_NOpliW[-1][wiFCin[0]:wiFCin[-1],-1] + se_NOpliW[-1][wiFCin[0]:wiFCin[-1],-1]\n",
|
|
|
+ "ste_down = m_NOpliW[-1][wiFCin[0]:wiFCin[-1],-1] - se_NOpliW[-1][wiFCin[0]:wiFCin[-1],-1]\n",
|
|
|
+ "axins.fill_between(np.arange(ste_up.shape[0]), ste_up, ste_down, color='gray',alpha=0.5)\n",
|
|
|
+ " \n",
|
|
|
+ "axins.set_xlim([0,m_pliW[-1][wiFCin[0]:wiFCin[-1],-1].shape[0]]) \n",
|
|
|
+ "axins.axvline(wiFCin[1], ymin=0, ymax=1, c='k')\n",
|
|
|
+ "axins.axvspan(0, 5, facecolor='silver', alpha=0.7)\n",
|
|
|
+ "axins.axvspan(durM[-1],wiFCin[-1]-wiFCin[0] , facecolor='silver', alpha=0.7) \n",
|
|
|
+ "axins.set_yticklabels([])\n",
|
|
|
+ "axins.set_xticklabels([])\n",
|
|
|
+ "axins.set_xticks([])\n",
|
|
|
+ "axins.set_yticks([])\n",
|
|
|
+ "\n",
|
|
|
+ "iSt = 2\n",
|
|
|
+ "# # INSET RETRIEVAL\n",
|
|
|
+ "axins2 = axS[0, 1].inset_axes([0.55, 0.85, 0.44, 0.44])\n",
|
|
|
+ "wiFCin = [100-(durM[iSt]),(durM[iSt]) ,105] \n",
|
|
|
+ "\n",
|
|
|
+ "# significant\n",
|
|
|
+ "axins2.plot(m_pliW[iSt][wiFCin[0]:wiFCin[-1],iSt+1], c=colorStg[iSt])#,linewidth=2)\n",
|
|
|
+ "ste_up = m_pliW[iSt][wiFCin[0]:wiFCin[-1],iSt+1] + se_pliW[iSt][wiFCin[0]:wiFCin[-1],iSt+1]\n",
|
|
|
+ "ste_down = m_pliW[iSt][wiFCin[0]:wiFCin[-1],iSt+1] - se_pliW[iSt][wiFCin[0]:wiFCin[-1],iSt+1]\n",
|
|
|
+ "axins2.fill_between(np.arange(ste_up.shape[0]), ste_up, ste_down, color=colorStg[iSt],alpha=0.3) \n",
|
|
|
+ "# NOT significant\n",
|
|
|
+ "axins2.plot(m_NOpliW[iSt][wiFCin[0]:wiFCin[-1],iSt+1],c='gray')#,ls='--',linewidth=2)\n",
|
|
|
+ "ste_up = m_NOpliW[iSt][wiFCin[0]:wiFCin[-1],iSt+1] + se_NOpliW[iSt][wiFCin[0]:wiFCin[-1],iSt+1]\n",
|
|
|
+ "ste_down = m_NOpliW[iSt][wiFCin[0]:wiFCin[-1],iSt+1] - se_NOpliW[iSt][wiFCin[0]:wiFCin[-1],iSt+1]\n",
|
|
|
+ "axins2.fill_between(np.arange(ste_up.shape[0]), ste_up, ste_down, color='gray',alpha=0.5)\n",
|
|
|
+ " \n",
|
|
|
+ "axins2.set_xlim([0,m_pliW[iSt][wiFCin[0]:wiFCin[-1],iSt].shape[0]]) \n",
|
|
|
+ "axins2.axvline(wiFCin[1], ymin=0, ymax=1, c='k')\n",
|
|
|
+ "axins2.axvspan(0, 5, facecolor='silver', alpha=0.7)\n",
|
|
|
+ "axins2.axvspan(durM[iSt],wiFCin[-1]-wiFCin[0] , facecolor='silver', alpha=0.7) \n",
|
|
|
+ "axins2.set_yticklabels([])\n",
|
|
|
+ "axins2.set_xticklabels([])\n",
|
|
|
+ "axins2.set_xticks([])\n",
|
|
|
+ "axins2.set_yticks([])\n",
|
|
|
+ "\n",
|
|
|
+ "# z-score envelope ERP\n",
|
|
|
+ "for i in range(4):\n",
|
|
|
+ " axS[1,i].matshow(envZS[wiFC[0]-0:wiFC[-1]-0,:,i].T, aspect='auto')#,cmap='plasma') # independent scale for each stage \n",
|
|
|
+ " axS[1,i].axvline(wiFC[1]-3, ymin=0, ymax=1, c='k')\n",
|
|
|
+ " axS[1,i].set_xlim([0,(wiFC[2]-wiFC[0])])\n",
|
|
|
+ " axS[1,i].set_xticks(np.arange(2,(wiFC[2]-wiFC[0]),15)) \n",
|
|
|
+ " axS[1,i].axes.xaxis.set_ticklabels([])\n",
|
|
|
+ " axS[1,i].axvline(wiFC[1]+2.6, ymin=0, ymax=1, c='m',linestyle='-')# c='C7',linestyle='--')\n",
|
|
|
+ " axS[1,i].axvline(wiFC[1]-2.5, ymin=0, ymax=1, c='m',linestyle='-')# c='C7',linestyle='--')\n",
|
|
|
+ " axS[1,i].axvline(wiFC[1]-3.5, ymin=0, ymax=1, c='m',linestyle='-')# c='C7',linestyle='--')\n",
|
|
|
+ " axS[1,i].axvline(wiFC[1]-8.8, ymin=0, ymax=1, c='m',linestyle='-')# c='C7',linestyle='--')\n",
|
|
|
+ " if i == 3:\n",
|
|
|
+ " colorBlobesYaxes(axS[1,i],bLobes, lticks=4,wticks=1.2, bothAxis=True)\n",
|
|
|
+ " else:\n",
|
|
|
+ " colorBlobesYaxes(axS[1,i],bLobes, lticks=4,wticks=1.2)\n",
|
|
|
+ " axS[1,i].axes.tick_params(axis='x',direction='inout', length=lTicks)\n",
|
|
|
+ "axS[1,0].set_ylabel('Cortical ROIs \\nLeft|Right H.', labelpad=0.1,fontsize=fontS)\n",
|
|
|
+ " \n",
|
|
|
+ "# durations\n",
|
|
|
+ "minmax = [[0.0,0.02],[0.0,0.005],[0.0,0.02],[0.0,0.005]]\n",
|
|
|
+ "for i in range(4):\n",
|
|
|
+ " axS[2,i].hist(durStg[:,i+1]+200,bins=100,density=True,histtype='step',color=colorStg[i+1]);#, range=(0,1500))\n",
|
|
|
+ " axS[2,i].set_ylim(minmax[i])\n",
|
|
|
+ " dens, bins = np.histogram(durStg[:,i+1]+wiFC[1]*10,bins=100,density=True);#, range=(0,1500))\n",
|
|
|
+ " axS[2,i].axvline(wiFC[1]*10-30, ymin=0, ymax=1, c='k')\n",
|
|
|
+ " axS[2,i].axvline(bins[0], ymin=0, ymax=1,c='w',lw=1)\n",
|
|
|
+ " axS[2,i].set_xlim([0, (wiFC[2]-wiFC[0])*10])\n",
|
|
|
+ " axS[2,i].set_xticks(np.arange(20,(wiFC[2]-wiFC[0])*10,150)) \n",
|
|
|
+ " axS[2,i].set_xticklabels([str(j) for j in range(-150,(wiFC[2]-np.sum(wiFC[:2]))*10,150)])\n",
|
|
|
+ " axS[2,i].xaxis.set_ticks_position('both')\n",
|
|
|
+ " if np.mod(i,2): #0:even, 1:odd\n",
|
|
|
+ " axS[2,i].tick_params(axis=\"y\",direction=\"inout\", pad=-24)\n",
|
|
|
+ " else:\n",
|
|
|
+ " axS[2,i].tick_params(axis=\"y\",direction=\"inout\", pad=-16)\n",
|
|
|
+ " axS[2,i].set_xlabel('Stage Durations [ms]')\n",
|
|
|
+ " axS[2,0].set_ylabel(\"Probability \\n Density\",fontsize=fontS)\n",
|
|
|
+ " axS[2,i].set_yticks(np.array([minmax[i][0],np.mean(minmax[i]),minmax[i][1]]))\n",
|
|
|
+ " axS[2,i].yaxis.get_major_ticks()[0].label1.set_verticalalignment('bottom') \n",
|
|
|
+ " axS[2,i].yaxis.get_major_ticks()[-1].label1.set_verticalalignment('top') \n",
|
|
|
+ " \n",
|
|
|
+ "# guidig lines top\n",
|
|
|
+ "axL = fig.add_axes([leftOff,0.5,0.9,0.38])\n",
|
|
|
+ "axL.set_ylim([-1.5,1])\n",
|
|
|
+ "Ton = np.cumsum(duraM)*1.05-5\n",
|
|
|
+ "axL.set_xlim([-5,Ton[-1]+5])\n",
|
|
|
+ "tB = np.arange(0,Ton[-1]+0.01,Ton[-1]/4)-5\n",
|
|
|
+ "tB[0] = tB[0]-1\n",
|
|
|
+ "tB[2] = tB[2]+4\n",
|
|
|
+ "tB[3] = tB[3]+8\n",
|
|
|
+ "tB[-1] = tB[-1]+11\n",
|
|
|
+ "\n",
|
|
|
+ "offLSt = 1.5\n",
|
|
|
+ "\n",
|
|
|
+ "for i in range(4):\n",
|
|
|
+ " axL.plot(np.array([tB[i],tB[i],Ton[i]])+offLSt,[-1.5,0.5,1],c=colorStg[i+1],zorder=100)\n",
|
|
|
+ " axL.plot(np.array([Ton[i+1],tB[i+1],tB[i+1]])-offLSt,[1,0.5,-1.5],c=colorStg[i+1],zorder=10)\n",
|
|
|
+ "axL.axis('off')\n",
|
|
|
+ "\n",
|
|
|
+ "# idetifiers\n",
|
|
|
+ "yLoc = (np.cumsum(np.flipud(gridHratios))) * (1-bottOff) + bottOff/2\n",
|
|
|
+ "ids = ['(E)','(D)','(C)','(B)','(A)']\n",
|
|
|
+ "for iX, i in enumerate([0,1,2,3,5]):\n",
|
|
|
+ " fig.text(0.96, yLoc[i],ids[iX],ha='left',va='center',fontweight='bold')\n",
|
|
|
+ "\n",
|
|
|
+ "# fname = './dataSave/Figure1B_insRetResMean.png' \n",
|
|
|
+ "# pl.savefig(fname, dpi=None, facecolor='w', edgecolor=None,\n",
|
|
|
+ "# orientation='portrait', papertype=None, format='png',\n",
|
|
|
+ "# transparent=False, bbox_inches=None, pad_inches=0.,\n",
|
|
|
+ "# frameon=None)\n",
|
|
|
+ "# pl.close('all')"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "markdown",
|
|
|
+ "metadata": {},
|
|
|
+ "source": [
|
|
|
+ "For Fig 2"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": null,
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [],
|
|
|
+ "source": [
|
|
|
+ "imPath = '.data/imSIM/\n",
|
|
|
+ "orint = ['axi','sagi','sagi2'];\n",
|
|
|
+ "nSt = 4\n",
|
|
|
+ "nV = 3\n",
|
|
|
+ "\n",
|
|
|
+ "imFCs = [[None]*nV for _ in range(nSt)]\n",
|
|
|
+ "for iSt in range(nSt):\n",
|
|
|
+ " for iV in range(nV):\n",
|
|
|
+ " filename = imPath + 'BN_' + orint[iV] + '_stg_' + str(iSt+1) + '.png'\n",
|
|
|
+ " if iV == 0:\n",
|
|
|
+ " im_ = pl.imread(filename)[100:-100,180:-180,:]\n",
|
|
|
+ " imFCs[iSt][iV] = copy.deepcopy(im_)\n",
|
|
|
+ " else:\n",
|
|
|
+ " im_ = pl.imread(filename)[60:-100,100:-50,:]\n",
|
|
|
+ " imFCs[iSt][iV] = copy.deepcopy(im_)"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": null,
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [],
|
|
|
+ "source": [
|
|
|
+ "file = '.data/metaFC1000afterPulse_G0p3L0p7.npz'\n",
|
|
|
+ "with np.load(file) as data:\n",
|
|
|
+ " siMglo = data['metaG']\n",
|
|
|
+ " siMloc = data['metaL']\n",
|
|
|
+ " si2fc = data['sim2eFC']\n",
|
|
|
+ "\n",
|
|
|
+ "siMloc\n",
|
|
|
+ "fs = 100\n",
|
|
|
+ "t = np.linspace(1/fs,siMglo.shape[1]/fs,siMglo.shape[1])\n",
|
|
|
+ "tR = np.arange(1/fs,1.5+1/fs,1/fs) # trial length\n",
|
|
|
+ "nR = tR.shape[0]"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "markdown",
|
|
|
+ "metadata": {},
|
|
|
+ "source": [
|
|
|
+ "Random fit"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": null,
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [],
|
|
|
+ "source": [
|
|
|
+ "eFC = np.float32(loadmat('./data/FCstagesDTIrois.mat')['fc1d'])\n",
|
|
|
+ "eFCs = np.sign(eFC[2:,:])\n",
|
|
|
+ "nSt = eFCs.shape[0] \n",
|
|
|
+ "pairs = np.array(list(combinations(range(68),2)), dtype=np.int32)\n",
|
|
|
+ "\n",
|
|
|
+ "def fit2eFCs(ref, test):\n",
|
|
|
+ " return np.sum(ref * test, axis=1) / np.sum(np.abs(ref), axis=1)\n",
|
|
|
+ "\n",
|
|
|
+ "def doFC(argZ):\n",
|
|
|
+ " \"@ fc: [nSt, roi]\"\n",
|
|
|
+ " arg = np.exp(1j*argZ)\n",
|
|
|
+ " return np.sign(np.imag(arg[:,pairs[:,0]] * np.conjugate(arg[:,pairs[:,1]])))\n",
|
|
|
+ "\n",
|
|
|
+ "savedTo = './data/relevanceOfPulses_G0p3L0p7.npz'\n",
|
|
|
+ "with np.load(savedTo) as data:\n",
|
|
|
+ " fitRef = data['fitRef']\n",
|
|
|
+ " \n",
|
|
|
+ "N = 20000\n",
|
|
|
+ "raFit = np.zeros((nSt,N))\n",
|
|
|
+ "for i in range(N): \n",
|
|
|
+ " testFC = doFC(np.random.uniform(-np.pi,np.pi,(nSt, 68))) \n",
|
|
|
+ " raFit[:,i] = fit2eFCs(eFCs, testFC)"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "markdown",
|
|
|
+ "metadata": {},
|
|
|
+ "source": [
|
|
|
+ "Fig 2"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": null,
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [],
|
|
|
+ "source": [
|
|
|
+ "## one subplot per brain ##\n",
|
|
|
+ "simOn = np.int32(np.cumsum(np.round(np.mean(durStg,axis=0)/10)[1:])) # samples at 1/100\n",
|
|
|
+ "durM = np.int32(np.round(np.mean(durStg,axis=0)/10))\n",
|
|
|
+ "simOn = np.insert(simOn, 0, 0) + 12\n",
|
|
|
+ "\n",
|
|
|
+ "fig = pl.figure()\n",
|
|
|
+ "\n",
|
|
|
+ "gridHratios = [0.15,0.35,0.35,0.15]\n",
|
|
|
+ "leftOff, rightOff = 0.05, 0.95\n",
|
|
|
+ "topOff, bottOff = 0.91, 0.09\n",
|
|
|
+ "gridHspace = 0.01 #0.01\n",
|
|
|
+ "gridWspace = 0.05 #0.02\n",
|
|
|
+ "totWidth = rightOff-leftOff\n",
|
|
|
+ "totHeight = topOff-bottOff\n",
|
|
|
+ "fig = pl.figure()\n",
|
|
|
+ "fig.set_figheight(3.)\n",
|
|
|
+ "fig.set_figwidth(7)\n",
|
|
|
+ "fig.set_dpi(900)\n",
|
|
|
+ "fontS = 6\n",
|
|
|
+ "lTicks = 2\n",
|
|
|
+ "# matplotlib.rcParams.update({'font.size': fontS,'font.stretch' : 'ultra-condensed' })\n",
|
|
|
+ "matplotlib.rcParams['font.stretch'] = 'ultra-condensed'\n",
|
|
|
+ "matplotlib.rcParams['font.size'] = fontS\n",
|
|
|
+ "matplotlib.rcParams['lines.linewidth'] = 0.5\n",
|
|
|
+ "matplotlib.rcParams['patch.linewidth'] = 15\n",
|
|
|
+ "matplotlib.rcParams['axes.linewidth'] = 0.25 \n",
|
|
|
+ "# matplotlib.rcParams['axes.labelpad'] = 1\n",
|
|
|
+ "matplotlib.rcParams['xtick.labelsize'] = fontS\n",
|
|
|
+ "matplotlib.rcParams['ytick.labelsize'] = fontS\n",
|
|
|
+ "matplotlib.rcParams['xtick.direction'] = 'inout'\n",
|
|
|
+ "matplotlib.rcParams['ytick.direction'] = 'inout'\n",
|
|
|
+ "matplotlib.rcParams['xtick.major.width'] = 0.25\n",
|
|
|
+ "matplotlib.rcParams['ytick.major.width'] = 0.25\n",
|
|
|
+ "matplotlib.rcParams['xtick.major.size'] = lTicks\n",
|
|
|
+ "matplotlib.rcParams['ytick.major.size'] = lTicks\n",
|
|
|
+ "matplotlib.rcParams['xtick.major.pad'] = 1\n",
|
|
|
+ "matplotlib.rcParams['ytick.major.pad'] = 1\n",
|
|
|
+ "\n",
|
|
|
+ "gs = GridSpec(4,8,height_ratios=gridHratios,wspace=gridWspace,hspace=gridHspace,\n",
|
|
|
+ " left=leftOff, right=rightOff, top=topOff, bottom=bottOff) # 2 rows, 3 columns\n",
|
|
|
+ "axs0l,axs1,axs2 = [],[],[]\n",
|
|
|
+ "axs0r = np.empty((2,4),dtype=object)\n",
|
|
|
+ "for iX, i in enumerate(range(0,8,2)):\n",
|
|
|
+ " axs0l.append(fig.add_subplot(gs[1:3,i])) # First row, first column\n",
|
|
|
+ " axs0r[0,iX] = fig.add_subplot(gs[1,i+1])\n",
|
|
|
+ " axs0r[1,iX] = fig.add_subplot(gs[2,i+1])\n",
|
|
|
+ " axs1.append(fig.add_subplot(gs[3,i:i+2])) # S\n",
|
|
|
+ " axs2.append(fig.add_subplot(gs[0,i:i+2])) # RAndom\n",
|
|
|
+ "\n",
|
|
|
+ "# # FC brain\n",
|
|
|
+ "for iSt in range(nSt):\n",
|
|
|
+ " axs0l[iSt].imshow(imFCs[iSt][0])\n",
|
|
|
+ " axs0l[iSt].axis('off')\n",
|
|
|
+ " for iV in range(2):\n",
|
|
|
+ " axs0r[iV, iSt].imshow(imFCs[iSt][iV+1])\n",
|
|
|
+ " axs0r[iV, iSt].axis('off')\n",
|
|
|
+ " \n",
|
|
|
+ "# Random distributions \n",
|
|
|
+ "for i in range(4):\n",
|
|
|
+ " axs2[i].set_ylim([0,7])\n",
|
|
|
+ " axs2[i].set_xlim([-1.2,1.2])\n",
|
|
|
+ " axs2[i].spines['right'].set_visible(False)\n",
|
|
|
+ " axs2[i].spines['top'].set_visible(False)\n",
|
|
|
+ " axs2[i].spines['left'].set_visible(False)\n",
|
|
|
+ " axs2[i].spines['bottom'].set_bounds(-1, 1)\n",
|
|
|
+ " axs2[i].axes.get_yaxis().set_visible(False)\n",
|
|
|
+ " if i > 0:\n",
|
|
|
+ " axs2[i].spines['left'].set_visible(False)\n",
|
|
|
+ " axs2[i].hist(raFit[i,:],30, density=True)\n",
|
|
|
+ " axs2[i].vlines(np.min(fitRef[:,i]),0,5,'r') \n",
|
|
|
+ " axs2[0].set_xticks([-1,-0.5,0,0.5,1])\n",
|
|
|
+ " axs2[0].set_xticklabels(['-1','-0.5','0','0.5','1'])\n",
|
|
|
+ "\n",
|
|
|
+ "axs2[0].legend(['min(top 1%)', 'random'], loc=2, frameon=False,fancybox=False, \n",
|
|
|
+ " title=\"dpFC Fitenss\",labelspacing=0.05, fontsize=fontS, \n",
|
|
|
+ " markerscale=1, numpoints=1, handlelength=1,borderaxespad=0,\n",
|
|
|
+ " handletextpad=0.1)\n",
|
|
|
+ "\n",
|
|
|
+ "mimaFC = [-0.5, 1]\n",
|
|
|
+ "wiSim = np.arange(wiFC[-1]-wiFC[0])\n",
|
|
|
+ "for i in range(4):\n",
|
|
|
+ " wiIx = wiSim + simOn[i] - wiFC[1] + i\n",
|
|
|
+ " wiIx[wiIx<0] = 0\n",
|
|
|
+ " for j in range(4):\n",
|
|
|
+ " fcst = si2fc[j,wiIx].T\n",
|
|
|
+ " if i == j:\n",
|
|
|
+ " axs1[i].plot(fcst, c=colorStg[j+1])\n",
|
|
|
+ " else:\n",
|
|
|
+ " axs1[i].plot(fcst,'--', c=colorStg[j+1])\n",
|
|
|
+ " \n",
|
|
|
+ " axs1[i].axvline(wiFC[1]-3, c='k')\n",
|
|
|
+ " axs1[i].set_ylim(mimaFC)\n",
|
|
|
+ " axs1[i].set_yticks([]) \n",
|
|
|
+ " axs1[i].axvspan(0, wiFC[1], facecolor='silver', alpha=0.7)\n",
|
|
|
+ " axs1[i].axvspan(wiFC[1]+durM[i+1],wiFC[-1]-wiFC[0] , facecolor='silver', alpha=0.7)\n",
|
|
|
+ " axs1[i].set_xticks(np.arange(2,(wiFC[2]-wiFC[0]),15))\n",
|
|
|
+ " axs1[i].set_xticklabels([str(i) for i in range(-150,(wiFC[2]-np.sum(wiFC[:2]))*10,150)])\n",
|
|
|
+ " axs1[i].set_xlabel('Time [ms]')\n",
|
|
|
+ " axs1[i].set_xlim([0,(wiFC[2]-wiFC[0])])\n",
|
|
|
+ "\n",
|
|
|
+ "axs1[0].set_ylabel('Fit to MEG \\n within-stage dpFC',labelpad=4)\n",
|
|
|
+ "\n",
|
|
|
+ "# colorbars\n",
|
|
|
+ "labelsC = ['Accuracy', 'Input',]\n",
|
|
|
+ "axc = [None,None]\n",
|
|
|
+ "cmaps = [None,None]\n",
|
|
|
+ "axc[0] = fig.add_axes([0.05,0.4, 0.005, 0.1])\n",
|
|
|
+ "axc[1] = fig.add_axes([0.05,0.6, 0.005, 0.1])\n",
|
|
|
+ "cmaps[0] = cm.ScalarMappable( cmap = pl.get_cmap('cool'))\n",
|
|
|
+ "cmaps[1] = cm.ScalarMappable( cmap = pl.get_cmap('autumn'))\n",
|
|
|
+ "for i in range(2):\n",
|
|
|
+ "# cmaps[i].colorbar.set_lable('left')\n",
|
|
|
+ " cmaps[i].set_array([])\n",
|
|
|
+ " cm_ = fig.colorbar(cmaps[i], cax=axc[i], ticks=[0, 1])\n",
|
|
|
+ " cm_.set_label(labelsC[i], labelpad=1,horizontalalignment='right')\n",
|
|
|
+ " axc[i].yaxis.set_ticks_position('left')\n",
|
|
|
+ " axc[i].yaxis.set_label_position('left')\n",
|
|
|
+ " \n",
|
|
|
+ "axc[1].yaxis.set_ticklabels(['-800','550' ]) # horizontal colorbar\n",
|
|
|
+ "axc[0].yaxis.set_ticklabels(['0','1' ]) # horizontal colorbar\n",
|
|
|
+ " \n",
|
|
|
+ "# idetifiers\n",
|
|
|
+ "yLoc = (np.cumsum(np.flipud(gridHratios))) * (1-bottOff-0.05)*0.8 + bottOff\n",
|
|
|
+ "yLoc = [0.2,0,0.5,0.8]\n",
|
|
|
+ "ids = ['(C)','(B)','(A)']\n",
|
|
|
+ "for iX, i in enumerate([0,2,3]):\n",
|
|
|
+ " fig.text(0.96, yLoc[i],ids[iX],ha='left',va='center',fontweight='bold') \n",
|
|
|
+ " \n",
|
|
|
+ "# fname = '.dataSave/figure2mean.svg' \n",
|
|
|
+ "# pl.savefig(fname, dpi=None, facecolor='w', edgecolor=None,\n",
|
|
|
+ "# orientation='portrait', papertype=None, format='svg',\n",
|
|
|
+ "# transparent=False, bbox_inches=None, pad_inches=0.,\n",
|
|
|
+ "# frameon=None)\n",
|
|
|
+ "# pl.close('all')\n"
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "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.7"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ "nbformat": 4,
|
|
|
+ "nbformat_minor": 2
|
|
|
+}
|