Jmol 14.6.0 has been released.

*Download Jmol-14.6.0_2016.05.17-binary.zip (66.2 MB)
<https://sourceforge.net/projects/jmol/files/latest/download?source=files>*


Full list of new features includes:

Jmol.___JmolVersion="14.6.0_2016.05.17"

new feature: full implementation of OpenSMILES and OpenSMARTS in Jmol

new feature: C13 NMR prediction from
http://www.nmrdb.org/service/jsmol13c?smiles=CCCC
 -- although we send MOL file, not SMILES here.
 -- actuated with

   SHOW NMR H1   // H1 1H H or just SHOW NMR all default to this
   SHOW NMR C13  // or C or 13C
   SHOW NMR none // close JSpecView

(this is in the Jmol Application, not the HTML5 application)

new feature: Jmol now implements a way of indicating atropisomer chirality.
 -- measured dihedral angle is clockwise-positive front-to-back, as for
Jmol dihedrals
 -- matching with {*}.find("SMILES","...a^nm-a...") where n and m are 1, 2,
or 3
    indicate first, second, or third, respectively, and indicate which
bonds of
    the biaryl bond, as written, are to the reference atoms.
 -- for example:

   $ load $biphenol
   $ connect @{@7|@8} @{@1|@2} atropisomer
   $ print {*}.find("SMARTS","c1(O)ccccc1^23-c2c(O)cccc2")

  ({0:13})

  Explained below.

new feature: CONNECT {pair1} {pair2} ATROPISOMER
 -- creates a new bond of type atropisomer (bond chirality in biaryl
systems)
 -- each pair must include the bonded atom and its reference connected atom
 -- example:

   $ load $biphenol
   $ connect @{@7|@8} @{@1|@2} atropisomer
   $ getProperty bondinfo[7].type

   bondinfo[7].type    "atropisomer_23"

new feature: BONDORDER ATROPISOMER_nm
  -- not for general use; will be found in state file
  -- for example:

    select BONDS ({6});
    bondOrder atropisomer_23;

new feature: Jmol SMILES bond atropisomerism ^nm- and ^^nm-
 -- indicates atropisomerism (bond chirality in biaryl systems)
 -- ^ and ^^ for bonds similar to @ and and @@ for atoms
 -- n and m are single-digit bond selectors, generally one of 1, 2, or 3
 -- n = 1/2/3 means "reference atom is first/second/third bonded
 -- ^- and ^^- same as ^22- and ^^22-, respectively
 -- example:

   $ load $biphenol
   $ connect @{@7|@8} @{@1|@2} atropisomer
   $ print {*}.find("SMARTS","c1(O)cccc{c1^23-c2}c(O)cccc2")

   ({1 6})

  Here the "^23-" refers to the two carbons with connected oxygen atoms,
because the second
  bond listed for the carbon on the left is to the c1(O) atom, and the
third bond listed for
  the carbon on the right is to the other c(O) atom. Note that bond
numbering includes the
  implicit bond to the atom coming from the atom on its left, which for the
second carbon,
  starts with the atropisomeric bond itself, at least in this case.

             1*23  1*23
     c1(O)ccccc1^23-c2c(O)cccc2



new feature: (JavaScript) Jmol.loadFileFromDialog(jmolApplet0)
 -- asynchronous file loading on demand
 -- can be model file, but can also be script, dssr data - anything
 -- can be a local file or a URL
 -- see dssr.htm
 -- for example:

      Jmol.jmolButton("jmolApplet0",
[function(){Jmol.loadFileFromDialog(jmolApplet0)}],"Open File")

new feature: setting DSSR on the fly:

   model 1 property dssr "1d66.dssr"   // file containing data
   model 1 property dssr @{load("1d66.dssr")} // actual data
   select iloops



new feature: show chemical xxx  where xxx is one of the file types:

     alc cdxml cerius charmm cif cml ctx gjf gromacs hyperchem jme
     maestro mol mol2 sybyl2 mrv pdb sdf sdf3000 sln smiles xyz

   retrieves this information for the currently selected set of atoms
   from the the NCI CACTVS Resolver.

   Note that the PDB writer is nonstandard, and "SDF" no longer returns
   the 2D mol file, only the 3D mol file.

   Can be used as the show() function: x = show("chemical jme")

new feature: print {*}.find("SMILES/hydrogen/") adds hydrogen atoms

feature note: JSME upgraded to JSME_2015-12-06-2


