Fix sawsim_paper link syntax in open source force spectroscopy post.
[blog.git] / posts / Open_source_force_spectroscopy.mdwn
1 There are a number of open source packages dealing with aspects of
2 [[single-molecule force spectroscopy|force_spectroscopy]].  Here's a
3 list of everything I've heard about to date.
4
5 <table>
6         <thead>
7     <tr><th>Package</th><th>License</th><th>Purpose</th></tr>
8   </thead>
9   <tbody>
10     <tr><td>calibcant</td><td>GPL v3+</td>
11         <td>Cantilever thermal calibration</td></tr>
12     <tr><td>fs_kit</td><td>GPL v2+</td>
13         <td>Force spectra analysis pattern recognition</td></tr>
14     <tr><td>Hooke</td><td>LGPL v3+</td>
15         <td>Force spectra analysis and unfolding force extraction</td></tr>
16     <tr><td>sawsim</td><td>GPL v3+</td>
17         <td>Monte Carlo unfolding/refolding simulation and fitting</td></tr>
18     <tr><td>refolding</td><td>Apache v2.0</td>
19         <td>Double-pulse experiment control and analysis</td></tr>
20   </tbody>
21 </table>
22
23 calibcant
24 =========
25
26 [[Calibcant]] is my [[Python]] module for AFM cantilever calibration
27 via the thermal tune method.  It's based on [[Comedi]], so it needs
28 work if you want to use it on a non-Linux system.  If you're running a
29 Linux kernel, it should be pretty easy to get it running on your
30 system.  Email me if there's any way I can help set it up for your
31 lab.
32
33 fs_kit
34 ======
35
36 [fs_kit][] is a package for force spectra analysis pattern
37 recognition.  It was developed by Michael Kuhn and Maurice Hubain at
38 Daniel Müller's lab when they were at TU Dresden
39 ([paper][fs_kit_paper]).  It has an [[Igor]] interface, but the bulk
40 of the project is in [[C++]] with a [wxWidgets][] interface.  fs_kit
41 is versioned in CVS at `bioinformatics.org`, and you can check out
42 their code with:
43
44     $ cvs -d:pserver:anonymous@bioinformatics.org:/cvsroot checkout fskit
45
46 The last commit was on 2005/05/16, so it's a bit crusty.  I patched
47 things up back in 2008 so it would compile again,
48
49 [[!inline pages="./Open_source_force_spectroscopy/*.patch"
50   sort="title" archive=yes quick=yes]]
51
52 but when I emailed Michael with the patches I got this:
53
54     On Thu, Oct 23, 2008 at 11:21:42PM +0200, Michael Kuhn wrote:
55     > Hi Trevor,
56     >
57     > I'm glad you could fix fs-kit, the project is otherwise pretty dead,
58     > as was the link. I found an old file which should be the tutorial,
59     > hopefully in the latest version. The PDF is probably lost.
60     >
61     > bw, Michael
62
63 So, it's a bit of a fixer-upper, but it was the first open source
64 package in this field that I know of.  I've put up a [[PDF
65 version|fs_kit_tutorial.pdf]] of the tutorial Michael sent me in case
66 you're interested.
67
68 Hooke
69 =====
70
71 [Hooke][] is a force spectroscopy data analysis package written in
72 [[Python]].  It was initially developed by Massimo Sandal, Fabrizio
73 Benedetti, Marco Brucale, Alberto Gomez-Casado while at Bruno Samorì's
74 lab at U Bologna ([paper][hooke_paper]; surprisingly, there are
75 commits by all of the authors except Samorì himself).  Hooke provides
76 the interface between your raw data and theory.  It has a drivers for
77 reading most force spectroscopy file formats, and a large number of
78 commands for manipulating and analyzing the data.
79
80 I liked Hooke so much I threw out my already-written package that had
81 been performing a similar role and proceeded to work over Hooke to
82 merge together the diverging command-line and GUI forks.
83 Unfortunately, my fork has not yet been merged back in as the main
84 branch, but I'm optimistic that it will eventually.  The homepage for
85 my branch is [[here|Hooke]].
86
87 sawsim
88 ======
89
90 While programs like Hooke can extract unfolding forces from
91 velocity-clamp experiments, the unfolding force histograms are
92 generally compared to simulated data to estimate the underlying
93 kinetic parameters.  [[Sawsim]] is my package for performing such
94 simulations and fitting them to the experimental histograms
95 ([paper][sawsim_paper]).  The single-pull simulator is written in
96 [[C]], and there is a nice [[Python]] wrapper that manages the
97 thousands of simulated pulls needed to explore the possible model
98 parameter space.  The whole package ends up being pretty fast,
99 flexible, and convenient.
100
101 refolding
102 =========
103
104 [Refolding][refolding] is a suite for performing and analyzing
105 double-pulse refolding experiments.  It was initially developed by
106 Daniel Aioanei, also at the Samorí lab in Bologna (these guys are
107 great!). The experiment-driver is mostly written in [[Java]] with the
108 analysis code in [[Python]].  The driver is curious; it uses the
109 NanoScope scripting interface to drive the experiment *through* the
110 NanoScope software by impersonating a mouse-wielding user (like
111 [Selenium][] does for web browsers).  See the `RobotNanoDriver.java`
112 code for details.
113
114 [fs_kit]: http://fskit.blogspot.com/
115 [fs_kit_paper]: http://dx.doi.org/10.1111/j.1365-2818.2005.01478.x
116 [wxWidgets]: http://www.wxwidgets.org/
117 [Hooke]: http://code.google.com/p/hooke/
118 [Hooke_paper]: http://dx.doi.org/10.1093/bioinformatics/btp180
119 [sawsim_paper]: http://dx.doi.org/10.1016/j.ijbiomac.2009.12.001
120 [refolding]: http://code.google.com/p/refolding/
121 [refolding_paper]: http://dx.doi.org/10.1093/bioinformatics/btq663
122 [Selenium]: http://seleniumhq.org/
123
124 [[!tag tags/programming]]
125 [[!tag tags/theory]]