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

Reply via email to