Difference between revisions of "TLSMD"

From Christoph's Personal Wiki
Jump to: navigation, search
(See also)
 
(26 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
'''TLS Motion Determination''' ('''TLSMD''') analyzes a protein crystal structure for evidence of flexibility, e.g. local or inter-domain motions.<ref name="Painter2006a">Painter J, Merritt EA (2006). "[http://skuld.bmsc.washington.edu/~tlsmd/Acta_D62_439.pdf Optimal description of a protein structure in terms of multiple groups undergoing TLS motion]". ''Acta Cryst, D62(4):439-450''. {{doi|10.1107/S0907444906005270}}.</ref><ref name="Painter2006b">Painter J, Merritt EA (2006). "[http://skuld.bmsc.washington.edu/~tlsmd/JApplCryst_39_109.pdf TLSMD web server for the generation of multi-group TLS models]". ''J Appl Cryst, 39(1):109-111''. {{doi|10.1107/S0021889805038987}}</ref> It does this by partitioning the protein chains into multiple segments that are modeled as rigid bodies undergoing TLS (Translation/Libration/Screw) vibrational motion. It generates all possible partitions up to a specified maximum number of TLS groups. Each trial partition is evaluated by how well it predicts the observed atomic displacement parameters (ADPs, "thermal parameters") that came out of crystallographic refinement.
 
'''TLS Motion Determination''' ('''TLSMD''') analyzes a protein crystal structure for evidence of flexibility, e.g. local or inter-domain motions.<ref name="Painter2006a">Painter J, Merritt EA (2006). "[http://skuld.bmsc.washington.edu/~tlsmd/Acta_D62_439.pdf Optimal description of a protein structure in terms of multiple groups undergoing TLS motion]". ''Acta Cryst, D62(4):439-450''. {{doi|10.1107/S0907444906005270}}.</ref><ref name="Painter2006b">Painter J, Merritt EA (2006). "[http://skuld.bmsc.washington.edu/~tlsmd/JApplCryst_39_109.pdf TLSMD web server for the generation of multi-group TLS models]". ''J Appl Cryst, 39(1):109-111''. {{doi|10.1107/S0021889805038987}}</ref> It does this by partitioning the protein chains into multiple segments that are modeled as rigid bodies undergoing TLS (Translation/Libration/Screw) vibrational motion. It generates all possible partitions up to a specified maximum number of TLS groups. Each trial partition is evaluated by how well it predicts the observed atomic displacement parameters (ADPs, "thermal parameters") that came out of crystallographic refinement.
  
==Installation==
+
[[Christoph Champ|I]] was the lead developer and maintainer of the TLS Motion Determination (both the webserver and the standalone/CLI version, along with [[Python Macromolecular Library]]) from 2006 to 2010. I contributed [http://www.ohloh.net/p/12891/contributors/55366423429103 20,590] lines of code to pymmlib and TLSMD (27.8% in [[Python]] and 25.5% in Fortran). I added hundreds of new features, including [[Skittles]],<ref>Zucker F, [[Christoph Champ|Champ PC]], Merritt EA (2010). "[https://docs.google.com/file/d/0B7cFvC52gEb9MTRmNDQyNmYtZDVhNS00OTViLTkxZGItODk3ZmU2ZjdjYzM5/edit Validation of crystallographic models containing TLS or other descriptions of anisotropy]". ''Acta Cryst.'' D'''66''', 889-900. {{doi|10.1107/S0907444910020421}}</ref> which was added to the [[:Category:Ccp4|CCP4]] codebase.
 +
 
 +
<blockquote>'''Note''':<br/>
 +
On 2010-02-11, we released version 1.4.0 of '''tlsmd'''.<br/>
 +
On 2009-06-19, we released version 1.3.0 of '''tlsmd'''.<br/>
 +
On 2008-02-15, we released version 1.0.0 of '''tlsmd'''.<br/>
 +
On 2011-03-27, we released version 1.2.0 of '''pymmlib'''.<br/>
 +
On 2008-02-15, we released version 1.1.0 of '''pymmlib'''.<br/>
 +
On 2007-04-28, we released version 1.0.0 of '''pymmlib'''.<br/>
 +
They are both available for download on [http://pymmlib.svn.sourceforge.net/viewvc/pymmlib/ sourceforge].</blockquote>
 +
 
 +
==Description==
 +
<div style="padding: 1em; margin: 10px; border: 2px dotted #18e;">
 +
'''Abstract''': The TLSMD web server extracts information about dynamic properties of a protein based on information derived from a single-crystal structure. It does so by analyzing the spatial distribution of individual atomic thermal parameters present in an input structural model. The server partitions the protein structure into multiple, contiguous chain segments, each segment corresponding to one group in a multi-group description of the protein's overall dynamic motion. For each polypeptide chain of the input protein, the analysis generates the optimal partition into two segments, three segments, ... up to 20 segments. Each such partition is optimal in the sense that it is the best approximation of the overall spatial distribution of input thermal parameters in terms of N chain segments, each acting as a rigid group undergoing TLS (translation/libration/screw) motion. This multi-group TLS model may be used as a starting point for further crystallographic refinement, or as the basis for analyzing inter-domain and other large-scale motions implied by the crystal structure.<ref name="Painter2006b"/>
 +
</div>
 +
 
 +
<div style="padding: 1em; margin: 10px; border: 2px dotted #18e;">
 +
'''Abstract''': A single protein crystal structure contains information about dynamic properties of the protein as well as providing a static view of one three-dimensional conformation. This additional information is to be found in the distribution of observed electron density about the mean position of each atom. It is general practice to account for this by refining a separate atomic displacement parameter (ADP) for each atomic center. However, these same displacements are often described well by simpler models based on TLS (translation/libration/screw) rigid-body motion of large groups of atoms, for example interdomain hinge motion. A procedure, TLSMD, has been developed that analyzes the distribution of ADPs in a previously refined protein crystal structure in order to generate optimal multi-group TLS descriptions of the constituent protein chains. TLSMD is applicable to crystal structures at any resolution. The models generated by TLSMD analysis can significantly improve the standard crystallographic residuals R and R<sub>free</sub> and can reveal intrinsic dynamic properties of the protein.<ref name="Painter2006a"/>
 +
</div>
 +
 
 +
<div style="padding: 1em; margin: 10px; border: 2px dotted #18e;">
 +
'''Background summary of what the TLSMD server does'''
 +
 
 +
The TLSMD server creates a model for molecular flexibility based on a refined protein (or RNA) crystal structure. The model is constructed by breaking each protein chain into segments, and refining a TLS (Translation/Libration/Screw) description for each segment. This formalism allows one to describe with relatively few parameters the anisotropic motions and microconformations of the crystalline protein. In many cases it produces a much better description of the crystal contents than a conventional model that tries to account for these effects by assigning a single isotropic B factor for each atom. Thus the TLSMD model often, although not always, yields better R and R<sub>free</sub> values and improved electron density maps. Over and above that, the component groups identified by TLSMD may yield insight into hinge motions, local conformational flexibility, and other dynamic properties of the protein relevant to its behaviour in solution as well as in the crystal.
 +
 
 +
In essence, TLSMD takes a conventional model with individual atomic B factors as input, and constructs a model that interprets those atomic
 +
B factors as arising from the motion of larger groups. In the context of the TLSMD server, you can think of the input B values as observations ("B<sub>obs</sub>"), and the predictions from the multi-group TLS model as calculations ("B<sub>pred</sub>"). The server helps you to choose a multi-group model that does the best job of describing the distribution of B factors in your input structural model. The TLSMD model parameters themselves can then be further refined against your diffraction data in either Refmac or PHENIX.refine.<ref name="Merritt2008a">Merritt EA (2008). [http://proteincrystallography.org/ccp4bb/message4376.html New higher-throughput server for TLSMD analysis]. ''[[:Category:Ccp4|CCP4]] Bulletin Board''.</ref>
 +
</div>
 +
 
 +
==Pre-installation==
 
''Note: This section will cover the install of pymmlib, including tlsmd, on a 64-bit system running [[Mandriva Linux]] 2007.1. However, most of it should work for 32-bit systems and any other Linux distribution.''
 
''Note: This section will cover the install of pymmlib, including tlsmd, on a 64-bit system running [[Mandriva Linux]] 2007.1. However, most of it should work for 32-bit systems and any other Linux distribution.''
  
Line 8: Line 37:
  
 
===Dependencies===
 
===Dependencies===
*Python (>= 2.4)
+
''Note: It very much depends if you are running on a 32- or 64-bit machine. So, instead of, say "<code>liblapack</code>" (32-bit), you would install "<code>lib64lapack</code>" (64-bit)
**libpython2.5-devel (if using Python 2.5)
+
*[http://www.python.org/ Python] (>= 2.4): <code>python + libpython2.5-devel</code> (if using Python 2.5)
*NumPy (version >= 0.9.6)
+
*[http://numpy.scipy.org/ NumPy] (>= 0.9.6): <code>python-numpy + python-numpy-devel</code>
**python-numpy
+
*[http://pyopengl.sourceforge.net/ PyOpenGL]: <code>python-opengl</code>
**python-numpy-devel
+
*[http://www.gtk.org/ Gtk+-2.2 or Gtk+-2.4]: <code>libgtk+2.0_0-devel</code>
*PyOpenGL
+
*[http://www.pygtk.org/ PyGTK] (>= 2.x): <code>pygtk2.0-devel + python-gtkglext</code>
**python-opengl
+
*[http://www.k-3d.org/gtkglext/Main_Page GtkGlExt]: <code>lib64gtkglext-devel</code>
*Gtk+-2.2 or Gtk+-2.4
+
*[http://www.k-3d.org/gtkglext/Main_Page PyGtkGLExt]: <code>libgtkglext-1.0_0 + libgtkglext-1.0_0-devel</code>
**libgtk+2.0_0-devel
+
*[http://www.pythonware.com/products/pil/ Python Imaging Library] (>= 1.1.5): <code>python-imaging-devel</code>
*PyGTK (>= 2.x)
+
*[http://www.cherrypy.org/ CherryPy]: <code>python-cherrypy</code>
**pygtk2.0-devel
+
*[http://www.netlib.org/lapack/ LAPACK] (see section below; >= 3.0): <code>lapack + liblapack3.0-devel</code>
**python-gtkglext
+
*[http://math-atlas.sourceforge.net/ ATLAS] (>= 3.6.0): <code>atlas</code>
*GtkGlExt
+
*[http://www.netlib.org/minpack/ MINPACK]
**lib64gtkglext-devel
+
*PyGtkGLExt
+
**libgtkglext-1.0_0
+
**libgtkglext-1.0_0-devel
+
*Imaging: python-imaging (Imaging >= 1.1.5)
+
**python-imaging-devel
+
*python-cherrypy
+
*LAPACK (see section below)
+
**lapack (LAPACK >= 3.0)
+
**liblapack3.0-devel
+
*ATLAS (>= 3.6.0)
+
*MINPACK
+
 
*Other
 
*Other
**lib64xmu6-devel
+
**<code>lib64xmu6-devel</code>
**lib64xmlrpc0
+
**<code>lib64xmlrpc0</code>
**lib64xmlrpc0-devel
+
**<code>lib64xmlrpc0-devel</code>
**xmlrpc
+
**<code>libcairo2-devel</code>
**libcairo2-devel
+
**<code>glib-gettextize</code>
**glib-gettextize
+
**<code>libglib2.0_0-devel</code>
**libglib2.0_0-devel
+
**<code>libatk1.0_0-devel</code>
**libatk1.0_0-devel
+
**<code>libpango1.0_0-devel</code>
**libpango1.0_0-devel
+
**<code>libgdk_pixbuf2.0_0-devel</code>
**libgdk_pixbuf2.0_0-devel
+
===Optional===
 +
''Note: The following programs are optional (i.e., you can still run TLSMD without them). However, they are highly recommended, if you wish to get the full analysis of a TLSMD run.''
 +
*[http://skuld.bmsc.washington.edu/raster3d/raster3d.html Raster3D]
 +
*[http://www.avatar.se/molscript/ MolScript] (includes <code>molauto</code>)
 +
*[http://www.gnuplot.info/ gnuplot]
  
===LAPACK===
+
===LAPACK / BLAS ===
 
''Note: See [http://www.netlib.org/lapack/lawn41/index.html Installation Guide for LAPACK] for detailed information.''
 
''Note: See [http://www.netlib.org/lapack/lawn41/index.html Installation Guide for LAPACK] for detailed information.''
*Download LAPACK (grab latest version of full package):
 
wget <nowiki>http://www.netlib.org/lapack/lapack-3.1.1.tgz</nowiki>
 
  
*Modify <code>make.inc</code> file for your system.
+
*Download LAPACK (grab latest version of full package; must be at least >=3.0.0):
 +
wget <nowiki>http://www.netlib.org/lapack/lapack.tgz</nowiki>
 +
tar xvf lapack.tgz && cd lapack-3.1.1/
 +
 
 +
*Modify <code>make.inc</code> file for your system. Below is an ''example'':
 +
SHELL    = /bin/sh
 +
PLAT    = _LINUX
 +
FORTRAN  = gcc -fPIC -shared
 +
OPTS    = -funroll-all-loops -O3
 +
DRVOPTS  = $(OPTS)
 +
NOOPT    =
 +
LOADER  = gcc -fPIC
 +
LOADOPTS =
 +
TIMER    = NONE  # not needed
 +
ARCH    = ar
 +
ARCHFLAGS= cr
 +
RANLIB  = ranlib
 +
BLASLIB  = ../../blas$(PLAT).a
 +
LAPACKLIB= lapack$(PLAT).a
 +
TMGLIB  = tmglib$(PLAT).a
 +
EIGSRCLIB= eigsrc$(PLAT).a
 +
LINSRCLIB= linsrc$(PLAT).a
 +
 
 
*Enter <code>SRC/</code> directory and
 
*Enter <code>SRC/</code> directory and
 
  make
 
  make
The default build will produce <code>lapack_LINUX.a</code>. However, we want a shared object (i.e., <code>lapack_LINUX.so</code>).
 
  
  nm blas_LINUX.a|more
+
*Enter <code>BLAS/SRC/</code> directory and
nm blas_LINUX.a|grep gfortran_concat_string
+
  make
  nm blas_LINUX.a|grep gfortran
+
 
  cd BLAS/
+
Note: The default build will produce <code>lapack_LINUX.a</code>. However, we want a shared object (i.e., <code>lapack.so</code>).
  cd SRC/
+
 
  vi Makefile
+
*Create shared object from archive:
  cd /home/tlsmd/src/other/lapack-3.1.1/
+
  nm lapack_LINUX.a|grep gfortran  # check that gfortran was used
 +
  mkdir tmp_lapack; cp lapack_LINUX.a tmp_lapack/; cd tmp_lapack/
 +
  ar -x lapack_LINUX.a  # extract objects from archive
 +
  gcc -fPIC -lgfortran -shared *.o -Wl,-soname,lapack.so.3.1.1 -o lapack.so.3.1.1
 +
objdump -p lapack.so.3.1.1 |grep SONAME  # should return "lapack.so.3.1.1"
 +
ldd lapack.so.3.1.1  # will show you which version of libgfortran was used
 +
 +
# Do the same for blas
 
  mkdir tmp_blas; cp blas_LINUX.a tmp_blas/; cd tmp_blas/
 
  mkdir tmp_blas; cp blas_LINUX.a tmp_blas/; cd tmp_blas/
  ar -x blas_LINUX.a # extract objects from archive
+
  ar -x blas_LINUX.a
  gcc -fPIC -lgfortran -shared *.o -Wl,-soname,blas.so -o blas_LINUX.so
+
  gcc -fPIC -lgfortran -shared *.o -W1,-soname,blas.so.3.1.1 -o blas.so.3.1.1
~OR~
+
  objdump -p blas.so.3.1.1 |grep SONAME
gcc -fPIC -lgfortran -shared *.o -W1,-soname="blas.so" -o blas.so.3.1.1
+
  ldd blas.so.3.1.1
  objdump -p blas_LINUX.so |grep SONAME
+
 
  ldd blas_LINUX.so
+
cp blas_LINUX.so /home/tlsmd/tlsmd/src/
+
gcc -fPIC -lgfortran -shared *.o -Wl,-soname,lapack.so -o lapack_LINUX.so
+
objdump -p lapack_LINUX.so |grep SONAME
+
ldd lapack_LINUX.so
+
cp lapack_LINUX.so /home/tlsmd/tlsmd/src/
+
 
*Update your <code>/etc/ld.so.cache</code> (make sure the absolute path of your newly created shared libraries are in <code>/etc/ld.so.conf</code>):
 
*Update your <code>/etc/ld.so.cache</code> (make sure the absolute path of your newly created shared libraries are in <code>/etc/ld.so.conf</code>):
 
  ldconfig  # as root
 
  ldconfig  # as root
  
 
*Symlinks: Instead of doing the following:
 
*Symlinks: Instead of doing the following:
  mv blas_LINUX.so /lib64/blas.so.3.1.1; cd !$
+
  mv lapack.so.3.1.1 /lib64/; cd !$
ln -s /lib64/blas.so.3.1.1 blas.so
+
mv lapack_LINUX.so /lib64/lapack.so.3.1.1; cd !$
+
 
  ln -s /lib64/lapack.so.3.1.1 lapack.so
 
  ln -s /lib64/lapack.so.3.1.1 lapack.so
you can let <tt>ldconfig</tt> take care of it, '''if''' you have correctly labeled SONAME's in the shared libraries you just built.
+
ln -s /lib64/lapack.so.3.1.1 lapack_LINUX.so
 +
mv blas.so.3.1.1 /lib64/; cd !$
 +
ln -s /lib64/blas.so.3.1.1 blas.so
 +
ln -s /lib64/blas.so.3.1.1 blas_LINUX.so
 +
 
 +
you can let <tt>ldconfig</tt> take care of it, '''iff''' you have correctly labeled <code>SONAME</code>'s in the shared libraries you just built.
 +
 
 +
==pymmlib installation==
 +
===Monomer libraries===
 +
Note that the monomer libraries are no longer found on the rutgers.edu website. You will need to change the following lines in <code>pymmlib/setup.py</code> under the <code>buildlib()</code> function from:
 +
    TMP_PATH = "public-component-erf.cif"
 +
    URL      = "http://pdb.rutgers.edu/public-component-erf.cif"
 +
to:
 +
    TMP_PATH = "components.cif"
 +
    URL      = "ftp://ftp.wwpdb.org/pub/pdb/data/monomers/components.cif"
 +
And then execute:
 +
python setup.py buildlib
 +
python setup.py build
 +
python setup.py install  # as root
  
 
===Build===
 
===Build===
 +
Before you build/install anything, check the following file for the correct settings (e.g., correct paths):
 +
vi pymmlib/mmLib/Constants.py
 +
 
  python setup.py buildlib
 
  python setup.py buildlib
 
  python setup.py checkdeps  # if all is good, then
 
  python setup.py checkdeps  # if all is good, then
Line 93: Line 153:
 
  export PYTHONPATH=/usr/bin/python:$HOME/tlsmd/pymmlib:$HOME/tlsmd/pymmlib/mmLib
 
  export PYTHONPATH=/usr/bin/python:$HOME/tlsmd/pymmlib:$HOME/tlsmd/pymmlib/mmLib
  
 +
==TLSMD installation==
 
===tlsmdmodule.so===
 
===tlsmdmodule.so===
 
Make the necessary changes to:
 
Make the necessary changes to:
Line 104: Line 165:
 
  tlsmd/bin/tlsmdlib/conf.py
 
  tlsmd/bin/tlsmdlib/conf.py
  
===Resources===
+
==Notes==
 
;SONAME : a soname is a field of data in a shared object file. The soname provides version backwards-compatibility information to the system. For instance, if a program requests to use version 1.0 of a shared object but the system only includes version 2.0 of that shared object, the soname field of the shared object tells the system whether it is usable in the place of version 1.0.
 
;SONAME : a soname is a field of data in a shared object file. The soname provides version backwards-compatibility information to the system. For instance, if a program requests to use version 1.0 of a shared object but the system only includes version 2.0 of that shared object, the soname field of the shared object tells the system whether it is usable in the place of version 1.0.
  
Line 124: Line 185:
 
==See also==
 
==See also==
 
*[[Python Macromolecular Library]] (mmLib)
 
*[[Python Macromolecular Library]] (mmLib)
 +
*[[Skittles]]
 +
 +
===Analysis===
 +
*[http://www.hmc.psu.edu/xraycore/secure/ccp4/tlsanl.html TLSANL] &mdash; analysis of TLS tensors and derived anisotropic U factors (part of [[:Category:Ccp4|CCP4]])
 +
*[http://www.hmc.psu.edu/xraycore/secure/ccp4/anisoanl.html ANISOANL] &mdash; analyses of anisotropic displacement parameters (part of [[:Category:Ccp4|CCP4]])
 +
*[http://skuld.bmsc.washington.edu/parvati/ PARVATI] (Protein Anisotropic Refinement Validation and Analysis Tool)
 
*[http://www.sys.uea.ac.uk/dyndom/dyndomMain.do DynDom] &mdash; a program to determine domains, hinge axes, and hinge bending residues in proteins where two conformations are available.
 
*[http://www.sys.uea.ac.uk/dyndom/dyndomMain.do DynDom] &mdash; a program to determine domains, hinge axes, and hinge bending residues in proteins where two conformations are available.
 +
*[http://schneider.group.ifom-ieo-campus.it/escet/index.html ESCET] &mdash; a script driven program to analyse and compare three-dimensional protein structures
 +
*[http://strucbio.biologie.uni-konstanz.de/ccp4wiki/index.php/Main_Page CCP4 wiki]
 +
 +
===Movement===
 +
*[http://molmovdb.org/ molmovdb.org] &mdash; a database of macromolecular movements with associated tools for flexibility and geometric analysis
 +
===Compiling===
 
*[[ar]] &mdash; create, modify, and extract from archives.
 
*[[ar]] &mdash; create, modify, and extract from archives.
 
*[[nm]] &mdash; list symbols from object files.
 
*[[nm]] &mdash; list symbols from object files.
Line 131: Line 204:
 
==References==
 
==References==
 
<references/>
 
<references/>
 +
 
==External links==
 
==External links==
 
*[http://skuld.bmsc.washington.edu/~tlsmd/ TLS Motion Determination webserver]
 
*[http://skuld.bmsc.washington.edu/~tlsmd/ TLS Motion Determination webserver]
 +
*[http://www.ohloh.net/projects/12891 ohloh - project and code analysis]
 +
===TLS refinement===
 +
*[http://www.ccp4.ac.uk/martyn/tls_research.html TLS refinement] &mdash; Dr. Martyn Winn
  
 
[[Category:Crystallography]]
 
[[Category:Crystallography]]
 +
[[Category:Portfolio]]

Latest revision as of 00:36, 13 July 2012

TLS Motion Determination (TLSMD) analyzes a protein crystal structure for evidence of flexibility, e.g. local or inter-domain motions.[1][2] It does this by partitioning the protein chains into multiple segments that are modeled as rigid bodies undergoing TLS (Translation/Libration/Screw) vibrational motion. It generates all possible partitions up to a specified maximum number of TLS groups. Each trial partition is evaluated by how well it predicts the observed atomic displacement parameters (ADPs, "thermal parameters") that came out of crystallographic refinement.

I was the lead developer and maintainer of the TLS Motion Determination (both the webserver and the standalone/CLI version, along with Python Macromolecular Library) from 2006 to 2010. I contributed 20,590 lines of code to pymmlib and TLSMD (27.8% in Python and 25.5% in Fortran). I added hundreds of new features, including Skittles,[3] which was added to the CCP4 codebase.

Note:

On 2010-02-11, we released version 1.4.0 of tlsmd.
On 2009-06-19, we released version 1.3.0 of tlsmd.
On 2008-02-15, we released version 1.0.0 of tlsmd.
On 2011-03-27, we released version 1.2.0 of pymmlib.
On 2008-02-15, we released version 1.1.0 of pymmlib.
On 2007-04-28, we released version 1.0.0 of pymmlib.

They are both available for download on sourceforge.

Description

Abstract: The TLSMD web server extracts information about dynamic properties of a protein based on information derived from a single-crystal structure. It does so by analyzing the spatial distribution of individual atomic thermal parameters present in an input structural model. The server partitions the protein structure into multiple, contiguous chain segments, each segment corresponding to one group in a multi-group description of the protein's overall dynamic motion. For each polypeptide chain of the input protein, the analysis generates the optimal partition into two segments, three segments, ... up to 20 segments. Each such partition is optimal in the sense that it is the best approximation of the overall spatial distribution of input thermal parameters in terms of N chain segments, each acting as a rigid group undergoing TLS (translation/libration/screw) motion. This multi-group TLS model may be used as a starting point for further crystallographic refinement, or as the basis for analyzing inter-domain and other large-scale motions implied by the crystal structure.[2]

Abstract: A single protein crystal structure contains information about dynamic properties of the protein as well as providing a static view of one three-dimensional conformation. This additional information is to be found in the distribution of observed electron density about the mean position of each atom. It is general practice to account for this by refining a separate atomic displacement parameter (ADP) for each atomic center. However, these same displacements are often described well by simpler models based on TLS (translation/libration/screw) rigid-body motion of large groups of atoms, for example interdomain hinge motion. A procedure, TLSMD, has been developed that analyzes the distribution of ADPs in a previously refined protein crystal structure in order to generate optimal multi-group TLS descriptions of the constituent protein chains. TLSMD is applicable to crystal structures at any resolution. The models generated by TLSMD analysis can significantly improve the standard crystallographic residuals R and Rfree and can reveal intrinsic dynamic properties of the protein.[1]

Background summary of what the TLSMD server does

The TLSMD server creates a model for molecular flexibility based on a refined protein (or RNA) crystal structure. The model is constructed by breaking each protein chain into segments, and refining a TLS (Translation/Libration/Screw) description for each segment. This formalism allows one to describe with relatively few parameters the anisotropic motions and microconformations of the crystalline protein. In many cases it produces a much better description of the crystal contents than a conventional model that tries to account for these effects by assigning a single isotropic B factor for each atom. Thus the TLSMD model often, although not always, yields better R and Rfree values and improved electron density maps. Over and above that, the component groups identified by TLSMD may yield insight into hinge motions, local conformational flexibility, and other dynamic properties of the protein relevant to its behaviour in solution as well as in the crystal.

In essence, TLSMD takes a conventional model with individual atomic B factors as input, and constructs a model that interprets those atomic B factors as arising from the motion of larger groups. In the context of the TLSMD server, you can think of the input B values as observations ("Bobs"), and the predictions from the multi-group TLS model as calculations ("Bpred"). The server helps you to choose a multi-group model that does the best job of describing the distribution of B factors in your input structural model. The TLSMD model parameters themselves can then be further refined against your diffraction data in either Refmac or PHENIX.refine.[4]

Pre-installation

Note: This section will cover the install of pymmlib, including tlsmd, on a 64-bit system running Mandriva Linux 2007.1. However, most of it should work for 32-bit systems and any other Linux distribution.

It is best to get the package as follows:

svn co https://pymmlib.svn.sourceforge.net/svnroot/pymmlib/trunk pymmlib

Dependencies

Note: It very much depends if you are running on a 32- or 64-bit machine. So, instead of, say "liblapack" (32-bit), you would install "lib64lapack" (64-bit)

  • Python (>= 2.4): python + libpython2.5-devel (if using Python 2.5)
  • NumPy (>= 0.9.6): python-numpy + python-numpy-devel
  • PyOpenGL: python-opengl
  • Gtk+-2.2 or Gtk+-2.4: libgtk+2.0_0-devel
  • PyGTK (>= 2.x): pygtk2.0-devel + python-gtkglext
  • GtkGlExt: lib64gtkglext-devel
  • PyGtkGLExt: libgtkglext-1.0_0 + libgtkglext-1.0_0-devel
  • Python Imaging Library (>= 1.1.5): python-imaging-devel
  • CherryPy: python-cherrypy
  • LAPACK (see section below; >= 3.0): lapack + liblapack3.0-devel
  • ATLAS (>= 3.6.0): atlas
  • MINPACK
  • Other
    • lib64xmu6-devel
    • lib64xmlrpc0
    • lib64xmlrpc0-devel
    • libcairo2-devel
    • glib-gettextize
    • libglib2.0_0-devel
    • libatk1.0_0-devel
    • libpango1.0_0-devel
    • libgdk_pixbuf2.0_0-devel

Optional

Note: The following programs are optional (i.e., you can still run TLSMD without them). However, they are highly recommended, if you wish to get the full analysis of a TLSMD run.

LAPACK / BLAS

Note: See Installation Guide for LAPACK for detailed information.

  • Download LAPACK (grab latest version of full package; must be at least >=3.0.0):
wget http://www.netlib.org/lapack/lapack.tgz
tar xvf lapack.tgz && cd lapack-3.1.1/
  • Modify make.inc file for your system. Below is an example:
SHELL    = /bin/sh
PLAT     = _LINUX
FORTRAN  = gcc -fPIC -shared
OPTS     = -funroll-all-loops -O3
DRVOPTS  = $(OPTS)
NOOPT    =
LOADER   = gcc -fPIC
LOADOPTS =
TIMER    = NONE  # not needed
ARCH     = ar
ARCHFLAGS= cr
RANLIB   = ranlib
BLASLIB  = ../../blas$(PLAT).a
LAPACKLIB= lapack$(PLAT).a
TMGLIB   = tmglib$(PLAT).a
EIGSRCLIB= eigsrc$(PLAT).a
LINSRCLIB= linsrc$(PLAT).a
  • Enter SRC/ directory and
make
  • Enter BLAS/SRC/ directory and
make

Note: The default build will produce lapack_LINUX.a. However, we want a shared object (i.e., lapack.so).

  • Create shared object from archive:
nm lapack_LINUX.a|grep gfortran  # check that gfortran was used
mkdir tmp_lapack; cp lapack_LINUX.a tmp_lapack/; cd tmp_lapack/
ar -x lapack_LINUX.a  # extract objects from archive
gcc -fPIC -lgfortran -shared *.o -Wl,-soname,lapack.so.3.1.1 -o lapack.so.3.1.1
objdump -p lapack.so.3.1.1 |grep SONAME  # should return "lapack.so.3.1.1"
ldd lapack.so.3.1.1   # will show you which version of libgfortran was used

# Do the same for blas
mkdir tmp_blas; cp blas_LINUX.a tmp_blas/; cd tmp_blas/
ar -x blas_LINUX.a
gcc -fPIC -lgfortran -shared *.o -W1,-soname,blas.so.3.1.1 -o blas.so.3.1.1
objdump -p blas.so.3.1.1 |grep SONAME
ldd blas.so.3.1.1
  • Update your /etc/ld.so.cache (make sure the absolute path of your newly created shared libraries are in /etc/ld.so.conf):
ldconfig  # as root
  • Symlinks: Instead of doing the following:
mv lapack.so.3.1.1 /lib64/; cd !$
ln -s /lib64/lapack.so.3.1.1 lapack.so
ln -s /lib64/lapack.so.3.1.1 lapack_LINUX.so
mv blas.so.3.1.1 /lib64/; cd !$
ln -s /lib64/blas.so.3.1.1 blas.so
ln -s /lib64/blas.so.3.1.1 blas_LINUX.so

you can let ldconfig take care of it, iff you have correctly labeled SONAME's in the shared libraries you just built.

pymmlib installation

Monomer libraries

Note that the monomer libraries are no longer found on the rutgers.edu website. You will need to change the following lines in pymmlib/setup.py under the buildlib() function from:

    TMP_PATH = "public-component-erf.cif"
    URL      = "http://pdb.rutgers.edu/public-component-erf.cif"

to:

    TMP_PATH = "components.cif"
    URL      = "ftp://ftp.wwpdb.org/pub/pdb/data/monomers/components.cif"

And then execute:

python setup.py buildlib
python setup.py build
python setup.py install  # as root

Build

Before you build/install anything, check the following file for the correct settings (e.g., correct paths):

vi pymmlib/mmLib/Constants.py
python setup.py buildlib
python setup.py checkdeps  # if all is good, then
python setup.py build      # if all is good, then
python setup.py install    # as root

Set the PYTHONPATH environment variable:

export PYTHONPATH=/usr/bin/python:$HOME/tlsmd/pymmlib:$HOME/tlsmd/pymmlib/mmLib

TLSMD installation

tlsmdmodule.so

Make the necessary changes to:

tlsmd/src/Makefile

Then,

make
make install  # creates tlsmdmodule.so and copies it to tlsmd/bin/

conf.py

Make the necessary changes to the following file:

tlsmd/bin/tlsmdlib/conf.py

Notes

SONAME 
a soname is a field of data in a shared object file. The soname provides version backwards-compatibility information to the system. For instance, if a program requests to use version 1.0 of a shared object but the system only includes version 2.0 of that shared object, the soname field of the shared object tells the system whether it is usable in the place of version 1.0.

ranlib

ranlib generates an index to the contents of an archive and stores it in the archive. The index lists each symbol defined by a member of an archive that is a relocatable object file.

You may use nm -s or nm --print-armap to list this index.

An archive with such an index speeds up linking to the library and allows routines in the library to call each other without regard to their placement in the archive.

The GNU ranlib program is another form of GNU ar; running ranlib is completely equivalent to executing ar -s.

Keywords

TLSMD; TLS motion; web server; computer programs; TLS, translation libration screw; macromolecular crystallography; protein crystallography.

See also

Analysis

  • TLSANL — analysis of TLS tensors and derived anisotropic U factors (part of CCP4)
  • ANISOANL — analyses of anisotropic displacement parameters (part of CCP4)
  • PARVATI (Protein Anisotropic Refinement Validation and Analysis Tool)
  • DynDom — a program to determine domains, hinge axes, and hinge bending residues in proteins where two conformations are available.
  • ESCET — a script driven program to analyse and compare three-dimensional protein structures
  • CCP4 wiki

Movement

  • molmovdb.org — a database of macromolecular movements with associated tools for flexibility and geometric analysis

Compiling

  • ar — create, modify, and extract from archives.
  • nm — list symbols from object files.
  • ranlib — generate index to archive.

References

  1. 1.0 1.1 Painter J, Merritt EA (2006). "Optimal description of a protein structure in terms of multiple groups undergoing TLS motion". Acta Cryst, D62(4):439-450. DOI:10.1107/S0907444906005270 .
  2. 2.0 2.1 Painter J, Merritt EA (2006). "TLSMD web server for the generation of multi-group TLS models". J Appl Cryst, 39(1):109-111. DOI:10.1107/S0021889805038987
  3. Zucker F, Champ PC, Merritt EA (2010). "Validation of crystallographic models containing TLS or other descriptions of anisotropy". Acta Cryst. D66, 889-900. DOI:10.1107/S0907444910020421
  4. Merritt EA (2008). New higher-throughput server for TLSMD analysis. CCP4 Bulletin Board.

External links

TLS refinement