Skip to content

MurrellGroup/TMscore.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TMscore

Build Status

Installation

using Pkg
Pkg.add("TMscore")

Usage

The tmscore function can take .pdb files, .cif files, BioStructures.jl objects, or any combination of these.

using TMscore
using BioStructures

downloadpdb(["1CRN", "1EJG"])
tmscore("1CRN.pdb", "1EJG.pdb") # 0.9975

downloadpdb(["1CRN", "1EJG"]; format=MMCIFFormat)
tmscore("1CRN.cif", "1EJG.cif") # 0.9975

struc1 = retrievepdb("1CRN"; format=MMCIFFormat)
struc2 = retrievepdb("1EJG"; format=MMCIFFormat)
tmscore(struc1, struc2) # 0.9975

tmscore(struc1, "1EJG.cif") # 0.9975

The run_tmscore function returns a TMscoreResult with pretty-printing for showing the original output from the binary:

julia> run_tmscore("1CRN.pdb", "1EJG.pdb")
TMscoreResult("""

 *************************************************************************
 *                                 TM-SCORE                              *
 * A scoring function to assess the similarity of protein structures     *
 * Based on statistics:                                                  *
 *       0.0 < TM-score < 0.17, random structural similarity             *
 *       0.5 < TM-score < 1.00, in about the same fold                   *
 * Reference: Yang Zhang and Jeffrey Skolnick, Proteins 2004 57: 702-710 *
 * For comments, please email to: yangzhanglab@umich.edu                 *
 *************************************************************************

Structure1: 1CRN.pdb    Length=   46
Structure2: 1EJG.pdb    Length=   46 (by which all scores are normalized)
Number of residues in common=   46
RMSD of  the common residues=    0.106

TM-score    = 0.9975  (d0= 2.10)
MaxSub-score= 0.9991  (d0= 3.50)
GDT-TS-score= 1.0000 %(d<1)=1.0000 %(d<2)=1.0000 %(d<4)=1.0000 %(d<8)=1.0000
GDT-HA-score= 1.0000 %(d<0.5)=1.0000 %(d<1)=1.0000 %(d<2)=1.0000 %(d<4)=1.0000

 -------- rotation matrix to rotate Chain-1 to Chain-2 ------
 i          t(i)         u(i,1)         u(i,2)         u(i,3)
 1     -0.0392522747   0.9999885471  -0.0021262047   0.0042877688
 2     -0.0580775348   0.0021360752   0.9999950764  -0.0022987559
 3     -0.0385006946  -0.0042828601   0.0023078886   0.9999881653

Superposition in the TM-score: Length(d<5.0)= 46
(":" denotes the residue pairs of distance < 5.0 Angstrom)
TTCCPSIVARSNFNVCRLPGTPEAICATYTGCIIIPGATCPGDYAN
::::::::::::::::::::::::::::::::::::::::::::::
TTCCPSIVARSNFNVCRLPGTPEALCATYTGCIIIPGATCPGDYAN
1234567890123456789012345678901234567890123456

""")

The fields are as follows:

struct TMscoreResult
    output::String           # raw output from TMscore
    len1::Int                # length of structure 1
    len2::Int                # length of structure 2
    common::Int              # number of residues in common
    rmsd::Float64            # RMSD over the common residues
    tmscore::Float64         # TM‐score
    d0::Float64              # d0 distance
    maxsub::Float64          # MaxSub‐score
    maxsub_d0::Float64       # MaxSub d0
    gdt_ts::Float64          # GDT‐TS score
    gdt_ts_thresholds::Dict{Float64,Float64}  # (d<1, d<2, d<4, d<8) → value
    gdt_ha::Float64          # GDT‐HA score
    gdt_ha_thresholds::Dict{Float64,Float64}  # (d<0.5, d<1, d<2, d<4) → value
    rotation::Matrix{Float64}    # 3×3 rotation matrix
    translation::Vector{Float64} # length‐3 translation vector
end

About

Julia binding to the TMscore binary for calculating TM-score between proteins

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages