This is a read-only mirror of pymolwiki.org

Difference between revisions of "ColorByRMSD"

From PyMOL Wiki
Jump to navigation Jump to search
(→‎Code: Formatting)
m (26 revisions)
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
{{Infobox script-repo
 +
|type      = Python Module
 +
|filename  = colorbyrmsd.py
 +
|author    = [[User:Shiven|Shivender Shandilya]], [[User:Inchoate|Jason Vertrees]], [[User:Speleo3|Thomas Holder]]
 +
|license  = BSD-2-Clause
 +
}}
 +
 
== Introduction ==
 
== Introduction ==
−
This script allows you to color two structures by Root Mean Square Deviation (RMSD), as calculated by PyMol's internal [[Rms_Cur]] command. The pairwise, C-alpha, RMSD is calculated only between those residues which are first used by PyMol's internal [[Super]] command to superpose the two structures. The RMSD values are stored as B-factors of these residues, which are colored by a ''rainbow'' color spectrum, with blue specifying the minimum pairwise RMSD and red indicating the maximum. Residues ''NOT'' used by [[Super]] for superposition, and hence for RMSD calculation, are colored ''white''.
+
This script allows you to color two structures by Root Mean Square Deviation (RMSD).
 +
The distances between aligned C-alpha atom pairs are stored as B-factors of these residues, which are colored by a color spectrum, with blue specifying the minimum pairwise RMSD and red indicating the maximum.
 +
Unaligned residues are colored gray.
  
−
== Code ==
+
== Usage ==
−
Please use this script with the option '''doPretty=T''' to gain the most benefit. Additionally, setting [[Cartoon]] representation to ''loop'', with the command: <source lang="python"> cartoon loop </source> may help ease comparisons. Do keep in mind, all original B-factors values are overwritten!
 
  
−
==== Examples ====
+
colorbyrmsd mobile, target [, doAlign [, doPretty [, guide [, method ]]]]
 +
 
 +
== Arguments ==
 +
 
 +
* '''mobile''' = string: atom selection for mobile atoms
 +
* '''target''' = string: atom selection for target atoms
 +
* '''doAlign''' = 0 or 1: Superpose selections before calculating distances {default: 1}
 +
* '''doPretty''' = 0 or 1: Show nice representation and colors {default: 1}
 +
* '''guide''' = 0 or 1: Only use C-alpha atoms {default: 1}
 +
* '''method''' = align or super: Method to match atoms {default: super}
 +
 
 +
== Examples ==
 
<source lang="python">
 
<source lang="python">
 
# example #1
 
# example #1
−
colorByRMSD 1cbs, 1hmt, doAlign=T, doPretty=T
+
colorbyrmsd 1cbs, 1hmt, doAlign=1, doPretty=1
 
# example #2
 
# example #2
−
colorByRMSD 1eaz, 1fao, doAlign=T, doPretty=T
+
colorbyrmsd 1eaz, 1fao, doAlign=1, doPretty=1
 
</source>
 
</source>
  
Line 17: Line 36:
 
Image:ColorByRMSD_1eaz_1fao.png|1eaz and 1fao aligned and colored by RMSD.  Dark blue is good alignment, higher deviations are in orange/yellow/red. Residues not used for alignment are colored white.
 
Image:ColorByRMSD_1eaz_1fao.png|1eaz and 1fao aligned and colored by RMSD.  Dark blue is good alignment, higher deviations are in orange/yellow/red. Residues not used for alignment are colored white.
 
</gallery>
 
</gallery>
−
 
−
<source lang="python">
 
−
"""
 
−
--- ColorByRMSD: RMSD based coloring ---
 
−
Authors : Shivender Shandilya; Jason Vertrees
 
−
Program : ColorByRMSD
 
−
Date    : July 2009
 
−
Version : 0.1.1
 
−
Mail    : firstname.lastname@umassmed.edu
 
−
 
−
Keywords: color rms rmsd colorbyrms colorbyrmsd
 
−
----------------------------------------------------------------------
 
−
Reference:
 
−
This email from Warren - http://www.mail-archive.com/pymol-users@lists.sourceforge.net/msg07078.html
 
−
Literature:
 
−
DeLano, W.L. The PyMOL Molecular Graphics System (2002) DeLano Scientific, San Carlos, CA, USA. http://www.pymol.org
 
−
----------------------------------------------------------------------
 
−
"""
 
