def plot_replication_program(): from sampling_KJMA_kinetics import get_oriter_from_oris from sampling_KJMA_kinetics import get_origins_from_phantoms from sampling_KJMA_kinetics import get_timing_from_oris lim = {'y':np.arange(100),'u':np.arange(100),'v':1,'dy':1,'Ny':100,'du':1,'Nu':100} phantoms = [(10,20), (20,25), (60,30)] phantoms = np.array(phantoms, dtype=[('y',float),('u',float)]) oris = get_origins_from_phantoms(phantoms, lim) oriter = get_oriter_from_oris(oris, lim) timing = get_timing_from_oris(oris, lim) fig, ax = plt.subplots(figsize=(5,5)) remove_junk_xyplot(ax) ax.set_ylim([0, 100]) ax.set_xlim([0, 100]) ax.set_yticks([0,100]) ax.set_xticks([0,100]) ax.plot(oriter['y'],oriter['u'],color='k', linewidth=2) ax.set_xlabel('position') ax.set_ylabel('time') delta_y = 1 ax.text(x=10,y=20-delta_y,s=r'$O_1$', color='gray', verticalalignment='top', horizontalalignment='center') ax.text(x=20,y=25-delta_y,s=r'$O_2$', color='gray', verticalalignment='top', horizontalalignment='center') ax.text(x=60,y=30-delta_y,s=r'$O_3$', color='gray', verticalalignment='top', horizontalalignment='center') ax.text(x=17.5,y=27.5+delta_y,s=r'$T_1$', color='gray', verticalalignment='bottom', horizontalalignment='center') ax.text(x=42.5,y=47.5+delta_y,s=r'$T_2$', color='gray', verticalalignment='bottom', horizontalalignment='center')
def animation_replication_program(): from sampling_KJMA_kinetics import get_oriter_from_oris from sampling_KJMA_kinetics import get_origins_from_phantoms from sampling_KJMA_kinetics import get_timing_from_oris lim = {'y':np.arange(100),'u':np.arange(100),'v':1,'dy':1,'Ny':100,'du':1,'Nu':100} phantoms = [(10,20), (20,25), (60,30)] phantoms = np.array(phantoms, dtype=[('y',float),('u',float)]) oris = get_origins_from_phantoms(phantoms, lim) oriter = get_oriter_from_oris(oris, lim) timing = get_timing_from_oris(oris, lim) dark_color = [(0.10588235294117647, 0.6196078431372549, 0.4666666666666667), (0.8509803921568627, 0.37254901960784315, 0.00784313725490196)] from matplotlib import animation tmin, tmax, x = 0, 100, np.arange(100) t = np.linspace(tmin,tmax,200) # time coordinates replicated = np.zeros((len(t), len(x)), dtype=int) for i, t_i in enumerate(t): replicated[i,:] = (timing['u'] < t_i) fig, ax = plt.subplots(figsize=(5,5)) ax.spines['top'].set_visible(False) # no top or right spine ax.spines['right'].set_visible(False) ax.spines['left'].set_visible(False) # no top or right spine ax.spines['bottom'].set_visible(False) ax.set_ylim([tmin, tmax]) ax.set_xlim([0, 100]) ax.set_xticks([]) ax.set_yticks([]) ax.set_xlabel('position') ax.set_ylabel('time') ax.plot(oriter['y'],oriter['u'],color='k', linewidth=2) timeline, = ax.plot([],[],color='gray',alpha=0.5, linewidth=2) DNA, = ax.plot([],[],color=dark_color[0]) ax.hlines(y=tmin+2,xmin=x.min(),xmax=x.max(),color=dark_color[1]) def init(): timeline.set_data([0,99], [0,0]) DNA.set_data([], []) def update(n): # n = frame counter timeline.set_data([0,100],[t[n],t[n]]) DNA.set_data(x, tmin+2+2*replicated[n,:]) anim = animation.FuncAnimation(fig, update, init_func=init, frames=len(t), interval=40, blit=True) return anim