Dear Bob and Matt,
Thanks for the advice. I couldn't get
jmolApplet0._applet.viewer.getAuxiliaryInfo(6).get("moData") to work (I also
tried .ms and .ms.am and various frames with MO Data) -- I got errors about
a.get() not being a function and other things.
Matt's suggestion works well. I was just extracting the MO energies, so I used
getPropertyAsArray to only get an array of the energies, which was much much
faster than what I was doing. I then iterated through the frames to get the
vibrational frequencies as well. I thought there should be a faster way --
when you load the model it prints all the vibrational energies out, but I
wasn't sure how to associate them with their particular frame so that I could
animate them. But iterating frame by frame works out OK.
I have a feeling I could optimize it even more, but it's definitely improved
now.
Thanks,
Mark
From: Kubasik, Matthew A. <mkuba...@fairfield.edu>
Sent: Saturday, October 22, 2016 8:51 AM
To: jmol-users@lists.sourceforge.net
Subject: Re: [Jmol-users] Best way to access getproperty with JSmol
Dear Mark and Bob,
Perhaps getting a large quantity of “auxiliarydata” is slowing things down?
Maybe, Mark, you could drill down a bit to get the specific auxiliary data that
you want. So, for example, maybe instead of
var x = Jmol.getPropertyAsArray(jmolApplet0,"auxiliaryInfo");
You could use
var x = Jmol.getPropertyAsArray(jmolApplet0,
“auxiliaryinfo.models[1].modata.mos.coefficients”) // where [1] is the model #
with the mo data
I’m not sure exactly what properties of the mos that you want, and I am not
familiar with GAMESS. However, the above line might get you a 2D array
containing mo coefficients. So, for example, the coefficients of the first mo
would be in (x[1])[1], the second set of coefficients would be in (x[1])[2],
etc.
Also, the frequencies can be obtained from
x=Jmol.getPropertyAsArray(jmolApplet0,
"modelinfo.models.modelproperties.frequency”)
That’s how I understand it, but I’m not 100% sure this will work.
Matt Kubasik
On Oct 22, 2016, at 8:30 AM, Robert Hanson
<hans...@stolaf.edu<mailto:hans...@stolaf.edu>> wrote:
If you are interested in just getting one model's auxiliary info, you can use _M
$ load c:/temp/t.gamess
7 models
46 molecular orbitals in model 1.2
17 molecular orbitals in model 1.7
$ frame 1.7
$ print _M.keys
Energy
EnergyString
dipole
fileName
fileType
initialAtomCount
initialBondCount
moData
modelFileNumber
modelName
modelNumber
modelNumberDotted
modelProperties
>From JavaScript you would use:
info = Jmol.evaluateVar(jmolApplet0, "_M")
Should be relatively efficient.
Alternatively, if you want instantaneous direct access to that Java object you
can use
info =
jmolApplet0._applet.viewer.ms.am<http://applet.viewer.ms.am/>[0].auxiliaryInfo
But two caveats:
1) You are bypassing the interfaces and tapping in to officially "nonpublic"
objects. Sometimes those underlying objects get name changes or are otherwise
refactored.
2) You are working with a transpiled Java Object. In this case,
java.util.Hashtable. You have to use .get(key) to access its information:
jmolApplet0._applet.viewer.ms.getAuxiliaryInfo(6).__CLASS_NAME__
"java.util.Hashtable"
modata = jmolApplet0._applet.viewer.getAuxiliaryInfo(6).get("moData")
modata.__CLASS_NAME__
"java.util.Hashtable"
and deal with all of those values appropriately as well.
On Fri, Oct 21, 2016 at 7:54 PM, Mark Perri
<per...@sonoma.edu<mailto:per...@sonoma.edu>> wrote:
Dear users list,
I'm trying to get MO energies and vibrational frequencies from a GAMESS output
file that I read into JSmol. Right now I use:
var x = Jmol.getPropertyAsArray(jmolApplet0,"auxiliaryInfo");
Then I iterate over every frame and look at x.models[i].moData.mos and
x.models[i].modelProperties.Frequency
But for a large file the getPropertyAsArray takes > 10 seconds and freezes
Firefox while it's loading. Reading the manual it seems that I can use
getProperty asynchronously, but I don't understand how to use it properly.
I set a message callback function to handle getProperty, but I'm not sure how
to actually read in the moData. It appears to be in arguments[1], but
everything I try is undefined. Here's an example of what I've tried.
Thanks,
Mark
var Info = {
width: 450,
height: 450,
debug: false,
color: "white",
addSelectionOptions: false,
serverURL: "http://chemapps.stolaf.edu/jmol/jsmol/php/jsmol.php;,
use: "HTML5",
j2sPath: "/jsmol/j2s",
readyFunction: jmol_isReady,
script: script,
loadStructCallback: "onJSmolLoad",
messageCallback: "processFrames",
disableInitialConsole: true
}
function processFrames()
{
for (i=0; i<argumen