From 194eed3a72b389f0b62cbb3d62e8cbad860b5c2d Mon Sep 17 00:00:00 2001 From: "W. Trevor King" Date: Thu, 13 Jun 2013 15:16:12 -0400 Subject: [PATCH] hooke: Flesh out discussion of drivers and plugins Also add a missing close-paren to history.tex, along with a caveat footnote that sometimes rewriting is worth it. --- src/apparatus/procedure.tex | 2 +- src/hooke/drivers.tex | 29 +++++++++++++-- src/hooke/history.tex | 10 ++++- src/hooke/plugins.tex | 21 +++++++++++ src/local_cmmds.tex | 1 + src/root.bib | 73 +++++++++++++++++++++++++++++++++++++ 6 files changed, 130 insertions(+), 6 deletions(-) diff --git a/src/apparatus/procedure.tex b/src/apparatus/procedure.tex index f24e2ef..d34b175 100644 --- a/src/apparatus/procedure.tex +++ b/src/apparatus/procedure.tex @@ -60,6 +60,6 @@ multi-domain test proteins. and the substrate surface, and the last high force peak is caused by the detachment of the polymer from the tip or the substrate surface. Note that the abscissa is the extension of the protein - chain $x_t-x_c$.} + chain $x_t-x_c$.\label{fig:procedure}} \end{center} \end{figure} diff --git a/src/hooke/drivers.tex b/src/hooke/drivers.tex index 11e5380..5dd6c69 100644 --- a/src/hooke/drivers.tex +++ b/src/hooke/drivers.tex @@ -2,6 +2,29 @@ \label{sec:hooke:drivers} \Hooke\ supports a number of different SMFS data formats, including -Hemingway\citep{materassi09}, JPK's \citetalias{force-robot}, -Asylum's MFP3D\citep{mfp-3d}, Bruker's \citetalias{picoforce}, and -my \unfoldprotein\ (\cref{sec:pyafm:unfold-protein}) formats. +Hemingway\citep{materassi09}, JPK's \citetalias{force-robot}, Asylum's +MFP3D\citep{mfp-3d}, Bruker's \citetalias{picoforce}, and my +\unfoldprotein\ (\cref{sec:pyafm:unfold-protein}) formats. The +drivers are responsible for loading curve data into a standardized +format so that plugins can work with data from any source. Drivers +have can determine if they are capable of reading a particular file, +so if you need to analyze a directory full of curve files in a number +of formats, you can just point Hooke at the directory and it will pick +the appropriate driver for each curve. + +After loading and parsing the data, drivers return a list of scaled +\emph{blocks} and a dictionary\footnote{ + Python dictionaries are hash tables, which allow you to easily + access arbitrary data if you know the key under which it was stored. +} of metadata. Each block corresponds to a different phase of the +experiment; standard unfolding experiments have an approach block and +a retraction block. The piezo position and cantilever deflection data +in each block is scaled by the driver into meters, but further +processing (e.g. the conversion of cantilever position to a chain +tension in newtons) is carried out by plugins. The metadata +dictionary includes standard keys for information that is required for +the analysis (e.g.~the calibrated spring constant in N/m). If the +driver can parse any additional metadata from the file, it adds it to +the dictionary using non-standard keys. You can use this auxilliary +metadata to perform subsequent analysis (e.g.~``give me all the curves +that were recorded in \texttt{PBS + 0.5M CaCl2}''). diff --git a/src/hooke/history.tex b/src/hooke/history.tex index 468b5f1..bb72a49 100644 --- a/src/hooke/history.tex +++ b/src/hooke/history.tex @@ -14,7 +14,13 @@ fields\footnote{ 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. + more efficient than writing your own tool from + scratch\footnotemark{}. +}\footnotetext{ + \ldots says the person who threw out the existing implementation and + rewrote the control stack from scratch ;). I'm ok with starting + over if the existing project is not maintainable, but realize that + you're probably biting off a lot of work. }. Before discovering \Hooke in 2010, I had been using a series of fairly @@ -29,7 +35,7 @@ source tools such as \citetalias{punias}\citep{carl08} and JPK's 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, +(\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 diff --git a/src/hooke/plugins.tex b/src/hooke/plugins.tex index 94f12cb..82d4818 100644 --- a/src/hooke/plugins.tex +++ b/src/hooke/plugins.tex @@ -1,3 +1,24 @@ \subsection{Plugins for analysis} \label{sec:hooke:plugins} +Plugins are groups of related commands for processing curves. Curves +can be stored in playlists, and there are builtin plugins for +administrative tasks like managing curves (getting curve metadata, +exporting blocks, \ldots) and playlists (moving to the next curve, +globbing curves to the playlist, \ldots). There are also analysis +plugins with commands for doing science. The \imint{python}|vclamp| +plugin for velocity clamp analysis has commands for finding the +surface contact point, scaling the cantilever deflection, removing the +cantilever deflection from the total extension (\cref{fig:procedure}), +and flattening polynomial drift in the non-contact region. The +\imint{python}|flatfilt| plugin has commands for identifying peaks +based on spikes in the deflection derivative and for filtering curves +from a playlist that only have more than a minimum threshold of such +peaks\citep{sandal08}. The \imint{python}|polymer_fit| plugin has +commands for fitting polymer models to the loading peaks +(\cref{sec:sawsim:tension}), which may have been identified using the +\imint{python}|flatfilt| plugin or with any other peak-marking plugin. +For other available plugins, see the \Hooke\ documentation. +% +\nomenclature{playlist}{Playlists are containers in \Hooke\ that hold + lists of unfolding curves along with some additional metadata.} diff --git a/src/local_cmmds.tex b/src/local_cmmds.tex index eb6c358..2fe4488 100644 --- a/src/local_cmmds.tex +++ b/src/local_cmmds.tex @@ -144,6 +144,7 @@ % Chemicals \newcommand{\Ca}{Ca\textsuperscript{2+}} \newcommand{\CaCl}{CaCl\textsubscript{2}} +\newcommand{\Cu}{Cu\textsuperscript{2+}} \newcommand{\Cl}{Cl\textsuperscript{-}} \newcommand{\HCl}{HCl} \newcommand{\Na}{Na\textsuperscript{+}} diff --git a/src/root.bib b/src/root.bib index e6187c9..668b3e5 100644 --- a/src/root.bib +++ b/src/root.bib @@ -91,6 +91,7 @@ @string{DRBentley = "Bentley, D. R."} @string{HJCBerendsen = "Berendsen, Herman J. C."} @string{KBergSorensen = "Berg-S\orensen, K"} +@string{EBergantino = "Bergantino, Elisabetta"} @string{DBerk = "Berk, D."} @string{FBerkemeier = "Berkemeier, Felix"} @string{BBerne = "Berne, Bruce J."} @@ -135,6 +136,7 @@ @string{TBruls = "Bruls, T."} @string{VBrumfeld = "Brumfeld, Vlad"} @string{JDBryngelson = "Bryngelson, J. D."} +@string{LBubacco = "Bubacco, Luigi"} @string{JBuckheit = "Buckheit, Jonathan B."} @string{ABuguin = "Buguin, A."} @string{ABulhassan = "Bulhassan, Ahmed"} @@ -656,6 +658,7 @@ @string{WMajoros = "Majoros, W."} @string{DEMakarov = "Makarov, Dmitrii E."} @string{RMamdani = "Mamdani, Reneeta"} +@string{SMammi = "Mammi, Stefano"} @string{EMandello = "Mandello, Enrico"} @string{GManderson = "Manderson, Gavin"} @string{FMann = "Mann, F."} @@ -730,6 +733,7 @@ @string{BMurphy = "Murphy, B."} @string{SMurphy = "Murphy, S."} @string{AMuruganujan = "Muruganujan, A."} +@string{FMusiani = "Musiani, Francesco"} @string{EWMyers = "Myers, E. W."} @string{RMMyers = "Myers, R. M."} @string{AMylonakis = "Mylonakis, Andreas"} @@ -824,6 +828,7 @@ @string{MPlumbley = "Plumbley, Mark"} @string{PLOS:ONE = "PLOS ONE"} %string{PLOS:ONE = "Public Library of Science ONE"} +@string{PLOS:BIO = "PLOS Biology"} @string{DPlunkett = "Plunkett, David"} @string{PPodsiadlo = "Podsiadlo, Paul"} @string{ASPolitou = "Politou, A. S."} @@ -1015,6 +1020,7 @@ @string{THEMath = "Technische Hogeschool Eindhoven, Nederland, Onderafdeling der Wiskunde"} @string{SJBTendler = "Tendler, S.~J.~B."} +@string{ITessari = "Tessari, Isabella"} @string{STeukolsky = "Teukolsky, S."} @string{CJ = "The Computer Journal"} @string{JBC = "The Journal of Biological Chemistry"} @@ -1055,6 +1061,7 @@ @string{UIP:Urbana = "University of Illinois Press, Urbana"} @string{UTMB = "University of Texas Medical Branch"} @string{MUrbakh = "Urbakh, M."} +@string{FValle = "Valle, Francesco"} @string{KJVanVliet = "Van Vliet, Krystyn J."} @string{PVandewalle = "Vandewalle, Patrick"} @string{CVech = "Vech, C."} @@ -8800,6 +8807,72 @@ pulling speed.}, } +@article{ sandal08, + author = MSandal #" and "# FValle #" and "# ITessari #" and "# + SMammi #" and "# EBergantino #" and "# FMusiani #" and "# + MBrucale #" and "# LBubacco #" and "# BSamori, + title = {Conformational Equilibria in Monomeric $\alpha$-Synuclein + at the Single-Molecule Level}, + year = 2008, + month = jan, + address = {Department of Biochemistry G. Moruzzi, + University of Bologna, Bologna, Italy.}, + journal = PLOS:BIO, + volume = 6, + number = 1, + pages = {e6}, + issn = {1545-7885}, + doi = {10.1371/journal.pbio.0060006}, + url = {http://www.ncbi.nlm.nih.gov/pubmed/18198943}, + language = {eng}, + keywords = {Buffers}, + keywords = {Circular Dichroism}, + keywords = {Copper}, + keywords = {Entropy}, + keywords = {Models, Molecular}, + keywords = {Molecular Sequence Data}, + keywords = {Mutation}, + keywords = {Protein Structure, Secondary}, + keywords = {Protein Structure, Tertiary}, + keywords = {alpha-Synuclein}, + abstract = {Human $\alpha$-Synuclein ($\alpha$Syn) is a natively + unfolded protein whose aggregation into amyloid fibrils is + involved in the pathology of Parkinson disease. A full + comprehension of the structure and dynamics of early intermediates + leading to the aggregated states is an unsolved problem of + essential importance to researchers attempting to decipher the + molecular mechanisms of $\alpha$Syn aggregation and formation of + fibrils. Traditional bulk techniques used so far to solve this + problem point to a direct correlation between $\alpha$Syn's unique + conformational properties and its propensity to aggregate, but + these techniques can only provide ensemble-averaged information + for monomers and oligomers alike. They therefore cannot + characterize the full complexity of the conformational equilibria + that trigger the aggregation process. We applied atomic force + microscopy-based single-molecule mechanical unfolding methodology + to study the conformational equilibrium of human wild-type and + mutant $\alpha$Syn. The conformational heterogeneity of monomeric + $\alpha$Syn was characterized at the single-molecule level. Three + main classes of conformations, including disordered and + ``$\beta$-like'' structures, were directly observed and quantified + without any interference from oligomeric soluble forms. The + relative abundance of the ``$\beta$-like'' structures + significantly increased in different conditions promoting the + aggregation of $\alpha$Syn: the presence of \Cu, the pathogenic + A30P mutation, and high ionic strength. This methodology can + explore the full conformational space of a protein at the + single-molecule level, detecting even poorly populated conformers + and measuring their distribution in a variety of biologically + important conditions. To the best of our knowledge, we present + for the first time evidence of a conformational equilibrium that + controls the population of a specific class of monomeric + $\alpha$Syn conformers, positively correlated with conditions + known to promote the formation of aggregates. A new tool is thus + made available to test directly the influence of mutations and + pharmacological strategies on the conformational equilibrium of + monomeric $\alpha$Syn.}, +} + @article{ sandal09, author = MSandal #" and "# FBenedetti #" and "# MBrucale #" and "# AGomezCasado #" and "# BSamori, -- 2.26.2