I've found that scientific notation (such as 4.5E-4) does not work in 
Jmol scripts.  This somewhat problematic, in that, for isosurfaces, 
one frequently deals with numbers that are not conveniently 
represented in fixed precision decimals.  I found it relatively easy 
to generalize the Compiler.lookingAtDecimal method to handel 
scientific notation, by modifing the subroutine to end as:

...
     //well, guess what? we also have to look for 86.1Na, so...
//    if (ch == '.' && (ichT + 2 < cchScript) &&
//        (isAlphabetic(script.charAt(ichT + 2)) || 
script.charAt(ichT + 2) == '?'))
//      return false;

     ++ichT;
     while (ichT < cchScript && isDigit(script.charAt(ichT))) {
       ++ichT;
       digitSeen = true;
     }
     //check for scientific notation
     if (script.charAt(ichT) == 'E')
     {
         boolean isScientific = true;
         if (ichT + 1 < cchScript && isDigit(script.charAt(ichT + 1)))
             ichT=ichT + 1; //move to the exponent
         else if  (ichT + 2 < cchScript && script.charAt(ichT + 1) == 
'-' && isDigit(script.charAt(ichT + 2)))
             ichT=ichT + 2; //move to the exponent
         else
             isScientific = false;
         while (isScientific && ichT < cchScript && 
isDigit(script.charAt(ichT))) {
             ++ichT;
             digitSeen = true;
           }
     }

     cchToken = ichT - ichToken;
     return digitSeen;
}

This handles number of the form 4.51E-4 and 4.51E4, etc.  Note that, 
as written, the 'E' has to be capitalized; this could be generalized, 
if desired, but since Float.toString() returns a capital E, this 
seemed consistent.

Note also that I have commented out the small chunk of code checking 
for things of the form '86.1Na' because the check incorrectly flags 
scientific notation numbers such as 4.5E-4, with only one number 
after the decimal point.  If I understood what that check was 
intended to do, I'm sure i could make it more specific...

In any case, I think this would be a valuable addition to the stock 
Jmol codebase.  Any thoughts?

         JR Schmidt 


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Jmol-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jmol-developers

Reply via email to