"""Original fixed-budget nested-contact model; run from _media.""" from pathlib import Path import numpy as np import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt budget,cw,cr,tau,sigma=180.,9.,1.,2.,6. r=np.linspace(1,45,500) m=budget/(cw+r*cr) u=np.sqrt((tau*tau+sigma*sigma/r)/m) fig,ax=plt.subplots(figsize=(8,3.5),dpi=120,layout='constrained') fig.patch.set_facecolor('white') ax.plot(r,u,color='#245d9c',label='Continuous allocation model') for readings,wrings in [(1,18),(9,10),(36,4)]: se=np.sqrt(tau*tau/wrings+sigma*sigma/(wrings*readings)) ax.scatter([readings],[se],color='#a64d29',zorder=3) ax.annotate(f'{wrings} wrings × {readings} '+('read' if readings==1 else 'reads'),xy=(readings,se),xytext=(8,12),textcoords='offset points',fontsize=9) ax.set(xlabel='Readouts per independent wring',ylabel='Standard deviation of overall mean (nm)',title='Fixed 180-minute budget: balance rewringing and readout noise',xlim=(0,45),ylim=(.7,1.8)) ax.text(.02,.94,'Model: 9 min/wring + 1 min/read; between-wring SD 2 nm, readout SD 6 nm',transform=ax.transAxes,fontsize=9) ax.spines[['top','right']].set_visible(False) ax.grid(alpha=.2);ax.legend(fontsize=9,loc='lower right') fig.savefig(Path('nested-contact-allocation.png'),facecolor='white')