FEATURE CHANGE: Jmol 14.5.4_2016.04.23 by default will implement DSSP 2.0
as described in
                Int. J. Mol. Sci. 2014, 15, 7841-7864;
doi:10.3390/ijms15057841
                and implemented at http://www.cmbi.ru.nl/dssp.html.
                This change only affects helices that have bulges,
indicating them
                more appropriately as pi helices rather than alpha
helices.

                The original version of DSSP, "DSSP 1.0" will be available
using

                calculate structure DSSP 1.0
                show DSSP 1.0
                load ... filter "DSSP1"

                This change is for 14.5 only, not 14.4, which remains DSSP
1.0


new feature: preliminary MMTF reader
  -- MacroMolecular Transmission Format (MMTF, from RTSB)
  -- see https://github.com/rcsb/mmtf/blob/master/spec.md#overview
  -- binary format for file transfer and molecule construction
  -- uses MessagePack binary JSON format
  -- entirely experimental; not for general consumption
  -- biomolecule processing works
  -- DSSP secondary structure is read

 *
 * JmolData RCSB MMTF (macromolecular transmission format) file reader
 *
 * see https://github.com/rcsb/mmtf/blob/master/spec.md
 *
 * /full/ specification as of 2016.4.18 is implemented,including:
 *
 * reading atoms, bonds, and DSSR secondary structure
 *
 *   load =1f88.mmtf
 *
 *
 * reading space groups and unit cells, and using those as per other readers
 *
 *   load =1crn.mmtf {1 1 1}
 *
 * reading bioassemblies (biomolecules) and applying those transformations
 *
 *   load =1auy.mmtf FILTER "biomolecule 1;*.CA,*.P"
 *
 * reading biomolecules and lattices, and loading course-grained
 *
 *   load =1auy.mmtf {2 2 1} filter "biomolecule 1;bychain";spacefill 30.0;
color property symop
 *
 *

new feature: set window width height
new feature: set window [width height]
new feature: set window "xxx.png"
 -- allows programmatic setting of window size (app only)

