merged_df['ratio'] = ((merged_df['acc_over_chance'] / merged_df['acc_over_chance'].max()) * (merged_df['value'] / merged_df['value'].max())) merged_df = merged_df[merged_df['acc_over_chance'] > 0] # %% if TARGET == 'block': fig_title = 'Stimulus prior decoding compared to pLeft kernel' elif TARGET == 'stim-side': fig_title = 'Stimulus side decoding compared to stimonR kernel' elif TARGET == 'reward': fig_title = 'Reward vs ommission decoding compared to correct kernel' elif TARGET == 'choice': fig_title = 'Left vs right choice decoding compared to wheel kernel' figure_style(font_scale=1.5) f, ax1 = plt.subplots(1, 1, figsize=(6, 5), dpi=150, sharey=True) ax1.scatter(acc_over_chance, pleft) r, p = pearsonr(acc_over_chance, pleft) m, b = np.polyfit(acc_over_chance, pleft, 1) if p < 0.05: ax1.plot(np.arange(-50, 100, 0.1), m*np.arange(-50, 100, 0.1) + b, color='r') ax1.set(xlabel='Decoding improvement over chance (% correct)', ylabel='Delta D squared of GLM fit', title='%s\n(r=%.2f, p=%.2f)' % (fig_title, r, p), xlim=XLIM, ylim=YLIM) plt.tight_layout() sns.despine(trim=True) plt.savefig(join(FIG_PATH, 'Decoding', DECODER, 'decoding_vs_glm_%s' % TARGET))
# Remove cortical layers from brain region map ba = atlas.AllenAtlas(25) all_regions = combine_layers_cortex(ba.regions.acronym) # Calculate average decoding performance per region decode_regions = [] accuracy = [] for i, region in enumerate(decoding_result['region'].unique()): if np.sum(decoding_result['region'] == region) >= MIN_REC: decode_regions.append(region) accuracy.append(decoding_result.loc[decoding_result['region'] == region, 'acc_over_chance'].mean()) f, axs1 = plt.subplots(1, 3, figsize=(30, 6)) figure_style(font_scale=2) if CENTERED: plot_atlas(np.array(decode_regions), np.array(accuracy), ML, AP, DV, color_palette='RdBu_r', hemisphere='left', minmax=MINMAX, axs=axs1, custom_region_list=all_regions) else: plot_atlas(np.array(decode_regions), np.array(accuracy), ML, AP, DV, color_palette='hot_r', hemisphere='left', minmax=MINMAX, axs=axs1, custom_region_list=all_regions) if TARGET == 'stim-side': f.suptitle('Decoding of stimulus side') elif TARGET == 'block': f.suptitle('Decoding of stimulus prior from pre-stim activity') elif TARGET == 'blank': f.suptitle('Decoding of stimulus prior from blank trials')
if bool_first: previous_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) bool_first = False else: try: this_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) except: break mov_left.append(np.sum(this_frame - previous_frame)) previous_frame = this_frame if ts_left[len(mov_left)] > DURATION: break cam_left.release() # %% Plot # smoothing mov_body = np.convolve(mov_body, np.ones((5, )) / 5, mode='same') mov_left = np.convolve(mov_left, np.ones((5, )) / 5, mode='same') # normalize mov_body = (mov_body - np.min(mov_body)) / np.max(mov_body) mov_left = (mov_left - np.min(mov_left)) / np.max(mov_left) figure_style(font_scale=4) f, ax1 = plt.subplots(1, 1, figsize=(30, 10)) ax1.plot(ts_body[:len(mov_body)], mov_body, label='Body camera', lw=3) ax1.plot(ts_left[:len(mov_left)], mov_left, label='Left camera', lw=3) ax1.set(ylabel='Normalized movement energy', xlabel='Time (s)') ax1.legend(frameon=False)
pre_time=PRE_TIME, post_time=POST_TIME, classifier=DECODER, cross_validation='kfold-interleaved', num_splits=5) shuffle_block = decode(spks_region, clus_region, trial_times, trial_blocks, pre_time=PRE_TIME, post_time=POST_TIME, classifier=DECODER, cross_validation='kfold-interleaved', num_splits=5, shuffle=True, iterations=ITERATIONS) pseudo_block = decode(spks_region, clus_region, trial_times, trial_blocks, pre_time=PRE_TIME, post_time=POST_TIME, classifier=DECODER, cross_validation='kfold-interleaved', num_splits=5, pseudo_blocks=True, iterations=ITERATIONS) # %% """ figure_style() f, (ax1, ax2) = plt.subplots(1, 2, figsize=(25, 10), dpi=150) ax1.bar(np.arange(7), [decode_block['accuracy'], phase_block['accuracy'].mean(), shuffle_block['accuracy'].mean(), np.nan, decode_block['f1'], phase_block['f1'].mean(), shuffle_block['f1'].mean()], yerr=[0, phase_block['accuracy'].std(), shuffle_block['accuracy'].std(), 0, 0, phase_block['f1'].std(), shuffle_block['f1'].std()]) ax1.set(xticks=np.arange(7), xticklabels=['acc.', 'phase', 'pseudo blocks', '', 'f1', 'phase', 'pseudo blocks'], ylabel='Decoding performance', title='Region: %s' % REGION) block_colors = [sns.color_palette('colorblind', as_cmap=True)[0], sns.color_palette('colorblind', as_cmap=True)[3]] block_trans = np.append([0], np.array(np.where(np.diff(trial_blocks) != 0)) + 1) block_trans = np.append(block_trans, [trial_blocks.shape[0]])
session_uuids, subject, actions, stimuli, stim_side) model.load_or_train(nb_steps=2000, remove_old=False) params_stimside = model.get_parameters(parameter_type='posterior_mean') priors_stimside = model.compute_prior(actions, stimuli, stim_side)[0] # Fit previous action model model = exp_prev_action( join(save_path, 'Behavior', 'exp_smoothing_model_fits/'), session_uuids, subject, actions, stimuli, stim_side) model.load_or_train(nb_steps=2000, remove_old=False) params_prevaction = model.get_parameters(parameter_type='posterior_mean') priors_prevaction = model.compute_prior(actions, stimuli, stim_side)[0] # Plot prior f, (ax1, ax2) = plt.subplots(1, 2, figsize=(15, 8), sharey=True) figure_style() if len(stimuli_arr) == 1: ax1.plot(pleft_arr, lw=2) ax1.plot(priors_stimside, lw=2) else: ax1.plot(pleft_arr[0][:len(stimuli_arr[0])], lw=2) ax1.plot(priors_stimside[0][:len(stimuli_arr[0])], lw=2) ax1.set(xlabel='Trials', ylabel='Prior', title='Stimulus side model (alpha: %.2f)' % params_stimside[0]) if len(stimuli_arr) == 1: ax2.plot(pleft_arr, lw=2) ax2.plot(priors_prevaction, lw=2) else: ax2.plot(pleft_arr[0][:len(stimuli_arr[0])], lw=2) ax2.plot(priors_prevaction[0][:len(stimuli_arr[0])], lw=2)