−
 
−
import pymol
 
−
import cmd
 
−
from pymol import stored
 
−
 
−
def strTrue(p):
 
−
    return p[0].upper() == "T"
 
−
 
−
# The main function that assigns current RMSD as the new B-factor
 
−
def rmsUpdateB(objA, alnAri, objB, alnBri):
 
−
    for x in range(len(alnAri)):
 
−
        s1 = objA + " and n. CA and i. " + alnAri[x]
 
−
        s2 = objB + " and n. CA and i. " + alnBri[x]
 
−
        rmsd = cmd.rms_cur(s1, s2, matchmaker=4)
 
−
        cmd.alter( s1, "b = " + str(rmsd))
 
−
        cmd.alter( s2, "b = " + str(rmsd))
 
−
    cmd.sort(objA); cmd.sort(objB)
 
−
 
−
 
−
def colorByRMSD(objSel1, objSel2, doAlign="True", doPretty=None):
 
−
    """
 
−
    colorByRMSD -- align two structures and show the structural deviations
 
−
                  in color to more easily see variable regions.
 
−
 
−
    PARAMS
 
−
 
−
        objSel1 (valid PyMOL object or selection)
 
−
            The first object to align. 
 
−
 
−
        objSel2 (valid PyMOL object or selection)
 
−
            The second object to align
 
−
 
−
        doAlign (boolean, either True or False)
 
−
            Should this script align your proteins or just leave them as is?
 
−
            If doAlign=True then your original proteins are aligned.
 
−
            If False, then they are not. Regardless, the B-factors are changed.
 
−
            DEFAULT: True
 
−
 
−
        doPretty (boolean, either True or False)
 
−
            If doPretty=True then a simple representation is created to
 
−
            highlight the differences.  If False, then no changes are made.
 
−
            DEFAULT: False
 
−
 
−
    RETURNS
 
−
        None.
 
−
 
−
    SIDE-EFFECTS
 
−
        Modifies the B-factor columns in your original structures.
 
−
 
−
    """
 
−
    # First create backup copies; names starting with __ (underscores) are
 
−
    # normally hidden by PyMOL
 
−
    tObj1, tObj2, aln = "__tempObj1", "__tempObj2", "__aln"
 
−
 
−
    if strTrue(doAlign):
 
−
        # perform the alignment
 
−
        cmd.create( tObj1, objSel1 )
 
−
        cmd.create( tObj2, objSel2 )
 
−
        cmd.super( tObj1, tObj2, object=aln )
 
−
        cmd.matrix_copy(tObj1, objSel1)
 
−
    else:
 
−
        # perform the alignment
 
−
        cmd.create( tObj1, objSel1 )
 
−
        cmd.create( tObj2, objSel2 )
 
−
        cmd.super( tObj1, tObj2, object=aln )
 
−
 
−
    # Modify the B-factor columns of the original objects,
 
−
    # in order to identify the residues NOT used for alignment, later on
 
−
    cmd.alter( objSel1 + " or " + objSel2, "b=-10")
 
−
    cmd.alter( tObj1 + " or " + tObj2, "chain='A'")
 
−
    cmd.alter( tObj1 + " or " + tObj2, "segi='A'")
 
−
 
−
    # Update pymol internal representations; one of these should do the trick
 
−
    cmd.refresh(); cmd.rebuild(); cmd.sort(tObj1); cmd.sort(tObj2)
 
−
 
−
    #  Create lists for storage
 
−
    stored.alnAres, stored.alnBres = [], []
 
−
 
−
    #  Get the residue identifiers from the alignment object "aln"
 
−
    cmd.iterate(tObj1 + " and n. CA and " + aln, "stored.alnAres.append(resi)")
 
−
    cmd.iterate(tObj2 + " and n. CA and " + aln, "stored.alnBres.append(resi)")
 
−
 
−
    # Change the B-factors for EACH object
 
−
    rmsUpdateB(tObj1,stored.alnAres,tObj2,stored.alnBres)
 
−
 
−
    # Store the NEW B-factors
 
−
    stored.alnAnb, stored.alnBnb = [], []
 
