codexcell-free-polyuridylic-acid-decoding.py
cell-free-polyuridylic-acid-decoding.py
"""Original qualitative schematic of the 1961 poly-U assay, not measured data.
Source: Nirenberg and Matthaei, PNAS 47, 1588–1602 (1961),
Methods; Table 1 assay; Tables 6–9; Figure 6.
Tested with Python 3.14 and matplotlib 3.10.7.
"""
from pathlib import Path
import matplotlib.pyplot as plt
from matplotlib.patches import FancyBboxPatch
def draw():
fig, ax = plt.subplots(figsize=(10, 5.4),dpi=110,facecolor='white')
ax.set(xlim=(0,10),ylim=(0,6))
ax.axis('off')
ink='#243349'
def box(x,y,w,h,text,color='#e7eff7',size=12):
ax.add_patch(FancyBboxPatch((x,y),w,h,boxstyle='round,pad=0.06',facecolor=color,edgecolor='#607086',linewidth=1.2))
ax.text(x+w/2,y+h/2,text,ha='center',va='center',fontsize=size,color=ink,linespacing=1.45)
def arrow(a,b):
ax.annotate('',xy=b,xytext=a,arrowprops={'arrowstyle':'->','lw':1.6,'color':'#607086'})
ax.text(.2,5.65,'Cell-free decoding: impose a template, assay incorporation',fontsize=17,weight='bold',color=ink)
ax.text(.2,5.14,'Original schematic of the published experiment • qualitative readout',fontsize=12,color=ink)
box(.25,3.95,2.3,.74,'E. coli: grind; centrifuge')
arrow((2.63,4.32),(2.97,4.32))
box(3.05,3.95,6.65,.74,'Extract + ATP regeneration + ¹⁴C-phenylalanine')
arrow((4.65,3.88),(2.62,3.45))
arrow((7.65,3.88),(7.28,3.45))
box(.85,2.45,3.65,.88,'+ poly-U',color='#dff2e8',size=14)
box(5.45,2.45,3.65,.88,'No poly-U',color='#f0f1f3',size=14)
arrow((2.67,2.36),(2.67,1.91))
arrow((7.27,2.36),(7.27,1.91))
box(.85,1.25,3.65,.56,'Incubate; TCA; wash; count',size=12)
box(5.45,1.25,3.65,.56,'Incubate; TCA; wash; count',size=12)
ax.text(2.67,.89,'Strong incorporation',ha='center',fontsize=13,color='#226342',weight='bold')
ax.text(7.27,.89,'Low background',ha='center',fontsize=13,color='#596573',weight='bold')
ax.text(.25,.30,'Omit ribosomes or ATP regeneration → incorporation suppressed',fontsize=12,color=ink)
fig.subplots_adjust(left=.015,right=.99,top=.99,bottom=.025)
fig.savefig(Path(__file__).stem+'.png',facecolor='white',transparent=False)
plt.close(fig)
if __name__=='__main__':
draw()