Convert expt-sawtooth from Gnuplot to Asymptote.
authorW. Trevor King <wking@drexel.edu>
Sun, 2 May 2010 00:06:05 +0000 (20:06 -0400)
committerW. Trevor King <wking@drexel.edu>
Sun, 2 May 2010 00:06:47 +0000 (20:06 -0400)
Also:
  * Stripped old comments from sim-sawtooth.asy
  * Added title to sim-sawtooth

tex/src/figures/expt-sawtooth/SConscript
tex/src/figures/expt-sawtooth/expt-sawtooth.asy [new file with mode: 0644]
tex/src/figures/expt-sawtooth/expt.dat [moved from tex/src/figures/expt-sawtooth/expt.d with 100% similarity]
tex/src/figures/expt-sawtooth/fig.gp [deleted file]
tex/src/figures/expt-sawtooth/sawmodel.xml
tex/src/figures/sim-sawtooth/sim-sawtooth.asy
tex/src/introduction/main.tex

index d8ff28ff47809e2c16dd1a745edc9a1fed5f3997..9b06b3cd8964fa06409a34e18df96c85afcf8ead 100644 (file)
@@ -1,8 +1,29 @@
+from site_cons.site_init import link_wtk_graph
+
+
+FIGURES = ['expt-sawtooth']
+
 # Get the passed in environment.
 Import('env')
 
-for gp in Glob('*.gp'):
-    env.Gnuplot(gp)
+wtk_graph = link_wtk_graph(env)
+
+xml_fit = File('sawmodel.xml')
+expt_sawtooth_data = [
+    env.Command(
+        'expt-Ls.dat',
+        [xml_fit],
+        r"sed -n 's/^ *<L>\(.*\)<\/L>/\1/p' $SOURCE > $TARGET"),
+    ]
+
+for fig in FIGURES:
+    asyfile = '%s.asy' % fig  # static .asy file
+    pyfig = fig.replace('-', '_')
+    data = '%s_data' % (pyfig)
+    asydata = []
+    if data in globals():     # generated data dependencies
+        asydata = globals()[data]
+    env.Asymptote([asyfile, wtk_graph] + asydata)
 
 # Pass back the modified environment.
 Return('env')
diff --git a/tex/src/figures/expt-sawtooth/expt-sawtooth.asy b/tex/src/figures/expt-sawtooth/expt-sawtooth.asy
new file mode 100644 (file)
index 0000000..6cfabe9
--- /dev/null
@@ -0,0 +1,71 @@
+import wtk_graph;
+
+size(15cm,10cm,IgnoreAspect);
+
+scale(Linear, Linear);
+real k = infinity; /* spring constant in N/m, already accounted for (0.05) */
+real xscale=1e9;
+real fscale=1e12;
+
+real xmin = -5e-9;
+real xmax = 300e-9;
+real fmin = -100e-12;
+real fmax = 1000e-12;
+real fnmax = 300e-12;
+
+real kB = 1.3806504e-23;
+real T = 300;
+real p = 3.7e-10;
+real WLC(real x, real L, real p=p, real T=T, real kB=kB,
+        real xLmax=0.99, real fmax=fnmax) {
+  real f = infinity;
+  if (x < 0)
+    return infinity;
+  if (x/L <= xLmax)
+    f = kB*T/p*(0.25*(1/(1-x/L)^2 - 1) + x/L);
+  if (f > fnmax)
+    return infinity;
+  return f;
+}
+
+void graphSawtooth(string file="datafile", real k,
+                  int xcol=0, int fcol=1,
+                  real xscale=1, real fscale=1, real dx=0, real df=0,
+                  pen p=red) {
+  file fin=input(file).line();
+  real[][] a=fin.dimension(0,0);
+  a=transpose(a);
+  real[] x=a[xcol];
+  real[] f=a[fcol];
+  x = x - f/k; /* Remove cantilever extension */
+  graphData(x=x, y=f, xscale=xscale, yscale=fscale,
+           dx=dx, dy=df, p=p, dots=false);
+}
+
+/* expt.dat already scaled to nm and pN */
+graphSawtooth("expt.dat", k=k, p=psoft);
+
+file fin = input('expt-Ls.dat').line();
+real[][] a = fin.dimension(0,0);
+a = transpose(a);
+real[] Ls = a[0];
+int i;
+for (i=0; i<Ls.length; ++i) {
+  real fn(real x) {
+    real f = WLC(x / xscale, L=Ls[i]);
+    if (f == infinity) {
+      write(x, fnmax*fscale * 1.1);
+      return fnmax*fscale * 1.1;
+    }
+    write(x, f*fscale);
+    return f*fscale;
+  }
+  draw(graph(fn, a=0, b=0.9*Ls[i]*xscale), p=phard);
+}
+
+xlimits(xmin*xscale, xmax*xscale, crop=true);
+ylimits(fmin*fscale, fmax*fscale, crop=true);
+
+xaxis(sLabel("Distance (nm)"), BottomTop, LeftTicks);
+yaxis(sLabel("Force (pN)"), LeftRight, RightTicks);
+label(sLabel("Poly-ubiquitin force curve"), point(N), N);
diff --git a/tex/src/figures/expt-sawtooth/fig.gp b/tex/src/figures/expt-sawtooth/fig.gp
deleted file mode 100644 (file)
index 7530c70..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-set terminal pdf font 'Times,7' size 9cm, 6cm
-set output 'fig.pdf'
-unset key
-set yrange [-100:1000]
-set xrange [-5:250]
-set samples 10000
-set xtics nomirror
-set ytics nomirror
-# border 3 = bottom & left
-set border 3
-set xlabel 'Extension (nm)'
-set ylabel 'Force (pN)'
-kB = 1.3806504e-23
-T = 300
-p = 3.7e-10
-f(x,L) = 1e12 * kB*T/p*(0.25*(1/(1-x/L)**2 - 1) + x/L)
-F(x,L) = (x>=0 && x < L && f(x,L) <= 300) ? f(x,L) : 1/0
-plot 'expt.d' with lines, \
-    F(x,41.0063) lt 2, \
-    F(x,65.2187) lt 2, \
-    F(x,88.4682) lt 2, \
-    F(x,110.442) lt 2, \
-    F(x,133.067) lt 2, \
-    F(x,155.498) lt 2, \
-    F(x,177.802) lt 2, \
-    F(x,199.098) lt 2, \
-    F(x,221.89) lt 2
index 200cc335308a3eb4270f6a406ec7c0add12e2ee8..5475279db085c646f36c051bf82f377c0bcf7b19 100644 (file)
@@ -2,7 +2,7 @@
 <unfoldlist>
   <unfold>
     <datafile>
