function [H,slope]=plot_speed_vs_errors(data, minerr, color, linefit) % similar to plot_growth_vs_errors(), but with data as loaded by load_xgrow_data() % each Gmc in the data set gets its mean values computed, so don't combine % data from different types of run. (e.g. eps-variation and Gmc-variation) if nargin<4 linefit=0; end xgrow_i sz = data(:,xi_sz); t = data(:,xi_t); mm = data(:,xi_mm); Gmc = data(:,xi_Gmc); rate = sqrt(2*sz)./t; err = max(minerr,mm./sz); uGmc = unique(Gmc); for i=1:length(uGmc) ii = find(Gmc==uGmc(i)); mrate(i) = mean(sqrt(2*sz(ii))./t(ii)); merr(i) = max(minerr,mean(mm(ii)./sz(ii))); bars(i) = 2*sqrt(merr(i))./sqrt(sum(sz(ii))); mr(i) = mean(sqrt(2*sz(ii))./t(ii)); me(i) = mean(mm(ii)./sz(ii)); end I =find(me>0); P =polyfit(log(mr(I)),log(me(I)),1); if color(2)==' ' H=loglog(mrate,merr,[color(1) '*-']); else H=loglog(rate,err,color); loglog(mrate,merr,[color(1) '*-']); end %% note: for NxN proofreading tiles, since errors tend to be co-locallized, %% the probability of an error per tile [i.e. fraction of tiles in error] %% = [number of tile errors / number of tiles] %% = N * (prob of an error per block [which will be N tile errors]) / %% (N^2 tiles/block) %% %% and we treat as if (#tiles / N^2) iid events, each with %% probability eblock = etile*N %% var(#err blocks) = (#tiles / N^2) var(eblock) %% = (#tiles) var(etile) %% = var(#err tiles if iid) h=line([ mrate .9*mrate .9*mrate; ... mrate mrate/.9 mrate/.9], ... [ merr+bars merr+bars max(minerr,merr-bars); ... max(minerr,merr-bars) merr+bars max(minerr,merr-bars)]); set(h,'Color',color(1)); if linefit loglog(mr(I),exp(polyval(P,log(mr(I)))),'k--'); end slope=P(1);