From: W. Trevor King Date: Mon, 15 Mar 2010 00:10:22 +0000 (-0400) Subject: Added monte-carlo.asy figure (and the epsdice package it depends on). X-Git-Tag: v1.0~425 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=eb01de28cf436c61c944ccaaa1fa927b96047414;p=thesis.git Added monte-carlo.asy figure (and the epsdice package it depends on). Added a second pass through BibTeX to pick up any references in the "note" field. There don't seem to be any new inclusions after that point. Corrected press92 key (had been 02. Oops :p). Relabeled eq:model-psd. We don't fit the post-equipartition theorem version (eq:DHO-psd), because we're preparing to test the fit, and we don't gain anything by plugging in a few more scaling factors. --- diff --git a/tex/Makefile b/tex/Makefile index ab27c3d..ea80dbf 100644 --- a/tex/Makefile +++ b/tex/Makefile @@ -5,6 +5,7 @@ thesis.pdf : build (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) diff --git a/tex/src/cantilever-calib/main.bib b/tex/src/cantilever-calib/main.bib index debadbf..6ee65ef 100644 --- a/tex/src/cantilever-calib/main.bib +++ b/tex/src/cantilever-calib/main.bib @@ -29,21 +29,21 @@ } @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", diff --git a/tex/src/cantilever-calib/overview.tex b/tex/src/cantilever-calib/overview.tex index 9024774..c02f6e2 100644 --- a/tex/src/cantilever-calib/overview.tex +++ b/tex/src/cantilever-calib/overview.tex @@ -78,11 +78,9 @@ predicted \PSD\ for a damped harmonic oscillator (\cref{eq:model-psd}) \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} diff --git a/tex/src/cantilever-calib/solve_general.tex b/tex/src/cantilever-calib/solve_general.tex index 2734225..17028ae 100644 --- a/tex/src/cantilever-calib/solve_general.tex +++ b/tex/src/cantilever-calib/solve_general.tex @@ -31,6 +31,7 @@ We compute the \PSD\ by plugging \cref{eq:DHO-xmag} into \cref{eq:psd-def} 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} diff --git a/tex/src/cantilever/methods.tex b/tex/src/cantilever/methods.tex index 731c9ab..312b0d0 100644 --- a/tex/src/cantilever/methods.tex +++ b/tex/src/cantilever/methods.tex @@ -2,6 +2,7 @@ \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 diff --git a/tex/src/figures/schematic/Makefile b/tex/src/figures/schematic/Makefile index 73d1d0c..0c263da 100644 --- a/tex/src/figures/schematic/Makefile +++ b/tex/src/figures/schematic/Makefile @@ -3,7 +3,7 @@ ASYPROCESS = ../asy/asyprocess \ --pretex='\documentclass{drexel-thesis} \input{packages}' \ -- -FIGS = unfolding afm landscape-cant +FIGS = unfolding afm landscape-cant monte-carlo all : $(FIGS:%=%_.tex) diff --git a/tex/src/figures/schematic/monte-carlo.asy b/tex/src/figures/schematic/monte-carlo.asy new file mode 100644 index 0000000..2d14fc8 --- /dev/null +++ b/tex/src/figures/schematic/monte-carlo.asy @@ -0,0 +1,189 @@ +// 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(); diff --git a/tex/src/packages.tex b/tex/src/packages.tex index 22f0fe3..cb2d2ab 100644 --- a/tex/src/packages.tex +++ b/tex/src/packages.tex @@ -2,6 +2,8 @@ % 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,...}) @@ -59,5 +61,7 @@ \usepackage{asyfig} % more fancy graphics ;). +\usepackage{epsdice} % dice-face font + \usepackage{wtk_cmmds} % common personal macros, in ~/texmf/tex/latex/ \input{local_cmmds} diff --git a/tex/src/packages/Makefile b/tex/src/packages/Makefile index 9bbb924..53ad8af 100644 --- a/tex/src/packages/Makefile +++ b/tex/src/packages/Makefile @@ -1,12 +1,10 @@ -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 : diff --git a/tex/src/packages/dice.eps b/tex/src/packages/dice.eps new file mode 100644 index 0000000..c9ba876 --- /dev/null +++ b/tex/src/packages/dice.eps @@ -0,0 +1,15 @@ +%!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 diff --git a/tex/src/packages/dice.pdf b/tex/src/packages/dice.pdf new file mode 100644 index 0000000..8f758ae Binary files /dev/null and b/tex/src/packages/dice.pdf differ diff --git a/tex/src/packages/epsdice.cfg b/tex/src/packages/epsdice.cfg new file mode 100644 index 0000000..c4f5e36 --- /dev/null +++ b/tex/src/packages/epsdice.cfg @@ -0,0 +1 @@ +\def\dicefile{dice} diff --git a/tex/src/packages/epsdice.sty b/tex/src/packages/epsdice.sty new file mode 100644 index 0000000..0540f7b --- /dev/null +++ b/tex/src/packages/epsdice.sty @@ -0,0 +1,86 @@ +%% +%% 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'. diff --git a/tex/src/root.bib b/tex/src/root.bib index f9d2413..47583a2 100644 --- a/tex/src/root.bib +++ b/tex/src/root.bib @@ -54,6 +54,8 @@ @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"} @@ -182,6 +184,7 @@ @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"} @@ -260,6 +263,7 @@ @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"} @@ -2166,12 +2170,12 @@ 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. @@ -7702,10 +7706,62 @@ url = "http://www.sciencedirect.com/science/article/B6WBK-4F5M7K3-3C/2/c94b612e0 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", +} diff --git a/tex/src/root.tex b/tex/src/root.tex index 80c7665..97cdcb2 100644 --- a/tex/src/root.tex +++ b/tex/src/root.tex @@ -16,11 +16,11 @@ ]{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} diff --git a/tex/src/sawsim/introduction.tex b/tex/src/sawsim/introduction.tex index 2652dbb..25e3a0a 100644 --- a/tex/src/sawsim/introduction.tex +++ b/tex/src/sawsim/introduction.tex @@ -24,15 +24,18 @@ the pulling direction. The Monte Carlo simulation method has been 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. diff --git a/tex/src/sawsim/methods.tex b/tex/src/sawsim/methods.tex index 1637027..69d9082 100644 --- a/tex/src/sawsim/methods.tex +++ b/tex/src/sawsim/methods.tex @@ -171,19 +171,34 @@ group of $N_f$ identical domains to unfold in a given time step is \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