Python implementation of the TMscore program to compare structures of the same protein.
We provide three classes, TMscoring
, Sscoring
, and RMSDscoring
, that only differ in their default
optimisation score.
They are initialised with the file paths to two PDB files:
alignment = tmscoring.TMscoring('structure1.pdb', 'structure2.pdb')
# Find the optimal alignment
alignment.optimise()
# Get the TM score:
alignment.tmscore(**alignment.get_current_values())
# Get the TM local scores:
alignment.tmscore_samples(**alignment.get_current_values())
# RMSD of the protein aligned according to TM score
alignment.rmsd(**alignment.get_current_values())
# Returns the transformation matrix between both structures:
alignment.get_matrix(**alignment.get_current_values())
# Save the aligned files:
alignment.write(outputfile='aligned.pdb', appended=True)
The structures can be matched by index (default), or performing a global sequence alignment with Smith-Waterman using a match score of 2, mismatch of -1, a gap penalty of -0.5 for opening and -0.1 for extending.
get_tm(path_to_pdb1, path_to_pdb2)
and get_rmsd(pdb1, pdb2)
are simple wrappers that compute TM score or RMSD.
tmscoring is a Python library that conveniently exposes all the necessary variables. This removes the necessity to parse files.
Also, the minimisation engine is MINUIT's Migrad, a powerful and robust derivative-free minimisation algorithm,
heavily tested by particle physicists for decades.
In our testing, tmscoring
yields the same or slightly better scores than upstream TMscore
.