TLSMD
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.
Note: On 2008-02-15, we released versions 1.1.0 of pymmlib and 1.0.0 of tlsmd. They are both available for download on sourceforge.
Contents
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.[3]
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
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
- Python Macromolecular Library (mmLib)
- DynDom — a program to determine domains, hinge axes, and hinge bending residues in proteins where two conformations are available.
- ar — create, modify, and extract from archives.
- nm — list symbols from object files.
- ranlib — generate index to archive.
References
- ↑ 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.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
- ↑ Merritt EA (2008). New higher-throughput server for TLSMD analysis. CCP4 Bulletin Board.