Metaphorics Logo

Examples


 
Magnet Documentation
SEA Reference
   Selections
   Expressions
   Actions
   Examples

{all()},{all()} 
 {dist(l1,r1) < 3.2}
  {printf("The distance is %.3f\n",dist(l1,r1))};

prints out all ligand-receptor distances which are less than 3.2 angstroms.

{smarts("*")},{smarts("*")}
 {dist(l1,r1)< 3.2}
  {printf("The distance is %.3f\n",dist(l1,r1))}; 

Same as the first rule but probably less efficient since the smarts patterns apply to all atoms in each molecule.

{smarts("*")},{near(3.2) smarts("*")}
 {dist(l1,r1)< 3.2} 
  {printf("The distance is %.3f\n",dist(l1,r1))}; 

A more efficient version of the previous rule.

{smarts("*")},{near(3.2)}
 {dist(l1,r1)< 3.2}
  {printf("The distance is %.3f\n",dist(l1,r1))}; 

Perhaps even more efficient since no smarts match need be done on the receptor.

{all()},{near(3.2)}
 {dist(l1,r1)< 3.2}
  {printf("The distance is %.3f\n",dist(l1,r1))}; 

Probably the most efficient version.

{smarts("[!$([#7,#8])]")},{smarts("[!$([#7,#8])]")}
 {dist(l1,r1)<.8*vdw(l1,r1)}
  {printf("Short contact: %.2f between %s and %s\n" ,
    dist(l1,r1),getatinfo(l1),getatinfo(r1))}; 

This rule [1] prints out the short contacts between atoms not likely to be involved in hydrogen bonds. Of course, more sophisticated smarts could be used to define potentially hydrogen bonding atoms.

{all()},{resname("SER")smarts("*~*")}
 {dist(l1,r1)<4.0}
  {accept(l1,r1,"H",dist(l1,r1)); printf("%s Distance: %.2f\n",
   getatinfo(r1),dist(l1,r1))}; 

{all()},{resname("SER")smarts("*~*")}
 {notdef(l1,r1,"*")&&dist(l1,r1)<4.0}
  {accept(l1,r1,"H2",dist(l1,r1)); printf("%s Distance: %.2f\n",
   getatinfo(r1),dist(l1,r1))};

Two rules which illustrate the use of notdef . The first rule will print out a number of duplicate lines since the smarts pattern matches in several different ways with the same atom matching the first smarts atom. However, the second rule will print out a non-redundant version of the same list.


define Polar "[$([!#6]),$([#6]~[!#6])]"; 
{},{} {1.0} 
 {printf("Begin Ligand %s %s\n",getid(),getmolprop(l,"dockscore"))};
{smarts("[$Polar]")},{} {1.0}
 {printf("asa 1 %f %s\n",asa(l1),getatinfo(l1));set(Vpl,asa(l1)+Vpl)}; 
{smarts("[!$Polar]")},{} {1.0} 
 {printf("asa 2 %f %s\n",asa(l1),getatinfo(l1));
   set(Vnp,asa(l1)+Vnp)}; 
{},{} {1.0} 
 {printf("End Ligand Polar area: %f, NonPolar area: %f\n" Vpl,Vnp)};

An example of using variables to accumulate total areas for each ligand (or conformation). Also illustrates getting a molecular property for the ligand (the "dockscore") and printing it out. In this case it is used as a string but the float() function could be used to change the value to a floating point number which could be used in expressions (for example float(getmolprop(l,"dockscore")) < -40.0 ).

Finally an example of a set of rules which prints out summary information for molecular interactions (nonbonded and hydrogen bonded) between ligand and receptor. This rule set is rather permissive and a rule set which assigned interactions might be more restrictive in the geometry accepted:

# Simple rule set for outputting molecular interaction geometry 
# Hbond definitions derived from original smarts from J Bradshaw 
define HDon "[$([!#6;+0])]"; 
define Hacc "[$([!#6;+0]);!$([F,Cl,Br,I]);!$([o,s,nX3]);!$([Nv5,Pv6,Sv4,Sv6]);!$(N[C,S]=O)]";
# 
{smarts("[$HDon]~*")},{smarts("[$HAcc]~*")}
 {notdef(l1,r1,"H")&&dist(l1,r1)>2.4 &&
   dist(l1,r1)<=3.3&&angle(l2,l1,r1)>80 &&
   angle(l2,l1,r1)<180&&angle(l1,r1,r2)>80 &&
   angle(l1,r1,r2)<180}
  {accept(l1,r1,"H",dist(l1,r1)); 
   printf("%s %s\t%.2f\tangle1:\t%.2f \tangle2:\t%.2f\n",
    getatinfo(l1), getatinfo(r1),dist(l1,r1), angle(l2,l1,r1), angle(l1,r1,r2))}; 
{smarts("[$HAcc]~*")},{smarts("[$HDon]~*")}
 {notdef(l1,r1,"H")&&dist(l1,r1)>2.4 &&dist(l1,r1)<=3.3
   &&angle(l2,l1,r1)>80 &&angle(l2,l1,r1)<180
   &&angle(l1,r1,r2)>80 &&angle(l1,r1,r2)<180}
  {accept(l1,r1,"H",dist(l1,r1)); 
    printf("%s %s\t%.2f\tangle1:\t%.2f \tangle2:\t%.2f\n",
     getatinfo(l1), getatinfo(r1),dist(l1,r1), angle(l2,l1,r1), angle(l1,r1,r2))}; 
