Unfold-protein
==============

Unfold-protein is a set of tools for controlling velocity-clamp single
molecule force spectroscopy.  It uses the pyafm_ package for low level
AFM control.  This package contains the high-level experiment control
logic.

Packages
========

Gentoo
------

I've packaged pyafm for Gentoo.  You need layman_ and my `wtk
overlay`_.  Install with::

  # emerge -av app-portage/layman
  # layman --add wtk
  # emerge -av sci-physics/unfold-protein

Dependencies
============

Unfold-protein requires the following Python modules:

* Pyafm_
* Pypiezo_ (required directly, and via ``pyafm``)
* H5config_ (required directly, and via ``pyafm``)
* h5py_ (required directly, and via ``h5config``)
* Matplotlib_
* NumPy_

Getting the source
==================

Unfold-protein is available as a Git_ repository::

  $ git clone git://tremily.us/unfold-protein.git

There are also periodic bundled releases.  For example, get version
0.2 as a gzipped tarball with::

  $ wget 'http://git.tremily.us/?p=unfold-protein.git;a=snapshot;h=v0.2;sf=tgz'
  $ tar -xzvf unfold-protein-0.2.tar.gz

Installation
============

After downloading, change to the source directory and run::

  $ python setup.py install

to install unfold-protein.  Run::

  $ python setup.py install --help

to see a list of installation options you may want to configure.

Usage
=====

The ``unfold.py`` script runs a series of unfolding pulls while
scanning the pulling velocity and contact position.  It has a few
command line options; get details with::

  $ unfold.py --help

You can configure the unfolding and scanning behavior using h5config_.
The configuration is stored in ``~/.config/unfold-default.yaml``.  To
seed this configuration file before tweaking it, you should configure
pyafm_ (as described in its ``README``).  Then run::

  >>> import unfold_protein.storage as storage
  >>> config = storage.get_default_config()
  >>> storage.save_scan_config(config=config)

to create a configuration using the default settings.  The YAML_
syntax is plain text, which you can edit as you see fit.  Future runs
of ``unfold.py`` (and calls to
``unfold_protein.storage.load_scanner()``) will load this
configuration by default.

``unfold.py`` saves each unfolding pull in its own timestamped file
with the unfolding data along with the complete configuration used to
acquire it.  You can configure the directory where these files are
stored with the ``unfold/save/base directory`` setting.  You can
convert the saved unfolding data to PNGs__ with ``plot-unfold.py``.
For example::

  $ plot-unfold.py ~/rsrch/data/unfold/*.h5

__ PNG_

For more detailed analysis, you may want to use Hooke_.  You may also
want to use calibcant_ to calibrate your AFM cantilever's bending
spring constant.

.. _pyafm: http://blog.tremily.us/posts/pyafm/
.. _layman: http://layman.sourceforge.net/
.. _wtk overlay: http://blog.tremily.us/posts/Gentoo_overlay/
.. _pyafm: http://blog.tremily.us/posts/pyafm/
.. _pypiezo: http://blog.tremily.us/posts/pypiezo/
.. _h5config: http://blog.tremily.us/posts/h5config/
.. _H5Py: http://code.google.com/p/h5py/
.. _NumPy: http://numpy.scipy.org/
.. _Matplotlib: http://matplotlib.sourceforge.net/
.. _Git: http://git-scm.com/
.. _YAML: http://www.yaml.org/
.. _PNG: http://en.wikipedia.org/wiki/Portable_Network_Graphics
.. _Hooke: http://blog.tremily.us/posts/hooke/
.. _calibcant: http://blog.tremily.us/posts/calibcant/
