Hi Bondurant,
I really like the merging of the graphic beauty of pymol with the detailed
depictions of reduce and probe. I have a method that is a bit clunky for
doing what you ask, but I don't know if it ever made it to the mainstream
in MolProbity. The caveat of wanting to work with a ligand makes it a bit
harder to explain so my apologies in advance if things aren't 100% clear
but here goes....
1. Make sure you have a reduce definition file for your ligand. If the
ligand had been deposited in the PDB before ~2012 then the
reduce_wwPDB_het_dict file found (
http://kinemage.biochem.duke.edu/software/reduce.php) should have it,
otherwise here's an example:
RESIDUE ACP 11
CONECT P 4 O1 O2 O3 O4
CONECT O1 1 P
CONECT O2 1 P
CONECT O3 1 P
CONECT O4 2 P C1
CONECT C1 3 O4 O5 C2
CONECT O5 1 C1
CONECT C2 4 C1 HC1 HC2 HC3
CONECT HCH1 1 C2
CONECT HCH2 1 C2
CONECT HCH3 1 C2
END
HET ACP 8
HETNAM ACP ACETYL PHOSPHATE
FORMUL ACP C2 H3 O5 P1 2-
2. download the reduce and probe executables also from
http://kinemage.biochem.duke.edu/
3. run reduce make sure to use the -DB flag to input your ligand dictionary
4. run probe with a command something like:
probe -both "chaina 88 (ATOM_OG1 | ATOM_HG1)" "chainx 1" CheY_A88T_AcP_H.pdb
Where chain A in this case is the protein and the hydroxyl of Thr 88 is the
only relevant interacting group with chain X the ligand.
5. convert the probe output to a python script to render the cgo objects in
pymol using the attached perl script. ./probe_to_cgo [input probe dots]
[output pymol cgo]
6. use the run command in pymol to execute the python script and draw the
cgo output.
If this all works the first go then amazing! If not I can try to help get
things working, but it's been a few years since I last used these tools.
Best of Luck!
-bob
On Fri, Aug 29, 2014 at 10:30 AM, Bondurant <bondurant...@gmail.com> wrote:
> Hello community,
> I would like to draw a figure similar to this one
> http://www.cell.com/cms/attachment/615980/4968633/gr1.jpg
> showing the clashes between a potential ligand and the protein. The only
> way i know how to do this in pymol is using the show_bumps plugin, but i
> don't really like the "red disks" format.
> Could anyone tell me how i could easily draw something similar to those
> red spikes from the example to represent the clashes in pymol or any other
> program? I'm able to do it using molprobity and kinemage, but there's no
> much possibilities for editing and to get it in printing quality.
> Thanks
>
>
> ------------------------------------------------------------------------------
> Slashdot TV.
> Video for Nerds. Stuff that matters.
> http://tv.slashdot.org/
> _______________________________________________
> PyMOL-users mailing list (PyMOL-users@lists.sourceforge.net)
> Info Page: https://lists.sourceforge.net/lists/listinfo/pymol-users
> Archives: http://www.mail-archive.com/pymol-users@lists.sourceforge.net
>
#!/usr/bin/perl
# 6-2-10
# probe_to_cgo is meant to take a probe vector and dot list and convert this
# to a form suitable for reading into pymol
# Usage
# First run reduce and probe to get the desired probe dots
# Then call ./probe_to_cgo [input probe dots] [output pymol cgo]
open IN, "<$ARGV[0]";
open OUT, ">$ARGV[1]";
# extract data into two arrays containing color and coordinates
@probe_lines=[];
@probe_dots=[];
$i=0;
$j=0;
while ($line = <IN>) {
START:
if ($line =~ m/^\@/) {
if ($line =~ m/vectorlist/) {
while ($line = <IN>) {
if ($line !~ m/^@/) {
($atom1,$start, $end) = split("}",$line);
($color, $a, $b, $coords1) = split(" ", $start);
($x1, $y1, $z1) =split(",", $coords1);
($color, $a, $coords2) = split(" ", $end);
($x2, $y2, $z2) =split(",", $coords2);
$probe_lines[$i][0]="line";
$probe_lines[$i][1]=$color;
$probe_lines[$i][2]=$x1;
$probe_lines[$i][3]=$y1;
$probe_lines[$i][4]=$z1;
$probe_lines[$i][5]=$x2;
$probe_lines[$i][6]=$y2;
$probe_lines[$i][7]=$z2;
$i++;
}
else { last; }
}
goto START;
}
elsif ($line =~ m/dotlist/) {
while ($line = <IN>) {
if ($line !~ m/^@/) {
($atom1,$start) = split("}", $line);
($color, $b, $coords1) = split(" ", $start);
($x1, $y1, $z1) =split(",", $coords1);
$probe_dots[$j][0]="dot";
$probe_dots[$j][1]=$color;
$probe_dots[$j][2]=$x1;
$probe_dots[$j][3]=$y1;
$probe_dots[$j][4]=$z1;
$j++;
}
else { last; }
}
goto START;
}
}
}
print OUT "
from pymol.cgo import *
from pymol import cmd
#
#DOTS
line = [
LINEWIDTH, 3.0,
BEGIN, LINES, \n";
# line data
for ($n=0; $n<$i; $n++) {
$representation = $probe_lines[$n][0];
$color = $probe_lines[$n][1];
if ($color =~ m /hotpink/) { $cgo_color = "1.0, 0.0, 0.5"; }
elsif ($color =~ m /red/) { $cgo_color = "1.0, 0.0, 0.0"; }
elsif ($color =~ m /orange/) { $cgo_color = "1.0, 0.5, 0.0"; }
elsif ($color =~ m /yellowtint/) { $cgo_color = "1.0, 1.0, 0.5"; }
elsif ($color =~ m /yellow/) { $cgo_color = "1.0, 1.0, 0.0"; }
print OUT " COLOR, ".$cgo_color.",\n";
print OUT " VERTEX, ".$probe_lines[$n][2].",".$probe_lines[$n][3].",".$probe_lines[$n][4].",\n";
print OUT " VERTEX, ".$probe_lines[$n][5].",".$probe_lines[$n][6].",".$probe_lines[$n][7].",\n\n";
}
print OUT "
END
]
dot = [
";
# dot data
for ($n=0; $n<$j; $n++) {
$representation = $probe_lines[$n][0];
$color = $probe_dots[$n][1];
if ($color =~ m /blue/) { $cgo_color = "0.0, 0.0, 1.0"; }
elsif ($color =~ m /greentint/) { $cgo_color = "0.647, 0.898, 0.647"; }
elsif ($color =~ m /green/) { $cgo_color = "0.0, 1.0, 0.0"; }
elsif ($color =~ m /sea/) { $cgo_color = "0.5, 1.0, 0.5"; }
print OUT " COLOR, ".$cgo_color.",\n";
print OUT " SPHERE, ".$probe_dots[$n][2].",".$probe_dots[$n][3].",".$probe_dots[$n][4].", 0.08,\n\n";
}
print OUT "
]
obj1 = line
obj2 = dot
cmd.load_cgo(obj1,'clashes', 1)
cmd.load_cgo(obj2,'dots', 1)\n";
------------------------------------------------------------------------------
Slashdot TV.
Video for Nerds. Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
PyMOL-users mailing list (PyMOL-users@lists.sourceforge.net)
Info Page: https://lists.sourceforge.net/lists/listinfo/pymol-users
Archives: http://www.mail-archive.com/pymol-users@lists.sourceforge.net