new feature: getProperty("shapeInfo.echo")
 -- a 1-length array (because all shapeInfo results are arrays
 -- shapeInfo.echo[0] contains an associative array based on echo names
 -- currently only include keys name, imageWidth, imageHeight, and imageFile

    $ set echo myecho image '
http://noys3.weizmann.ac.il/a2jb/browse?sn=testSet/dna-a/pymol.png'
    $ print getProperty("shapeInfo.echo[0]")
    {
      "myecho"  :
      {
        "imageFile"  :  "
http://noys3.weizmann.ac.il/a2jb/browse?sn=testSet/dna-a/pymol.png";
        "imageHeight"  :  500
        "imageWidth"  :  500
        "name"  :  "myecho"
       }
     }

 -- idea is to allow access to image dimensions for any file image
 -- for example, for a MacPyMOL session file, because those do not contain
width and height information,
    we don't have the width and height we need to recreate the model window
and associated Jmol image,
    but we can also read the associated PyMOL-generated PNG file and get
the dimensions that way

        load 'xxxx.pse' filter 'DORESIZE;DOCACHE'
        set echo myecho image 'xxxx.png'
        var a = getProperty('shapeInfo.echo[0].myecho')
        set echo myecho off
        write PNGJ @{a.imageWidth} @{a.imageHeight} 'xxxx-jmol.png'

    thus temporarily loading the PyMOL image just long enough to get its
dimensions; not actually viewing it


new feature: "$isosurface1".getProperty("atoms")
 -- returns atoms associated with this surface
 -- for example, the atoms used to make a molecular surface

new feature: show xxx /yyy
  -- filters any SHOW command for lines containing "yyy" (case insensitive)
  -- examples:

      $ show symop/glide
      $ show set/zoom
      $ show state/draw
      $ show file "test.xyz" /H
      $ show file "/remark 900"
      $ show variables/sym

FEATURE NOTE: Jmol now has a RELATIVELY COMPLETE set of analysis and
visualization
  tools for space group symmetry. All  standard and magnetic space group
operations
  are covered. Features are concentrated in four command options and one
function:

  LOAD .... SPACEGROUP .... UNITCELL ....
  SHOW SYMOP ....
  DRAW SYMOP ....
  DRAW POINTGROUP SPACEGROUP
  x = symop(....)

  With these features, you can:

   -- load any model while applying any actual or conceivable space group
or subset of a space group
   -- tabulate all space group operations associated with that model
   -- retrieve an associative array indicating all aspects of the
operation, including
      point, rotation axis, plane, glide vector, lattice offset vector, and
4x4 matrix
   -- visualize all aspects of an operation, including proper and improper
rotations
      inversion centers, mirror planes, glide planes, translations, and
magnetic spin time reversal
   -- apply any operation to any atom or any point in space
   -- given any combination of two atoms or two points in space, determine
and/or
      depict the operation(s) that relate those to atoms or positions

new feature: symop(3,@3,"atom")
  -- returns target atom or atoms

new feature: show symop 3 @3 "atom"
  -- shows target atom or atoms

new feature: symop() options:
  symop(op)
    -- returns the 4x4 matrix representation of this operator
  symop(op, atom)
    -- returns the point generated by operator op on atom
    -- op may be a positive or negative integer indictating the operation
(or its reverse)
       to apply from the loaded space group -- for example, symop(3, @1) or
symop(-4, {atomindex=16})
    -- op may be a string such as "x+1/2,1/2-y,z" representing a specific
generic operation
  symop(atom1, atom2)
    -- returns the description of the first of possibly several operations
that take atom1 to atom2, for example:
       "2-fold screw axis|translation: 1/2 0 0"
  symop(atom1, atom2, n)
    -- returns the description of the nth operation that takes atom1 to
atom2
  symop(...point...)
    -- any place an atom can be used in symop(), one can substitute an xyz
coordinate.
    -- for example, symop(@1, {1/2 1/2 1/2})
  {atomset}.symop(...)
    -- when more than one model is loaded, prepending any symop function
with an atom set specifies which
       atoms, space group, and unit cell are being referenced. For example,
{2.1}.symop(5) operates only on
       atoms in the first model of the second loaded file, using the
appropriate space group and unit cell.
       In this way, "@1" will designate one atom only, provided only one
model is showing (using the FRAME/MODEL command).
       If only one model has been loaded, there is no need to use this
syntax; symop(...) will do the same.
  symop(..., outputType)
   -- All uses of symop() and {atomset}.symop() can be extended using a
final parameter that
     changes the default output described above to be something else.
Options for outputType include:

     "draw"    Returns the Jmol script illustrating this operation with
DRAW commands.

       $ print symop(3,"draw")
        draw ID draw_* delete
        draw ID draw_frame1X diameter 0.15{5.5172 1.9683 2.7802}{6.5172
1.9683 2.7802} color red
        ...

     "full"    Returns the tab-separated Jones-Faithful string and
descriptor for this operation.

       $ print symop(3,"full")
        -x,-y,-z(mx,my,mz)      Ci: 0 0 0

     "lattice" Returns the lattice type associated with the space group
involving this operation.

     "list"    Specifically when two atoms or points are specified, returns
a string list of all operations
               taking the first to the second.

       $ print symop(@3,@21,"list")
            5    x+1/2,-y+1/2,-z+1/2(-mx,my,mz)    2-fold screw
axis|translation: 1/2 0 0|time-reversed
            7    -x+1/2,y+1/2,z+1/2(-mx,my,mz)    n-glide
plane|translation: 0 1/2 1/2|time-reversed

               Note that this string can be turned into a standard array
using .lines.split("\t",true):

       $ print symop(@3,@21,"list").lines.split("\t",true)
          [
            5
            x+1/2,-y+1/2,-z+1/2(-mx,my,mz)
            2-fold screw axis|translation: 1/2 0 0|time-reversed
          ]
          [
            7
            -x+1/2,y+1/2,z+1/2(-mx,my,mz)
            n-glide plane|translation: 0 1/2 1/2|time-reversed
          ]

     "array"   Returns an associative array that contains critical
information relating to this operation.

       $ load =magndata/0.34
       $ print symop(3,"array")
        {
          "inversionCenter"  :  {0.0 0.0 0.0}
          "label"  :  "Ci: 0 0 0"
          "matrix"  :
          [
          [-1.0,    0.0,    0.0,    0.0]
          [0.0,    -1.0,    0.0,    0.0]
          [0.0,    0.0,    -1.0,    0.0]
          [0.0,    0.0,    0.0,    1.0] ]
          "timeReversal"  :  1
          "xyz"  :  "-x,-y,-z(mx,my,mz)"
          "xyzOriginal"  :  "-x,-y,-z,m"
         }

       In addition, all possible keys of this array may be used as well for
outputType. These include:

           "axisVector", "cartesianTranslation", "centeringVector",
"fractionalTranslation",
         "inversionCenter", "label", "matrix", "plane", "rotationAngle",
         "timeReversal", "unitTranslation", "xyz", and "xyzOriginal"

     Three of these that may be less than obvious are explained below:

     "centeringVector"  For operations that are pure lattice translations,
returns the vector
                        for this centering in fractional coordinates.

     "timeReversal"     This quantity is 0 for standard space groups.
Magnetic space group
                        operations also include the possibility of
inversion of the spin
                        along with any 3D symmetry operation. This
inversion characteristic
                        is referred to as "time reversal" and takes the
value of 1 or -1.

     "unitTranslation"  Symmetry operations involving two atoms may include
an extra
                        lattice translation if the two atoms are in
different unit cells.
                        This translation is above and beyond any fractional
lattice centering
                        that this operator incorporates for a face- or
body-centered space group.

new feature: show spacegroup/xxxxx

 -- selects lines from a space group report similar to the way show
state/xxxx works
 -- example:

  load =ams/quartz 1
  show spacegroup/Class

new feature: show/draw symop @1 @2
 -- gives full list of matching symmetry operations
 -- example:

    $ load =magndata/1.23 {444 555 1} packed
    $ show symop  @153 @299

    1    x+2,y,z2(mx,my,mz)    translation: 2 0 -2
    5    -x,-y,-z(mx,my,mz)    Ci: 0 0 0
    11    x+2,-y,-z(-mx,my,mz)    2-fold screw axis|translation: 2 0
0|time-reversed
    15    -x,y,z2(-mx,my,mz)    c-glide plane|translation: 0 0
-2|time-reversed

new feature: show/draw symop @1 @2 n
 -- shows or draws the nth symmetry operation relating atom 1 to atom 2
 -- example:

    $ load =magndata/1.23 {444 555 1} packed
    $ show symop  @153 @299 3

    11    x+2,-y,-z(-mx,my,mz)    2-fold screw axis|translation: 2 0
0|time-reversed

new feature: print pointgroup("spacegroup", @1)
 -- analyzes the point group (crystal class) of a crystal.
 -- uses three irrational-coordinate points to generate all possible
operators
 -- creates a map with keys (somewhat variable depending upon axes present):

    C2
    C3
    Ci
    Cs
    S6
    detail
    distanceTolerance
    linearTolerance
    nAtoms
    nC2
    nC3
    nCi
    nCn
    nCs
    nS6
    nSn
    nTotal
    name
    points
    principalAxis

new feature: draw SPACEGROUP
 -- draws all operations in space group

new feature: draw POINTGROUP SPACEGROUP
 -- draws crystal class symmetry operations for a space group
 -- uses point group style, with circular planes

new feature: @1.find("crystalClass", pt)
  -- generates a list of points based on a model's crystal class (point
group)
  -- uses @1 just to find the unit cell and space group
  -- optional pt is used as a generator (defaults to @1)
  -- example:
   load =ams/calcite 1
   x = @3.find("crystalClass")
   print pointgroup(x).name
   draw points @x
   polyhedra ID p {0 0 0} to @x

