def heatmap_of_straight_landing_trajecs(dataset_landing, dataset_flyby): speeds = [] angles_subtended = [] for k, trajec in dataset_landing.trajecs.items(): if trajec.classification == 'no_saccade_after_deceleration': speeds.extend(trajec.speed[0:trajec.frame_of_landing].tolist()) angles_subtended.extend(trajec.angle_subtended_by_post[0:trajec.frame_of_landing].tolist()) fig = plt.figure() ax = fig.add_subplot(111) fpl.histogram2d(ax, np.log(np.array(angles_subtended)), np.array(speeds), bins=50, normed=False, histrange=None, weights=None, logcolorscale=True, colormap='jet', interpolation='bicubic') fig_saccades_flyby = plt.figure() ax_saccades_flyby = fig_saccades_flyby.add_subplot(111) # now look at speed and retinal size for flyby trajectories at last saccade if headed towards post: for k, trajec in dataset_flyby.trajecs.items(): fd, fs = get_frame_of_decel_and_last_saccade(trajec) for sac_range in trajec.sac_ranges: if fs in sac_range: if trajec.angle_subtended_by_post[sac_range[0]] > 0.*np.pi/180.: #if np.abs(trajec.angle_to_post[sac_range[0]]) < 180.*np.pi/180.: ax.plot(np.log(trajec.angle_subtended_by_post[sac_range[0]]), trajec.speed[sac_range[0]], '.', markersize=2, color='white', markeredgecolor='black', linewidth=0.5) angle = sac.get_angle_of_saccade(trajec, sac_range) ax_saccades_flyby.plot(-1*trajec.angle_to_post[sac_range[0]], angle, '.', color='red', markersize=2) set_log_angle_ticks(ax) ax.set_aspect('auto') fig.savefig('landing_deceleration_heatmap.pdf') fpl.adjust_spines(ax_saccades_flyby, ['left', 'bottom'], yticks=[-np.pi, -np.pi/2., 0, np.pi/2., np.pi], xticks=[-np.pi, -np.pi/2., 0, np.pi/2., np.pi], smart_bounds=True) ax_saccades_flyby.set_xlim([-np.pi, np.pi]) ax_saccades_flyby.set_ylim([-np.pi, np.pi]) deg_ticks = ['-180', '-90', '0', '90', '180'] ax_saccades_flyby.set_xticklabels(deg_ticks) ax_saccades_flyby.set_yticklabels(deg_ticks) ax_saccades_flyby.set_xlabel('Angle to post, deg') ax_saccades_flyby.set_ylabel('Turn angle, deg') fig_saccades_flyby.savefig('saccades_flyby.pdf', format='pdf')
def heatmap_of_flyby_trajecs(dataset_flyby): speeds = [] angles_subtended = [] for k, trajec in dataset_flyby.trajecs.items(): speeds.extend(trajec.speed[0:trajec.frame_of_landing].tolist()) angles_subtended.extend(trajec.angle_subtended_by_post[0:trajec.frame_of_landing].tolist()) fig = plt.figure() ax = fig.add_subplot(111) fpl.histogram2d(ax, np.log(np.array(angles_subtended)), np.array(speeds), bins=100, normed=False, histrange=None, weights=None, logcolorscale=True, colormap='jet', interpolation='bicubic') set_log_angle_ticks(ax) ax.set_aspect('auto') fig.savefig('flyby_deceleration_heatmap.pdf')
def heatmap(ax, dataset, axis='xy'): # collect data xpos = np.array([]) ypos = np.array([]) zpos = np.array([]) for key, trajec in dataset.trajecs.items(): xpos = np.hstack( (xpos, trajec.positions[:,0]) ) ypos = np.hstack( (ypos, trajec.positions[:,1]) ) zpos = np.hstack( (zpos, trajec.positions[:,2]) ) if axis == 'xy': fpl.histogram2d(ax, xpos, ypos, bins=100, logcolorscale=True) elif axis == 'xz': fpl.histogram2d(ax, xpos, zpos, bins=100, logcolorscale=True) elif axis == 'yz': fpl.histogram2d(ax, ypos, zpos, bins=100, logcolorscale=True) if axis == 'xy': post = patches.Circle( (0, 0), radius=0.01, facecolor='black', edgecolor='none', alpha=1, linewidth=0) elif axis == 'yz': post = patches.Rectangle( (-.01,0), width=0.02, facecolor='black', height=.16, edgecolor='none', alpha=1, linewidth=0) artists = [post] if artists is not None: for artist in artists: ax.add_artist(artist) if 'x' in axis: xticks = [-0.15, 0, 0.15] else: xticks = None if 'z' in axis: yticks = [0, .15, .30] else: yticks = None if axis == 'xy': ax.set_xlim(-.15, .15) ax.set_ylim(.2,-.8) fpl.adjust_spines(ax, ['left', 'bottom'], xticks=xticks, yticks=yticks) ax.set_aspect('equal')