mkogg.py: Fix 'self.get_mp4_metadata(self, source)'
[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 (for more details on
4 calibcant, Hooke, and sawsim, see my [[thesis|Thesis]]).
5
6 <table>
7         <thead>
8     <tr><th>Package</th><th>License</th><th>Purpose</th></tr>
9   </thead>
10   <tbody>
11     <tr><td>calibcant</td><td>GPL v3+</td>
12         <td>Cantilever thermal calibration</td></tr>
13     <tr><td>fs_kit</td><td>GPL v2+</td>
14         <td>Force spectra analysis pattern recognition</td></tr>
15     <tr><td>Hooke</td><td>LGPL v3+</td>
16         <td>Force spectra analysis and unfolding force extraction</td></tr>
17     <tr><td>sawsim</td><td>GPL v3+</td>
18         <td>Monte Carlo unfolding/refolding simulation and fitting</td></tr>
19     <tr><td>refolding</td><td>Apache v2.0</td>
20         <td>Double-pulse experiment control and analysis</td></tr>
21   </tbody>
22 </table>
23
24 calibcant
25 =========
26
27 [[Calibcant]] is my [[Python]] module for AFM cantilever calibration
28 via the thermal tune method.  It's based on [[Comedi]], so it needs
29 work if you want to use it on a non-Linux system.  If you're running a
30 Linux kernel, it should be pretty easy to get it running on your
31 system.  Email me if there's any way I can help set it up for your
32 lab.
33
34 fs_kit
35 ======
36
37 [fs_kit][] is a package for force spectra analysis pattern
38 recognition.  It was developed by Michael Kuhn and Maurice Hubain at
39 Daniel Müller's lab when they were at TU Dresden
40 ([paper][fs_kit_paper]).  It has an [[Igor]] interface, but the bulk
41 of the project is in [[C++]] with a [wxWidgets][] interface.  fs_kit
42 is versioned in CVS at `bioinformatics.org`, and you can check out
43 their code with:
44
45     $ cvs -d:pserver:anonymous@bioinformatics.org:/cvsroot checkout fskit
46
47 The last commit was on 2005/05/16, so it's a bit crusty.  I patched
48 things up back in 2008 so it would compile again,
49
50 [[!inline pages="./Open_source_force_spectroscopy/*.patch"
51   sort="title" archive=yes quick=yes]]
52
53 but when I emailed Michael with the patches I got this:
54
55     On Thu, Oct 23, 2008 at 11:21:42PM +0200, Michael Kuhn wrote:
56     > Hi Trevor,
57     >
58     > I'm glad you could fix fs-kit, the project is otherwise pretty dead,
59     > as was the link. I found an old file which should be the tutorial,
60     > hopefully in the latest version. The PDF is probably lost.
61     >
62     > bw, Michael
63
64 So, it's a bit of a fixer-upper, but it was the first open source
65 package in this field that I know of.  I've put up a [[PDF
66 version|fs_kit_tutorial.pdf]] of the tutorial Michael sent me in case
67 you're interested.
68
69 Hooke
70 =====
71
72 [Hooke][] is a force spectroscopy data analysis package written in
73 [[Python]].  It was initially developed by Massimo Sandal, Fabrizio
74 Benedetti, Marco Brucale, Alberto Gomez-Casado while at Bruno Samorì's
75 lab at U Bologna ([paper][hooke_paper]; surprisingly, there are
76 commits by all of the authors except Samorì himself).  Hooke provides
77 the interface between your raw data and theory.  It has a drivers for
78 reading most force spectroscopy file formats, and a large number of
79 commands for manipulating and analyzing the data.
80
81 I liked Hooke so much I threw out my already-written package that had
82 been performing a similar role and proceeded to work over Hooke to
83 merge together the diverging command-line and GUI forks.
84 Unfortunately, my fork has not yet been merged back in as the main
85 branch, but I'm optimistic that it will eventually.  The homepage for
86 my branch is [[here|Hooke]].
87
88 sawsim
89 ======
90
91 While programs like Hooke can extract unfolding forces from
92 velocity-clamp experiments, the unfolding force histograms are
93 generally compared to simulated data to estimate the underlying
94 kinetic parameters.  [[Sawsim]] is my package for performing such
95 simulations and fitting them to the experimental histograms
96 ([paper][sawsim_paper]).  The single-pull simulator is written in
97 [[C]], and there is a nice [[Python]] wrapper that manages the
98 thousands of simulated pulls needed to explore the possible model
99 parameter space.  The whole package ends up being pretty fast,
100 flexible, and convenient.
101
102 refolding
103 =========
104
105 [Refolding][refolding] is a suite for performing and analyzing
106 double-pulse refolding experiments.  It was initially developed by
107 Daniel Aioanei, also at the Samorí lab in Bologna (these guys are
108 great!). The experiment-driver is mostly written in [[Java]] with the
109 analysis code in [[Python]].  The driver is curious; it uses the
110 NanoScope scripting interface to drive the experiment *through* the
111 NanoScope software by impersonating a mouse-wielding user (like
112 [Selenium][] does for web browsers).  See the `RobotNanoDriver.java`
113 code for details.  There is also [support for automatic velocity clamp
114 analysis][refolding-vclamp].
115
116 The official paper for the project is by [Aioanei][].  The earlier
117 paper by [Materassi][] may be related, but Aioanei doesn't cite it in
118 his paper, and Materassi doesn't give a URL for his code.
119
120 Hardware
121 ========
122
123 Nice software doesn't do you much good if you don't have the hardware
124 to control.  There are a number of quasi-open hardware solutions for
125 building your own AFM (and other types of scanning probe microscopes).
126 There's [a good list on opencircuits][opencircuits].  Interesting
127 projects include:
128
129 * Glenn Durden's [STM][GD] (1992–1998)
130 * Jim Rice's [Homebrew STM][JR] (1995)
131 * The Peddie School's [STM Project][PS] (1997–2002)
132 * Jürgen Müller's [home-built STMs][JM] (1999–2006)
133 * John D. Alexander's [STM Project][JDA] (2000–2003)
134 * The Münster Interface Physics Group's [SXM Project][MIPG] (free
135   except for commercial use, 2000–2005).
136 * Joseph Gatt's [Amateur STM][JG] (2003)
137 * Maxim Shusteff's [AFM for the instructional laboratory][MS] (2006)
138 * Dominik, Ivan, and Sandro's [STM-DIY project][DIS] (2009)
139
140 Other software
141 ==============
142
143 The [Gnome X Scanning Miscroscopy (GXSM)][GXSM] project provides GPL
144 software to perform standard SPM imaging.  The list of supported
145 hardware is currently limited to the SignalRanger series by SoftdB,
146 via GXSM-specific kernel modules like `sranger-mk23-dkms`.  There is
147 an obsolete [[Comedi]] driver for GXSM that Percy Zahl wrote back in
148 1999, but [it has been deprecated][issue1649579] since at least 2007.
149
150 [fs_kit]: http://fskit.blogspot.com/
151 [fs_kit_paper]: http://dx.doi.org/10.1111/j.1365-2818.2005.01478.x
152 [wxWidgets]: http://www.wxwidgets.org/
153 [Hooke]: http://code.google.com/p/hooke/
154 [Hooke_paper]: http://dx.doi.org/10.1093/bioinformatics/btp180
155 [sawsim_paper]: http://dx.doi.org/10.1016/j.ijbiomac.2009.12.001
156 [refolding]: http://code.google.com/p/refolding/
157 [refolding_paper]: http://dx.doi.org/10.1093/bioinformatics/btq663
158 [Selenium]: http://seleniumhq.org/
159 [refolding-vclamp]: http://code.google.com/p/refolding/wiki/BatchApproachRetractionAnalysis
160 [Aioanei]: http://dx.doi.org/10.1093/bioinformatics/btq663
161 [Materassi]: http://dx.doi.org/10.1063/1.3194046
162 [opencircuits]: http://www.opencircuits.com/Atomic_microscope
163 [GD]: http://web.archive.org/web/20010810000325/http://nemesis.com.au/alfa/mystm.htm
164 [JR]: http://web.archive.org/web/20010210003357/http://atom.snu.ac.kr/stmwebpage.html
165 [PS]: http://web.archive.org/web/20021219052018/http://www.peddie.k12.nj.us/Research/STMProject/e.html
166 [JM]: http://www.e-basteln.de/
167 [JDA]: http://www.geocities.com/spm_stm/Project.html
168 [MIPG]: http://sxm4.uni-muenster.de/
169 [JG]: http://www.angelfire.com/electronic2/spm/
170 [MS]: http://www.media.mit.edu/nanoscale/courses/AFMsite/
171 [DIS]: http://www.stm-diy.ch/
172 [GXSM]: http://gxsm.sourceforge.net/
173 [issue1649579]: http://sourceforge.net/tracker/?func=detail&aid=1649579&group_id=12992&atid=479639
174
175 [[!tag tags/programming]]
176 [[!tag tags/theory]]