From 840862d7123f9b60e3cc9ba955d6188167be6f3a Mon Sep 17 00:00:00 2001 From: "W. Trevor King" Date: Tue, 21 May 2013 20:10:22 -0400 Subject: [PATCH] index.html.itex: Convert index.html to itex2MML-generated source For easy math inclusion. Also fill in the bulk of my talk, up to the salt stuff. All of the figure generation is handled by the Makefile, just run `make` and point your browser at the generated index.html. --- Makefile | 135 +++++++++ css/local.css | 4 + index.html | 366 ----------------------- index.html.itex | 780 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 919 insertions(+), 366 deletions(-) create mode 100644 Makefile create mode 100644 css/local.css delete mode 100644 index.html create mode 100644 index.html.itex diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..ddc0149 --- /dev/null +++ b/Makefile @@ -0,0 +1,135 @@ +SRC = media/src +DEST = media/build + +# full-sized image dimensions +WIDTH = 960 +HEIGHT = 480 + +HALF_WIDTH = 480 +HALF_HEIGHT = 240 + +THIRD_WIDTH = 320 +THIRD_HEIGHT = 160 + +THUMBNAILS = \ + $(DEST)/1TIT-atoms.mp4 \ + $(DEST)/takamori-fig4b-fw-fh.png \ + $(DEST)/skeletal-muscle-fw-fh.png \ + $(DEST)/titin-fw-fh.png \ + $(DEST)/1TIT-fw-fh.png \ + $(DEST)/1TIT-tw-th.png \ + $(DEST)/pirchi-fig1-fw-hh.png \ + $(DEST)/afm-3d-fw-fh.png \ + $(DEST)/contact-afm.ogv \ + $(DEST)/afm-fw-fh.png \ + $(DEST)/piezo-fw-fh.png \ + $(DEST)/unfolding-fw-fh.png \ + $(DEST)/unfolding-hw-fh.png \ + $(DEST)/unfolding-hw-hh.png \ + $(DEST)/expt-sawtooth-fw-fh.png \ + $(DEST)/expt-sawtooth-hw-hh.png \ + $(DEST)/carrion-vazquez-fig2-fw-fh.png \ + $(DEST)/lu-fig1-fw-fh.png \ + $(DEST)/apparatus-fw-fh.png \ + $(DEST)/labview-fw-fh.png \ + $(DEST)/pyafm-fw-fh.png \ + $(DEST)/ants-fw-fh.png \ + $(DEST)/cantilever.jpg \ + $(DEST)/tip.jpg \ + $(DEST)/vibration-fw-fh.png \ + $(DEST)/vibration-hw-fh.png \ + $(DEST)/bump-fw-fh.png \ + $(DEST)/florin-fig2-hw-fh.png \ + $(DEST)/pbs-hist-hw-hh.png \ + $(DEST)/sawsim-states-hw-fh.png \ + $(DEST)/sawsim-states-hw-hh.png \ + $(DEST)/monte-carlo-fw-fh.png \ + $(DEST)/landscape-hw-hh.png \ + $(DEST)/landscape-hw-fh.png \ + $(DEST)/landscape-bell-hw-hh.png \ + $(DEST)/kramers-integrand-hw-hh.png \ + $(DEST)/wlc-model-hw-fh.png \ + $(DEST)/fjc-model-hw-fh.png \ + $(DEST)/fit-valley-fw-fh.png \ + $(DEST)/1TIT-hbond-fw-fh.png + +# $(DEST)/landscape-cant-hw-hh.png + +.PRECIOUS: $(DEST)/% $(DEST)/%.png $(DEST)/%.pdf + +all: index.html $(THUMBNAILS) + +clean: + rm -f index.html $(DEST)/* $(SRC)/pymol/*-0*.png + +%: %.itex + itex2MML < "$(<)" > "$(@)" + +## Get the high-resolution source into PNG format + +# plain copy +$(DEST)/%: $(SRC)/binary/% + cp "$(<)" "$(@)" + +# TODO: re-render and crop? +$(DEST)/%: $(SRC)/matplotlib/% + cp "$(<)" "$(@)" + +# TODO: re-render and crop? +$(DEST)/%: $(SRC)/tikz/% + cp "$(<)" "$(@)" + +# TODO: extract from the VI? (probably not ;) +$(DEST)/%: $(SRC)/labview/% + cp "$(<)" "$(@)" + +# convert JPEGs +$(DEST)/%.png: $(SRC)/binary/%.jpg + convert "$(<)" "$(@)" + +# convert PDFs +$(DEST)/%.png: $(SRC)/binary/%.pdf + convert -density 350 "$(<)" "$(@)" + +# compile Asymptote graphics +$(DEST)/%.pdf: $(SRC)/asy/%.asy + asy -noprc -render=0 -f pdf -cd "$( - - - - - - reveal.js - The HTML Presentation Framework - - - - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-

