Thanks a lot! now everything really works nice! I am going to open a new
thread on how to show the "show measurements" output as an echo, because
this one is getting so long. Thanks again!
Daniel
2011/3/29 Robert Hanson <hans...@stolaf.edu>
> OK, OK, I see how the PhP is working. Been a while since I used PhP. You
> want:
>
> jmolCheckbox("crossMeasure(\' '.$select_r.'\',\'
> '.$select_rmodel.'\')",...
>
> That is, you need to add escaped single quotes instead of { }, and just
> send the residue info. Then:
>
> function crossMeasure(atomM, atomH){
>
> set measurementUnits angstroms
> set measurements 3
> font measure 16 serif bold
> var n = atomListM.length
>
> for (var i = 2; i <= n; i++) {
> script inline @{ "measure {" + atomM + ".ca/1.1} @{ {" + atomH +
> ".ca/" + i + ".1} " }
> }
> }
>
>
> so that the script command being run reads, for example:
>
> measure {39:A.ca/1.1} {44:A.ca/2.1}
> measure {39:A.ca/1.1} {44:A.ca/3.1}
> measure {39:A.ca/1.1} {44:A.ca/4.1}
>
> etc.
>
>
>
>
> On Tue, Mar 29, 2011 at 9:36 AM, Daniel Carbajo
> <daniel.carb...@gmail.com>wrote:
>
>> I cannot make this new way work, but like this it works perfectly:
>>
>> $content .= '<td><script>
>>
>> jmolCheckbox("crossMeasure({'.$select_r.'.ca},{'.$select_rmodel.'.ca})",
>> "DELcrossMeasure({'.$select_r.'.ca},{'.$select_rmodel.'.ca})", "");
>> </script></td></tr>';
>>
>>
>>
>> So now I have 2 functions (a new one to remove the measure created
>> according to the same atom expressions):
>>
>> function crossMeasure(atomListN, atomListM){
>>
>> set measurementUnits angstroms
>> set measurements 3
>> font measure 16 serif bold
>> var n = atomListM.length
>>
>> for (var i = 2; i <= n; i++) {
>> measure @{atomListN[1]} @{atomListM[i]}
>> }
>> }
>>
>> function DELcrossMeasure(atomListN, atomListM){
>> var n = atomListM.length
>>
>> for (var i = 2; i <= n; i++) {
>> measure delete @{atomListN[1]} @{atomListM[i]}
>> }
>> }
>>
>>
>>
>> This works nice so I guess I will keep it... it is correct, isn't it? and
>> how about showing the "show measurement" information in an "echo"? is it
>> possible? Thanks a lot for everything!!
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> 2011/3/29 Robert Hanson <hans...@stolaf.edu>
>>
>>> OK, I see. Right, now I understand the $ business -- these are PhP
>>> substitutions. I see you need to identify these atoms by standard RasMol
>>> format. That changes everything! You can't do this:
>>>
>>> measure @a @ b
>>>
>>> where a = "39:A.CA/1.1" and b = "40:A.CA/2.1"
>>>
>>> what you have to do instead is create the entire measure command as a
>>> string and then execute it, like this:
>>>
>>> script inline @{"measure {" + a + "} {" + b + "}"}
>>>
>>> Minor comment: I would put the set and font commands earlier, out of the
>>> for loop; no need to repeat those.
>>>
>>> If you have a reference atom and then a list of atoms from different
>>> models, I think the function would be this, provided you create an array of
>>> strings that look like ["35:a.ca", "36:b.ca","36:b.ca",...] that has the
>>> reference atom in position 1, and the target atoms in :
>>>
>>>
>>> function crossMeasure(atomList){
>>> var n = atomList.length
>>> measures delete
>>>
>>> set measurementUnits angstroms
>>> set measurements 3
>>> font measure 16 serif bold
>>> for (var i = 2; i <= n; i++) {
>>> script inlne @{ "measure {" + atomList[1] + "/1.1}{" + atomList[i]
>>> + "/" + i + ".1}" }
>>> }
>>> }
>>>
>>> Or maybe, if the homology models all have the same group, just:
>>>
>>> function crossMeasure(atom1, atom2){
>>> var n = atomList.length
>>> measures delete
>>>
>>> set measurementUnits angstroms
>>> set measurements 3
>>> font measure 16 serif bold
>>> for (var i = 2; i <= n; i++) {
>>> script inlne @{ "measure {" + atom1 + "/1.1}{" + atom2 + "/" + i +
>>> ".1}" }
>>> }
>>> }
>>>
>>> Bob
>>>
>>>
>>> On Mon, Mar 28, 2011 at 5:00 AM, Daniel Carbajo <
>>> daniel.carb...@gmail.com> wrote:
>>>
>>>> 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
>>>>
>>>>
>>>
>>>
>>> --
>>> 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