Same script, but with hydrogen bonds between nucleotides.

Load the pdb file 127D, run the script and type ‘DrawNT’ in PyMol command
line…

 

 

I have a question, maybe Warren you can answer:

I wanted to use the set_color command to define a new color for the Hydrogen
bonds (MyRGBColor = [x,y,z] and then cmd.set_color(“MyColor”, MyRGBColor))

And finally apply the created color to the Hydrogen bonds
(cmd.distance('MyDistance', Selection1, Selection2) and then
cmd.color("MyColor", "MyDistance"))

The question is: how can I then delete the created MyColor object? I tried
the cmd.delete command, it does not generate an error but apparently the
color is still defined… Any idea?!

 

 

 

Cheers,


Greg

 

 

 

 

from pymol import cmd

from pymol.cgo import *

from Numeric import *

import sys,re

 

# COLOR SETTINGS:

AColor=[0.2,1,0.2]

TColor=[1,0.2,0.2]

CColor=[0.3,0.3,1]

GColor=[1,0.55,0.15]

HColor=”magenta”

 

def DrawNT(select="all"):

    CurrentView = cmd.get_view(1)

    CurrentResi = 0

    FirstRun = 1

    NTPlate = [BEGIN,TRIANGLE_FAN]

 

# THYMINE

    BaseT = cmd.get_model("resn T")

    for atoms in BaseT.atom:

        if (CurrentResi != atoms.resi):

            CurrentResi = atoms.resi

            if FirstRun == 0:

                NTPlate.append(END)

                NTPlate.extend([BEGIN,TRIANGLE_FAN])

                NTPlate.extend([COLOR]+TColor)

            else:

                NTPlate.extend([COLOR]+TColor)

                FirstRun = 0

        if (atoms.name == "N1") or (atoms.name == "C2") or (atoms.name ==
"N3") or (atoms.name == "C4") or (atoms.name == "C5") or (atoms.name ==
"C6"):        

            NTPlate.extend([VERTEX] + atoms.coord)

        if atoms.name == "N3":

            Sel1 =
