TLS Motion Determination (TLSMD) analyzes a protein crystal structure for evidence of flexibility, e.g. local or inter-domain motions. 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, which was added to the CCP4 codebase.
On 2010-02-11, we released version 1.4.0 of tlsmd.They are both available for download on sourceforge.
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.
- 1 Description
- 2 Pre-installation
- 3 pymmlib installation
- 4 TLSMD installation
- 5 Notes
- 6 Keywords
- 7 See also
- 8 References
- 9 External links
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
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 "
- Python (>= 2.4):
python + libpython2.5-devel(if using Python 2.5)
- NumPy (>= 0.9.6):
python-numpy + python-numpy-devel
- Gtk+-2.2 or Gtk+-2.4:
- PyGTK (>= 2.x):
pygtk2.0-devel + python-gtkglext
libgtkglext-1.0_0 + libgtkglext-1.0_0-devel
- Python Imaging Library (>= 1.1.5):
- LAPACK (see section below; >= 3.0):
lapack + liblapack3.0-devel
- ATLAS (>= 3.6.0):
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/
make.incfile 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
Note: The default build will produce
lapack_LINUX.a. However, we want a shared object (i.e.,
- 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
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.
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"
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
Before you build/install anything, check the following file for the correct settings (e.g., correct paths):
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
PYTHONPATH environment variable:
Make the necessary changes to:
make make install # creates tlsmdmodule.so and copies it to tlsmd/bin/
Make the necessary changes to the following file:
- 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 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.
TLSMD; TLS motion; web server; computer programs; TLS, translation libration screw; macromolecular crystallography; protein crystallography.
- 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
- molmovdb.org — a database of macromolecular movements with associated tools for flexibility and geometric analysis
- ar — create, modify, and extract from archives.
- nm — list symbols from object files.
- ranlib — generate index to archive.
- 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 .
- 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
- 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
- Merritt EA (2008). New higher-throughput server for TLSMD analysis. CCP4 Bulletin Board.
- TLS refinement — Dr. Martyn Winn