new feature: adds SHOW SMILES/bio  and {*}.find("SMILES/bio") options:
    /bio              Jmol bioSMILES with header and chain comments
    /bionocomments    no chain comments (but still one header with comments)
    /bioatomcomments  full atom comments
    /biocovalent      indicates covalent S-S crosslinking using ":" notation
    /biohbond         indicates hydrogen bonds using ":" notation
    /biounmatched     allows unmatched rings

new feature: SMILES/nonaromatic same as SMILES/noaromatic

new feature: Polyhedra command allows for min and max radius
  -- polyhedra 2.8 3.0 @3

new feature: moveto AXIS <a|b|c|-a|-b|-c> coupled with <1|2|3|4>
 -- indicates direction of axis ("-a" indicates "a pointing away")
 -- and clockwise position 1(top left), 2(top right), 3(bottom right), and
4(bottom left)
 -- defaults a == a1, b == -b1, c == c4
 -- slight modification of what was released in 03.21

new feature: x.bin() method allows return of an array listing both the
bound and the count
 -- example:

         $ print {*}.bonds.length.all.bin(1,2,0.1,TRUE).format("json")
        [ [ 1.0,10.0 ],[ 1.1,0.0 ],[ 1.2,0.0 ],[ 1.3,3.0 ],[ 1.4,2.0 ],[
1.5,1.0 ],[ 1.6,0.0 ],[ 1.7,0.0 ],[ 1.8,0.0 ],[ 1.9000001,0.0 ] ]


