Hello List,
Maybe useful, maybe not Here is a small py script for filling nucleotides with colored CGO objects. I just tried it on the pdb file 127D. Of course not as efficient as Nuccyl!!! But I couldnt find out how to run perl scripts on my Windows-running PC, and this is exactly (and only) what I needed. Just run the script, and type DrawNT in the PyMol command line. 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] 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) # 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) # 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.delete("chain1") cmd.set_view(CurrentView) cmd.extend("DrawNT",DrawNT)