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.