new feature: load =magndata/1.1.37
 -- links to the MAGNDATA database at http://webbdcrista1.ehu.es/magndata
 --     "magndata", "http://webbdcrista1.ehu.es/magndata/mcif/%FILE.mcif";,

new feature: set vectorTrail n
 -- adds a trail onto a modulating vector (as for an incommensurate
magnetic spin)
 -- n trails are made, typically in a fan-like pattern that trails the
spinning vector
      load =magndata/1.1.37
      set vectortrace 20
      set vibrationperiod 2
      vibration on

new feature: unitcell ON  adds #nnn (international table number) to cell
description if found


new feature: axes OFFSET x.x
 -- applies offset of x.x in fractional coordinates in each axis direction
 -- AXES OFFSET -0.1   same as   AXES CENTER {-0.1 -0.1 -0.1/1}

new feature: expanded unitcell() function
 -- adds additional types: "A", "B", "C", "I", "F"
 -- default is the lattice type of the model's space group
 -- not just cubic; "BCC" is converted to "I"
 -- for example:

     load =ams/silicon 15 packed   // Cmca
     draw id "uc" diameter 0.1 unitcell mesh nofill color black
     unitcell @{unitcell("primitive")}
     color unitcell red
     unitcell 0.1
     axes unitcell
     axes on

new feature: expanded UNITCELL command to include PRIMITIVE option for any
space group

new feature: polyhedra POINTS x.y
  -- adds variable size spherical points at corners of polyhedra
  -- color is that of element, or black

new feature: show SMILES/xxxx
 -- xxxx = open, strict, openstrict, mmff94

new feature: show chemical NAME
 -- singular "name" gives just the first name; "names" gives full list

new feature: full implementation of OpenSMILES aromatic model

new feature: {*}.find("SMILES/open")
 -- generates OpenSMILES string for selected atoms
 -- applies OpenSMILES aromaticity rules for 5-, 6-, and 7-membered rings
 -- not chemical -- allows exocyclic c=C bonds and [nH] in 6-membered rings
 -- also adds atom class if property_atomClass is nonzero
 -- for example:

    $ load $2-butanol
    $ @2.property_atomclass=2
    $ @3.property_atomclass=3
    $ @5.property_atomclass=5
    $ print {*}.find("smiles/open")

        C[C@H:2]([OH:5])[CH2:3]C

new feature: /open option for smiles.find("SMILES", pattern)
 -- applies OpenSMILES model of aromaticity
 -- finds aromaticity-normalized pattern "in" aromaticity-normalized smiles
 -- can be after SMILES or as beginning of pattern
    $ print "OC1=CC(N)=CC=C1".find("SMILES","NC1=CC(O)=CC=C1")
    0
    $ print "OC1=CC(N)=CC=C1".find("SMILES/open","NC1=CC(O)=CC=C1")
    8
    $ print "OC1=CC(N)=CC=C1".find("SMILES","/open/NC1=CC(O)=CC=C1")
    8

