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):
CurrentRes