143 lines
4.2 KiB
JavaScript
143 lines
4.2 KiB
JavaScript
// pdbshow.js to be included in an html doc to toggle on and
|
|||
|
|
// off various representations fo proteins and ligands.
|
||
|
|
//
|
||
|
|
// These functions tied to onClick (or other) events.
|
||
|
|
// Toggle state is maintained by global variables here,
|
||
|
|
// such as load_state, cartoon_state, etc.
|
||
|
|
// These are implemented as a Hash object, defined in hash.js
|
||
|
|
// which must be included in the html file that includes this pdbshow.js
|
||
|
|
//
|
||
|
|
var load_state = new Hash;
|
||
|
|
var zoom = ""; // let first molecule zoom
|
||
|
|
function get_protein(a) {
|
||
|
|
// load protein, unless already loaded
|
||
|
|
if (load_state[a] == undefined) {
|
||
|
|
load = "load?filename=$PYMOL_PATH/modules/web/examples/data/" + a + ".pdb.gz" + zoom;
|
||
|
|
cmd(load);
|
||
|
|
zoom = "&zoom=0"; // subsequent loads shold not zoom
|
||
|
|
cmd("orient?selection=bymol organic and elem n&animate=2");
|
||
|
|
cmd("hide?representation=everything&selection=" + a);
|
||
|
|
load_state[a] = true;
|
||
|
|
cartoon_state[a] = false;
|
||
|
|
surface_state[a] = false;
|
||
|
|
nonbonded_state[a] = false;
|
||
|
|
ribbon_state[a] = false;
|
||
|
|
ligand_state[a] = false;
|
||
|
|
active_site_state[a] = false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
var cartoon_state = new Hash;
|
||
|
|
function toggle_cartoon(a) {
|
||
|
|
// toggle cartoon display
|
||
|
|
get_protein(a);
|
||
|
|
var arg = "representation=cartoon&selection=" + a;
|
||
|
|
if (cartoon_state[a] == true) {
|
||
|
|
cmd("hide?" + arg);
|
||
|
|
cartoon_state[a] = false;
|
||
|
|
} else {
|
||
|
|
cmd("show?" + arg);
|
||
|
|
cartoon_state[a] = true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
var surface_state = new Hash;
|
||
|
|
function toggle_surface(a) {
|
||
|
|
// toggle surface display
|
||
|
|
get_protein(a);
|
||
|
|
var arg = "representation=surface&selection=polymer and (" + a + " within 5 of bymol (" + a + " and organic and elem n))";
|
||
|
|
if (surface_state[a] == true) {
|
||
|
|
cmd("hide?" + arg);
|
||
|
|
surface_state[a] = false;
|
||
|
|
} else {
|
||
|
|
cmd("show?" + arg);
|
||
|
|
cmd("set?name=two_sided_lighting");
|
||
|
|
cmd("set?name=transparency&value=0.3");
|
||
|
|
surface_state[a] = true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
var ribbon_state = new Hash;
|
||
|
|
function toggle_ribbon(a) {
|
||
|
|
// toggle polymer ribbon display
|
||
|
|
get_protein(a);
|
||
|
|
var arg = "representation=ribbon&selection=" + a + " and polymer";
|
||
|
|
if (ribbon_state[a] == true) {
|
||
|
|
cmd("hide?" + arg);
|
||
|
|
ribbon_state[a] = false;
|
||
|
|
} else {
|
||
|
|
cmd("show?" + arg);
|
||
|
|
ribbon_state[a] = true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
var nonbonded_state = new Hash;
|
||
|
|
function toggle_nonbonded(a) {
|
||
|
|
// toggle solvent/water display
|
||
|
|
get_protein(a);
|
||
|
|
var arg = "representation=nonbonded&selection=(" + a + " and solvent) within 5 of bymol (" + a + " and organic and elem n)";
|
||
|
|
if (nonbonded_state[a] == true) {
|
||
|
|
cmd("hide?" + arg);
|
||
|
|
nonbonded_state[a] = false;
|
||
|
|
} else {
|
||
|
|
cmd("show?" + arg);
|
||
|
|
nonbonded_state[a] = true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
var ligand_state = new Hash;
|
||
|
|
function toggle_ligand(a) {
|
||
|
|
// toggle organic/ligand display
|
||
|
|
get_protein(a);
|
||
|
|
var arg = "representation=sticks&selection=bymol (" + a + " and organic and elem n)";
|
||
|
|
if (ligand_state[a] == true) {
|
||
|
|
cmd("hide?" + arg);
|
||
|
|
ligand_state[a] = false;
|
||
|
|
} else {
|
||
|
|
cmd("show?" + arg);
|
||
|
|
ligand_state[a] = true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
var active_site_state = new Hash;
|
||
|
|
function toggle_active_site(a) {
|
||
|
|
// toggle active site/polymer near organic display
|
||
|
|
get_protein(a);
|
||
|
|
var arg = "representation=lines&selection=byres polymer and (" + a + " within 5 of bymol (" + a + " and organic and elem n))";
|
||
|
|
if (active_site_state[a] == true) {
|
||
|
|
cmd("hide?" + arg);
|
||
|
|
active_site_state[a] = false;
|
||
|
|
} else {
|
||
|
|
cmd("show?" + arg);
|
||
|
|
active_site_state[a] = true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
var hb_state = new Hash;
|
||
|
|
function toggle_hb(a) {
|
||
|
|
// toggle hydrogen bond display
|
||
|
|
get_protein(a);
|
||
|
|
var arg = "name=" + a + "_hb";
|
||
|
|
var arg2 = arg + "&selection1=" + a + " and polymer" + "&selection2=" + a + " and organic" + "&cutoff=3.2&mode=2";
|
||
|
|
if (hb_state[a] == true) {
|
||
|
|
cmd("delete?" + arg);
|
||
|
|
hb_state[a] = false;
|
||
|
|
} else {
|
||
|
|
cmd("dist?" + arg2);
|
||
|
|
hb_state[a] = true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
function reinitialize() {
|
||
|
|
// reinitialize PyMOL and my state variables
|
||
|
|
// if ( confirm("Really reinitialize") ) {
|
||
|
|
cmd("reinitialize");
|
||
|
|
var keys = load_state.keys();
|
||
|
|
for (k in keys) {
|
||
|
|
a = keys[k];
|
||
|
|
load_state[a] = undefined;
|
||
|
|
cartoon_state[a] = 0;
|
||
|
|
surface_state[a] = 0;
|
||
|
|
nonbonded_state[a] = 0;
|
||
|
|
ribbon_state[a] = 0;
|
||
|
|
ligand_state[a] = 0;
|
||
|
|
active_site_state[a] = 0;
|
||
|
|
}
|
||
|
|
document.forms[0].reset();
|
||
|
|
zoom = "";
|
||
|
|
// }
|
||
|
|
}
|