new feature: compare("smile1","/open/smiles2")
 -- applies OpenSMILES model of aromaticity
 -- checks for match of atom class if present (default value 0 matches "not
present")
 -- does aromaticity normalization on both strings
    $ print compare("OC1=CC(N)=CC=C1", "NC1=CC(O)=CC=C1", "isomer")
    CONSTITUTIONAL ISOMERS
    $ print compare("OC1=CC(N)=CC=C1", "/open/NC1=CC(O)=CC=C1", "isomer")
    IDENTICAL

new feature: {*}.find("SMILES/strict")
 -- generates OpenSMILES string for selected atoms
 -- applies standard Hueckel aromaticity rules for 5-, 6-, and 7-membered
rings
 -- does not allow exocyclic c=C bonds or [nH] in 6-membered rings
 -- does not create atom classes
 -- also for compare() and search()

new feature: {*}.find("SMILES/open strict")
 -- same as just /strict, but also generates atom classes if present as
property_atomClass
 -- also for compare() and search()

new feature: {*}.find("SMILES/mmff94")
 -- applies a very STRICT, chemically meaningful Hueckel 4+2 Rule
 -- adds allowance for only a 1-electron contribution to 6-membered rings
(three double bonds)
 -- also for compare() and search()

new feature: optional processing of OpenSMILES [CH2:002] ":<n>" atom class.
 -- positive integer value only
 -- checks the atom property property_atomclass
 -- for SMARTS, [:0] means "without an atomclass"
 -- for SMARTS, [!:0] means "any non-zero atomclass"
 -- for SMARTS, same as [$(select property_atomclass=n)]
 -- only enabled with Jmol SMILES directive "/open/"; otherwise ignored
 -- for example:

    $ load $2-butanol
    $ show smiles

          C[C@H](O)CC

    $ @2.property_atomclass=2
    $ @3.property_atomclass=3
    $ @5.property_atomclass=5

    $ select *
        15 atoms selected
    $ select on search("/open/[:3]")
        1 atoms selected
    $ select on search("/open/[!:3]")
        14 atoms selected
    $ select on search("/open/[:0]")
        12 atoms selected
    $ select on search("/open/[!:0]")
        3 atoms selected
    $ select on search("/open/[!:3 & !:0]")
        2 atoms selected

new feature: UNITCELL TRANSFORM @m4x4
  -- direct 4x4 matrix transformation of a unit cell

new feature: calculate symmetry  polyhedra {atomset}
  -- selectively calculates polyhedra.
  -- for example: calculate symmetry polyhedra {polyhedra(4)}

new feature: calculate symmetry  polyhedra id
  -- selectively calculates polyhedra for a given ID.
  -- for example: calculate symmetry polyhedra "poly1"


new feature: atom set can be specified in polyhedra() function:
  -- print {2.1}.polyhedra(3)
  -- print {2.1}.polyhedra("....polySMILES string...")


new feature: WRITE MOL67 xxx.mol
 -- writes MOL format with bonds of type 6 or 7 (aromatic single/double;
rarely significant)


new feature: (JSmol) standard InChI generator (see inchi.htm, inchi/*)
 -- JavaScript library for generation of InChIs
 -- runs completely in JavaScript
 -- equivalent to SHOW CHEMICAL stdinchi
 -- about 900 KB


FEATURE CHANGE: JSmol default for Info._disableInitialConsole changed to
true
 -- no longer necessary with JSmol_spinner.gif

new feature: j2s/img/JSmol_spinner.gif implemented (Angel Herraez)
 -- as default for Info._appletLoadingImage
 -- use Info._appletLoadingImage = "none" to disable

new feature: j2s/img/cursor_wait.gif animation implemented

new feature: invertselected ATOMS {ring atoms to invert}
 -- inverts ring stereochemistry
 -- requires prior selection of all atoms to be involved in the inversion


new feature: isosurface BACKSHELL
  -- displays just the back side of an isosurface
  -- works by reversing the normals, then showing front only
  -- similar to isosurface slab 50, but better if object is far from
spherical
  -- works with PMESH, MO, CONTACT as well
  -- reverted using isosurface NOBACKSHELL

new feature: isosurface "*xxxx"
  -- accesses EBI test site for ED maps at
http://wwwdev.ebi.ac.uk/pdbe/coordinates/files/%file.ccp4
  -- uses default sigma 1.0

new feature: isosurface "**xxxx"
  -- accesses EBI test site for ED difference maps at
http://wwwdev.ebi.ac.uk/pdbe/coordinates/files/%file_diff.ccp4
  -- uses default sigma 3.0


FEATURE NOTE: Prior to this version if the MO command was issued after use
of
              rotateSelected, the orbitals were calculated improperly,
because the
              basis functions always must be applied for the original file
coordinate
              frame, not the rotated frame. In addition, if MOs were
calculated prior to
              use of rotateSelected or translateSelected, then they would
not "track"
              with the modified atom positions. So MOs and
rotate/translateSelected
              were completely incompatible. Jmol 14.4.2 fixes this issue.
It should be
              possible now to produce correct MOs before or after use of
rotateSelected.
              Note that ALL atoms in a specified model must be moved in
order for this
              tracking of MOs to take place. This functionality was
introduced in
              14.4.1_2016.01.28, but that version (never released) does not
properly
              check to see that ALL the atoms in a model have been involved
in the rotation.

FEATURE NOTE: If rotateSelected or translateSelected is used to move all
atoms in a
              model, and after that the state is saved, then Jmol 14.4.2
              will save a state that is not readable in 14.4.1. This is
necessary
              because of the added FRAME ORIENTATION command, which is used
in the states
              to indicate the relationship of a model to its file
coordinates. The MO
              reader requires this so that it can rotate the coordinates
back to their
              original position prior to doing its calculation.


new feature: variable _versionDate
  $ show _versionDate
  _versionDate = "14.4.1_2016.01.16  2016-01-15 17:25"


new feature: x = pointgroup([array of points],center)
  -- center is optional, defaulting to average of the points
  -- returns a map:
    pts = [ {-1.0132 0.585 0.0012999999},{1.0132 0.585 0.0012999999},{0.0
-1.17 0.0012999999} ]
    print pointgroup(pts,{0 0 0})
    {
      "C2"  :
      [
        {0.8660127 -0.50001717 0.0022222984}
        {-0.8660127 -0.50001717 0.0022222984}
        {0.0 0.99999756 0.002222217}
      ]
      "C3"  :
      [
        {0.0019245904 -0.0011111083 -0.99999756}
      ]
      "Cs"  :
      [
        {0.0019245904 -0.0011111085 -0.99999756}
        {-0.49998164 -0.866036 0.0}
        {0.49998164 -0.866036 0.0}
        {1.0 0.0 0.0}
      ]
      "S3"  :
      [
        {0.0019245904 -0.0011111083 -0.99999756}
      ]
      "center"  :  {0.0 0.0 0.0}
      "detail"  :  "# 3 atoms;"
      "distanceTolerance"  :  0.2
      "linearTolerance"  :  8.0
      "nAtoms"  :  3
      "nC2"  :  3
      "nC3"  :  1
      "nCi"  :  0
      "nCn"  :  4
      "nCs"  :  4
      "nS3"  :  1
      "nSn"  :  1
      "nTotal"  :  12
      "name"  :  "D3h"
      "principalAxis"  :  {0.0019245904 -0.0011111083 -0.99999756}
      "principalPlane"  :  {0.0019245904 -0.0011111085 -0.99999756}
    }


new feature: "#_DOCACHE_" suffix for file name loading tells Jmol to insert
full structure into any state
 -- allows SPT files to preserve the original file (as in all PNGJ files)
 -- for example:
    load caffeine.xyz#_DOCACHE_
    show state
        ...
        function _setFileState() {
            DATA "file_caffeine.xyz#_DOCACHE_"
        24

        N     1.31200   -1.04790    0.00250
        C     2.24650   -2.17620    0.00310
        ...
        H    -4.16720   -0.83950    0.51680
            END "file_caffeine.xyz#_DOCACHE_";
        ...
          load /*file*/"c:/jmol-dev/bobtest/caffeine.xyz#_DOCACHE_";
        }
        ...
 -- repeated calls to caffeine.xyz#_DOCACHE_ use the cached version, not
the actual file
 -- calls to caffeine.xyz still ignore the cache.
 -- also addded to Jmol 14.4.0, but left undocumented

new feature: load =ams loads data from American Mineralogist Crystal
Structure Database
 -- many thanks given to Robert Downs and Alex Pires for enabling this
functionality.
 -- fetches data from http://rruff.geo.arizona.edu/AMS
 -- employs "#_DOCACHE_" flag because some of these data files may change
after database maintenance
 -- three modes. Only the first, using _database_code_amcsd, is guaranteed
to be stable over time,
   =ams/<nnnnnnn>  (seven-digit database code) loads that specific
structure based on _database_code_amcsd
      load =ams/0014673
      show _modelfile
      _modelfile = "
http://rruff.geo.arizona.edu/AMS/viewJmol.php?amcsd=14673&action=showcif#_DOCACHE_
"
   =ams/<nnnnn>  (less than seven-digit id) loads that specific structure
based on sequential id code
      load =ams/10000
      show _modelfile
      _modelfile = "
http://rruff.geo.arizona.edu/AMS/viewJmol.php?id=10000&action=showcif#_DOCACHE_";

   =ams/<mineralName> loads all structures for a specified named mineral.
      load =ams/diamond
      show _modelfile
      _modelfile = "
http://rruff.geo.arizona.edu/AMS/viewJmol.php?mineral=diamond&action=showcif#_DOCACHE_
"
  -- thus, all of the following are equivalent as of 12/13/2015:

        load =ams/0008986
        load =ams/10000
        load =ams/srilankite 4

     However, it is possible that new structures will be added to
srilankite, making
     this not the fourth structure, and the five-digit code 10000 can
change after
     database maintenance.
 -- also addded to Jmol 14.4.0, but left undocumented

new feature: drawing of spheres in 2D window
  -- as percent position or absolute, as for ECHO
  -- diameter is % if position is %; otherwise it is pixels
  -- examples:

    draw d1 diameter 5 [90 90 %] color blue  // percent position; 5%
diameter
    draw d2 diameter 15 [90 90] color blue   // absolute position; 15-pixel
diameter
    draw dO diameter 2 [80 90 %] color @{ {_O}.color }
    set echo eO [95 90 %]; echo "O"

  -- can be used in the context of an element key:

    background white
    load $caffeine
      function createElementKey() {
        var y = 90
        for (var e in {*}.element.pivot){
            var c = {element=@e}.color
            draw ID @{"d_"+ e} diameter 2 [90 @y %] color @c
            set echo ID @{"e_" + e} [91 @{y-1} %]
            echo @e
            font echo 24 bold sansserif
            color echo black
            y -= 5
        }
      }
    createElementKey

new feature: additional predefined sets for periodic table:
    "@nonmetal
_H,_He,_B,_C,_N,_O,_F,_Ne,_Si,_P,_S,_Cl,_Ar,_As,_Se,_Br,_Kr,_Te,_I,_Xe,_At,_Rn",
    "@metal !nonmetal",
    "@alkaliMetal _Li,_Na,_K,_Rb,_Cs,_Fr",
    "@alkalineEarth _Be,_Mg,_Ca,_Sr,_Ba,_Ra",
    "@nobleGas _He,_Ne,_Ar,_Kr,_Xe,_Rn",
    "@metalloid _B,_Si,_Ge,_As,_Sb,_Te",
    "@transitionMetal
elemno>=21&elemno<=30|elemno>=39&elemno<=48|elemno>=72&elemno<=80|elemno>=104&elemno<=112",
    "@lanthanide elemno>=57&elemno<=71",
    "@actinide elemno>=89&elemno<=103",

  -- useful for removal of metal-metal bonds in inorganic systems
     and for specifying polyhedra:

    connect {metal} {metal} delete
    polyhedra bonds {metal}


new feature: polyhedra ID xxx SCALE x.x
  -- ID named polyhedra only
  -- x.x is the scaling factor, initially 1
  -- x.x > 0 does normal scaling
  -- x.x < 0 does "explode" from {0 0 0} (for higher-order Brillouin zones,
for instance)


FEATURE CHANGE: (Application only for now) PDB default for =xxxx
  -- changed to
    "pdb", "
http://ftp.wwpdb.org/pub/pdb/data/structures/divided/pdb/%c2%c3/pdb%file.ent.gz
"
  -- will be complemented with file.ent for non-binary transfer, but that
is not implemented yet at RCSB
  -- mmCIF counterpart not implemented yet.
  -- not HTML5 because for that we need the option to remove .gz

new feature: set testflag3 TRUE  gives random triangle effect to polyhedra

new feature: POLYHEDRON ID "xxx" OFFSET {3 3 3}
 -- allows cartesian offset of named polyhedra


new feature: (JSmol) adding access-allow-origin status for cdn.rcsb.org and
ftp.wwpdb.org.


new feature: polyhedra with arbitrary center and vertices, without atom
center
  -- for example:
    polyhedra ID "myid" {0 0 0} TO [{1 0 0}, {0 1 0}, {0 0 1}, {-1 -1 -1}]


new feature: x = within(0.01, [array of points])
 -- cleans points of duplicates with a tolerance of 0.001 Angstroms
 -- allows multiple pmesh faces to be turned into polyhedra using:

   faces = []
    for (var i = 1; i <= nPlanes; i++) {
      var f = ("$f" + i).getProperty("face")
      faces.push(f)
    }
   polyhedra @1 to @{within(0.01, faces.join())} color white


new feature: $pmeshID.getProperty("faces")
 -- returns an array of points
 -- cleaned so that it is one point per linear edge, regardless of how
    it has been slabbed

new feature: resolution 0.001 with PMESH and ISOSURFACE planes
 -- allows for minimum number of triangles.


NOTE: GoDaddy's inadvertent forcing of revocation of the secure certificate
for Jmol
      has disabled ALL applets created since Oct 15, 2014. This is a
mandatory upgrade.


JmolVersion="14.4.0_2015.10.13"



-- 
Robert M. Hanson
Larson-Anderson Professor of Chemistry
Chair, Department of Chemistry
St. Olaf College
Northfield, MN
http://www.stolaf.edu/people/hansonr


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
------------------------------------------------------------------------------
Mobile security can be enabling, not merely restricting. Employees who
bring their own devices (BYOD) to work are irked by the imposition of MDM
restrictions. Mobile Device Manager Plus allows you to control only the
apps on BYO-devices by containerizing them, leaving personal data untouched!
https://ad.doubleclick.net/ddm/clk/304595813;131938128;j
_______________________________________________
Jmol-users mailing list
Jmol-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jmol-users

Reply via email to