7 <title>Open source single molecule force spectroscopy</title>
9 <meta name="description" content="Controlling and analyzing SMFS with varying salt concentrations">
10 <meta name="author" content="Trevor King">
12 <meta name="apple-mobile-web-app-capable" content="yes" />
13 <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
14 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
16 <link rel="stylesheet" href="css/reveal.min.css">
17 <link rel="stylesheet" href="css/theme/beige.css" id="theme">
18 <link rel="stylesheet" href="css/local.css" id="local">
20 <!-- For syntax highlighting -->
21 <link rel="stylesheet" href="lib/css/zenburn.css">
23 <!-- If the query includes 'print-pdf', use the PDF print sheet -->
25 document.write( '<link rel="stylesheet" href="css/print/' + ( window.location.search.match( /print-pdf/gi ) ? 'pdf' : 'paper' ) + '.css" type="text/css" media="print">' );
29 <script src="lib/js/html5shiv.js"></script>
37 <!-- Any section element inside of this container is displayed as a slide -->
41 <h2>Open source<br/> single molecule<br/> force spectroscopy</h2>
42 <h3>Protein unfolding in varying salt concentrations</h3>
43 <p style="text-align: center;">
44 <small>Trevor King</small>
49 <h2>Proteins: What are they?</h2>
51 <video width="640" height="480"
52 preload="auto" loop="" controls=""> <!--autoplay=""-->
53 <source src="media/build/1TIT-atoms.mp4"
54 type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"' />
56 <!-- generated with PyMol from
57 http://www.rcsb.org/pdb/explore.do?structureId=1TIT -->
61 <h2>Proteins: Where are they?</h2>
63 <img src="media/build/takamori-fig4b-fw-fh.png" />
65 <p style="text-align: center;">
67 <a href="http://dx.doi.org/10.1016/j.cell.2006.10.030">
68 Takamori, Holt, Stenius, et al., 2006
74 <h2>Proteins: Titin</h2>
76 <img src="media/build/skeletal-muscle-fw-fh.png" />
78 <p style="text-align: center;">
81 <a href="http://en.wikipedia.org/wiki/File:Skeletal_muscle.jpg">
88 <h2>Proteins: Titin's I27</h2>
90 <img src="media/build/titin-fw-fh.png" />
92 <p style="text-align: center;">
94 <a href="http://www.ks.uiuc.edu/Research/telethonin/">
95 U. Illinois Biophysics Group
101 <h2>Proteins: I27</h2>
103 <img src="media/build/1TIT-fw-fh.png" />
105 <p style="text-align: center;">
107 <a href="http://www.rcsb.org/pdb/explore.do?structureId=1TIT">
114 <h2>Proteins: What's the problem?</h2>
115 <table class="center">
117 <td style="vertical-align: middle;">
118 <pre style="display: table; width: auto;">
128 <td style="vertical-align: middle;"><p> → </p></td>
129 <td style="vertical-align: middle;">
130 <img src="media/build/1TIT-tw-th.png" />
136 <img src="media/build/pirchi-fig1-fw-hh.png" />
138 <p style="text-align: center;">
140 <a href="http://dx.doi.org/10.1038/ncomms1504">
141 Pirchi, Ziv, Riven, et al., 2011
152 <h2>Atomic force microscopy</h2>
154 <img src="media/build/afm-3d-fw-fh.png" />
158 <h2>AFM: Cantilever geometry</h2>
160 <!-- need height to stretch low-resolution pictures -->
161 <img src="media/build/cantilever.jpg" height="272" />
162 <img src="media/build/tip.jpg" height="272" />
164 <p style="text-align: center;">
166 <a href="http://probe.olympus-global.com/en/product/omcl_tr800psa_w/">
169 <a href="http://www.asylumresearch.com/Probe/TR400PSA,Olympus">
173 <a href="http://probe.olympus-global.com/en/product/omcl_tr400psa_hw/">
180 <h2>AFM: Laser deflection</h2>
182 <video width="640" height="480"
183 preload="auto" loop="" controls=""> <!--autoplay=""-->
184 <source src="media/build/contact-afm.ogv"
185 type='video/ogg; codecs="theora,vorbis"' />
188 <p style="text-align: center;">
190 <a href="http://www.freesbi.ch/fr/illustration/animations">
197 <h2>AFM: Piezo positioning</h2>
199 <img src="media/build/afm-fw-fh.png" />
203 <h2>The piezoelectric effect</h2>
205 <object data="media/perovskite.svg" type="image/svg+xml"
206 width="640" height="350"></object>
208 <p style="text-align: center;">
210 <a href="http://en.wikipedia.org/wiki/File:Perovskite.svg">
217 <h2>AFM: Tubular piezos</h2>
219 <img src="media/build/piezo-fw-fh.png" />
225 <h2>Single molecule force spectroscopy</h2>
227 <img src="media/build/unfolding-fw-fh.png" />
231 <h2>SMFS: Sawtooth curve</h2>
233 <img src="media/build/expt-sawtooth-fw-fh.png" width="640" />
237 <h2>SMFS: What's going on?</h2>
239 <img src="media/build/carrion-vazquez-fig2-fw-fh.png" />
243 <a href="http://dx.doi.org/10.1016/S0079-6107(00)00017-1">
244 Carrion-Vazquez, et al., 2000;
245 adapted from Baljon and Robbins, 1996
251 <h2>SMFS: Unfolding one domain</h2>
253 <img src="media/build/lu-fig1-fw-fh.png" />
257 <a href="http://dx.doi.org/10.1016/S0006-3495(00)76273-4">
258 Lu and Schulten, 2000
266 <h2>Experiment control</h2>
268 <img src="media/build/apparatus-fw-fh.png" />
272 <h2>Control: Quick-and-dirty</h2>
274 <img src="media/build/labview-fw-fh.png" />
278 <h2>Control: Modular stack</h2>
280 <img src="media/build/pyafm-fw-fh.png" />
284 <h2>Open source: Existing layers</h2>
285 <table class="center">
287 <td><img src="media/logo/tux.png" height="150" /></td>
288 <td><object data="media/logo/gnu.svg" type="image/svg+xml"
289 height="150"></object></td>
290 <td><object data="media/logo/gentoo.svg" type="image/svg+xml"
291 height="150"></object></td>
292 <td><object data="media/logo/python.svg" type="image/svg+xml"
293 height="150"></object></td>
294 <td><object data="media/logo/scipy.svg" type="image/svg+xml"
295 height="150"></object></td>
298 <td><a href="https://www.kernel.org/">Linux</a></td>
300 <a href="http://www.gnu.org/">
301 <abbr title="GNU's Not Unix!">GNU</abbr>
304 <td><a href="http://www.gentoo.org/">Gentoo</a></td>
305 <td><a href="http://www.python.org/">Python</a></td>
306 <td><a href="http://www.scipy.org/">SciPy</a></td>
311 <a href="http://www.comedi.org/">
312 <abbr title="Control and Measurement Device Interface">Comedi<abbr>
318 <a href="http://matplotlib.org/">matplotlib</a>
323 <a href="https://github.com/bashwork/pymodbus">pymodbus</a>
328 <a href="http://www.cython.org/">Cython</a>
333 <a href="https://www.numpy.org/">NumPy</a>
340 <a href="http://www.h5py.org/">h5py</a>
343 <td><small>…</small></td>
348 <h2>Open source: Teamwork</h2>
350 <img src="media/build/ants-fw-fh.png" />
352 <p style="text-align: center;">
354 <a href="http://dx.doi.org/10.1073/pnas.1016658108">
355 Mlot, Tovey, and Hu, 2011
361 <h2>Control: Example code</h2>
362 <pre><code data-trim="">
363 class Unfolder (object):
366 """Approach-bind-unfold-save[-plot] cycle.
369 ret['timestamp'] = _email_utils.formatdate(localtime=True)
370 ret['temperature'] = self.afm.get_temperature()
371 ret['approach'] = self._approach()
373 ret['unfold'] = self._unfold()
375 if _package_config['matplotlib']:
381 <h2>Archival: HDF5 and h5config</h2>
382 <!-- h5dump -H 2013-03-04T12-43-38.h5 |
383 grep 'GROUP\|DATASET' | sed 's/ {.*//' -->
385 GROUP <span style="color: blue">"/"</span>
386 GROUP <span style="color: blue">"approach"</span>
388 GROUP <span style="color: blue">"config"</span>
389 GROUP <span style="color: blue">"afm"</span>
391 GROUP <span style="color: blue">"approach"</span>
393 DATASET <span style="color: blue">"bind time"</span>
395 GROUP <span style="color: blue">"unfold"</span>
397 DATASET <span style="color: blue">"velocity"</span>
398 GROUP <span style="color: blue">"environment"</span>
399 DATASET <span style="color: blue">"temperature"</span>
400 DATASET <span style="color: blue">"timestamp"</span>
402 GROUP <span style="color: blue">"unfold"</span>
403 DATASET <span style="color: blue">"deflection"</span>
404 DATASET <span style="color: blue">"frequency"</span>
405 DATASET <span style="color: blue">"z"</span></pre>
408 <h2>Archival: Version control</h2>
410 <span style="color: red">commit 32bfbf98d79c73eba50b77d0917df100e0e33bcf</span>
411 Author: W. Trevor King <wking@tremily.us>
412 Date: Fri Jan 18 22:54:49 2013 -0500
414 afm: Optionally return stepper_approach data with `record_data`
416 Sometimes these approach curves are pretty funky, so I'll start
417 recording them by default in calibcant-calibrate.py.
419 <span style="font-weight: bold">diff --git a/pyafm/afm.py b/pyafm/afm.py
420 index 60741c6..e76b118 100644
422 +++ b/pyafm/afm.py</span>
423 <span style="color: blue">@@ -460,10 +460,11 @@</span> class AFM (object):
427 <span style="color: red">- def stepper_approach(self, target_deflection):</span>
428 <span style="color: green">+ def stepper_approach(self, target_deflection, record_data=None):</span>
434 <h2>Cantilever calibration</h2>
436 <img src="media/build/unfolding-fw-fh.png" />
440 <h2>Calibration: Geometry</h2>
442 <!-- need height to stretch low-resolution pictures -->
443 <img src="media/build/cantilever.jpg" height="272" />
444 <img src="media/build/tip.jpg" height="272" />
446 <p style="text-align: center;">
448 <a href="http://probe.olympus-global.com/en/product/omcl_tr800psa_w/">
451 <a href="http://www.asylumresearch.com/Probe/TR400PSA,Olympus">
455 <a href="http://probe.olympus-global.com/en/product/omcl_tr400psa_hw/">
462 <h2>Calibration: Equipartition</h2>
464 For a damped harmonic oscillator
469 - \gamma \frac{\mathrm{d}\! x_c}{\mathrm{d}\! t}
471 = m\frac{\mathrm{d}^2\! x}{\mathrm{d}\! t^2} \;,
475 the energy in each degree of freedom is $\frac{1}{2}k_B
480 \frac{1}{2} \kappa \left\langle x_c^2 \right\rangle = \frac{1}{2}k_B T \;,
484 where $k_B$ is Boltzmann's constant and $T$ is the
489 <h2>Calibration: Vibration</h2>
491 <img src="media/build/vibration-fw-fh.png" width="620" />
495 <h2>Calibration: Photodiode calibration</h2>
497 <img src="media/build/bump-fw-fh.png" />
501 <h2>Calibration: Results</h2>
505 T &= 298.15 \pm 0.03 \; \text{K} &
506 \sigma_p &= 35.7 \pm 0.9 \; \text{mV/nm} \\
507 \left\langle V_p^2 \right\rangle &= 97 \pm 1 \; \text{mV}^2 &
508 \sqrt{\left\langle x_c^2 \right\rangle}
509 &= \sqrt{\frac{\left\langle V_p^2 \right\rangle}{\sigma_p^2}}
510 = 0.28 \; \text{nm} \\
511 \kappa &= \frac{k_B T \sigma_p^2}{\left\langle V_p^2 \right\rangle}
512 = 54 \pm 3 \; \text{pN/nm}
518 <h2>Calibration: Stability</h2>
519 <table class="center">
525 <!-- 2013-03-03T16-37-12 -->
526 <th colspan="2" style="text-align: center">Day 1</th>
528 <!-- 2013-03-04T12-21-54 -->
529 <th colspan="2" style="text-align: center">Day 2</th>
547 <td> 46.2</td>
550 <td> 41.3</td>
554 <td>$\left\langle V_p^2 \right\rangle$</td>
577 <h2>Calibration: Inconsistency</h2>
578 <table class="center">
580 <td style="vertical-align: middle;">
581 <img src="media/build/florin-fig2-hw-fh.png" />
583 <td style="vertical-align: middle;">
584 <img src="media/build/vibration-hw-fh.png" />
588 <p style="text-align: center;">
590 <a href="http://dx.doi.org/10.1016/0896-6273(88)90139-0">
591 Florin, Rief, Lehmann, et al., 1995
599 <h2>Monte Carlo unfolding simulations</h2>
600 <table class="center">
602 <td rowspan="2" style="vertical-align: middle;">
603 <img src="media/build/unfolding-fw-fh.png" />
605 <td style="vertical-align: top;">
606 <img src="media/build/expt-sawtooth-hw-hh.png" />
610 <td><img src="media/build/pbs-hist-hw-hh.png" /></td>
615 <h2>Sawsim: State model</h2>
617 <img src="media/build/unfolding-hw-fh.png"
618 style="vertical-align: middle;">
619 <img src="media/build/sawsim-states-hw-fh.png"
620 style="vertical-align: middle;">
624 <h2>Sawsim: Simulation loop</h2>
626 <li>Calculate piezo-induced gap $x_t(t)=v t$</li>
628 Find tension model parameters for each state
631 Distribute per-state stretching ($x_c$, $x_u$, …) to
635 Calculate the transition rates between states
638 Roll the dice to determine if transitions take
639 place as you step forward in time
644 <h2>Sawsim: Monte Carlo</h2>
646 <img src="media/build/monte-carlo-fw-fh.png" />
650 <h2>Sawsim: Unfolding models</h2>
651 <table class="center">
653 <td style="text-align: center;">
654 <img src="media/build/unfolding-hw-hh.png"
655 style="vertical-align: middle;">
658 <img src="media/build/landscape-hw-hh.png"
659 style="vertical-align: middle;">
663 <td style="text-align: center;">
664 <img src="media/build/sawsim-states-hw-hh.png"
665 style="vertical-align: middle;">
668 <img src="media/build/landscape-bell-hw-hh.png"
669 style="vertical-align: middle;">
675 <h2>Sawsim: Kramers' model</h2>
680 \int_{-\infty}^{\infty} \mathrm{d}\! x \;
681 e^{\frac{U_F(x)}{k_B T}}
682 \int_{-\infty}^{x} \mathrm{d}\! x' \;
683 e^{\frac{-U_F(x')}{k_B T}}
687 <img src="media/build/landscape-hw-hh.png"
688 style="vertical-align: middle;">
689 <img src="media/build/kramers-integrand-hw-hh.png"
690 style="vertical-align: middle;">
694 <h2>Sawsim: Tension models</h2>
695 <table class="center">
697 <td style="text-align: center;">
698 <img src="media/build/unfolding-hw-hh.png"
699 style="vertical-align: middle;">
701 <td rowspan="2" style="vertical-align: middle;">
702 <img src="media/build/wlc-model-hw-fh.png">
704 <td rowspan="2" style="vertical-align: middle;">
705 <img src="media/build/fjc-model-hw-fh.png">
709 <td style="text-align: center;">
710 <img src="media/build/sawsim-states-hw-hh.png"
711 style="vertical-align: middle;">
717 <h2>Sawsim: Fitting models</h2>
719 <img src="media/build/fit-valley-fw-fh.png" />
725 <h2>Sawsim: Salt</h2>
727 <img src="media/build/lu-fig1-fw-fh.png" />
729 <p style="text-align: center;">
731 <a href="http://dx.doi.org/10.1016/S0006-3495(00)76273-4">
732 Lu and Schulten, 2000
738 <h2>Sawsim: Glutamic acid</h2>
740 <img src="media/build/1TIT-hbond-fw-fh.png" />
746 <p style="text-align: center;">
747 Written with <a href="http://lab.hakim.se/reveal-js/">reveal.js</a>
752 <script src="lib/js/head.min.js"></script>
753 <script src="js/reveal.min.js"></script>
755 // Full list of configuration options available here:
756 // https://github.com/hakimel/reveal.js#configuration
762 theme: Reveal.getQueryHash().theme, // available themes are in /css/theme
763 transition: Reveal.getQueryHash().transition || 'none', // default/cube/page/concave/zoom/linear/fade/none
764 // Optional libraries used to extend on reveal.js
766 { src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } },
767 { src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
768 { src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
769 { src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
770 { src: 'plugin/zoom-js/zoom.js', async: true, condition: function() { return !!document.body.classList; } },
771 { src: 'plugin/notes/notes.js', async: true, condition: function() { return !!document.body.classList; } }
772 // { src: 'plugin/search/search.js', async: true, condition: function() { return !!document.body.classList; } }
773 // { src: 'plugin/remotes/remotes.js', async: true, condition: function() { return !!document.body.classList; } }