Reveal.js

-

HTML Presentations Made Easy

-

- Created by Hakim El Hattab / @hakimel -

-
- -
-

Heads Up

-

- reveal.js is a framework for easily creating beautiful presentations using HTML. You'll need a browser with - support for CSS 3D transforms to see it in its full glory. -

- - -
- - -
-
-

Vertical Slides

-

- Slides can be nested inside of other slides, - try pressing down. -

- - Down arrow - -
-
-

Basement Level 1

-

Press down or up to navigate.

-
-
-

Basement Level 2

-

Cornify

- - Unicorn - -
-
-

Basement Level 3

-

That's it, time to go back up.

- - Up arrow - -
-
- -
-

Slides

-

- Not a coder? No problem. There's a fully-featured visual editor for authoring these, try it out at http://slid.es. -

-
- -
-

Point of View

-

- Press ESC to enter the slide overview. -

-

- Hold down alt and click on any element to zoom in on it using zoom.js. Alt + click anywhere to zoom back out. -

-
- -
-

Works in Mobile Safari

-

- Try it out! You can swipe through the slides and pinch your way to the overview. -

-
- -
-

Marvelous Unordered List

-
    -
  • No order here
  • -
  • Or here
  • -
  • Or here
  • -
  • Or here
  • -
-
- -
-

Fantastic Ordered List

-
    -
  1. One is smaller than...
  2. -
  3. Two is smaller than...
  4. -
  5. Three!
  6. -
-
- -
- -
- -
-

Transition Styles

-

- You can select from different transitions, like:
- Cube - - Page - - Concave - - Zoom - - Linear - - Fade - - None - - Default -

-
- -
-

Themes

-

- Reveal.js comes with a few themes built in:
- Sky - - Beige - - Simple - - Serif - - Night - - Default -

-

- - * Theme demos are loaded after the presentation which leads to flicker. In production you should load your theme in the <head> using a <link>. - -

-
- -
-
-

Global State

-

- Set data-state="something" on a slide and "something" - will be added as a class to the document element when the slide is open. This lets you - apply broader style changes, like switching the background. -

- - Down arrow - -
-
-

"blackout"

- - Down arrow - -
-
-

"soothe"

- - Up arrow - -
-
- -
-

Custom Events

-

- Additionally custom events can be triggered on a per slide basis by binding to the data-state name. -

-

-Reveal.addEventListener( 'customevent', function() {
-	console.log( '"customevent" has fired' );
-} );
-					
-
- -
-

Clever Quotes

-

- These guys come in two forms, inline: - “The nice thing about standards is that there are so many to choose from” and block: -

-
- “For years there has been a theory that millions of monkeys typing at random on millions of typewriters would - reproduce the entire works of Shakespeare. The Internet has proven this theory to be untrue.” -
-
- -
-

Pretty Code

-

-function linkify( selector ) {
-  if( supports3DTransforms ) {
-
-    var nodes = document.querySelectorAll( selector );
-
-    for( var i = 0, len = nodes.length; i < len; i++ ) {
-      var node = nodes[i];
-
-      if( !node.className ) ) {
-        node.className += ' roll';
-      }
-    };
-  }
-}
-					
-

Courtesy of highlight.js.

-
- -
-

Intergalactic Interconnections

-

- You can link between slides internally, - like this. -

-
- -
-
-

Fragmented Views

-

Hit the next arrow...

-

... to step through ...

-
    -
  1. any type
  2. -
  3. of view
  4. -
  5. fragments
  6. -
- - -
-
-

Fragment Styles

-

There's a few styles of fragments, like:

-

grow

-

shrink

-

roll-in

-

fade-out

-

highlight-red

-

highlight-green

-

highlight-blue

-
-
- -
-

Spectacular image!

- - Meny - -
- -
-

Export to PDF

-

Presentations can be exported to PDF, below is an example that's been uploaded to SlideShare.

- - -
- -
-

Take a Moment

-

- Press b or period on your keyboard to enter the 'paused' mode. This mode is helpful when you want to take distracting slides off the screen - during a presentation. -

-
- -
-

Stellar Links

