Zero residues

From PyMOLWiki
Revision as of 13:33, 7 May 2007 by Inchoate (talk | contribs)
Jump to: navigation, search


This script will renumber all the residues such that the first one is numbered 0. This is often helpful when dealing with alignments.


zero_residues 1AFK
zero_residues *


Copy the source code below, to "" and then simply run the file. The command, "zero_residues" will now be defined and can be used as in the examples above.


import pymol

def zero_residues(sel1,offset=0):
        PURPOSE: renumbers the residues so that the first one is zero, or offset           .
        USAGE: zero_residues protName    # first residue is 0
        USAGE: zero_residues protName, 5 # first residue is 5
        EXAMPLE: zero_residues *
        offset = int(offset)

        # variable to store the offset
        stored.first = None
        # get the names of the proteins in the selection
        names = cmd.get_names(sel1)

        # for each name shown
        for p in names:
                # get this offset
                cmd.iterate("first %s and polymer and n. CA" % p,"stored.first=resi")
                # don't waste time if we don't have to
                if ( stored.first == offset ):
                # reassign the residue numbers
                cmd.alter("%s" % p, "resi=str(int(resi)-%s)" % str(int(stored.first)-offset))
                # update pymol

# let pymol know about the function
cmd.extend("zero_residues", zero_residues)