88import pandas as pd
99from flamingo_tools .s3_utils import BUCKET_NAME , create_s3_target
1010
11- from util import frequency_mapping # , literature_reference_values
11+ from util import frequency_mapping , prism_style , prism_cleanup_axes # , literature_reference_values
1212
1313# from statsmodels.nonparametric.smoothers_lowess import lowess
1414
@@ -117,6 +117,7 @@ def fig_04c(chreef_data, save_path, plot=False, plot_by_side=False, use_alias=Tr
117117 # cochlea = ["M_LR_000144_L", "M_LR_000145_L", "M_LR_000151_R"]
118118 # alias = ["c01", "c02", "c03"]
119119 # sgns = [7796, 6119, 9225]
120+ prism_style ()
120121
121122 # TODO have central function for alias for all plots?
122123 if use_alias :
@@ -132,27 +133,25 @@ def fig_04c(chreef_data, save_path, plot=False, plot_by_side=False, use_alias=Tr
132133 x = np .arange (len (alias ))
133134
134135 # Plot
135- plt .figure (figsize = (8 , 5 ))
136+ fig , ax = plt .subplots (figsize = (5 , 5 ))
136137
137138 main_label_size = 20
138139 sub_label_size = 16
139140 main_tick_size = 16
140- legendsize = 16
141+ legendsize = 12
141142
142143 if plot_by_side :
143- plt .scatter (x , sgns_left , label = "Left " , marker = "o" , s = 80 )
144- plt .scatter (x , sgns_right , label = "Right " , marker = "x" , s = 80 )
144+ plt .scatter (x , sgns_left , label = "Injected " , marker = "o" , s = 80 )
145+ plt .scatter (x , sgns_right , label = "Non-Injected " , marker = "x" , s = 80 )
145146 else :
146147 plt .scatter (x , sgns , label = "SGN count" , marker = "o" , s = 80 )
147148
148149 # Labels and formatting
149150 plt .xticks (x , alias , fontsize = sub_label_size )
150151 plt .yticks (fontsize = main_tick_size )
151152 plt .ylabel ("SGN count per cochlea" , fontsize = main_label_size )
152- plt .ylim (4000 , 13800 )
153- plt .legend (loc = "best" , fontsize = sub_label_size )
154- plt .legend (loc = "upper center" , bbox_to_anchor = (0.5 , 1.11 ),
155- ncol = 3 , fancybox = True , shadow = False , framealpha = 0.8 , fontsize = legendsize )
153+ plt .ylim (4000 , 15800 )
154+ plt .legend (loc = "upper right" , fontsize = legendsize )
156155
157156 xmin = - 0.5
158157 xmax = len (alias ) - 0.5
@@ -172,12 +171,14 @@ def fig_04c(chreef_data, save_path, plot=False, plot_by_side=False, use_alias=Tr
172171 lower_y = sgn_value - 1.96 * sgn_std
173172
174173 plt .hlines ([lower_y , upper_y ], xmin , xmax , colors = ["C1" for _ in range (2 )])
175- plt .text (1.5 , upper_y + 100 , "healthy cochleae (95% confidence interval)" ,
176- color = "C1" , fontsize = main_tick_size , ha = "center" )
174+ plt .text (2 , upper_y + 200 , "untreated cochleae\n (95% confidence interval)" ,
175+ color = "C1" , fontsize = 14 , ha = "center" )
177176 plt .fill_between ([xmin , xmax ], lower_y , upper_y , color = "C1" , alpha = 0.05 , interpolate = True )
178177
179178 plt .tight_layout ()
180179
180+ prism_cleanup_axes (ax )
181+
181182 if ".png" in save_path :
182183 plt .savefig (save_path , bbox_inches = "tight" , pad_inches = 0.1 , dpi = png_dpi )
183184 else :
@@ -192,6 +193,7 @@ def fig_04c(chreef_data, save_path, plot=False, plot_by_side=False, use_alias=Tr
192193def fig_04d (chreef_data , save_path , plot = False , plot_by_side = False , intensity = False , gerbil = False , use_alias = True ):
193194 """Transduction efficiency per cochlea.
194195 """
196+ prism_style ()
195197 if use_alias :
196198 alias = [COCHLEAE_DICT [k ]["alias" ] for k in chreef_data .keys ()]
197199 else :
@@ -219,35 +221,34 @@ def fig_04d(chreef_data, save_path, plot=False, plot_by_side=False, intensity=Fa
219221 x = np .arange (len (alias ))
220222
221223 # Plot
222- plt .figure (figsize = (8 , 5 ))
224+ fig , ax = plt .subplots (figsize = (5 , 5 ))
223225
224226 main_label_size = 20
225227 sub_label_size = 16
226228 main_tick_size = 16
227- legendsize = 16
229+ legendsize = 12
228230
229231 label = "Intensity" if intensity else "Transduction efficiency"
230232
231233 if plot_by_side :
232- plt .scatter (x , values_left , label = "Left " , marker = "o" , s = 80 )
233- plt .scatter (x , values_right , label = "Right " , marker = "x" , s = 80 )
234+ plt .scatter (x , values_left , label = "Injected " , marker = "o" , s = 80 )
235+ plt .scatter (x , values_right , label = "Non-Injected " , marker = "x" , s = 80 )
234236 else :
235237 plt .scatter (x , values , label = label , marker = "o" , s = 80 )
236238
237239 # Labels and formatting
238240 plt .xticks (x , alias , fontsize = sub_label_size )
239241 plt .yticks (fontsize = main_tick_size )
240242 plt .ylabel (label , fontsize = main_label_size )
241- plt .legend (loc = "best" , fontsize = sub_label_size )
242- plt .legend (loc = "upper center" , bbox_to_anchor = (0.5 , 1.11 ),
243- ncol = 3 , fancybox = True , shadow = False , framealpha = 0.8 , fontsize = legendsize )
243+ plt .legend (loc = "upper right" , fontsize = legendsize )
244244 if not intensity :
245245 if gerbil :
246246 plt .ylim (0.3 , 1.05 )
247247 else :
248248 plt .ylim (0.5 , 1.05 )
249249
250250 plt .tight_layout ()
251+ prism_cleanup_axes (ax )
251252
252253 if ".png" in save_path :
253254 plt .savefig (save_path , bbox_inches = "tight" , pad_inches = 0.1 , dpi = png_dpi )
@@ -261,6 +262,7 @@ def fig_04d(chreef_data, save_path, plot=False, plot_by_side=False, intensity=Fa
261262
262263
263264def fig_04e (chreef_data , save_path , plot , intensity = False , gerbil = False , use_alias = True , trendlines = False ):
265+ prism_style ()
264266
265267 result = {"cochlea" : [], "octave_band" : [], "value" : []}
266268 for name , values in chreef_data .items ():
@@ -295,15 +297,14 @@ def fig_04e(chreef_data, save_path, plot, intensity=False, gerbil=False, use_ali
295297 if intensity :
296298 band_label_offset_y = 0.09
297299 else :
298- band_label_offset_y = 0.07
300+ band_label_offset_y = 0.09
299301 if gerbil :
300302 ax .set_ylim (0.05 , 1.05 )
301303 else :
302304 ax .set_ylim (0.45 , 1.05 )
303305
304306 # Offsets within each octave band
305307 offset_map = {"L" : - 0.15 , "R" : 0.15 }
306- sublabels = {"L" : "L" , "R" : "R" }
307308
308309 # Assign a color to each cochlea (ignoring side)
309310 cochleas = sorted ({name_lr [:- 1 ] for name_lr in result ["cochlea" ].unique ()})
@@ -315,9 +316,6 @@ def fig_04e(chreef_data, save_path, plot, intensity=False, gerbil=False, use_ali
315316 # Track which cochlea names we have already added to the legend
316317 legend_added = set ()
317318
318- all_x_positions = []
319- all_x_labels = []
320-
321319 trend_dict = {}
322320
323321 for name_lr , grp in result .groupby ("cochlea" ):
@@ -352,10 +350,6 @@ def fig_04e(chreef_data, save_path, plot, intensity=False, gerbil=False, use_ali
352350 "side" : side ,
353351 }
354352
355- # Store for sublabel ticks
356- all_x_positions .extend (x_positions )
357- all_x_labels .extend ([sublabels [side ]] * len (x_positions ))
358-
359353 if trendlines :
360354 def get_trendline_values (trend_dict , side ):
361355 x_sorted = [trend_dict [k ]["x_sorted" ] for k in trend_dict .keys () if trend_dict [k ]["side" ] == side ][0 ]
@@ -387,7 +381,7 @@ def get_trendline_values(trend_dict, side):
387381 trendline_legend = ax .legend (handles = [trend_l , trend_r ], loc = 'lower center' )
388382 trendline_legend = ax .legend (
389383 handles = [trend_l , trend_r ],
390- labels = ["Left " , "Right " ],
384+ labels = ["Injected " , "Non-Injected " ],
391385 loc = "lower center" ,
392386 fontsize = legend_size ,
393387 title = "Trendlines"
@@ -398,10 +392,9 @@ def get_trendline_values(trend_dict, side):
398392 # Create combined tick positions & labels
399393 main_ticks = range (len (bin_labels ))
400394 # add a final tick for label '>64k'
401- ax .set_xticks ([pos + offset_map ["L" ] for pos in main_ticks [:- 1 ]] +
402- [pos + offset_map ["R" ] for pos in main_ticks [:- 1 ]] +
403- [pos for pos in main_ticks [- 1 :]])
404- ax .set_xticklabels (["L" ] * len (main_ticks [:- 1 ]) + ["R" ] * len (main_ticks [:- 1 ]) + ["" ], fontsize = sub_tick_label_size )
395+ ax .set_xticks ([pos + offset_map ["L" ] for pos in main_ticks ] +
396+ [pos + offset_map ["R" ] for pos in main_ticks ])
397+ ax .set_xticklabels (["I" ] * len (main_ticks ) + ["N" ] * len (main_ticks ), fontsize = sub_tick_label_size )
405398
406399 # Add main octave band labels above sublabels
407400 for i , label in enumerate (bin_labels ):
@@ -416,11 +409,11 @@ def get_trendline_values(trend_dict, side):
416409 ax .set_title ("Intensity per octave band (Left/Right)" )
417410 else :
418411 ax .set_ylabel ("Transduction Efficiency" , fontsize = label_size )
419- ax .set_title ("Transduction efficiency per octave band (Left/Right)" )
420412
421413 ax .legend (title = "Cochlea" , fontsize = legend_size )
422414
423415 plt .tight_layout ()
416+ prism_cleanup_axes (ax )
424417
425418 if ".png" in save_path :
426419 plt .savefig (save_path , bbox_inches = "tight" , pad_inches = 0.1 , dpi = png_dpi )
@@ -462,33 +455,33 @@ def main():
462455 fig_04d (chreef_data ,
463456 save_path = os .path .join (args .figure_dir , f"fig_04d_transduction.{ FILE_EXTENSION } " ),
464457 plot = args .plot , plot_by_side = True , use_alias = use_alias )
465- fig_04d (chreef_data ,
466- save_path = os .path .join (args .figure_dir , f"fig_04d_intensity.{ FILE_EXTENSION } " ),
467- plot = args .plot , plot_by_side = True , intensity = True , use_alias = use_alias )
458+ # fig_04d(chreef_data,
459+ # save_path=os.path.join(args.figure_dir, f"fig_04d_intensity.{FILE_EXTENSION}"),
460+ # plot=args.plot, plot_by_side=True, intensity=True, use_alias=use_alias)
468461
469462 fig_04e (chreef_data ,
470463 save_path = os .path .join (args .figure_dir , f"fig_04e_transduction.{ FILE_EXTENSION } " ),
471464 plot = args .plot , use_alias = use_alias , trendlines = True )
472- fig_04e (chreef_data ,
473- save_path = os .path .join (args .figure_dir , f"fig_04e_intensity.{ FILE_EXTENSION } " ),
474- plot = args .plot , intensity = True , use_alias = use_alias )
465+ # fig_04e(chreef_data,
466+ # save_path=os.path.join(args.figure_dir, f"fig_04e_intensity.{FILE_EXTENSION}"),
467+ # plot=args.plot, intensity=True, use_alias=use_alias)
475468
476469 chreef_data_gerbil = get_chreef_data (animal = "gerbil" )
477470 fig_04d (chreef_data_gerbil ,
478471 save_path = os .path .join (args .figure_dir , f"fig_04d_gerbil_transduction.{ FILE_EXTENSION } " ),
479472 plot = args .plot , plot_by_side = True , gerbil = True , use_alias = use_alias )
480473
481- fig_04d (chreef_data_gerbil ,
482- save_path = os .path .join (args .figure_dir , f"fig_04d_gerbil_intensity.{ FILE_EXTENSION } " ),
483- plot = args .plot , plot_by_side = True , intensity = True , use_alias = use_alias )
474+ # fig_04d(chreef_data_gerbil,
475+ # save_path=os.path.join(args.figure_dir, f"fig_04d_gerbil_intensity.{FILE_EXTENSION}"),
476+ # plot=args.plot, plot_by_side=True, intensity=True, use_alias=use_alias)
484477
485478 fig_04e (chreef_data_gerbil ,
486479 save_path = os .path .join (args .figure_dir , f"fig_04e_gerbil_transduction.{ FILE_EXTENSION } " ),
487480 plot = args .plot , gerbil = True , use_alias = use_alias )
488481
489- fig_04e (chreef_data_gerbil ,
490- save_path = os .path .join (args .figure_dir , f"fig_04e_gerbil_intensity.{ FILE_EXTENSION } " ),
491- plot = args .plot , intensity = True , use_alias = use_alias )
482+ # fig_04e(chreef_data_gerbil,
483+ # save_path=os.path.join(args.figure_dir, f"fig_04e_gerbil_intensity.{FILE_EXTENSION}"),
484+ # plot=args.plot, intensity=True, use_alias=use_alias)
492485
493486
494487if __name__ == "__main__" :
0 commit comments