- -
- -
-

THE END

-

BY Hakim El Hattab / hakim.se

-
- -
- -
- - - - - - - - diff --git a/index.html.itex b/index.html.itex new file mode 100644 index 0000000..b5152d9 --- /dev/null +++ b/index.html.itex @@ -0,0 +1,780 @@ + + + + + + + Open source single molecule force spectroscopy + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+

Open source
single molecule
force spectroscopy

+

Protein unfolding in varying salt concentrations

+

+ Trevor King +

+
+
+
+

Proteins: What are they?

+

+ + +

+
+
+

Proteins: Where are they?

+

+ +

+

+ + + Takamori, Holt, Stenius, et al., 2006 + + +

+
+
+

Proteins: Titin

+

+ +

+

+ + Adapted from + + Wikipedia + + +

+
+
+

Proteins: Titin's I27

+

+ +

+

+ + + U. Illinois Biophysics Group + + +

+
+
+

Proteins: I27

+

+ +

+

+ + + PDB structure 1TIT + + +

+
+
+

Proteins: What's the problem?

+ + + + + + + + + +
+
+MHHHHHHSSLIEV
+EKPLYGVEVFVGE
+TAHFEIELSEPDV
+HGQWKLKGQPLTA
+SPDCEIIEDGKKH
+ILILHNCQLGMTG
+EVSFQAANAKSAA
+NLKVKEL
+

  →  

+ +
+

+ +

+

+ + + Pirchi, Ziv, Riven, et al., 2011 + + +

+
+
+
+
+
+

Atomic force microscopy

+

+ +

+
+
+

AFM: Cantilever geometry

+

+ + + +

+

+ + + Olympus TR800PSA + , images from + + Asylum Research +
+ We use the thinner + + TR400PSA + +
+

+
+
+

AFM: Laser deflection

+

+ +

+

+ + + Charles Roduit + + +

+
+
+

AFM: Piezo positioning

+

+ +

+
+
+

The piezoelectric effect

+

+ +

+

+ + + Wikipedia + + +

+
+
+

AFM: Tubular piezos

+

+ +

+
+
+
+
+

Single molecule force spectroscopy

+

+ +

+
+
+

SMFS: Sawtooth curve

+

+ +

+
+
+

SMFS: What's going on?

+

+ +

+

+ + + Carrion-Vazquez, et al., 2000; + adapted from Baljon and Robbins, 1996 + + +

+
+
+

SMFS: Unfolding one domain

+

+ +

+

+ + + Lu and Schulten, 2000 + + +

+
+
+
+
+

Experiment control

+

+ +

+
+
+

Control: Quick-and-dirty

+

+ +

+
+
+

Control: Modular stack

+

+ +

+
+
+

Open source: Existing layers

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Linux + + GNU + + GentooPythonSciPy
+ + + Comedi + + + + + matplotlib + + + + pymodbus + + + + Cython + + + + NumPy + +
+ + h5py + + …
+
+
+

Open source: Teamwork

+

+ +

+

+ + + Mlot, Tovey, and Hu, 2011 + + +

+
+
+

Control: Example code

+

+class Unfolder (object):
+    …
+    def run(self):
+        """Approach-bind-unfold-save[-plot] cycle.
+        """
+        ret = {}
+        ret['timestamp'] = _email_utils.formatdate(localtime=True)
+        ret['temperature'] = self.afm.get_temperature()
+        ret['approach'] = self._approach()
+        self._bind()
+        ret['unfold'] = self._unfold()
+        self._save(**ret)
+        if _package_config['matplotlib']:
+            self._plot(**ret)
+        return ret
+						
+
+
+

Archival: HDF5 and h5config

+ +
+GROUP "/"
+   GROUP "approach"
+      …
+   GROUP "config"
+      GROUP "afm"
+         …
+      GROUP "approach"
+         …
+      DATASET "bind time"
+      …
+      GROUP "unfold"
+         …
+         DATASET "velocity"
+   GROUP "environment"
+      DATASET "temperature"
+      DATASET "timestamp"
+      …
+   GROUP "unfold"
+      DATASET "deflection"
+      DATASET "frequency"
+      DATASET "z"
+
+
+

Archival: Version control

