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 residue equivalency (i.e., based on the residue index in the PDB file).
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;
however, the TM-score value reported by TM-align is usually higher than that reported by TM-score
program due to the optimized alignment in TM-align.
- 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).