def loadExptGrps(mouse_set): expts = lab.ExperimentSet(os.path.join(metadata_path, 'expt_metadata.xml'), behaviorDataPath=os.path.join( data_path, 'behavior'), dataPath=os.path.join(data_path, 'imaging')) mouse_sets = {} mouse_sets['GOL'] = ('jz096', 'jz097', 'jz098', 'jz100', 'jz101', 'jz102', 'jz106', 'jz113', 'jz114', 'jz121', 'jz135', 'jz136') mouse_sets['RF'] = ('jz049', 'jz051', 'jz052', 'jz053', 'jz054', 'jz058', 'jz059', 'jz060', 'jz064', 'jz066', 'jz067') if mouse_set not in mouse_sets: raise ValueError('Unrecognized mouse set') exptGrps = {} WT = [] Df = [] for mouse in [expts.grabMouse(m) for m in mouse_sets[mouse_set]]: genotype = mouse.get('genotype').lower() if 'df16ap' in genotype: Df.append(mouse) elif 'df16an' in genotype: WT.append(mouse) exptGrps['WT_mice'] = WT exptGrps['Df_mice'] = Df if mouse_set == 'GOL': exptGrps['WT_hidden_behavior_set'] = \ lab.classes.HiddenRewardExperimentGroup.from_json( WT_behavior_set, expts, label=WT_label) exptGrps['Df_hidden_behavior_set'] = \ lab.classes.HiddenRewardExperimentGroup.from_json( Df_behavior_set, expts, label=Df_label) exptGrps['WT_place_set'] = \ lab.classes.pcExperimentGroup.from_json( WT_imaging_set, expts, imaging_label=IMAGING_LABEL, label=WT_label) exptGrps['Df_place_set'] = \ lab.classes.pcExperimentGroup.from_json( Df_imaging_set, expts, imaging_label=IMAGING_LABEL, label=Df_label) elif mouse_set == 'RF': exptGrps['WT_place_set'] = \ lab.classes.pcExperimentGroup.from_json( WT_RF_set, expts, imaging_label=IMAGING_LABEL, label=WT_label).pair() exptGrps['Df_place_set'] = \ lab.classes.pcExperimentGroup.from_json( Df_RF_set, expts, imaging_label=IMAGING_LABEL, label=Df_label).pair() return exptGrps
def main(): expts = lab.ExperimentSet( os.path.join(df.metadata_path, 'expt_metadata.xml'), behaviorDataPath=os.path.join(df.data_path, 'behavior'), dataPath=os.path.join(df.data_path, 'imaging')) sal_grp = lab.classes.HiddenRewardExperimentGroup.from_json( sal_json, expts, label='saline to muscimol') mus_grp = lab.classes.HiddenRewardExperimentGroup.from_json( mus_json, expts, label='muscimol to saline') fig = plt.figure(figsize=(8.5, 11)) gs = plt.GridSpec(1, 1, top=0.9, bottom=0.7, left=0.1, right=0.4) ax = fig.add_subplot(gs[0, 0]) for expt in mus_grp: if 'saline' in expt.get('drug'): expt.attrib['drug_condition'] = 'reversal' elif 'muscimol' in expt.get('drug'): expt.attrib['drug_condition'] = 'learning' for expt in sal_grp: if 'saline' in expt.get('drug'): expt.attrib['drug_condition'] = 'learning' elif 'muscimol' in expt.get('drug'): expt.attrib['drug_condition'] = 'reversal' plotting.plot_metric( ax, [sal_grp, mus_grp], metric_fn=ra.fraction_licks_in_reward_zone, label_groupby=False, plotby=['X_drug_condition'], plot_method='swarm', rotate_labels=False, activity_label='Fraction of licks in reward zone', colors=sns.color_palette('deep'), plot_bar=True) ax.set_yticks([0, 0.1, 0.2, 0.3, 0.4]) ax.set_ylim(top=0.4) ax.set_xticklabels(['Days 1-3', 'Day 4']) sns.despine(fig) ax.set_title('') ax.set_xlabel('') misc.save_figure( fig, filename, save_dir=save_dir) plt.close('all')
def main(): raw_data, data = emd.load_data('wt', session_filter='C', root=os.path.join(df.data_path, 'enrichment_model')) expts = lab.ExperimentSet(os.path.join(df.metadata_path, 'expt_metadata.xml'), behaviorDataPath=os.path.join( df.data_path, 'behavior'), dataPath=os.path.join(df.data_path, 'imaging')) params = pickle.load(open(params_path)) fig = plt.figure(figsize=(8.5, 11)) gs1 = plt.GridSpec(1, 2, left=0.1, bottom=0.65, right=0.9, top=0.9, wspace=0.05) fov1_ax = fig.add_subplot(gs1[0, 0]) fov2_ax = fig.add_subplot(gs1[0, 1]) cmap_ax = fig.add_axes([0.49, 0.65, 0.02, 0.25]) gs2 = plt.GridSpec(2, 2, left=0.1, bottom=0.3, right=0.5, top=0.6, wspace=0.5, hspace=0.5) recur_ax = fig.add_subplot(gs2[0, 0]) shift_ax = fig.add_subplot(gs2[0, 1]) shift_compare_ax = fig.add_subplot(gs2[1, 0]) var_compare_ax = fig.add_subplot(gs2[1, 1]) # # Tuning maps # e1 = expts.grabExpt('jz135', '2015-10-12-14h33m47s') e2 = expts.grabExpt('jz135', '2015-10-12-15h34m38s') cmap = mpl.colors.ListedColormap(sns.color_palette("husl", 256)) for ax, expt in ((fov1_ax, e1), (fov2_ax, e2)): place.plot_spatial_tuning_overlay(ax, lab.classes.pcExperimentGroup( [expt], imaging_label='soma'), labels_visible=False, alpha=0.9, lw=0.1, cmap=cmap) plot_ROI_outlines(ax, expt, channel='Ch2', label='soma', roi_filter=None, ls='-', color='k', lw=0.1) # Add a 50-um scale bar plotting.add_scalebar( ax=ax, matchx=False, matchy=False, sizey=0, sizex=50 / expt.imagingParameters()['micronsPerPixel']['XAxis'], bar_color='w', bar_thickness=3) fov1_ax.set_title('Session 1') fov2_ax.set_title('Session 2') gradient = np.linspace(0, 1, 256) gradient = np.vstack((gradient, gradient)).T cmap_ax.imshow(gradient, aspect='auto', cmap=cmap) sns.despine(ax=cmap_ax, top=True, left=True, right=True, bottom=True) cmap_ax.tick_params(left=False, labelleft=False, bottom=False, labelbottom=False) cmap_ax.set_ylabel('belt position') # Figure out the reward window width reward_poss, windows = [], [] for expt in [e1, e2]: reward_poss.append(expt.rewardPositions(units='normalized')[0]) track_length = expt[0].behaviorData()['trackLength'] window = float(expt.get('operantSpatialWindow')) windows.append(window / track_length) reward_pos = np.mean(reward_poss) window = np.mean(windows) # Add reward zone cmap_ax.plot([0, 1], [reward_pos, reward_pos], transform=cmap_ax.transAxes, color='k', ls=':') cmap_ax.plot([0, 1], [reward_pos + window, reward_pos + window], transform=cmap_ax.transAxes, color='k', ls=':') cmap_ax.set_ylim(0, 256) # # Recurrence by position # recur_x_vals = np.linspace(-np.pi, np.pi, 1000) recur_data = emd.recurrence_by_position(data, method='cv') recur_knots = np.linspace(-np.pi, np.pi, params['position_recurrence']['n_knots']) recur_splines = splines.CyclicSpline(recur_knots) recur_n = recur_splines.design_matrix(recur_x_vals) recur_fit = splines.prob(params['position_recurrence']['theta'], recur_n) recur_boots_fits = [ splines.prob(boot, recur_n) for boot in params['position_recurrence']['boots_theta'] ] recur_ci_up_fit = np.percentile(recur_boots_fits, 95, axis=0) recur_ci_low_fit = np.percentile(recur_boots_fits, 5, axis=0) recur_ax.plot(recur_x_vals, recur_fit, color=WT_color) recur_ax.fill_between(recur_x_vals, recur_ci_low_fit, recur_ci_up_fit, facecolor=WT_color, alpha=0.5) sns.regplot(recur_data[:, 0], recur_data[:, 1], ax=recur_ax, color=WT_color, y_jitter=0.2, fit_reg=False, scatter_kws={'s': 1}, marker=WT_marker) recur_ax.axvline(ls='--', color='0.4', lw=0.5) recur_ax.set_xlim(-np.pi, np.pi) recur_ax.set_xticks([-np.pi, -np.pi / 2, 0, np.pi / 2, np.pi]) recur_ax.set_xticklabels(['-0.50', '-0.25', '0', '0.25', '0.50']) recur_ax.set_ylim(-0.3, 1.3) recur_ax.set_yticks([0, 0.5, 1]) recur_ax.tick_params(length=3, pad=1, top=False) recur_ax.set_xlabel('Initial distance from reward (fraction of belt)') recur_ax.set_ylabel('Place cell recurrence probability') recur_ax.set_title('') recur_ax_2 = recur_ax.twinx() recur_ax_2.tick_params(length=3, pad=1, top=False) recur_ax_2.set_ylim(-0.3, 1.3) recur_ax_2.set_yticks([0, 1]) recur_ax_2.set_yticklabels(['non-recur', 'recur']) # # Place field stability # shift_x_vals = np.linspace(-np.pi, np.pi, 1000) shift_knots = params['position_stability']['all_pairs']['knots'] shift_spline = splines.CyclicSpline(shift_knots) shift_n = shift_spline.design_matrix(shift_x_vals) shift_theta_b = params['position_stability']['all_pairs']['theta_b'] shift_b_fit = np.dot(shift_n, shift_theta_b) shift_theta_k = params['position_stability']['all_pairs']['theta_k'] shift_k_fit = splines.get_k(shift_theta_k, shift_n) shift_fit_var = 1. / shift_k_fit shift_data = emd.paired_activity_centroid_distance_to_reward(data) shift_data = shift_data.dropna() shifts = shift_data['second'] - shift_data['first'] shifts[shifts < -np.pi] += 2 * np.pi shifts[shifts >= np.pi] -= 2 * np.pi shift_ax.plot(shift_x_vals, shift_b_fit, color=WT_color) shift_ax.fill_between(shift_x_vals, shift_b_fit - shift_fit_var, shift_b_fit + shift_fit_var, facecolor=WT_color, alpha=0.5) sns.regplot(shift_data['first'], shifts, ax=shift_ax, color=WT_color, fit_reg=False, scatter_kws={'s': 1}, marker=WT_marker) shift_ax.axvline(ls='--', color='0.4', lw=0.5) shift_ax.axhline(ls='--', color='0.4', lw=0.5) shift_ax.plot([-np.pi, np.pi], [np.pi, -np.pi], color='g', ls=':', lw=2) shift_ax.tick_params(length=3, pad=1, top=False) shift_ax.set_xlabel('Initial distance from reward (fraction of belt)') shift_ax.set_ylabel(r'$\Delta$ position (fraction of belt)') shift_ax.set_xlim(-np.pi, np.pi) shift_ax.set_xticks([-np.pi, -np.pi / 2, 0, np.pi / 2, np.pi]) shift_ax.set_xticklabels(['-0.50', '-0.25', '0', '0.25', '0.50']) shift_ax.set_ylim(-np.pi, np.pi) shift_ax.set_yticks([-np.pi, -np.pi / 2, 0, np.pi / 2, np.pi]) shift_ax.set_yticklabels(['-0.50', '-0.25', '0', '0.25', '0.50']) shift_ax.set_title('') # # Stability by distance to reward # shift_x_vals = np.linspace(-np.pi, np.pi, 1000) shift_knots = params['position_stability']['all_pairs']['knots'] shift_spline = splines.CyclicSpline(shift_knots) shift_n = shift_spline.design_matrix(shift_x_vals) shift_theta_b = params['position_stability']['all_pairs']['theta_b'] shift_b_fit = np.dot(shift_n, shift_theta_b) shift_boots_b_fit = [ np.dot(shift_n, boot) for boot in params['position_stability']['all_pairs']['boots_theta_b'] ] shift_b_ci_up_fit = np.percentile(shift_boots_b_fit, 95, axis=0) shift_b_ci_low_fit = np.percentile(shift_boots_b_fit, 5, axis=0) shift_compare_ax.plot(shift_x_vals, shift_b_fit, color=WT_color) shift_compare_ax.fill_between(shift_x_vals, shift_b_ci_low_fit, shift_b_ci_up_fit, facecolor=WT_color, alpha=0.5) shift_compare_ax.axvline(ls='--', color='0.4', lw=0.5) shift_compare_ax.axhline(ls='--', color='0.4', lw=0.5) shift_compare_ax.tick_params(length=3, pad=1, top=False) shift_compare_ax.set_xlim(-np.pi, np.pi) shift_compare_ax.set_xticks([-np.pi, -np.pi / 2, 0, np.pi / 2, np.pi]) shift_compare_ax.set_xticklabels(['-0.50', '-0.25', '0', '0.25', '0.50']) shift_compare_ax.set_ylim(-0.10 * 2 * np.pi, 0.10 * 2 * np.pi) y_ticks = np.array(['-0.10', '-0.05', '0', '0.05', '0.10']) shift_compare_ax.set_yticks(y_ticks.astype('float') * 2 * np.pi) shift_compare_ax.set_yticklabels(y_ticks) shift_compare_ax.set_xlabel( 'Initial distance from reward (fraction of belt)') shift_compare_ax.set_ylabel(r'$\Delta$ position (fraction of belt)') shift_theta_k = params['position_stability']['all_pairs']['theta_k'] shift_k_fit = splines.get_k(shift_theta_k, shift_n) shift_boots_k_fit = [ splines.get_k(boot, shift_n) for boot in params['position_stability']['all_pairs']['boots_theta_k'] ] shift_k_ci_up_fit = np.percentile(shift_boots_k_fit, 95, axis=0) shift_k_ci_low_fit = np.percentile(shift_boots_k_fit, 5, axis=0) var_compare_ax.plot(shift_x_vals, 1. / shift_k_fit, color=WT_color) var_compare_ax.fill_between(shift_x_vals, 1. / shift_k_ci_low_fit, 1. / shift_k_ci_up_fit, facecolor=WT_color, alpha=0.5) var_compare_ax.axvline(ls='--', color='0.4', lw=0.5) var_compare_ax.tick_params(length=3, pad=1, top=False) var_compare_ax.set_xlim(-np.pi, np.pi) var_compare_ax.set_xticks([-np.pi, -np.pi / 2, 0, np.pi / 2, np.pi]) var_compare_ax.set_xticklabels(['-0.50', '-0.25', '0', '0.25', '0.50']) y_ticks = np.array(['0.005', '0.010', '0.015', '0.020']) var_compare_ax.set_yticks(y_ticks.astype('float') * (2 * np.pi)**2) var_compare_ax.set_yticklabels(y_ticks) var_compare_ax.set_xlabel( 'Initial distance from reward (fraction of belt)') var_compare_ax.set_ylabel(r'$\Delta$ position variance') misc.save_figure(fig, filename, save_dir=save_dir) plt.close('all')
def main(): all_grps = df.loadExptGrps('GOL') expts = lab.ExperimentSet(os.path.join(df.metadata_path, 'expt_metadata.xml'), behaviorDataPath=os.path.join( df.data_path, 'behavior'), dataPath=os.path.join(df.data_path, 'imaging')) WT_expt_grp = all_grps['WT_place_set'] Df_expt_grp = all_grps['Df_place_set'] expt_grps = [WT_expt_grp, Df_expt_grp] WT_label = WT_expt_grp.label() Df_label = Df_expt_grp.label() fig = plt.figure(figsize=(8.5, 11)) gs2 = plt.GridSpec(48, 1, right=.6) wt_trace_ax = fig.add_subplot(gs2[12:16, 0]) wt_position_ax = fig.add_subplot(gs2[16:18, 0]) df_trace_ax = fig.add_subplot(gs2[18:22, 0]) df_position_ax = fig.add_subplot(gs2[22:24, 0]) gs3 = plt.GridSpec(2, 2, hspace=0.3, left=.62, bottom=0.5, top=0.7) wt_transients_ax = fig.add_subplot(gs3[0, 0], polar=True) df_transients_ax = fig.add_subplot(gs3[1, 0], polar=True) wt_vector_ax = fig.add_subplot(gs3[0, 1], polar=True) df_vector_ax = fig.add_subplot(gs3[1, 1], polar=True) gs4 = plt.GridSpec(1, 4, top=0.48, bottom=0.35, wspace=0.3) pf_fraction_ax = fig.add_subplot(gs4[0, 0]) pf_per_cell_ax = fig.add_subplot(gs4[0, 1]) pf_width_ax = fig.add_subplot(gs4[0, 2]) circ_var_ax = fig.add_subplot(gs4[0, 3]) pf_fraction_inset_ax = fig.add_axes([0.22, 0.36, 0.04, 0.06]) pf_width_inset_ax = fig.add_axes([0.63, 0.41, 0.04, 0.06]) circ_var_inset_ax = fig.add_axes([0.84, 0.36, 0.04, 0.06]) # # PC Examples # wt_expt = expts.grabExpt('jz121', '2015-02-21-16h06m30s') df_expt = expts.grabExpt('jz098', '2014-11-08-16h14m02s') pc_expt_grp = place.pcExperimentGroup([wt_expt, df_expt], imaging_label='soma') wt_id = '0422-0349' df_id = '0074-0339' wt_idx = wt_expt.roi_ids().index(wt_id) df_idx = df_expt.roi_ids().index(df_id) wt_imaging_data = wt_expt.imagingData(channel='Ch2', label='soma', dFOverF='from_file') df_imaging_data = df_expt.imagingData(channel='Ch2', label='soma', dFOverF='from_file') wt_transients = wt_expt.transientsData(threshold=95, channel='Ch2', label='soma') df_transients = df_expt.transientsData(threshold=95, channel='Ch2', label='soma') place.plotImagingData(roi_tSeries=wt_imaging_data[wt_idx, :, 0], ax=wt_trace_ax, roi_transients=wt_transients[wt_idx][0], position=None, imaging_interval=wt_expt.frame_period(), placeField=None, xlabel_visible=False, ylabel_visible=True, right_label=True, placeFieldColor=None, title='', rasterized=False, color='.4', transients_color=WT_color) sns.despine(ax=wt_trace_ax, top=True, left=False, bottom=True, right=True) wt_trace_ax.set_ylabel(WT_label, rotation='horizontal', ha='right') wt_trace_ax.tick_params(bottom=False, labelbottom=False) wt_trace_ax.tick_params(axis='y', direction='in', length=3, pad=3) wt_trace_ax.spines['left'].set_linewidth(1) wt_trace_ax.spines['left'].set_position(('outward', 5)) place.plotImagingData(roi_tSeries=df_imaging_data[df_idx, :, 0], ax=df_trace_ax, roi_transients=df_transients[df_idx][0], position=None, imaging_interval=df_expt.frame_period(), placeField=None, xlabel_visible=False, ylabel_visible=True, right_label=True, placeFieldColor=None, title='', rasterized=False, color='.4', transients_color=Df_color) sns.despine(ax=df_trace_ax, top=True, left=False, bottom=True, right=True) df_trace_ax.set_ylabel(Df_label, rotation='horizontal', ha='right') df_trace_ax.tick_params(bottom=False, labelbottom=False) df_trace_ax.tick_params(axis='y', direction='in', length=3, pad=3) df_trace_ax.spines['left'].set_linewidth(1) df_trace_ax.spines['left'].set_position(('outward', 5)) y_min = min(wt_trace_ax.get_ylim()[0], df_trace_ax.get_ylim()[0]) y_max = max(wt_trace_ax.get_ylim()[1], df_trace_ax.get_ylim()[1]) wt_trace_ax.set_ylim(y_min, y_max) df_trace_ax.set_ylim(y_min, y_max) wt_trace_ax.set_yticks([0, y_max]) df_trace_ax.set_yticks([0, y_max]) wt_trace_ax.set_yticklabels(['0', '{:0.1f}'.format(y_max)]) df_trace_ax.set_yticklabels(['0', '{:0.1f}'.format(y_max)]) wt_trace_ax.set_xlim(0, 600) df_trace_ax.set_xlim(0, 600) place.plotPosition(wt_expt.find('trial'), ax=wt_position_ax, rasterized=False, position_kwargs={'color': 'k'}) sns.despine(ax=wt_position_ax, top=True, left=True, bottom=True, right=True) wt_position_ax.set_ylabel('') wt_position_ax.set_xlabel('') wt_position_ax.tick_params(left=False, bottom=False, top=False, right=False, labelleft=False, labelbottom=False, labelright=False, labeltop=False) plotting.add_scalebar(wt_position_ax, matchx=False, matchy=False, hidex=False, hidey=False, sizex=60, labelx='1 min', bar_thickness=.02, pad=0, loc=4) wt_position_ax.set_yticks([0, 1]) wt_position_ax.set_ylim(0, 1) place.plotPosition(df_expt.find('trial'), ax=df_position_ax, rasterized=False, position_kwargs={'color': 'k'}) sns.despine(ax=df_position_ax, top=True, bottom=True, right=True) df_position_ax.tick_params(bottom=False, top=False, right=False, labelbottom=False, labelright=False, labeltop=False, direction='in', length=3, pad=3) df_position_ax.spines['left'].set_linewidth(1) df_position_ax.spines['left'].set_position(('outward', 5)) df_position_ax.set_ylabel('Position') df_position_ax.set_xlabel('') df_position_ax.set_yticks([0, 1]) df_position_ax.set_ylim(0, 1) trans_kwargs = { 'color': WT_color, 'marker': 'o', 'linestyle': 'None', 'markersize': 3 } wt_pf = [pc_expt_grp.pfs_n()[wt_expt][wt_idx]] place.plotPosition(wt_expt.find('trial'), ax=wt_transients_ax, polar=True, placeFields=wt_pf, placeFieldColors=[WT_color], trans_roi_filter=lambda roi: roi.id == wt_id, rasterized=False, running_trans_only=True, demixed=False, position_kwargs={'color': '0.5'}, trans_kwargs=trans_kwargs) wt_transients_ax.set_xlabel('') wt_transients_ax.set_ylabel('') wt_transients_ax.set_rticks([]) prep_polar_ax(wt_transients_ax) trans_kwargs['color'] = Df_color df_pf = [pc_expt_grp.pfs_n()[df_expt][df_idx]] place.plotPosition(df_expt.find('trial'), ax=df_transients_ax, polar=True, placeFields=df_pf, placeFieldColors=[Df_color], trans_roi_filter=lambda roi: roi.id == df_id, rasterized=False, running_trans_only=True, demixed=False, position_kwargs={'color': '0.5'}, trans_kwargs=trans_kwargs) df_transients_ax.set_xlabel('') df_transients_ax.set_ylabel('') df_transients_ax.set_rticks([]) prep_polar_ax(df_transients_ax) place.plotTransientVectors(place.pcExperimentGroup([wt_expt], imaging_label='soma'), wt_idx, wt_vector_ax, mean_zorder=99, color=WT_color, mean_color='g') place.plotTransientVectors(place.pcExperimentGroup([df_expt], imaging_label='soma'), df_idx, df_vector_ax, mean_zorder=99, color=Df_color, mean_color='g') # # Stats # groupby = [['expt'], ['mouseID']] plotting.plot_metric(pf_fraction_ax, expt_grps, metric_fn=place.place_cell_percentage, groupby=None, plotby=None, colorby=None, plot_method='cdf', roi_filters=roi_filters, activity_kwargs=None, colors=colors, activity_label='Place cell fraction', rotate_labels=False, return_full_dataframes=False, linestyles=linestyles) pf_fraction_ax.legend(loc='upper left', fontsize=6) pf_fraction_ax.set_title('') pf_fraction_ax.set_ylabel('Cumulative fraction') pf_fraction_ax.set_xticks([0, .2, .4, .6, .8]) pf_fraction_ax.set_xlim(0, .8) pf_fraction_ax.spines['left'].set_linewidth(1) pf_fraction_ax.spines['bottom'].set_linewidth(1) plotting.plot_metric(pf_fraction_inset_ax, expt_grps, metric_fn=place.place_cell_percentage, groupby=groupby, plotby=None, colorby=None, plot_method='swarm', roi_filters=roi_filters, activity_kwargs=None, colors=colors, activity_label='Place cell fraction', rotate_labels=False, linewidth=0.2, edgecolor='gray') pf_fraction_inset_ax.set_title('') pf_fraction_inset_ax.set_ylabel('') pf_fraction_inset_ax.set_xlabel('') pf_fraction_inset_ax.set_yticks([0, 0.5]) pf_fraction_inset_ax.set_ylim([0, 0.5]) pf_fraction_inset_ax.get_legend().set_visible(False) sns.despine(ax=pf_fraction_inset_ax) pf_fraction_inset_ax.tick_params(bottom=False, labelbottom=False) pf_fraction_inset_ax.spines['left'].set_linewidth(1) pf_fraction_inset_ax.spines['bottom'].set_linewidth(1) pf_fraction_inset_ax.set_xlim(-0.6, 0.6) n_pf_kwargs = {'per_mouse_fractions': True, 'max_n_place_fields': 3} plotting.plot_metric(pf_per_cell_ax, expt_grps, metric_fn=place.n_place_fields, groupby=None, plotby=['number'], plot_method='swarm', roi_filters=roi_filters, activity_kwargs=n_pf_kwargs, colors=colors, activity_label='Fraction of place cells', rotate_labels=False, plot_bar=True, edgecolor='k', linewidth=0.5, size=3) sns.despine(ax=pf_per_cell_ax) pf_per_cell_ax.set_title('') pf_per_cell_ax.set_xlabel('Place fields per cell') pf_per_cell_ax.set_ylabel('Fraction of place cells') pf_per_cell_ax.set_xticklabels(['1', '2', '3+']) pf_per_cell_ax.set_yticks([0, 0.2, 0.4, 0.6, 0.8, 1]) plotting.plot_metric(pf_width_ax, expt_grps, metric_fn=place.place_field_width, groupby=[['roi_id', 'expt']], plotby=None, plot_method='hist', roi_filters=roi_filters, activity_kwargs=None, activity_label='Place field width (cm)', normed=True, plot_mean=True, bins=20, range=(0, 120), colors=colors, rotate_labels=False, filled=False, mean_kwargs={'ls': ':'}, return_full_dataframes=False, linestyles=linestyles) pf_width_ax.set_title('') pf_width_ax.legend(loc='lower right', fontsize=6) pf_width_ax.set_xticks([0, 40, 80, 120]) pf_width_ax.set_yticks([0, 0.02, 0.04, 0.06, 0.08]) pf_width_ax.set_ylim(0, 0.08) pf_width_ax.set_ylabel('Normalized density') pf_width_ax.spines['left'].set_linewidth(1) pf_width_ax.spines['bottom'].set_linewidth(1) plotting.plot_metric(pf_width_inset_ax, expt_grps, metric_fn=place.place_field_width, groupby=[['roi_id', 'expt'], ['expt'], ['mouseID']], plotby=None, plot_method='swarm', roi_filters=roi_filters, activity_kwargs=None, activity_label='Place field width (cm)', colors=colors, rotate_labels=False, linewidth=0.2, edgecolor='gray') pf_width_inset_ax.set_title('') pf_width_inset_ax.set_ylabel('') pf_width_inset_ax.set_xlabel('') pf_width_inset_ax.get_legend().set_visible(False) sns.despine(ax=pf_width_inset_ax) pf_width_inset_ax.tick_params(bottom=False, labelbottom=False) pf_width_inset_ax.set_ylim(25, 40) pf_width_inset_ax.set_yticks([25, 40]) pf_width_inset_ax.spines['left'].set_linewidth(1) pf_width_inset_ax.spines['bottom'].set_linewidth(1) pf_width_inset_ax.set_xlim(-0.6, 0.6) plotting.plot_metric(circ_var_ax, expt_grps, metric_fn=place.circular_variance, groupby=[['roi_id', 'expt']], plotby=None, plot_method='cdf', roi_filters=roi_filters, activity_kwargs=None, activity_label='Circular variance', colors=colors, rotate_labels=False, return_full_dataframes=False, linestyles=linestyles) circ_var_ax.set_title('') circ_var_ax.legend(loc='upper left', fontsize=6) circ_var_ax.set_ylabel('Cumulative fraction') circ_var_ax.set_xlim(-0.1, 1) circ_var_ax.set_xticks([0, 0.5, 1]) circ_var_ax.spines['left'].set_linewidth(1) circ_var_ax.spines['bottom'].set_linewidth(1) plotting.plot_metric(circ_var_inset_ax, expt_grps, metric_fn=place.circular_variance, groupby=groupby, plotby=None, plot_method='swarm', roi_filters=roi_filters, activity_kwargs=None, activity_label='Circular variance', colors=colors, rotate_labels=False, linewidth=0.2, edgecolor='gray') circ_var_inset_ax.set_title('') circ_var_inset_ax.set_ylabel('') circ_var_inset_ax.set_xlabel('') circ_var_inset_ax.get_legend().set_visible(False) sns.despine(ax=circ_var_inset_ax) circ_var_inset_ax.tick_params(bottom=False, labelbottom=False) circ_var_inset_ax.set_ylim(0, 0.6) circ_var_inset_ax.set_yticks([0, 0.6]) circ_var_inset_ax.spines['left'].set_linewidth(1) circ_var_inset_ax.spines['bottom'].set_linewidth(1) circ_var_inset_ax.set_xlim(-0.6, 0.6) misc.save_figure(fig, filename, save_dir=save_dir) plt.close('all')
def main(): all_expt_grps = df.loadExptGrps('GOL') WT_expt_grp_hidden = all_expt_grps['WT_place_set'] Df_expt_grp_hidden = all_expt_grps['Df_place_set'] expt_grps = [WT_expt_grp_hidden, Df_expt_grp_hidden] paired_grps = [grp.pair( 'consecutive groups', groupby=['condition_day']) for grp in expt_grps] fig = plt.figure(figsize=(8.5, 11)) gs1 = plt.GridSpec( 3, 8, top=0.9, bottom=0.7, left=0.1, right=0.9, wspace=0.4) ax2 = fig.add_subplot(gs1[:, :2]) pf_fraction_ax = fig.add_subplot(gs1[:, 2:4]) circ_var_ax = fig.add_subplot(gs1[:, 4:6]) trans_ax1 = fig.add_subplot(gs1[0, 6], polar=True) trans_ax2 = fig.add_subplot(gs1[0, 7], polar=True) trans_ax3 = fig.add_subplot(gs1[1, 6], polar=True) trans_ax4 = fig.add_subplot(gs1[1, 7], polar=True) trans_ax5 = fig.add_subplot(gs1[2, 6], polar=True) trans_ax6 = fig.add_subplot(gs1[2, 7], polar=True) trans_axs = [ trans_ax1, trans_ax2, trans_ax3, trans_ax4, trans_ax5, trans_ax6] # # Stability by distance to fabric transitions # filter_fn = lambda df: df['second_condition_day_session'] == 'B_0_0' filter_columns = ['second_condition_day_session'] label_order = ['before', 'middle', 'after'] data_to_plot = [[], [], []] all_data, shuffles = [], [] for expt_grp, roi_filter in zip(paired_grps, roi_filters): fabric_map = {expt: expt.belt().fabric_transitions( units='normalized') for expt in expt_grp} def norm_diff(n1, n2): d = n1 - n2 d = d + 1.0 if d < -0.5 else d d = d - 1.0 if d >= 0.5 else d return d def closest_transition(row): expt = row['first_expt'] centroid = complex_to_norm(row['first_centroid']) positions = fabric_map[expt]['position'] distances = [norm_diff(centroid, t) for t in positions] row['closest'] = distances[np.argmin(np.abs(distances))] return row data, shuffle = place.activity_centroid_shift( expt_grp, roi_filter=roi_filter, activity_filter='active_both', circ_var_pcs=False, units='norm', shuffle=True) plotting.prepare_dataframe(data, include_columns=filter_columns) data = data[filter_fn(data)] plotting.prepare_dataframe(shuffle, include_columns=filter_columns) data = data.apply(closest_transition, axis=1) shuffle = shuffle.apply(closest_transition, axis=1) def categorize(row): if row['closest'] < 0 and -1 / 9. < row['closest']: row['category'] = 'before' elif row['closest'] > 0 and 1 / 9. > row['closest']: row['category'] = 'after' else: row['category'] = 'middle' return row data = data.apply(categorize, axis=1) shuffle = shuffle.apply(categorize, axis=1) groupby = [ ['second_condition_day_session', 'second_mouse', 'category']] for gb in groupby: plotting.prepare_dataframe(data, include_columns=gb) plotting.prepare_dataframe(shuffle, include_columns=gb) data = data.groupby(gb, as_index=False).mean() shuffle = shuffle.groupby(gb, as_index=False).mean() for category, group in data.groupby(['category']): idx = label_order.index(category) data_to_plot[idx].append(group['value']) shuffles.append(shuffle) all_data.append(data) shuffle_df = pd.concat(shuffles, ignore_index=True) for category, group in shuffle_df.groupby(['category']): idx = label_order.index(category) data_to_plot[idx].append(group['value']) plotting.grouped_bar( ax2, data_to_plot, condition_labels=label_order, cluster_labels=df.labels + ('shuffle',), bar_colors=sns.color_palette('deep')[3:], scatter_points=False, scatterbar_colors=None, jitter_x=False, loc='best', error_bars='sem') sns.despine(ax=ax2) ax2.set_yticks([0, 0.1, 0.2, 0.3]) ax2.set_ylabel('Centroid shift (fraction of belt)') # # Burlap belt # expts = lab.ExperimentSet( os.path.join(df.metadata_path, 'expt_metadata.xml'), behaviorDataPath=os.path.join(df.data_path, 'behavior'), dataPath=os.path.join(df.data_path, 'imaging')) burlap_expt_grp = lab.classes.pcExperimentGroup.from_json( cue_free_json, expts, imaging_label=df.IMAGING_LABEL, label='cue-free') acute_grps = df.loadExptGrps('RF') WT_expt_grp_acute = acute_grps['WT_place_set'].unpair() WT_expt_grp_acute.label('cue-rich') burlap_colors = ('k', '0.9') example_expt = expts.grabExptByPath('/jz128/TSeries-07262015-burlap-000') cv = place.circular_variance_p(burlap_expt_grp) cv = cv[cv['expt'] == example_expt] cv = cv.sort_values(by=['value']) trans_kwargs = { 'color': '0.9', 'marker': 'o', 'linestyle': 'None', 'markersize': 3} for ax, (idx, row) in zip(trans_axs, cv.iloc[:6].iterrows()): expt = row['expt'] roi_idx = expt.rois().index(row['roi']) pf = None place.plotPosition( expt.find('trial'), ax=ax, polar=True, placeFields=pf, placeFieldColors=['0.9'], trans_roi_filter=lambda roi: roi.id == expt.roi_ids()[roi_idx], rasterized=False, running_trans_only=True, demixed=False, position_kwargs={'color': '0.5'}, trans_kwargs=trans_kwargs) ax.set_xlabel('') ax.set_ylabel('') ax.set_rticks([]) prep_polar_ax(ax) for ax in trans_axs[:-1]: ax.set_xticklabels(['', '', '', '']) activity_kwargs = {'circ_var': True} plotting.plot_metric( pf_fraction_ax, [WT_expt_grp_acute, burlap_expt_grp], metric_fn=place.place_cell_percentage, groupby=None, plotby=None, colorby=None, plot_method='swarm', roi_filters=[WT_filter, WT_filter], activity_kwargs=activity_kwargs, colors=burlap_colors, activity_label='Place cell fraction', rotate_labels=False, plot_bar=True) pf_fraction_ax.set_title('') pf_fraction_ax.set_xlabel('') sns.despine(ax=pf_fraction_ax) pf_fraction_ax.set_yticks([0.0, 0.1, 0.2, 0.3, 0.4]) plotting.plot_metric( circ_var_ax, [WT_expt_grp_acute, burlap_expt_grp], metric_fn=place.circular_variance, groupby=[['roi_id', 'expt']], plotby=None, plot_method='cdf', roi_filters=[WT_filter, WT_filter], activity_kwargs=None, activity_label='Circular variance', colors=burlap_colors, rotate_labels=False) circ_var_ax.set_title('') circ_var_ax.get_legend().set_visible(False) circ_var_ax.set_xticks([0, 0.5, 1]) save_figure(fig, filename, save_dir=save_dir) plt.close('all')
def main(): all_grps = df.loadExptGrps('GOL') expts = lab.ExperimentSet(os.path.join(df.metadata_path, 'expt_metadata.xml'), behaviorDataPath=os.path.join( df.data_path, 'behavior'), dataPath=os.path.join(df.data_path, 'imaging')) WT_expt_grp = all_grps['WT_hidden_behavior_set'] Df_expt_grp = all_grps['Df_hidden_behavior_set'] expt_grps = [WT_expt_grp, Df_expt_grp] if MALES_ONLY: for expt_grp in expt_grps: expt_grp.filter(lambda expt: expt.parent.get('sex') == 'M') labels = [expt_grp.label() for expt_grp in expt_grps] fig = plt.figure(figsize=(8.5, 11)) HORIZONTAL = False if HORIZONTAL: gs1 = plt.GridSpec(8, 6) wt_lick_axs = [ fig.add_subplot(gs1[0, 0]), fig.add_subplot(gs1[0, 1]), fig.add_subplot(gs1[0, 2]), fig.add_subplot(gs1[0, 3]), fig.add_subplot(gs1[0, 4]), fig.add_subplot(gs1[0, 5]) ] df_lick_axs = [ fig.add_subplot(gs1[1, 0]), fig.add_subplot(gs1[1, 1]), fig.add_subplot(gs1[1, 2]), fig.add_subplot(gs1[1, 3]), fig.add_subplot(gs1[1, 4]), fig.add_subplot(gs1[1, 5]) ] gs2 = plt.GridSpec(4, 2, hspace=0.5, wspace=0.2) reward_zone_ax = fig.add_subplot(gs2[1, 0]) else: gs1 = plt.GridSpec(10, 6) wt_lick_axs = [ fig.add_subplot(gs1[0, 0]), fig.add_subplot(gs1[1, 0]), fig.add_subplot(gs1[2, 0]), fig.add_subplot(gs1[3, 0]), fig.add_subplot(gs1[4, 0]), fig.add_subplot(gs1[5, 0]) ] df_lick_axs = [ fig.add_subplot(gs1[0, 1]), fig.add_subplot(gs1[1, 1]), fig.add_subplot(gs1[2, 1]), fig.add_subplot(gs1[3, 1]), fig.add_subplot(gs1[4, 1]), fig.add_subplot(gs1[5, 1]) ] gs2 = plt.GridSpec(10, 1, hspace=0.5, wspace=0.8, left=0.47, right=0.9) reward_zone_ax = fig.add_subplot(gs2[0:4, :]) gs3 = plt.GridSpec(10, 3, hspace=0.5, wspace=0.1, left=0.47, right=0.9) fraction_licks_by_session_A_ax = fig.add_subplot(gs3[5:7, 0]) fraction_licks_by_session_B_ax = fig.add_subplot(gs3[5:7, 1]) fraction_licks_by_session_C_ax = fig.add_subplot(gs3[5:7, 2]) # # Lick plots # wt_lick_expts = [ expts.grabExpt('jz101', '2014-11-06-23h37m54s'), expts.grabExpt('jz101', '2014-11-08-22h53m27s'), expts.grabExpt('jz101', '2014-11-09-23h06m56s'), expts.grabExpt('jz101', '2014-11-11-23h13m16s'), expts.grabExpt('jz101', '2014-11-12-19h29m41s'), expts.grabExpt('jz101', '2014-11-14-19h59m09s') ] df_lick_expts = [ expts.grabExpt('jz106', '2014-12-11-17h06m49s'), expts.grabExpt('jz106', '2014-12-13-19h00m01s'), expts.grabExpt('jz106', '2014-12-14-17h17m17s'), expts.grabExpt('jz106', '2014-12-16-17h43m05s'), expts.grabExpt('jz106', '2014-12-17-17h57m51s'), expts.grabExpt('jz106', '2014-12-19-17h13m52s') ] shade_color = sns.xkcd_rgb['light green'] for ax, expt in zip(wt_lick_axs, wt_lick_expts): expt.licktogram(ax=ax, plot_belt=False, nPositionBins=20, color=WT_color, linewidth=0, shade_reward=True, shade_color=shade_color) for ax, expt in zip(df_lick_axs, df_lick_expts): expt.licktogram(ax=ax, plot_belt=False, nPositionBins=20, color=Df_color, linewidth=0, shade_reward=True, shade_color=shade_color) for ax in wt_lick_axs + df_lick_axs: ax.set_ylim(0, 0.6) ax.set_yticks([0, 0.3, 0.6]) ax.set_xticks([0, 0.5, 1]) ax.set_xticklabels(['0.0', '0.5', '1.0']) sns.despine(ax=ax) ax.set_title('') if HORIZONTAL: for ax in wt_lick_axs: ax.tick_params(labelbottom=False) ax.set_xlabel('') for ax in df_lick_axs[1:]: ax.set_xlabel('') for ax, label in zip(wt_lick_axs, [ r'Condition $\mathrm{I}$' + '\nDay 1', r'Condition $\mathrm{I}$' + '\nDay 3', r'Condition $\mathrm{II}$' + '\nDay 1', r'Condition $\mathrm{II}$' + '\nDay 3', r'Condition $\mathrm{III}$' + '\nDay 1', r'Condition $\mathrm{III}$' + '\nDay 3' ]): ax.set_title(label) for ax in it.chain(wt_lick_axs[1:], df_lick_axs[1:]): ax.set_ylabel('') sns.despine(ax=ax, left=True, top=True, right=True) for ax in wt_lick_axs + df_lick_axs: ax.spines['bottom'].set_linewidth(0.5) wt_lick_axs[0].tick_params(labelbottom=False) for ax in wt_lick_axs[1:]: ax.tick_params(labelleft=False, left=False, labelbottom=False) for ax in df_lick_axs[1:]: ax.tick_params(labelleft=False, left=False) right_label(wt_lick_axs[-1], labels[0]) right_label(df_lick_axs[-1], labels[1]) df_lick_axs[0].set_yticks([0, 0.6]) wt_lick_axs[0].set_yticks([0, 0.6]) df_lick_axs[0].set_ylabel('Fraction of licks') wt_lick_axs[0].set_ylabel('') df_lick_axs[0].spines['left'].set_linewidth(0.5) wt_lick_axs[0].spines['left'].set_linewidth(0.5) else: for ax in wt_lick_axs + df_lick_axs: ax.spines['bottom'].set_linewidth(0.5) for ax in wt_lick_axs + df_lick_axs[1:]: sns.despine(ax=ax, left=True, top=True, right=True) sns.despine(ax=df_lick_axs[0], left=True, top=True, right=False) for ax in wt_lick_axs[:-1] + df_lick_axs[:-1]: ax.set_xlabel('') for ax in df_lick_axs: ax.set_ylabel('') for ax, label in zip(wt_lick_axs, [ r'Condition $\mathrm{I}$' + '\nDay 1', r'Condition $\mathrm{I}$' + '\nDay 3', r'Condition $\mathrm{II}$' + '\nDay 1', r'Condition $\mathrm{II}$' + '\nDay 3', r'Condition $\mathrm{III}$' + '\nDay 1', r'Condition $\mathrm{III}$' + '\nDay 3' ]): ax.set_ylabel(label, rotation='horizontal', ha='right', multialignment='center', labelpad=3, va='center') for ax in wt_lick_axs[:-1] + df_lick_axs[:-1]: ax.tick_params(labelleft=False, left=False, labelbottom=False) for ax in (wt_lick_axs[-1], df_lick_axs[-1]): ax.tick_params(labelleft=False, left=False) wt_lick_axs[0].set_title(labels[0]) df_lick_axs[0].set_title(labels[1]) df_lick_axs[0].yaxis.tick_right() df_lick_axs[0].yaxis.set_label_position("right") df_lick_axs[0].set_yticks([0, 0.6]) df_lick_axs[0].tick_params(axis='y', length=2, pad=2, direction='in') df_lick_axs[0].set_ylabel('Fraction of licks') df_lick_axs[0].spines['right'].set_linewidth(0.5) filter_fn = None filter_columns = None behavior_fn = ra.fraction_licks_in_reward_zone behavior_kwargs = {} activity_label = 'Fraction of licks in reward zone' plot_metric(reward_zone_ax, expt_grps, metric_fn=behavior_fn, activity_kwargs=behavior_kwargs, groupby=[['expt'], ['mouseID', 'X_condition', 'X_day']], plotby=['X_condition', 'X_day'], plot_method='line', activity_label=activity_label, colors=colors, linestyles=linestyles, label_every_n=1, label_groupby=False, markers=markers, markersize=5, rotate_labels=False, filter_fn=filter_fn, filter_columns=filter_columns, return_full_dataframes=False) reward_zone_ax.set_yticks([0, .1, .2, .3, .4]) sns.despine(ax=reward_zone_ax) reward_zone_ax.set_xlabel('Day in Condition') reward_zone_ax.set_title('') day_number_only_label(reward_zone_ax) label_conditions(reward_zone_ax) reward_zone_ax.legend(loc='lower left', fontsize=8) # reward_zone_ax.get_legend().set_visible(False) # stackedText(reward_zone_ax, labels, colors=colors, loc=3, size=10) groupby = [['expt']] plotby = ['X_condition', 'X_session'] filter_fn = lambda df: (df['X_session'] != '1') & (df['X_condition'] == 'A' ) filter_columns = ['X_session', 'X_condition'] line_kwargs = {'markersize': 4} plot_metric(fraction_licks_by_session_A_ax, expt_grps, metric_fn=behavior_fn, activity_kwargs=behavior_kwargs, groupby=groupby, plotby=plotby, plot_method='box_and_line', activity_label=activity_label, colors=colors, notch=False, label_every_n=1, label_groupby=False, markers=markers, rotate_labels=False, line_kwargs=line_kwargs, linestyles=linestyles, filter_fn=filter_fn, filter_columns=filter_columns, flierprops={ 'markersize': 2, 'marker': 'o' }, box_width=0.4, box_spacing=0.2, return_full_dataframes=False, whis='range') sns.despine(ax=fraction_licks_by_session_A_ax, top=True, right=True) fraction_licks_by_session_A_ax.set_xticklabels(['first', 'last']) fraction_licks_by_session_A_ax.set_xlabel('') fraction_licks_by_session_A_ax.set_ylim(-0.02, 0.6) fraction_licks_by_session_A_ax.set_yticks([0, 0.2, 0.4, 0.6]) fraction_licks_by_session_A_ax.set_title('') fraction_licks_by_session_A_ax.legend(loc='upper left', fontsize=6) # fraction_licks_by_session_A_ax.get_legend().set_visible(False) fraction_licks_by_session_A_ax.text( 0.5, .95, r'$\mathrm{I}$', ha='center', va='center', transform=fraction_licks_by_session_A_ax.transAxes, fontsize=12) filter_fn = lambda df: (df['X_session'] != '1') & (df['X_condition'] == 'B' ) filter_columns = ['X_session', 'X_condition'] plot_metric(fraction_licks_by_session_B_ax, expt_grps, metric_fn=behavior_fn, activity_kwargs=behavior_kwargs, groupby=groupby, plotby=plotby, plot_method='box_and_line', activity_label=activity_label, colors=colors, label_every_n=1, label_groupby=False, markers=markers, rotate_labels=False, line_kwargs=line_kwargs, linestyles=linestyles, filter_fn=filter_fn, filter_columns=filter_columns, notch=False, flierprops={ 'markersize': 2, 'marker': 'o' }, box_width=0.4, box_spacing=0.2, return_full_dataframes=False, whis='range') sns.despine(ax=fraction_licks_by_session_B_ax, top=True, right=True, left=True) fraction_licks_by_session_B_ax.tick_params(left=False, labelleft=False) fraction_licks_by_session_B_ax.set_xticklabels(['first', 'last']) fraction_licks_by_session_B_ax.set_xlabel('Session in day') fraction_licks_by_session_B_ax.set_ylabel('') fraction_licks_by_session_B_ax.set_ylim(-0.02, 0.6) fraction_licks_by_session_B_ax.set_title('') fraction_licks_by_session_B_ax.get_legend().set_visible(False) fraction_licks_by_session_B_ax.text( 0.5, .95, r'$\mathrm{II}$', ha='center', va='center', transform=fraction_licks_by_session_B_ax.transAxes, fontsize=12) filter_fn = lambda df: (df['X_session'] != '1') & (df['X_condition'] == 'C' ) filter_columns = ['X_session', 'X_condition'] plot_metric(fraction_licks_by_session_C_ax, expt_grps, metric_fn=behavior_fn, activity_kwargs=behavior_kwargs, groupby=groupby, plotby=plotby, plot_method='box_and_line', activity_label=activity_label, colors=colors, notch=False, label_every_n=1, label_groupby=False, markers=markers, rotate_labels=False, line_kwargs=line_kwargs, linestyles=linestyles, filter_fn=filter_fn, filter_columns=filter_columns, return_full_dataframes=False, flierprops={ 'markersize': 2, 'marker': 'o' }, box_width=0.4, box_spacing=0.2, whis='range') sns.despine(ax=fraction_licks_by_session_C_ax, top=True, right=True, left=True) fraction_licks_by_session_C_ax.tick_params(left=False, labelleft=False) fraction_licks_by_session_C_ax.set_xticklabels(['first', 'last']) fraction_licks_by_session_C_ax.set_xlabel('') fraction_licks_by_session_C_ax.set_ylabel('') fraction_licks_by_session_C_ax.set_ylim(-0.02, 0.6) fraction_licks_by_session_C_ax.set_title('') fraction_licks_by_session_C_ax.get_legend().set_visible(False) fraction_licks_by_session_C_ax.text( 0.5, .95, r'$\mathrm{III}$', ha='center', va='center', transform=fraction_licks_by_session_C_ax.transAxes, fontsize=12) misc.save_figure(fig, filename, save_dir=save_dir) plt.close('all')