fixed ray-tracing bug and size of ellipoids in show_UNRES.py
authorDawid Jagiela <lightnir@chem.univ.gda.pl>
Thu, 28 Feb 2013 12:31:57 +0000 (13:31 +0100)
committerDawid Jagiela <lightnir@chem.univ.gda.pl>
Thu, 28 Feb 2013 12:31:57 +0000 (13:31 +0100)
source/pymol/show_UNRES.py

index a6097a4..673a269 100644 (file)
@@ -28,26 +28,26 @@ def show_UNRES(sl='(all)'):
        e_size = 1.0
        # residue dictionary
        # resn = [color_Red, color_Green, color_Blue, elipsoid_side_width ]
-       resdb = {       'CYS': [1.000, 1.000, 0.000, 2.96868],
-                               'MET': [0.000, 1.000, 0.000, 3.08863],
-                               'PHE': [0.000, 0.392, 0.000, 3.04238],
-                               'ILE': [0.000, 1.000, 0.000, 3.17389],
-                               'LEU': [0.000, 1.000, 0.000, 2.52078],
-                               'VAL': [0.000, 1.000, 0.000, 2.68924],
-                               'TRP': [0.000, 0.392, 0.000, 3.47403],
-                               'TYR': [0.596, 0.984, 0.596, 3.35434],
-                               'ALA': [0.000, 1.000, 0.000, 1.72686],
-                               'GLY': [1.000, 1.000, 1.000, 1.11383],
-                               'THR': [1.000, 0.000, 1.000, 2.59210],
-                               'SER': [1.000, 0.000, 1.000, 1.68800],
-                               'GLN': [1.000, 0.000, 1.000, 2.22201],
-                               'ASN': [1.000, 0.000, 1.000, 2.24946],
-                               'GLU': [1.000, 0.000, 0.000, 2.05551],
-                               'ASP': [1.000, 0.000, 0.000, 1.77556],
-                               'HIS': [1.000, 0.000, 1.000, 3.02627],
-                               'ARG': [0.000, 0.000, 1.000, 3.25143],
-                               'LYS': [0.000, 0.000, 1.000, 4.50054],
-                               'PRO': [0.000, 1.000, 1.000, 2.20525]
+       resdb = {       'CYS': [1.000, 1.000, 0.000, 1.33741, 2.96868],
+                               'MET': [0.000, 1.000, 0.000, 1.36694, 3.08863],
+                               'PHE': [0.000, 0.392, 0.000, 1.48323, 3.04238],
+                               'ILE': [0.000, 1.000, 0.000, 1.44098, 3.17389],
+                               'LEU': [0.000, 1.000, 0.000, 1.51054, 2.52078],
+                               'VAL': [0.000, 1.000, 0.000, 1.42072, 2.68924],
+                               'TRP': [0.000, 0.392, 0.000, 1.23867, 3.47403],
+                               'TYR': [0.596, 0.984, 0.596, 1.23060, 3.35434],
+                               'ALA': [0.000, 1.000, 0.000, 1.23266, 1.72686],
+                               'GLY': [1.000, 1.000, 1.000, 1.24626, 1.11383],
+                               'THR': [1.000, 0.000, 1.000, 1.28674, 2.59210],
+                               'SER': [1.000, 0.000, 1.000, 1.22820, 1.68800],
+                               'GLN': [1.000, 0.000, 1.000, 1.24239, 2.22201],
+                               'ASN': [1.000, 0.000, 1.000, 1.24447, 2.24946],
+                               'GLU': [1.000, 0.000, 0.000, 1.25448, 2.05551],
+                               'ASP': [1.000, 0.000, 0.000, 1.25417, 1.77556],
+                               'HIS': [1.000, 0.000, 1.000, 1.21103, 3.02627],
+                               'ARG': [0.000, 0.000, 1.000, 1.13573, 3.25143],
+                               'LYS': [0.000, 0.000, 1.000, 1.22604, 4.50054],
+                               'PRO': [0.000, 1.000, 1.000, 1.35131, 2.20525]
                        }
 
 
@@ -68,6 +68,7 @@ def show_UNRES(sl='(all)'):
                ca=cmd.get_model(sl+" & n. CA & resn "+atoms[i].resn+" & resi "+atoms[i].resi).atom
                e.append( [ atoms[i].resn, atoms[i].coord[0], atoms[i].coord[1], atoms[i].coord[2], atoms[i].coord[0]-ca[0].coord[0], atoms[i].coord[1]-ca[0].coord[1], atoms[i].coord[2]-ca[0].coord[2] ] )
 
+       obj.extend([NORMAL,  0.0,  1.0,  0.0])
        # This is from pymol devel example cgo07.py form http://pymol.sourcearchive.com/documentation/1.2r1/cgo07_8py-source.html
     #
        # [ ELLIPSOID, x_pos, y_pos, z_pos, size, x0, y0, z0, x1, y1, z2, x2, y2, z2 ]
@@ -83,11 +84,17 @@ def show_UNRES(sl='(all)'):
                tmp3 = cpv.cross_product(tmp0, tmp2)
                tmp2 = cpv.normalize(tmp2)
                tmp3 = cpv.normalize(tmp3)
-               tmp2 = cpv.scale(tmp2,0.9*resdb[e[i][0]][3])
-               tmp3 = cpv.scale(tmp3,0.9*resdb[e[i][0]][3])
-                               
+               tmp2 = cpv.scale(tmp2,resdb[e[i][0]][3])
+               tmp3 = cpv.scale(tmp3,resdb[e[i][0]][3])
+               factor = 1.0 / max( cpv.length(tmp0), cpv.length(tmp2), cpv.length(tmp3))
+               tmp0 = cpv.scale(tmp0, factor)
+               tmp2 = cpv.scale(tmp2, factor)
+               tmp3 = cpv.scale(tmp3, factor)
+               
+               #print factor, cpv.length(tmp0), cpv.length(tmp2), cpv.length(tmp3)                     
                obj.extend( [ COLOR, resdb[e[i][0]][0], resdb[e[i][0]][1], resdb[e[i][0]][2] ] )
-               obj.extend( [ ELLIPSOID, e[i][1], e[i][2], e[i][3], e_size, ] + tmp0 + tmp2 + tmp3 )
+               #obj.extend( [ NORMAL, 1, 0, 0 ] )
+               obj.extend( [ ELLIPSOID, e[i][1], e[i][2], e[i][3], 1.0/factor, ] + tmp0 + tmp2 + tmp3 )
 
        cmd.set('cgo_ellipsoid_quality', 2)
        cmd.load_cgo(obj,'UNRES_'+sl)