--- /dev/null
+\section{History}
+\label{sec:hooke:history}
+
+\Hooke\ was originally developed by \citet{sandal09} working at the
+University of Bologna. It was actively developed until the paper came
+out, after which development became more sporadic. This was partly
+because \Hooke\ worked well enough for the original authors and partly
+because some of the developers had graduated and moved on to other
+fields\footnote{Developer churn may seem like a good reason to avoid
+ open source software. Why use something when its developers may not
+ stay around to support it? This argument may make sense if you're
+ comparing open source and commercial packages, but it makes less
+ sense if you're comparing existing open source packages to
+ hypothetical in-house software. Why \emph{not} use something, if
+ it's free and already exists? Figuring out someone else's software
+ is often much more efficient than writing your own tool from
+ scratch.}.
+
+Before discovering \Hooke in 2010, I had been using a series of fairly
+site-specific scripts to post-process my unfolding data. Excited by
+the existence of a published, open source post-processing framework, I
+dropped my scripts and started working on \Hooke. Other open-source
+tools for post-processing SMFS data exist, but they are based on
+closed sorce tools\citep{kuhn05,aioanei11} and some are no longer
+being developed\citep{kuhn05}. There are also some completely closed
+source tools such as \citetalias{punias}\citep{carl08} and JPK's
+\citetalias{force-robot}\citep{struckmeier08}. Other work along this
+line exists, but source code is unavailable\citep{andreopoulos11}.
+
+\Hooke\ supports a wide range of input file formats via \emph{drivers}
+(\cref{sec:hooke:drivers}, but when I began working on the project,
+there wasn't a clear interface between the drivers and processing
+\emph{plugins} (\cref{sec:hooke:plugins}). I cleaned up this
+interface as part of a general refactoring, fixing a number of plugins
+that relied on obscure internals in particular driver code. My
+refactoring removed these leaky abstractions, and now every analysis
+plugin works with every data driver.
+
+\Hooke\ has been designed with an eye to modular flexibility, with a
+command line interface (CLI) and graphical user interface (GUI).
+However, as with drivers and plugins, the initial abstractions were
+leaky. I added a generic argument interface for analysis plugins, and
+taught the interfaces how to handle the generic argument types
+(\cref{sec:hooke:ui}). With this framework, new analysis plugins are
+automatically supported by both the CLI and the GUI. As a side effect
+of this reorganization, the GUI (which had previously been a display
+for the CLI) became truly interactive. The interactive portions of
+the GUI owe a large debt to earlier work by Rolf Schmidt et al.~from
+the Centre for NanoScience Research at Concordia University.
+%
+\nomenclature{CLI}{Command line interface. A textual computing
+ environtment, where the user controls execution by typing commands
+ at a prompt (\cf~GUI).}
+\nomenclature{GUI}{Graphical user interface. A graphical computing
+ environment, where the user controls execution through primarily
+ through mouse clicks and interactive menus and widgets (\cf~CLI).}
@string{SAinavarapu = "Ainavarapu, Sri Rama Koti"}
@string{DAioanei = "Aioanei, Daniel"}
@string{TRAlbrecht = "Albreacht, T.~R."}
+@string{AMB = "Algorithms for molecular biology: AMB"}
@string{FAli = "Ali, F."}
@string{JFAllemand = "Allemand, Jean-Fran\c{c}ois"}
@string{DAllen = "Allen, D."}
@string{HAn = "An, H."}
@string{KNAn = "An, Kai-Nan"}
@string{ABioChem = "Analytical biochemistry"}
+@string{BAndreopoulos = "Andreopoulos, Bill"}
@string{IAndricioaei = "Andricioaei, Ioan"}
@string{ACIEE = "Angew. Chem. Int. Ed. Engl."}
@string{ARBBS = "Annu Rev Biophys Biomol Struct"}
@string{LCurry = "Curry, L."}
@string{CDahlke = "Dahlke, C."}
@string{FDahlquist = "Dahlquist, Frederick W."}
+@string{PDalhaimer = "Dalhaimer, Paul"}
@string{SDanaher = "Danaher, S."}
@string{LDavenport = "Davenport, L."}
@string{MCDavies = "Davies, M.~C."}
@string{LAGavrilov = "Gavrilov, L. A."}
@string{NSGavrilova = "Gavrilova, N. S."}
@string{WGe = "Ge, W."}
+@string{UGeisler = "Geisler, Ulrich"}
@string{GENE = "Gene"}
@string{CGerber = "Gerber, Christoph"}
@string{CGergely = "Gergely, C."}
@string{WHoff = "Hoff, Wouter D."}
@string{JLHolden = "Holden, J. L."}
@string{RAHolt = "Holt, R. A."}
+@string{GHofmann = "Hofmann, Gerd"}
@string{MHonda = "Honda, M."}
@string{NPCHong = "Hong, Neil P. Chue"}
@string{XHong = "Hong, Xia"}
@string{MIvemeyer = "Ivemeyer, M."}
@string{DIzhaky = "Izhaky, David"}
@string{SIzrailev = "Izrailev, S."}
-%string{JACS = "J Am Chem Soc"}
-@string{JACS = "Journal of the American Chemical Society"}
-@string{JAP = "Journal of Applied Physics"}
-@string{JBM = "J Biomech"}
-@string{JBT = "J Biotechnol"}
-@string{JEChem = "Journal of Electroanalytical Chemistry"}
-@string{JMathBiol = "J Math Biol"}
-@string{JMicro = "Journal of microscopy"}
-@string{JPhysio = "Journal of physiology"}
-@string{JStructBiol = "Journal of structural biology"}
-@string{JTB = "J Theor Biol"}
+@string{TJahnke = "J{\"a}hnke, Torsten"}
@string{WJang = "Jang, W."}
-@string{HJanovjak = "Janovjak, H."}
+@string{HJanovjak = "Janovjak, Harald"}
@string{LJanosi = "Janosi, Lorant"}
@string{AJanshoff = "Janshoff, Andreas"}
@string{JJAP = "Japanese Journal of Applied Physics"}
@string{SJones = "Jones, S."}
@string{CJordan = "Jordan, C."}
@string{JJordan = "Jordan, J."}
+%string{JACS = "J Am Chem Soc"}
+@string{JACS = "Journal of the American Chemical Society"}
+@string{JASA = "Journal of the American Statistical Association"}
+@string{JAP = "Journal of Applied Physics"}
+@string{JBM = "J Biomech"}
+@string{JBT = "J Biotechnol"}
@string{JCPPCB = "Journal de Chimie Physique et de Physico-Chimie Biologique"}
@string{JCS = "Journal of Cell Science"}
@string{JCompP = "Journal of Computational Physics"}
+@string{JEChem = "Journal of Electroanalytical Chemistry"}
+@string{JMathBiol = "J Math Biol"}
+@string{JMicro = "Journal of microscopy"}
+@string{JPhysio = "Journal of physiology"}
+@string{JStructBiol = "Journal of structural biology"}
+@string{JTB = "J Theor Biol"}
@string{JMB = "Journal of Molecular Biology"}
@string{JP:CM = "Journal of Physics: Condensed Matter"}
@string{JP:CON = "Journal of Physics: Conference Series"}
@string{JRNBS:C = "Journal of Research of the National Bureau of Standards. Section C: Engineering and Instrumentation"}
-@string{JASA = "Journal of the American Statistical Association"}
@string{WSJuang = "Juang, F.~S."}
@string{DAJuckett = "Juckett, D. A."}
@string{SRJun = "Jun, Se-Ran"}
@string{RLevy = "L\'evy, R"}
@string{DLabeit = "Labeit, Dietmar"}
@string{SLabeit = "Labeit, Siegfried"}
+@string{DLabudde = "Labudde, Dirk"}
@string{SLahmers = "Lahmers, Sunshine"}
@string{ZLai = "Lai, Z."}
@string{CLam = "Lam, Canaan"}
@string{CLethias = "Lethias, Claire"}
@string{SLeuba = "Leuba, Sanford H."}
@string{ALeung = "Leung, A."}
+@string{MLeuschner = "Leuschner, Mirko"}
@string{AJLevine = "Levine, A. J."}
@string{CLevinthal = "Levinthal, Cyrus"}
@string{ALevitsky = "Levitsky, A."}
@string{ANoy = "Noy, Aleksandr"}
@string{NAR = "Nucleic Acids Research"}
@string{JNummela = "Nummela, Jeremiah"}
+@string{JNunes = "Nunes, Joao"}
@string{DNusskern = "Nusskern, D."}
@string{GNyakatura = "Nyakatura, G."}
@string{CSOHern = "O'Hern, Corey S."}
@string{MPeterson = "Peterson, M."}
@string{SMPeterson = "Peterson, Susan M."}
@string{CPfannkoch = "Pfannkoch, C."}
-@string{PA = "Pflugers Arch"}
+@string{PA = "Pfl{\"u}gers Archiv: European journal of physiology"}
@string{PTRSL = "Philosophical Transactions of the Royal Society of London"}
@string{PR:E = "Phys Rev E Stat Nonlin Soft Matter Phys"}
@string{PRL = "Physical review letters"}
@string{NScherer = "Scherer, Norbert F."}
@string{SScherer = "Scherer, S."}
@string{MSchilhabel = "Schilhabel, M."}
+@string{HSchillers = "Schillers, Hermann"}
@string{BSchlegelberger = "Schlegelberger, B."}
@string{MSchleicher = "Schleicher, Michael"}
@string{MSchlierf = "Schlierf, Michael"}
@string{TRStrick = "Strick, T. R."}
@string{CStroh = "Stroh, Cordula"}
@string{RStrong = "Strong, R."}
+@string{JStruckmeier = "Struckmeier, Jens"}
@string{STR = "Structure"}
@string{TStrunz = "Strunz, Torsten"}
@string{MSu = "Su, Meihong"}
@string{JCVoegel = "Voegel, J.-C."}
@string{VVogel = "Vogel, Viola"}
@string{CWagner-McPherson = "Wagner-McPherson, C."}
+@string{RWahl = "Wahl, Reiner"}
@string{TAWaigh = "Waigh, Thomas A."}
@string{BWalenz = "Walenz, B."}
@string{JWallis = "Wallis, J."}
erratum pointing out the error and at least \citet{puchner08} have
quoted the incorrect form.},
}
+
+@misc{ punias,
+ author = PCarl #" and "# PDalhaimer,
+ title = {{PUNIAS}: Protein Unfolding and Nano-indentation Analysis
+ Software},
+ year = 2005,
+ month = oct,
+ day = 13,
+ note = {4 Int. Workshop, Scanning Probe Microscopy in Life Sciences},
+ address = {Berlin},
+ url = {http://punias.voila.net/},
+}
+
+@article{ carl08,
+ author = PCarl #" and "# HSchillers,
+ title = {Elasticity measurement of living cells with an atomic force
+ microscope: data acquisition and processing.},
+ year = 2008,
+ month = nov,
+ day = 15,
+ address = {Institute of Physiology II, University of M{\"u}nster,
+ Robert-Koch-Str. 27b, 48149, M{\"u}nster, Germany.},
+ journal = PA,
+ volume = 457,
+ number = 2,
+ pages = {551--559},
+ issn = {0031-6768},
+ doi = {10.1007/s00424-008-0524-3},
+ url = {http://www.ncbi.nlm.nih.gov/pubmed/18481081},
+ language = {eng},
+ keywords = {Animals},
+ keywords = {Biomechanics},
+ keywords = {CHO Cells},
+ keywords = {Cricetinae},
+ keywords = {Cricetulus},
+ keywords = {Cystic Fibrosis Transmembrane Conductance Regulator},
+ keywords = {Elastic Modulus},
+ keywords = {Equipment Design},
+ keywords = {Microscopy, Atomic Force},
+ keywords = {Models, Biological},
+ keywords = {Reproducibility of Results},
+ keywords = {Signal Processing, Computer-Assisted},
+ keywords = {Transfection},
+ abstract = {Elasticity of living cells is a parameter of increasing
+ importance in cellular physiology, and the atomic force microscope
+ is a suitable instrument to quantitatively measure it. The
+ principle of an elasticity measurement is to physically indent a
+ cell with a probe, to measure the applied force, and to process
+ this force-indentation data using an appropriate model. It is
+ crucial to know what extent the geometry of the indenting probe
+ influences the result. Therefore, we indented living Chinese
+ hamster ovary cells at 37 degrees C with sharp tips and colloidal
+ probes (spherical particle tips) of different sizes and
+ materials. We furthermore developed an implementation of the Hertz
+ model, which simplifies the data processing. Our results show (a)
+ that the size of the colloidal probe does not influence the result
+ over a wide range (radii $0.5$-$26\U{$\mu$m}$) and (b) indenting
+ cells with sharp tips results in higher Young's moduli
+ (approximately $1,300\U{Pa}$) than using colloidal probes
+ (approximately $400\U{Pa}$).},
+ note = {Mentions \citetalias{punias} as if it was in-house software,
+ which makes sense because Philippe Carl seems to be a major author.},
+}
+
+@article{ struckmeier08,
+ author = JStruckmeier #" and "# RWahl #" and "# MLeuschner #" and "#
+ JNunes #" and "# HJanovjak #" and "# UGeisler #" and "#
+ GHofmann #" and "# TJahnke #" and "# DJMuller,
+ title = {Fully automated single-molecule force spectroscopy for
+ screening applications},
+ year = 2008,
+ month = sep,
+ day = 24,
+ address = {Cellular Machines, Biotechnology Center,
+ Technische Universit{\"a}t Dresden, Tatzberg 47, D-01307
+ Dresden, Germany},
+ journal = NT,
+ volume = 19,
+ number = 38,
+ pages = 384020,
+ issn = {0957-4484},
+ doi = {10.1088/0957-4484/19/38/384020},
+ url = {http://www.ncbi.nlm.nih.gov/pubmed/21832579},
+ language = {eng},
+ abstract = {With the introduction of single-molecule force
+ spectroscopy (SMFS) it has become possible to directly access the
+ interactions of various molecular systems. A bottleneck in
+ conventional SMFS is collecting the large amount of data required
+ for statistically meaningful analysis. Currently, atomic force
+ microscopy (AFM)-based SMFS requires the user to tediously `fish'
+ for single molecules. In addition, most experimental and
+ environmental conditions must be manually adjusted. Here, we
+ developed a fully automated single-molecule force
+ spectroscope. The instrument is able to perform SMFS while
+ monitoring and regulating experimental conditions such as buffer
+ composition and temperature. Cantilever alignment and calibration
+ can also be automatically performed during experiments. This,
+ combined with in-line data analysis, enables the instrument, once
+ set up, to perform complete SMFS experiments autonomously.},
+ note = {An advertisement for JPK's \citetalias{force-robot}.},
+}
+
+@article{ andreopoulos11,
+ author = BAndreopoulos #" and "# DLabudde,
+ title = {Efficient unfolding pattern recognition in single molecule
+ force spectroscopy data},
+ year = 2011,
+ month = jun,
+ day = 06,
+ address = {Department of Bioinformatics, Biotechnological Center,
+ University of Technology Dresden, Dresden, Germany.
+ williama@biotec.tu-dresden.de},
+ journal = AMB,
+ volume = 6,
+ number = 1,
+ pages = 16,
+ issn = {1748-7188},
+ doi = {10.1186/1748-7188-6-16},
+ url = {http://www.ncbi.nlm.nih.gov/pubmed/21645400},
+ language = {eng},
+ abstract = {Single-molecule force spectroscopy (SMFS) is a technique
+ that measures the force necessary to unfold a protein. SMFS
+ experiments generate Force-Distance (F-D) curves. A statistical
+ analysis of a set of F-D curves reveals different unfolding
+ pathways. Information on protein structure, conformation,
+ functional states, and inter- and intra-molecular interactions can
+ be derived.},
+}