mkogg.py: Prefix imports with underscores for a clean namespace
[mw2txt.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.  There is also [support for automatic velocity clamp
113 analysis][refolding-vclamp].
114
115 The official paper for the project is by [Aioanei][].  The earlier
116 paper by [Materassi][] may be related, but Aioanei doesn't cite it in
117 his paper, and Materassi doesn't give a URL for his code.
118
119 Hardware
120 ========
121
122 Nice software doesn't do you much good if you don't have the hardware
123 to control.  There are a number of quasi-open hardware solutions for
124 building your own AFM (and other types of scanning probe microscopes).
125 There's [a good list on opencircuits][opencircuits].  Interesting
126 projects include:
127
128 * Glenn Durden's [STM][GD] (1992–1998)
129 * Jim Rice's [Homebrew STM][JR] (1995)
130 * The Peddie School's [STM Project][PS] (1997–2002)
131 * Jürgen Müller's [home-built STMs][JM] (1999–2006)
132 * John D. Alexander's [STM Project][JDA] (2000–2003)
133 * The Münster Interface Physics Group's [SXM Project][MIPG] (free
134   except for commercial use, 2000–2005).
135 * Joseph Gatt's [Amateur STM][JG] (2003)
136 * Maxim Shusteff's [AFM for the instructional laboratory][MS] (2006)
137 * Dominik, Ivan, and Sandro's [STM-DIY project][DIS] (2009)
138
139 Other software
140 ==============
141
142 The [Gnome X Scanning Miscroscopy (GXSM)][GXSM] project provides GPL
143 software to perform standard SPM imaging.  The list of supported
144 hardware is currently limited to the SignalRanger series by SoftdB,
145 via GXSM-specific kernel modules like `sranger-mk23-dkms`.  There is
146 an obsolete [[Comedi]] driver for GXSM that Percy Zahl wrote back in
147 1999, but [it has been deprecated][issue1649579] since at least 2007.
148
149 [fs_kit]: http://fskit.blogspot.com/
150 [fs_kit_paper]: http://dx.doi.org/10.1111/j.1365-2818.2005.01478.x
151 [wxWidgets]: http://www.wxwidgets.org/
152 [Hooke]: http://code.google.com/p/hooke/
153 [Hooke_paper]: http://dx.doi.org/10.1093/bioinformatics/btp180
154 [sawsim_paper]: http://dx.doi.org/10.1016/j.ijbiomac.2009.12.001
155 [refolding]: http://code.google.com/p/refolding/
156 [refolding_paper]: http://dx.doi.org/10.1093/bioinformatics/btq663
157 [Selenium]: http://seleniumhq.org/
158 [refolding-vclamp]: http://code.google.com/p/refolding/wiki/BatchApproachRetractionAnalysis
159 [Aioanei]: http://dx.doi.org/10.1093/bioinformatics/btq663
160 [Materassi]: http://dx.doi.org/10.1063/1.3194046
161 [opencircuits]: http://www.opencircuits.com/Atomic_microscope
162 [GD]: http://web.archive.org/web/20010810000325/http://nemesis.com.au/alfa/mystm.htm
163 [JR]: http://web.archive.org/web/20010210003357/http://atom.snu.ac.kr/stmwebpage.html
164 [PS]: http://web.archive.org/web/20021219052018/http://www.peddie.k12.nj.us/Research/STMProject/e.html
165 [JM]: http://www.e-basteln.de/
166 [JDA]: http://www.geocities.com/spm_stm/Project.html
167 [MIPG]: http://sxm4.uni-muenster.de/
168 [JG]: http://www.angelfire.com/electronic2/spm/
169 [MS]: http://www.media.mit.edu/nanoscale/courses/AFMsite/
170 [DIS]: http://www.stm-diy.ch/
171 [GXSM]: http://gxsm.sourceforge.net/
172 [issue1649579]: http://sourceforge.net/tracker/?func=detail&aid=1649579&group_id=12992&atid=479639
173
174 [[!tag tags/programming]]
175 [[!tag tags/theory]]