-      expt.d
+      expt.dat
     </datafile>
     <selected>0</selected>
     <temperature>298.15</temperature>
index 2a8032d93ab7c30fee7120e75ece301fe7fa98e8..a75d84ea5e4188fcb5474546abef22c61d9dd1e1 100644 (file)
@@ -27,33 +27,6 @@ graphSawtooth("fig2.dat", k=k, xscale=xscale, fscale=fscale,
 graphSawtooth("fig3.dat", k=k, xscale=xscale, fscale=fscale,
              df=400e-12, p=phard);
 
-//xlimits(xmin, xmax);
-//ylimits(ymin, ymax);
 xaxis(sLabel("Distance (nm)"), BottomTop, LeftTicks);
 yaxis(sLabel("Force (pN)"), LeftRight, RightTicks);
-/*
-set xrange [-5:250]
-set yrange [-10:400]
-set ytics 0,100
-
-set multiplot
-
-set size 1,0.42;
-set origin 0.0,0.0;
-set xlabel 'Extension (nm)'
-plot 'fig1.d' using (($1-$2/0.05)*1e9):($2*1e12)
-
-set size 1,0.29;
-set origin 0.0,0.42;
-set bmargin 0
-unset xlabel
-set xtics format "" 
-set ylabel 'Force (pN)'
-plot 'fig2.d' using (($1-$2/0.05)*1e9):($2*1e12)
-
-set origin 0.0,0.71;
-set bmargin 0
-set xtics format ""
-unset ylabel
-plot 'fig3.d' using (($1-$2/0.05)*1e9):($2*1e12)
-*/
+label(sLabel("Simulated force curves"), point(N), N);
index ef8c4b70a8c31d75cc4b479de5c38e8d614cd55e..12375c6d6dbbf15ec6c631cef09de9fd19c83051 100644 (file)
@@ -182,7 +182,7 @@ multi-domain test proteins.
   \subfloat[][]{\asyfig{figures/schematic/unfolding}%
     \label{fig:unfolding-schematic}}
   % \hspace{.25in}%
-  \subfloat[][]{\includegraphics{figures/expt-sawtooth/fig}%
+  \subfloat[][]{\asyfig{figures/expt-sawtooth/expt-sawtooth}%
     \label{fig:expt-sawtooth}}
   \caption{(a) Schematic of the experimental setup for mechanical
     unfolding of proteins using an AFM (not to scale).  An experiment