Everything is working smoothly now! Thanks a lot! I call the function like
this:
$content .= '<td><input type="checkbox"
onClick=jmolScriptWait("crossMeasure({'.$select_r.'.ca},{'.$select_rmodel.'.ca})")></td></tr>';
Just one more thing... How could I do an "echo" with the "show measurements"
information in the same checkbox? I tried an alert with:
javascript:alert(jmolGetPropertyAsArray('measurementInfo')[0].strMeasurement)
as appears in the documentation, like this:
$content .= '<td><input type="checkbox"
onClick=jmolScriptWait("crossMeasure({'.$select_r.'.ca},{'.$select_rmodel.'.ca})");
javascript:alert(jmolGetPropertyAsArray('measurementInfo')></td></tr>';
but this does not work. Another option would be to show a message box and
show the "show measurements" information inside, like in the documentation (
http://chemapps.stolaf.edu/jmol/docs/examples-11/measure.htm)
Which would be the best option and how could I do it easily? Thanks a lot!
2011/3/28 Daniel Carbajo <daniel.carb...@gmail.com>
> I call it like:
> jmolCheckbox(\"crossMeasure('$select_r.ca', '$select_rmodel.ca')\",
> \"measure OFF\", \"\");
> but nothing seems to happen...
>
>
> 2011/3/28 Daniel Carbajo <daniel.carb...@gmail.com>
>
>> OK obviously better this way:
>>
>> $JMOL = "<script type=\"text/javascript\">
>> jmolInitialize(\"Jmol-12new\", true);
>> jmolSetAppletColor(\"white\");
>> var jmolcmds = [
>> \"load $ZIPtoUSE|Models_$code/$pdb.pdb\",
>> \"set frank off; select all; hbonds off; spin off;
>> wireframe off; spacefill off; trace off; set ambient 40; set specpower 40;
>> slab off; ribbons off; cartoons off; label off; monitor off\",
>> \"set showAxes true\",
>> \"set appendNew true\",
>> \"frame all\",
>> \"display all\",
>> \"select 1.1; cartoon; color white\",
>> \"select 1.1 and :$cadena; color red\",
>> \"script myJMOLfunctions.spt\"
>>
>> ];
>> jmolApplet([580,580], jmolcmds.join(\"; \"));
>> </script>";
>>
>>
>> 2011/3/28 Daniel Carbajo <daniel.carb...@gmail.com>
>>
>>> Thanks a lot! Sorry for not answering before, I have been away during the
>>> weekend... So this seems it should work. I indeed use Jmol.js, but the atoms
>>> are preselected (they are C-alphas from residues known to be catalytic by
>>> the Catalytic Site Atlas) and, actually, the corresponding residue number
>>> (and even the atom number) might not be the same between the native
>>> structure and the homology models (but it will be the same in all homology
>>> models), so I modified the function like this:
>>>
>>> function crossMeasure(atomListN, atomListM){
>>> var n = atomListM.length
>>>
>>> measures delete
>>> for (var i = 2; i <= n; i++) {
>>> set measurementUnits angstroms
>>> set measurements 3
>>> font measure 16 serif bold
>>> measure @{atomListN[1]} @{atomListM[i]}
>>> }
>>> }
>>>
>>> So the parameters passed will directly be something like "4:A.ca" and
>>> "6:A.ca" ($selectedRES_native and $selectedRES_models).
>>> I save the functions in myfunctions.spt, I call it when I launch the
>>> applet and it seems to launch properly, but when I try to load the models
>>> (that are loaded one by one after launching the applet via a series of
>>> checkboxes) I get an alert saying "could not find applet jmolApplet0" and
>>> the models do not show up. This is how I launch the applet:
>>>
>>> $JMOL = "<script type=\"text/javascript\">
>>> jmolInitialize(\"Jmol-12new\", true);
>>> jmolSetAppletColor(\"white\");
>>> var jmolcmds = [
>>> \"load $ZIPtoUSE|Models_$code/$pdb.pdb\",
>>> \"set frank off; select all; hbonds off; spin
>>> off; wireframe off; spacefill off; trace off; set ambient 40; set specpower
>>> 40; slab off; ribbons off; cartoons off; label off; monitor off\",
>>> \"set showAxes true\",
>>> \"set appendNew true\",
>>> \"frame all\",
>>> \"display all\",
>>> \"select 1.1; cartoon; color white\",
>>> \"select 1.1 and :$cadena; color red\"
>>> ];
>>> jmolApplet([580,580], jmolcmds.join(\"; \"), \"script
>>> myfunctions.spt\");
>>> </script>";
>>>
>>> Do I have to place myfunctions.spt in a particular place? What am I doing
>>> wrong? Thanks again for all your help Bob and everyone in the list!
>>> Cheers,
>>>
>>> Daniel
>>>
>>>
>>>
>>>
>>>
>>> 2011/3/25 Robert Hanson <hans...@stolaf.edu>
>>>
>>>> OK, that's Jmol scripting, not JavaScript. Are you using Jmol.js for
>>>> your page (I hope)? How are you choosing the atoms -- is it a user click so
>>>> it is variable? Usually for that we use a pickCallback, from which you get
>>>> an atom index (a unique number for each atom in the full set of loaded
>>>> atoms). I would probably keep a set of useful Jmol script functions in a
>>>> .spt file and then load that when the applet loads. Like this:
>>>>
>>>>
>>>> jmolApplet(500,"set pickCallback 'myPickCallback'; script
>>>> myfunctions.spt")
>>>>
>>>> and then have a file myfunctions.spt:
>>>>
>>>> function crossMeasure(iAtom){
>>>>
>>>> // find the atom number that is associated with this atom
>>>> // I'm presuming all the measurements are between atoms
>>>> // with the same atom number.
>>>>
>>>> var atomNumber = {atomIndex = iAtom}.atomno
>>>> var atomList = {atomno=atomNumber}
>>>> var n = atomList.length
>>>> measures delete
>>>>
>>>> for (var i = 2; i <= n; i++) {
>>>> measure @{atomList[1]} @{atomList[i]}
>>>> }
>>>> }
>>>>
>>>>
>>>>
>>>> Then your pickCallback, which is a JavaScript function in the head of
>>>> the page, would look like this:
>>>>
>>>> function myPickCallback(appletID,atomID, atomIndex) {
>>>> jmolScript("crossMeasure(" + atomIndex + ")")
>>>> }
>>>>
>>>> See how that works? The main scripting is done in Jmol, but we do the
>>>> callback to JavaScript. Another option would be to do it all in Jmol:
>>>>
>>>> jmolApplet(500,"set pickCallback 'jmolScript:crossMeasure(-1)'; script
>>>> myfunctions.spt")
>>>>
>>>> and then have a file myfunctions.spt:
>>>>
>>>> function crossMeasure(iAtom){
>>>>
>>>> // find the atom number that is associated with this atom
>>>> // I'm presuming all the measurements are between atoms
>>>> // with the same atom number.
>>>> // _atomPicked is the atom index of the most recent atom clicked on
>>>>
>>>> if (iAtom < 0) { iAtom = _atomPicked }
>>>> var atomNumber = {atomIndex = iAtom}.atomno
>>>> var atomList = {atomno=atomNumber}
>>>> var n = atomList.length
>>>> measures delete
>>>>
>>>> for (var i = 2; i <= n; i++) {
>>>> measure @{atomList[1]} @{atomList[i]}
>>>> }
>>>> }
>>>>
>>>> Then you don't need any JavaScript.
>>>>
>>>> Of course, you might want something on your page to turn this off by
>>>> setting pickCallback to ""
>>>>
>>>>
>>>>
>>>>
>>>> <script type="text/javascript">
>>>>>
>>>>> </script>
>>>>>
>>>>> And I would like to call it like:
>>>>> jmolCheckbox("crossMeasure($selectedRES.ca)", \"measure OFF\", \"show
>>>>> distances\");
>>>>> Is it possible?
>>>>>
>>>>>
>>>> How are you assigning selectedRES? If it's really a Jmol selection, then
>>>> what you would do is substitute something like this, maybe:
>>>>
>>>> jmolCheckbox("crossMeasure('selectedRes')", \"measure OFF\", \"show
>>>> distances\");
>>>>
>>>> and then:
>>>>
>>>> function crossMeasure(iAtom){
>>>>
>>>> // find the atom number that is associated with this atom
>>>> // I'm presuming all the measurements are between atoms
>>>> // with the same atom number.
>>>>
>>>> if (iAtom == "selectedRes") { iAtom = {selected and
>>>> *.ca}[1].atomIndex }
>>>>
>>>> ...
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>> Thanks again,
>>>>> Daniel
>>>>>
>>>>>
>>>>> 2011/3/25 Robert Hanson <hans...@stolaf.edu>
>>>>>
>>>>>> Here you go:
>>>>>>
>>>>>> var atomList = {46:A.ca}
>>>>>> var n = atomList.length
>>>>>> for (var i = 2; i <= n; i++) {
>>>>>> measure @{atomList[1]} @{atomList[i]}
>>>>>> }
>>>>>>
>>>>>>
>>>>>> Bob
>>>>>>
>>>>>> --
>>>>>> Robert M. Hanson
>>>>>> Professor of Chemistry
>>>>>> St. Olaf College
>>>>>> 1520 St. Olaf Ave.
>>>>>> Northfield, MN 55057
>>>>>> http://www.stolaf.edu/people/hansonr
>>>>>> phone: 507-786-3107
>>>>>>
>>>>>>
>>>>>> If nature does not answer first what we want,
>>>>>> it is better to take what answer we get.
>>>>>>
>>>>>> -- Josiah Willard Gibbs, Lecture XXX, Monday, February 5, 1900
>>>>>>
>>>>>>
>>>>>> ------------------------------------------------------------------------------
>>>>>> Enable your software for Intel(R) Active Management Technology to meet
>>>>>> the
>>>>>> growing manageability and security demands of your customers.
>>>>>> Businesses
>>>>>> are taking advantage of Intel(R) vPro (TM) technology - will your
>>>>>> software
>>>>>> be a part of the solution? Download the Intel(R) Manageability Checker
>>>>>> today! http://p.sf.net/sfu/intel-dev2devmar
>>>>>> _______________________________________________
>>>>>> Jmol-users mailing list
>>>>>> Jmol-users@lists.sourceforge.net
>>>>>> https://lists.sourceforge.net/lists/listinfo/jmol-users
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> ------------------------------------------------------------------------------
>>>>> Enable your software for Intel(R) Active Management Technology to meet
>>>>> the
>>>>> growing manageability and security demands of your customers.
>>>>> Businesses
>>>>> are taking advantage of Intel(R) vPro (TM) technology - will your
>>>>> software
>>>>> be a part of the solution? Download the Intel(R) Manageability Checker
>>>>> today! http://p.sf.net/sfu/intel-dev2devmar
>>>>> _______________________________________________
>>>>> Jmol-users mailing list
>>>>> Jmol-users@lists.sourceforge.net
>>>>> https://lists.sourceforge.net/lists/listinfo/jmol-users
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Robert M. Hanson
>>>> Professor of Chemistry
>>>> St. Olaf College
>>>> 1520 St. Olaf Ave.
>>>> Northfield, MN 55057
>>>> http://www.stolaf.edu/people/hansonr
>>>> phone: 507-786-3107
>>>>
>>>>
>>>> If nature does not answer first what we want,
>>>> it is better to take what answer we get.
>>>>
>>>> -- Josiah Willard Gibbs, Lecture XXX, Monday, February 5, 1900
>>>>
>>>>
>>>> ------------------------------------------------------------------------------
>>>> Enable your software for Intel(R) Active Management Technology to meet
>>>> the
>>>> growing manageability and security demands of your customers. Businesses
>>>> are taking advantage of Intel(R) vPro (TM) technology - will your
>>>> software
>>>> be a part of the solution? Download the Intel(R) Manageability Checker
>>>> today! http://p.sf.net/sfu/intel-dev2devmar
>>>> _______________________________________________
>>>> Jmol-users mailing list
>>>> Jmol-users@lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/jmol-users
>>>>
>>>>
>>>
>>
>
------------------------------------------------------------------------------
Enable your software for Intel(R) Active Management Technology to meet the
growing manageability and security demands of your customers. Businesses
are taking advantage of Intel(R) vPro (TM) technology - will your software
be a part of the solution? Download the Intel(R) Manageability Checker
today! http://p.sf.net/sfu/intel-dev2devmar
_______________________________________________
Jmol-users mailing list
Jmol-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jmol-users