'%s/%s/%s/%s'%(atoms.segi,atoms.chain,atoms.resi,atoms.name)

            cmd.select('Sel2','%s around 3.1 and name N1 and not chain
%s'%(Sel1,atoms.chain))

            cmd.distance('Dst', Sel1, "Sel2")

        elif atoms.name == "O4":

            Sel1 =
'%s/%s/%s/%s'%(atoms.segi,atoms.chain,atoms.resi,atoms.name)

            cmd.select('Sel2','%s around 3.1 and name N6 and not chain
%s'%(Sel1,atoms.chain))

            cmd.distance('Dst', Sel1, "Sel2")

# ADENINE

    BaseA = cmd.get_model("resn A")

    for atoms in BaseA.atom:

        if (CurrentResi != atoms.resi):

            CurrentResi = atoms.resi

            if FirstRun == 0:

                NTPlate.append(END)

                NTPlate.extend([BEGIN,TRIANGLE_FAN])

                NTPlate.extend([COLOR]+AColor)

            else:

                NTPlate.extend([COLOR]+AColor)

                FirstRun = 0

        if (atoms.name == "N1") or (atoms.name == "C2") or (atoms.name ==
"N3") or (atoms.name == "C4") or (atoms.name == "C5") or (atoms.name ==
"C6"):            

            NTPlate.extend([VERTEX] + atoms.coord)

            if (atoms.name == "C4"):

                TmpC4 = atoms.coord

            elif (atoms.name == "C5"):

                TmpC5 = atoms.coord

        elif (atoms.name == "N7"):

            NTPlate.append(END)

            NTPlate.extend([BEGIN,TRIANGLE_FAN])

            NTPlate.extend([COLOR]+AColor)

            NTPlate.extend([VERTEX] + TmpC4)

            NTPlate.extend([VERTEX] + TmpC5)

            NTPlate.extend([VERTEX] + atoms.coord)

        elif (atoms.name == "C8") or (atoms.name == "N9"):

            NTPlate.extend([VERTEX] + atoms.coord)

 

# CYTOSINE

    BaseC = cmd.get_model("resn C")

    for atoms in BaseC.atom:

        if (CurrentResi != atoms.resi):

            CurrentResi = atoms.resi

            if FirstRun == 0:

                NTPlate.append(END)

                NTPlate.extend([BEGIN,TRIANGLE_FAN])

                NTPlate.extend([COLOR]+CColor)

            else:

                NTPlate.extend([COLOR]+CColor)

                FirstRun = 0

        if (atoms.name == "N1") or (atoms.name == "C2") or (atoms.name ==
"N3") or (atoms.name == "C4") or (atoms.name == "C5") or (atoms.name ==
"C6"):        

            NTPlate.extend([VERTEX] + atoms.coord)

        if atoms.name == "O2":

            Sel1 =
'%s/%s/%s/%s'%(atoms.segi,atoms.chain,atoms.resi,atoms.name)

            cmd.select('Sel2','%s around 3.1 and name N2 and not chain
%s'%(Sel1,atoms.chain))

            cmd.distance('Dst', Sel1, "Sel2")

        elif atoms.name == "N3":

            Sel1 =
'%s/%s/%s/%s'%(atoms.segi,atoms.chain,atoms.resi,atoms.name)

            cmd.select('Sel2','%s around 3.1 and name N1 and not chain
%s'%(Sel1,atoms.chain))

            cmd.distance('Dst', Sel1, "Sel2")

        elif atoms.name == "N4":

            Sel1 =
'%s/%s/%s/%s'%(atoms.segi,atoms.chain,atoms.resi,atoms.name)

            cmd.select('Sel2','%s around 3.1 and name O6 and not chain
%s'%(Sel1,atoms.chain))

            cmd.distance('Dst', Sel1, "Sel2")

 

# GUANINE

    BaseG = cmd.get_model("resn G")

    for atoms in BaseG.atom:

        if (CurrentResi != atoms.resi):

            CurrentResi = atoms.resi

            if FirstRun == 0:

                NTPlate.append(END)

                NTPlate.extend([BEGIN,TRIANGLE_FAN])

                NTPlate.extend([COLOR]+GColor)

            else:

                NTPlate.extend([COLOR]+GColor)

                FirstRun = 0

        if (atoms.name == "N1") or (atoms.name == "C2") or (atoms.name ==
"N3") or (atoms.name == "C4") or (atoms.name == "C5") or (atoms.name ==
"C6"):

            NTPlate.extend([VERTEX] + atoms.coord)

            if (atoms.name == "C4"):

                TmpC4 = atoms.coord

            elif (atoms.name == "C5"):

                TmpC5 = atoms.coord

        elif (atoms.name == "N7"):

            NTPlate.append(END)

            NTPlate.extend([BEGIN,TRIANGLE_FAN])

            NTPlate.extend([COLOR]+GColor)

            NTPlate.extend([VERTEX] + TmpC4)

            NTPlate.extend([VERTEX] + TmpC5)

            NTPlate.extend([VERTEX] + atoms.coord)

        elif (atoms.name == "C8") or (atoms.name == "N9"):

            NTPlate.extend([VERTEX] + atoms.coord)

    NTPlate.append(END)

    cmd.load_cgo(NTPlate,"PLAIN_NT")

    cmd.select("chain1", "name C3*+C4*+C5*+O5*+P+O3*")

    cmd.show("cartoon", "chain1")

    cmd.cartoon("dumbbell", "chain1")

    cmd.set("cartoon_nucleic_acid_mode", 1, "chain1")

    cmd.delete("chain1")

    cmd.hide("label", "Dst")

    cmd.color(HColor, "Dst")

    cmd.delete("Sel2")

    cmd.set_view(CurrentView)

cmd.extend("DrawNT",DrawNT)

Reply via email to