def plotPowerCLR(recompute=False): if recompute: mc = pd.read_pickle('{}ROC/{}'.format(utl.outpath, 'MarkovChain')) hmm = f(pd.read_pickle('{}ROC/{}'.format(utl.outpath, 'HMM'))) a = pd.concat([mc, hmm]); print a a = a[a.index.get_level_values('coverage') != np.inf] df = pd.DataFrame(a.groupby(level=range(6)).apply(lambda x: x[x >= x.quantile(Qcoverage[x.name[0]])].mean()))[0] # df = pd.DataFrame(a.groupby(level=range(6)).apply(lambda x: x[x >= x.quantile(0.99)].mean())) df = getPower(df, groupbyLevels=range(4)) df.to_pickle(utl.outpath + 'ROC/PowerCLR.df') else: df = pd.read_pickle(utl.outpath + 'ROC/PowerCLR.df') reload(pplt) info = pplt.getNameColorMarker(df) info.loc[info.index.get_level_values('method') == 'HMM', 'marker'] = '--o' info.loc[info.index.get_level_values('method') == 'MarkovChain', 'marker'] = '--s' info.loc[info.index.get_level_values('method') == 'HMM', 'color'] = 'r' info.loc[info.index.get_level_values('method') == 'MarkovChain', 'color'] = 'darkblue' # info.loc[info.index.get_level_values('q')==0.99,'color']='r' # info.loc[info.index.get_level_values('q')==1,'color']='darkblue' fig, axes = plt.subplots(2, 3, sharey=True, sharex=True, figsize=(6, 2.5), dpi=dpi); pplt.setStyle(lw=1); pplt.plotOnePower(df.xs(0.005, level='nu0'), info, axes[0], legendSubplot=0, ylabel='Hard'); pplt.plotOnePower(df.xs(0.1, level='nu0'), info, axes[1], ylabel='Soft'); [pplt.annotate('({})'.format(list('ABCDEF')[j]), ax=x, fontsize=7) for j, x in enumerate(axes.reshape(-1))] plt.gcf().subplots_adjust(bottom=0.15) pplt.savefig('powerCLR', dpi=dpi) plt.show()
def plotPower(recompute=False): if recompute: causal = lambda x: x[(x.index.get_level_values('causal') == True) | (x.index.get_level_values('label') == -1)] FIT = pd.read_pickle(utl.outpath + 'ROC/FIT')['FIT']; FIT[FIT.isnull()] = np.random.rand(FIT.isnull().sum()) CMH = causal(pd.read_pickle(utl.outpath + 'ROC/CMH')['CMH'].fillna(0)) GP = causal(pd.read_pickle(utl.outpath + 'ROC/GP').LR) HMM = f(loadHMMAllDepths()) # HMM = (HMM.alt - HMM.null) ;HMM = HMM.groupby(level=range(6)).mean() # HMM = HMM.groupby(level=range(6)).apply(lambda x: x[x >= x.quantile(0.99)].mean()) HMM = HMM.groupby(level=range(6)).apply(lambda x: x[x >= x.quantile(Qcoverage[x.name[0]])].mean()) GP = GP.groupby(level=range(6)).max() FIT = FIT.groupby(level=range(6)).max(); # dont move this line! CMH = CMH.groupby(level=range(6)).max(); df = getPower(pd.concat([GP, HMM, FIT, CMH]), range(4)).sort_index() df.to_pickle(utl.outpath + 'ROC/Power.df') else: df = pd.read_pickle(utl.outpath + 'ROC/Power.df') df = df[df.index.get_level_values('coverage') != np.inf] df = fixComaleName(df) info = fixColor(pplt.getNameColorMarker(df)) fig, axes = plt.subplots(2, 3, sharey=True, sharex=True, figsize=(6, 2.5), dpi=pplt.PLOS.dpi); pplt.setStyle(lw=1); reload(pplt) pplt.plotOnePower(df.xs(0.005, level='nu0'), info, axes[0], legendSubplot=0, ylabel='Hard', panel=list('ABC')); pplt.plotOnePower(df.xs(0.1, level='nu0'), info, axes[1], ylabel='Soft', panel=list('DEF')); [pplt.annotate('({})'.format(list('ABCDEF')[j]), ax=x, fontsize=7) for j, x in enumerate(axes.reshape(-1))] plt.gcf().subplots_adjust(bottom=0.15) pplt.savefig('power', pplt.PLOS.dpi) df.groupby(level=range(3)).mean().unstack('method').to_pickle(utl.outpath + 'ROC/avgPower.df') csv = df.groupby(level=range(3)).mean().reset_index() # csv.replace({'HMM': comaleName}, inplace=True) csv.replace({np.inf: r'$\infty$'}, inplace=True) csv.nu0.replace({0.005: 'Hard', 0.1: 'Soft'}, inplace=True) csv.columns = [r'$\lambda$', 'Sweep', 'Method', 'Avg Power'] csv.sort_values([r'$\lambda$', 'Sweep', 'Avg Power'], ascending=False, inplace=True) csv['Avg Power'] = csv['Avg Power'].round().astype(int) csv = csv.set_index(['Sweep']) i = csv[r'$\lambda$'].apply(lambda x: not isinstance(x, str)) csv.loc[i, r'$\lambda$'] = csv.loc[i, r'$\lambda$'].astype(int) soft = csv.loc['Soft'].sort_values([r'$\lambda$', 'Avg Power'], ascending=False) hard = csv.loc['Hard'].sort_values([r'$\lambda$', 'Avg Power'], ascending=False) utl.DataframetolaTexTable(hard, fname=utl.paperFiguresPath + '../tables/powerHardMathods.tex') utl.DataframetolaTexTable(soft, fname=utl.paperFiguresPath + '../tables/powerSoftMethods.tex') plt.show()