Add a PyMOL builder to SCons and generalize PYMOL_PATH setup.
[thesis.git] / src / figures / order-dep / order-dep.asy
1 import wtk_graph;
2
3 picture pic;
4 size(pic, 15cm,5cm,IgnoreAspect);
5
6 scale(pic, Linear, Linear);
7 real xscale=1;
8 real fscale=1e12;
9
10 real g = 0.5772156649;
11 real kB = 1.3806504e-23;
12 real T = 300;
13 real p = 3.7e-10;
14 real v = 1e-6;
15 real Kc = 0.05;
16 real Kwlc = 0.18;
17 real dx = 0.225e-9;
18 real ko = 5e-5;
19 real f = kB*T/dx;
20
21 real kappa(real i, real Kc=Kc, real Kwlc=Kwlc) {
22   return 1.0/(1.0/Kc + i/Kwlc);
23 }
24
25 real theory(real i, int N, real Kc=Kc, real Kwlc=Kwlc, real ko=ko, real dx=dx,
26             real v=v, real T=T, real kB=kB, real g=g) {
27   real f = kB*T/dx;
28   return f*(log((kappa(i, Kc, Kwlc)*v)/((N-i)*ko*f)) - g);
29 }
30
31 // todo: colorpen(N,i)
32 graphFile(pic, "data/order.avg-4", xcol=-1, ycol=0,
33           xscale=xscale, yscale=fscale, p=psoft, dots=true);
34 graphFile(pic, "data/order.avg-8", xcol=-1, ycol=0,
35           xscale=xscale, yscale=fscale, p=pmed, dots=true);
36 graphFile(pic, "data/order.avg-12", xcol=-1, ycol=0,
37           xscale=xscale, yscale=fscale, p=phard, dots=true);
38 graphFile(pic, "data/order.avg-16", xcol=-1, ycol=0,
39           xscale=xscale, yscale=fscale, p=black, dots=true);
40 real fn(real x, real[] params) {return theory(i=x, N=4, Kwlc=params[0]);}
41 fitFile(pic, "data/order.avg-4.fit.dat", f=fn, xmin=0, xmax=3,
42         xscale=xscale, yscale=fscale, p=psoft);
43 real fn(real x, real[] params) {return theory(i=x, N=8, Kwlc=params[0]);}
44 fitFile(pic, "data/order.avg-8.fit.dat", f=fn, xmin=0, xmax=7,
45         xscale=xscale, yscale=fscale, p=pmed);
46 real fn(real x, real[] params) {return theory(i=x, N=12, Kwlc=params[0]);}
47 fitFile(pic, "data/order.avg-12.fit.dat", f=fn, xmin=0, xmax=11,
48         xscale=xscale, yscale=fscale, p=phard);
49 real fn(real x, real[] params) {return theory(i=x, N=16, Kwlc=params[0]);}
50 fitFile(pic, "data/order.avg-16.fit.dat", f=fn, xmin=0, xmax=15,
51         xscale=xscale, yscale=fscale, p=black);
52
53 xaxis(pic, sLabel("Unfolding peak index $i=N_u$"), BottomTop, LeftTicks);
54 yaxis(pic, sLabel("Force (pN)"), LeftRight, RightTicks);
55
56 picture hist_picture(string datafile,
57                      real xmin=-infinity, real xmax=infinity,
58                      real ymin=-infinity, real ymax=infinity) {
59   picture pic;
60   size(pic, 4cm, 3cm, IgnoreAspect);
61   scale(pic, Linear, Log);
62   histFile(pic, datafile, bin_scale=fscale, low=ymin);
63   /* ^-- yscale b/c bins are in Force */
64   xlimits(pic, xmin, xmax);
65   ylimits(pic, ymin, ymax);
66   xaxis(pic, sLabel("Force (pN)"), BottomTop, LeftTicks(N=3), above=true);
67   yaxis(pic, sLabel("Frequency"), LeftRight, RightTicks, above=true);
68   return pic;
69 }
70
71 /* ensure consistent ranges across all histograms */
72 real xmin = 100;
73 real xmax = 380;
74 real ymin = 1e-4;
75 real ymax = 1;
76
77 add(pic.fit(), (0.0), S);
78 add(hist_picture("data/hist3i.hist", xmin, xmax, ymin, ymax).fit(),
79     5cm*W, N);
80 add(hist_picture("data/hist3ii.hist", xmin, xmax, ymin, ymax).fit(),
81     (0,0), N);
82 add(hist_picture("data/hist3iii.hist", xmin, xmax, ymin, ymax).fit(),
83     5cm*E, N);
84 label(sLabel("Pulling speed dependence"), point(N)+(0,3cm), N);