(cd ./build && $(LATEX) root)
(cd ./build && $(LATEX) root)
(cd ./build && bibtex root)
+ (cd ./build && bibtex root)
(cd ./build && makeindex root.nlo -s nomencl.ist -o root.nls)
(cd ./build && makeindex root.idx)
(cd ./build && $(LATEX) root)
}
@Inbook{parseval,
- crossref = "press02",
+ crossref = "press92",
chapter = 12,
pages = 498,
note = "See Eq.~12.0.13",
}
@Inbook{PSD,
- crossref = "press02",
+ crossref = "press92",
chapter = 12,
pages = 498,
note = "See Eq.~12.0.14",
}
@Inbook{wiener-khinchin,
- crossref = "press02",
+ crossref = "press92",
chapter = 12,
pages = 498,
note = "See Eq.~12.0.12",
\end{align}
\index{Damped harmonic oscillator}
where $G_1\equiv G_0/m^2$, $\omega_0$, and $\beta$ are used as the
-fitting parameters (see \cref{eq:model-psd}). The variance of $x(t)$
-is then given by \cref{eq:DHO-var}
-\index{$\beta$}
-\index{$\gamma$}
-
+fitting parameters (see \cref{eq:model-psd}).%
+\index{$\beta$}\index{$\gamma$} The variance of $x(t)$ is then given
+by \cref{eq:DHO-var}
\begin{equation}
\avg{x(t)^2} = \frac{\pi G_1}{2\beta\omega_0^2} \;,
\end{equation}
Plugging \cref{eq:GOdef} into \cref{eq:DHO-psd-F} we have
\begin{equation}
\PSD(x, \omega) = \frac{G_0/m^2}{(\omega_0^2-\omega^2)^2 +\beta^2\omega^2}\;.
+ \label{eq:model-psd}
\end{equation}
Integrating over positive $\omega$ to find the total power per unit time yields
\begin{align}
\subparagraph*{}\label{sec:I27}
The experiments were carried out on octomers of I27 (\cref{fig:I27}).
+\nomenclature{I27}{Immunoglobulin-like domain 27 from human Titin}\index{I27}
I27 is a model protein that has been used in mechanical unfolding
experiments since the first use of synthetic
chains\citep{carrion-vazquez99b,TODO}. It was used here because it is
--pretex='\documentclass{drexel-thesis} \input{packages}' \
--
-FIGS = unfolding afm landscape-cant
+FIGS = unfolding afm landscape-cant monte-carlo
all : $(FIGS:%=%_.tex)
--- /dev/null
+// A die roll decides which of two doors to enter.
+
+//import unicode;
+//from three access rotate;
+
+/* Copy three.asy's relevant rotate function, since including three
+ * adds an uneccessary movie15 LaTeX dependency.
+ */
+transform3 rotate(real angle, triple v)
+{
+ v=unit(v);
+ real x=v.x, y=v.y, z=v.z;
+ real s=Sin(angle), c=Cos(angle), t=1-c;
+ return new real[][] {
+ {t*x^2+c, t*x*y-s*z, t*x*z+s*y, 0},
+ {t*x*y+s*z, t*y^2+c, t*y*z-s*x, 0},
+ {t*x*z-s*y, t*y*z+s*x, t*z^2+c, 0},
+ {0, 0, 0, 1}};
+}
+
+struct Door {
+ pair center;
+ real angle;
+ Label L;
+ real width = 3cm;
+ real aspect_ratio = (1+sqrt(5))/2; // Golden ratio
+ real knob_ratio = 0.10;
+ triple inward = (0, 0.4, -1); // x component must be zero for current implementation.
+
+ void draw() {
+ picture p; // the door panel
+ guide g = yscale(this.aspect_ratio)*scale(this.width)*shift((-0.5,-0.5))*
+ unitsquare;
+ fill(p, g, white);
+ label(p, Label(this.L, (0,0), embed=Scale), (0,0));
+ p = shift((-this.width/2.0,0))*xscale(Cos(this.angle))*rotate(-90)*
+ slant(-unit(this.inward).y*Sin(this.angle))*
+ rotate(90)*shift((this.width/2.0,0))*
+ p; // open the door if angle > 0
+ clip(p, g);
+ fill(shift(this.center)*g); // fill the hole
+ add(p, this.center); // add the door panel
+ draw(shift(this.center)*g); // outline the hole again
+ }
+
+ void operator init (pair center=(0,0), Label L="", real angle=0) {
+ this.center = center;
+ this.L = L;
+ this.angle = angle;
+ }
+}
+
+struct Die {
+ pair center;
+ int top;
+ int left;
+ bool righthanded = true;
+ real side = 1cm;
+ real dot_ratio = 0.2;
+ triple up = (0, 1, 0.4); // up, but tilted out of the page
+ real theta = -20;
+ pair[][] pips;
+
+ int right() {
+ /* It is traditional to combine pairs of numbers that total seven
+ * to opposite faces; this implies that at one vertex the faces 1,
+ * 2 and 3 intersect. It leaves one other abstract design choice:
+ * the faces representing 1, 2 and 3 respectively can be placed in
+ * either clockwise or counterclockwise order about this
+ * vertex. If the 1, 2 and 3 faces run counterclockwise around
+ * their common vertex, the die is called "right handed"; if they
+ * run clockwise it is called "left handed". Standard modern
+ * Western dice are right-handed, whereas Chinese dice are often
+ * left-handed.
+ * - http://en.wikipedia.org/wiki/Dice
+ */
+ int little_top = min(this.top, 7-this.top);
+ int little_left = min(this.left, 7-this.left);
+ int little_right = 6 - little_top - little_left;
+ bool righthanded;
+ int little_ccw[] = {little_top, little_left, little_right};
+ int i = 0;
+ little_ccw.cyclic = true;
+ while (little_ccw[i] != 1 && i < 3) i += 1;
+ if (i == 3) return -1;
+ if (little_ccw[i+1] == 2) righthanded = true;
+ else righthanded = false;
+ if (this.top != little_top) righthanded = !righthanded;
+ if (this.left != little_left) righthanded = !righthanded;
+ if (righthanded == this.righthanded) return little_right;
+ return 7-little_right;
+ }
+
+ void setup_pips() {
+ real d = 1.0/3.5;
+ this.pips = new pair[7][];
+ this.pips[0] = null;
+ this.pips[1].push((0,0));
+ this.pips[2].push((-d,d));
+ this.pips[2].push((d,-d));
+ this.pips[3] = copy(this.pips[2]);
+ this.pips[3].push((0,0));
+ this.pips[4] = copy(this.pips[2]);
+ this.pips[4].push((d,d));
+ this.pips[4].push((-d,-d));
+ this.pips[5] = copy(this.pips[4]);
+ this.pips[5].push((0,0));
+ this.pips[6] = copy(this.pips[4]);
+ this.pips[6].push((-d,0));
+ this.pips[6].push((d,0));
+ }
+
+ // z coordinate in face unitvectors will end up facing this.up
+ pair transform(pair face_coords, triple face_x, triple face_y) {
+ triple face_z = cross(unit(face_x), unit(face_y));
+ triple f_c = face_coords.x*face_x + face_coords.y*face_y +0.5*face_z;
+ triple u = cross(unit(this.up), (0,0,1));
+ if (length(u) > sqrtEpsilon) {
+ // rotate z coordinate to point along this.up
+ f_c = rotate(-aSin(length(u)), u) * f_c;
+ }
+ triple c = rotate(this.theta, this.up) * f_c;
+ return shift(this.center)*scale(this.side)*(c.x, c.y);
+ }
+
+ guide transform(guide face_coords, triple face_x, triple face_y) {
+ guide g;
+ pair p;
+ pair[] c; // for holding Bezier control points
+ for (int i=0; i < length(face_coords); ++i) {
+ p = this.transform(point(face_coords, i), face_x, face_y);
+ if (i == 0) {
+ g = g--p;
+ } else {
+ c = controlSpecifier(face_coords, i-1); // {outgoing, incoming)
+ c[0] = this.transform(c[0], face_x, face_y);
+ c[1] = this.transform(c[1], face_x, face_y);
+ g = g..controls c[0] and c[1]..p;
+ }
+ }
+ if (cyclic(face_coords)) {
+ c = controlSpecifier(face_coords, -1);
+ c[0] = this.transform(c[0], face_x, face_y);
+ c[1] = this.transform(c[1], face_x, face_y);
+ g = g..controls c[0] and c[1]..cycle;
+ }
+ return g;
+ }
+
+ void draw_pip(pair z, triple face_x, triple face_y) {
+ fill(this.transform(shift(z)*scale(this.dot_ratio/2.0)*unitcircle,
+ face_x, face_y));
+ }
+
+ /* azimuth = 0, elevation=90 -> facing up
+ * azimuth = 0, elevation=0 -> facing out of the page
+ * azimuth = 90, elevation=0 -> facing right
+ */
+ void draw_face(int number, triple face_x, triple face_y) {
+ filldraw(this.transform(shift((-0.5,-0.5))*unitsquare, face_x, face_y),
+ white);
+ for (pair z : this.pips[number])
+ this.draw_pip(z, face_x, face_y);
+ }
+
+ void draw() {
+ this.draw_face(this.top, face_x=(1,0,0), face_y=(0,1,0));
+ this.draw_face(this.left, face_x=(1,0,0), face_y=(0,0,1));
+ this.draw_face(this.right(), face_x=(0,0,-1), face_y=(0,1,0));
+ }
+
+ void operator init (pair center=(0,0), int top=1, int left=2) {
+ this.center = center;
+ this.top = top;
+ this.left = left;
+ this.setup_pips();
+ }
+}
+
+Door L = Door((-2cm,0),
+ L=minipage("\centering{\Large Unfold}\\$P=0.\bar{3}$\\(\epsdice{1}\epsdice{2})"));
+Door R = Door((2cm,0),
+ L=minipage("\centering{\Large Stay folded}\\$Q=1-P$\\(\epsdice{3}\epsdice{4}\epsdice{5}\epsdice{6})"),
+ angle=30);
+Die d = Die((-0.3cm, -2.5cm), top=3, left=5);
+
+L.draw();
+R.draw();
+d.draw();
% titles would overlap.
\fancyfoot[RE,LO]{}
+%\usepackage[utf8]{inputenc} % Allow UTF-8 characters in input files
+
\usepackage[super,sort&compress,comma]{natbib} % fancy citation extensions
% super selects citations in superscript mode
% sort&compress automatically sorts and compresses compound citations (\citep{a,b,...})
\usepackage{asyfig} % more fancy graphics ;).
+\usepackage{epsdice} % dice-face font
+
\usepackage{wtk_cmmds} % common personal macros, in ~/texmf/tex/latex/
\input{local_cmmds}
-PACKAGES = $(shell ls *.sty) $(shell ls *.ist)
+PACKAGES = $(shell ls *.sty) $(shell ls *.ist) $(shell ls *.cfg) \
+ $(shell ls *.pdf) $(shell ls *.eps)
TARGETS = $(PACKAGES:%=../%)
all : $(TARGETS)
-../%.sty : %.sty
- (cd ../ ; ln -s packages/$<)
-
-../%.ist : %.ist
+../% : %
(cd ../ ; ln -s packages/$<)
clean :
--- /dev/null
+%!PS-Adobe-2.0 EPSF-1.2
+%%BoundingBox: 0 0 258 86
+/frame { /n exch def /xoffset n 1 sub 43 mul def gsave newpath
+xoffset yoffset translate 32 5 bw sub moveto 32 10 r -90 0 arc
+37 bw add 32 lineto 32 32 r 0 90 arc 10 37 bw add lineto
+10 32 r 90 180 arc 5 bw sub 10 lineto 10 10 r 180 270 arc closepath
+bw 0 eq { stroke } { fill } ifelse grestore } def
+/dot { /y exch def /x exch def /n exch def /xoffset n 1 sub 43
+mul def gsave newpath xoffset yoffset translate x 8 mul 5 add y 8 mul
+5 add 3.5 0 360 arc closepath bw setgray fill grestore } def
+2 setlinewidth 0 1 1 { /bw exch def /yoffset bw 43 mul def /r 5 bw
+add def 0 setgray 1 1 6 { frame } for 2 1 6 { dup 1 2 3 { dup dot }
+for } for 1 2 5 { 2 2 dot } for 4 1 6 { dup 1 3 dot 3 1 dot } for
+1 2 3 { 6 exch 2 dot } for } for
+%%EOF
--- /dev/null
+\def\dicefile{dice}
--- /dev/null
+%%
+%% This is file `epsdice.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% epsdice.dtx (with options: `package')
+%%
+%% This is a generated file; it is part of the `epsdice' package.
+%%
+%% Copyright (c) 2007 Thomas A. Heim
+%%
+%% This program can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License (LPPL) distributed from CTAN
+%% archives in directory macros/latex/base/lppl.txt; either
+%% version 1 of the License, or any later version.
+%%
+%% This file is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+%%
+%% Bug reports ON UNMODIFIED VERSIONS of this package, or
+%% suggestions for improvement and additional features
+%% should be directed to the author (thomas.heim@unibas.ch)
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{epsdice}[2007/02/15 by Thomas Heim (v. 2.1)]
+\RequirePackage{graphicx}
+\RequirePackage{ifthen}
+\InputIfFileExists{epsdice.cfg}{}{\def\dicefile{dice}}
+\newcounter{eps@face}
+\newcommand*\epsdice[2][white]{%
+\setcounter{eps@face}{\number #2}%
+\ifthenelse{\value{eps@face}>6}{\theeps@face\setcounter{eps@face}{0}}{}%
+\ifthenelse{\value{eps@face}<0}{\theeps@face\setcounter{eps@face}{0}}{}%
+\ifthenelse {\equal{#1}{black}} {\addtocounter{eps@face}{6}} {}%
+\eps@dice{\value{eps@face}}}
+\newcommand*\eps@dice[1]{%
+\setcounter{eps@face}{\number #1}%
+\ifcase\value{eps@face}%
+ \PackageError{EPSDICE}{%
+Argument is not a number, or its value\MessageBreak
+lies outside the allowed range for dice}{%
+Make sure the argument is either 1, 2, 3, 4, 5, or 6.\MessageBreak
+-- Just go on and I'll write whatever you typed;\MessageBreak
+ the output may not make much sense, though}%
+\or
+ \includegraphics[height=1.75ex,viewport= 3 4 38 39,%
+ clip=true]{\dicefile}%
+\or
+ \includegraphics[height=1.75ex,viewport= 46 4 81 39,%
+ clip=true]{\dicefile}%
+\or
+ \includegraphics[height=1.75ex,viewport= 89 4 124 39,%
+ clip=true]{\dicefile}%
+\or
+ \includegraphics[height=1.75ex,viewport= 132 4 167 39,%
+ clip=true]{\dicefile}%
+\or
+ \includegraphics[height=1.75ex,viewport= 175 4 210 39,%
+ clip=true]{\dicefile}%
+\or
+ \includegraphics[height=1.75ex,viewport= 218 4 253 39,%
+ clip=true]{\dicefile}%
+\or
+ \includegraphics[height=1.75ex,viewport= 3 47 38 82,%
+ clip=true]{\dicefile}%
+\or
+ \includegraphics[height=1.75ex,viewport= 46 47 81 82,%
+ clip=true]{\dicefile}%
+\or
+ \includegraphics[height=1.75ex,viewport= 89 47 124 82,%
+ clip=true]{\dicefile}%
+\or
+ \includegraphics[height=1.75ex,viewport= 132 47 167 82,%
+ clip=true]{\dicefile}%
+\or
+ \includegraphics[height=1.75ex,viewport= 175 47 210 82,%
+ clip=true]{\dicefile}%
+\or
+ \includegraphics[height=1.75ex,viewport= 218 47 253 82,%
+ clip=true]{\dicefile}%
+\fi}
+\endinput
+%%
+%% End of file `epsdice.sty'.
@String{BPJ = "Biophys. J."}
@String{BIOSENSE = "Biosensors and Bioelectronics"}
@String{EMBO = "EMBO Rep."}
+@String{IJBMM = "Int. J. of Bio. Macromol."}
+%@String{IJBMM = "International Journal of Biological Macromolecules"}
@String{JCS = "J. Cell Sci."}
%String{JCS = "Journal of Cell Science"}
@String{JCP = "The Journal of Chemical Physics"}
@String{RKapon = "Kapon, Ruti"}
@String{MKarplus = "Karplus, Martin"}
@String{FKienberger = "Kienberger, Ferry"}
+@String{WKing = "King, William Trevor"}
@String{DKlimov = "Klimov, Dmitri K."}
@String{AKrammer = "Krammer, Andre"}
@String{MKulke = "Kulke, Michael"}
@String{RStark = "Stark, R. W."}
@String{CStroh = "Stroh, Cordula"}
@String{TStrunz = "Strunz, Torsten"}
+@String{MSu = "Su, Meihong"}
@String{ASzabo = "Szabo, Attila"}
@String{DTalaga = "Talaga, David S."}
@String{JTang = "Tang, Jianyong"}
note = "Good discussion of the effect of correlation time on
calibration. Excellent detail on power spectrum
derivation and thermal noise for extremely overdamped
- oscillators in Appendix A (references \citet{reif65}).
+ oscillators in Appendix A (references \citet{rief65}).
References work on deconvolving thermal noise from
other noise\citep{cowan98}",
}
-@Book{press02,
+@Book{press92,
title = "Numerical Recipies in {C}: The Art of Scientific
Computing",
author = "W. Press and S. Teukolsky and W. Vetterling and B.
journal = RMP,
volume = 80,
number = 2,
- pages = {633--730},
+ pages = "633--730",
numpages = 97,
year = 2008,
month = jun,
doi = "10.1103/RevModPhys.80.633",
publisher = APS,
}
+
+@article{king10,
+author = WKing #" and "# MSu #" and "# GYang,
+title = "{M}onte {C}arlo simulation of mechanical unfolding of
+ proteins based on a simple two-state model",
+journal = IJBMM,
+volume = 46,
+number = 2,
+pages = "159--166",
+year = 2010,
+issn = "0141-8130",
+keywords = "Atomic force microscopy",
+keywords = "Mechanical unfolding",
+keywords = "Monte Carlo simulation",
+keywords = "Worm-like chain",
+keywords = "Single molecule methods",
+abstract = "Single molecule methods are becoming routine biophysical
+ techniques for studying biological macromolecules. In mechanical
+ unfolding of proteins, an externally applied force is used to induce
+ the unfolding of individual protein molecules. Such experiments have
+ revealed novel information that has significantly enhanced our
+ understanding of the function and folding mechanisms of several
+ types of proteins. To obtain information on the unfolding kinetics
+ and the free energy landscape of the protein molecule from
+ mechanical unfolding data, a Monte Carlo simulation based on a
+ simple two-state kinetic model is often used. In this paper, we
+ provide a detailed description of the procedure to perform such
+ simulations and discuss the approximations and assumptions
+ involved. We show that the appearance of the force versus extension
+ curves from mechanical unfolding of proteins is affected by a
+ variety of experimental parameters, such as the length of the
+ protein polymer and the force constant of the cantilever. We also
+ analyze the errors associated with different methods of data pooling
+ and present a quantitative measure of how well the simulation
+ results fit experimental data. These findings will be helpful in
+ experimental design, artifact identification, and data analysis for
+ single molecule studies of various proteins using the mechanical
+ unfolding method.",
+doi = "DOI: 10.1016/j.ijbiomac.2009.12.001",
+url = "http://www.sciencedirect.com/science/article/B6T7J-4XWMND2-1/2/7ef768562b4157fc201d450553e5de5e",
+}
+
+@Article {metropolis87,
+ author = "Nicholas Metropolis",
+ title = "The Beginning of the Monte Carlo Method",
+ journal = "Los Alamos Science",
+ volume = 15,
+ pages = "125--130",
+ year = 1987,
+ publisher = "Los Alamos National Laboratory",
+ url = "http://library.lanl.gov/cgi-bin/getfile?15-12.pdf",
+}
]{drexel-thesis}
% See drexel-thesis.pdf for more options.
-\includeonly{%
+%\includeonly{%
% cantilever/main,%
% temperature/main%
- cantilever-calib/main
-}
+% cantilever-calib/main
+%}
\author{William Trevor King}
\title{Temperature and cantilever dependent protein unfolding}
used since the first report of mechanical unfolding experiments using
the AFM%
\citep{rief97a,rief97b,rief98,carrion-vazquez99b,best02,zinober02,jollymore09},
-however, a comprehensive discussion of the simulation procedures and
-the intricacies involved has not been reported. In this paper, we
-provide a detailed description of the simulation procedure, including
-the theories, approximations, and assumptions involved. We also
-explain the procedure for extracting kinetic properties of the protein
-from experimental data and introduce a quantitative measure of fit
-quality between simulation and experimental results. In addition, the
-effects of various experimental parameters on force curve appearance
-are demonstrated, and the errors associated with different methods of
-data pooling are discussed. We believe that these results will be
-useful in future experimental design, artifact identification, and
-data analysis for single molecule mechanical unfolding experiments.
+but these previous implementations are neither fully described nor
+publicly available.
+
+To fill this gap, I developed the \sawsim\ simulation
+program\citep{king10}. In this chapter, I provide a detailed
+description of the simulation procedure, including the theories,
+approximations, and assumptions involved. I also explain the
+procedure for extracting kinetic properties of the protein from
+experimental data and introduce a quantitative measure of fit quality
+between simulation and experimental results. In addition, the effects
+of various experimental parameters on force curve appearance are
+demonstrated, and the errors associated with different methods of data
+pooling are discussed. These results should be useful in future
+experimental design, artifact identification, and data analysis for
+single molecule mechanical unfolding experiments.
\begin{equation}
P = 1 - (1-P_1)^{N_f} \approx N_fP_1 \;, \label{eq:sawsim:prob-n}
\end{equation}
-where the approximation is valid when $N_fP_1 \ll 1$. To determine if
-an unfolding event occurs in a particular time step, the probability
-calculated using \cref{eq:sawsim:prob-n} is compared with a randomly
-generated number uniformly distributed between $0$ and $1$. If $P$
-is bigger than the random number, a domain unfolds, changing the
-population of each tension state, and a new balance between the
-polymer and the cantilever is determined. If no unfolding event
-occurs the pulling continues and the unfolding probability is
-calculated again in the next step at a higher force. When all the
-molecules in the polymer have unfolded, the pulling continues until a
-pre-determined force level is reached, where the polymer is assumed to
-detach from one of the tethering surfaces. The cantilever deflection
-becomes zero after this point.
+where the approximation is valid when $N_fP_1 \ll 1$.
+
+\begin{figure}
+ \asyfig{figures/schematic/monte-carlo}
+ \caption{Once the unfolding probability has been caculated, we need
+ to determine whether or not a domain should unfold. We do this by
+ generating a random number, and comparing that number to the
+ unfolding probability $P$. The random number determines which of
+ the possible paths we should follow for the current simulation.
+ Such ``statistical sampling'' is the hallmark of the Monte Carlo
+ approach\citep{metropolis87}. This cartoon translates the idea
+ into the more familiar doors (possible paths) and dice (random
+ numbers).%
+ \label{fig:monte-carlo}}
+\end{figure}
+
+To determine if an unfolding event occurs in a particular time step,
+the probability calculated using \cref{eq:sawsim:prob-n} is compared
+with a randomly generated number uniformly distributed between $0$ and
+$1$ (\cref{fig:monte-carlo}). If $P$ is bigger than the random
+number, a domain unfolds, changing the population of each tension
+state, and a new balance between the polymer and the cantilever is
+determined. If no unfolding event occurs the pulling continues and
+the unfolding probability is calculated again in the next step at a
+higher force. When all the molecules in the polymer have unfolded,
+the pulling continues until a pre-determined force level is reached,
+where the polymer is assumed to detach from one of the tethering
+surfaces. The cantilever deflection becomes zero after this point.
% address unfolding models
Although the Bell model (\cref{eq:sawsim:bell}) is the most widely used