−
    cmd.iterate(tObj1 + " and n. CA and " + aln, "stored.alnAnb.append(b)" )
 
−
    cmd.iterate(tObj2 + " and n. CA and " + aln, "stored.alnBnb.append(b)" )
 
−
 
−
    # Get rid of all intermediate objects and clean up
 
−
    cmd.delete(tObj1)
 
−
    cmd.delete(tObj2)
 
−
    cmd.delete(aln)
 
−
 
−
    # Assign the just stored NEW B-factors to the original objects
 
−
    for x in range(len(stored.alnAres)):
 
−
        cmd.alter(objSel1 + " and n. CA and i. " + str(stored.alnAres[x]), "b = " + str(stored.alnAnb[x]))
 
−
    for x in range(len(stored.alnBres)):
 
−
        cmd.alter(objSel2 + " and n. CA and i. " + str(stored.alnBres[x]), "b = " + str(stored.alnBnb[x]))
 
−
    cmd.rebuild(); cmd.refresh(); cmd.sort(objSel1); cmd.sort(objSel2)
 
−
 
−
    # Provide some useful information
 
−
    stored.allRMSDval = []
 
−
    stored.allRMSDval = stored.alnAnb + stored.alnBnb
 
−
    print "\nColorByRMSD completed successfully."
 
−
    print "The MINIMUM RMSD value is: "+str(min(stored.allRMSDval))
 
−
    print "The MAXIMUM RMSD value is: "+str(max(stored.allRMSDval))
 
−
 
−
    if doPretty!=None:
 
−
        # Showcase what we did
 
−
        cmd.orient()
 
−
        cmd.hide("all")
 
−
        cmd.show_as("cartoon", objSel1 + " or " + objSel2)
 
−
        # Select the residues not used for alignment; they still have their B-factors as "-10"
 
−
        cmd.select("notUsedForAln", "b < 0")
 
−
# White-wash the residues not used for alignment
 
−
cmd.color("white", "notUsedForAln")
 
−
# Color the residues used for alignment according to their B-factors (RMSD values)
 
−
        cmd.spectrum("b", 'rainbow',  "((" + objSel1 + " and n. CA) or (n. CA and " + objSel2 +" )) and not notUsedForAln")
 
−
        # Delete the selection of atoms not used for alignment
 
−
        # If you would like to keep this selection intact,
 
−
        # just comment "cmd.delete" line and
 
−
        # uncomment the "cmd.disable" line below.
 
−
        cmd.delete("notUsedForAln")
 
−
        # cmd.disable("notUsedForAln")
 
−
 
−
        print "\nObjects are now colored by C-alpha RMS deviation."
 
−
        print "All residues with RMSD values greater than the maximum are colored white..."
 
−
 
−
cmd.extend("colorByRMSD", colorByRMSD)
 
−
</source>
 
  
 
[[Category:Script_Library]]
 
[[Category:Script_Library]]
 
[[Category:Structural_Biology_Scripts]]
 
[[Category:Structural_Biology_Scripts]]
 +
[[Category:Pymol-script-repo]]

Latest revision as of 01:21, 28 March 2014

Type Python Module
Download colorbyrmsd.py
Author(s) Shivender Shandilya, Jason Vertrees, Thomas Holder
License BSD-2-Clause
This code has been put under version control in the project Pymol-script-repo

Introduction

This script allows you to color two structures by Root Mean Square Deviation (RMSD). The distances between aligned C-alpha atom pairs are stored as B-factors of these residues, which are colored by a color spectrum, with blue specifying the minimum pairwise RMSD and red indicating the maximum. Unaligned residues are colored gray.

Usage

colorbyrmsd mobile, target [, doAlign [, doPretty [, guide [, method ]]]]

Arguments

  • mobile = string: atom selection for mobile atoms
  • target = string: atom selection for target atoms
  • doAlign = 0 or 1: Superpose selections before calculating distances {default: 1}
  • doPretty = 0 or 1: Show nice representation and colors {default: 1}
  • guide = 0 or 1: Only use C-alpha atoms {default: 1}
  • method = align or super: Method to match atoms {default: super}

Examples

# example #1
colorbyrmsd 1cbs, 1hmt, doAlign=1, doPretty=1
# example #2
colorbyrmsd 1eaz, 1fao, doAlign=1, doPretty=1