+
+commit 32bfbf98d79c73eba50b77d0917df100e0e33bcf
+Author: W. Trevor King <wking@tremily.us>
+Date:   Fri Jan 18 22:54:49 2013 -0500
+
+    afm: Optionally return stepper_approach data with `record_data`
+
+    Sometimes these approach curves are pretty funky, so I'll start
+    recording them by default in calibcant-calibrate.py.
+
+diff --git a/pyafm/afm.py b/pyafm/afm.py
+index 60741c6..e76b118 100644
+--- a/pyafm/afm.py
++++ b/pyafm/afm.py
+@@ -460,10 +460,11 @@ class AFM (object):
+         _LOG.warn(e)
+         raise e
+
+-    def stepper_approach(self, target_deflection):
++    def stepper_approach(self, target_deflection, record_data=None):
+…
+
+
+
+
+

Cantilever calibration

+

+ +

+
+
+

Calibration: Geometry

+

+ + + +

+

+ + + Olympus TR800PSA + , images from + + Asylum Research +
+ We use the thinner + + TR400PSA + +
+

+
+
+

Calibration: Equipartition

+

+ For a damped harmonic oscillator +

+ +\[ + -\kappa x_c + - \gamma \frac{\mathrm{d}\! x_c}{\mathrm{d}\! t} + + F_\text{ext}(t) + = m\frac{\mathrm{d}^2\! x}{\mathrm{d}\! t^2} \;, +\] + +

+ the energy in each degree of freedom is $\frac{1}{2}k_B + T$. +

+ +\[ + \frac{1}{2} \kappa \left\langle x_c^2 \right\rangle = \frac{1}{2}k_B T \;, +\] + +

+ where $k_B$ is Boltzmann's constant and $T$ is the + temperature. +

+
+
+

Calibration: Vibration

+

+ +

+
+
+

Calibration: Photodiode calibration

+

+ +

+
+
+

Calibration: Results

+ +\[ +\begin{aligned} + T &= 298.15 \pm 0.03 \; \text{K} & + \sigma_p &= 35.7 \pm 0.9 \; \text{mV/nm} \\ + \left\langle V_p^2 \right\rangle &= 97 \pm 1 \; \text{mV}^2 & + \sqrt{\left\langle x_c^2 \right\rangle} + &= \sqrt{\frac{\left\langle V_p^2 \right\rangle}{\sigma_p^2}} + = 0.28 \; \text{nm} \\ + \kappa &= \frac{k_B T \sigma_p^2}{\left\langle V_p^2 \right\rangle} + = 54 \pm 3 \; \text{pN/nm} +\end{aligned} +\] + +
+
+

Calibration: Stability

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Quant.Units Day 1 Day 2
$T$K296.30±0.02294.27±0.02
$\sigma_p$mV/nm 46.2±0.8 41.3±0.2
$\left\langle V_p^2 \right\rangle$mV$^2$108±1105±2
$\kappa$pN/nm 67±2 66±2
+
+
+

Calibration: Inconsistency

+ + + + + +
+ + + +
+

+ + + Florin, Rief, Lehmann, et al., 1995 + + +

+
+
+
+
+

Monte Carlo unfolding simulations

+ + + + + + + + +
+ + + +
+
+
+

Sawsim: State model

+

+ + +

+
+
+

Sawsim: Simulation loop

+
    +
  1. Calculate piezo-induced gap $x_t(t)=v t$
  2. +
  3. + Find tension model parameters for each state +
  4. +
  5. + Distribute per-state stretching ($x_c$, $x_u$, …) to + balance the tension +
  6. +
  7. + Calculate the transition rates between states +
  8. +
  9. + Roll the dice to determine if transitions take + place as you step forward in time +
  10. +
+
+
+

Sawsim: Monte Carlo

+

+ +

+
+
+

Sawsim: Unfolding models

+ + + + + + + + + +
+ + + +
+ + + +
+
+
+

Sawsim: Kramers' model

+ +\[ + \frac{1}{k_u} + = \frac{1}{D} + \int_{-\infty}^{\infty} \mathrm{d}\! x \; + e^{\frac{U_F(x)}{k_B T}} + \int_{-\infty}^{x} \mathrm{d}\! x' \; + e^{\frac{-U_F(x')}{k_B T}} +\] + +

+ + +

+
+
+

Sawsim: Tension models

+ + + + + + + + + +
+ + + + + +
+ +
+
+
+

Sawsim: Fitting models

+

+ +

+
+
+
+
+

Sawsim: Salt

+

+ +

+

+ + + Lu and Schulten, 2000 + + +

+
+
+

Sawsim: Glutamic acid

+

+ +

+
+
+
+

THE END

+

+ Written with reveal.js +

+
+
+
+ + + + + + -- 2.26.2