TM-score is a metric for measuring the similarity of two protein structures.
It is designed to solve two major problems in traditional metrics such as
root-mean-square deviation (RMSD): (1) TM-score measures the global fold similarity and
is less sensitive to the local structural variations;
(2) magnitude of TM-score for random structure pairs is length-independent.
TM-score has the value in (0,1], where 1 indicates a perfect match between two structures.
Following strict statistics of structures in the PDB,
scores below 0.17 correspond to randomly chosen unrelated proteins whereas structures with a score
higher than 0.5 assume generally the same fold in SCOP/CATH.
TM-score allows for input structure with
PDBx/mmCIF format. Meanwhile
C++ version of TM-score
is available now.
- Click TMscore.f
to download the newest version of the TM-score source code
in Fortran77 (or C++).
You can compile the program in your Linux computer by
(you can ignore the '-static' option for some machines,
such as Mac, which does not support static build):
>gfortran -static -O3 -ffast-math -lm -o TMscore TMscore.f
>g77 -static -O3 -lm -o TMscore TMscore.f
>g++ -static -O3 -ffast-math -lm -o TMscore TMscore.cpp
Click TMscore to download the executable program
for Linux system. Nevertheless, it is recommended to download
the TM-score source code and compile it on your machine, which gives you
higher speed to run the program (See above step).
- Click TMscore_subroutine.f to download the subroutine code that can quickly calculate TM-score and be conveniently included as a subroutine in any Fortran program.
- Click RMSD.f to download the source code for calculating RMSD only.
- Click TMscore.jar.tar.gz to download a java version of the TM-score program
(last update: 2012/05/02).
TM-score other information
- Click TM-score Help
to view a brief instruction on how to run TM-score program.
- Click here to view Frequently Asked Questions on TM-score.
- What is the difference between TM-score and TM-align?
The TM-score program is to compare two models based on their given and
known residue equivalency. It is usually NOT applied to compare
two proteins of different sequences.
The TM-align is a structural alignment program for comparing two proteins
whose sequences can be different. The TM-align will first find the
best equivalent residues of two proteins based on the structure similarity
and then output a TM-score.
The TM-score values in both programs have the same definition.
- Why is TM-score different when normalized by different proteins?
Suppose we compare the following two structures:
Apparently, the structural similarity is a relative quality in this example, i.e.,
the structural similarity (i.e., the full-match in the N-terminal domain) is 100% to the
second structure while the similarity is only 50%
relative to the first structure.
This is the reason that we need to specify which protein the TM-score is normalized by,
when we report a TM-score value. Be default, TM-score program reports the TM-score
that is normalized by the length of the second protein.
Update history (please always download the newest version of TMscore.f and TMscore programs):
- 2005/10/19: the program was reformed so that the score values.
are not dependent on the specific compilers.
- 2006/06/20: selected 'A' if there is altLoc when reading PDB file.
- 2007/02/05: fixed a bug with length<15 in TMscore_32.
- 2007/02/27: rotation matrix from Chain-1 to Chain-2 was added.
- 2007/12/06: GDT-HA score was added, fixed a bug for reading PDB.
- 2010/08/02: A new RMSD matrix was used and obsolete statement removed.
- 2011/01/03: The length of pdb file names were extended to 500.
- 2011/01/30: An open source license is attached to the program.
- 2012/05/07: Improved RMSD calculation subroutine which speeds up TM-score
program by 30%.
- 2012/06/05: Added an option '-l L' which calculates TM-score
(and maxub and GDT scores) normalized by a specific length 'L'.
- 2012/12/17: Added 'TM.sup_atm' to superpose full-atom structures.
The former superposition is for CA-trace only.
- 2013/05/08: Update TM-score so that it can read all alternate location
indicators and residue insertions.
- 2013/05/11: Fix a bug in array overflow.
- 2016/03/23: Extended the program to allow calculating TM-score for
complex structure comparisons, where multiple-chains are
merged into a single chain. Real chain ID
(instead of artificial ones) is now included in the output files.
- 2019/07/08: Enabled TM-score to support both PDB and mmCIF formats,
and updated structure reading which makes program faster.
- 2019/08/18: Fixed multiple bugs associated with mmCIF formats.
- 2019/08/22: added output scripts for pymol, C++ version was included.
- Y. Zhang, J. Skolnick, Scoring function for automated assessment of
protein structure template quality, Proteins, 57: 702-710 (2004)
(download the PDF file and Correction).
- J. Xu, Y. Zhang, How significant is a protein structure similarity with TM-score=0.5?
Bioinformatics, 26, 889-895 (2010)
(download the PDF file).