@@ -31,7 +31,7 @@ def legend_title_left(leg):
3131else :
3232 ind = ''
3333r_list = [2 ,4 ,6 ]
34- method_list = ['wilc' , 'DESeq' , 'cocoa' , 'cinemaot' , 'cinemaotw' ] \
34+ method_list = ['wilc' , 'DESeq' , 'cocoa' , 'cinemaot' , 'cinemaotw' , 'mixscape' ] \
3535 + ['ruv_r_{}' .format (r ) for r in r_list ] \
3636 + ['ruv3nb_r_{}' .format (r ) for r in r_list ] \
3737 + ['causarray_r_{}' .format (r ) for r in r_list ]
@@ -83,6 +83,27 @@ def legend_title_left(leg):
8383df_res .reset_index (drop = True , inplace = True )
8484df_res .to_csv (path_base + 'results/result{}_test.csv' .format (ind ))
8585
86+
87+ sns .set (font_scale = 1.2 )
88+ fig , axes = plt .subplots (1 ,2 , figsize = (10 ,4 ), sharex = True , sharey = False )
89+ for j , metric in enumerate (['FDR' , 'power' ]):
90+ sns .boxplot (data = df_res , x = 'n' , y = metric , hue = 'method' , ax = axes [j ])
91+
92+ axes [0 ].axhline (alpha , color = 'r' , linestyle = '--' )
93+ lines_labels = [ax .get_legend_handles_labels () for ax in [axes [1 ]]]
94+ handles , labels = [sum (lol , []) for lol in zip (* lines_labels )]
95+
96+ axes [0 ].get_legend ().remove ()
97+ axes [1 ].get_legend ().remove ()
98+ legend = fig .legend (handles = handles , labels = labels ,
99+ loc = 9 , ncol = 5 , title = None , frameon = False )
100+ legend_title_left (legend )
101+
102+ fig .tight_layout ()
103+ fig .subplots_adjust (top = 0.85 )
104+
105+ plt .savefig (path_base + 'results/simu{}_res.pdf' .format (ind ), bbox_inches = 'tight' , pad_inches = 0 , dpi = 300 )
106+
86107print (df_res .groupby (['n' ,'method' ])[['typeI_err' , 'FDR' , 'power' , 'FDX' , 'num_dis' ]].median ())
87108
88109
@@ -93,7 +114,7 @@ def legend_title_left(leg):
93114
94115
95116r_list = [2 ,4 ,6 ]
96- method_list = ['cocoa' , 'cinemaot' , 'cinemaotw' ] \
117+ method_list = ['cocoa' , 'cinemaot' , 'cinemaotw' , 'mixscape' ] \
97118 + ['ruv_r_{}' .format (r ) for r in r_list ] \
98119 + ['ruv3nb_r_{}' .format (r ) for r in r_list ] \
99120 + ['causarray_r_{}' .format (r ) for r in r_list ]
@@ -146,4 +167,67 @@ def legend_title_left(leg):
146167 df_res = pd .concat ([df_res , df ], axis = 0 )
147168
148169df_res .reset_index (drop = True , inplace = True )
149- df_res .to_csv (path_base + 'results/result{}_deconfound.csv' .format (ind ))
170+ df_res .to_csv (path_base + 'results/result{}_deconfound.csv' .format (ind ))
171+
172+
173+
174+
175+
176+ df_test = pd .read_csv (path_base + 'results/result{}_test.csv' .format (ind )).rename ({'FDR' :'FPR' , 'power' :'TPR' }, axis = 1 )
177+ df_cf = pd .read_csv (path_base + 'results/result{}_deconfound.csv' .format (ind ))
178+
179+ r_list = [2 ,4 ,6 ]
180+ method_name = {
181+ 'wilc' :'Wilcoxon' , 'DESeq' :'DESeq2' , 'cocoa' :'CoCoA' , 'cinemaot' :'CINEMA-OT' , 'cinemaotw' :'CINEMA-OT-W' , 'mixscape' :'Mixscape' ,
182+ }
183+
184+ method_name = reduce (lambda a , b : dict (a , ** b ),
185+ [{'ruv_r_{}' .format (r ):'RUV $r={}$' .format (r ) for r in r_list },
186+ {'ruv3nb_r_{}' .format (r ):'RUV-III-NB $r={}$' .format (r ) for r in r_list },
187+ {'causarray_r_{}' .format (r ):'causarray $r={}$' .format (r ) for r in r_list }
188+ ])
189+
190+ df_test = df_test [df_test ['method' ].isin (method_name .keys ())]
191+ df_cf = df_cf [df_cf ['method' ].isin (method_name .keys ())]
192+ df_test ['method' ] = df_test ['method' ].map (method_name )
193+ df_cf ['method' ] = df_cf ['method' ].map (method_name )
194+
195+ df_test = df_test [df_test ['n' ].isin (n_list )]
196+ df_cf = df_cf [df_cf ['n' ].isin (n_list )]
197+
198+ method_list = method_name .values ()#df_test['method'].unique()
199+ # palette = sns.color_palette()[:len(method_list)]
200+ palette = reduce (lambda l1 , l2 : l1 + l2 , [sns .color_palette (name )[:len (r_list )* 2 :2 ] for name in ['Reds' , 'Greens' , 'Blues' ]])
201+ hue_order = {i :c for i ,c in zip (method_list , palette ) }
202+
203+ sns .set (font_scale = 1.3 )
204+ fig , axes = plt .subplots (1 ,4 , figsize = (16 ,5 ), sharex = False , sharey = False )
205+ for j , metric in enumerate (['FPR' , 'TPR' ]):
206+ sns .boxplot (data = df_test , x = 'n' , y = metric , hue = 'method' , hue_order = hue_order ,
207+ ax = axes [j + 2 ], palette = palette , showfliers = False )
208+
209+ for j , metric in enumerate (['ARI' , 'ASW' ]):
210+ sns .boxplot (data = df_cf , x = 'n' , y = metric , hue = 'method' , hue_order = hue_order ,
211+ ax = axes [j ], palette = palette , showfliers = False )
212+
213+ axes [2 ].axhline (0.1 , color = 'r' , linestyle = '--' )
214+ lines_labels = [ax .get_legend_handles_labels () for ax in [axes [1 ]]]
215+ handles , labels = [sum (lol , []) for lol in zip (* lines_labels )]
216+ handles = [mlines .Line2D ([], [], linestyle = 'None' )] * 3 + handles [::3 ] + handles [1 ::3 ] + handles [2 ::3 ]
217+ labels = ['RUV' , 'RUV-III-NB' , 'causarray' ,
218+ '$r=2$' , '$r=2$' , '$r=2$' ,
219+ '$r=4$' , '$r=4$' , '$r=4$' ,
220+ '$r=6$' , '$r=6$' , '$r=6$' ]
221+
222+ for j in range (4 ):
223+ axes [j ].get_legend ().remove ()
224+ axes [j ].tick_params (axis = 'both' , which = 'major' , labelsize = 10 )
225+ axes [j ].set_xlabel ('Sample size $n$' )
226+ legend = fig .legend (handles = handles , labels = labels ,
227+ loc = 9 , ncol = 4 , title = None , frameon = False )
228+ legend_title_left (legend )
229+
230+ fig .tight_layout ()
231+ fig .subplots_adjust (top = 0.78 )
232+
233+ plt .savefig (path_base + 'results/simu_nb_r{}.pdf' .format (ind ), bbox_inches = 'tight' , pad_inches = 0 , dpi = 300 )
0 commit comments