# 
{smarts("[$HDon]~*")},{smarts("[$HAcc;D0]")}
 {notdef(l1,r1,"H")&&dist(l1,r1)>2.4 &&dist(l1,r1)<=3.3
   &&angle(l2,l1,r1)>80 &&angle(l2,l1,r1)<180} 
  {accept(l1,r1,"H",dist(l1,r1)); printf("%s %s\t%.2f\tangle1:\t%.2f\n",
    getatinfo(l1), getatinfo(r1),dist(l1,r1), angle(l2,l1,r1))}; 
{smarts("[$HAcc]~*")},{smarts("[$HDon;D0]")} 
 {notdef(l1,r1,"H")&&dist(l1,r1)>2.4 &&dist(l1,r1)<=3.3
   &&angle(l2,l1,r1)>80 &&angle(l2,l1,r1)<180}
  {accept(l1,r1,"H",dist(l1,r1)); printf("%s %s\t%.2f\tangle1:\t%.2f\n",
    getatinfo(l1), getatinfo(r1),dist(l1,r1), angle(l2,l1,r1))}; 
{smarts("[#6]~[!$HDon;!$HAcc]")},{near(4.2) smarts("[#6;$SEL]~[!$HDon;!$HAcc]")}
 {notdef(l1,r1,"*")&&dist(l1,r1)<1.1*vdw(l1,r1)}
  {accept(l1,r1,"N",dist(l1,r1)); printf("%s %s\tNbond:\t%.2f\n", 
    getatinfo(l1),getatinfo(r1), dist(l1,r1))}; 

Which gives the following output when run on the folate ligand in 7DFR.pdb:


FOL 161 NA2 ASP 27 OD1 Hbond: 3.18 angle1: 111.82 angle2: 108.64
FOL 161 N3 ASP 27 OD2 Hbond: 2.64 angle1: 125.60 angle2: 115.95
FOL 161 OH4 ASP 27 OD2 Hbond: 3.29 angle1: 81.64 angle2: 145.37
FOL 161 O1 ARG 57 NH1 Hbond: 3.03 angle1: 134.09 angle2: 101.42
FOL 161 O1 ARG 57 NH2 Hbond: 3.23 angle1: 90.18 angle2: 93.42
FOL 161 O2 ARG 57 NH2 Hbond: 3.13 angle1: 96.01 angle2: 134.11
FOL 161 NA2 HOH 301 O Hbond: 2.77 angle1: 147.26
FOL 161 OH4 HOH 206 O Hbond: 2.85 angle1: 125.20
FOL 161 C4 LEU 28 CD2 Nbond: 3.91
FOL 161 C4A PHE 31 CD1 Nbond: 3.89
FOL 161 C4A NAP 164 NC7 Nbond: 4.01
FOL 161 C6 NAP 164 NC3 Nbond: 3.99
FOL 161 C6 NAP 164 NC4 Nbond: 3.30
FOL 161 C6 NAP 164 NC5 Nbond: 3.89
FOL 161 C7 ILE 94 CB Nbond: 3.90
FOL 161 C7 PHE 31 CD1 Nbond: 3.92
FOL 161 C7 PHE 31 CE1 Nbond: 3.51
FOL 161 C7 NAP 164 NC4 Nbond: 3.18
FOL 161 C7 NAP 164 NC5 Nbond: 3.96
FOL 161 C8A PHE 31 CD1 Nbond: 3.29
FOL 161 C8A PHE 31 CE1 Nbond: 3.70
FOL 161 C9 THR 46 CG2 Nbond: 3.53
FOL 161 C9 NAP 164 NC4 Nbond: 3.60
FOL 161 C9 NAP 164 NC5 Nbond: 3.58
FOL 161 C14 ILE 50 CG1 Nbond: 3.56
FOL 161 C14 ILE 50 CD1 Nbond: 4.03
FOL 161 C13 ILE 50 CG1 Nbond: 3.68
FOL 161 C16 PHE 31 CZ Nbond: 3.62
FOL 161 C16 PHE 31 CE2 Nbond: 3.32
FOL 161 C16 PHE 31 CD2 Nbond: 3.83
FOL 161 C15 ILE 50 CG1 Nbond: 3.99
FOL 161 C15 ILE 50 CD1 Nbond: 4.05
FOL 161 C15 PHE 31 CZ Nbond: 3.71
FOL 161 C15 PHE 31 CE2 Nbond: 3.92
FOL 161 CT LEU 54 CD2 Nbond: 4.02
FOL 161 CT LYS 32 CB Nbond: 4.01
FOL 161 CT LYS 32 CD Nbond: 3.90


© Metaphorics, LLC
info@metaphorics.com