Now we complicate the situation by relying upon the XMLHttpRequest method which sits at the heart of AJAX. TODO: change tone to explain why this is beneficial However, in this example, we stick with simple synchronous requests which can return results and state information from PyMOL.
quit pymol (FireFox only: view page source)Structures
loadPDB('1iqj'); refreshTable(); loadPDB('2fzz'); refreshTable(); loadPDB('2g00'); refreshTable(); loadPDB('missing'); refreshTable(); (will display Python exception / traceback) cmd('delete?name=all'); refreshTable();
Likewise, the table below is updated from JavaScript, based on what objects are currently loaded inside PyMOL.
TODO make these buttons behave better
refreshTable()
The alignAll command source below illustrates how you can program PyMOL from JavaScript using synchronous requests which return JSON object results from PyMOL that are then subsequently acted upon.
function alignAll() { // Javascript loop which performs the alignment var obj_list = cmd("get_names"); // get current objects for(i=1;i<obj_list.length;i++) { // align all to first object result = cmd("align?mobile=" + obj_list[i] + "////CA" + "&target=" + obj_list[0] + "////CA"); } if(obj_list.length) { cmd("center?selection=" + obj_list[0]); // recenter on first object } }
Actions
cmd('zoom?animate=2') cmd('show_as?representation=ribbon') alignAll()