1Jmol.___JmolDate="$Date: 2021-12-31 18:52:23 -0600 (Fri, 31 Dec 2021) $" 2Jmol.___fullJmolProperties="src/org/jmol/viewer/Jmol.properties" 3 4# THIS IS THE TRUNK - for development and release 5 6# NOTE -- developement is moving to GitHub. See https://github.com/BobHanson/Jmol-SwingJS 7 8# Developers: to add a description of changes you have made, 9# add it on a line below the "Jmol.___JmolVersion=..." line. 10# Don't use Jmol.___ in your text, as that is the key for stripping out 11# the information saved in the JAR version of this file. 12# The quotes above look odd for a parameter file, but they are 13# important for the JavaScript version of Jmol. 14# 15# A full Jmol/JSpecView/JSmol release requires the following: 16# 17# 1. Generate a new version number. This should be done as in the following examples, 18# listed in order of appearance: 19# 20# previous new 21# 22# 14.8.10 14.8.11-beta-2016-12-20 a beta release of 14.8.11 with a timestamp for Dec 20, 2016 23# 14.8.10 14.8.11 bug fixes only - patch level 24# 14.8.10 14.9.1 new features - minor version level (tag for Maven, create branch) 25# 14.8.10 15.1.1 new features - major version level (tag for Maven, create branch) 26# 27# The distinction between major and minor is arbitrary. 28# 29# Note that -beta releases will be to https://sourceforge.net/projects/jmol/files/Jmol-beta 30# while full releases will be to https://sourceforge.net/projects/jmol/files/Jmol. 31# 32# 2. Create a new Jmol.___... line and remove "Jmol.___" from the line for the 33# previous release; failure to do remove this line will use the original release number, 34# not the new one, since this is a property file. 35# 36# 3. Commit this change. 37# 38# 4. Run jsmol build_11_fromJmol.xml 39# 40# 5. Refresh the JSmol project 41# 42# 6. Run jsmol build_12_tosite.xml 43# 44# 7. Run jsmol build_13_tojs.xml 45# 46# 8. Run jmol build.xml (including dist, which also initiates a release now) 47# 48 49 50# TODO: fix UNDO 51# TODO: check RN=X=NR stereo 52# TODO: symop() is largely undocumented 53# TODO: load CENTROID is udocumented ?? 54 55# NOTE: This is the older, non-SwingJS, version of Jmol. 56 57# TODO: isosurface cavity delivers nonsense volume due to unclosed surface 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79Jmol.___JmolVersion="14.32.7" 80 also 15.2.7 81 82bug fix: JavaScript error on file reading can cause infinite loop 83bug fix: toJSON for primitive arrays creating string arrays ["1","2"] 84bug fix: dynamic PDB menu items not refreshing after file load if menu is not already created 85bug fix: MUTATE with pdbAddHydrogens fails and crashes Jmol 86 87new feature: expanded MUTATE options 88 -- examples: 89 90 mutate 33 LYS 91 mutate ALA34 G 92 mutate {ALA.CA}[2] G 93 mutate {1-3} GAL 94 mutate {1-3} A 95 mutate {1-3} ~LYS (that is, LEU-TYR-SER) 96 mutate {1-3} G_L 97 mutate {1-4} "GLY-AlA" 98 mutate ALA34 "myAla.pdb" (from a file) 99 mutate ALA34 "==SEP" (from RCSB) 100 mutate @3 @res (using variables) 101 102 103new feature: MUTATE CREATE option 104 -- creates peptides with specified sequence and secondary structure (phi/psi) 105 -- examples: 106 mutate create aaaaaaa // defaults to alpha 107 mutate create "lys-ala-ser" // uses one-letter and three-letter codes 108 mutate create ppppp "3-10" // 16 pre-defined phi/psi sequences: 109 110 "alpha" [ -65, -40 ] 111 "3-10" [ -74, -4 ] 112 "pi" [ -57.1, -69.7 ] 113 "alpha-L" [ 57.1, 4 ] 114 "helix-II" [ -79, 150 ] 115 "collagen" [ -51, 153 ] 116 "beta" [ -140, 130 ] 117 "beta-120" [ -120, 120 ] 118 "beta-135" [ -135, 135 ] 119 "extended" [ 180, 180 ] 120 "turn-I" [ -60, -30, -90, 0 ] 121 "turn-II" [ -60, 120, 80, 0 ] 122 "turn-III" [ -60, -30, -60, -30 ] 123 "turn-I'" [ 60, 30, 90, 0 ] 124 "turn-II'" [ 60, -120, -80, 0 ] 125 "turn-III'" [ 60, 30, 60, 30 ] 126 127new feature: MODELKIT MUTATE 128 - same as MUTATE, but associated (and documented) with model kit 129 130new feature: modelkit CONNECT @1 @2 [0,1,2,3,4,5,p,m] (default 1) 131 132 133 modelkit [ON(nada)/OFF/DISPLAY/HIDE] 134 135 MODELKIT CENTER point or atoms (point can be fractional by adding "/1" to at least one coord) 136 137 -- action options include alternatives to the given commands (assign is undocumented) 138 139 modelkit ASSIGN ATOM [symbol|pl|mi] point 140 modelkit ASSIGN ATOM @1 [symbol|pl|mi] 141 modelkit ASSIGN ATOM @1 [symbol|pl|mi] point 142 modelkit ASSIGN BOND (integer) [0,1,2,3,4,5,p,m] (default P) 143 modelkit ASSIGN BOND {atom1 atom2} [0,1,2,3,4,5,p,m] (default P) 144 modelkit ASSIGN BOND @1 @2 [0,1,2,3,4,5,p,m] (default P) 145 146 modelkit CONNECT @1 @2 [0,1,2,3,4,5,p,m] (default 1) 147 148 modelkit ROTATE ... (same as ROTATE for example, ROTATE BOND @1 @2 degrees) 149 modelkit ROTATESELECTED (same as ROTATESLECTED) 150 151 view mode 152 MODELKIT SYMOP [n] 153 MODELKIT SYMOP "x,-y,z" 154 MODELKIT SYMOP [[4x4 matrix]] 155 MODELKIT OFFSET [{i j k}/NONE] 156 157 -- configuration options include the following; CAPS is default: 158 159 MODELKIT SET addHydrogens [TRUE|false] 160 MODELKIT SET autobond [true|FALSE] 161 MODELKIT SET clickToSetElement [TRUE|false] 162 MODELKIT SET showSymopInfo [TRUE|false] 163 MODELKIT SET bondtype [0,1,2,3,4,5,p,m] 164 MODELKIT SET element [name or symbol] 165 MODELKIT SET MODE [molecular|view|edit] 166 MODELKIT SET UNITCELL [EXTEND|PACKED] 167 168 edit mode -- not implemented 169 170 MODELKIT SET SYMMETRY [APPLYFULL|APPLYLOCAL|RETAINLOCAL] // not implemented 171 MODELKIT POINT point or atoms // not implemented 172 173 -- configuration options can be given sequentially within one MODELKIT command or in individual commands 174 -- examples: 175 176 modelkit set mode view symop 5 center @3 177 modelkit set mode view symop 5 center @3 offset {0 0 0} // unitized [0,1) 178 179 180JmolVersion="14.32.6" 181 also 15.2.6 182 183bug fix: (JavaScript only) insignificant script processing error reported in JavaScript console 184bug fix: InChI for deutero compounds not working 185bug fix: InChI failure should show "?" not SMILES 186 187JmolVersion="14.32.5" 188 also 15.2.5 189 190bug fix: show INCHI broken in 14.32.5 191 192new feature: hack added for reading invalid CIF files created by Materials Studio 193 194Apache Log4J vulnerability checked (not applicable) 195 196Confirming that Jmol.jar (any version) is not affected by the CVE-2021-45046: 197 Apache Log4j2 Thread Context Message Pattern and Context Lookup Pattern vulnerable to 198 a denial of service attack as described by Apache,�or any other Log4j2 vulnerability. 199 200Several checks support this finding: 201 202 1) Jmol is compiled using Java 6. Log4j2.x requires at least Java 7. 203 2) Jmol itself does not use Log4j. We use a much simpler, extremely streamlined custom class, 204 org.jmol.util.Logger, with only a very simple interface. 205 3) Jmol does incorporate JNI-InChI 1.03_1, which does utilize Log4j. However, JNI-InChI 1.03_1 206 utilizes Log4j1, not Log4j2. 207 4) Log4j1.x is not impacted by this vulnerability. 208 5) The suggested mitigation -- simply removing org/apache/logging/log4j/core/lookup/JndiLookup.class 209 from the distributed JAR file (Jmol.jar, JmolData.jar) is unnecessary, as Jmol.jar does not 210 contain even the org/apache/logging package, much less any class file that starts with "Jndi". 211 6) As part of this version update the ANT task 212 <delete file="${appjars.dir}/org/apache/logging/log4j/core/lookup/JndiLookup.class" /> 213 has been added to build.xml just in case any future version of any dependency might include that class. 214 215 216JmolVersion="14.32.4" 217 also 15.2.4 218 219feature change: MODELKIT no longer by default does drag-to-bond with default autobonding 220 - autobonding leads to results unexpected by the user -- should not be the default setting 221 - use MODELKIT SET AUTOBOND TRUE to re-enable this feature if desired 222 - easy enough to drag to bond atoms without this 223 224new feature: MODELKIT set autobond true 225 -- when dragging to create a new bond to a new atom, automatically check vicinity of the new atom for bonding 226 -- default now set to FALSE 227 228new feature: MODELKIT set hidden true 229 -- hides the modelkit menu but retains the picking and hover highlights 230 231new feature: PWmat atom.config reader http://pwmatus.com/manual 232 233bug fix: modelkit does not preserve setPicking setting in quiet mode 234bug fix: modelkit autobonding is too aggressive; needs to be settable 235 236 237JmolVersion="14.32.3" 238 also 15.2.3 239 240bug fix: (JavaScript only) insignificant script processing error reported in JavaScript console 241bug fix: various ModelKit issues. 242 243JmolVersion="14.32.2" 244 also 15.2.2 245 246bug fix: ModelKit shows wrong hover labels 247bug fix: LOAD APPEND after adding atoms via modelkit does not by default append new 248bug fix: state saved after deleting atoms in modelKitMode uses appendNew true, creating several fragment models 249bug fix: Java app modelkit icon does not clear when a structure is loaded 250 251new feature: modelkitCallback 252 -- String value is "ON" or "OFF" 253 -- for example: set modelkitcallback "jmolScript:print 'modelkitmode=' + modelkitmode" 254 255new feature: MODELKIT command 256 -- was introduced for 15.0.2 / 14.29.25, but was not documented 257 -- allows scripting of Jmol Modelkit functions 258 -- turning the modelkit on/off - same as SET MODELKITMODE: 259 260 modelkit ON 261 modelkit OFF 262 263 -- note that the modelkit does not have to be ON for the following functionality. 264 265 -- note that the modelkit does not have to be ON for the following functionality. 266 267 -- configuration options include the following, where (xxx) is optional, CAPS is default: 268 269 270 modelkit addHydrogens [TRUE|false] 271 -- setting this false turns off the automatic addition of hydrogens 272 modelkit clickToSetElement [TRUE|false] 273 -- setting this removes the ability to change elements other than H by clicking on them 274 modelkit showSymopInfo 275 -- setting this false stops the modelkit from showing space group symmetry information 276 277 -- configuration options can be given sequentially within one MODELKIT command or in individual commands 278 279 modelkit addHydrogens FALSE clickToSetElement TRUE; 280 281 -- MODELKIT actions: 282 283 modelkit assign atom @3 "C" 284 -- changes atom 3 to carbon, with concomitant bond distance change and addition of H 285 modelkit assign atom "C" {3 3 3} 286 -- adds a carbon at {3 3 3} but does not bond anything to it 287 modelkit assign atom @25 "O" {3 4.2 3} 288 -- adds an O atom connected to @25 and at the default distance on the line between @25 and {3 4.2 3} 289 modelkit assign bond @1 @2 <type> 290 -- where type can be 0,1,2,3,4,5,p,m 291 - p indicates +, increment (cycles 1 2 3 1) 292 - m indicates -, decrement (stops at 0) 293 -- with associated changes in hydrogen count 294 modelkit connect @25 @26 295 -- connects two atoms, adjusting hydrogen atoms according to standard hybridization 296 297 new feature: SHOW MODELKIT addhydrogens 298 new feature: SHOW MODELKIT clickToSetelement 299 new feature: SHOW MODELKIT showSymOpInfo 300 301 new feature: getProperty("modelkitinfo") 302 -- delivers an associative array of information about the modelkit 303 304 305JmolVersion="14.31.61" 306 also 15.1.61 307 308new feature: JSpecView reading Bruker NMR 1D and 2D directories and ZIP files 309 - drag any file from a Bruker directory or the directory itself into JSpecView 310 311new feature: allow select within(cell,555) 312 313new feature: symop(pointGroupOperation, atom, pointGroupInfoObject) 314 - where pointGroupOperation is of the form S6 or S6.1 or S6^3 or S6.1^3 315 and ^n means nth power 316 and .i means ith element of this type 317 - return point result of operation of the point group operation on an atom 318 - for example: print symop("C2.1", @3) 319 - without atom, returns matrix 320 - for example: print symop("C2.1") 321 - without pointInfoGroupObject defaults to the point group of the current model, pointGroup() 322 323new feature: pointgroup() returns pointGroupInfo object same as getProperty("pointgroupinfo") 324 325bug fix: JmolTable.java example does not point to correct site 326bug fix: CIFReader some first models 0 atoms 327 328JmolVersion="14.31.60" 329 also 15.1.60 330 331fix for CIFReader not reading multi-model CIF files. 332 333JmolVersion="14.31.59" 334 also 15.1.59 335 336bug fix: CIFReader should allow unlooped items for all needed tags 337bug fix: JSpecView writer broken in 15.1.50 2021.08.10 338 339JmolVersion="14.31.58" 340 also 15.1.58 341 342bug fix: adjustments to TopoCifParser pre-release of Topology.dic 343 344JmolVersion="14.31.57" 345 also 15.1.57 346 347bug fix: magCIF can not handle fractions 2/5, 3/10, etc. 348 349JmolVersion="14.31.56" 350 also 15.1.56 351 352bug fix: compare({2.1}, {1.1}, "map", "H") broken 353 354 355JmolVersion="14.31.55" 356 also 15.1.55 357 358new feature: COMPARE {2.1} {1.1} BONDS SMILES HYDROGEN 359 - adds HYDROGEN check for aligning methyl and methylene groups properly 360 361bug fix: (-1.4567).format("%5.2f") missing minus sign 362bug fix: UnitCell transform should be included in COMPARE FRAME 363bug fix: CifReader fix for lack of case sensitivity in some GEOM_* records for some COD and CCDC files 364bug fix: FilesReader fails with zip file pipe 365bug fix: Polyhedra SMILES not working for chirality check -- was never fully tested 366bug fix: Resolver can fail for certain CIF files resolved to MOL incorrectly 367bug fix: TopoCif update 368 369new feature: COMPARE additions: 370 371 // compare FRAMES 372 // compare {model1} {model2} POLYHEDRA 373 // compare {model1} {model2} SUBSET {polyhedra} POLYHEDRA 374 // compare {model1} {model2} ATOMS @atom1 @atom2 POLYHEDRA 375 // compare FRAMES POLYHEDRA 376 377new feature: compare() additions 378 379 // A, B, int[] map 380 // A, B, int[] map, stddev 381 382 383JmolVersion="14.31.54" 384 also 15.1.54 385 386bug fix: TopoCifParser bugs 387 388new feature: load "xxx" filter "TOPOL" 389 -load _topol_* data 390 -no symmetry applied 391 -display net 1 by default 392 393new feature: load "xxx" {1 1 1} filter "TOPOL" 394 -load _topol_* data 395 -display the {1 1 1} unit cell, with symmetry (this could be fill or packed, etc.) 396 -display net 1 by default 397 398new feature: load "xxx" {1 1 1} filter "TOPOLNet=2" 399 -load _topol_* data 400 -display net.id==2 by default 401 402new feature: load "xxx" {1 1 1} filter "TOPOLNet=Net_2" 403 -load _topol_* data 404 -display net.label=='Net_2' by default 405 406 407JmolVersion="14.31.53" 408 also 15.1.53 409 410bug fix: TopoCifParser bugs fixed 411bug fix: {metal} included Xx 412bug fix: symop() function not relating file-based operators 413bug fix: print symop(3,"xyzOriginal") does not show original (file-bsaed) symmetry operation 414new feature: symop(3, [1 1 0]) adds specified "cif2-style" translation to symmetry operation. 415new feature: symop(@1, @61, "cif2") returns the "cif2" format of this operation. 416 - developed for working with TopologyCIF data 417 - <symop> [i j k] 418 - For example: 419 420 $ load =ams/quartz 1 packed 421 $ print symop(@1,@3,"cif2") 422 2 [0 0 0] 423 3 [0 0 0] 424 425 $ print symop(@1,@13,"cif2") 426 2 [1 0 0] 427 3 [1 0 0] 428 429new feature: print symop(...."canonical") 430new feature: print symop(n, [i j k], ...) 431 $ print symop(3, [1 0 1]) 432 433 434 435 436JmolVersion="14.31.52" 437 also 15.1.52 438 439bug fix: JavaScript does not return to correct scrpt level after DELAY 440 441JmolVersion="14.31.51" 442 also 15.1.51 (take 2) 443 444new feature: ISOSURFACE DENSITY option 445 - checks for cryo-EM data from EBI/EMDB and, if that exists, uses it; otherwise uses x-ray diffraction data 446bug fix: problems with ISOSURFACE in 14.31.50 447bug fix: EM isosurface not saved in state. 448 449JmolVersion="14.31.50" 450 also 15.1.50 451 452bug fix: JSpecView upgrade for misc. JDXReader issues 453bug fix: Jmol file dropper not asking to resize (broken in 15.1.46/14.31.46) 454bug fix: Jmol not reading EBI cryo-EM files from density server. 455bug fix: Jmol not using EBI submap feature of density server for full-structure volumes 456 457new feature: ISOSURFACE *.../full 458 - returns the FULL EBI volume data, not just one localized around a structure 459 460JmolVersion="14.31.49" 461 also 15.1.49 462 463bug fix: JSpecView not using ##FIRSTX for diff-dup x values after first. 464bug fix: JSpecView version not showing 465 466new feature: isosurface "*em" 467 - same as *emdb, just simpler. 468 469JmolVersion="14.31.48" 470 also 15.1.48 471 472 bug fix: JavaScript isosurface asynchronous file loader 473 failing to finalize, causing refresh in later-called 474 function to not return. 475 476 bug fix: Filenames and directories with unicode accents not saved in ZIP, PNGJ, JMOL files. 477 478 bug fix: Locally loaded JavaScript files not save in ZIP, PNGJ, JMOL 479 480JmolVersion="14.31.47" 481 also 15.1.47 482 483new feature: isosurface "*emdb/nnnn" 484 - retrieves the cryo-EM surface EMD-nnnn 485 - uses http://ftp.ebi.ac.uk/pub/databases/emdb/structures/EMD-%file/map/emd_%file.map.gz 486 (https did not work in Java due to certificate issues) 487 488new feature: isosurface "*emdb/=xxxx" 489 - looks up the EMDB id for the cryo-EM surface associated with pdb id xxxx 490 - first uses https://www.ebi.ac.uk/emdb/api/search/fitted_pdbs:%file?fl=emdb_id,map_contour_level_value&wt=csv 491 - then uses http://ftp.ebi.ac.uk/pub/databases/emdb/structures/EMD-%file/map/emd_%file.map.gz 492 493new feature: isosurface "*emdb" (or "*emdb/" or "*emdb/=") 494 - uses the current model's PDB ID with *emdb/=xxxx" 495 496JmolVersion="14.31.46" 497 also 15.1.46 498 499bug fix: Drag-drop of PNGJ can fail due to SCRIPT command not accepting "spt::" type identifier 500 501JmolVersion="14.31.45" 502 also 15.1.45 503 504bug fix: model kit changes for atomName and element not saved in state (since Jmol 14.28?) 505 506JmolVersion="14.31.44" 507 also 15.1.44 508 509bug fix: Incorrect implementation of double value from string in JCAMP-DX format 510bug fix: V3000 reader does not recognize 2D mol file setting 511bug fix: 2D->3D can invert stereocenters having C-H bond. 512 513JmolVersion="14.31.43" 514 also 15.1.43 515 516new feature: hbondHDistanceMaximum maximum O--H distance in hydrogen bonds 517 - only in the case of actual hydrogen bonds, not pseudo-hydrogen bonds 518 - hbondsDistanceMaximum now aliased to hbondNODistanceMaximum for clarity 519 520JmolVersion="14.31.42" 521 also 15.1.42 522 523bug fix: GaussianReader fix for reading frequencies giving NullPointerException 524 525bug fix: mmCIF reader was requiring optional auth_XXXX fields 526 527bug fix: jspecview reading pimentoGCMS2.dx empty $$MODEL= causes NullPointerException 528 529bug fix: better MMFF94 and UFF for 2D -> 3D 530new feature: adds MMFF2D and UFF2D forcefields that involve stronger 531 fields for no-hydrogen (UFF2D) and added-hydrogen (MMFF2D) minimization 532new feature: adds set testflag2 TRUE to stop FILTER "2D" after first stage, before UFF2D+MMFF2D minimization 533 534JmolVersion="14.31.41" 535 also 15.1.41 536 537bug fix: (JSmol only - not SwingJS) modelkit bond assignment fails due to old transpiler bug 538 -- was failing to convert char to int and back properly 539 540JmolVersion="14.31.40" 541 also 15.1.40 542 543bug fix: eval("JSON",json) fix to allow [...] or {...} 544bug fix: ellipsoid ISO saved in state with wrong size 545 546new feature: set checkCIR 547 -- retrieves the NCI/CADD Chemical Identifier Resolver URL 548 -- currently contacts chemapps.stolaf.edu/resolver 549 -- places return JSON information into _.cirInfo 550 -- reports _.cirInfo.status as "OK" if successful or "unavailable" if not 551 552new feature: Jmol's first load '$' or https://cactus.nci.nih/gov call does checkCIR 553 554new feature: Loading cactus.nic.nih/gov/chemical/structure file will resolve that name 555 556JmolVersion="14.31.39" 557 also 15.1.39 558 559bug fix: GAMESS reader broken 560 561JmolVersion="14.31.38" 562 also 15.1.38 563 564bug fix: TopoCIF 0.9.2 upgrade for _topol_node and _topol_net 565bug fix: JSpecView SVG export missing in menu and broken 566 567 568JmolVersion="14.31.37" 569 also 15.1.37 570 571bug fix: removing default dependency for XmlUtils and PO 572 573JmolVersion="14.31.36" 574 also 15.1.36 575 576bug fix: capture broken in 14.31.34 577 578JmolVersion="14.31.35" 579 also 15.1.35 580 581adds GamessReader MOPAC parameters from F90 files provided by Jimmy Stewart for MO reading 582 -- note that GAMESS uses only s and p orbitals for the MOPAC option 583adds GamessReader MOPAC option 584 -- forces using MOPAC slaters rather than gaussian contraction when g.c. is present 585adds MoldenReader [STO] ANGS and MOPAC options (zeta in 1/Angs; apply MOPAC scaling) 586 587JmolVersion="14.31.34" 588 also 15.1.34 589 590bug fix: NBO type change not saved in state 591bug fix: NBO auxiliary files (output.36, output.46, etc.) not saved in PNGJ,JMOL,ZIP files 592 593JmolVersion="14.31.33" 594 also 15.1.33 595 596new feature: Allow replacement of PNG data in PNGJ 597 598 x = load("toHenry2_pngj.png",true) 599 y = load("bob.png") 600 x._IMAGE_ = y._DATA 601 write var x "toHenryFromBob.png" 602 603 604JmolVersion="14.31.32" 605 also 15.1.32 606 607bug fix: isosourface MOLECULAR and SASURFACE should never drop below 1.5/(probe radius) 608bug fix: (second release) getProperty("isosurfaceData") broken 609 610JmolVersion="14.31.31" 611 also 15.1.31 612 613bug fix: isosurface ... NCI "" broken (in 14.5.2) 614bug fix: plane definitions totally messed up in 14.31.26 615 616JmolVersion="14.31.30" 617 also 15.1.30 618 619bug fix: load ? outside of function duplicates next commands 620bug fix: (JS) Safari 14 not downloading files using DataURI 621 622JmolVersion="14.31.29" 623 also 15.1.29 624 625bug fix: FileDropper does not recognize .txt file as possible script 626 627JmolVersion="14.31.28" 628 also 15.1.28 629 630 631new feature: Jmol SMILES bond atropisomerism ^nm- and ^^nm- 632 -- indicates atropisomerism (bond chirality in biaryl systems) 633 -- ^ and ^^ for bonds similar to @ and and @@ for atoms 634 -- n and m are single-digit bond selectors, generally one of 1, 2, or 3 635 -- n = 1/2/3 means "reference atom is first/second/third connection 636 to the atom on the left; m = 1/2/3 the same for the atom on the right. 637 -- ^- and ^^- same as ^22- and ^^22-, respectively 638 -- example: 639 640 641 load $biphenol 642 connect @2 @7 atropisomer 643 print {*}.find("SMARTS","c1(O)cccc{c1^^-c2}ccccc2O") 644 645 ({1 6}) 646 647 Here the "^^-" is short for "^^22- and refers to the two carbons with connected oxygen atoms: 648 649new feature: mol1.find(mol2, "MAP" + flags, format) 650 - creates a correlation map of atoms of mol1 to atoms of mol2 651 - mol1 and mol2 are atom sets such as {1.1} and {1.2} 652 - uses SMILES; Jmol SMILES directive flags such as "hydrogen" or "open" can be added 653 - format indicates the format to use for the results 654 - can be "name", "index", "number" or any valid label, such as "%a %i" 655 - defaults to "number" 656 - returns a map (associative array) containing keys: 657 - smiles: the SMILES string used for the match 658 - BS1 : atomset for mol1 659 - BS2 : atomset for mol2 660 - SMILEStoBS1 : array correlating SMILES atoms to BS1 661 - SMILEStoBS2 : array correlating SMILES atoms to BS2 662 - BS1toBS2 : array correlating BS1 to BS2 (indexes are for mol1; values are mol2) 663 - MAP1to2 : array of [a,b] pairs, where a is format for mol1, b is format for mol2 664 - key : format used in mapping 665 666 - example: 667 668 load files ":caffeine" "$caffeine" 669 info = {1.1}.find({2.1},"map", "name") 670 print info.SMILES 671 print info.key + ": " + info.MAP1to2.format("JSON") 672 673 O=C1c2c3N(C)C(=O)N1C.[n]2(C)c[n]3 674 675 name: [ [ "O1","O14" ],[ "O2","O4" ],[ "N3","N5" ],[ "N4","N10" ],[ "N5","N1" ], 676 [ "N6","N8" ],[ "C7","C12" ],[ "C8","C7" ],[ "C9","C13" ],[ "C10","C3" ], 677 [ "C11","C9" ],[ "C12","C6" ],[ "C13","C11" ],[ "C14","C2" ] ] 678 679 info = {1.1}.find({2.1},"map hydrogen", "number") 680 print info.SMILES 681 print info.key + ": " + info.MAP1to2.format("JSON") 682 683 /hydrogen/O=C1c2c3N4[C@@]([H])([H])[H].N51[C@@]([H])([H])[H].C54=O.[n]62[C@]([H])([H])[H].c6([H])[n]3 684 685 number: [ [ 1,14 ],[ 2,4 ],[ 3,5 ],[ 4,10 ],[ 5,1 ],[ 6,8 ],[ 7,12 ], 686 [ 8,7 ],[ 9,13 ],[ 10,3 ],[ 11,9 ],[ 12,6 ],[ 13,11 ],[ 14,2 ],[ 15,21 ], 687 [ 16,18 ],[ 17,20 ],[ 18,19 ],[ 19,22 ],[ 20,23 ],[ 21,24 ],[ 22,15 ],[ 23,17 ],[ 24,16 ] ] 688 689bug fix: x.label("%a %D") wrong value for %D 690 691JmolVersion="14.31.27" 692 also 15.1.27 693 694bug fix: {*}.bonds.length not working 695 696bug fix: array.find(n) should not do a string seach and return match. 697 - return array of array indices, 1-based. 698 - example: [11 3 1 2 1].find(1) == [3 5], not [1 3 5] 699 700newly documented: 701 702Polyhedra command allows for min and max radius 703 -- polyhedra 2.8 3.0 @3 704 705setting DSSR on the fly: 706 707 model 1 property dssr "1d66.dssr" // file containing data 708 model 1 property dssr @{load("1d66.dssr")} // actual data 709 select iloops 710 711 7124-order bond in MOL file using 14 for bond order 713 -- Jmol extension for MOL file format to allow 4-bond 714 -- example: [Re2Cl8](2-) 715 -- see https://en.wikipedia.org/wiki/Quadruple_bond 716 7175-order bond in MOL file using 15 for bond order 718 -- Jmol extension for MOL file format to allow 5-bond 719 -- example: [Mo2Cl8](4-) 720 -- see https://en.wikipedia.org/wiki/Quintuple_bond 721 7226-order bond in MOL file using 16 for bond order 723 -- Jmol extension for MOL file format to allow 6-bond 724 -- example: Mo2 725 -- see https://en.wikipedia.org/wiki/Sextuple_bond 726 727 728DRAW polygon @face @points 729 -- draws a filled polygon based on arrays of atom indices 730 -- @face is an array of integers, not necessarily wound correctly 731 -- @points is an atom bitset or an array of points (optional, defaults to {*} 732 -- for example: 733 734 load $p4 735 x = {*}.find("*1**1","map"); 736 draw ID p4r polygon @{x[1]} color red 737 draw ID p4b polygon @{x[2]} color blue 738 draw ID p4y polygon @{x[3]} color yellow 739 draw ID p4g polygon @{x[4]} color green 740 741 742DRAW polyhedron @faces @points 743 -- draws sets of polygons based on arrays of atom indices 744 -- @faces is an array of array of integers, not necessarily wound correctly 745 -- @points is an atom bitset or an array of points (optional, defaults to {*} 746 -- for example: 747 748 load $caffeine 749 draw polyhedron @{{*}.find("*1****1||*1*****1","map")} 750 751 load $p4 752 draw ID p polyhedron @{{*}.find("*1**1","map")} color red 753 754POLYHEDRON ID xxx @faces @points 755 -- @faces is an array of array of integers, not necessarily wound correctly 756 -- @points is an atom bitset or an array of points (optional, defaults to {*} 757 758 load $p4 759 polyhedra ID p4 @{{*}.find("*1**1","map")} 760 761array.format(headings) Transform an array of arrays into an array of associative arrays based on "column" headings, and vice-versa. For example, if y = [[1,2],[3,4]], then <b>z = y.format(["a","b"])</b> will set z to [ {{ "a": 1,"b": 2 }},{{ "a": 3, "b": 4 }} ]. And, in reverse, <b>z.format(["a","b"])</b> will be back to [[1,2],[3,4]] 762array.format("JSON") Formats a serial or associative array as JSON. 763array.format("%5.3f\t%5s") Formats an array or array of arrays into a multiline string using sprintf format. 764 765arrayOfArrays.col(n) selects out the nth column from an array of arrays. 766 For example, retrieving the third column from CSV data: 767 col3 = load("data.csv").split("",true).col(3). 768 769SHOW CHEMICAL -- fully described NIH/CADD options 770 771SHOW xxxx /yyyy Adding "/xxxx" to the command, such as SHOW file/cell will filter 772 the output only to lines containing the text after the slash character. 773 774Jmol PolySMILES -- described 775 776JmolSQL -- more description; adds WHEREIN; replaces older ** notation 777 778load HISTORY "saved.his" -- loads command history with script in saved.his 779 780load(filename, asbinary, async) -- 3rd parameter loads file asynchronously in HTML5 781 782frame align [modelNo] [pt] -- FIXED is assumed; used in state; shifts a model by a specific amount after removing any current frame alignment 783 784x.dot(y) for point.dot(plane) 785 786CIF 2.0 file reader added 787 788set zshadePower 0 -- allows examination of depth buffer and writing to image for external processing 789 790Windows BMP image reading -- reads 24-bit (full color) as well as 16-, 8-, 4-, 2-, and 1-bit color palette modes 791 -- 14-byte and 40-byte headers only; does not read compressed modes 792 793Write and data({atomset},type) expanded to: CIF|CML|CFI|MOL|PDB|PQR|SDF|CD (ChemDoodle)|JSON|QCJSON|V2000|V3000|XYZ|XYZRN|XYZVIB 794 795x.find("SMILES","top") -- creates a topology SMILES, involving just * and connections; does not include stereochemistry; 796 -- allows comparison of connection patterns without respect to any other consideration. 797 -- can be used to check equivalences in inorganic crystal structures. 798 -- example: load $caffeine;$ print {*}.find("SMILES","top") => *1(*)*(*)*2*3*(*)*1*.*2(*)**3 799 800load "" fill UNITCELL PRIMITIVE (for files that are conventional) 801load "" fill UNITCELL CONVENTIONAL (for VASP files, which are primitive cells) 802 803polyhedra WIGNER // Wigner-Seitz cell 804polyhedra BRILLOUIN // 1st Brillouin zone 805polyhedra BRILLOUIN 1 // 1st Brillouin zone 806polyhedra BRILLOUIN 2 // 2nd Brillouin zone 807polyhedra BRILLOUIN -1 // Wigner-Seitz cell 808polyhedra scale 3.0 BRILLOUIN 1 // scaled 1st Brillouin zone 809 810POLYHEDRA edgesOnly -- shows just edges; operates on ALL polyhedra, not just selected; complements edges, noEdges, frontEdges 811 812select within(d, $p1) where $p1 is a polyhedron ID 813 -- d = 0 is "on or within the polyhedron" 814 -- d < 0 is "-d angstroms within polyhedron" 815 -- d > 0 is "within d angstroms of polyhedron" 816 817LOAD will read BZ2-compressed files 818 819WRITE "SDF" implements atom value V nnn ... information 820 -- requires assigning the data property name "atom_values" in the model's molData property 821 -- for example: 822 823 $ load $2,3-dichlorobutane 824 $ molData = {"atom_values":"chirality"} 825 $ model properties "molData" molData 826 $ write dcb.sdf 827 828 -- note that if the model already has a molData property, then use the following to append to it: 829 830 $ molData = (_M.molData ? _M.molData : {}) 831 $ molData.atom_values = "chirality" 832 $ model properties "molData" molData 833 834x = load("filename","JSON") -- loads JSON data into variable 835 836{atom}.chirality -- uses Cahn-Ingold-Prelog rules to assign R or S to a carbon center 837 -- ignores sulfur and nitrogen chirality, generally 838 839{atom}.cipRule -- CIP sequence rule deciding this center; one of 1a, 1b, 2, 3, 4a, 4b, 4c, 5, or blank 840 841load =chebi/nnnnnn -- chEBI 2D molecule load, with minimal 100-step minimization 842 843set debugHigh -- same as set loglevel 6 - debugging only 844 845x.split(true) -- does a white-space token split of the string value of x 846 847CALCULATE CHIRALITY {atom set} -- optionally limited to the given atom set (or the currently selected atoms by default) 848 849set jmolInJSpecView -- allows Jmol window to NOT be embedded in JSpecView when JSpecView is opened in Jmol; default TRUE 850 851WRITE ISOSURFACE "t.pmesh"; WRITE ISOSURFACE "t.pmb" 852 -- creates ASCII (.pmesh) or binary (.pmb) file (a Jmol-specific file format) 853 -- relatively compact format 854 -- can speed up loading of meshes and contours 855 -- for filled surfaces, use .jvxl instead 856 -- read back into Jmol using ISOSURFACE "t.pmesh"/"t.pmb" 857 -- note that binary files are NOT RECOMMENDED for JSmol because some platforms cannot read them locally 858 -- example: 859 860 load $methane 861 isosurface plane {0 0 0 1} map vdw contours 20 862 write ISOSURFACE contour.pmb 863 isosurface contour.pmb 864 865set labelfor {atomset} "value" 866 -- allows setting of label without changing current selection 867 -- uses same syntax as LABEL command after {atomset} 868 -- for example: 869 870 set labelfor @atoms @myLabel 871 set labelfor {atomno <= 3} @{["a","b","c"]} 872 set labelfor {_C && chirality != ""} "%[atomname] %[chirality]" 873 874color NUCLEIC -- for nucleic only (others will be grey) -- based on DSSR nucleic color scheme: G green, C yellow, A red, T blue, U cyan 875 876set cartoonBlocks; set cartoonBlockHeight x.x -- for nucleic only -- uses DSSR data if present (using calculate structure DSSR or load =xxxx/dssr) 877 -- displays a DSSR block for each base based on dssr.nts.frame -- x.x is height of box in Angstroms (default 0.5) 878 879color property DSSR type 880 -- where type is one of: 881 bulges 882 coaxStacks 883 hairpins 884 hbonds 885 helicies 886 iloops 887 isoCanonPairs 888 junctions 889 kissingLoops 890 multiplets 891 nonStack 892 nts 893 pairs 894 ssSegments 895 stacks 896 stems 897 -- color is based on index into the list of the given structures 898 -- 0 (not of that structure), 1 (first entry), 2 (second entry), etc. 899 -- for example: 900 901 load =4fe5/dssr 902 cartoons only;set cartoonSteps; 903 color property dssr junctions 904 905x = {*}.find(smartsString,"map") -- returns an array of arrays of atom indices (0-based) 906 -- indicates exact correlation between atoms in {*} and atoms of smartsString 907 -- only unique sets of atoms are found, not every possibility 908 -- for example: 909 910 load $caffeine 911 s = show("smiles") // N1(C)C(=O)c2c3N(C)C1=O.[n]2(C)c[n]3 912 print {*}.find(s,"map").format("JSON") 913 [ [ 0,1,12,13,11,6,4,5,2,3,9,10,8,7 ] ] 914 915 load :caffeine 916 print {*}.find(s,"map").format("JSON") 917 [ [ 4,13,8,0,6,7,2,11,9,1,3,12,10,5 ] ] 918 919 920MACRO bz; createWS("p1") (still not documented) 921 -- creates a Wigner-Seitz cell as polygon id "p1" 922 -- requires current unit cell to be primitive to work correctly 923 -- polyhedron can be shifted using POLYHEDRA OFFSET 924 -- default ID "pbz1_1_" for just CREATEWS() 925 926 927POLYHEDRA UNITCELL 928 -- creates a polyhedron (12-gon in this case) around each of the 929 currerntly selected atoms that has that bonding environment 930 -- DOES NOT require atoms at these positions - can simply use the 931 unit cell and periodicity to find the relevant atom positions. 932 -- will check bonding as necessary using autobonding parameters 933 -- accepts all standard polyhedra options. For example: 934 935 polyhedra 12,16 3.5 UNITCELL 936 937array.getProperty("xxxx") -- same as getproperty(array, "xxxx") 938 -- drills down into an array of associative arrays to get sublist 939 -- can be used with [SELECT ... WHERE] 940 941SELECT x where x is an array of integers or array of array of integers 942 943connect NBO <nbotype> 944 - connect atoms in the currently visible model using a resonance structure configuration found in an NBO .46 or .nbo file 945 - where <nbotype> is one of alpha|beta|46|46a|46b|nrtstr_n|nrtstra_n|rs_n|rsa_n|rsb_n 946 947label %[nbo]; 948 - label an atom using a resonance structure configuration found in an NBO .46 or .nbo file 949 - requires a previous connect NBO 950 951set nboCharges (default true) 952 - determines whether formal charges are also displayed with LABEL %[nbo] 953 954CONNECT for quintuple and sextuple bonds. 955 -- connect @1 @2 quintuple 956 -- connect @1 @2 sextuple 957 -- readily saved in state 958 -- saving in MOL file as bond type 15 and 16 959 960set labelOffset [mode sx sy sz ax ay az] 961 set labelOffset [sx, sy, sz] 962 set labelOffset [mode, sx, sy, sz, ax, ay, az] 963 964 where 965 966 sx,sy,sz are screen coord offsets 967 -- applied after view rotation 968 -- sy > 0 LOWERS label 969 ax,ay,az are xyz position (in Angstroms; applied before view rotation) 970 mode == 0 indicates xyz position is absolute and sx sy sz are Angstroms 971 mode == 1 indicates xyz position is relative to atom position and sx sy sz are Angstroms 972 mode == 2 indicates xyz is absolute, and sx sy sz positions are screen pixels 973 mode == 3 indicates xyz is relative, and sx sy sz positions are screen pixels 974 defaults: mode == 1; ax = ay = az = 0 975 976getProperty("cifInfo", "c:/temp/test.cif") 977 -- reads CIF file data in structured format 978 -- automatically uses CIF 1.0 or CIF 2.0, as needed. 979 -- if file name is missing, uses current model file 980 981 982load AUDIO audiofilename 983 -- JavaScript can read WAV, MP3, and OGG files 984 -- application can read WAV files 985 986polyhedra AUTO ... 987 -- sets polyhedron radius automatically, using "MAXIMUM GAP" rule 988 -- see Zur Abgrenzung der Koordinationssphäre und Ermittlung der Koordinationszahl in Kristallstrukturen 989 G. O. Brunner, D. Schwarzenbach, Zeitschrift fur Kristallographie - Crystalline Materials, 1971, vol 133, issues 1-6 127-133 990 http://www.degruyter.com/view/j/zkri.1971.133.issue-1-6/zkri.1971.133.16.127/zkri.1971.133.16.127.xml?rskey=sfBNTx&result=1 991 992polyhedron -x.x .... 993 -- sets maximum radius for gap calculation to be x.x 994 995print @1.label("%[unitid]") 996 -- generates unit IDs for atoms or residues 997 -- unit IDs are a proposed general standard for representing atoms and residues in biomolecules 998 -- see http://rna.bgsu.edu/main/rna-3d-hub-help/unit-ids 999 -- options follow "-": 1000 1001 $ print {atomno=3}.label("%[unitid]") // includes residue and atom 1002 |1|A|G|1|OP1||| 1003 1004 $ print {atomno=3}.label("%[unitid-r]") // residue only 1005 |1|A|G|1|||| 1006 1007 $ print {atomno=3}.label("%[unitid-mr]") // adds model id 1008 1EHZ|1|A|G|1|||| 1009 1010 $ print {atomno=3}.label("%[unitid-mra]") // full unitID 1011 1EHZ|1|A|G|1|OP1||| 1012 1013 $ print {atomno=3}.label("%[unitid-mrat]") // full unitID, right-trimmed 1014 1EHZ|1|A|G|1|OP1 1015 1016 -- Note that the full 8-line unit ID is produced under all circumstances. 1017 This is important, because string-matching of unit ids will not work 1018 without all fields completed. For example: 1019 1020 |1|A|G|1 1021 1022 would match 1023 1024 |1|A|G|11 1025 1026 without the closing "|". Likewise, 1027 1028 |1|A|G|11 1029 1030 is not a match for the insertion residue 1031 1032 |1|A|G|11|||3| 1033 1034 -- [Editorial note: I agree that it was ill-advised to put the insertion 1035 code at the end. This makes it impossible to efficiently match 1036 residues in full-atom unit IDs.] 1037 1038 -- Note that in an actual atom label, one needs to add "\n" at the end 1039 and have the label in quotes in order to avoid having "|" mean "new line" 1040 1041 label "%[unitid]\n" 1042 1043 not just 1044 1045 label %[unitid] 1046 1047 This is a consequence of having defined "|" as new line early on in Jmol 1048 development. 1049 1050select within("1ehz|1|A|G|45||||") 1051print within("1ehz|1|A|G|45||||") 1052 -- unit IDs 1053 -- see http://rna.bgsu.edu/main/rna-3d-hub-help/unit-ids 1054 -- used for annotations, validations, dssr, and rna-3d processing 1055 -- pdbid|model|chain|RESNAME|resno|ATOMNAME|altcode|inscode|symmetry 1056 -- can truncate trailing (but not leading) pipe symbols 1057 1ehz|1|A|G|15, |1|A|G|15|C2 1058 -- requires at minimum a model number, chain, and residue number 1059 |1|A||15 1060 -- ATOMNAME blank indicates full residue, with altcode indicating "this alt_id or no alt_id" (a configuration) 1061 -- ATOMNAME nonblank indicates one atom, with altcode indicating "exactly this alt_id" (a location) 1062 -- can be multiple, white space, comma, "]", "[", and double quote ignored 1063 1ehz|1|A|G|15||||,1ehz|1|A|U|59||||,1ehz|1|A|C|60||| 1064 1065select shortcuts for nucleic acid structures 1066 -- for example: select junctions; select kissingloops 1067 -- activated after load =xxxx/dssr or calculate structure dssr 1068 -- includes: 1069 "@bulges within(dssr,'bulges')", 1070 "@coaxStacks within(dssr,'coaxStacks')", 1071 "@hairpins within(dssr,'hairpins')", 1072 "@hbonds within(dssr,'hbonds')", 1073 "@helices within(dssr,'helices')", 1074 "@iloops within(dssr,'iloops')", 1075 "@isoCanonPairs within(dssr,'isoCanonPairs')", 1076 "@junctions within(dssr,'junctions')", 1077 "@kissingLoops within(dssr,'kissingLoops')", 1078 "@multiplets within(dssr,'multiplets')", 1079 "@nonStack within(dssr,'nonStack')", 1080 "@nts within(dssr,'nts')", 1081 "@naChains within(dssr,'naChains')", 1082 "@pairs within(dssr,'pairs')", 1083 "@ssSegments within(dssr,'ssSegments')", 1084 "@stacks within(dssr,'stacks')", 1085 "@stems within(dssr,'stems')", 1086 1087 1088mapOfMaps.array(k) 1089 -- generates an array of maps from a map of maps by 1090 storing all top-level map keys under key k in lower-level map 1091 -- reversed by another .array(k) 1092 -- causes a script exception if mapOfMaps is not a map of maps 1093 1094arrayOfMaps.array(k) 1095 -- generates a map of maps from an array of maps by 1096 removing each map's key k and using that as the key for that map value 1097 -- reversed by another .array(k) 1098 -- causes a script exception if arrayOfMaps is not an array of maps or key k is not present in all maps 1099 1100Jmol SMILES/SMARTS generic polySMILES polyhedron option @PHn 1101 -- does a SMILES search for the local coordination environment around a center. 1102 -- particularly valuable for inorganic compounds and metallic or intermetallic network crystal structures 1103 1104write CIF (only minimal) 1105 1106 1107@1.find("crystalClass", pt) 1108 -- generates a list of points based on a model's crystal class (point group) 1109 -- uses @1 just to find the unit cell and space group 1110 -- optional pt is used as a generator (defaults to @1) 1111 -- example: 1112 load =ams/calcite 1 1113 x = @3.find("crystalClass") 1114 print pointgroup(x).name 1115 draw points @x 1116 polyhedra ID p {0 0 0} to @x 1117 1118 1119pointgroup("spacegroup", @1) 1120 -- analyzes the point group (crystal class) of a crystal. 1121 -- uses three irrational-coordinate points to generate all possible operators 1122 -- creates a map with keys (somewhat variable depending upon axes present): 1123 1124 C2 1125 C3 1126 Ci 1127 Cs 1128 S6 1129 detail 1130 distanceTolerance 1131 linearTolerance 1132 nAtoms 1133 nC2 1134 nC3 1135 nCi 1136 nCn 1137 nCs 1138 nS6 1139 nSn 1140 nTotal 1141 name 1142 points 1143 principalAxis 1144 1145 1146 1147x = pointgroup([array of points],center) 1148 -- center is optional, defaulting to average of the points 1149 -- returns a map: 1150 pts = [ {-1.0132 0.585 0.0012999999},{1.0132 0.585 0.0012999999},{0.0 -1.17 0.0012999999} ] 1151 print pointgroup(pts,{0 0 0}) 1152 { 1153 "C2" : 1154 [ 1155 {0.8660127 -0.50001717 0.0022222984} 1156 {-0.8660127 -0.50001717 0.0022222984} 1157 {0.0 0.99999756 0.002222217} 1158 ] 1159 "C3" : 1160 [ 1161 {0.0019245904 -0.0011111083 -0.99999756} 1162 ] 1163 "Cs" : 1164 [ 1165 {0.0019245904 -0.0011111085 -0.99999756} 1166 {-0.49998164 -0.866036 0.0} 1167 {0.49998164 -0.866036 0.0} 1168 {1.0 0.0 0.0} 1169 ] 1170 "S3" : 1171 [ 1172 {0.0019245904 -0.0011111083 -0.99999756} 1173 ] 1174 "center" : {0.0 0.0 0.0} 1175 "detail" : "# 3 atoms;" 1176 "distanceTolerance" : 0.2 1177 "linearTolerance" : 8.0 1178 "nAtoms" : 3 1179 "nC2" : 3 1180 "nC3" : 1 1181 "nCi" : 0 1182 "nCn" : 4 1183 "nCs" : 4 1184 "nS3" : 1 1185 "nSn" : 1 1186 "nTotal" : 12 1187 "name" : "D3h" 1188 "principalAxis" : {0.0019245904 -0.0011111083 -0.99999756} 1189 "principalPlane" : {0.0019245904 -0.0011111085 -0.99999756} 1190 } 1191 1192 1193calculate symmetry polyhedra {atomset} 1194 -- selectively calculates polyhedra. 1195 -- for example: calculate symmetry polyhedra {polyhedra(4)} 1196 1197calculate symmetry polyhedra id 1198 -- selectively calculates polyhedra for a given ID. 1199 -- for example: calculate symmetry polyhedra "poly1" 1200 1201 1202_hoverLabel 1203 -- reports general hover label set by hover command 1204 1205_hoverEnabled 1206 -- reports if hover is enabled or not 1207 1208 /invertStereo/ flag for SMARTS search 1209 -- allows quick check for enantiomers 1210 -- example: select search("/invertStereo/C[C@H](Br)CC") will match (R)-2-bromobutane 1211 even though it is for (S)-2-bromobutane 1212 1213{*}.find("SMILES/open") 1214 -- generates OpenSMILES string for selected atoms 1215 -- applies OpenSMILES aromaticity rules for 5-, 6-, and 7-membered rings 1216 -- not chemical -- allows exocyclic c=C bonds and [nH] in 6-membered rings 1217 -- also adds atom class if property_atomClass is nonzero 1218 -- for example: 1219 1220 $ load $2-butanol 1221 $ @2.property_atomclass=2 1222 $ @3.property_atomclass=3 1223 $ @5.property_atomclass=5 1224 $ print {*}.find("smiles/open") 1225 1226 C[C@H:2]([OH:5])[CH2:3]C 1227 1228set window width height 1229set window [width height] 1230set window "xxx.png" 1231 1232 1233point(unitcell, {i, j, k}) 1234 -- returns the Cartesian point corresponding to a specific coordinate in a unit cell system. 1235 -- unitcell is an array of the form [origin, va, vb, vc] 1236 -- {i j k} is a point in the unit cell 1237 -- for general use -- does not require actual setting of the model's unit cell 1238 1239UNITCELL TRANSFORM @m4x4 1240 -- direct 4x4 matrix transformation of a unit cell 1241 1242unitcell("a=...,b=...,c=...,alpha=...,beta=...,gamma=....") 1243 - array of center and three vectors 1244 - example: 1245 $ print unitcell("a=10,b=10,c=20,alpha=90,beta=90,gamma=129") 1246{0.0 0.0 0.0} 1247{10.0 0.0 0.0} 1248{-6.293203 7.7714605 0.0} 1249{-8.742278E-7 -1.8328565E-6 20.0} 1250 1251load ... unitcell "a=...,b=...,c=...,alpha=...,beta=...,gamma=...." 1252 1253unitcell "a=...,b=...,c=...,alpha=...,beta=...,gamma=...." 1254 -- only the numbers are read; everything else is ignored, so order is important here 1255 -- uses the format created by show unitcell/a 1256 1257unitcell RECIPROCAL 2 1258 -- as integer, multiples of pi 1259 1260unitcell reciprocal x.x 1261 -- allows scaling of reciprocal cell, similar to unitcell("reciprocal", x.x) 1262 1263expanded unitcell() function 1264 -- adds additional types: "A", "B", "C", "I", "F" 1265 -- default is the lattice type of the model's space group 1266 -- not just cubic; "BCC" is converted to "I" 1267 -- for example: 1268 1269 load =ams/silicon 15 packed // Cmca 1270 draw id "uc" diameter 0.1 unitcell mesh nofill color black 1271 unitcell @{unitcell("primitive")} 1272 color unitcell red 1273 unitcell 0.1 1274 axes unitcell 1275 axes on 1276 1277 1278calculate hydrogens TRUE 1279 -- calculates hydrogens and multiple bonding 1280 -- same as 1281 1282 calculate hydrogens 1283 connect aromatic modify 1284 calculate aromatic 1285 1286 -- similar to, but not identical to set pdbAddHydrogens 1287 -- allows reasonable addition of multiple bonds to proteins after loading 1288 1289 1290 1291 1292JmolVersion="14.31.26" 1293 also 15.1.26 1294 1295new feature: $isosurface.getProperty("values"), $isosurface.getProperty("vertices") corrected for invalid vertices 1296 1297bug fix: getProperty("isosurfaceData.vertices") returning too many vertices 1298 - retrieves only the vertices that are on the surface, not excluded vertices 1299 - retrieves only vertices for selected sets if using SET or SUBSET 1300 - works best with ISOSURFACE sasurface (much faster than SOLVENT or MOLECULAR) 1301 - can be used with ISOSURFACE solvent or ISOSURFACE molecular 1302 with careful adjustment of solvent probe diameter (1.2 recommended, not 1.4) 1303 and RESOLUTION 1304 - with 1.4, there is a tendency to get interior artifacts 1305 - note that this function will return "null" if there is no isosurface or if 1306 no single isosurface is selected (by issuing ISOSURFACE ID xxx ON, for instance) 1307 1308new feature: getProperty("isosurfaceData.allVertices") 1309 - returns all vertices, even those excluded as interior artifacts or from unselected sets 1310 1311load =6nef 1312isosurface sasurface 1313x=$isosurface1.getproperty("vertices") 1314{*}.property_d = {*}.distance.min(x) 1315color property_d 1316slab 50; slab on 1317draw points @x // to visualize the surface points themselves 1318 1319bug fix: Cif2Reader should accept UTF-8 signature "BOM" of three bytes 0xEF 0xBB 0xBF (not 0xFEFF) 1320 1321JmolVersion="14.31.25" 1322 also 15.1.25 1323 1324bug fix: isosurface set 1 showing 2nd largest, should show largest 1325bug fix: save state for isosurface with one set off by one 1326bug fix: getProperty("isosurfaceData") fails for pocket cavities 1327 1328JmolVersion="14.31.24" 1329 also 15.1.24 1330 1331note: isosurface #sets is from print getProperty("shapeInfo.Isosurface[1].volume").length 1332bug fix: isosurface set 0 not working 1333bug fix: calculate surfacedistance fails -- wrong parameter in Java method call 1334bug fix: MoldenReader requires [MO] to be last tag 1335bug fix: MoldenReader should not report energy units (not always eV) 1336bug fix: DnD script into script console should run that script. 1337bug fix: AboutDialog using old splash image 1338 1339JmolVersion="14.31.23" 1340 also 15.1.23 1341 1342bug fix: STL and hermite display missing last two residues of trace 1343 1344JmolVersion="14.31.22" 1345 also 15.1.22 1346 1347new feature: isosurface subset [1 3 5] cavity vdw 1348 - allows more than one set to be displayed 1349 1350new feature: isosurface cavity 1.2 50 vdw 1351 - increases maximum envelope radius from 10 to 50 1352 - note that large envelope radii can produce artifacts for pocket cavities 1353 - for example: 1354 1355 load =1wp1 filter "biomolecule 1" 1356 isosurface set 1 select {protein} only pocket cavity 3 20 1357 isosurface slab none slab plane x=0 1358 1359JmolVersion="14.31.21" 1360 also 15.1.21 1361 1362new feature: InChIKey generation: 1363 load $morphine; print {*}.find("inchi", "key"); 1364 - can be combined with any other valid inchi flag: 1365 load $morphine;print {*}.find("inchi","srel key"); 1366 1367new feature: {*}.inchi(options) same as {*}.find("inchi",options); 1368 load $morphine; print {*}.inchi("key"); 1369 1370new feature: InChI or InChIKey from SMILES using .inchi(): 1371 print "CCCC".inchi() // uses load("$CCCC") 1372 print "CCCC".inchi("key") 1373 1374new feature: InChI or InChIKey from NCI or PubChem shortcut using .inchi(): 1375 print "$caffeine".inchi(); 1376 print "$CCCC".inchi(); 1377 print ":caffeine".inchi("key"); 1378 print ":smiles:CCCC".inchi(); 1379 1380new feature: InChI or InChIKey from any MOL file data source using .inchi(): 1381 print load("foo.mol").inchi("key"); 1382 1383new feature: InChIKey from InChI: 1384 1385 $ x = ":morphine".inchi() 1386 $ print x 1387 InChI=1S/C17H19NO3/c1-18-7-6-17-10-3-5-13(20)16(17)21-15-12(19)4-2-9(14(15)17)8-11(10)18/h2-5,10-11,13,16,19-20H,6-8H2,1H3/t10-,11+,13-,16-,17-/m0/s1 1388 $ print x.inchi("key") 1389 BQJCRHHNABKAKU-KBQPJGBKSA-N 1390 1391 1392 1393bug: "xxx".find("sequence") assumes xxx is a set of one-character residue IDs 1394 1395new feature: adds "xxx".find("sequence",true) 1396 - case-sensitive text search 1397 1398new feature: adds "xxx".find("sequence",false) 1399 - case-insensitive text search 1400 1401 1402JmolVersion="14.31.20" 1403 also 15.1.20 1404 1405bug fix: GamessReader should read ENERGY, MP2, CSDD, and CSDD(T) energy types (Mark Perri) 1406 - adds _M.EnergyType 1407 1408bug fix: VaspOutcarReader upgrade for Vasp6 1409 1410new feature: initialize INCHI 1411 - for JavaScript specifically, loads the inchi-wasm module asynchronously. 1412 - allows the very first call to {*}.find("inchi") to be active. 1413 - note that a very first call to Jmol.evaluateVar(applet,"{*}.find('inchi')") will still fail. 1414 1415new feature: {*}.find("inchi") 1416new feature: {*}.find("inchi",flags) 1417 - generates InChIs from modelset atoms 1418 - integrates jni-inchi-0.7-jar-with-dependencies.jar 1419 - uses inchi-wasm for JavaScript (R.Apodaca https://github.com/rapodaca/inchi-wasm) 1420 - flags include (https://www.inchi-trust.org/technical-faq-2): 1421 perception flags: DoNotAddH SNon NEWPSOFF 1422 stereo flags: SRel SRac SUCF 1423 more flags: NEWPSOFF SUU SLUUD RecMet FixedH KET 15T 1424 java-only flags: key outputsdf (Java only; still no InChIKey for JavaScript) 1425 - JavaScript is InChI 1.05; Java is still 1.03 1426 - note: JavaScript-only directories _WASM and _ES6 should not be processed by Google Closure Compiler 1427 1428JmolVersion="14.31.19" 1429 -- was released as an overwrite of 14.31.18 :( 1430 1431JmolVersion="14.31.18" 1432 also 15.1.18 1433 1434 bug fix: MacSpartan Release 1.0.3 (ancient!) skips orientation and orbitals 1435 bug fix: SHOW SPACEGROUP fails for nonstandard space group (=ams/quartz) 1436 1437 1438 new feature: Topology CIF (TopoCifParser.java) reading of _topol_xxx records 1439 topoCIF filter "topos_type=x" where x is v, vw, hb, or some concatentation of those using "+" 1440 topoCIF filter "topos_ignore" skips reading of _topol records, reading as standard CIF 1441 1442 undocumented: set hiddenLinesDashed (14.8.0) 1443 1444 1445JmolVersion="14.31.17" 1446 also 15.1.17 1447 1448 bug fix: print 2 > 1.0 gives false. typo introduced 2020.10.02 causes int[>,<,>=,<=] float to fail 1449 bug fix: minimizer step reports should be in user units, not native 1450 bug fix: minimizer initial/final reports should state "/mol" for units 1451 1452JmolVersion="14.31.16" 1453 also 15.1.16 1454 1455 new feature: (undocumented) now("message") 1456 new feature: now("message","format") 1457 1458 bug fix: print load("t.tar") should act as load("t.tar|.") to give directory 1459 bug fix: MO linear combination should not show type in info 1460 bug fix: MO squared should show ^2 in info 1461 1462// there is no 14.31.15 1463 1464JmolVersion="14.31.14" 1465 also 15.1.15 1466 1467new feature: TAR file reader with zip-like entry loading 1468 load "t.tar|guest/77317/output.log" 1469 1470new feature: GenNBOReader supports older NBO 3.0 output.properties rather than missing .46 labels file 1471new feature: NBO command expanded to allow named orbitals 1472 NBO "C1-C2" 1473 NBO TYPE PNBO "C1-C2" 1474 1475JmolVersion="14.31.13" 1476 also 15.1.14 1477 1478bug fix: MoldenReader fails to read [5F] if that record is after the [MO] block. 1479bug fix: GenNBOReader does not accept spherical s, p designations: 151 152 153 (wh6-a.31) 1480 1481JmolVersion="14.31.12" 1482 also 15.1.14 1483 1484bug fix: minimization constraint broken in 14.29.45 1485 1486JmolVersion="14.31.11" 1487 also 15.1.13 1488 1489bug fix: adds fix in script compiler for nonbreaking 1490 space nbsp; \u00a0 from clipping browser text 1491 1492JmolVersion="14.31.10" 1493 also 15.1.12 1494 1495bug fix: dots -1.0 does not imply ONLY 1496 1497JmolVersion="14.31.9" 1498 also 15.1.11 1499 1500bug fix: set pdbaddhydrogens does not work with PDB files that have some H atoms (but no multiple bonds) 1501bug fix: MOVETO quaternion jumps (seconds=0) if crude check for change fails 1502 1503JmolVersion="14.31.8" 1504 also 15.1.10 1505 1506new feature: point(["{1,2,3}","{2,3,4}",....]) 1507bug fix: large integer number != operator failure 1508bug fix: fuxyz vs. fxyz and uxyz 1509distribution: JSpecview not built in 14.31.5 1510 1511JmolVersion="14.31.7" 1512 also 15.1.9 1513 1514bug fix: PSE file saved to PNGJ may not fully reload (missing surface, for example) 1515bug fix: atom.occupancy of 0.01 saved as 0.0 1516 1517JmolVersion="14.31.6" 1518 also 15.1.8 1519bug fix: msCIF reader not reading ICDD Fourier modulated file. 1520 1521JmolVersion="14.31.5" 1522 1523bug fix: https for NMRDB 1524bug fix: JSpecview applies ##SHIFTREFERENCE as HZ for data in PPM 1525bug fix: JSpecview must ignore ##SHIFTREFERENCE for JEOL, at least for $$ JEOL NMR v1.10 1526 1527JmolVersion="14.31.4" 1528 1529bug fix: print format("%0.-3s", "testing") "-" does nothing 1530 1531new feature: isosurface S1 VAL [points or atoms] SELECT.... 1532 - calculates isosurface values for a set of points or atoms 1533 - values are created during surface constructions, not after 1534 - for solvent and molecular surfaces, negative value is "inside"; positive is "outside" 1535 - surfaces that are not calculated will give 0 for all values 1536 1537new feature: $s1.getProperty("values"); 1538 - retrieves the array of values produced by isosurface s1 VAL 1539 - example: 1540 1541 load $caffeine 1542 isosurface s1 value {*} select {!_H} only vdw 50% translucent 1543 {*}.property_d = $s1.getproperty("value") 1544 color property_d 1545 1546bug fix: NWChem reader does not ignore file-save data block properly 1547bug fix: get property fileInfo initially or after ZAP throws exception 1548bug fix: isosurface map colorscheme "rwb" fails, whereas color isosurface "rwb" works 1549 1550JmolVersion="14.31.3" 1551 1552bug fix: Jmol app does not allow width smaller than about 350 pixels 1553 1554JmolVersion="14.31.2" 1555 1556bug fix: draw pointgroup C2 3 draws all C2 axes, not just the third 1557 1558JmolVersion="14.31.1" 1559 1560bug fix: SYNC/sockets should not automatically subscribe to CLICK (which includes drag events) 1561bug fix: "WRITE IMAGE width height" (with no file name) causes array out of bounds exception 1562bug fix: SYNC command sending not working with raw JSON or Jmol associative arrays 1563 1564JmolVersion="14.31.0" 1565 1566new feature: Switch to Java 7, allowing for string-based switch and Files.readAllBytes(). 1567 1568bug fix: ellipsoids "csa" scale 0.5 on does not scale 1569bug fix: implicit refresh required after translateSelected 1570 1571new feature: Gaussian reader reads NMR shielding tensors as "csa" 1572for example: 1573 1574 load EtOH-nmr.out 1575 frame 2; 1576 wireframe only 1577 ellipsoids set "csa" scale 0.5 1578 ellipsoids on 1579 1580new feature: Gaussian reader reads NMR_J_coupling data 1581new feature: atom properties can be float[][] arrays 1582 -- for atom-atom values 1583new feature: MEASUREMENT property_xxx 1584 -- for 2D float[][] properties 1585new feature: MEASUREMENT VALUE x.x 1586 -- sets a fixed value for a standard measurement 1587new feature: measurement unit "+xxx" means abs(value) 1588 -- specifically, "+hz" useful for calculation data 1589new feature: measurement "+hz" units automatically use property_J values 1590new feature: MEASUREMENT "<unit>" where <unit> is valid measurement unit 1591new feature: measure() allows "property_xxx" 1592new feature: measure() allows "<unit>" 1593for example: 1594 1595load EtOH-nmr.out 1596frame 2; 1597print @@3.property_J.format("JSON") 1598 1599 >> [ [ 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-5.8511596,132.96,0.0,-2.16701,3.6352599,1.4761999,1.5346,-0.042426,-11.6895 ] ] 1600 1601print measure(@@2, {model=2}, "property_J", "").format("JSON") 1602 1603 >> [ 124.307,0.0,132.96,119.271,9.69322,0.75008297,4.29308,-6.40836,115.875 ] 1604 1605 1606measure @@2 @@3 "+hz" // "+hz" for absolute value and indicates we want to use this property 1607 1608measure @@2 @@3 property_J "hz" 1609 1610print measure(@@2, @@3, "property_J", "hz") 1611 1612 >> property_J 133.0 "133.0 hz" C2/2 #2 H3/2 #3 1613 1614print measure(@@2, @@8, "property_J", "+hz") 1615 1616 >> property_J 6.4 "6.4 hz" C2/2 #2 O8/2 #8 1617 1618 1619new feature: SYNC sockets completely rewritten, allowing for substantially more 1620 feedback and simpler JSON-based interface. Many features of the 1621 Molecular Playground now implemented in Jmol itself. Features include: 1622 - simplification of sockets, allowing for just one that is use for 1623 input and outoput 1624 - default short-message callbacks for all significant callbacks 1625 - added set XxxxCallback SYNC:ON and SYNC:OFF for subscribing to 1626 full callback Object[] data information. 1627 - better JSON creation/parsing 1628 - simpler class structure 1629 - allows Molecular Playground-like gestures to be socket-defined. 1630 1631 This from org.openscience.jmol.appl.jsonkiosk.JsonNioService: 1632 1633/** 1634 * A class for interacting with Jmol over local sockets. 1635 * 1636 * See also org.molecularplayground.MPJmolApp.java for how this works. 1637 * Note that this service does not require MPJmolApp -- it is a package 1638 * in the standard Jmol app. 1639 * 1640 * Listens over a port on the local host for instructions on what to display. 1641 * Instructions come in over the port as JSON strings. 1642 * 1643 * This class uses the Naga asynchronous socket network I/O package (NIO), the 1644 * JSON.org JSON package and Jmol. 1645 * 1646 * http://code.google.com/p/naga/ 1647 * 1648 * Initial versions of this code, including the JSON-base protocol were created 1649 * by Adam Williams, U-Mass Amherst see http://MolecularPlayground.org and 1650 * org.openscience.jmol.molecularplayground.MPJmolApp.java 1651 * 1652 * <code> 1653 * 1654 * Sequence of events: 1655 * 1656 * 1) Jmol initiates server listening on a port using the JmolScript 1657 * command with an arbitrary negative port number. 1658 * (-30000 used here just for an example): 1659 * 1660 * sync -30000 1661 * 1662 * This can be done also through the command line using 1663 * 1664 * jmol -P -30000 1665 * 1666 * or 1667 * 1668 * jmol --port -30000 1669 * 1670 * Jmol will respond to System.out: 1671 * 1672 * JsonNioServerThread-JmolNioServer JsonNioServerSocket on 30000 1673 * 1674 * 1675 * 2) Client sends handshake to port 30000. As with all communications to this service, 1676 * there must be no new-line characters (\n) ANYWHERE in the JSON being sent EXCEPT 1677 * for a single message terminator: 1678 * 1679 * 1680 * {"magic": "JmolApp", "role": "out"}\n 1681 * 1682 * where "out" here indicates that this socket is for Jmol (reply) output. 1683 * 1684 * Jmol will reply with the 30-byte response: 1685 * 1686 * {"type":"reply","reply":"OK"}\n 1687 * 1688 * (The client may see only 29 bytes, as it may or may not strip the final \n.) 1689 * 1690 * Optionally, the client may also indicate a specified port for Jmol input. 1691 * But typically this is just the currently active port. 1692 * 1693 * {"magic": "JmolApp", "role": "in"}\n 1694 * 1695 * Jmol will reply with 1696 * 1697 * {"type": "reply", "reply": "OK"}\n; 1698 * 1699 * 1700 * 3) Client sequentially sends Jmol script commands over the "in" socket: 1701 * 1702 * {"type": "command", "command": command} 1703 * 1704 * where required command is some JSON-escaped string such as "rotate x 30" or "load $caffeine". 1705 * For example: 1706 * 1707 * {"type": "command", "command": "var atoms = {_C or _H};select atoms"}\n 1708 * 1709 * 1710 * For the rest of this discussion, we will use the Jmol command that communicates with another Jmol instance 1711 * rather than this JSON context: 1712 * 1713 * SYNC 30000 "var atoms = {_C or _H};select atoms" 1714 * 1715 * in this case. 1716 * 1717 * 1718 * 4) Jmol throughout this process is sending replies that come 1719 * from the Jmol Statuslistener class. For example: 1720 * 1721 * {"type":"reply","reply":"SCRIPT:script 8 started"} 1722 * {"type":"reply","reply":"SCRIPT:Script completed"} 1723 * {"type":"reply","reply":"SCRIPT:Jmol script terminated"} 1724 * 1725 * Note that your client will be subscribed to many of the Jmol status callbacks 1726 * (see org.openscience.jmol.app.jmolpanel.StatusListener), including: 1727 * 1728 * LOADSTRUCT 1729 * ANIMFRAME 1730 * SCRIPT 1731 * ECHO 1732 * PICK 1733 * CLICK 1734 * RESIZE 1735 * ERROR 1736 * MINIMIZATION 1737 * STRUCTUREMODIFIED 1738 * 1739 * All scripts and callback messages run in order but asynchronously in Jmol. You do not need 1740 * to wait for one script to be finished before issuing another; there is a queue that handles that. 1741 * If you want to be sure that a particular script has been run, simply add a MESSAGE command 1742 * as its last part: 1743 * 1744 * sync 30000 "background blue;message The background is blue now" 1745 * 1746 * and it will appear as a SCRIPT callback: 1747 * 1748 * {"type":"reply","reply":"SCRIPT:The background is blue now"} 1749 * 1750 * after which you can handle that event appropriately. 1751 * 1752 * The SCRIPT callback can be particularly useful to monitor: 1753 * 1754 * sync 30000 "backgrund blue" 1755 * 1756 * {"type":"reply","reply":"SCRIPT:script compiler ERROR: command expected\n----\n >>>> backgrund blue <<<<"} 1757 * 1758 * Note that the ERROR callback does not fire for compile errors, 1759 * only for errors found while running a parsed script: 1760 * 1761 * {"type":"reply","reply":"ERROR:ScriptException"} 1762 * 1763 * Note that all of these messages are "thumbnails" in the sense that they are just a message string. 1764 * You can subscribe to a full report for any of these callbacks using 'SYNC:ON' for the 1765 * callback function: 1766 * 1767 * set XxxxxCallback SYNC:ON 1768 * 1769 * For example, issuing 1770 * 1771 * sync 30000 "load $caffeine" 1772 * 1773 * gives the simple reply: 1774 * 1775 * {"type":"reply","reply":"LOADSTRUCT:https://cactus.nci.nih.gov/chemical/structure/caffeine/file?format=sdf&get3d=true"} 1776 * 1777 * but after 1778 * 1779 * sync 30000 "set LoadStructCallback 'SYNC:ON' 1780 * 1781 * we get additional details, an array of data with nine elements: 1782 * 1783 * {"type":"reply","reply":["LOADSTRUCT", 1784 * "https://cactus.nci.nih.gov/chemical/structure/caffeine/file?format=sdf&get3d=true", 1785 * "file?format=sdf&get3d=true", 1786 * "C8H10N4O2", null, 3, "1.1", "1.1", null]} 1787 * 1788 * Exact specifications for these callbacks are not well documented. 1789 * See org.jmol.viewer.StatusManager code for details. 1790 * 1791 * Remove the callback listener using 1792 * 1793 * set XxxxxCallback SYNC:OFF 1794 * 1795 * Note that unlike Java, you get only one SYNC callback; this is not an array of listeners. 1796 * 1797 * 1798 * 5) Shutdown can be requested by sending 1799 * 1800 * {"type": "quit"}\n 1801 * 1802 * or by issuing the command 1803 * 1804 * sync 30000 "exitjmol" 1805 * 1806 * 1807 * Note that the Molecular Playground implemented an extensive set of gesture-handling methods 1808 * that are also available via this interface. Many of these methods utilize the JmolViewer.syncScript() 1809 * method, which directly manipulates the display as though someone were using a mouse. 1810 * 1811 * {"type" : "move", "style" : "rotate", "x" : deltaX, "y", deltaY } 1812 * {"type" : "move", "style" : "translate", "x" : deltaX, "y", deltaY } 1813 * {"type" : "move", "style" : "zoom", "scale" : scale } (1.0 = 100%) 1814 * {"type" : "sync", "sync" : syncText } 1815 * {"type" : "touch", 1816 * "eventType" : eventType, 1817 * "touchID" : touchID, 1818 * "iData" : idata, 1819 * "time" : time, "x" : x, "y" : y, "z" : z } 1820 * 1821 * For details on the "touch" type, see org.jmol.viewer.ActionManagerMT::processEvent 1822 * 1823 * Note that all of the move and sync commands utilize the Jmol sync functionality originally 1824 * intended for applets. So any valid sync command may be used with the "sync" style. These include 1825 * essentially all the actions that a user can make with a mouse, including the 1826 * following, where the notation <....> represents a number of a given type. These 1827 * events interrupt any currently running script, just as with typical mouse actions. 1828 * 1829 * "centerAt <int:x> <int:y> <float:ptx> <float:pty> <float:ptz>" 1830 * -- set {ptx,pty,ptz} at screen (x,y) 1831 * "rotateMolecule <float:deltaX> <float:deltaY>" 1832 * "rotateXYBy <float:deltaX> <float:deltaY>" 1833 * "rotateZBy <int:degrees>" 1834 * "rotateZBy <int:degrees> <int:x> <int:y>" (with center reset) 1835 * "rotateArcBall <int:x> <int:y> <float:factor>" 1836 * "spinXYBy <int:x> <int:y> <float:speed>" 1837 * -- a "flick" gesture 1838 * "translateXYBy <float:deltaX, float:deltaY>" 1839 * "zoomBy <int:pixels>" 1840 * "zoomByFactor <float:factor>" 1841 * "zoomByFactor <float:factor> <int:x> <int:y>" (with center reset) 1842 * 1843 * 1844 * </code> 1845 */ 1846 1847JmolVersion="14.30.3" 1848 1849new feature: FAHReader FAH:: reads FoldingAtHome Top.json and FrameNNN.json files 1850 -- FAH:: is required for Frame files but not the Top file. 1851 -- automatic calculation of structure using DSSP 1852 -- Both files are required; three load options: 1853 1854 LOAD FILES "ViewerTop.json" + "ViewerFrame22.json" // explicit joining to two files 1855 1856 LOAD ViewerTop.json; 1857 LOAD XYZ FAH::ViewerFrame22.json // first the atoms, then the coordinates 1858 1859 LOAD FAH::ViewerFrame22.json // just the coordinates with associated ViewerTop.json assumed present 1860 1861 -- Subsequent calls to LOAD XYZ will replace coordinates and recalculate DSSP only. 1862 1863 1864JmolVersion="14.30.2" 1865 1866bug fix: CrystalReader fails to read models in CRYSTAL17 double-walled nanotube file tn0.out 1867 1868JmolVersion="14.30.1" 1869 1870new feature: (undocumented) set picking dragMolecule 1871 -- acts like set picking dragSelected 1872 -- LEFT-drag to translate; ALT-LEFT-drag to rotate 1873 -- useful for two more molecules (covalently bonded units) 1874 1875new feature: set picking dragModel 1876 -- acts like set picking dragMolecule or dragSelected 1877 -- LEFT-drag to translate; ALT-LEFT-drag to rotate 1878 -- useful for two more models not loaded using set appendNew FALSE 1879 1880 1881JmolVersion="14.30.0" 1882 1883 1884bug fix: CrystalReader for slab nanotubes. 1885 - note that we are not processing the nonstandard helical symmetry operations 1886 1887Note - The move to a new minor version (14.30) is due to changes in the 1888------ Jmol Java/SwingJS application, not the JavaScript version. In particular, 1889------ changes in the way the org.openscience.jmol.app classes are 1890------ organized required taking this step. 1891 1892new feature: set minimizationMaxAtoms 1893 - maximum number of atoms allowed for MMFF minimization 1894 - defaults to 200 1895 1896new feature: MEASURE SEARCH "{[H]}CC{[H]}" 1897 - uses SMARTS searching, selecting only the specified atoms 1898 (in this case, all vicinal hydrogen atoms attached to carbon) 1899 - actually available but undocumented since 2013 1900 1901new feature: SET MEASUREMENTUNITS HZ 1902 - for example, set measurementUnits HZ; MEASURE SEARCH "{[H]}CC{[H]}" will display all 1H-1H coupling constants for a model 1903 - display calculated three-bond (standard vicinal) H-H J coupling constants (SMARTS {[H]}CC{[H]}) calculated 1904 using Haasnoot-Altona-Karplus substituent electronegativity-adjusted algorithm instead of distances 1905 - If there are fewer than three substituents on each central atom, or if 1906 either central atom is not carbon, defaults to general Karplus equation. 1907 - see org.jmol.quantum.NMRCalculation.java for algorithm and bibliographic details 1908 - expanded from use in solid-state NMR to any model EXCEPT magres files, 1909 which instead use HZ in association with solid-state tensors 1910 1911new feature: SET MEASUREMENTUNITS NOE_HZ 1912 - adds NOE calculation for H atoms that are more then three bonds apart 1913 along with vicinal and geminal 1914 - not validated; from Janocchio 1.1 (https://sourceforge.net/projects/janocchio/) 1915 1916new feature: Janocchio application included as a plugin (preliminary) 1917 - Java only; totally experimental; VERY preliminary 1918 - org.openscience.jmol.app.janocchio 1919 - required some refactoring of Jmol app classes 1920 - commit number 22001! 1921 1922new feature: LOAD ... CENTROID 1923 - for molecular crystal structures 1924 - loads one or more unit cells (as specified by {nx ny nz}) 1925 exploring covalent bonding so that molecules that have their centroid 1926 (center of geometry) within the specified block of cells are built. 1927 - available but undocumented since 2011 1928 - example: load =cod/1001253 {1 1 1} centroid 1929 note that {1 1 1} here is unnecessary, as it is the default 1930 1931bug fix: "DOMReader" not "DOMReadaer" in File Manager 1932 1933JmolVersion="14.29.55" 1934 1935bug fix: show chemical image has no image 1936bug fix: dotted lines with antialiasing are too thin and half the spacing 1937 1938JmolVersion="14.29.54" 1939 1940new feature: ELLIPSOID ID xx axes [...] [...] [...] 1941new feature: ELLIPSOID ID xx axes [ [...][...][...] ] 1942new feature: ELLIPSOID ID xx axes [ pt pt pt ] 1943new feature: ELLIPSOID ID xx axes matrix3f 1944new feature: ELLIPSOID ID xx scale [ a b c ] 1945new feature: ELLIPSOID ID xx scale pt 1946 1947new feature: set macroDirectory [default: https://chemapps.stolaf.edu/jmol/macros] 1948 - holds macros.json, which points to macro files 1949 - no longer hard-coded into Jmol 1950 1951new feature: adds MACRO topond 1952new feature: adds MACRO crystal 1953new feature: adds MACRO topology 1954new feature: adds filter "topos" to load command to allow for hypothetical unit cells with dimension a=1. 1955 1956bug fix: symop(@1,@2,"matrix") should give an array of matricies, one for each relevant operation 1957bug fix: print (-0.0001).format("%3.2f") should print 0.00, not -0.00 1958bug fix: CRYSTAL reader fixes for TOPOND output 1959bug fix: MOLDEN fix for allowing beta set to start with (nCoef + 1) 1960 1961JmolVersion="14.29.53" 1962 1963bug fix: PyMOL PSE reader broken for broken PyMOL 2.3.0 1964 1965JmolVersion="14.29.52" 1966 1967bug fix: CASTEP reader broken by Siesta %block check in Resolver 1968 1969 1970JmolVersion="14.29.51" 1971 1972bug fix: (undocumented) measure ID "xx" ... buggy 1973 1974 -fixes measure vertical center when using ID 1975 -adds id, hidden, visible to getproperty measurementInfo 1976 1977JmolVersion="14.29.50" 1978 1979bug fix: SiestaReader upgrade 1980bug fix: load =3dna/val validation loading does not work 1981 1982JmolVersion="14.29.49" 1983 1984bug fix: isosurface cutoff +0.3 does not work to indicate positive only for difference electron density maps 1985bug fix: load =3dna/val validation loading does not work (same reason as 14.29.28) 1986 1987JmolVersion="14.29.48" 1988 1989bug fix: LOAD xxxx:: broken in 14.29.25 1990 1991JmolVersion="14.29.47" 1992 1993bug fix: standard PDB files (no hydrogens and no multiple bonds) should not require /aromaticPlanar/ 1994 in search() selection. 1995 1996JmolVersion="14.29.46" 1997 1998bug fix: ModelKit menu broken in 14.29.45 1999 2000JmolVersion="14.29.45" 2001 2002bug fix: Java applet fails with class not found / static reference error 2003bug fix: Spartan reader files missing from applet JAR collection 2004bug fix: SDF writing should preserve order of user data 2005 2006bug fix: symop(@3, @4, "array") should return the full set of all the operators that map atom 3 to atom 4 2007 2008new feature intersection(ptLine, vLine, ptCenter, radius) 2009 -- intersection of a line with a sphere -- return list of 0, 1, or 2 points 2010 2011new feature: (array-of-hash).pivot(key) 2012 -- turns an array of hashes into a hash of arrays of hashes 2013 -- like a pivot table for an array, but based on the value of a hash 2014 key within each hash element of the array, not the element itself 2015 -- returns a (hash-of-arrays-of-hashes) of the array elements grouped 2016 by the stringified values of the specified key. 2017 -- for example: 2018 2019 a = [ 2020 {label:"C3", id:1}, 2021 {label:"C3", id:2}, 2022 {label:"C2", id:3} 2023 ] 2024 2025 a.pivot("label") = { 2026 "C3":[{label:"C3", id:1}, {label:"C3", id:2}], 2027 "C2":[{label:"C2", id:3}] 2028 } 2029 2030new feature: (array-of-hash).pivot(key1, key2, ...,sep) 2031 -- returns a (hash-of-array-of-hash) of the array elements grouped by the values of these keys, 2032 combined as a string using the separator given as the last parameter 2033 -- for example: 2034 2035 $ load =ams/halite 1 packed 2036 $ invariants = symop(@3,@3,"array") 2037 $ uniqueOps = invariants.pivot("label", "axispoint", "axisVector", "+") 2038 2039 This code is cataloging all of operators of space group #255 (F m 3 m) that 2040 leave atom 3 unchanged -- invariant. There are 48 such operations, but some of 2041 them are about the same axis. The two rotations for a given C3 or C4 are now combined 2042 into one element of uniqueOps, since they both have the same label, axispoint, and axisVector, 2043 just different rotations. 2044 2045new feature: SHOW xxxx/!whatever 2046 -- show lines without whatever using /! 2047 2048new feature MODELKIT command 2049 -- particularly designed for crystallographic work 2050 -- turning the modelkit on/off - same as SET MODELKITMODE: 2051 2052 modelkit (ON) 2053 modelkit OFF 2054 2055 -- configuration options include the following, where (xxx) is optional, CAPS is default: 2056 2057 MODELKIT addHydrogens [TRUE|false] 2058 MODELKIT clickToSetElement [TRUE|false] 2059 MODELKIT showSymopInfo [TRUE|false] 2060 2061 MODELKIT (mode) MOLECULAR 2062 MODELKIT (mode) view 2063 MODELKIT (mode) edit 2064 MODELKIT 2065 MODELKIT (unitcell) EXTEND 2066 MODELKIT (unitcell) packed 2067 2068 MODELKIT (edit) APPLYFULL 2069 MODELKIT (edit) applyLocal 2070 MODELKIT (edit) retainLocal 2071 MODELKIT MODELKIT 2072 MODELKIT (view) symop [n] 2073 MODELKIT (view) symop "x,-y,z" 2074 MODELKIT (view) symop [[4x4 matrix]] 2075 2076 MODELKIT (view) offset {i j k} 2077 2078 MODELKIT center @n 2079 MODELKIT center {point} (can be fractional by adding "/1" to at least one coord) 2080 MODELKIT center {atoms} 2081 2082 MODELKIT (set) element [name or symbol] 2083 2084 2085 -- configuration options can be given sequentially within one MODELKIT command or in individual commands 2086 2087 2088 -- examples: 2089 2090 modelkit mode view symop 5 center @3 2091 modelkit mode view symop 5 center @3 offset {0 0 0} // unitized [0,1) 2092 2093 -- action options include alternatives the commands in bold (ASSIGN is undocumented): 2094 2095 modelkit ROTATE ... (for example, ROTATE BOND @1 @2 degrees) 2096 modelkit ROTATESELECTED ... 2097 modelkit ASSIGN ATOM @1 [symbol|pl|mi] 2098 modelkit ASSIGN BOND @1 [0,1,2,3,4,5,p,m] 2099 modelkit ASSIGN CONNECT @1 @2 2100 2101new feature DRAW SYMOP @2 OFFSET {1 0 0} 2102 2103 -- allows lattice OFFSET, where {0 0 0} is always into the unitcell [0, 1) 2104 2105 2106bug fix: MINIMIZE CONSTRAINT for dihedral does not work. 2107new feature set mkAddHydrogens default true; set false to not add H atoms when working with modelkitmode 2108 2109JmolVersion="14.29.44" 2110 2111bug fix: 0 + {3.4, 0, 0} should give 3, not 0 2112bug fix: 2113 2114JmolVersion="14.29.43" 2115 2116bug fix: navigate TRACE does not work in JavaScript 2117bug fix: navigate TRACE followed by "quit" in console will not restart 2118 2119JmolVersion="14.29.42" 2120 2121bug fix: MolReader not assigning _M.dimension to "2D" or "3D", just the overall auxiliaryInfo.dimension 2122 2123JmolVersion="14.29.41" 2124 2125bug fix: CrystalReader does not skip over INFORMATION or WARNING line in CRYSTAL output files 2126 2127bug fix: symop("x,y,z",{0 0 1}) does not return correct value for unit cells oriented by a b c axes 2128 2129bug fix: OutputManager and FileManager fix for WRITE PDB "https://..." sending information to a server 2130 2131bug fix: JSmolJME.js miscodings cause error message in JSME 2132 2133bug fix: nmr_predict_HC.htm not correlating signals to structure correctly 2134 2135bug fix: JSpecView peak tabs for simulation or correlation in JmolJDX not proper width 2136 2137JmolVersion="14.29.40" 2138 2139bug fix: centerAt AVERAGE fix 2140 2141JmolVersion="14.29.39" 2142 2143new feature: capture SCRIPT "some script" 2144 - captures the given script 2145new feature: DELAY 1 while capturing inserts a one-second delay into the GIF animation 2146 - thus, the following is a +/-20-degree looping rock 2147 around the Y axis with a 2-second wait at each end: 2148 2149 CAPTURE "t.gif" LOOP SCRIPT "rotate y 20 20;delay 2;rotate y -40 -40;delay 2;rotate y 20 20;" 2150 2151bug fix: JSpecView inline loading fails due to null file name assignment - now "[inline]" 2152bug fix: JSpecView inline loading does not save data needed for export SOURCE 2153 2154 2155JmolVersion="14.29.38" 2156 2157bug fix: modelkit needs more slop for touch drag release and clicking 2158 2159new feature: CRYSTAL TOPOND TRHO and TLAT reader 2160 -- reads critical point information in Bader analysis 2161 2162JmolVersion="14.29.37" 2163 2164new feature: MO titleformat "...%3.1E"..." allows rounding of energy value 2165bug fix: (Java only) Jmol console does not accept paste with first character = '\n' 2166 2167JmolVersion="14.29.36" 2168 2169bug fix: getProperty("filecontents",filename) does not work. 2170 2171JmolVersion="14.29.35" 2172 2173bug fix: Jmol.jar does not contain JSpecView class files 2174 2175JmolVersion="14.29.34" 2176 2177bug fix: processing of MagneticCIF _space_group_magn.transform_BNS_Pp_abc '-a+b,c,a+b;1/2,1,1/2' 2178 fails 2179 2180JmolVersion="14.29.33" 2181 2182bug fix: (JavaScript only) in state creation for wireframe and measure 2183 for integer Angstrom size, for example WIREFRAME 1.0 2184 2185JmolVersion="14.29.32" 2186 2187bug fix: (JavaScript only) script with raw {...} expression fails to compile 2188 2189JmolVersion="14.29.31" 2190 2191bug fix: (JavaScript only) ModelKit checkboxes broken in atom submenu. (JSmol jsmoljs/JmolMenu.js) 2192 2193JmolVersion="14.29.30" 2194 2195RELEASE NOTE: JmolApplet*.jar Java files are no longer distributed in JSmol.zip. 2196 See the main release zip file for these. 2197 2198bug fix: H--Y hydrogen bonds miscalculated due to length maximum miscoded in 14.29.27 2199 // JmolVersion="14.29.30" 01/27/2019 -- fixes bug of 10/29/2018 2200 2201JmolVersion="14.29.29" 2202 2203new feature: print intersection(point vLine center radius) // 11/28/18 2204 - returns a list of 0 to 2 points representing the intersection of 2205 - a line through point with vector vLine and a sphere of radius about center 2206 - allows for 3D building with constraints of a screen coordinate and a 2207 distance from an atom 2208 2209doc fix: intersection(point1 point2 point3) should be intersection(point1 vector1 point2) 2210 - closest point to point2 on a line through point1 in the direction vector1 2211 2212bug fix: intersection() function changes value of point2 2213 2214bug fix: CrystalReader not reading vibration data for fragment calculation 2215 2216JmolVersion="14.29.28" 2217 2218bug fix: modelkit appending broken in 14.29.25 10/10/18 2219 2220new feature: assign atom "C" {2 2 2} 2221 - adds an unbonded atom at the given position 2222 2223JmolVersion="14.29.27" 2224 2225new feature: CrystalReader auxiliary info: 2226 * 2227 * primitiveToCrystal M3 transforming primitive lattice to conventional lattice 2228 * 2229 * mat4PrimitiveToCrystal M4 for use in transforming symmetry operations 2230 * 2231 * mat4CrystalToPrimitive M4 convenience inverse of mat4PrimitiveToCrystal 2232 * 2233 * fileSymmetryOperations List<String> symmetry operators (primitive) 2234 * 2235 * Drawing primitive unitcell operations: 2236 * 2237 * ops = _M.fileSystemOperations 2238 * 2239 * DRAW SYMOP @{ops[2]} 2240 * 2241 * If using the conventional cell, you can use its operators, or you can 2242 * limit yourself this primitive subset using: 2243 * 2244 * mp2c = _M.mat4PrimitiveToCrystal 2245 * 2246 * mc2p = _M.mat4CrystalToPrimitive 2247 * 2248 * DRAW SYMOP @{mc2p * ops[2] * mp2c} 2249 * 2250bug fix: CrystalReader not showing proper primitive cell with UNITCELL PRIMITIVE 2251bug fix: missing == for matrix3f and matrix4f 2252bug fix: draw symop with offset unitcell misses planes 2253bug fix: calculate hbond too generous for H--Y bond length -- max set at 2.2 Angstroms 2254bug fix: Jmol application "first frame" toolbar button broken 2255bug fix: script "inline" broken 2256 2257JmolVersion="14.29.26" 2258 2259bug fix: unitcell command with fractional translation fails 2260bug fix: CRYSTAL slab file can end up with emtpy-atom model 2261 2262JmolVersion="14.29.25" 2263 2264bug fix: MCIF (magnetic cif) reader does not handle symmetry operations with n/16. 2265 2266JmolVersion="14.29.24" 2267 2268bug fix: set language broken for Jmol application 2269bug fix: CRYSTAL reader can read one last 0-atom model 2270bug fix: 3-membered aziridine with non-H substituent should be chiral. 2271bug fix: isosurface "?" fails in JavaScript 2272 2273JmolVersion="14.29.23" 2274 2275bug fix: draw HKL {1 2 2} (undocumented) not working 2276bug fix: draw PLANE @pickedList not working 2277bug fix: draw intercept unitcell PLANE @pickedList not working 2278 2279JmolVersion="14.29.22" 2280 2281bug fix: (JSmol only) menu items that are checkboxes do not work 2282 2283https://sourceforge.net/p/jsmol/code/HEAD/tree/trunk/dist/tmp/coremenu.z.js?format=raw 2284https://sourceforge.net/p/jsmol/code/HEAD/tree/trunk/dist/tmp/corejsvmenu.z.js?format=raw 2285 2286can be placed in j2s/core as a quick fix 2287 2288JmolVersion="14.29.21" 2289 2290bug fix: set measurement 5 (integer; pixels) produces no line. 2291bug fix: polyhedra flat restored 2292 2293JmolVersion="14.29.20" 2294 2295feature change: removes (older, nonfunctional) NBO plug-in. (See GitHub Jmol-SwingJS) 2296new feature: allows plugin.properties to contain ";disabled", removing it from the Plug-In menu 2297new feature: adds ISOSURFACE [f1, filename1, f2, filename2, ...] 2298 - allows linear combination of isosurfaces 2299 - all grids must be identical (not checked internally - no error if this is not the case) 2300 - example is comparing crystal surface struture with and without binding of a surface molecule 2301 - e.g. ISOSURFACE [1, "PtO.cube", -1, "Pt.cube", -1, "O.cube"] 2302 - can map a plane 2303 - e.g. ISOSURFACE PLANE x=0.1 map [1, "PtO.cube", -1, "Pt.cube", -1, "O.cube"] 2304 - recommend using ISOSURFACE CACHE to convert to JVXL before saving as PNGJ 2305 2306 2307JmolVersion="14.29.19" // 2018.08.31 2308 2309bug fix: LOAD <old CRYSTAL output file> may not work (CrystalReader.java) 2310bug fix: LOAD ... supercell fails with multiple models (XtalSymmetry.java) 2311bug fix: state creation Spacefill output "2" not "2.0" (missing PT.escF(f) call in StateCreator.java) 2312 2313JmolVersion="14.29.18" // 2018.06.16 2314 2315bug fix: (JavaScript) modulation vector state in PNGJ or state not read back correctly from data 2316 ("1.4E-45" read as 1.399999...e-45) 2317bug fix: SHOW SPACEGROUP with group 167 will show too many n-glides; three are g-glides 2318 2319JmolVersion="14.29.17" // 2018.06.15 2320 2321bug fix: magnetic modulations not factoring in static moment correctly 2322bug fix: symop(@1, @2, "id") does not return 1-N id of operation 2323bug fix: show spacegroup fails to show detailed operation list (broken in 14.20.5 8/30/17) 2324bug fix: getproperty spacegroupinfo broken for incommensurate cases 2325bug fix: unitcell "-a,-b,c;0,0,0.50482" not working 2326bug fix: unitcell("-a,-b,c;0,0,0.5") not working 2327bug fix: cif reader does not recognize PRIMITIVE keyword 2328bug fix: Guassian reader can fail if no lines are present after vibration section 2329 2330JmolVersion="14.29.16" // 2018.06.06 2331 2332bug fix: unitcell("a=10 b=10,c=20,alpha=90,beta=90,gamma=129") crashes Jmol 2333bug fix: pointgroup(x) crashes Jmol when x is a set of points 2334bug fix: UNITCELL parent not working 2335bug fix: Brillouin Zone id set to "" for unknown reason 2336bug fix: SMILES allene R/S chirality broken for some connections 2337 - print "C1.CC=[C@@]=[CH]1".find("smiles","chirality").join("") should be PP, not MM 2338 2339bug fix: undocumented unitcell {1500500500 1500500501 1} not working 2340 - notation for expanding cell=555 to 1000 cells (1000jjjkkk-1999jjjkkk) 2341 - due to large integer not being stored in float properly in Java 2342 - related to 1505050 1505051, which does work (expands capability to 100 cells, 100jjkk-199jjkk) 2343 2344bug fix: load xxxx FILL UNITCELL broken (should not need "conventional" or "primitive") 2345 2346bug fix: MSCIFReader not recognizing atom_site_Fourier_wave_vector_q1_coef 2347 2348bug fix: Magnetic incommensurate files crashing unnecessarily 2349 2350new feature: getproperty spaceGroupInfo 2351 2352 2353JmolVersion="14.29.15" 2354 2355new feature: print {xxx}.find("SMILES/molecule","CC...") 2356new feature: print {xxx}.find("SMARTS/molecule","CC...") 2357 - molecule-based SMILES or SMARTS 2358 - returns an array of matching molecules in {xxx} 2359 - array.count gives number of matching molecules 2360 2361bug fix: [array].distance.min([array]) does not work 2362 2363bug fix: Bilbao reader does not allow for a blank line that is " " 2364 2365bug fix: CrystalReader not reading vibrations properly for filter "CONV" 2366 2367bug fix: SMILES should allow [C@+1] 2368 2369JmolVersion="14.29.14" 2370 2371bug fix: MO calculation can truncate MO if moleule is shifted too far prior to creation of MO 2372 2373bug fix: MOL reader user data column-81 continuation '+' fix 2374 2375bug fix: LOAD OFFSET option can skip first atom 2376 2377bug fix: CIPChirality -- Rule 6 adds set ciprule6full option for rr bicyclo[2.2.2]octane in/out business 2378bug fix: CIPChirality -- Rule 5 adds needed S-ref 2379bug fix: CIPChirality -- Rule 4b/Rule 5 ordering correction 2380bug fix: CIPChirality -- should indicate M/P for allene-centered spiro case BH64_084 2381bug fix: CIPChirality -- should indicate "e/z" instead of E/Z" for special cases of a single enantiomorphic pair 2382bug fix: CIPChirality -- duplicates and mass Rule 2 fix JL_008 2383 2384JmolVersion="14.29.13" 2385 2386new feature: running CALCULATE CHIRALITY will generate 2387 a CIPInfo entry in the model's auxiliary info 2388 array indicating the decision 2389 points in the stereochemical analysis: 2390 2391 $ load $inositol 2392 $ select @14 2393 $ calculate chirality 2394 R 2395 $ print _M.CIPInfo.C14 2396 O8 -------------- 2397 1a 2398 C13 -------------- 2399 (R)lll 2400 4b 2401 (R)ll 2402 C16 -------------- 2403 1a 2404 H20 -------------- 2405 2406 2407 - building of this structure disabled using SET TESTFLAG2 2408 2409 2410new feature: "<smiles string>".find("smiles","chirality") 2411 - creates an array indicating the stereochemical designator (R,S,r,s,M,P,m,p,E,Z) at each atom in the SMILES string 2412 - no structure is necessary 2413 - for example: 2414 2415 $ load $1,4-dihydroxycyclohexane 2416 $ calculate chirality 2417 rr 2418 $ show smiles 2419 "O[C@@H]1CC[C@@H](O)CC1" 2420 zap 2421 $ print "O[C@@H]1CC[C@@H](O)CC1".find("smiles","chirality").format("JSON") 2422 [ "","r","","","r","","","" ] 2423 2424 $ print "[C@@H]1(C)CC[C@H]2C(C)C.C1[C@@H]2O".find("smiles","chirality").format("JSON") 2425 [ "R","","","","S","","","","","S","" ] 2426 2427bug fix: CIP chirality did not recognize large conjugated rings as "mancude-like" 2428bug fix: model kit should not change selection when inverting a stereocenter 2429 2430bug fix: WRITE xxx.PDB not writing CONECT records 2431 2432JmolVersion="14.29.12" 2433 2434bug fix: jsmol.php security fix for sites implementing their own Info.serverURL 2435 2436bug fix: CrystalReader filer "conv" fix 2437 2438bug fix: MSCIFReader not recognizing atom_site_Fourier_wave_vector_q_coef 2439bug fix: MSCIFReader not recognizing atom_site_Fourier_wave_vector_q<n>_coef and _x,_y,_z in same block 2440 2441bug fix: GaussianReader broken for high-precision frequency data (broken in 14.29.10) 2442 2443new feature: GaussianReader orientation filters (default is ALL) 2444 -- filter 'orientation:input' (includes Z-Matrix) 2445 -- filter 'orientation:standard' 2446 -- filter 'orientation:all' 2447 -- note that vibrations are only returned if orientation is ALL or STANDARD 2448 2449new feature: CrystalReader returns atom property_irreducible: 2450 -- select property_irreducible > 0 2451 -- display property_irreducible > 0 2452 2453new feature: CrystalReader adds ellipsoid set "raman" 2454 2455 2456JmolVersion="14.29.11" 2457 2458bug fix: CrystalReader not handling symmetry for filter "conv" 2459bug fix: CrystalReader not properly generating vibrational modes 2460 2461code: refactored for SwingJS 2462code: refactored CrystalReader 2463 2464JmolVersion="14.29.10" 2465 2466bug fix: GaussianReader for fixed atoms in freq calculation 2467 2468JmolVersion="14.29.9v" 2469 2470bug fix: NBO 2471 2472JmolVersion="14.29.9" 2473 2474bug fix: NBO -- normalizations validated using allyl.nn for all types 2475 2476code: total switch to javajs.util.BS from javajs.util.BS 2477 2478JmolVersion="14.29.8" 2479 2480bug fix: NBO 2481 2482JmolVersion="14.29.7" 2483 2484bug fix: NBO 2485 2486 2487JmolVersion="14.29.6" 2488 2489bug fix: Matrix4f, Matrix3f should be output in format consistent with an matrix, not an array 2490 -- should not have space between opening and closing brackets 2491 -- should not use commas (not a critical distinction) 2492 2493 [[0.8362213 -0.5062382 0.21084802 52.988747] 2494 [0.5394281 0.8285579 -0.15003058 20.076633] 2495 [-0.09874859 0.23919612 0.96593684 46.393887] 2496 [0.0 0.0 0.0 1.0]] 2497 2498bug fix: genNBO reader failing for G orbitals (even though we cannot process them, the reader at least load them 2499 2500new feature: set infoFontSize 2501 -- for MO and NBO command 2502 -- default 20 2503 2504bug fix: red file load error message is too small to read 2505 -- font size increased to 20 2506 2507code: modular loading of F,G,H,I MO calculations only when needed 2508 2509JmolVersion="14.29.5" // released 2018.02.08 2510 2511bug fix: (Java application only) Incorrect class file in Jmol.jar causes BOUNDBOX ON to fail 2512 2513JmolVersion="14.29.4" // released 2018.02.07 2514 2515bug fix: set hbondsrasmol false fails with O atom-only HOH group 2516bug fix: calculate pointgroup does not change with new atom positions 2517 2518JmolVersion="14.29.3" // released 2018.02.03 2519 2520bug fix: mac cut/paste enabled for Macs 2521bug fix: set autobond corrected 2522bug fix: changing an atom's element should delete all partial charges 2523bug fix: load AUDIO "xxx.wav" broken in Java 2524bug fix: load AUDIO "xxx.wav" broken in JavaScript 2525bug fix: loading of pdb file does not report HET = .... to console 2526bug fix: CONTACT leading to no contacts crashes Jmol. 2527bug fix: load FILES with filter does not work 2528bug fix: load =xxxx/val with filter does not save in state 2529 solution was to change "+" to "-" to indicate special two-file loading in this case 2530 2531new feature: set label picking icon in application 2532new feature: set label picking does not require shift for drag 2533new feature: set label picking allows double-click to set the label 2534 2535new feature: drag-drop of PNGJ into script opens editor (for movie.spt; use not implemented) 2536 2537new feature: set allowAudio (default TRUE) 2538 2539new feature: AUDIOcallback 2540 - used to continue after completion of an audio clip 2541 - parameter is a hashtable with information about the audio clip 2542 2543new feature: load AUDIO "xxx.wav" FILTER "...options..." 2544 - filter options include: 2545 - id='....' an identifier for this audio clip 2546 - loop loop until told to stop 2547 - start='...', play='...', stop='...', ended='...' callback scripts allowed 2548 - single word arguments allowed - for example, id=a2 ended=audioDone() 2549 2550note: These features will be included in a future AUDIO command 2551 2552JmolVersion="14.29.1" // released 2018.01.25 2553 2554new feature: select peptide, defined as: 2555 protein && within(chain,monomer>1)&!within(chain,monomer>12) 2556 2557bug fix: isosurface EDS not working for mmCIF files. 2558 2559JmolVersion="14.28.4" // released 2018.01.25 2560 2561bug fix: script "minimize; calculate partialcharge" can cause exception 2562 2563bug fix: partial charges not reset to 0 after atom type change as with 2564 {_N}[2].element = "O" 2565 2566bug fix: isosurface CACHE should store isosurface as byte[] not String 2567 otherwise it is not saved in a subsequent WRITE xxx.PNG AS PNGJ 2568 2569 2570JmolVersion="14.28.3" // released 2018.01.19 2571 2572bug fix: mmtf broken - needs "/v1.0/" 2573bug fix: BCIF/CIF volume reader not properly assigning axes in some cases 2574bug fix: GAMESS reader does not work with symmetry indicated in input deck 2575 2576JmolVersion="14.28.2" // released 2018.01.17 2577 2578new feature: isosurface eds 2579 - generates electron density surface 2fo-fc for current PDB model 2580 - trimmed to structure 2581 - note that isosurface eds AS "t.bcif" will save the full data block to a BCIF file 2582 2583new feature: isosurface within 3 {e20:A} eds 2584 - generates electron density surface 2fo-fc for current PDB model 2585 - localized to WITHIN specification 2586 - note that adding AS "t.bcif" will save only the retrieved localized block to a BCIF file 2587 2588new feature: isosurface edsdiff 2589 - generates electron density surface fo-fc for current PDB model 2590 - trimmed to structure 2591 2592new feature: isosurface "=1eve/full" 2593 - generates electron density surface 2fo-fc for 1eve 2594 - reads and shows full data set, not trimmed to structure 2595 2596new feature: isosurface "=1eve/diff" 2597 - generates electron density surface fo-fc for 1eve 2598 2599new feature: isosurface "=1eve/diff/full" 2600 - generates electron density surface fo-fc for 1eve 2601 - reads and shows full data set, not trimmed to structure 2602 2603bug fix: for BCIF/CIF EBI density server data, switch to sigma_sampled from sigma_source 2604 2605JmolVersion="14.28.1" // released 2018.01.14 2606 2607new feature: WRITE CONTACT xxx.jvxl 2608 - saves a JVXL file for a contact 2609 - reload using ISOSURFACE xxx.jvxl, not CONTACT 2610 2611new feature: write contact "cache://t.jvxl" 2612 - saves a contact as a jvxl file in the cache 2613 2614new feature: isosurface "cache://t.jvxl" 2615 - loads an isosurface from a cached JVXL file 2616 2617new feature: generalized use of cache:// 2618 - cache:// saves or retrieves files from the FileManager cache 2619 - cleared upon ZAP 2620 - for example, the following transfers a contact to an isosurface for saving to a PNGJ file 2621 2622 load =1eve 2623 zoom {e20:a} 0 2624 contact {e20:A} hbond 2625 write contact cache://t.jvxl 2626 isosurface cache://t.jvxl 2627 contact delete 2628 write t3.png as PNGJ 2629 2630 2631new feature: isosurface reads EBI density server files (BinaryCIF and CIF) 2632 -- for example: 2633 isosurface "https://www.ebi.ac.uk/pdbe/densities/x-ray/1eve/box/-3.434,55.646996,59.195/7.479,70.943,74.928?space=cartesian&encoding=bcif" 2634 isosurface "https://www.ebi.ac.uk/pdbe/densities/x-ray/1eve/box/-3.434,55.646996,59.195/7.479,70.943,74.928?space=cartesian&encoding=cif" 2635 2636new feature: Jmol automatically uses EBI density server BinaryCIF files when "within" keyword is used. 2637 -- for example: 2638 2639 load =1eve 2640 display e20 2641 zoom {displayed} 0 2642 isosurface within 4 {e20:A} "=1eve" 2643 2644 -- allows testing of non-binary CIF electron density files using .cif: 2645 2646 isosurface within 4 {e20:A} "=1eve.cif" 2647 2648bug fix: loading, modifying, and resaving a PNGJ file fails in Java 2649bug fix: JavaScript JSmol improperly saves a PNGJ file within a PNGJ file 2650 2651JmolVersion="14.27.2" 2652 2653new feature: frame MO 2654 - goes to first frame with a molecular orbital 2655 2656bug fix: [UNK] missing in atom identities, even when part of actual structures such as 3A0B 2657 2658bug fix: polyhedra ID p1 @11 to {connected(@11)} not working 2659 -- allows for $p1.getProperty(....) 2660 2661bug fix: load(filename, "JSON") should allow for files that start with "[" rather than "{" 2662 2663bug fix: JSJSON parser fails for leading whitespace in map values 2664 2665code: additions to QCJSONWriter and QCJSONReader 2666 - working with Jmol-datafiles/qcjson/preliminary 2667 - "QCJSON 0-0-0.Jmol_14.27.2__2017-12-11_09:38", 2668 2669JmolVersion="14.27.1" released 2017.12.11 2670 2671new feature: functions write("zip") and write("jmol") 2672 - allows creating a binary variable containing zip data 2673 - does not include preview.png (unlike write xxx.zip or xxx.jmol) 2674 - includes any local files (as for WRITE command) 2675 - "zip" does not include remote-access files 2676 - "jmol" DOES include remote-access files 2677 - allows use of .pop() and .push() to remove, modify, or add files 2678 - same as write xxx.zip; x = load("xxx.zip",true) -- except includes no preview.png 2679 2680 - for example: 2681 2682 load $caffeine 2683 x = write("jmol") 2684 x.push("mydata","testing") 2685 write var x "test.zip" 2686 y = load("test.zip", true) 2687 print y.keys 2688 ... 2689 print y.mydata 2690 2691 testing 2692 2693 load test.zip 2694 ... 2695 2696 load $caffeine 2697 x = write("jmol") 2698 zap 2699 load var x 2700 2701 2702bug fix: CIPChirality adds "mancude system" averaging of atomic numbers in Rule 1a 2703 2704JmolVersion="14.26.1" 2705 2706new feature: experimental qcjson write format - ALPHA only 2707 2708bug fix: decimal formatter failing for 9.9999999 to 5 digits 2709bug fix: Jaguar reader not reading MOs; (working, but still does not read STO-3G) 2710 2711bug fix: direct call to sun.audio on some systems fails; 2712 -- moved to class openscience.jmol.jmolPanel.JmolAudio 2713 -- accessed by reflection, so not loaded unless needed. 2714 2715code - synchronized with NBOServe project. (2017.11.10) 2716 2717JmolVersion="14.25.2" 2718 2719bug fix: DCD (trajectory) reader failing when periodic lattice info is present 2720 2721JmolVersion="14.25.1" 2722 2723>> TODO NEEDS DOCUMENTING: 2724 2725new feature: polyhedra WIGNER // Wigner-Seitz cell 2726new feature: polyhedra BRILLOUIN // 1st Brillouin zone 2727new feature: polyhedra BRILLOUIN 1 // 1st Brillouin zone 2728new feature: polyhedra BRILLOUIN 2 // 2nd Brillouin zone 2729new feature: polyhedra BRILLOUIN -1 // Wigner-Seitz cell 2730new feature: polyhedra scale 3.0 BRILLOUIN 1 // scaled 1st Brillouin zone 2731 2732bug fix: MOL file reader should not autobond if number of bonds is 0. 2733 2734JmolVersion="14.24.2" // 2017.11.08 2735 2736bug fix: invertSelected was not clearing chirality 2737bug fix: JmolAppletSigned0.jar fails -- missing org/apache/tools 2738bug fix: SHOW SMILES sometimes missing allene chirality 2739bug fix: hbondsDistanceMaximum should not be limited by 2.5 max; increased maximum to 3.5 2740bug fix: hbondsDistanceMaximum and hbondsAngleMinimum should not be in state 2741 2742code: moved scriptEval.cmdInvertSelected to scriptext.cmdExt 2743 2744JmolVersion="14.24.1" // 2017.11.05 2745 2746new feature: MACRO bz; createWS("p1") 2747 -- creates a Wigner-Seitz cell as polygon id "p1" 2748 -- requires current unit cell to be primitive to work correctly 2749 -- polyhedron can be shifted using POLYHEDRA OFFSET 2750 -- default ID "pbz1_1_" for just CREATEWS() 2751 2752 2753new feature POLYHEDRA edgesOnly 2754 -- shows just edges 2755 -- operates on ALL polyhedra 2756 -- complements edges, noEdges, frontEdges 2757 2758new feature: select within(d, $p1) where $p1 is a polyhedron ID 2759 -- d = 0 is "on or within the polyhedron" 2760 -- d < 0 is "-d angstroms within polyhedron" 2761 -- d > 0 is "within d angstroms of polyhedron" 2762 2763bug fix: POLYHEDRA edges should inherit color, not use black as default 2764 2765bug fix: calculate CHIRALITY may fail to show Z for some seqCis systems 2766 2767new macros: 2768 2769 "aflow", "http://aflowlib.mems.duke.edu/users/jmolers/jmol/spt/AFLOW.spt", "AFLOW macros", 2770 "bz", "http://aflowlib.mems.duke.edu/users/jmolers/jmol/spt/bz.spt", "Brillouin Zone/Wigner-Seitz macros" 2771 2772 2773code: biomodel classes are being loaded prematurely due to @cystine definition involving cys.sg instead of cys and atomname=sg 2774 2775JmolVersion="14.23.1" // 2017.11.02 2776 2777new feature: load "" fill UNITCELL PRIMITIVE (for files that are conventional) 2778new feature: load "" fill UNITCELL CONVENTIONAL (for VASP files, which are primitive cells) 2779 2780bug fix: primitive unit cell incorrect for rhombohedral lattice space groups 2781 (trigonal R...; 146, 148, 155, 160, 161, 166, 167) 2782bug fix: (AFLOW specific) CIF for trigonal and hexagonal cells (itn 143-194) should orient rotated 60 deg cw 2783bug fix: LOAD ... SUPERCELL {2 2 2} broken 2784 2785JmolVersion="14.22.2" 2786 2787bug fix: PubChem partial charges are only to 0.01 precision, so a test in dipole creation of 2788 balanced charges must allow for more than that -- changed to 0.015. Case in point: :PF3. 2789 2790JmolVersion="14.22.1" // 2017.10.28 2791 2792new feature: draw BOUNDBOX BEST 2793 -- draws the best box around currently selected atoms 2794 2795bug fix: a.distance.min(b).min should not report 0 if a == b. (testing atom against itself should be skipped) 2796bug fix: SHOW BEST ROTATION just shows the current rotation, not the best rotation to use to get to the best view 2797bug fix: rotate BEST can fail with flat structures 2798bug fix: LOAD "" FILE BOUNDBOX does not include all atoms 2799 2800JmolVersion="14.21.1" // 2017.10.22 2801 2802new feature: set noDelay true sets all time delays to 0 and forces all file operations to be synchronous 2803 2804bug fix: CIP adds S4 symmetry check in Rule 6 2805bug fix: chirality broken for JavaScript in MSIE 11 due to range error 2806bug fix: Should be able to save PNGJ from menu even if zapped (because there might be a surface) 2807 2808JmolVersion="14.20.9" 2809 2810bug fix: JavaScript does not handle saving PNGJ from modified PNGJ 2811bug fix: JavaScript command SHOW NMR broken 2812 2813JmolVersion="14.20.8" // 2017.10.07 2814 2815bug fix: STEREO DTI never implemented for Java, only JavaScript 2816bug fix: color property_xxxx broken 2817bug fix: platformSpeed not actuated for wheel zoom. 2818 2819JmolVersion="14.20.7" 2820 2821bug fix: calculate chirality broken for JSmol (missing Integer.compare) 2822 2823JmolVersion="14.20.6" 2824 2825bug fix: MO HOMO + n delivers HOMO + 2*n 2826code: more efficient CIPChirality using breadth-first scanning for chirality descriptors 2827 2828JmolVersion="14.20.5" // 2017.08.29 2829 2830bug fix: isosurface intersect unitcell broken 2831bug fix: show spacegroup does not report H-M name 2832 2833JmolVersion="14.20.4" // 2017.08.09 2834 2835bug fix: SpartanSMOL reader for iSpartan files does not read charges or vibrational mode data 2836bug fix: CIPChirality fix for BH64_075; adding Rule 3b. 2837bug fix: CIPChirality new Rule 6 covers all special spiro cases and C3-symmetry 2838bug fix: SMILES generator fails for [2H]/C=C/[1H] 2839bug fix: write SDF fails for 1H. (Must use M ISO.) 2840 2841JmolVersion="14.20.3" // 2017.07.20 2842 2843bug fix: ROTATE should not stop spin if it does not initiate a spin 2844bug fix: CIPChirality tests for CIP1966#31,#32 douple spirans and C3 compounds 2845bug fix: CIPChirality for Rule 2 using atomic masses and not for duplicate atoms 2846bug fix: MOL file reading where isotope is indicated in atom line and V item 2847bug fix: MOL reader fails for H1, D, T isotopes indicated as symbols along with isotope difference 2848 2849 2850JmolVersion="14.20.2" // 2017.07.09 2851 2852bug fix: CIPChirality adding presort for Rules 4a and 4c (test12.mol; 828 lines) 2853bug fix: write SDF and write MOL do not set atom parity field 2854bug fix: JavaScript JSmol broken for chirality due to bug in Clazz.clone(obj) 2855 2856bug fix: Upgrade of natural abundance average masses (no significant changes here): 2857 2858 // all numbers except radionuclides from: 2859 // Atomic weights of the elements 2013 (IUPAC Technical Report) 2860 // Juris Meija, Tyler B. Coplen, Michael Berglund, Willi A. Brand, Paul De Bi�vre, 2861 // Manfred Gr�ning, Norman E. Holden, Johanna Irrgeher, Robert D. Loss, Thomas Walczyk, 2862 // Thomas Prohaska Published Online: 2016-02-24 | DOI: https://doi.org/10.1515/pac-2015-0305 2863 // https://www.degruyter.com/view/j/pac.2016.88.issue-3/pac-2015-0305/pac-2015-0305.xml 2864 2865 /* 1 H */ 1.008f, 4.002f, 2866 /* 2 Li */ 6.9675f, 9.012f, 10.8135f, 12.0106f, 14.006f, 15.999f, 18.998f, 20.1797f, 2867 /* 3 Na */ 22.989f, 24.307f, 26.981f, 28.084f, 30.973f, 32.059f, 35.4515f, 39.948f, 2868 /* 4 K */ 39.0983f, 40.078f, 44.955f, 47.867f, 50.9415f, 51.9961f, 54.938f, 55.845f, 58.933f, 58.6934f, 63.546f, 65.38f, 69.723f, 72.63f, 74.921f, 78.971f, 79.904f, 83.798f, 2869 /* 5 Rb */ 85.4678f, 87.62f, 88.905f, 91.224f, 92.906f, 95.95f, 98.91f, 101.07f, 102.905f, 106.42f, 107.8682f, 112.414f, 114.818f, 118.71f, 121.76f, 127.6f, 126.904f, 131.293f, 2870 /* 6 Cs, Ba, actinides */132.905f, 137.327f, 138.905f, 140.116f, 140.907f, 144.242f, 144.9f, 150.36f, 151.964f, 157.25f, 158.925f, 162.5f, 164.93f, 167.259f, 168.934f, 173.054f, 174.9668f, 2871 /* 6 Hf */ 178.49f,180.947f,183.84f,186.207f,190.23f,192.217f,195.084f,196.966f,200.592f,204.3835f,207.2f,208.98f,210f, 210f, 222f, 2872 /* 7 Fr, Ra, lanthanides */ 223f, 226.03f, 227.03f, 232.0377f, 231.035f, 238.028f, 237.05f, 239.1f, 243.1f, 247.1f, 247.1f, 252.1f, 252.1f, 257.1f, 256.1f, 259.1f, 260.1f, 2873 /* 7 Rf - Mt */ 261f, 262f, 263f, 262f, 265f, 268f 2874 2875 2876JmolVersion="14.20.1" // 2017.07.06 2877 2878new feature: BZ2 compressed file reader 2879 -- uses org.apache.tools.bzip2.CBZip2InputStream v. 1.9.6 2880 -- Apache license 2881 2882bug fix: ADF reader not accepting Xx.name atom ids 2883 2884bug fix: SMILES generator can show wrong @/@@ or stereochemical type for some allenes and cumulenes 2885bug fix: CIPChirality additional Rules 1b, 4b, and 4c fixes (substituted cubanes; multiple branched branches; 841 lines) 2886 2887JmolVersion="14.19.1" // 2017.06.25 2888 2889new feature: WRITE "SDF" implements atom value V nnn ... information 2890 -- requires assigning the data property name "atom_values" in the model's molData property 2891 -- for example: 2892 2893 $ load $2,3-dichlorobutane 2894 $ molData = {"atom_values":"chirality"} 2895 $ model properties "molData" molData 2896 $ write dcb.sdf 2897 2898 -- note that if the model already has a molData property, then use the following to append to it: 2899 2900 $ molData = (_M.molData ? _M.molData : {}) 2901 $ molData.atom_values = "chirality" 2902 $ model properties "molData" molData 2903 2904new feature: x = load("filename","JSON") 2905 -- loads JSON data into variable 2906 2907bug fix: CIPChirality: minor fixes for Rule 4b and 5 for BH64_012-015; better atropisomer check 2908bug fix; SPIN QUATERNION 2909bug fix: CENTERAT ABSOLUTE broken (since forever?) 2910bug fix: SPIN QUATERNION {0 0 -1 0} still does a positive, not negative, rotation 2911 (solution is to apply a miniscule rotation of 1e-10 degrees) 2912 2913bug fix: script array context [3 -0] becomes [3], as in [3 - 0] 2914 2915bug fix: SET ANTIALIASDISPLAY requires click [via resizeImage()] 2916bug fix: CIP gives wrong alkene root distance for cyclopropene 2917bug fix: WRITE of structure file does not report number of atoms and warn if selected is different from this molecule 2918bug fix: WRITE MOL using format 10f.5 instead of 10f.4 for x, y, z coordinates 2919bug fix: MOL/SDF files should truncate lines at 80 characters. 2920 2921JmolVersion="14.18.1" // 2017.06.06 2922 2923bug fix: CIP misses Rule 4b cases where a branching atom has R or S chirality. 2924 -- see test_bt_P4.mol and test_bt_O3.mol (BH64.65 and BH64.66) 2925 -- see AY236.179 (3D structure was diasteriomer, so I missed that) 2926 2927bug fix: WRITE MOL should not generate > <JMOL_PARTIAL_CHARGES> because it is not SDF format 2928bug fix: WRITE SDF should generate > <JMOL_PARTIAL_CHARGES> with a trailing space 2929 2930bug fix: (SMILES) targetString.find("SMILES",patternString) will fail for .[C@H]2 (new group and attached to a connection number) 2931bug fix: SHOW CHEMICAL SMILES fails when logLevel is set > 4 2932 2933new feature: WRITE SDF writes > <.... user data 2934 -- can be set using MODEL PROPERTY "molData" x where x is an associative array 2935 -- can be read using _M.molData 2936 2937new feature: associativeArray.pop() -- clears associativeArray 2938new feature: assArray1.push(assArray2) -- adds all key/value entries in assArray2 to assArray1. 2939new feature: assArray1 + assArray2 -- adds all key/value entries into a new associative array. (Complements a1 - a2) 2940 2941 2942JmolVersion="14.17.2" // 2017.06.03 2943 2944bug fix: WRITE FILE not working when file has been cached. 2945bug fix: array.find("regex...","") does not reset RegExp each time it runs RegExp.exec() so does not find all possibilities 2946 2947code: CIPChirality.java fully interfaced using SimpleNode and SimpleEdge 2948 2949JmolVersion="14.17.1" // 2017.05.27 2950 2951new feature: atom property x.cipRule 2952 -- CIP sequence rule deciding this center 2953 -- one of 1a, 1b, 2, 3, 4a, 4b, 4c, 5, or blank 2954 2955bug fix: polyhedra broken in Jmol 14.10.0 2956 2957bug fix: finalizing CIP algorithm 2958 -- adding spiro chirality from P-93.5.3 2959 -- completing root path for auxiliary descriptors 2960 2961bug fix: JSmol: JSME/JSmol 2D->3D fails when one H of a CH2 is explicitly wedge and the other H is implicit (not shown at all). (JSmolJME.js) 2962 2963code: 2964 2965/** 2966 * A full validated relatively efficient implementation of Cahn-Ingold-Prelog 2967 * rules for assigning R/S, M/P, and E/Z stereochemical descriptors. Based on 2968 * IUPAC Blue Book rules of 2013. 2969 * https://iupac.org/projects/project-details/?project_nr=2001-043-1-800 2970 * 2971 * Features include: 2972 * 2973 * - deeply validated 2974 * 2975 * - implemented in Java (Jmol) and JavaScript (JSmol) 2976 * 2977 * - only two Java classes; roughly 1000 lines 2978 * 2979 * - efficient, one-pass process for each center using a single finite digraph for all auxiliary descriptors 2980 * 2981 * - exhaustive processing of all 8 sequence rules (1a, 1b, 2, 3, 4a, 4b, 4c, 5) 2982 * 2983 * - includes R/S, r/s, M/P (axial, not planar), E/Z 2984 * 2985 * - covers any-length odd and even cumulenes 2986 * 2987 * - uses Jmol conformational SMARTS to detect atropisomers and helicenes 2988 * 2989 * - covers chiral phosphorus and sulfur, including trigonal pyramidal and tetrahedral 2990 * 2991 * - properly treats complex combinations of R/S, M/P, and seqCis/seqTrans centers (Rule 4b) 2992 * 2993 * - properly treats neutral-species resonance structures using fractional atomic mass and a modified Rule 1b 2994 * 2995 * - implements CIP spiro rule (BB P-93.5.3.1) 2996 * 2997 * - detects small rings (fewer than 8 members) and removes E/Z specifications for such 2998 * 2999 * - detects chiral bridgehead nitrogens 3000 * 3001 * - reports atom descriptor along with the rule that ultimately decided it 3002 * 3003 * Primary 236-compound Chapter-9 validation set (AY-236) provided by Andres 3004 * Yerin, ACD/Labs (Moscow). 3005 * 3006 * Mikko Vainio also supplied a 64-compound testing suite (MV-64), which is 3007 * available on SourceForge in the Jmol-datafiles directory. 3008 * (https://sourceforge.net/p/jmol/code/HEAD/tree/trunk/Jmol-datafiles/cip). 3009 * 3010 * Additional test structures provided by John Mayfield. 3011 * 3012 * Additional thanks to the IUPAC Blue Book Revision project, specifically 3013 * Karl-Heinz Hellwich for alerting me to the errata page for the 2013 IUPAC 3014 * specs (http://www.chem.qmul.ac.uk/iupac/bibliog/BBerrors.html), Gerry Moss 3015 * for discussions, Andres Yerin for discussion and digraph checking. 3016 * 3017 * Many thanks to the members of the BlueObelisk-Discuss group, particularly 3018 * Mikko Vainio, John Mayfield (aka John May), Wolf Ihlenfeldt, and Egon Willighagen, for 3019 * encouragement, examples, serious skepticism, and extremely helpful advice. 3020 * 3021 3022 3023JmolVersion="14.16.1" // 2017.05.19 3024 3025new feature: load =chebi/nnnnnn 3026 -- chEBI 2D molecule load, with minimal 100-step minimization 3027 -- 3028 3029bug fix: CML reader does not read 2D wedge/hash information 3030 3031bug fix: CIP fix for missing branch descriptors; 984 lines 3032 3033bug fix: CIP adds helicene M/P chirality 3034 - validated using CCDC structures HEXHEL02 HEXHEL03 HEXHEL04 ODAGOS ODAHAF 3035 - http://pubs.rsc.org/en/content/articlehtml/2017/CP/C6CP07552E 3036 3037code: CIP: additional simplification; 3038code: CIP status: implementation complete, including: 3039 All subrules implemented fully: 1a, 1b, 2, 3, 4a, 4b, 4c, 5 3040 R/S, E/Z, M/P (odd-cumulene and helicene), r/s, seqCis/seqTrans (as Z/E) 3041 fused benzenoid aromatic Mancude ring "Kekule weighted" atom number adjustments 3042 3043 * Added logic to Rule 1b: The root distance for a Kekule-ambiguous duplicate 3044 * atom is its own sphere, not the sphere of its duplicated atom. 3045 * 3046 * Stated more precisely: 3047 * 3048 * Proposed amended Sequence Rule 1: 3049 * 3050 * (1a) higher atomic number precedes lower; 3051 * 3052 * (1b) in comparing two duplicate nodes, lower root distance precedes higher 3053 * root distance, where "root distance" is defined: 3054 * 3055 * (i) in the case of a duplicate atom for which the atomic number is averaged 3056 * over two or more atoms in applying Rule 1a, the distance from the duplicate 3057 * node itself to the root node; and 3058 * 3059 * (ii) in all other cases, the distance of its corresponding nonduplicated atom 3060 * node to the root node. 3061 * 3062 3063JmolVersion="14.15.4" // 2017-05-13 3064 3065bug fix: INVERTSELECTED ATOM not documented; functionality of INVERTSTEREO SELECTED folded into it, and INVERTSELECTED STEREO deprecated 3066 -- inverts ring or chain stereochemistry 3067 -- adds that keyword ATOM is optional, so INVERTSELECTED @2 works 3068 3069bug fix: @n for "atom n" not working in several script-checking contexts where {atoms} works. 3070 3071bug fix: CIP full implementation; simplified algorithm - 984 lines 3072bug fix: CIP Rule 1b modification to ensure aromatic rings do not result in false positive for R/S (binap2) 3073 -- specifically that the duplicate atom is given a root distance equal to its sphere, not that of its duplicated atom 3074bug fix: CIP chiral bridgehead N designations missing 3075bug fix: CIP Assignment of auxiliary r/s not functional (AY-236.201,202) 3076bug fix: CIP basic "mancude" atom number adjustment for heteroatoms 3077 -- implemented for benzenoids (benzene, pyridine, pyrazine) and fused benzenoids only 3078 3079new feature: set debugHigh 3080 -- same as set loglevel 6 - debugging only 3081 -- debugging only; not considered significant enough to increment minor version 3082 3083JmolVersion="14.15.3" // 2017-05-08 3084 3085bug fix: SMARTS search for atropisomeric bond that is in an alicyclic ring fails (Fred Ziegler) 3086 - used for M/P chirality check 3087 - for example: 3088 load $c1cc2c3-c4c5CC2.c5ccc4C.c3(C)c1 3089 select on smarts("a-a") 3090 calculate chirality 3091 print {*}.chirality.join("") 3092 3093 MM 3094 3095bug fix: use of the less preferred name of Jmol token that has two optional 3096 forms ("fix" vs "fixed") as a VAR does not assign that variable name 3097bug fix: set cartoonRibose misses the C1'-O4' and O3'-P(+1) edges 3098bug fix: JVXL reader not reading Gaussian files with "1" in the third line, 5th field 3099bug fix: CIP M/P chirality 3100 test: load "$2,2'-dibromobiphenyl"; calculate chirality; print {*}.chirality.join("") 3101bug fix: CIP chirality nearly fully validated on ACD/Labs AY-236 set, with some unimplemented aspects: 3102 3103var skip = ({27 229}) || // E/Z only; missing chirality 3104 ({95 96 98 99 100 101 102 103 104 108 109 110 111 112 200}) || // trigonal planar, square planar, or hypervalent 3105 ({32 33}) || // helicene // added in Jmol 14.15.5 3106 ({201 202})|| // spirocyclic central (redundant) atom designation missing (axial designation option) 3107 ({212 213})|| // chiral conformation 1,4-benzene in a ring 3108 ({38 84}) || // ignore -- 38: Mancude for cyclopentadienyl; 84: unknown error with P compound 3109 ({203}) || // // chiral bridgehead amine // fixed in Jmol 14.15.5 3110 3111Issue: Full implementation of the rules requires a slight modification of Rule 1b. 3112Specifically, aromatic duplicate atoms must reference the sphere of their own parent, not their 3113duplicated atom. 3114 3115 Three structures appear to be in error in the IUPAC Blue Book 2013. 3116 3117,"147":"r,,,R,,,,r,,,S" // r,,,R,,,,r,,,R chiral phosphine -- I think Jmol is right; disagrees with BB P-93.5.1.1.2 for S vs R 3118,"227":"SrSEErS" // S,,,,,,,r,S,,,,,,,E,,r,r // -- I think Jmol is right; disagrees with BB P-93.5.7.2 for S vs. r 3119,"230":"@2D RrRsR" // r,,,R,,,,s,,,R // p 1282 -- I believe Jmol is correct, disagrees with BB P-93.6 3120 3121 One structure awaiting full implementation of Rule 4b across all chirality types, R/S, M/P, and seqCis/seqTrans 3122 3123 ,"170":"Spp" // Jmol is missing the S -- mix of R/S and M/P for Rule 4b 3124 3125 - 939 lines 3126 3127JmolVersion="14.15.2" // 4/29/17 3128 3129bug fix: CIP chirality adds axial chirality (M/P[Ra/Sa], m/p[ra/sa]) for cumulenes 3130bug fix: CIP chirality adds atropisomer chirality (M/P[Ra/Sa], m/p[ra/sa]) for biaryls 3131bug fix: CIP chirality adds cumulene E/Z chirality 3132 -- 816 lines 3133 -- validation data are at https://sourceforge.net/p/jmol/code/HEAD/tree/trunk/Jmol-datafiles/cip/ 3134 -- validates for 160 structures (some duplicates; both cip_examples.zip and stereo_test_cases.sdf) 3135 -- validates for all cases considered: 3136 -- simple R/S and E/Z 3137 -- small-ring removal of E/Z 3138 -- parallel-strand Rule 4b and Rule 5 (Mata) 3139 -- pseudochiral r/s and m/p 3140 -- odd and even cumulenes 3141 -- atropisomers 3142 -- P, S, As, Se, Sb, Te, Bi, Po trigonal pyramidal and tetrahedral 3143 -- imine and diazine E/Z chirality 3144 3145JmolVersion="14.15.1" // 4/28/17 3146 3147new feature: x.split(true) 3148 -- does a white-space token split of the string value of x 3149 3150new feature: MOL/SDF reader reads M ISO lines for isotopes 3151 3152bug fix: CIP chirality adds P, S, As, Se, Sb, Te, Bi, Po trigonal pyramidal and tetrahedral 3153bug fix: CIP chirality adds imine and diazine E/Z chirality 3154bug fix: CIP chirality broken for carbonyl groups 3155bug fix: CIP chirality E/Z should not be indicated for rings of size < 8 3156 3157bug fix: values not saved in state for cartoonBlockHeight, cartoonBlocks, and cartoonSteps 3158bug fix: write MO broken 3159bug fix: set cartoonBlockHeight (for DSSR nucleic acid rendering) fails 3160 3161code: CIPChirality.java 779 lines Rules 1-5 validated on 145 compounds 3162 - see https://sourceforge.net/p/jmol/code/HEAD/tree/trunk/Jmol-datafiles/cip/ 3163code: CIP optimizations 3164 3165JmolVersion="14.14.1" // 4/19/17 3166 3167new feature: CALCULATE CHIRALITY {atom set} 3168 -- starts with basic CIP Rule 1-2 determination of R/S and E/Z. 3169 -- continues with Rules 3-5, which require full-molecule analysis. 3170 -- work in progress: 3171 -- Rules 1 and 2 complete 3172 -- Rule 3 (E/Z) implemented 3173 -- Rule 4 partially implemented 3174 -- simple linear sequences of R/S ok 3175 -- Rule 5 implemented 3176 -- caveates 3177 -- no pseudochirality 3178 -- not cyclitols 3179 -- does not distinguish rings, so inserts "Z" into ring bonds 3180 -- only validated on 3181 3182 -- optionally limited to the given atom set (or the currently selected atoms by default) 3183 3184new feature: set jmolInJSpecView 3185 -- allows Jmol window to NOT be embedded in JSpecView when JSpecView is opened in Jmol 3186 -- default TRUE 3187 3188new feature: WRITE ISOSURFACE "t.pmesh"; WRITE ISOSURFACE "t.pmb" 3189 -- creates ASCII (.pmesh) or binary (.pmb) file (a Jmol-specific file format) 3190 -- relatively compact format 3191 -- can speed up loading of meshes and contours 3192 -- for filled surfaces, use .jvxl instead 3193 -- read back into Jmol using ISOSURFACE "t.pmesh"/"t.pmb" 3194 -- note that binary files are NOT RECOMMENDED for JSmol because some platforms cannot read them locally 3195 -- example: 3196 3197 load $methane 3198 isosurface plane {0 0 0 1} map vdw contours 20 3199 write ISOSURFACE contour.pmb 3200 isosurface contour.pmb 3201 3202 3203bug fix: mesh capper producing gaps 3204bug fix: CIP chirality fixed for rule ordering; validated for IUPAC Rules 1, 2, and 3 (though still some questions about Rule 3) 3205bug fix: print getProperty("cifinfo") without file name fails 3206 3207 3208JmolVersion="14.13.1" // 2017.04.09 3209 3210new feature: MOL V2000 reader loads > <dataname> blocks into _M.molData 3211 3212new feature: set labelfor {atomset} "value" 3213 -- allows setting of label without changing current selection 3214 -- uses same syntax as LABEL command after {atomset} 3215 -- for example: 3216 3217 set labelfor @atoms @myLabel 3218 set labelfor {atomno <= 3} @{["a","b","c"]} 3219 set labelfor {_C && chirality != ""} "%[atomname] %[chirality]" 3220 3221bug fix: {*}.chirality with triple bonds fails 3222bug fix: {*}.chirality fix for duplicate atoms check 3223 3224bug fix: dotted line has extra dot: measure ID m @1 @4 radius 0.1 3225bug fix: NBO H-BOND and MODEL focus issues 3226 3227 3228JmolVersion="14.12.1" 3229 3230bug fix: NBO update 3231bug fix: JavaScript bug - missing Math.signum(f) - causes {atom}.chirality to not work in JSmol 3232 3233JmolVersion="14.12.0" // 2017-04-06 3234 3235new feature: {atom}.chirality 3236 -- uses Cahn-Ingold-Prelog rules to assign R or S to a carbon center 3237 -- ignores sulfur chirality 3238 -- may not fully implement high symmetry cases 3239 -- not fully tested 3240 -- Checked using: 3241 3242function checkchiral(m) { 3243 if (m) load @m 3244 background label yellow 3245 color labels black 3246 select _C 3247 label %[atomname] 3248 refresh 3249 var b = {_C} 3250 for (var a in b) { 3251 var c = a.chirality; 3252 print _smilesString + " " + a + c 3253 if (c) { 3254 select a 3255 c = a.atomname + " " + c 3256 label @c 3257 } 3258 } 3259 select * 3260} 3261 3262checkchiral("$(R)-glycidol") 3263delay 1 3264checkchiral("$glucose") 3265delay 1 3266checkchiral("$(2S,3R)-2,3-oxiranediol") 3267delay 1 3268checkchiral("$(S)-2-butanol") 3269delay 1 3270checkchiral("$(R)-2-butanol") 3271delay 1 3272checkchiral("$(2S,3R)-2,3-butanediol") 3273delay 1 3274checkchiral("$(2S,3S)-2,3-butanediol") 3275delay 1 3276checkchiral("$(2R,3R)-2,3-butanediol") 3277delay 1 3278checkchiral("$(2R,3S)-2,3-butanediol") 3279delay 1 3280checkchiral("$1,4-dimethylcyclohexane") 3281delay 1 3282checkchiral("$cholesterol") // (3S,8S,9S,10R,13R,14S,17R) and sidechain R 3283 3284 3285JmolVersion="14.11.3" // 2017-04-06 3286 3287bug fix: partial bond order for orders > 3 not working 3288 -- for example: connect {_C} {_C} partial 5.3 3289bug fix: NBO MODEL loading with no file name goes to wrong directory 3290bug fix: NBO job names need to be cleaned and set if necessary 3291bug fix: some sort of bad build for DSSR 3292 3293JmolVersion="14.11.2" // 2017-04-04 3294 3295bug fix: NBO fixes 3296bug fix: backboneSteps moved to cartoonSteps 3297 // order of checking for TRUE is: 3298 // cartoonBlocks, cartoonBaseEdges, cartoonSteps, cartoonLadders, cartoonRibose 3299 3300JmolVersion="14.11.1" // 2017-04-03 3301 3302bug fix: set cartoonBlocks; set cartoonBlockHeight x.x 3303 -- needs to be cartoon, not backbone (needs to be single-monomer based) 3304 -- replaces set backboneBlocks; set backboneBlockHeight x.x from 14.11.0 3305 -- for nucleic only 3306 -- overrides set cartoonSteps and cartoonBaseEdges 3307 -- uses DSSR data if present (using calculate structure DSSR or load =xxxx/dssr) 3308 -- displays a DSSR block for each base based on dssr.nts.frame 3309 -- x.x is height of box in Angstroms (default 0.5) 3310 3311bug fix: NBO communications upgrade - still has bug in NPA atom charge query 3312 3313JmolVersion="14.11.0" // released 4/1/2017 3314 3315new feature: color NUCLEIC 3316 -- for nucleic only (others will be grey) 3317 -- based on DSSR nucleic color scheme: 3318 G green, C yellow, A red, T blue, U cyan 3319 3320new feature: set backboneBlocks; set backboneBlockHeight x.x 3321 -- but see bug fix above 3322 -- for nucleic only 3323 -- overrides set backboneSteps 3324 -- uses DSSR data if present (using calculate structure DSSR or load =xxxx/dssr) 3325 -- displays a DSSR block for each base based on dssr.nts.frame 3326 -- x.x is height of box in Angstroms (default 0.5) 3327 3328new feature: color property DSSR type 3329 -- where type is one of: 3330 bulges 3331 coaxStacks 3332 hairpins 3333 hbonds 3334 helicies 3335 iloops 3336 isoCanonPairs 3337 junctions 3338 kissingLoops 3339 multiplets 3340 nonStack 3341 nts 3342 pairs 3343 ssSegments 3344 stacks 3345 stems 3346 -- color is based on index into the list of the given structures 3347 -- 0 (not of that structure), 1 (first entry), 2 (second entry), etc. 3348 -- for example: 3349 3350 load =4fe5/dssr 3351 backbone -0.5;set backboneSteps; 3352 color property dssr junctions 3353 color {color=red} grey // just making "not this type" grey instead of red 3354 3355 [ most bases are grey, but one region is green and one region is blue ] 3356 3357 3358bug fix: drag-drop of PDB file with isolated nucleic acids gives odd unbonded look 3359bug fix: set drawPicking TRUE does not report pending measurement 3360bug fix: DSSR calculation should reset after atom coordinate changes 3361bug fix: using Jmol.scriptWait() within a callback will not work, as it will overwrite the currently running eval object 3362 3363 3364JmolVersion="14.10.0" // released 3/25/2017 3365 3366new feature: x = {*}.find(smartsString,"map") 3367 -- returns an array of arrays of atom indices (0-based) 3368 -- indicates exact correlation between atoms in {*} and atoms of smartsString 3369 -- only unique sets of atoms are found, not every possibility 3370 -- for example: 3371 3372 load $caffeine 3373 print {*}.find("*1*****1", "map").format("JSON") 3374 3375 [ [ 0,2,4,6,11,12 ] ] 3376 3377new feature: SELECT @x where x is an array of integers or array of array of integers 3378 -- selects atoms from array rather than from a bitset 3379 -- note that variable must be used, as SELECT [1,2,3] would look for PDB group "1,2,3" 3380 -- for example: 3381 3382 load $caffeine 3383 x = {*}.find("*1*****1", "map")[0] 3384 select @x 3385 3386 6 atoms selected 3387 3388new feature: DRAW polygon @face @points 3389 -- draws a filled polygon based on arrays of atom indices 3390 -- @face is an array of integers, not necessarily wound correctly 3391 -- @points is an atom bitset or an array of points (optional, defaults to {*} 3392 -- for example: 3393 3394 load $p4 3395 x = {*}.find("*1**1","map"); 3396 draw ID p4r polygon @{x[1]} color red 3397 draw ID p4b polygon @{x[2]} color blue 3398 draw ID p4y polygon @{x[3]} color yellow 3399 draw ID p4g polygon @{x[4]} color green 3400 3401 3402new feature: DRAW polyhedron @faces @points 3403 -- draws sets of polygons based on arrays of atom indices 3404 -- @faces is an array of array of integers, not necessarily wound correctly 3405 -- @points is an atom bitset or an array of points (optional, defaults to {*} 3406 -- for example: 3407 3408 load $caffeine 3409 draw polyhedron @{{*}.find("*1****1||*1*****1","map")} 3410 3411 load $p4 3412 draw ID p polyhedron @{{*}.find("*1**1","map")} color red 3413 3414new feature: POLYHEDRON ID xxx @faces @points 3415 -- @faces is an array of array of integers, not necessarily wound correctly 3416 -- @points is an atom bitset or an array of points (optional, defaults to {*} 3417 3418 load $p4 3419 polyhedra ID p4 @{{*}.find("*1**1","map")} 3420 3421new feature: 4-order bond in MOL file using 14 for bond order 3422 -- Jmol extension for MOL file format to allow 4-bond 3423 -- example: [Re2Cl8](2-) 3424 -- see https://en.wikipedia.org/wiki/Quadruple_bond 3425 3426new feature: 5-order bond in MOL file using 15 for bond order 3427 -- Jmol extension for MOL file format to allow 5-bond 3428 -- example: [Mo2Cl8](4-) 3429 -- see https://en.wikipedia.org/wiki/Quintuple_bond 3430 3431new feature: 6-order bond in MOL file using 16 for bond order 3432 -- Jmol extension for MOL file format to allow 6-bond 3433 -- example: Mo2 3434 -- see https://en.wikipedia.org/wiki/Sextuple_bond 3435 3436new feature: load "=xxxx/dssr--xxx=yyy" 3437 -- allows adding specialized options to dssr 3438 -- --xxx=yyy added on to &opt= search item 3439 3440bug fix: DSSR fix for multi-model PDB file 3441bug fix: DSSR - 4fe5 HPA ligand causes set backboneSteps true to fail 3442bug fix: EXIT command with -n command line flag does not exit Jmol 3443bug fix: echo renderer may not show correct font size 3444bug fix: POLYHEDRA ID id OFFSET {x y z} broken 3445bug fix: ScriptManager debug output being sent even if -i (silent) command line option set. 3446 3447JmolVersion="14.9.1" released 2/19/2017 3448 3449 3450bug fix: bad release file for 14.9.0 3451 3452JmolVersion="14.9.0" 3453 3454new feature: connect NBO <nbotype> 3455 - connect atoms in the currently visible model using a resonance structure configuration found in an NBO .46 or .nbo file 3456 - where <nbotype> is one of alpha|beta|46|46a|46b|nrtstr_n|nrtstra_n|rs_n|rsa_n|rsb_n 3457 3458new feature: label %[nbo]; 3459 - label an atom using a resonance structure configuration found in an NBO .46 or .nbo file 3460 - requires a previous connect NBO 3461 3462new feature: set nboCharges (default true) 3463 - determines whether formal charges are also displayed with LABEL %[nbo] 3464 3465new feature: quintuple and sextuple bonds. 3466 -- connect @1 @2 quintuple 3467 -- connect @1 @2 sextuple 3468 -- readily saved in state 3469 -- adding MOL file bond type 15 and 16 for these -- a bit of a hack, of course. 3470 3471new feature: Viewer.runScriptCautiously(String) replacement name for older Viewer.runScript(String) 3472 3473new feature: plugin main menu item. 3474 - allows integrated additions to Jmol 3475 - Just has NBO at this time; could have more, as it is a simple interface. 3476 - created automatically from reading org/openscience/jmol/app/plugins/plugin.properties, 3477 which just contains a list of name=class pairs: 3478 3479 # plugin.properties 3480 3481 NBO=org.gennbo.NBOPlugin 3482 3483new feature: startup options -U nbo or --plugin nbo 3484 - starts Jmol in NBO mode, as if the Plugins...NBO menu item had been clicked 3485 - could be generalized, but do not that more than just nbo in place at this time 3486 - case insensitive 3487 3488new feature: NBO n BETA - for GenNBOReader nth beta orbital; could be expanded 3489 3490bug fix: SHOW CHEMICAL JME (from NCI CIR) does not properly return formal charges 3491 3492bug fix: JSpecView, when open in application, does not allow ZAP 3493 3494bug fix: draw POINTGROUP crashes Jmol if model is not first model 3495 3496bug fix: DRAW circle rendering broken (load $2-butene ; draw pointGroup) 3497 3498bug fix: NBO/ISOSURFACE command - Displaying BETA orbitals for NBO types (NHO, PNBO, etc.) that 3499 are from a file other than the current file causes read failure and no orbital display. 3500 3501bug fix: Viewer.runScript(String) now uses evaluateExpression(T[]) 3502 3503Lesson learned: Never mix viewer.runScript() and viewer.runScriptQueued() calls. 3504 What will happen is that the unqueued calls will corrupt the 3505 queued calls. However, if you use viewer.evaluateExpression("script('....')"), 3506 that is also synchronous, and it uses a new ScriptEval() to isolate it from 3507 the script being queued. You still have the problem that the scripts could 3508 mess up each other, but at least it will not cause catastrophic failure. 3509 3510 3511bug fix: *.CA should pick up calcium in a PDB file 3512 3513bug fix: cfi format (for NBOPro) writing broken 3514 - from using the command 3515 3516 x = data({*}, 'cfi') 3517 3518bug fix: La and Ac should be in transitionmetal 3519 3520bug fix: GenNBO reader not recognizing FILTER "BETA" 3521 3522code: NBO options extended using the NBO VIEW or NBO OPTIONS "..." command options 3523 3524 protected boolean jmolOptionNOZAP = false; // do no zap between modules 3525 protected boolean jmolOptionNOSET = false; // do not use NBO settings by default 3526 protected boolean jmolOptionVIEW = false; // present only the VIEW option 3527 protected boolean jmolOptionNONBO = false; // do not try to contact NBOServe 3528 3529noting previously undocumented: 3530 3531 set fontscaling true; font label 10 arial plain 0.020 3532 3533 - last number is a fontscaling factor that allows one to set a font size for 3534 - labels in angstroms. Roughly, this pointSize * factor is in Angstroms. 3535 - if label is changed, one must use set fontscaling FALSE; label .... ; fontScaling TRUE; 3536 3537 3538JmolVersion="14.8.1" 3539 3540bug fix: isosurface color "user" as an equivalent to isosurface colorscheme "user" broken 3541bug fix: color isosurface range 1 122 ignores preset isosurface color scheme and just uses the default color scheme 3542 3543 3544JmolVersion="14.8.0" 3545 3546JmolVersion="14.8.0-beta-2016-12-17" 3547 3548Release Note: switching to semantic versioning (http://semver.org/) 3549Release Note: When releasing beta version, append "-beta-YYYYMMDD" 3550 3551Release Note: new features listed are since first release of 14.5.4 (2016.04.30) 3552 3553new feature: set echo OFFSET {sx sy sz} 3554 -- sets the echo offset to a specific screen Angstrom offset 3555 3556new feature: set echo OFFSET [mode sx sy sz ax ay az] never implemented 3557 -- see set labelOffset 3558 3559new feature: set labelOffset [mode sx sy sz ax ay az] (3.1.15, never documented) 3560 3561 set labelOffset [sx, sy, sz] 3562 set labelOffset [mode, sx, sy, sz, ax, ay, az] 3563 3564 where 3565 3566 sx,sy,sz are screen coord offsets 3567 -- applied after view rotation 3568 -- sy > 0 LOWERS label 3569 ax,ay,az are xyz position (in Angstroms; applied before view rotation) 3570 mode == 0 indicates xyz position is absolute and sx sy sz are Angstroms 3571 mode == 1 indicates xyz position is relative to atom position and sx sy sz are Angstroms 3572 mode == 2 indicates xyz is absolute, and sx sy sz positions are screen pixels 3573 mode == 3 indicates xyz is relative, and sx sy sz positions are screen pixels 3574 defaults: mode == 1; ax = ay = az = 0 3575 3576new feature: fully implemented CIF 2.0 reader 3577 3578new feature: MagCIF reader upgraded to new IUCr standard 3579 -- first CIF 2.0 format implemented by IUCr 3580 -- see http://comcifs.github.io/magCIF.dic.html 3581 3582new feature: x = getProperty("cifInfo", "c:/temp/test.cif") 3583 -- reads CIF file data in structured format 3584 -- automatically uses CIF 1.0 or CIF 2.0, as needed. 3585 -- if file name is missing, uses current model file 3586 3587new feature: autocalculation of MMFF94 partial charges 3588 -- isosurface ... map MEP 3589 -- DIPOLE MOLECULAR 3590 -- no need to preface these with CALCULATE PARTIALCHARGE 3591 3592new feature: 3DPrinter-compatible VRML and STL writing. 3593 -- mesh only; does not use high-level objects Cone, Cylinder, Sphere 3594 -- extensive use of dEF and USE for small-footprint VMRL files 3595 -- STL is binary generally, but will be ASCII using SET DEBUG TRUE 3596 -- write t.wrl 3597 -- write t.stl 3598 3599new feature: measure ID "test" radius 0.0 font 15.0 SansSerif Plain align CENTER @1 @2 "test" 3600 -- radius 0.0 turns off line (optional) 3601 -- font... sets font (optional) 3602 -- align [left|right|center|none] sets text alignment (optional) 3603 -- requires ID 3604 3605new feature: allowance for external app loading of binary (mmtf) files 3606 or any other file using a simple interface: 3607 Viewer.openReader(fullPathName, reader) 3608 3609new feature: Jmol reads PyMOL 1.8 PSE files with "set dump_binary, 1" 3610 3611new feature: load AUDIO audiofilename 3612 -- Java and JavaScript applet can read WAV, MP3, and OGG files 3613 -- application can read WAV files] 3614 3615new feature: settable chain string using {atomset}.chain = "xxx" 3616 3617new feature: set hiddenLinesDashed 3618 -- when set TRUE, hidden lines in unit cells and boundbox are rendered as dashed lines. 3619 -- default is FALSE 3620 3621new feature: polyhedron -x.x .... 3622 -- sets maximum radius for gap calculation to be x.x 3623 3624new feature: $pbz1_1_.getProperty(x) where x is "info", 3625 "faces", "faceTriangles", "faceCount", 3626 "face_areas", "face_types", "face_points", 3627 "vertices", ...more... 3628 -- polyhedra informationoru 3629 3630new feature: unitcell("a=...,b=...,c=...,alpha=...,beta=...,gamma=....") 3631 - array of center and three vectors 3632 - example: 3633 $ print unitcell("a=10,b=10,c=20,alpha=90,beta=90,gamma=129") 3634{0.0 0.0 0.0} 3635{10.0 0.0 0.0} 3636{-6.293203 7.7714605 0.0} 3637{-8.742278E-7 -1.8328565E-6 20.0} 3638 3639new feature: load ... unitcell "a=...,b=...,c=...,alpha=...,beta=...,gamma=...." 3640 3641new feature: unitcell "a=...,b=...,c=...,alpha=...,beta=...,gamma=...." 3642 -- only the numbers are read; everything else is ignored, so order is important here 3643 -- uses the format created by show unitcell/a 3644 3645new feature: unitcell RECIPROCAL 2 3646 -- as integer, multiples of pi 3647 3648 3649new feature: polyhedra AUTO ... 3650 -- sets polyhedron radius automatically, using "MAXIMUM GAP" rule 3651 -- see Zur Abgrenzung der Koordinationssph�re und Ermittlung der Koordinationszahl in Kristallstrukturen 3652 G. O. Brunner, D. Schwarzenbach, Zeitschrift f�r Kristallographie - Crystalline Materials, 1971, vol 133, issues 1-6 127-133 3653 http://www.degruyter.com/view/j/zkri.1971.133.issue-1-6/zkri.1971.133.16.127/zkri.1971.133.16.127.xml?rskey=sfBNTx&result=1 3654 3655new feature: unitcell reciprocal x.x 3656 -- allows scaling of reciprocal cell, similar to unitcell("reciprocal", x.x) 3657 3658new feature: write CIF 3659 -- just a very simple CIF file, P1 format 3660 -- allows writing a simple CIF file with changed coordinates after a UNITCELL command 3661 3662new feature: full implementation of OpenSMILES and OpenSMARTS in Jmol 3663 see http://opensmiles.org and http://www.moldb.net/opensmarts 3664 3665new feature: C13 NMR prediction from http://www.nmrdb.org/service/jsmol13c?smiles=CCCC 3666 -- although we send MOL file, not SMILES here. 3667 -- actuated with 3668 3669 SHOW NMR H1 // H1 1H H or just SHOW NMR all default to this 3670 SHOW NMR C13 // or C or 13C 3671 SHOW NMR none // close JSpecView 3672 3673new feature: Jmol now implements a way of indicating atropisomer chirality. 3674 -- measured dihedral angle is clockwise-positive front-to-back, as for Jmol dihedrals 3675 -- matching with {*}.find("SMILES","...a^nm-a...") where n and m are 1, 2, or 3 3676 indicate first, second, or third, respectively, and indicate which bonds of 3677 the biaryl bond, as written, are to the reference atoms. 3678 -- for example: 3679 3680 $ load $biphenol 3681 $ connect @{@7|@8} @{@1|@2} atropisomer 3682 $ print {*}.find("SMARTS","c1(O)ccccc1^23-c2c(O)cccc2") 3683 3684 ({0:13}) 3685 3686 Explained below. 3687 3688new feature: CONNECT {pair1} {pair2} ATROPISOMER 3689 -- creates a new bond of type atropisomer (bond chirality in biaryl systems) 3690 -- each pair must include the bonded atom and its reference connected atom 3691 -- example: 3692 3693 $ load $biphenol 3694 $ connect @{@7|@8} @{@1|@2} atropisomer 3695 $ getProperty bondinfo[7].type 3696 3697 bondinfo[7].type "atropisomer_23" 3698 3699new feature: BONDORDER ATROPISOMER_nm 3700 -- not for general use; will be found in state file 3701 -- for example: 3702 3703 select BONDS ({6}); 3704 bondOrder atropisomer_23; 3705 3706new feature: Jmol SMILES bond atropisomerism ^nm- and ^^nm- 3707 -- indicates atropisomerism (bond chirality in biaryl systems) 3708 -- ^ and ^^ for bonds similar to @ and and @@ for atoms 3709 -- n and m are single-digit bond selectors, generally one of 1, 2, or 3 3710 -- n = 1/2/3 means "reference atom is first/second/third bonded 3711 -- ^- and ^^- same as ^22- and ^^22-, respectively 3712 -- example: 3713 3714 $ load $biphenol 3715 $ connect @{@7|@8} @{@1|@2} atropisomer 3716 $ print {*}.find("SMARTS","c1(O)cccc{c1^23-c2}c(O)cccc2") 3717 3718 ({1 6}) 3719 3720 Here the "^23-" refers to the two carbons with connected oxygen atoms, because the second 3721 bond listed for the carbon on the left is to the c1(O) atom, and the third bond listed for 3722 the carbon on the right is to the other c(O) atom. Note that bond numbering includes the 3723 implicit bond to the atom coming from the atom on its left, which for the second carbon, 3724 starts with the atropisomeric bond itself, at least in this case. 3725 3726 1*23 1*23 3727 c1(O)ccccc1^23-c2c(O)cccc2 3728 3729 3730JmolVersion="14.7.5_2016.12.17" 3731 3732bug fix: incorrect referencing of pt.fxyz and pt.xyz when unit cells have offsets 3733 3734JmolVersion="14.7.5_2016.12.06" 3735 3736bug fix: DSSR final touches 3737 3738 -- see https://chemapps.stolaf.edu/jmol/docs/misc/JmolSQLforDSSR.pdf 3739 3740 After loading a file from the PDB with the /dssr attribute: 3741 3742 LOAD =1ehz/dssr 3743 3744 The associative array _M.dssr holds the DSSR information. This array has the following main keys and subkeys of interest to this discussion: 3745 3746 bulges 3747 coaxStacks 3748 coaxStacks.stems 3749 hairpins 3750 hbonds 3751 helicies 3752 helicies.pairs 3753 iloops 3754 isoCanonPairs 3755 junctions 3756 kissingLoops 3757 kissingLoops.hairpins 3758 multiplets 3759 nonStack 3760 nts 3761 pairs 3762 ssSegments 3763 stacks 3764 stems 3765 stems.pairs 3766 3767 Each key or subkey is itself an array of associative arrays. For example, 3768 3769 LOAD =1ehz/dssr 3770 PRINT _M.dssr.stems.length 3771 PRINT _M.dssr.stems[1].pairs.length 3772 PRINT _M.dssr.stems[1].pairs[1] 3773 PRINT _M.dssr.pairs.select("where name='Imino'") 3774 PRINT _M.dssr.pairs.select("where name != 'WC'").count 3775 PRINT _M.dssr.coaxStacks[1].stems.select("where strand1='GACAC' or strand2='GACAC'")[1].pairs.count 3776 x = "GACAC" 3777 PRINT _M.dssr.coaxStacks[1].stems.select("where strand1=x or strand2=x")[1].pairs.count 3778 SELECT "|1|A|A|44||||" 3779 SELECT @{_M.dssr.pairs.select("where name != 'WC'")} 3780 SELECT ON within(dssr, "nts") 3781 SELECT ON within(dssr, "nts[WHERE v0>17 and v1 <-39]") 3782 SELECT ON within(dssr, "nts.2") 3783 SELECT ON within(dssr, "nts[WHERE v0>1 and v1 <0].2") 3784 3785JmolVersion="14.7.5_2016.12.02" 3786 3787new feature: fully implemented CIF 2.0 reader 3788 3789new feature: x = getProperty("cifInfo", "c:/temp/test.cif") 3790 -- reads CIF file data in structured format 3791 -- automatically uses CIF 1.0 or CIF 2.0, as needed. 3792 -- if file name is missing, uses current model file 3793 3794JmolVersion="14.7.4_2016.11.28" 3795 3796new feature: MagCIF reader upgraded to new IUCR standard 3797 -- see http://comcifs.github.io/magCIF.dic.html 3798 -- only required these two key changes: 3799 3800 // old: _magnetic_space_group.transform_from_parent_Pp_abc 3801 // new: _parent_space_group.child_transform_Pp_abc 3802 3803 // old: _magnetic_space_group.transform_to_standard_Pp_abc 3804 // new: _space_group_magn.transform_BNS_Pp_abc 3805 3806JmolVersion="14.7.4_2016.11.22" 3807 3808new feature: adds MagCIF reader based on http://comcifs.github.io/magCIF.dic.html 3809new feature: adds CIF array [...] reading (as a string only; reader needs to parse this) 3810 3811JmolVersion="14.7.4_2016.11.05" 3812 3813bug fix: miscalculates vector scale and direction for incommensurate modulation of magnetic spin 3814bug fix: MoleculeInfo.nElements incremented by number of elements on each subsequent call rather 3815 rather than being properly reset to zero before recalculating. 3816 3817JmolVersion="14.7.4_2016.11.02" 3818 3819bug fix: load x.cif {1 1 1} (where that file has no unitcell) throws a loading error 3820 3821JmolVersion="14.7.4_2016.10.26" 3822 3823bug fix: POV-Ray output spheres too large -- somehow broken in 14.6.4_2016.10.15 3824 3825JmolVersion="14.7.4_2016.10.23" 3826 3827code: netscape.jar references isolated to org.jmol.applet.Jmol 3828 3829JmolVersion="14.7.4_2016.10.21" 3830 3831bug fix: menu item for X3D export delivers STL; item for STL not functional 3832bug fix: X3D export includes extraneous VRML text 3833bug fix: load "@x" not saved in state properly 3834bug fix: IDTF exporter broken in Jmol 14.7.4_2016.10.02 3835 3836JmolVersion="14.7.4_2016.10.15" 3837 3838bug fix: (JSmolJavaExt.js) JSmol/HTML5 WRITE xxx.stl not working. 3839bug fix: STL export can place two endcaps in the same location 3840 3841JmolVersion="14.7.4_2016.10.09" 3842 3843new feature: autocalculation of MMFF94 partial charges 3844 -- isosurface ... map MEP 3845 -- DIPOLE MOLECULAR 3846 -- no need to preface these with CALCULATE PARTIALCHARGE 3847 3848bug fix: MOL and V3000 readers should add implicit partial charges of 0 when only some partial charges are given 3849 3850bug fix: fine lines or dots rendered around boxes in ROCKETS 3851 3852bug fix: SET MEASUREMENTS x.x is 10x too wide 3853 3854bug fix: MO command does not allow SQUARED with PLANE 3855bug fix: MO command SQUARED does not reset cutoff to its square 3856bug fix: MO command does not preserve SQUARED after PLANE command 3857 3858bug fix: MOLDEN reader does not accept [MOLDEN FORMAT] 3859 3860bug fix: WRL/X3D/STL surface closure for rockets, cartoons, polyhedra, ellipsoids, geosurface, draw 3861bug fix: triangle renderer miscalculates z-index, causing some hidden triangle bits to show 3862 3863code: refactoring of line rastering improves efficiency 3864 3865JmolVersion="14.7.4_2016.10.02" 3866 3867new feature: 3DPrinter-compatible VRML and STL writing. 3868 -- mesh only; does not use high-level objects Cone, Cylinder, Sphere 3869 -- extensive use of dEF and USE for small-footprint VMRL files 3870 -- STL is binary generally, but will be ASCII using SET DEBUG TRUE 3871 -- write t.wrl 3872 -- write t.stl 3873 3874JmolVersion="14.7.3_2016.09.29" 3875 3876bug fix: COD CIF files have mixed-lower case atom labels (H5a) in bonds def, causing Jmol to miss bonds. 3877bug fix: rogue System.out.println for text rendering. 3878 3879JmolVersion="14.7.3_2016.09.21" 3880 3881bug fix: print compare({1.1}, {2.1}, "MAP", "H") broken in 14.6.0_2016.06.14 3882 3883JmolVersion="14.7.3_2016.09.18" released 3884 3885new feature: show chemical formula reads formula from CIF 3886 3887bug fix: write MENU broken for non-English language (UTF-8 strings not correctly encoded using base64) 3888bug fix: write PNGJ should not store "#_DOCACHE_" in PNGJ file 3889bug fix: JSmol echo image loading from PNGJ can fail 3890bug fix: load "" after pasting in structure to load fails 3891 3892JmolVersion="14.7.2_2016.09.12" 3893 3894new feature: measure ID "test" radius 0.0 font 15.0 SansSerif Plain align CENTER @1 @2 "test" 3895 -- radius 0.0 turns off line (optional) 3896 -- font... sets font (optional) 3897 -- align [left|right|center|none] sets text alignment (optional) 3898 -- requires ID 3899 3900JmolVersion="14.7.2_2016.09.01" 3901 3902bug fix: show vdw USER broken 3903bug fix: COMPARE {1.1} {2.1} SMILES should be ignoring stereochemistry 3904bug fix: CIF subsystem reader broken 3905 3906JmolVersion="14.7.2_2016.08.30" 3907 3908bug fix: SMILES comparison of two strings will report incorrect stereochemistry 3909 3910JmolVersion="14.7.2_2016.08.29" 3911 3912bug fix: load FILES does not deliver _modelFileName for individual models 3913bug fix: NCI/CADD reader not escaping "\" in SMILES (javajs.util.PT.escapeUrl) 3914 3915JmolVersion="14.6.2_2016.08.28" 3916syncronized and released as 14.6.2_2016.08.28 3917 3918new feature: allowance for external app loading of binary (mmtf) files 3919 or any other file using a simple interface: 3920 Viewer.openReader(fullPathName, reader) 3921 3922bug fix: RCSB -> https "https://files.rcsb.org/download/%FILE.pdb" 3923 3924bug fix: EBI sites to https 3925bug fix: Spartan 16 reader may have empty first model 3926bug fix: 2D model show SMILES uses @SP -- should be /nostereo/ based on _.dimension == "2D" 3927bug fix: NCI/CADD now requires "get3d=true" not "get3d=True" 3928 3929code: Unit test includes binary types PyMOL and MMTF 3930 3931JmolVersion="14.7.1_2016.08.20" 3932 3933feature change: updated links to EBI electron density maps (formerly Uppsala; for isosurface "*xxxx") 3934 3935 "pdbemap", "http://www.ebi.ac.uk/pdbe/coordinates/files/%file.ccp4", 3936 "pdbemapdiff", "http://www.ebi.ac.uk/pdbe/coordinates/files/%file_diff.ccp4" 3937 3938code: recoding in javajs.util.Measure.calculateQuaternionRotation (Andrew Hanson) 3939 3940JmolVersion="14.7.1_2016.08.11" 3941 3942bug fix: PyMOL dump_binary file reading fixes 3943 3944JmolVersion="14.7.1_2016.08.09" 3945sycnronized with Jmol 14.6.1 3946bug fix: upgrade of RCSB mmtf format reading to version 0.2 specs 3947 3948 load =2tbv.mmtf {1 1 1} filter "biomolecule 1;*.ca" 3949 3950 3951JmolVersion="14.7.1_2016.08.08" 3952 3953new feature: Jmol reads PyMOL 1.8 PSE files with "set dump_binary, 1" 3954 3955JmolVersion="14.7.1_2016.07.29" 3956 3957bug fix: COMPARE command can fail if an atom has no bonds 3958 3959JmolVersion="14.7.1_2016.07.24" 3960 3961bug fix: write x.pdb for multimodel file does not work. 3962 3963JmolVersion="14.7.1_2016.07.11" 3964 3965sychronized with Jmol 14.6 3966 3967bug fix: Jmol SMILES not allowing for insertion-code search 3968 -- adds "^" for insertion code: [G#129^A.*] 3969 3970 3971JmolVersion="14.7.0_2016.07.06" 3972 3973bug fix: Jmol can crash on point group calculation for small polyhedra 3974 3975JmolVersion="14.7.0_2016.06.30" 3976 3977bug fix: cartoon rendering broken in 2016.06.28 3978 3979JmolVersion="14.7.0_2016.06.28" 3980 3981bug fix: using an exporter (write VRML, eg) with cartoonsFancy will break rendering after that 3982bug fix: after loading PNGJ data, using write FILE crashes Jmol 3983 3984JmolVersion="14.7.0_2016.06.27" 3985 3986new feature: load AUDIO audiofilename 3987 -- Java and JavaScript applet can read WAV, MP3, and OGG files 3988 -- application can read WAV files] 3989 3990 3991<<< above is not documented TODO 3992 3993 3994JmolVersion="14.7.0_2016.06.23" 3995 3996bug fix: nn.? and nn.* are not processed properly as float nn. 3997 For example: print (35 == 35.? "yes" : "no") cause script exception 3998 3999JmolVersion="14.7.0_2016.06.22" 4000 4001new feature: settable chain string using {atomset}.chain = "xxx" 4002 4003bug fix: compare(a,b,"isomer") does not detect ENANTIOMER (broken in 14.5.5) 4004bug fix: missing error trap for unsettable property setting 4005bug fix: load models {0 0 1} ... fails in script compiler 4006 4007JmolVersion="14.7.0_2016.06.21" 4008 4009bug fix: x3d export shows partial bond as standard bond 4010 4011JmolVersion="14.7.0_2016.06.14" 4012 4013bug fix: reading of protein structure for a group that is not in a polymer causes null pointer exception 4014 4015new feature: set hiddenLinesDashed 4016 -- when set TRUE, hidden lines in unit cells and boundbox are rendered as dashed lines. 4017 -- default is FALSE 4018 4019JmolVersion="14.7.0_2016.05.27" 4020 4021new feature: polyhedron -x.x .... 4022 -- sets maximum radius for gap calculation to be x.x 4023 4024JmolVersion="14.7.0_2016.05.26" 4025 4026bug fix: set hermiteLevel -4 allows hermite during mouse move but not spinning 4027bug fix: QchemReader not 4028 4029JmolVersion="14.7.0_2016.05.25" 4030 4031bug fix: polyhedron faces not generated correctly when postions are very close together (still) 4032bug fix: polyhedron face areas not calculated correctly 4033 4034new feature: $pbz1_1_.getProperty(x) where x is "info", 4035 "faces", "faceTriangles", "faceCount", 4036 "face_areas", "face_types", "face_points", 4037 "vertices", ...more... 4038 -- polyhedra information 4039 4040new feature: print unitcell("a=...,b=...,c=...,alpha=...,beta=...,gamma=....") 4041new feature: load ... unitcell "a=...,b=...,c=...,alpha=...,beta=...,gamma=...." 4042new feature: unitcell "a=...,b=...,c=...,alpha=...,beta=...,gamma=...." 4043 -- only the numbers are read; everything else is ignored, so order is important here 4044 -- uses the format created by show unitcell/a 4045 4046new feature: unitcell RECIPROCAL 2 4047 -- as integer, multiples of pi 4048 4049JmolVersion="14.7.0_2016.05.24" 4050 4051bug fix: localization broken due to too-old GNU msgfmt version. 4052bug fix: splash image not appearing in Jmol application Help...about Jmol 4053bug fix: Jmol application Help may not appear at all 4054bug fix: switching out of hermite "fancy" cartoons doesn't actually do that. 4055 4056 4057code: removing unnecessary J/api/JmolBioMeshRenderer.js 4058 -- when I started working with Java2Script, I thought that 4059 all references to a class had to be removed and an interface used instead 4060 if modularization was to work in JavaScript. But it turns out only "new Xxx()" 4061 will trigger that request. This might be something I changed in j2sjmol.js early 4062 on; I cannot remember. 4063 4064new feature: polyhedra AUTO ... 4065 -- sets polyhedron radius automatically, using "MAXIMUM GAP" rule 4066 -- see Zur Abgrenzung der Koordinationssph�re und Ermittlung der Koordinationszahl in Kristallstrukturen 4067 G. O. Brunner, D. Schwarzenbach, Zeitschrift f�r Kristallographie - Crystalline Materials, 1971, vol 133, issues 1-6 127-133 4068 http://www.degruyter.com/view/j/zkri.1971.133.issue-1-6/zkri.1971.133.16.127/zkri.1971.133.16.127.xml?rskey=sfBNTx&result=1 4069 4070JmolVersion="14.7.0_2016.05.23" 4071 4072new feature: unitcell reciprocal x.x 4073 -- allows scaling of reciprocal cell, similar to unitcell("reciprocal", x.x) 4074 4075new feature: write CIF 4076 -- just a very simple CIF file, P1 format 4077 -- allows writing a simple CIF file with changed coordinates after a UNITCELL command 4078 4079bug fix: calculate pointgroup polyhedra "xxx" does not work 4080bug fix: draw pointgroup $xxx does not work for named polyhedra 4081bug fix: named polyhedra set visibility broken 4082bug fix: colors light(and dark)grey and light(and dark)gray should be synonymous 4083bug fix: isosurface SILENT should pass that to readers 4084 4085popup menu: reorganization of color... submenu 4086 4087JmolVersion="14.7.0_2016.05.17" 4088 4089new feature: full implementation of OpenSMILES and OpenSMARTS in Jmol 4090 see http://opensmiles.org and http://www.moldb.net/opensmarts 4091 4092code: unnecessary org.jmol.util.BNode removed; methods now part of org.jmol.util.Node 4093 4094new feature: C13 NMR prediction from http://www.nmrdb.org/service/jsmol13c?smiles=CCCC 4095 -- although we send MOL file, not SMILES here. 4096 -- actuated with 4097 4098 SHOW NMR H1 // H1 1H H or just SHOW NMR all default to this 4099 SHOW NMR C13 // or C or 13C 4100 SHOW NMR none // close JSpecView 4101 4102new feature: Jmol now implements a way of indicating atropisomer chirality. 4103 -- measured dihedral angle is clockwise-positive front-to-back, as for Jmol dihedrals 4104 -- matching with {*}.find("SMILES","...a^nm-a...") where n and m are 1, 2, or 3 4105 indicate first, second, or third, respectively, and indicate which bonds of 4106 the biaryl bond, as written, are to the reference atoms. 4107 -- for example: 4108 4109 $ load $biphenol 4110 $ connect @{@7|@8} @{@1|@2} atropisomer 4111 $ print {*}.find("SMARTS","c1(O)ccccc1^23-c2c(O)cccc2") 4112 4113 ({0:13}) 4114 4115 Explained below. 4116 4117new feature: CONNECT {pair1} {pair2} ATROPISOMER 4118 -- creates a new bond of type atropisomer (bond chirality in biaryl systems) 4119 -- each pair must include the bonded atom and its reference connected atom 4120 -- example: 4121 4122 $ load $biphenol 4123 $ connect @{@7|@8} @{@1|@2} atropisomer 4124 $ getProperty bondinfo[7].type 4125 4126 bondinfo[7].type "atropisomer_23" 4127 4128new feature: BONDORDER ATROPISOMER_nm 4129 -- not for general use; will be found in state file 4130 -- for example: 4131 4132 select BONDS ({6}); 4133 bondOrder atropisomer_23; 4134 4135new feature: Jmol SMILES bond atropisomerism ^nm- and ^^nm- 4136 -- indicates atropisomerism (bond chirality in biaryl systems) 4137 -- ^ and ^^ for bonds similar to @ and and @@ for atoms 4138 -- n and m are single-digit bond selectors, generally one of 1, 2, or 3 4139 -- n = 1/2/3 means "reference atom is first/second/third bonded 4140 -- ^- and ^^- same as ^22- and ^^22-, respectively 4141 -- example: 4142 4143 $ load $biphenol 4144 $ connect @{@7|@8} @{@1|@2} atropisomer 4145 $ print {*}.find("SMARTS","c1(O)cccc{c1^23-c2}c(O)cccc2") 4146 4147 ({1 6}) 4148 4149 Here the "^23-" refers to the two carbons with connected oxygen atoms, because the second 4150 bond listed for the carbon on the left is to the c1(O) atom, and the third bond listed for 4151 the carbon on the right is to the other c(O) atom. Note that bond numbering includes the 4152 implicit bond to the atom coming from the atom on its left, which for the second carbon, 4153 starts with the atropisomeric bond itself, at least in this case. 4154 4155 1*23 1*23 4156 c1(O)ccccc1^23-c2c(O)cccc2 4157 4158<<< above is not documented TODO 4159 4160 4161bug fix: MolPRO reader broken 4162 4163bug fix: Jmol SMILES directive /noaromatic/ should ignore ":" bond type 4164bug fix: Jmol SMILES directive /aromaticDouble/ not implemented for SMILES 4165buf fix; Jmol SMARTS measurements should be required to come after branches 4166bug fix: Jmol SMILES parser should require connection numbers to be placed prior to branches 4167bug fix: Jmol SMILES should not allow (.t!50,60,70,80) 4168bug fix: Jmol SMILES should treat search("[THR.*][THR.*]") should select all atoms in each group 4169bug fix: Jmol SMILES should return ({}) not ERROR if no atoms are involved 4170 4171code: StateCreator and Shape getStateInfo methods simplified and condensed 4172 4173JmolVersion="14.5.4_2016.04.30" 4174 4175new feature: 13C Simulated spectra (but without correlation yet) 4176 4177bug fix: bondorder command broken in 14.1.8_2014.02.17 4178bug fix: polyhedra COLLAPSED option in conjunction with UNITCELL breaks rendering 4179bug fix: "axis" keyword dropped from vocabulary, disabling MOVETO AXIS... 4180 4181JmolVersion="14.5.4_2016.04.25" 4182 4183new feature: (JavaScript) Jmol.loadFileFromDialog(jmolApplet0) 4184 -- asynchronous file loading on demand 4185 -- can be model file, but can also be script, dssr data - anything 4186 -- can be a local file or a URL 4187 -- see dssr.htm 4188 -- for example: 4189 4190 Jmol.jmolButton("jmolApplet0", [function(){Jmol.loadFileFromDialog(jmolApplet0)}],"Open File") 4191 4192new feature: setting DSSR on the fly: 4193 4194 model 1 property dssr "1d66.dssr" // file containing data 4195 model 1 property dssr @{load("1d66.dssr")} // actual data 4196 select iloops 4197 4198<<< above is not documented TODO 4199 4200 4201bug fix: show spaceGroup can crash after load ... filter "biomolecule 1" 4202 4203bug fix: load =1auy.cif {1 1 1} does not complete atoms in unit cell 4204 for files with noncrystallographic symmetry operations (_struct_ncs...) such as viral capsids 4205 4206bug fix: load =1auy.cif {1 1 1} filter "BIOMOLECULE 1;*.ca" does not work 4207 4208code: =xxxx/DSSR path changed to http://dssr-jmol.x3dna.org from http://x3dna.bio.columbia.edu/dssr 4209 4210 4211JmolVersion="14.5.4_2016.04.24" 4212 4213new feature: show chemical xxx where xxx is one of the file types: 4214 4215 alc cdxml cerius charmm cif cml ctx gjf gromacs hyperchem jme 4216 maestro mol mol2 sybyl2 mrv pdb sdf sdf3000 sln smiles xyz 4217 4218 retrieves this information for the currently selected set of atoms 4219 from the the NCI CACTVS Resolver. 4220 4221 Note that the PDB writer is nonstandard, and "SDF" no longer returns 4222 the 2D mol file, only the 3D mol file. 4223 4224 Can be used as the show() function: x = show("chemical jme") 4225 4226<<< above is not documented TODO 4227 4228 4229new feature: print {*}.find("SMILES/hydrogen/") adds hydrogen atoms 4230 4231<<< above is not documented TODO 4232 4233 4234feature note: JSME upgraded to JSME_2015-12-06-2 4235 4236bug fix: NCI switch to using /sdf for 3D rather than 2D, breaks jsv_predict2.html 4237 -- requires converting mrv format to jme: 4238 4239 function getJMEHs() { 4240 var x= show("chemical mrv") 4241 var x2 = x.split('x2="')[2].split('"')[1].split(' ') 4242 var y2 = x.split('y2="')[2].split('"')[1].split(' ') 4243 var el = x.split('elementType="')[2].split('"')[1].split(' ') 4244 var s = '' + {*}.size + ' ' + {*}.bonds.size + ' ' + el.join(x2).join(y2).join(' ').replace('\n',' ') 4245 var b = x.split("<bond ") 4246 for (var i = 2; i <= b.length; i++) { 4247 var bi = b[i] 4248 var at = bi.split('atomRefs2="')[2].split('"')[1].replace('a','') 4249 var n = (bi.find('>W<') ? -1 : bi.find('>H<') ? -2 : bi.split('order="')[2].split('"')[1]) 4250 s += ' ' + at + ' ' + n 4251 } 4252 return s 4253 } 4254 load $morphine 4255 x = getJMEHs() 4256 print x 4257 4258 4259bug fix: show VARIABLES broken 4260bug fix: after load =xxxx/dssr, selection "naChains" is defined, but it is not an atom list 4261bug fix: hyperchem reader may not interpret aromatic correctly 4262bug fix: show chemical ... will not use the correct structure if it came from NCI and has been changed via modelKitMode. 4263 4264code: JmolBioModelSet and BioModel untangled 4265code: JmolBioModelSet moved to org.jmol.modelsetbio.BioModelSet 4266code: JmolBioModelSet changed from interface to class 4267code: unnecessary JmolBioResolver interface removed 4268 4269JmolVersion="14.5.4_2016.04.23" 4270 4271FEATURE CHANGE: Jmol 14.5.4_2016.04.23 by default will implement DSSP 2.0 as described in 4272 Int. J. Mol. Sci. 2014, 15, 7841-7864; doi:10.3390/ijms15057841 4273 and implemented at http://www.cmbi.ru.nl/dssp.html. 4274 This change only affects helices that have bulges, indicating them 4275 more appropriately as pi helices rather than alpha helices. 4276 4277 The original version of DSSP, "DSSP 1.0" will be available using 4278 4279 calculate structure DSSP 1.0 4280 show DSSP 1.0 4281 load ... filter "DSSP1" 4282 4283 This change is for 14.5 only, not 14.4, which remains DSSP 1.0 4284 4285code: unnecessary org.jmol.modelset.JmolBioModel interface removed 4286code: unnecessary org.jmol.api.DSSPInterface removed 4287code: DSSP 1.0/2.0 switch in ModelLoader only necessary while 14.4 and 14.5 are being compiled in parallel 4288 4289JmolVersion="14.5.4_2016.04.22" 4290 4291bug fix: on loading, crystallographic file reading fails when applying symmetry 4292bug fix: on loading, user-defined space groups using Hall symbol fails 4293bug fix: SHELX reader broken 4294 4295 4296JmolVersion="14.5.4_2016.04.21" 4297 4298bug fix: CIF files with missing tags that Jmol needs fail to load at all. 4299 (Not necessarily a bad thing, but it is not supposed to fail so dramatically.) 4300bug fix: mmCIF/mmTF reader does not complete symmetry for biomolecules when there is a lattice. 4301 for example: 4302 4303 load =2tbv.mmtf {1 1 1} filter "biomolecule 1;*.ca" 4304 backbone off; spacefill 200% 4305 color property symop 4306 4307bug fix: mmCIF, PDB, and mmTF readers with lattice indicated does not show unit cell 4308 4309JmolVersion="14.5.4_2016.04.19" 4310 4311new feature: preliminary MMTF reader 4312 -- MacroMolecular Transmission Format (MMTF, from RTSB) 4313 -- see https://github.com/rcsb/mmtf/blob/master/spec.md#overview 4314 -- binary format for file transfer and molecule construction 4315 -- uses MessagePack binary JSON format 4316 -- entirely experimental; not for general consumption 4317 -- biomolecule processing works 4318 -- DSSP secondary structure is read 4319 4320 * 4321 * JmolData RCSB MMTF (macromolecular transmission format) file reader 4322 * 4323 * see https://github.com/rcsb/mmtf/blob/master/spec.md 4324 * 4325 * /full/ specification as of 2016.4.18 is implemented,including: 4326 * 4327 * reading atoms, bonds, and DSSR secondary structure 4328 * 4329 * load =1f88.mmtf 4330 * 4331 * 4332 * reading space groups and unit cells, and using those as per other readers 4333 * 4334 * load =1crn.mmtf {1 1 1} 4335 * 4336 * reading bioassemblies (biomolecules) and applying those transformations 4337 * 4338 * load =1auy.mmtf FILTER "biomolecule 1;*.CA,*.P" 4339 * 4340 * reading biomolecules and lattices, and loading course-grained 4341 * 4342 * load =1auy.mmtf {2 2 1} filter "biomolecule 1;bychain";spacefill 30.0; color property symop 4343 * 4344 * 4345 4346bug fix: certain viral capsid CIF files will fail to load due to this line: XAU '(X0)(1-10,21-25)' A,B,C 4347bug fix: DSSR selection includes too many atoms 4348bug fix: PSE reader broken in JmolData.jar; no issue with Jmol.jar or JSmol 4349bug fix: PSE reader for Pymol 1.7.5 files may not set some models visible 4350bug fix: PSE reader not processing (sele) and related selections 4351 4352new feature: set window width height 4353new feature: set window [width height] 4354new feature: set window "xxx.png" 4355 4356new feature: getProperty("shapeInfo.echo") 4357 -- a 1-length array (because all shapeInfo results are arrays 4358 -- shapeInfo.echo[0] contains an associative array based on echo names 4359 -- currently only include keys name, imageWidth, imageHeight, and imageFile 4360 4361 $ set echo myecho image 'http://noys3.weizmann.ac.il/a2jb/browse?sn=testSet/dna-a/pymol.png' 4362 $ print getProperty("shapeInfo.echo[0]") 4363 { 4364 "myecho" : 4365 { 4366 "imageFile" : "http://noys3.weizmann.ac.il/a2jb/browse?sn=testSet/dna-a/pymol.png" 4367 "imageHeight" : 500 4368 "imageWidth" : 500 4369 "name" : "myecho" 4370 } 4371 } 4372 4373 -- idea is to allow access to image dimensions for any file image 4374 -- for example, for a MacPyMOL session file, because those do not contain width and height information, 4375 we don't have the width and height we need to recreate the model window and associated Jmol image, 4376 but we can also read the associated PyMOL-generated PNG file and get the dimensions that way 4377 4378 load 'xxxx.pse' filter 'DORESIZE;DOCACHE' 4379 set echo myecho image 'xxxx.png' 4380 var a = getProperty('shapeInfo.echo[0].myecho') 4381 set echo myecho off 4382 write PNGJ @{a.imageWidth} @{a.imageHeight} 'xxxx-jmol.png' 4383 4384 thus temporarily loading the PyMOL image just long enough to get its dimensions; not actually viewing it 4385 4386bug fix: SET nihResolverFormat does not work; using "=" does work. 4387 (There should be no reason to set this; Jmol is automatically changing those to "https".) 4388 4389JmolVersion="14.5.4_2016.04.14" 4390 4391bug fix: Jmol 14.5.4_2016.04.13 will fail to read PDB files from scripts referencing http://www.rcsb.org/pdb/ 4392 -- does not affect http://www.rcsb.org/pdb/ligand 4393 -- does not affect load =xxxx or load ==xxx 4394 -- does not affect PNGJ files 4395 -- only affects scripts that specifically reference that site (e.g. state scripts created prior to 4/13/2016) 4396 4397bug fix: selection of dssr elements using select within(dssr,"pairs[where...]") is not working 4398 -- example after fix: 4399 $ load =1d66/dssr 4400 $ print _M.dssr.pairs.select("where bp='G-C'")[1] 4401 { 4402 "DSSR" : "cW-W" 4403 "LW" : "cWW" 4404 "Saenger" : "19-XIX" 4405 "bp" : "G-C" 4406 "index" : 3 4407 "name" : "WC" 4408 "nt1" : "|1|D|DG|3||||" 4409 "nt2" : "|1|E|DC|36||||" 4410 } 4411 $ select within(dssr,"pairs") 4412 773 atoms selected 4413 $ select within(dssr,"pairs[where bp='G-C']") 4414 243 atoms selected 4415 $ select within(dssr,"pairs[where name='WC']") 4416 691 atoms selected 4417 4418 -- Note that this works because SELECT can find unit ids ("|1|E|DC|36||||") in any string. 4419 For example: 4420 4421 $ select "|1|E|DC|36||||" 4422 19 atoms selected 4423 4424 4425 4426JmolVersion="14.5.4_2016.04.13" 4427 4428bug fix: JSmol cannot load RCSB ligand files 4429bug fix: "axis" unintentionally made reserved word in "14.4.4_2016.03.19" 4430bug fix: symop(@1 @2) broken 4431bug fix: symop() taking default unitcell from "current" -- should be that it 4432 REQUIRES a prefix "{xxx}." if @1 or @2 are not indicated and there are 4433 multiple models (because it is a general function, not a script command). 4434 4435bug fix: models from PyMOL reader do not save atom colors in state when balls are colored 4436 4437new feature: "$isosurface1".getProperty("atoms") 4438 -- returns atoms associated with this surface 4439 -- for example, the atoms used to make a molecular surface 4440 4441 <<< above is not documented TODO 4442 4443 4444 4445new feature: show xxx /yyy 4446 -- filters any SHOW command for lines containing "yyy" (case insensitive) 4447 -- examples: 4448 4449 $ show symop/glide 4450 $ show set/zoom 4451 $ show state/draw 4452 $ show file "test.xyz" /H 4453 $ show file "/remark 900" 4454 $ show variables/sym 4455 4456 <<< above is not documented TODO 4457 4458 4459new feature: symop(3,@3,"atom") 4460 -- returns target atom or atoms 4461 4462new feature: show symop 3 @3 "atom" 4463 -- shows target atom or atoms 4464 4465<<< above is not documented TODO 4466 4467 4468JmolVersion="14.5.4_2016.04.11" 4469 4470new feature: symop() options: 4471 symop(op) 4472 -- returns the 4x4 matrix representation of this operator 4473 symop(op, atom) 4474 -- returns the point generated by operator op on atom 4475 -- op may be a positive or negative integer indictating the operation (or its reverse) 4476 to apply from the loaded space group -- for example, symop(3, @1) or symop(-4, {atomindex=16}) 4477 -- op may be a string such as "x+1/2,1/2-y,z" representing a specific generic operation 4478 symop(atom1, atom2) 4479 -- returns the description of the first of possibly several operations that take atom1 to atom2, for example: 4480 "2-fold screw axis|translation: 1/2 0 0" 4481 symop(atom1, atom2, n) 4482 -- returns the description of the nth operation that takes atom1 to atom2 4483 symop(...point...) 4484 -- any place an atom can be used in symop(), one can substitute an xyz coordinate. 4485 -- for example, symop(@1, {1/2 1/2 1/2}) 4486 {atomset}.symop(...) 4487 -- when more than one model is loaded, prepending any symop function with an atom set specifies which 4488 atoms, space group, and unit cell are being referenced. For example, {2.1}.symop(5) operates only on 4489 atoms in the first model of the second loaded file, using the appropriate space group and unit cell. 4490 In this way, "@1" will designate one atom only, provided only one model is showing (using the FRAME/MODEL command). 4491 If only one model has been loaded, there is no need to use this syntax; symop(...) will do the same. 4492 symop(..., outputType) 4493 -- All uses of symop() and {atomset}.symop() can be extended using a final parameter that 4494 changes the default output described above to be something else. Options for outputType include: 4495 4496 "draw" Returns the Jmol script illustrating this operation with DRAW commands. 4497 4498 $ print symop(3,"draw") 4499 draw ID draw_* delete 4500 draw ID draw_frame1X diameter 0.15{5.5172 1.9683 2.7802}{6.5172 1.9683 2.7802} color red 4501 ... 4502 4503 "full" Returns the tab-separated Jones-Faithful string and descriptor for this operation. 4504 4505 $ print symop(3,"full") 4506 -x,-y,-z(mx,my,mz) Ci: 0 0 0 4507 4508 "lattice" Returns the lattice type associated with the space group involving this operation. 4509 4510 "list" Specifically when two atoms or points are specified, returns a string list of all operations 4511 taking the first to the second. 4512 4513 $ print symop(@3,@21,"list") 4514 5 x+1/2,-y+1/2,-z+1/2(-mx,my,mz) 2-fold screw axis|translation: 1/2 0 0|time-reversed 4515 7 -x+1/2,y+1/2,z+1/2(-mx,my,mz) n-glide plane|translation: 0 1/2 1/2|time-reversed 4516 4517 Note that this string can be turned into a standard array using .lines.split("\t",true): 4518 4519 $ print symop(@3,@21,"list").lines.split("\t",true) 4520 [ 4521 5 4522 x+1/2,-y+1/2,-z+1/2(-mx,my,mz) 4523 2-fold screw axis|translation: 1/2 0 0|time-reversed 4524 ] 4525 [ 4526 7 4527 -x+1/2,y+1/2,z+1/2(-mx,my,mz) 4528 n-glide plane|translation: 0 1/2 1/2|time-reversed 4529 ] 4530 4531 "array" Returns an associative array that contains critical information relating to this operation. 4532 4533 $ load =magndata/0.34 4534 $ print symop(3,"array") 4535 { 4536 "inversionCenter" : {0.0 0.0 0.0} 4537 "label" : "Ci: 0 0 0" 4538 "matrix" : 4539 [ 4540 [-1.0, 0.0, 0.0, 0.0] 4541 [0.0, -1.0, 0.0, 0.0] 4542 [0.0, 0.0, -1.0, 0.0] 4543 [0.0, 0.0, 0.0, 1.0] ] 4544 "timeReversal" : 1 4545 "xyz" : "-x,-y,-z(mx,my,mz)" 4546 "xyzOriginal" : "-x,-y,-z,m" 4547 } 4548 4549 In addition, all possible keys of this array may be used as well for outputType. These include: 4550 4551 "axisVector", "cartesianTranslation", "centeringVector", "fractionalTranslation", 4552 "inversionCenter", "label", "matrix", "plane", "rotationAngle", 4553 "timeReversal", "unitTranslation", "xyz", and "xyzOriginal" 4554 4555 Three of these that may be less than obvious are explained below: 4556 4557 "centeringVector" For operations that are pure lattice translations, returns the vector 4558 for this centering in fractional coordinates. 4559 4560 "timeReversal" This quantity is 0 for standard space groups. Magnetic space group 4561 operations also include the possibility of inversion of the spin 4562 along with any 3D symmetry operation. This inversion characteristic 4563 is referred to as "time reversal" and takes the value of 1 or -1. 4564 4565 "unitTranslation" Symmetry operations involving two atoms may include an extra 4566 lattice translation if the two atoms are in different unit cells. 4567 This translation is above and beyond any fractional lattice centering 4568 that this operator incorporates for a face- or body-centered space group. 4569 4570 "id" A number 1 - N, where N is the number of symmetry operators in the space group. 4571 (added in Jmol 14.29.17) 4572 4573<<< above is not documented TODO 4574 4575new feature: show spacegroup/xxxxx 4576 4577 -- selects lines from a space group report similar to the way show state/xxxx works 4578 -- example: 4579 4580 load =ams/quartz 1 4581 show spacegroup/Class 4582 4583new feature: show/draw symop @1 @2 4584 -- gives full list of matching symmetry operations 4585 -- example: 4586 4587 $ load =magndata/1.23 {444 555 1} packed 4588 $ show symop @153 @299 4589 4590 1 x+2,y,z2(mx,my,mz) translation: 2 0 -2 4591 5 -x,-y,-z(mx,my,mz) Ci: 0 0 0 4592 11 x+2,-y,-z(-mx,my,mz) 2-fold screw axis|translation: 2 0 0|time-reversed 4593 15 -x,y,z2(-mx,my,mz) c-glide plane|translation: 0 0 -2|time-reversed 4594 4595new feature: show/draw symop @1 @2 n 4596 -- shows or draws the nth symmetry operation relating atom 1 to atom 2 4597 -- example: 4598 4599 $ load =magndata/1.23 {444 555 1} packed 4600 $ show symop @153 @299 3 4601 4602 11 x+2,-y,-z(-mx,my,mz) 2-fold screw axis|translation: 2 0 0|time-reversed 4603 4604new feature: print pointgroup("spacegroup", @1) 4605 -- analyzes the point group (crystal class) of a crystal. 4606 -- uses three irrational-coordinate points to generate all possible operators 4607 -- creates a map with keys (somewhat variable depending upon axes present): 4608 4609 C2 4610 C3 4611 Ci 4612 Cs 4613 S6 4614 detail 4615 distanceTolerance 4616 linearTolerance 4617 nAtoms 4618 nC2 4619 nC3 4620 nCi 4621 nCn 4622 nCs 4623 nS6 4624 nSn 4625 nTotal 4626 name 4627 points 4628 principalAxis 4629 4630new feature: draw SPACEGROUP 4631 -- draws all operations in space group 4632 4633new feature: draw POINTGROUP SPACEGROUP 4634 -- draws crystal class symmetry operations for a space group 4635 -- uses point group style, with circular planes 4636 4637new feature: @1.find("crystalClass", pt) 4638 -- generates a list of points based on a model's crystal class (point group) 4639 -- uses @1 just to find the unit cell and space group 4640 -- optional pt is used as a generator (defaults to @1) 4641 -- example: 4642 load =ams/calcite 1 4643 x = @3.find("crystalClass") 4644 print pointgroup(x).name 4645 draw points @x 4646 polyhedra ID p {0 0 0} to @x 4647 4648bug fix: qchem reader fails to switch to spherical D/F basis for second structure 4649bug fix: pointGroup secondary axis in yellow is too hard to see -- using "orange" instead 4650 4651JmolVersion="14.5.4_2016.04.05b" 4652 4653bug fix: unitcell primitive for A,B,C-centered lattices rotated 90 degrees from 4654 NRL standard (Michael Mehl, U.S. Naval Research Laboratory) 4655bug fix: polyhedra COLLAPSED do not have correct normal vectors 4656bug fix: assocArray.bin() should allow "TRUE" option 4657bug fix: =mp/24972 not working after switch to https 4658 4659new feature: adds SHOW SMILES/bio and {*}.find("SMILES/bio") options: 4660 /bio Jmol bioSMILES with header and chain comments 4661 /bionocomments no chain comments (but still one header with comments) 4662 /bioatomcomments full atom comments 4663 /biocovalent indicates covalent S-S crosslinking using ":" notation 4664 /biohbond indicates hydrogen bonds using ":" notation 4665 /biounmatched allows unmatched rings 4666 4667new feature: SMILES/nonaromatic same as SMILES/noaromatic 4668 4669JmolVersion="14.5.4_2016.04.03" 4670 4671bug fix: draw SCALE x.x symop has no effect; good to be able to scale down the arrow 4672bug fix: draw symop can fail for second call 4673 4674JmolVersion="14.5.4_2016.03.31" 4675 4676bug fix: load $xxxx broken; http://cactus --> https://cactus 4677bug fix: _geom_bond_distance starting with "." halts CIF file reading 4678 4679JmolVersion="14.5.4_2016.03.29" 4680 4681code: ru.po updated (Angel Herraez) 4682 4683bug fix: SMILES generator still broken in 14.4.4_2016.03.25 4684bug fix: smiles1.find("SMILES",smiles2) broken in 14.4.3_2016.03.06 4685 4686new feature: Polyhedra command allows for min and max radius 4687 -- polyhedra 2.8 3.0 @3 4688 4689bug fix: unitcell PRIMITIVE for rhombohedral groups not implemented 4690bug fix: unitcell("primitive","R") not implemented 4691 4692bug fix: WRITE IMAGE with negative width or height should throw a Jmol ScriptException 4693bug fix: draw ... [x y] does not position properly with antialias true 4694bug fix: allow AXES TYPE "" or non-recognized to be same as "abc" 4695bug fix: AXES TYPE "ab" should also be allowed when offset or center is set 4696bug fix: labels should not change size when creating images of 4697 different size than screen when angstromsPerInch != 0. 4698bug fix: if...BREAK|CONTINUE in unbracketed context does not properly 4699 place implicit END IF when TRUE clause is on next line 4700 AND next statement after that is another IF command: 4701 if (xxxx) 4702 break; 4703 if (yyyy) 4704 zzzz; 4705 becomes 4706 if (xxxx) { 4707 break; 4708 if (yyyy) { 4709 zzzz; 4710 } 4711 } 4712 instead of 4713 if (xxxx) { 4714 break; 4715 } 4716 if (yyyy) { 4717 zzzz; 4718 } 4719 4720 4721JmolVersion="14.5.4_2016.03.25" 4722 4723new feature: moveto AXIS <a|b|c|-a|-b|-c> coupled with <1|2|3|4> 4724 -- indicates direction of axis ("-a" indicates "a pointing away") 4725 -- and clockwise position 1(top left), 2(top right), 3(bottom right), and 4(bottom left) 4726 -- defaults a == a1, b == -b1, c == c4 4727 -- slight modification of what was released in 03.21 4728 4729bug fix: JavaScript Jmol.evaluateVar() does not properly escape JSON strings 4730bug fix: SMILES generator broken in 03.23 4731 4732JmolVersion="14.5.4_2016.03.24b" 4733 4734 4735bug fix: axes/unitcell/boundbox appear 10x too thick after recalling from state 4736 -- broken in JmolVersion="14.5.4_2016.03.21" 4737 4738bug fix: polyhedra fix for overlapping face triangles 4739bug fix: magnetic spin vector trail disappears when not vibrating 4740bug fix: magnetic spin vector trail does not reset if set vectorscale <n> where <n> is less than current 4741 4742JmolVersion="14.5.4_2016.03.24" 4743 4744bug fix: NCI requires stereochemistry to rings to be prior to a branch: 4745 C\1(/C)=C\C=C.C/1=C not C(/C)\1=C\C=C.C/1=C 4746 4747new feature: x.bin() method allows return of an array listing both the bound and the count 4748 -- example: 4749 4750 $ print {*}.bonds.length.all.bin(1,2,0.1,TRUE).format("json") 4751 [ [ 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 ] ] 4752 4753 4754new feature: load =magndata/1.1.37 4755 -- links to the MAGNDATA database at http://webbdcrista1.ehu.es/magndata 4756 -- "magndata", "http://webbdcrista1.ehu.es/magndata/mcif/%FILE.mcif", 4757 4758new feature: set vectorTrail n 4759 -- adds a trail onto a modulating vector (as for an incommensurate magnetic spin) 4760 -- n trails are made, typically in a fan-like pattern that trails the spinning vector 4761 load =magndata/1.1.37 4762 set vectortrace 20 4763 set vibrationperiod 2 4764 vibration on 4765 4766bug fix: saving a state after using LOAD "" (empty quotes) 4767 after pasting data directly into the application creates an unreadable state 4768 4769new feature: unitcell ON adds #nnn (international table number) to cell description if found 4770 4771bug fix: {*}.find("CHEMICAL","NAMES") only reports one name. 4772 4773code: more efficient identifying space group 4774 4775JmolVersion="14.5.4_2016.03.22" 4776 4777bug fix: select picking invertstereo broken 4778 4779bug fix: unitcell PRIMITIVE does not work as reported 3/21 4780bug fix: unitcell("conventional","F") does not work 4781bug fix: crystal systems with translational symmetry may have duplication of symmetry operators 4782 4783 4784JmolVersion="14.5.4_2016.03.21" 4785 4786new feature: axes OFFSET x.x 4787 -- applies offset of x.x in fractional coordinates in each axis direction 4788 -- AXES OFFSET -0.1 same as AXES CENTER {-0.1 -0.1 -0.1/1} 4789 4790new feature: expanded unitcell() function 4791 -- adds additional types: "A", "B", "C", "I", "F" 4792 -- default is the lattice type of the model's space group 4793 -- not just cubic; "BCC" is converted to "I" 4794 -- for example: 4795 4796 load =ams/silicon 15 packed // Cmca 4797 draw id "uc" diameter 0.1 unitcell mesh nofill color black 4798 unitcell @{unitcell("primitive")} 4799 color unitcell red 4800 unitcell 0.1 4801 axes unitcell 4802 axes on 4803 4804new feature: expanded UNITCELL command to include PRIMITIVE option for any space group 4805 4806bug fix: SMILES matcher not allowing azulene to be aromatic 4807 4808bug fix: OpenSMILES matcher not allowing non-chemist Hueckel 4+2 interpretation 4809 4810bug fix: SMILES generator not adding "-" for biphenyl Ar-Ar bond 4811 4812bug fix: set picking invertSTEREO does not work on open-ring systems 4813 4814bug fix: SMARTS [R] matching all atoms 4815 4816bug fix: dashed lines not visible in measurements, unit cells, and axes 4817 4818bug fix: axes 0.01 produces thick 20-pixel-wide lines 4819 -- solution was to drop that to 0.001 for this effect 4820 4821JmolVersion="14.5.4_2016.03.14" 4822 4823bug fix: Polyhedra with verticies that are also centers of polyhedra for atoms that were visible 4824 but are no longer visible do not update screen positions properly 4825 4826JmolVersion="14.5.4_2016.03.13" 4827 4828new feature: polyhedra POINTS x.y 4829 -- adds variable size spherical points at corners of polyhedra 4830 -- color is that of element, or black 4831 4832new feature: show SMILES/xxxx 4833 -- xxxx = open, strict, openstrict, mmff94 4834 4835new feature: show chemical NAME 4836 -- singular "name" gives just the first name; "names" gives full list 4837 4838new feature: full implementation of OpenSMILES aromatic model 4839 4840TODO: DOCUMENT-->>> 4841 4842new feature: {*}.find("SMILES/open") 4843 -- generates OpenSMILES string for selected atoms 4844 -- applies OpenSMILES aromaticity rules for 5-, 6-, and 7-membered rings 4845 -- not chemical -- allows exocyclic c=C bonds and [nH] in 6-membered rings 4846 -- also adds atom class if property_atomClass is nonzero 4847 -- for example: 4848 4849 $ load $2-butanol 4850 $ @2.property_atomclass=2 4851 $ @3.property_atomclass=3 4852 $ @5.property_atomclass=5 4853 $ print {*}.find("smiles/open") 4854 4855 C[C@H:2]([OH:5])[CH2:3]C 4856 4857new feature: /open option for smiles.find("SMILES", pattern) 4858 -- applies OpenSMILES model of aromaticity 4859 -- finds aromaticity-normalized pattern "in" aromaticity-normalized smiles 4860 -- can be after SMILES or as beginning of pattern 4861 $ print "OC1=CC(N)=CC=C1".find("SMILES","NC1=CC(O)=CC=C1") 4862 0 4863 $ print "OC1=CC(N)=CC=C1".find("SMILES/open","NC1=CC(O)=CC=C1") 4864 8 4865 $ print "OC1=CC(N)=CC=C1".find("SMILES","/open/NC1=CC(O)=CC=C1") 4866 8 4867 4868new feature: compare("smile1","/open/smiles2") 4869 -- applies OpenSMILES model of aromaticity 4870 -- checks for match of atom class if present (default value 0 matches "not present") 4871 -- does aromaticity normalization on both strings 4872 $ print compare("OC1=CC(N)=CC=C1", "NC1=CC(O)=CC=C1", "isomer") 4873 CONSTITUTIONAL ISOMERS 4874 $ print compare("OC1=CC(N)=CC=C1", "/open/NC1=CC(O)=CC=C1", "isomer") 4875 IDENTICAL 4876 4877new feature: {*}.find("SMILES/strict") 4878 -- generates OpenSMILES string for selected atoms 4879 -- applies standard Hueckel aromaticity rules for 5-, 6-, and 7-membered rings 4880 -- does not allow exocyclic c=C bonds or [nH] in 6-membered rings 4881 -- does not create atom classes 4882 -- also for compare() and search() 4883 4884new feature: {*}.find("SMILES/open strict") 4885 -- same as just /strict, but also generates atom classes if present as property_atomClass 4886 -- also for compare() and search() 4887 4888new feature: {*}.find("SMILES/mmff94") 4889 -- applies a very STRICT, chemically meaningful Hueckel 4+2 Rule 4890 -- adds allowance for only a 1-electron contribution to 6-membered rings (three double bonds) 4891 -- also for compare() and search() 4892 4893new feature: optional processing of OpenSMILES [CH2:002] ":<n>" atom class. 4894 -- positive integer value only 4895 -- checks the atom property property_atomclass 4896 -- for SMARTS, [:0] means "without an atomclass" 4897 -- for SMARTS, [!:0] means "any non-zero atomclass" 4898 -- for SMARTS, same as [$(select property_atomclass=n)] 4899 -- only enabled with Jmol SMILES directive "/open/"; otherwise ignored 4900 -- for example: 4901 4902 $ load $2-butanol 4903 $ show smiles 4904 4905 C[C@H](O)CC 4906 4907 $ @2.property_atomclass=2 4908 $ @3.property_atomclass=3 4909 $ @5.property_atomclass=5 4910 4911 $ select * 4912 15 atoms selected 4913 $ select on search("/open/[:3]") 4914 1 atoms selected 4915 $ select on search("/open/[!:3]") 4916 14 atoms selected 4917 $ select on search("/open/[:0]") 4918 12 atoms selected 4919 $ select on search("/open/[!:0]") 4920 3 atoms selected 4921 $ select on search("/open/[!:3 & !:0]") 4922 2 atoms selected 4923 4924new feature: UNITCELL TRANSFORM @m4x4 4925 -- direct 4x4 matrix transformation of a unit cell 4926 4927new feature: calculate symmetry polyhedra {atomset} 4928 -- selectively calculates polyhedra. 4929 -- for example: calculate symmetry polyhedra {polyhedra(4)} 4930 4931new feature: calculate symmetry polyhedra id 4932 -- selectively calculates polyhedra for a given ID. 4933 -- for example: calculate symmetry polyhedra "poly1" 4934 4935 4936new feature: atom set can be specified in polyhedra() function: 4937 -- print {2.1}.polyhedra(3) 4938 -- print {2.1}.polyhedra("....polySMILES string...") 4939 4940TODO: document <<<---------- 4941 4942new feature: WRITE MOL67 xxx.mol 4943 -- writes MOL format with bonds of type 6 or 7 (aromatic single/double; rarely significant) 4944 4945 4946bug fix: SMILES should not be returned with comments for internal processing or sending to PubChem or others 4947 4948bug fix: SHOW chemical SMILES can be off because it was using the name, not the SMILES string 4949 -- sometimes - e.g. "menthol" - the name has no chirality, but the structure does (of course). 4950 4951bug fix: Jmol 14.3.16_2015.09.15 broke first-match-only flag in SMILES mapping 4952 4953bug fix: POLYHEDRA when selection halos are on, all have edges 4954 4955bug fix: moving of polyhedron will fail if corner of polyhedron is an atom 4956 4957bug fix: macro functions cannot be used later in same script as a MACRO command 4958 -- presence of MACRO command now removes check for unknown command name exception 4959 4960bug fix: Tripos MOL2 reader does not read element symbols properly 4961 4962bug fix: default write MOL file should not indicate aromatic bond types 6 and 7 4963 -- corrects the fact that these bonds are reserved for queries 4964 -- only affects cases where that bond type has been set (after calculate aromatic or loading of ligand CIF files 4965 4966 4967JmolVersion="14.5.4_2016.03.08" 4968 4969bug fix: OpenSMILES even-atom cumulene stereochemistry not implemented 4970 -- examples (reporting "DIASTEREOMERS") 4971 print compare("F/C=C=C=C/F","F/C=C=C=C\\F","isomer") 4972 load $F-C=C=C=C-F;print compare("F/C=C=C=C\\F",{1.1},"isomer") 4973 4974bug fix: SMILES generator unnecessarily over-expressing double-bond / and \. 4975 4976new feature: (JSmol) standard InChI generator (see inchi.htm, inchi/*) 4977 -- JavaScript library for generation of InChIs 4978 -- runs completely in JavaScript 4979 -- equivalent to SHOW CHEMICAL stdinchi 4980 -- about 900 KB 4981 4982 4983JmolVersion="14.5.3_2016.03.06" 4984 4985bug fix: Inconsistent use of "DIASTEREOMERS" (preferred) and "DIASTERIOMERS" (incorrect) 4986 4987JmolVersion="14.5.3_2016.03.05" 4988 4989bug fix: SMILES TB trigonal bipyramidal stereochemistry not functional 4990bug fix: SMILES [@TBn] not recognizing n > 2 4991 4992bug fix: SMILES OH octahedral stereochemistry error 4993bug fix: SMILES [@OHn] not recognizing n > 2 4994 4995bug fix: SMILES SP square planar stereochemistry will report ENANTIOMERS rather than DIASTEREOMERS 4996 4997JmolVersion="14.5.3_2016.03.03b" 4998 4999bug fix: CIF reader _atom_site_cartn_x incompatible with _geom_bond 5000 -- this fix now allows Jmol to read very simple CIF files that are equivalent to unlimited-atom MOL files 5001 -- _ccdc_geom_bond_type is not required, defaulting to S 5002 -- _ccdc_geom_bond_types include S, D, T, Q (quadruple), and A (aromatic) 5003 5004 data_icosahedron 5005 loop_ 5006 _atom_site_label 5007 _atom_site_Cartn_x 5008 _atom_site_Cartn_y 5009 _atom_site_Cartn_z 5010 C01 0.0000000000 0.0000000000 9.5105651630 5011 C02 8.5065080835 0.0000000000 4.2532540418 5012 C03 2.6286555606 8.0901699437 4.2532540418 5013 C04 -6.8819096024 5.0000000000 4.2532540418 5014 C05 -6.8819096024 -5.0000000000 4.2532540418 5015 C06 2.6286555606 -8.0901699437 4.2532540418 5016 C07 6.8819096024 5.0000000000 -4.2532540418 5017 C08 -2.6286555606 8.0901699437 -4.2532540418 5018 C09 -8.5065080835 0.0000000000 -4.2532540418 5019 C10 -2.6286555606 -8.0901699437 -4.2532540418 5020 C11 6.8819096024 -5.0000000000 -4.2532540418 5021 C12 0.0000000000 0.0000000000 -9.5105651630 5022 loop_ 5023 _geom_bond_atom_site_label_1 5024 _geom_bond_atom_site_label_2 5025 _ccdc_geom_bond_type 5026 C01 C02 S 5027 C01 C03 S 5028 C01 C04 S 5029 C01 C05 S 5030 C01 C06 S 5031 C02 C03 S 5032 C03 C04 S 5033 C04 C05 S 5034 C05 C06 S 5035 ...etc... 5036 5037 5038JmolVersion="14.5.3_2016.03.03" 5039 5040bug fix: after SET echo ALL, background echo ... changes text color, not background color 5041 5042JmolVersion="14.5.3_2016.03.02" 5043 5044bug fix: JavaScript reference to j2s for working gif does not recognize Info.j2sPath 5045 5046JmolVersion="14.5.3_2016.02.28" 5047 5048bug fix: cyclic peptides do not complete loop for cartoons, backbone, etc. (1SFI) 5049 5050JmolVersion="14.5.3_2016.02.27" 5051 5052bug fix: [function:"yyy",Function:"zzz"] fails to retain key capitalization after first entry for special names 5053bug fix: (JavaScript only) polyhedra not saved in state 5054bug fix: (Applet) broken image in coverImage 5055bug fix: polyhedra DELETE can crash Jmol if polyhedra are not colored 5056 5057JmolVersion="14.5.3_2016.02.17" 5058 5059bug fix: slab/depth SET do not behave properly 5060bug fix: select VISIBLE is not properly set based on slab/depth SET 5061 5062bug fix: _GEOM_BOND reading in CIF files nonfunctional. 5063 -- broken in 13.3.4_dev_2013.08.21 5064 -- result is that between 8/21/2013 and 2/15/2016 the CIF reader 5065 would not recognize _GEOM_BOND and so also not create whole molecules 5066 as it was designed to do when those are present. 5067 -- no impact on states created within this version range 5068 -- no impact on mmCIF reader 5069 -- only impact is upon Materials Studio-generated files such as 5070 http://www.rsc.org/suppdata/cc/c2/c2cc34714h/c2cc34714h.txt 5071 (supplemental mat. for http://pubs.rsc.org/en/Content/ArticleLanding/2012/CC/c2cc34714h) 5072 See Jmol list discussion: https://sourceforge.net/p/jmol/mailman/message/31308577/ 5073 5074 5075JmolVersion="14.5.2_2016.02.14" 5076 5077FEATURE CHANGE: JSmol default for Info._disableInitialConsole changed to true 5078 -- no longer necessary with JSmol_spinner.gif 5079 5080new feature: j2s/img/JSmol_spinner.gif implemented (Angel Herraez) 5081 -- as default for Info._appletLoadingImage 5082 -- use Info._appletLoadingImage = "none" to disable 5083 5084new feature: j2s/img/cursor_wait.gif animation implemented 5085 5086bug fix: STRUCTURE statement (utilized in RESTORE STRUCTURE) broken 5087 -- broken in Jmol 14.4.0_2015.10.30 5088 5089bug fix: EBI assembly CIF files that are multi-model files will be by chain, not by model. 5090 -- result was that each chain became a new model 5091 -- for example: see http://www.ebi.ac.uk/pdbe/static/entry/download/2lev-assembly-1.cif.gz 5092 5093bug fix: XmlMolProReader does not recognize FILTER "NOMO" 5094 5095bug fix: JSmol has never shown cursors 5096 5097JmolVersion="14.5.2_2016.02.09" 5098 5099new feature: invertselected ATOMS {ring atoms to invert} 5100 -- inverts ring stereochemistry 5101 -- requires prior selection of all atoms to be involved in the inversion 5102 5103bug fix: SMARTS pattern [ALA.*] not working without biological polymer type indication 5104bug fix: SMARTS pattern [r500] not working outside of MINIMIZE 5105 5106 5107JmolVersion="14.5.2_2016.02.06" 5108 5109new feature: isosurface BACKSHELL 5110 -- displays just the back side of an isosurface 5111 -- works by reversing the normals, then showing front only 5112 -- similar to isosurface slab 50, but better if object is far from spherical 5113 -- works with PMESH, MO, CONTACT as well 5114 -- reverted using isosurface NOBACKSHELL 5115 5116new feature: isosurface "*xxxx" 5117 -- accesses EBI test site for ED maps at http://wwwdev.ebi.ac.uk/pdbe/coordinates/files/%file.ccp4 5118 -- uses default sigma 1.0 5119 5120new feature: isosurface "**xxxx" 5121 -- accesses EBI test site for ED difference maps at http://wwwdev.ebi.ac.uk/pdbe/coordinates/files/%file_diff.ccp4 5122 -- uses default sigma 3.0 5123 5124bug fix: JSmol not identifying .ccp4 file extension as binary 5125bug fix: isosurface "==xxxx" not setting default omap cutoff and sigma 3.0 5126bug fix: small MRC map files mistaken for DELPHI files. 5127bug fix: MRC/CCP4 surface/map files still sometimes inside out. 5128 5129JmolVersion="14.5.2_2016.02.05" 5130 5131 5132bug fix: MRC/CCP4 surface/map files sometimes inside out. 5133 5134bug fix: LOAD $benzene; SHOW smiles should give c1ccccc1 not c1=cc=cc=c1 5135 5136JmolVersion="14.5.2_2016.02.04" 5137 5138bug fix: JVXL files saved from models that involve full model rotate/translateSelected 5139 do not get restored properly. 5140 5141bug fix: molecular orbitals do not move with atoms 5142 when full molecule is moved using rotateSelected or translateSelected 5143 5144code: better loading of surfaces -- no longer requires javajs.util.XmlUtil 5145code: removal of unnecessary api interfaces MinimizerInterface, VolumeDataInterface, QuantumPlaneCalculationInterface, MOCalculationInterface, MepCalculationInterface 5146 5147JmolVersion="14.5.2_2016.02.03" 5148 5149bug fix: IboView/Molpro XML reader validated for multi-molecule XML files 5150 -- to concatenate Molpro XML files, you must supply a new root tag as well as 5151 remove all <?...?> directives. 5152 -- DOS CMD file example: 5153 5154 catxml.bat ibo*.xml test.xml 5155 5156 where catxml.bat is: 5157 5158 copy /b %1 _temp 5159 echo ^<OUTER^> > %2 5160 type _temp | find /V "<?" >> %2 5161 echo ^</OUTER^> >> %2 5162 5163 5164 5165JmolVersion="14.5.1_2016.02.01" 5166 5167bug fix: IboView/Molpro XML Reader validated for reading orbitals 5168 5169code: new abstract reader XmlMOReader 5170 5171 5172JmolVersion="14.5.1_2016.01.28" 5173 5174bug fix: MOs need to move with atoms and be restored from state properly 5175 after use of ROTATESELECTED. 5176 -- note that fix for 14.4 does not include state saving, as that would break previous subversions 5177 5178code: JmolZipUtilities interface removed 5179code: JmolBinary reduced to just all Spartan-related methods 5180 5181JmolVersion="14.5.1_2016.01.25" 5182 5183bug fix: Spartan file reader not working properly after MacSpartan -> Spartan14 upgrade 5184 5185JmolVersion="14.5.1_2016.01.16" 5186 5187bug fix: mol, xyz readers not reporting model name like other readers 5188 5189new feature: variable _versionDate 5190 $ show _versionDate 5191 _versionDate = "14.4.1_2016.01.16 2016-01-15 17:25" 5192 5193 5194new feature: x = pointgroup([array of points],center) 5195 -- center is optional, defaulting to average of the points 5196 -- returns a map: 5197 pts = [ {-1.0132 0.585 0.0012999999},{1.0132 0.585 0.0012999999},{0.0 -1.17 0.0012999999} ] 5198 print pointgroup(pts,{0 0 0}) 5199 { 5200 "C2" : 5201 [ 5202 {0.8660127 -0.50001717 0.0022222984} 5203 {-0.8660127 -0.50001717 0.0022222984} 5204 {0.0 0.99999756 0.002222217} 5205 ] 5206 "C3" : 5207 [ 5208 {0.0019245904 -0.0011111083 -0.99999756} 5209 ] 5210 "Cs" : 5211 [ 5212 {0.0019245904 -0.0011111085 -0.99999756} 5213 {-0.49998164 -0.866036 0.0} 5214 {0.49998164 -0.866036 0.0} 5215 {1.0 0.0 0.0} 5216 ] 5217 "S3" : 5218 [ 5219 {0.0019245904 -0.0011111083 -0.99999756} 5220 ] 5221 "center" : {0.0 0.0 0.0} 5222 "detail" : "# 3 atoms;" 5223 "distanceTolerance" : 0.2 5224 "linearTolerance" : 8.0 5225 "nAtoms" : 3 5226 "nC2" : 3 5227 "nC3" : 1 5228 "nCi" : 0 5229 "nCn" : 4 5230 "nCs" : 4 5231 "nS3" : 1 5232 "nSn" : 1 5233 "nTotal" : 12 5234 "name" : "D3h" 5235 "principalAxis" : {0.0019245904 -0.0011111083 -0.99999756} 5236 "principalPlane" : {0.0019245904 -0.0011111085 -0.99999756} 5237 } 5238 5239code: polyhedra, pointgroup, load =ams/, load "xxxx#_DOCACHE_" features from 14.5 added to 14.4 5240 5241JmolVersion="14.5.1_2016.01.15" 5242 5243bug fix: d = [start:1,end:10] fails due to reserved word "end" (also "select", "case", "default", "if", "for", etc.) 5244bug fix: color "chain" (with quotes) should work, allowing for x="chain"; color @x 5245bug fix: inappropriate use of REGEX in ["a","b"].find("x") 5246bug fix: ".xxx" should be allowed as a math continuation: 5247 5248 print script("show spacegroup all") 5249 .split() 5250 .find("Hall symbol:") 5251 5252JmolVersion="14.5.1_2016.01.09" 5253 5254code: (JavaScript) refactoring to allow faster, cleaner load for biomodels 5255 5256JmolVersion="14.5.1_2016.01.08" 5257 5258bug fix: labels, echos, and measurements improperly shaded when z-shaded with nonblack background 5259bug fix: rendering error when set zshade followed by set antialiasdisplay 5260 5261code: (JavaScript) refactoring to reduce extraneous file download 5262 5263JmolVersion="14.5.1_2016.01.06" 5264 5265bug fix: labels, echos, and measurements disappear when z-shaded 5266 5267JmolVersion="14.5.1_2016.01.04" 5268 5269bug fix: (JvxlReader) Jmol 12 mapped isosurface jvxl files do not show mapped color 5270bug fix: setting default label properties using select none;.... fails 5271bug fix: setting cartoons on for phosphorus-only polymers fails 5272bug fix: undocumented model-based draw [array of points] broken 5273 -- points only 5274 -- selects from visible frames (frame *, for example) 5275 -- load cyclohexane_movie.xyz; frame *; draw @{{C5}.split().sub({1,0,0}) 5276 5277JmolVersion="14.5.1_2016.01.01" 5278 5279bug fix: file dropping of JVXL files does not work 5280bug fix: Mesh capper not working for multiple cuts due to unclosed surface cut 5281 -- for example: load maleic.cif 1;select on atomindex=6;lcaocartoon scale 1.0 CAP unitcell "cpk" 5282bug fix: Escape.e(P4) returns value for Escape.e(T3) -- only affects SurfaceTool 5283bug fix: (JSmol only) Java return (int) fValue(x); will return "NaN" instead of "0" for x NaN 5284 -- JSmol script 0 + "test" will print "NaN" rather than "0" 5285 5286JmolVersion="14.5.1_2015.12.23b" 5287 5288bug fix: JavaScript error reporting uses alert() instead of just setting the error message 5289bug fix: PyMOL 1.8 PSE files cannot be read because of missing settings 5290 5291code: more efficient loading of PyMOL .pse session files 5292 5293JmolVersion="14.5.1_2015.12.23" 5294 5295bug fix: PyMOL 1.8 PSE files cannot be read 5296bug fix: dots broken when colored none 5297bug fix: color cartoons red blue not saved in state 5298bug fix: color cartoons red blue flipping red/blue in sheets 5299 5300JmolVersion="14.5.1_2015.12.21" 5301 5302bug fix: color [0xffffff] should not be case-sensitive -- [0Xffffff] should be OK 5303bug fix: set spin fps ... fails 5304 5305JmolVersion="14.5.1_2015.12.20" 5306 5307code: (JavaScript) adding use of array.slice and implementing Java byte[] as JavaScript Int8Array() 5308 5309bug fix: array handling for labels very inefficient 5310bug fix: y = javascript("x") only creates string equivalent of x, not actual numerical/object values 5311bug fix: y = javascript("x") draws "x" from wrapped anonymous function using eval() instead of global context using window.eval() 5312 5313JmolVersion="14.5.1_2015.12.14" 5314 5315bug fix: JSmol (JSmolCore.js) check for MS Edge browser, which does not support dataURI 5316 5317JmolVersion="14.5.0_2015.12.13" 5318 5319 5320new feature: "#_DOCACHE_" suffix for file name loading tells Jmol to insert full structure into any state 5321 -- allows SPT files to preserve the original file (as in all PNGJ files) 5322 -- for example: 5323 load caffeine.xyz#_DOCACHE_ 5324 show state 5325 ... 5326 function _setFileState() { 5327 DATA "file_caffeine.xyz#_DOCACHE_" 5328 24 5329 5330 N 1.31200 -1.04790 0.00250 5331 C 2.24650 -2.17620 0.00310 5332 ... 5333 H -4.16720 -0.83950 0.51680 5334 END "file_caffeine.xyz#_DOCACHE_"; 5335 ... 5336 load /*file*/"c:/jmol-dev/bobtest/caffeine.xyz#_DOCACHE_"; 5337 } 5338 ... 5339 -- repeated calls to caffeine.xyz#_DOCACHE_ use the cached version, not the actual file 5340 -- calls to caffeine.xyz still ignore the cache. 5341 -- also addded to Jmol 14.4.0, but left undocumented 5342 5343 5344new feature: load =ams loads data from American Mineralogist Crystal Structure Database 5345 -- many thanks given to Robert Downs and Alex Pires for enabling this functionality. 5346 -- fetches data from http://rruff.geo.arizona.edu/AMS 5347 -- employs "#_DOCACHE_" flag because some of these data files may change after database maintenance 5348 -- three modes. Only the first, using _database_code_amcsd, is guaranteed to be stable over time, 5349 =ams/<nnnnnnn> (seven-digit database code) loads that specific structure based on _database_code_amcsd 5350 load =ams/0014673 5351 show _modelfile 5352 _modelfile = "http://rruff.geo.arizona.edu/AMS/viewJmol.php?amcsd=14673&action=showcif#_DOCACHE_" 5353 =ams/<nnnnn> (less than seven-digit id) loads that specific structure based on sequential id code 5354 load =ams/10000 5355 show _modelfile 5356 _modelfile = "http://rruff.geo.arizona.edu/AMS/viewJmol.php?id=10000&action=showcif#_DOCACHE_" 5357 =ams/<mineralName> loads all structures for a specified named mineral. 5358 load =ams/diamond 5359 show _modelfile 5360 _modelfile = "http://rruff.geo.arizona.edu/AMS/viewJmol.php?mineral=diamond&action=showcif#_DOCACHE_" 5361 -- thus, all of the following are equivalent as of 12/13/2015: 5362 5363 load =ams/0008986 5364 load =ams/10000 5365 load =ams/srilankite 4 5366 5367 However, it is possible that new structures will be added to srilankite, making 5368 this not the fourth structure, and the five-digit code 10000 can change after 5369 database maintenance. 5370 -- also addded to Jmol 14.4.0, but left undocumented 5371 5372new feature: drawing of spheres in 2D window 5373 -- as percent position or absolute, as for ECHO 5374 -- diameter is % if position is %; otherwise it is pixels 5375 -- examples: 5376 5377 draw d1 diameter 5 [90 90 %] color blue // percent position; 5% diameter 5378 draw d2 diameter 15 [90 90] color blue // absolute position; 15-pixel diameter 5379 draw dO diameter 2 [80 90 %] color @{ {_O}.color } 5380 set echo eO [95 90 %]; echo "O" 5381 5382 -- can be used in the context of an element key: 5383 5384 background white 5385 load $caffeine 5386 function createElementKey() { 5387 var y = 90 5388 for (var e in {*}.element.pivot){ 5389 var c = {element=@e}.color 5390 draw ID @{"d_"+ e} diameter 2 [90 @y %] color @c 5391 set echo ID @{"e_" + e} [91 @{y-1} %] 5392 echo @e 5393 font echo 24 bold sansserif 5394 color echo black 5395 y -= 5 5396 } 5397 } 5398 createElementKey 5399 5400 5401new feature: additional predefined sets for periodic table: 5402 "@nonmetal _H,_He,_B,_C,_N,_O,_F,_Ne,_Si,_P,_S,_Cl,_Ar,_As,_Se,_Br,_Kr,_Te,_I,_Xe,_At,_Rn", 5403 "@metal !nonmetal", 5404 "@alkaliMetal _Li,_Na,_K,_Rb,_Cs,_Fr", 5405 "@alkalineEarth _Be,_Mg,_Ca,_Sr,_Ba,_Ra", 5406 "@nobleGas _He,_Ne,_Ar,_Kr,_Xe,_Rn", 5407 "@metalloid _B,_Si,_Ge,_As,_Sb,_Te", 5408 "@transitionMetal elemno>=21&elemno<=30|elemno>=39&elemno<=48|elemno>=72&elemno<=80|elemno>=104&elemno<=112", 5409 "@lanthanide elemno>=57&elemno<=71", 5410 "@actinide elemno>=89&elemno<=103", 5411 5412 note added: last three changed 1/28/17 as per advice of Frank Weinhold: 5413 5414 // added La, Ac as per Frank Weinhold - these two are not f-block 5415 "@transitionMetal elemno>=21&elemno<=30|elemno=57|elemno=89|elemno>=39&elemno<=48|elemno>=72&elemno<=80|elemno>=104&elemno<=112", 5416 // removed La 5417 "@lanthanide elemno>57&elemno<=71", 5418 // removed Ac 5419 "@actinide elemno>89&elemno<=103", 5420 5421 -- useful for removal of metal-metal bonds in inorganic systems 5422 and for specifying polyhedra: 5423 5424 connect {metal} {metal} delete 5425 polyhedra bonds {metal} 5426 5427bug fix: zoomTo not setting time to 0 in the case of scriptWait 5428bug fix: set selectAllModels should restrict action of display/hide as well 5429bug fix: set selectAllModels not working appropriately 5430bug fix: set selectAllModels should not be saved in state 5431bug fix: JmolData.jar does not update atom screen positions upon REFRESH or select {visible} 5432bug fix: JmolData.jar -p flag does not work properly 5433bug fix: model 0 issued when more than one PDB file is open does not execute model * 5434bug fix: PDB reader broken for filter "biomolecule n" 5435bug fix: mmCIF reader can fail to pop up menu when biomolecule is present. 5436bug fix: JSON generation from arrays broken in HTML5 version due to browser changes in Array.toString(). 5437bug fix: DCD reader broken. 5438bug fix: getProperty("JSON", "variableInfo", "x") will fail if x is an array 5439 -- was problem with JSV_predict2 failing to properly map atoms between Jmol and JSME 5440bug fix: {atomset}.sxyz gives incorrect screen coordinate when antialiased 5441bug fix: point(pt, true|false) also modifies pt itself 5442bug fix: point({atomset}, true) gives incorrect screen coordinate when antialiased. 5443bug fix: point({atomset}, false) gives incorrect Cartesian coordinate when antialiased. 5444bug fix: popup menu item "Surfaces...Off" resets atom selection 5445bug fix: files with names containing "[]" cannot be loaded. 5446bug fix: {cell=555}.find("cellFormula") can fail because of 2% slop involved in defining cell=555 5447bug fix: {atomset}.split() [split atomset by model] returns array of strings, not array of atoms 5448bug fix: getproperty SHAPEINFO fails if CGO is present 5449bug fix: CGO from state deletes DRAW objects 5450bug fix: CGO not properly isolated to current model; "fixed" not implemented 5451bug fix: draw ARC|ARROW|CURVE|LINE|VERTICES @x where x is an array does not work 5452bug fix: loading mmCIF files where label_asym_id != auth_asym_id will apply biomolecule symmetry to wrong chain 5453bug fix: echo "" fails in applet 5454bug fix: 3x3 and 4x4 matrix multiplication of points changes the point itself. 5455 5456code: BSUtil.cardinalityOf cleanup. 5457code: synchronizing Jmol-NBO branch 5458 5459JmolVersion="14.5.0_2015.11.06" 5460 5461bug fix: restoring bonds to a model having fewer bonds than the model for which they were saved throws an exception 5462bug fix: CIF reader does not read incommensurately modulated magCIF files 5463bug fix: WRITE xxx.ZIP crashes Jmol 5464bug fix: POLYHEDRA ... {xxx} TO {yyy} not working 5465 5466JmolVersion="14.5.0_2015.11.03" 5467 5468bug fix: FOR without {} but with ";" after sole statement 5469 followed immediately by second FOR improperly loops 5470 for (var i from [1,5]) 5471 print i; 5472 for (var i from [1,5]) 5473 print i 5474 5475bug fix: OXT missing from BACKBONE selection 5476bug fix: (JSmol) CIF parser fails to read CIF files containing only a single (non-loop) _struct_ref_seq_dif.align_id 5477 5478new feature: polyhedra ID xxx SCALE x.x 5479 -- ID named polyhedra only 5480 -- x.x is the scaling factor, initially 1 5481 -- x.x > 0 does normal scaling 5482 -- x.x < 0 does "explode" from {0 0 0} (for higher-order Brillouin zones, for instance) 5483 5484bug fix: slabbing should reset area and volume of isosurface 5485bug fix: meshSlicer may fail to add edge to sliced pmesh 5486 5487FEATURE CHANGE: (Application only for now) PDB default for =xxxx 5488 -- changed to 5489 "pdb", "http://ftp.wwpdb.org/pub/pdb/data/structures/divided/pdb/%c2%c3/pdb%file.ent.gz" 5490 -- will be complemented with file.ent for non-binary transfer, but that is not implemented yet at RCSB 5491 -- mmCIF counterpart not implemented yet. 5492 -- not HTML5 because for that we need the option to remove .gz 5493 5494new feature: set testflag3 TRUE gives random triangle effect to polyhedra 5495 5496new feature: POLYHEDRON ID "xxx" OFFSET {3 3 3} 5497 -- allows cartesian offset of named polyhedra 5498 5499bug fix: bug fix: empty format crashes Jmol -- print "testing".format("") 5500bug fix: polyhedron volume will be incorrect if there is a 5501 face triangle that has no edges visible (requires a six or more sided face) 5502 5503bug fix: nested if...{...if... } else {...} gives compiler syntax error: 5504 5505 if (i=1) { 5506 print "i=1" 5507 if (j=1) 5508 print "j != 1" 5509 } else { // } closes if (j=1) instead of if (i=1) { 5510 print "i != 1" 5511 } 5512 5513JmolVersion="14.5.0_2015.10.29" 5514 5515bug fix: after CALCULATE HYDROGENS TRUE and then deleting hydrogens, hydrogens are not added to aromatic rings in PDB models 5516bug fix: reading saved state after adding hydrogen atoms results in infinite loop 5517 5518JmolVersion="14.5.0_2015.10.28" 5519 5520bug fix: XODYDATA file reader does not read bond info or formal charge // changes in 14.4.0_2015.10.28 5521 5522FEATURE CHANGE: default RCSB/PDB load format (=xxxx) changed to http://ftp.wwpdb.org/pub/pdb/data/structures/divided/pdb/%c2%c3/pdb%file.ent.gz 5523 5524new feature: (JSmol) adding access-allow-origin status for cdn.rcsb.org and ftp.wwpdb.org. 5525 5526JmolVersion="14.5.0_2015.10.27" 5527 5528code: unnecessary FRAME commands removed from state 5529bug fix: polyhedra not read from state (14.5 only) 5530 5531JmolVersion="14.5.0_2015.10.24" 5532 5533bug fix: [{1,2,3},{4,5,6}].average fails 5534bug fix: [{1,2,3},{4,5,6}].pivot should return "NaN" 5535 5536JmolVersion="14.5.0_2015.10.22" 5537 5538bug fix: CIF parser fails to read CIF files containing only a single (non-loop) _struct_ref_seq_dif.align_id 5539bug fix: WRITE .... AS does not properly allow for unquoted file name 5540 5541JmolVersion="14.5.0_2015.10.21" 5542 5543bug fix: write c:/temp..... AS PNGJ does not work without quotes that way; it should 5544 5545JmolVersion="14.5.0_2015.10.20" 5546 5547new feature: polyhedra with arbitrary center and vertices, without atom center 5548 -- for example: 5549 polyhedra ID "myid" {0 0 0} TO [{1 1 -1}, {1 -1 1}, {-1 1 1}, {-1 -1 -1}] # tetrahedron around origin 5550 polyhedra ID "myid" @{{*}.xyz} TO @{{*}.xyz.all} # polyhedron to center of all atoms 5551 5552bug fix: set platformSpeed 1 for pmesh fails 5553bug fix: polyhedron EDGES fails 5554bug fix: @{ {"hash":{0.1 0.1 0.1},...} } fails (attempts to turn "," into "OR") 5555 -- solution is to not allow "," for OR within associative arrays 5556 5557JmolVersion="14.5.0_2015.10.18" 5558 5559new feature: x = within(0.01, [array of points]) 5560 -- cleans points of duplicates with a tolerance of 0.001 Angstroms 5561 -- allows multiple pmesh faces to be turned into polyhedra using: 5562 5563 faces = [] 5564 for (var i = 1; i <= nPlanes; i++) { 5565 var f = ("$f" + i).getProperty("face") 5566 faces.push(f) 5567 } 5568 polyhedra @1 to @{within(0.01, faces.join())} color white 5569 5570new feature: $pmeshID.getProperty("faces") 5571 -- returns an array of points 5572 -- cleaned so that it is one point per linear edge, regardless of how 5573 it has been slabbed 5574 5575new feature: resolution 0.001 with PMESH and ISOSURFACE planes 5576 -- allows for minimum number of triangles. 5577 5578bug fix: Polyhedra can have missing triangle for hexagonal faces 5579bug fix: calculate symmetry can break Jmol if unit cell has been changed 5580bug fix: DRAW POLYGON front/back nature of winding was reversed. 5581 5582JmolVersion="14.5.0_2015.10.17" 5583 5584bug fix: if (...) \n { .... not working (where brace is on next line) 5585bug fix: CIF reader will read empty second model for IUCr files with terminal data_global block 5586bug fix: polyhedra bonds unitcell can cause error in HTML5 5587bug fix: nucleic backbone should include O atoms on P and C 5588bug fix: nucleic spine should not include C2' 5589bug fix: pmesh/isosurface RESOLUTION 0.0001 with plane can cause loss of some or all of the plane 5590 -- resolution 0.0001 creates just a minimum of triangles to construct the plane. 5591bug fix: set testflag4;isosurface ... ; does not generate normals 5592bug fix: (Application) set refreshing false shows Jmol console in model frame (Java bug??) 5593 5594JmolVersion="14.5.0_2015.10.14" 5595 5596NOTE: GoDaddy's inadvertent forcing of revocation of the secure certificate for Jmol 5597 has disabled ALL applets created since Oct 15, 2014. This is a mandatory upgrade. 5598 5599 5600bug fix: SHOW PROPERTY IDENTIFY crashes Jmol. 5601 5602JmolVersion="14.5.0_2015.10.13" 5603JmolVersion="14.4.0_2015.10.13" 5604JmolVersion="14.3.16_2015.10.13" 5605 5606code: compatibility checks with new brace-less if/for/while 5607 5608note: Use of multi-line IF/END IF, FOR/END FOR, WHILE/END WHILE 5609 is not compatible with newer JavaScript-like single-line non-brace flow: 5610 5611 Java/JavaScript style: 5612 5613 function test () { 5614 for (var i = 0; i < 5; i++) 5615 if (i < 2) 5616 print -i 5617 } 5618 5619 VB style: 5620 5621 function test () 5622 for (var i = 0; i < 5; i++) 5623 if (i < 2) 5624 print -i 5625 end if 5626 end for 5627 end function 5628 5629 The compiler is set to start with assumption that Java/JavaScript 5630 is the active mode but switches to VB style if END XXX is found 5631 5632Note: Use of single-line if (...) ..... else ..... endif is allowed 5633 in either mode. In this syntax, the final "endif" is optional 5634 5635Note: END DATA is not affected 5636 5637JmolVersion="14.3.16_2015.10.12" 5638 5639code fix: debug comments in isosurface solvent slowing it down significantly 5640 5641bug fix: PARALLEL/PROCESS not working 5642bug fix: SHOW DATA does not return model data 5643bug fix: draw CURVE pt1 pt2 does not work 5644bug fix: pmesh command cannot read files from zip files 5645 because "binary" option is set, and FileManager is returning the wrong input stream 5646 5647new feature: unitcell() function 5648 -- returns unitcell as an array in the form [origin, va, vb, vc] 5649 -- first parameter is optional unitcell itself; absence uses current model's unit cell. 5650 -- optional last parameter: scale 5651 -- signatures: 5652 unitcell() // uses current unit cell 5653 unitcell(uc) // copies unit cell 5654 unitcell(uc, "reciprocal") // reciprocal lattice for specified unit cell 5655 unitcell("reciprocal") // reciprocal lattice for current model's unit cell 5656 unitcell(ucconv, "primitive","BCC"|"FCC") // convert conventional to primitive 5657 unitcell("primitive","BCC"|"FCC") 5658 unitcell(ucprim, "conventional","BCC"|"FCC") // convert primitive to conventional 5659 unitcell("conventional","BCC"|"FCC") 5660 unitcell(origin, [va, vb, vc]) // user-defined unit cell; just produces [origin, va, vb, vc] 5661 unitcell(origin, pta, ptb, ptc) // user-defined unit cell using four points 5662 -- compatible with UNITCELL command: 5663 5664 UNITCELL @{unitcell("reciprocal")} 5665 draw unitcell 5666 UNITCELL RESET 5667 5668 5669new feature: point(unitcell, {i, j, k}) 5670 -- returns the Cartesian point corresponding to a specific coordinate in a unit cell system. 5671 -- unitcell is an array of the form [origin, va, vb, vc] 5672 -- {i j k} is a point in the unit cell 5673 -- for general use -- does not require actual setting of the model's unit cell 5674 5675JmolVersion="14.3.16_2015.10.09" 5676 5677bug fix: print 'CCC'.find("SMILES") should throw a ScriptException, not a Java exception 5678 5679new feature: Gaussian log file reader reads spin density scalars as property_spin 5680 5681JmolVersion="14.3.16_2015.10.06" 5682 5683new feature: print within(distance, point, array_of_points) 5684 -- point array distance iterator 5685 -- returns subarray of points (in differing order, probably) of array_of_points 5686 that are within distance of point. 5687 5688bug fix: MRC surface reader: new version of EMAN2 leaves out alpha,beta,gamma; does not load properly 5689 5690bug fix: for (a in {*}) with no VAR fails if a has already been defined as an integer 5691 5692bug fix: better error reporting 5693 5694new feature: load =aflow/AgAu 5695 -- easy access to binary metal alloy CIF files 5696 -- http://aflowlib.mems.duke.edu/users/jmolers/binary_new/%FILE.aflow_binary 5697 5698bug fix: braceless if/for fix from 10.04 5699 5700JmolVersion="14.3.16_2015.10.04" 5701 5702bug fix: changing bond order of X-H using set picking assignBond_2 generates error messages and removes atoms 5703 5704 5705new feature: if, for, and while can all operate using no braces for single-line bodies 5706 -- similar to JavaScript and Java 5707 -- examples: 5708 5709 for(var i = 0; i < 10; i++) 5710 for(var j = 0; j < 10; j++) 5711 print i*j 5712 5713 if (i == 1) 5714 print i 5715 else 5716 print 0 5717 5718bug fix: translucent echo backgrounds not saved in state properly 5719 5720 5721JmolVersion="14.3.16_2015.10.01" 5722 5723bug fix: for (; i < 10; i++) not working 5724bug fix: for (;;i++) not working 5725bug fix: for (;;) not working 5726 5727JmolVersion="14.3.16_2015.10.01" 5728 5729bug fix: hydrogens added to backbone should be part of "backbone" definition 5730 -- no-hydrogen definition is _bb 5731 5732TODO: document ------>>>> 5733 5734new feature: calculate hydrogens TRUE 5735 -- calculates hydrogens and multiple bonding 5736 -- same as 5737 5738 calculate hydrogens 5739 connect aromatic modify 5740 calculate aromatic 5741 5742 -- similar to, but not identical to set pdbAddHydrogens 5743 -- allows reasonable addition of multiple bonds to proteins after loading 5744 5745bug fix: connect aromatic should not touch H atoms or atoms with 4 or more covalent bonds 5746bug fix: calculate hydrogen should consider backbone N sp2 5747bug fix: {backbone} should include attached H atoms 5748bug fix: calculate hydrogens should not place H atoms on water 5749 5750JmolVersion="14.3.16_2015.09.29" 5751 5752note: I am using "map" for "associative array" now 5753 5754 5755new feature: mapOfMaps.array(k) 5756 -- generates an array of maps from a map of maps by 5757 storing all top-level map keys under key k in lower-level map 5758 -- reversed by another .array(k) 5759 -- causes a script exception if mapOfMaps is not a map of maps 5760 5761new feature: arrayOfMaps.array(k) 5762 -- generates a map of maps from an array of maps by 5763 removing each map's key k and using that as the key for that map value 5764 -- reversed by another .array(k) 5765 -- causes a script exception if arrayOfMaps is not an array of maps or key k is not present in all maps 5766 5767JmolVersion="14.3.16_2015.09.28b" 5768 5769bug fix: draw ramachandran broken 5770 5771JmolVersion="14.3.16_2015.09.28" 5772 5773new feature: array.sort("key") 5774 -- sorts an array of associative arrays by the specified associative array key. 5775 -- example: 5776 5777 load sf6.smol 5778 x= _M.moData.mos.select("energy,index where energy<0") 5779 x.sort("energy").reverse 5780 print x 5781 5782 { 5783 "energy" : -0.67001194 5784 "index" : 35 5785 } 5786 { 5787 "energy" : -0.67001194 5788 "index" : 34 5789 } 5790 { 5791 "energy" : -0.67001194 5792 "index" : 33 5793 } 5794 { 5795 "energy" : -0.70143324 5796 "index" : 32 5797 } 5798 ... 5799 5800new feature: JmolSQL xxxx.select("<keys> WHEREIN <clause>") 5801 -- replaces ** idea 5802 -- assumes values of xxxx are themselves associative arrays 5803 -- indicates that the clause should be applied only to the values for the selected keys 5804 -- returns an associative array that holds only those keys for which the clause is true *for them* 5805 -- works also for array xxxx where each element of xxxx is an associative array, 5806 in which case it returns a subarray of xxxx involving the matching values. 5807 -- example: 5808 5809 abc = [ A:[b:1], B:[b:2], C:[b:3, d:50], AA:[b:4] ] 5810 print abc.select("A* wherein b>2").format("JSON") 5811 5812 { "AA": { "b": 4 } } 5813 5814 Compare this to the following, where we are are checking for validity of abc itself: 5815 5816 abc = [ A:[b:1], B:[b:2], C:[b:3, d:50], AA:[b:4] ] 5817 print abc.select("A* where B.b=2").format("JSON") 5818 5819 { "A": { "b": 1 },"AA": { "b": 4 } } 5820 5821 5822 abc2 = [ 5823 [ A:[b:1], B:[b:2], C:[b:3, d:50], AA:[b:4] ], 5824 [ A:[b:11], B:[b:22], C:[b:33, d:5050], AA:[b:40] ] 5825 ] 5826 print abc2.select("A* wherein b>2").format("JSON") 5827 5828 [ { "AA": { "b": 4 } },{ "A": { "b": 11 },"AA": { "b": 40 } } ] 5829 5830new feature: JmolSQL xxxx.select("(<keys>) WHERE/WHEREIN <clause>") 5831 -- parentheses around keys replaces ";" idea 5832 -- indicates to return an array of values rather than a key/value pair 5833 -- works also for array xxxx where each element of xxxx is an array or associative array, 5834 in which case it returns an array of matching values, without keys. 5835 -- example: 5836 5837 load =1ehz/dssr 5838 print _M.dssr.hbonds.select("distance where res_long like '*|C|72|*'") 5839 { 5840 "distance" : 2.832 5841 } 5842 { 5843 "distance" : 2.879 5844 } 5845 { 5846 "distance" : 2.838 5847 } 5848 5849 print _M.dssr.hbonds.select("(distance) where res_long like '*|C|72|*'") 5850 5851 2.832 5852 2.879 5853 2.838 5854 5855 print _M.dssr.hbonds.select("(distance) where res_long like '*|C|72|*'").average 5856 5857 2.8496666 5858 5859 5860JmolSQL 5861 5862JmolSQL is a Jmol math syntax that is designed to query information related to molecular structure. The idea is that associative arrays, with key/value pairs, and especially arrays of associative arrays, are data, and those arrays themselves can be thought of as a mini database. These sorts of data can be found in Jmol in the a model's auxiliary info (variable _M), including validation data returned from LOAD =xxxx/val (_M.validation), sequence domain data returned from LOAD =xxxx/dom (_M.domains), and secondary structure information returned from LOAD =xxxx/dssr (_M.dssr) or LOAD=xxxx/rna3d (_M.rna3d). In addition, the getProperty() function returns a wide variety of data relating to model attributes, including getProperty("atomInfo") and getProperty("bondInfo") among several others. 5863 5864The original conception of JmolSQL was in the context of the getProperty() function -- for example: 5865 5866load $caffeine 5867print getProperty("atomInfo[SELECT atomno,coord WHERE shape LIKE 'trigonal planar']") 5868 5869 { "atomno" : 1 "coord" : {1.312 -1.0479 0.0025} } { "atomno" : 3 "coord" : {1.7906001 0.20809999 9.999999E-4} } ... 5870More recent development widens this use to any array data, and use of the .select() function rather than getProperty() is recommended for general use. Thus, alternatively we can use: 5871 5872print getProperty("atomInfo").select("atomno,coord WHERE shape LIKE 'trigonal planar' ") 5873 5874 5875object.SELECT("keys WHERE/WHEREIN phrase") 5876There are three parts to JmolSQL: object, keys, and an optional WHERE or WHEREIN phrase. The object can be either an associative array [key1:value1, key2:value2, key3:value3] or an array of associative arrays, usually all having the same set of keys. 5877 5878Associative Arrays 5879When the top-level object is an associative array, .select() can be used to select 5880out subsets of that array, either as a single associative array or as an array of values. 5881 5882abc.select("...") 5883The simplest form of .select() returns a subset of abc. Wild cards can be interspersed with additional keys, for example, "a*,b" or "*_id". In each such case, the case-sensitive LIKE operation is used to match keys. 5884 5885abc = [ A:[b:1],B:[b:2],AA:[b:3, d:50] ] 5886print abc.select("A").format("JSON") 5887 5888{ "A": { "b": 1 } } 5889abc = [ A:[b:1],B:[b:2],AA:[b:3, d:50] ] 5890print abc.select("A*").format("JSON") 5891 5892{ "A": { "b": 1 },"AA": { "b": 3,"d": 50 } } 5893abc.select("(...)") 5894Using parentheses around the list of keys delivers a list of values of b for only the the subset of xyz for which a=1: 5895 5896abc = [ A:[b:1],B:[b:2],AA:[b:3, d:50] ] 5897print abc.select("(A,B)").format("JSON") 5898 5899[ { "b": 2 },{ "b": 1 } ] 5900 5901Arrays of Associative Arrays 5902In addition to operating on an associative array directly, JmolSQL can operate on an array of associative arrays. Generally we assume here that the elements of that array are associative arrays that all have the same set of keys. This is the essence of a database. Whether or not the associative arrays have the same keys is not important for Jmol. For example, the getProperty("atomInfo") returns an array giving the information for each atom that is loaded: 5903 5904load $caffeine 5905x = getProperty("atomInfo") 5906print x.count 5907 590824 5909print x[1] 5910 5911{ "_ipt" : 0 "atomIndex" : 0 "atomno" : 1 "bondCount" : 3 "clickabilityFlags" : 48 "colix" : -32761 "color" : "[x3050f8]" "coord" : {1.312 -1.0479 0.0025} "element" : "nitrogen" "elemno" : 7 "formalCharge" : 0 "info" : "N1 #1" "model" : "1" "partialCharge" : 0.0 "radius" : 0.7416667 "shape" : "trigonal planar" "spacefill" : 0.3565 "sym" : "N" "visibilityFlags" : 63 "visible" : true "x" : 1.312 "y" : -1.0479 "z" : 0.0025 } 5912These data can be "queried" using JmolSQL. 5913 5914xyz.select("...") 5915Creates the sublist of associative arrays having the selected subset of keys: 5916 5917xyz = [ [a:1,b:11],[a:2,b:22],[a:3,b:33] ] 5918print xyz.select("b").format("JSON") 5919 5920[ { "b": 11 },{ "b": 22 },{ "b": 33 } ] 5921print x.select("atomno,element") 5922 { "atomno" : 1 "element" : "nitrogen" } { "atomno" : 2 "element" : "carbon" } { "atomno" : 3 "element" : "carbon" } { "atomno" : 4 "element" : "oxygen" } ... 5923xyz.select("(...)") 5924Adding parentheses creates a list of only the values for the specified keys: 5925xyz = [ [a:1,b:11],[a:2,b:22],[a:3,b:33] ] 5926print xyz.select("(b)").format("JSON") 5927 5928[ 11,22,33 ] 5929xyz = [ [a:1,b:11],[a:2,b:22],[a:3,b:33] ] 5930print xyz.select("(a,b)").format("JSON") 5931 5932[ 11,1,22,2,33,3 ] 5933load $caffeine 5934print getProperty("atomInfo").select("(element)").pivot 5935{ "carbon" : 8 "hydrogen" : 10 "nitrogen" : 4 "oxygen" : 2 } 5936The assumption when using (keys) is that you want to know all these values, 5937but you don't care what order they are in (because that will not be predictable) 5938and you don't care about their exact context. An example is a list of bonds for 5939which we just want to know all the atoms involved, but the atoms are listed 5940under "atom1" and "atom2" in each bond array. 5941 5942load =1ehz/dssr 5943select on @{_M.dssr.hbonds.select("(atom1_id,atom2_id)")} 5944 5945206 atoms selected 5946 5947Using WHERE 5948WHERE is used to select a subset of the elements of an array based on specific 5949key-value relationships. 5950 5951xyz.select("... WHERE ...") 5952Delivers all key/value pairs in the subset of xyz element associative arrays 5953for which the WHERE clause is true for that element. 5954 5955xyz = [ [a:1,b:11],[a:2,b:22],[a:3,b:33] ] 5956print xyz.select("* where a<3 and b<20").format("JSON") 5957 5958[ { "b": 11,"a": 1 } ] 5959load $caffeine 5960print getProperty("atomInfo").select("atomno,element WHERE shape LIKE 'trigonal planar' ").format("JSON") 5961 5962[ { "element": "nitrogen","atomno": 1 },{ "element": "carbon","atomno": 3 },{ "element": "nitrogen","atomno": 5 },{ "element": "carbon","atomno": 7 },{ "element": "carbon","atomno": 9 },{ "element": "nitrogen","atomno": 10 },{ "element": "carbon","atomno": 12 },{ "element": "carbon","atomno": 13 } ] 5963 5964 5965xyz.select("(...) where ...") 5966Using parentheses around the list of keys delivers a list of 5967values for only the subset of xyz for which the WHERE clause is true: 5968 5969xyz = [ [a:1,b:11],[a:2,b:22],[a:3,b:33] ] 5970print xyz.select("(b) where a>1").format("JSON") 5971 5972[ 22,33 ] 5973load $caffeine 5974 print getProperty("atomInfo").select("(shape) WHERE shape").pivot 5975{ "bent" : 1 "tetrahedral" : 3 "trigonal planar" : 8 } 5976Note that "WHERE shape" here just excludes all cases where shape is the empty string, since empty strings in Jmol evaluate as FALSE. (In this case that involves hydrogen atoms.) 5977 5978For example, finding all the hydrogen bonds created by DSSR for a given residue: 5979 5980load =1ehz/dssr 5981x = _M.dssr.hbonds.select("(distance) where res_long like '*|A|C|72|*'"); 5982print x.format("JSON") 5983print format("%5.3f",x.average) 5984 5985[ 2.832,2.879,2.838 ] 2.850 5986Array "Drilling" 5987 5988WHERE will "drill down" through arrays of arrays to find 5989elements that are associative arrays, returning a flat array of those objects: 5990 5991xyz = [ [[a:1,b:11], [a:0,b:0]],[[[a:2,b:22]]],[[a:3,b:33,aa:44]] ] 5992print xyz.select("a* where a>0").format("JSON") 5993 5994[ { "a": 1 },{ "a": 2 },{ "a": 3,"aa": 44 } ] 5995xyz = [ [[a:1,b:11], [a:0,b:0]],[[[a:2,b:22]]],[[a:3,b:33,aa:44]] ] 5996print xyz.select("(b) where a>0").format("JSON") 5997 5998[ 11,22,33 ] 5999 6000WHERE vs. WHEREIN 6001Starting with Jmol 14.4, JmolSQL includes an additional option, WHEREIN. This option 6002allows selecting specific key/value pairs for which the value is itself an associative 6003array, and *that array* has a specific set of key/value relationships. Thus, the 6004clause is checked one level deeper in the structure. 6005 6006For example, given the associative array 6007 6008abc = [key_1:[type:"a", i:1],key_2:[type:"b", i:2],key_3:[type:"a", i:3]] 6009 6010we can select out only those keys for which type='a': 6011 6012abc = [key_1:[type:"a", i:1],key_2:[type:"b", i:2],key_3:[type:"a", i:3]] 6013print abc.select("* WHEREIN type='a'").format("JSON"); 6014 6015{ "key_3": { "i": 3,"type": "a" },"key_1": { "i": 1,"type": "a" } } 6016All of the options that involve WHERE also apply to WHEREIN. For example, 6017multiple keys can be specified, and keys can be surrounded by parentheses 6018to return just the values instead of key/value pairs: 6019 6020abc = [key_1:[type:"a", i:1],key_2:[type:"b", i:2],key_3:[type:"a", i:3]] 6021print abc.select("(key_1,key2) WHEREIN type='a'").format("JSON"); 6022 6023[ { "i": 1,"type": "a" } ] 6024In addition, WHEREIN can be applied to arrays as well as associative arrays. 6025In this case, the WHEREIN phrase applies to the elements of that array, which 6026are assumed to be associative arrays. For example, we can get a list of just 6027the occupied orbitals produced by Gaussian that are of a given symmetry: 6028 6029load http://chemapps.stolaf.edu/jmol/jsmol/data/no2_nbo.log.gz 2 filter "alpha" 6030print _M.moData.select("mos wherein occupancy>0").select("(symmetry)").pivot 6031 6032{ "(A1)--O" : 6 "(A2)--O" : 1 "(B1)--O" : 1 "(B2)--O" : 4 } 6033Note that this use of WHEREIN with arrays in this way can also be accomplished 6034more directly with WHERE: 6035 6036load http://chemapps.stolaf.edu/jmol/jsmol/data/no2_nbo.log.gz 2 filter "alpha" 6037print _M.moData.mos.select("(symmetry) where occupancy>0").pivot 6038 6039{ "(A1)--O" : 6 "(A2)--O" : 1 "(B1)--O" : 1 "(B2)--O" : 4 } 6040load http://chemapps.stolaf.edu/jmol/jsmol/data/no2_nbo.log.gz 2 filter "alpha" 6041x= _M.moData.select("mos wherein occupancy>0 and symmetry like '(B2)*' ") 6042print x.select("(index)").format("JSON") 6043 6044[ 1,5,8,10 ] 6045 6046 6047 6048 6049After taking a close look at this, I decided this was getting too cryptic. I think this is much simpler. This long email message summarizes the JmolSQL business, starting with Jmol 11.3.16_2015.09.28. See http://chemapps.stolaf.edu/jmol/zip/jmol-14.3.16_2015.09.28.zip 6050 6051JmolSQL 6052JmolSQL is a Jmol math syntax that is designed to query information related to molecular structure. The idea is that associative arrays, with key/value pairs, and especially arrays of associative arrays, are data, and those arrays themselves can be thought of as a mini database. These sorts of data can be found in Jmol in the a model's auxiliary info (variable _M), including validation data returned from LOAD =xxxx/val (_M.validation), sequence domain data returned from LOAD =xxxx/dom (_M.domains), and secondary structure information returned from LOAD =xxxx/dssr (_M.dssr) or LOAD=xxxx/rna3d (_M.rna3d). In addition, the getProperty() function returns a wide variety of data relating to model attributes, including getProperty("atomInfo") and getProperty("bondInfo") among several others. 6053 6054The original conception of JmolSQL was in the context of the getProperty() function -- for example: 6055 6056load $caffeine 6057print getProperty("atomInfo[SELECT atomno,coord WHERE shape LIKE 'trigonal planar']") 6058 6059 { 6060 "atomno" : 1 6061 "coord" : {1.312 -1.0479 0.0025} 6062 } 6063 { 6064 "atomno" : 3 6065 "coord" : {1.7906001 0.20809999 9.999999E-4} 6066 } 6067 ... 6068 6069More recent development widens this use to any array data, and use of the .select() function rather than getProperty() is recommended for general use. Thus, alternatively we can use: 6070 6071print getProperty("atomInfo").select("atomno,coord WHERE shape LIKE 'trigonal planar' ") 6072 6073 6074object.SELECT("keys WHERE/WHEREIN phrase") 6075There are three parts to JmolSQL: object, keys, and an optional WHERE or WHEREIN phrase. The object can be either an associative array [key1:value1, key2:value2, key3:value3] or an array of associative arrays, usually all having the same set of keys. 6076 6077Associative Arrays 6078When the top-level object is an associative array, .select() can be used to select 6079out subsets of that array, either as a single associative array or as an array of values. 6080 6081abc.select("...") 6082The simplest form of .select() returns a subset of abc. Wild cards can be interspersed with additional keys, for example, "a*,b" or "*_id". In each such case, the case-sensitive LIKE operation is used to match keys. 6083 6084abc = [ A:[b:1],B:[b:2],AA:[b:3, d:50] ] 6085print abc.select("A").format("JSON") 6086 6087{ "A": { "b": 1 } } 6088 6089abc = [ A:[b:1],B:[b:2],AA:[b:3, d:50] ] 6090print abc.select("A*").format("JSON") 6091 6092{ "A": { "b": 1 },"AA": { "b": 3,"d": 50 } } 6093 6094abc.select("(...)") 6095Using parentheses around the list of keys delivers a list of values of b for only the the subset of xyz for which a=1: 6096 6097abc = [ A:[b:1],B:[b:2],AA:[b:3, d:50] ] 6098print abc.select("(A,B)").format("JSON") 6099 6100[ { "b": 2 },{ "b": 1 } ] 6101 6102 6103Arrays of Associative Arrays 6104In addition to operating on an associative array directly, JmolSQL can operate on an array of associative arrays. Generally we assume here that the elements of that array are associative arrays that all have the same set of keys. This is the essence of a database. Whether or not the associative arrays have the same keys is not important for Jmol. For example, the getProperty("atomInfo") returns an array giving the information for each atom that is loaded: 6105 6106load $caffeine 6107x = getProperty("atomInfo") 6108print x.count 6109 611024 6111 6112print x[1] 6113 6114{ 6115 "_ipt" : 0 6116 "atomIndex" : 0 6117 "atomno" : 1 6118 "bondCount" : 3 6119 "clickabilityFlags" : 48 6120 "colix" : -32761 6121 "color" : "[x3050f8]" 6122 "coord" : {1.312 -1.0479 0.0025} 6123 "element" : "nitrogen" 6124 "elemno" : 7 6125 "formalCharge" : 0 6126 "info" : "N1 #1" 6127 "model" : "1" 6128 "partialCharge" : 0.0 6129 "radius" : 0.7416667 6130 "shape" : "trigonal planar" 6131 "spacefill" : 0.3565 6132 "sym" : "N" 6133 "visibilityFlags" : 63 6134 "visible" : true 6135 "x" : 1.312 6136 "y" : -1.0479 6137 "z" : 0.0025 6138 } 6139 6140These data can be "queried" using JmolSQL. 6141 6142xyz.select("...") 6143Creates the sublist of associative arrays having the selected subset of keys: 6144 6145xyz = [ [a:1,b:11],[a:2,b:22],[a:3,b:33] ] 6146print xyz.select("b").format("JSON") 6147 6148[ { "b": 11 },{ "b": 22 },{ "b": 33 } ] 6149 6150print x.select("atomno,element") 6151 { 6152 "atomno" : 1 6153 "element" : "nitrogen" 6154 } 6155 { 6156 "atomno" : 2 6157 "element" : "carbon" 6158 } 6159 { 6160 "atomno" : 3 6161 "element" : "carbon" 6162 } 6163 { 6164 "atomno" : 4 6165 "element" : "oxygen" 6166 } 6167 ... 6168xyz.select("(...)") 6169Adding parentheses creates a list of only the values for the specified keys: 6170 6171xyz = [ [a:1,b:11],[a:2,b:22],[a:3,b:33] ] 6172print xyz.select("(b)").format("JSON") 6173 6174[ 11,22,33 ] 6175 6176xyz = [ [a:1,b:11],[a:2,b:22],[a:3,b:33] ] 6177print xyz.select("(a,b)").format("JSON") 6178 6179[ 11,1,22,2,33,3 ] 6180 6181load $caffeine 6182print getProperty("atomInfo").select("(element)").pivot 6183{ 6184 "carbon" : 8 6185 "hydrogen" : 10 6186 "nitrogen" : 4 6187 "oxygen" : 2 6188 } 6189 6190The assumption when using (keys) is that you want to know all these values, 6191but you don't care what order they are in (because that will not be predictable) 6192and you don't care about their exact context. An example is a list of bonds for 6193which we just want to know all the atoms involved, but the atoms are listed 6194under "atom1" and "atom2" in each bond array. 6195 6196load =1ehz/dssr 6197select on @{_M.dssr.hbonds.select("(atom1_id,atom2_id)")} 6198 6199206 atoms selected 6200 6201 6202Using WHERE 6203WHERE is used to select a subset of the elements of an array based on specific 6204key-value relationships. 6205 6206xyz.select("... WHERE ...") 6207Delivers all key/value pairs in the subset of xyz element associative arrays 6208for which the WHERE clause is true for that element. 6209 6210xyz = [ [a:1,b:11],[a:2,b:22],[a:3,b:33] ] 6211print xyz.select("* where a<3 and b<20").format("JSON") 6212 6213[ { "b": 11,"a": 1 } ] 6214 6215load $caffeine 6216print getProperty("atomInfo").select("atomno,element WHERE shape LIKE 'trigonal planar' ").format("JSON") 6217 6218[ { "element": "nitrogen","atomno": 1 },{ "element": "carbon","atomno": 3 },{ "element": "nitrogen","atomno": 5 },{ "element": "carbon","atomno": 7 },{ "element": "carbon","atomno": 9 },{ "element": "nitrogen","atomno": 10 },{ "element": "carbon","atomno": 12 },{ "element": "carbon","atomno": 13 } ] 6219 6220 6221xyz.select("(...) where ...") 6222Using parentheses around the list of keys delivers a list of 6223values for only the subset of xyz for which the WHERE clause is true: 6224 6225xyz = [ [a:1,b:11],[a:2,b:22],[a:3,b:33] ] 6226print xyz.select("(b) where a>1").format("JSON") 6227 6228[ 22,33 ] 6229 6230load $caffeine 6231 print getProperty("atomInfo").select("(shape) WHERE shape").pivot 6232{ 6233 "bent" : 1 6234 "tetrahedral" : 3 6235 "trigonal planar" : 8 6236 } 6237 6238Note that "WHERE shape" here just excludes all cases where shape is the empty string, since empty strings in Jmol evaluate as FALSE. (In this case that involves hydrogen atoms.) 6239 6240For example, finding all the hydrogen bonds created by DSSR for a given residue: 6241 6242load =1ehz/dssr 6243x = _M.dssr.hbonds.select("(distance) where res_long like '*|A|C|72|*'"); 6244print x.format("JSON") 6245print format("%5.3f",x.average) 6246 6247[ 2.832,2.879,2.838 ] 62482.850 6249 6250Array "Drilling" 6251 6252WHERE will "drill down" through arrays of arrays to find 6253elements that are associative arrays, returning a flat array of those objects: 6254 6255xyz = [ [[a:1,b:11], [a:0,b:0]],[[[a:2,b:22]]],[[a:3,b:33,aa:44]] ] 6256print xyz.select("a* where a>0").format("JSON") 6257 6258[ { "a": 1 },{ "a": 2 },{ "a": 3,"aa": 44 } ] 6259 6260xyz = [ [[a:1,b:11], [a:0,b:0]],[[[a:2,b:22]]],[[a:3,b:33,aa:44]] ] 6261print xyz.select("(b) where a>0").format("JSON") 6262 6263[ 11,22,33 ] 6264 6265 6266WHERE vs. WHEREIN 6267Starting with Jmol 14.4, JmolSQL includes an additional option, WHEREIN. This option 6268allows selecting specific key/value pairs for which the value is itself an associative 6269array, and *that array* has a specific set of key/value relationships. Thus, the 6270clause is checked one level deeper in the structure. 6271 6272For example, given the associative array 6273 6274abc = [key_1:[type:"a", i:1],key_2:[type:"b", i:2],key_3:[type:"a", i:3]] 6275 6276we can select out only those keys for which type='a': 6277 6278abc = [key_1:[type:"a", i:1],key_2:[type:"b", i:2],key_3:[type:"a", i:3]] 6279print abc.select("* WHEREIN type='a'").format("JSON"); 6280 6281{ "key_3": { "i": 3,"type": "a" },"key_1": { "i": 1,"type": "a" } } 6282 6283All of the options that involve WHERE also apply to WHEREIN. For example, 6284multiple keys can be specified, and keys can be surrounded by parentheses 6285to return just the values instead of key/value pairs: 6286 6287abc = [key_1:[type:"a", i:1],key_2:[type:"b", i:2],key_3:[type:"a", i:3]] 6288print abc.select("(key_1,key2) WHEREIN type='a'").format("JSON"); 6289 6290[ { "i": 1,"type": "a" } ] 6291 6292In addition, WHEREIN can be applied to arrays as well as associative arrays. 6293In this case, the WHEREIN phrase applies to the elements of that array, which 6294are assumed to be associative arrays. For example, we can get a list of just 6295the occupied orbitals produced by Gaussian that are of a given symmetry: 6296 6297load http://chemapps.stolaf.edu/jmol/jsmol/data/no2_nbo.log.gz 2 filter "alpha" 6298print _M.moData.select("mos wherein occupancy>0").select("(symmetry)").pivot 6299 6300{ 6301 "(A1)--O" : 6 6302 "(A2)--O" : 1 6303 "(B1)--O" : 1 6304 "(B2)--O" : 4 6305 } 6306 6307Note that this use of WHEREIN with arrays in this way can also be accomplished 6308more directly with WHERE: 6309 6310load http://chemapps.stolaf.edu/jmol/jsmol/data/no2_nbo.log.gz 2 filter "alpha" 6311print _M.moData.mos.select("(symmetry) where occupancy>0").pivot 6312 6313{ 6314 "(A1)--O" : 6 6315 "(A2)--O" : 1 6316 "(B1)--O" : 1 6317 "(B2)--O" : 4 6318 } 6319 6320load http://chemapps.stolaf.edu/jmol/jsmol/data/no2_nbo.log.gz 2 filter "alpha" 6321x= _M.moData.select("mos wherein occupancy>0 and symmetry like '(B2)*' ") 6322print x.select("(index)").format("JSON") 6323 6324[ 1,5,8,10 ] 6325 6326 6327TODO: document <<<<<------- 6328 6329 6330JmolVersion="14.3.16_2015.09.25" 6331 6332bug fix: HBONDS DELETE broken since 14.1.2 6333 6334JmolVersion="14.3.16_2015.09.23" 6335 6336bug fix: within(0.0, {0 0 0}) fails when no atoms in model 6337 6338JmolVersion="14.3.16_2015.09.22" 6339 6340bug fix: for(var x in ...) does not respect "var" 6341 6342bug fix: x.format("JSON") fails for recursive x 6343 -- arrays or associative arrays can be recursive 6344 -- detection of recursion during SHOW, x.format("JSON"), and @x (deep copy) 6345 now delivers empty array or associative array 6346 -- works also with expressions using @{...}: x = @{y.select("* where atomno > 10")} 6347 6348 -- example: 6349 6350 $ a = [[1,2],3] 6351 $ a..2 = a 6352 $ print a.format("JSON") 6353 6354 [ [ 1,2 ],[ [ 1,2 ],[ ] ] ] 6355 6356 $ a = [b:1] 6357 $ a.b = a 6358 $ print a.format("JSON") 6359 6360 { "b": { "b": { } } } 6361 6362 $ y = @x 6363 $ show y 6364 6365 y = { "b":{ "b":{ } } } 6366 6367 6368new feature: x = @a 6369 -- deep copy for a = array or associative array 6370 -- @a for string variable still gets the value of the variable named by variable a 6371 -- math environment only, not SELECT 6372 6373new feature: for allows one continuation line, as in JavaScript and Java 6374 -- for example: 6375 for (i = 1; i <= 3; i++) 6376 print i; 6377 6378bug fix: for (key in hash){...} fails upon functional iteration (deepCopy) 6379 -- code was reusing the FOR variable when it should have been caching it in the context stack 6380 6381JmolVersion="14.3.16_2015.09.21" 6382 6383new feature: Raster3D triangle-only file reader (for DSSR cartoon-block representation) 6384 -- see http://skuld.bmsc.washington.edu/raster3d/html/render.html 6385 6386bug fix: minor fixes for DSSR 6387 6388bug fix: print within(0, "XXX", ...) ignores the "XXX" entirely. Should throw an error (Ron Mignery) 6389bug fix: print within(0, "vdw", ...) ignores "vdw"; should accept that as "vanderwaal" 6390bug fix: print within(-1.0, "vanderwaal", ...) ignores "vanderwaal" and does a fractional-coordinate calculation 6391 6392JmolVersion="14.3.16_2015.09.20" 6393 6394FEATURE CHANGE: 3DNA DSSR has switched over to JSON; some array names are changed. 6395 6396 6397TODO: document ----->>> 6398 6399new feature: print @1.label("%[unitid]") 6400 -- generates unit IDs for atoms or residues 6401 -- unit IDs are a proposed general standard for representing atoms and residues in biomolecules 6402 -- see http://rna.bgsu.edu/main/rna-3d-hub-help/unit-ids 6403 -- options follow "-": 6404 6405 $ print {atomno=3}.label("%[unitid]") // includes residue and atom 6406 |1|A|G|1|OP1||| 6407 6408 $ print {atomno=3}.label("%[unitid-r]") // residue only 6409 |1|A|G|1|||| 6410 6411 $ print {atomno=3}.label("%[unitid-mr]") // adds model id 6412 1EHZ|1|A|G|1|||| 6413 6414 $ print {atomno=3}.label("%[unitid-mra]") // full unitID 6415 1EHZ|1|A|G|1|OP1||| 6416 6417 $ print {atomno=3}.label("%[unitid-mrat]") // full unitID, right-trimmed 6418 1EHZ|1|A|G|1|OP1 6419 6420 -- Note that the full 8-line unit ID is produced under all circumstances. 6421 This is important, because string-matching of unit ids will not work 6422 without all fields completed. For example: 6423 6424 |1|A|G|1 6425 6426 would match 6427 6428 |1|A|G|11 6429 6430 without the closing "|". Likewise, 6431 6432 |1|A|G|11 6433 6434 is not a match for the insertion residue 6435 6436 |1|A|G|11|||3| 6437 6438 -- [Editorial note: I agree that it was ill-advised to put the insertion 6439 code at the end. This makes it impossible to efficiently match 6440 residues in full-atom unit IDs.] 6441 6442 -- Note that in an actual atom label, one needs to add "\n" at the end 6443 and have the label in quotes in order to avoid having "|" mean "new line" 6444 6445 label "%[unitid]\n" 6446 6447 not just 6448 6449 label %[unitid] 6450 6451 This is a consequence of having defined "|" as new line early on in Jmol 6452 development. 6453 6454bug fix: quoted labels containing \n are supposed to ignore | as new-line char 6455 6456new feature: select shortcuts for nucleic acid structures 6457 -- for example: select junctions; select kissingloops 6458 -- activated after load =xxxx/dssr or calculate structure dssr 6459 -- includes: 6460 "@bulges within(dssr,'bulges')", 6461 "@coaxStacks within(dssr,'coaxStacks')", 6462 "@hairpins within(dssr,'hairpins')", 6463 "@hbonds within(dssr,'hbonds')", 6464 "@helices within(dssr,'helices')", 6465 "@iloops within(dssr,'iloops')", 6466 "@isoCanonPairs within(dssr,'isoCanonPairs')", 6467 "@junctions within(dssr,'junctions')", 6468 "@kissingLoops within(dssr,'kissingLoops')", 6469 "@multiplets within(dssr,'multiplets')", 6470 "@nonStack within(dssr,'nonStack')", 6471 "@nts within(dssr,'nts')", 6472 "@naChains within(dssr,'naChains')", 6473 "@pairs within(dssr,'pairs')", 6474 "@ssSegments within(dssr,'ssSegments')", 6475 "@stacks within(dssr,'stacks')", 6476 "@stems within(dssr,'stems')", 6477 6478 6479TODO: document <<<<<------- 6480 6481JmolVersion="14.3.16_2015.09.15" 6482 6483bug fix: JSME's noncanonical SMILES does not match Jmol's standard SMILES for aromatics 6484 -- solution is to use /noncanonical/ with find(). 6485 6486bug fix: JSmol does not automatically start non-English language 6487 6488 6489TODO: document ------>>> 6490 6491new feature: SMILES /noncanonical/ 6492 -- matches Jmol's aromatic with JSME's "noncanonical" aromatic 6493 $ load $aspirin 6494 $ show smiles 6495 c1=cc=cc2=c1C(O)=O.O2C(C)=O 6496 $ print {*}.find("smiles", "/noncanonical/C1=CC=CC(OC(C)=O)=C1C(O)=O") 6497 ({0:20}) 6498 $ print "c1=cc=cc2=c1C(O)=O.O2C(C)=O".find("smiles", "/noncanonical/C1=CC=CC(OC(C)=O)=C1C(O)=O") 6499 13 6500 6501new feature: {*}.find("SMILES", "NOAROMATIC") 6502 -- creates nonaromatic (noncanonical) SMILES 6503 6504new feature: JmolSQL x.select("...") 6505 -- shortcut for x.getProperty("[select ... ]") 6506 -- x should by an associative array {key:value,..} or a sequential array [a,b,c,d] 6507 6508new feature: JmolSQL {associative array}.select("xxx** where...") 6509 -- double * indicates desire to return full sub-arrays, with keys 6510 -- "all keys starting with "xxx"; 6511 -- uses LIKE 6512 -- can be at beginning or end or both: xxx**, **xxx, **xxx** 6513 -- WHERE clause is optional 6514 -- similar to [array].select("** where 6515 6516 6517 6518 6519TODO: document <<<<<------- 6520 6521JmolVersion="14.3.16_2015.09.14" 6522 6523bug fix: load data [2D mol structure...] filter "2D" not working 6524bug fix: Crystallographic Open Database CIF files have unusual atom_site_label ("MgT") 6525 and no atom_site_type_symbol, leading to missing element assignments 6526 6527JmolVersion="14.3.16_2015.09.09" 6528 6529#ignore: 6530#new feature: SMILES/SMARTS atom designations [C(xxxx)] 6531# -- allows pointing to the same atom without connection numbers 6532# -- (xxxx) may be anything, including just () 6533# -- definition may be anywhere in bracketed atom specification 6534# -- any additional primitives in referring expression will be ignored 6535# -- involves only a very simple addition to parser code 6536# -- Jmol is not currently creating these strings, just interpreting them 6537# -- rationale: 6538# 6539# One basic aspect of SMILES is that it efficiently uses numbers to 6540# indicate connectivity using a process of "opening" bonds and "closing" them. 6541# Along with radical (.) notation, this is totally sufficient for describing 6542# any connected network of atoms, including situations where the ordering 6543# of connections is critical (e.g., in describing stereochemistry). Basically, 6544# one can simply list all the atoms in an arbitrary order as single-atom 6545# components (separated by "."), then assign bonds as desired, in whatever 6546# order is desired. 6547# 6548# The problem comes when attempting to indicate stereochemistry for 6549# centers with more than six substituents or with geometries that are 6550# outside the standard set of AL, TH, TP, SP, and OH. In such cases, 6551# there may arise situations where the ordering of unbonded substituents 6552# will be critical. An example is crystal structures of metals and metal 6553# alloys. In this situation there are no covalent bonds. The need is to 6554# be able to compare two such crystal structures. 6555# 6556# The solution is to create SMARTS and SMILES strings for complex 6557# "atomic environments" consisting of a central atom and any number of 6558# nearby atoms, using a cutoff radius rather than a bonding pattern. 6559# One possibility is to create a "pseudobond" that connects the central 6560# atom to all of its connected atoms, but this is not really necessary and 6561# slows processing significantly. Instead, the [@PHn] syntax proposed here 6562# allows the polyhedral environment to be specified only for the polyhedron 6563# itself, exclusive of the central atom. 6564# 6565# By providing a means of referring to a specific previously defined atom in a 6566# SMILES or SMARTS string, we can allow an atom in such an arrangement 6567# to be part of two different polyhedra. 6568# 6569# Thus, although isolated polySMARTS can be implemented without atom referents, 6570# extending that to more complex multi-atom polySMARTS searches requires them. 6571# 6572# -- example, simple branched organic 6573# 6574# $ load $t-butylmethylether 6575# $ select on search("[O][C(a)H0].[C(a)]C") 6576# 6577# 5 atoms selected 6578# 6579# same as 6580# 6581# $ select on search("[O][CH0](C)") 6582# 6583# -- note that [C(2)] and [O(2)] are not sensible and may be disallowed. 6584# 6585 6586code: javajs.util reconciled with swingjs project 6587 6588bug fix: polyhedra.stereoSmiles --> polyhedra.polySmiles 6589 6590new feature: polyhedron.polySmiles adds central atom 6591 6592 -- example: 6593 6594 load SF6.smol -1 6595 polyhedra 6596 calculate symmetry polyhedra 6597 x = {polyhedra}.polyhedra.polySmiles 6598 print x 6599 6600 //* S1 #1 *// [S@PH6]. 6601 //* F6 #7 *// [F]1234. 6602 //* F2 #3 *// [F]5672. 6603 //* F3 #4 *// [F]849%10. 6604 //* F4 #5 *// [F]%11%10%126. 6605 //* F1 #2 *// [F]937%12. 6606 //* F5 #6 *// [F]8%1151 6607 6608 print polyhedron(x).atomname 6609 6610 S1 6611 6612JmolVersion="14.3.16_2015.09.08" 6613 6614code: Efficient JSON parser javajs.util.JSONParser 6615 -- requires object being parsed to be an object (bounded by "{" and "}") 6616 6617JmolVersion="14.3.16_2015.09.06" 6618 6619new feature: 3DNA DSSR JSON mode 6620 -- http://x3dna.bio.columbia.edu/dssr/report.php?id=1ehz&opts=--more%20--json=ebi-no-str-id 6621 -- uses unit ids 6622 -- preliminary version is /dssr1 but will replace /dssr 6623 6624 load =1ehz/dssr1 6625 cartoons only; 6626 color @{within(dssr,"junctions")} blue 6627 color @{within(dssr,"hairpins")} white 6628 6629new feature: JSON dssr loading and interpretation 6630 load =1ehz 6631 dssr = eval(load("1ehz.dssr.json")); 6632 y = within(dssr.junctions) 6633 color @y blue 6634 6635bug fix: dssr = "testing" works, but then print dssr just prints "DSSR" 6636 -- was true for all within() function keywords, such as substructure, search, sequence, etc. 6637 6638new feature: select within("1ehz|1|A|G|45||||") 6639new feature: print within("1ehz|1|A|G|45||||") 6640 -- unit IDs 6641 -- see http://rna.bgsu.edu/main/rna-3d-hub-help/unit-ids 6642 -- used for annotations, validations, dssr, and rna-3d processing 6643 -- pdbid|model|chain|RESNAME|resno|ATOMNAME|altcode|inscode|symmetry 6644 -- can truncate trailing (but not leading) pipe symbols 6645 1ehz|1|A|G|15, |1|A|G|15|C2 6646 -- requires at minimum a model number, chain, and residue number 6647 |1|A||15 6648 -- ATOMNAME blank indicates full residue, with altcode indicating "this alt_id or no alt_id" (a configuration) 6649 -- ATOMNAME nonblank indicates one atom, with altcode indicating "exactly this alt_id" (a location) 6650 -- can be multiple, white space, comma, "]", "[", and double quote ignored 6651 1ehz|1|A|G|15||||,1ehz|1|A|U|59||||,1ehz|1|A|C|60||| 6652 6653 // Unit Identifier Specification 6654 // 6655 // We describe the type and case sensitivity of each field in the list below. In addition, we list which item in the mmCIF the data for each field comes from. We also show several examples of the IDs and their interpretation at the end. 6656 // 6657 // Unit ids can also be used to identify atoms. When identifying entire residues, the atom field is left blank. 6658 // 6659 // PDB ID Code 6660 // From PDBx/mmCIF item: _entry.id 6661 // 4 characters, case-insensitive 6662 // Model Number 6663 // From PDBx/mmCIF item: _atom_site.pdbx_PDB_model_num 6664 // integer, range 1-99 6665 // Chain ID 6666 // From PDBx/mmCIF item: _atom_site.auth_asym_id 6667 // <= 4 character, case-sensitive 6668 // Residue/Nucleotide/Component Identifier 6669 // From PDBx/mmCIF item: _atom_site.label_comp_id 6670 // 1-3 characters, case-insensitive 6671 // Residue/Nucleotide/Component Number 6672 // From PDBx/mmCIF item: _atom_site.auth_seq_id 6673 // integer, range: -999..9999 (there are negative residue numbers) 6674 // Atom Name (Optional, default: blank) 6675 // From PDBx/mmCIF item: _atom_site.label_atom_id 6676 // 0-4 characters, case-insensitive 6677 // blank means all atoms 6678 // Alternate ID (Optional, default: blank) 6679 // From PDBx/mmCIF item: _atom_site.label_alt_id 6680 // Default value: blank 6681 // One of ['A', 'B', '0'], case-insensitive 6682 // Insertion Code (Optional, default: blank) 6683 // From PDBx/mmCIF item: _atom_site.pdbx_PDB_ins_code 6684 // 1 character, case-insensitive 6685 // Symmetry Operation (Optional, default: 1_555) 6686 // As defined in PDBx/mmCIF item: _pdbx_struct_oper_list.name 6687 // 5-6 characters, case-insensitive 6688 // For viral icosahedral structures, use \u201CP_\u201D + model number instead of symmetry operators. For example, 1A34|1|A|VAL|88|||P_1 6689 // 6690 // Examples 6691 // 6692 // Chain A in 1ABC = \u201C1ABC|1|A\u201D 6693 // Nucleotide U(10) chain B of 1ABC = \u201C1ABC|1|B|U|10\u201D 6694 // Nucleotide U(15A) chain B, default symmetry operator = \u201C1ABC|1|B|U|15|||A\u201D 6695 // Nucleotide C(25) chain D subject to symmetry operation 2_655 = \u201C1ABC|1|D|C|25||||2_655\u201D 6696 // 6697 // Unit ids for entire residues can contain 4, 7, or 8 string separators (|). 6698 6699 6700TODO: document <<<<<------- 6701 6702bug fix: after atom deletion, atom iterator still finds atoms. 6703 -- was not reinitializing the binary search after atom deletion 6704 -- affects polyhedra, within() 6705 $ load $caffeine 6706 $ delete _N 6707 4 atoms deleted 6708 $ print {*}.count 6709 20 6710 $ print within(14.0, {c6}).count 6711 24 6712 6713JmolVersion="14.3.16_2015.09.05" 6714 6715new feature: POLYHEDRA 6716 -- same as POLYHEDRA BONDS {selected} 6717new feature: POLYHEDRA 4 6718 -- same as POLYHEDRA 4 BONDS {selected} 6719new feature: POLYHEDRA OFFSET 1.4 6720 -- same as POLYHEDRA COLLAPSED faceCenterOffset 1.4 6721new feature: POLYHEDRA COLLAPSED 1.4 6722 -- same as POLYHEDRA COLLAPSED faceCenterOffset 1.4 6723 6724code: Polyhedra work, including more efficient algorithms for completing set of faces 6725 6726bug fix: tracking down thread-safe issue in application console 6727bug fix: in Java, mouse should not lose control if moved out of application 6728 6729JmolVersion="14.3.16_2015.09.04" 6730 6731bug fix: Mac OS does not add modifiers (left, right, ctrl, etc.) to drag operations 6732 6733 6734JmolVersion="14.3.16_2015.08.31" 6735 6736bug fix: MOVE command with 0 time does not work 6737 6738JmolVersion="14.3.16_2015.08.31" 6739 6740bug fix: plot property with nothing more throws Exception 6741bug fix: Gaussian Dialog does not add final line ending when saving 6742 6743new feature: Jmol SMILES/SMARTS generic polySMILES polyhedron option @PHn(....) 6744 -- totally generic; will work with any number of connected atoms 6745 -- suitable replacement for all TP, OH, etc. 6746 -- standard equivalence to [C@] is [C@PH4(234)] 6747 -- standard equivalence to [C@@] is [C@PH4(432)] 6748 -- "reverse" option via "!": [C@PH4(!234)] 6749 -- designation around any or all of the attached atoms is possible. For tetrahedra, this is 6750 redundant, but for higher number of vertices, it may not be. This designation is 6751 done using "." to separate atoms. 6752 -- so [C@] is [C@PH4(234)] or [C@PH4(!432)] or [C@PH4(.134)] 6753 -- implied H as in [CH@] will be atom 1 if this is the first atom; 2 if not -- Br[CH@].... 6754 (same as in standard tetrahedral) 6755 6756 -- not implemented yet for SMARTS searching of SMILES strings 6757 6758 $ load $2-bromobutane 6759 $ show smiles 6760 Br[C@@H](C)CC 6761 $ print {*}.find("Br[C@](C)(H)CC") 6762 ({0:5}) 6763 $ print {*}.find("Br[C@PH4(234)](C)(H)CC") 6764 ({0:5}) 6765 $ print {*}.find("Br[C@PH4(234)](H)(C)CC") 6766 ({}) 6767 $ print {*}.find("Br[C@PH4(432)](H)(C)CC") 6768 ({0:5}) 6769 $ print {*}.find("Br[CH@@](C)CC") 6770 ({0:4}) 6771 $ print {*}.find("Br[CH@PH4(.134)](C)CC") 6772 ({0:4}) 6773 $ print {*}.find("Br[CH@PH4(!.134)](C)CC") 6774 ({}) 6775 6776 -- :) 6777 6778 6779JmolVersion="14.3.16_2015.08.30" 6780 6781code: refactoring of smiles package 6782 6783new feature: preliminary no-limit SMILES polyhedron stereochemistry @PHn 6784 -- very preliminary 6785 -- the format relies on specifying the order of bonds, so it 6786 creates a new component for each atom in the polyhedron, and it 6787 then arranges all bonds listed in @/CCW or @@/CW rotation as projected 6788 into the plane perpendicular to the line connecting the given (polygon vertex) 6789 atom and the (central) reference atom. 6790 -- example: 6791 6792 $ load $methane 6793 $ polyhedra 4 6794 $ calculate symmetry polyhedra 6795 C1 #1 Td 6796 6797 $ print @1.polyhedra.polySmiles 6798 //* C1 #1 *// [C@PH4]. 6799 //* H5 #5 *// [H]123. 6800 //* H2 #2 *// [H]245. 6801 //* H3 #3 *// [H]356. 6802 //* H4 #4 *// [H]641 6803 6804 -- thus, stereochemistry is set based on the winding of the atom environment. 6805 -- the reference atom is listed first, but it need not be connected to the other 6806 atoms, and in fact for polyhedra we leave it out (note that it is not connected) 6807 -- there is no limit to the number of connections any particular connecting atom 6808 can have. So this covers all general SMILES stereochemistry. 6809 -- a match is when the proper winding is found for all vertices. 6810 6811 load $C(Br)(Cl)F 6812 color chlorine blue 6813 polyhedra 4 bonds distancefactor 3.0 6814 calculate symmetry polyhedra 6815 print @1.polyhedra.polySmiles 6816 6817 C1 #1 C1 6818 6819 //* C1 #1 *// [C@PH4]. 6820 //* H5 #5 *// [H]123. 6821 //* Br2 #2 *// [Br]245. 6822 //* Cl3 #3 *// [Cl]356. 6823 //* F4 #4 *// [F]641 6824 $ invertselected 6825 $ polyhedra 4 bonds distancefactor 3.0 6826 calculate symmetry polyhedra 6827 print @1.polyhedra.polySmiles 6828 6829 C1 #1 C1 6830 6831 //* C1 #1 *// [C@PH4]. 6832 //* H5 #5 *// [H]123. 6833 //* Br2 #2 *// [Br]245. 6834 //* Cl3 #3 *// [Cl]641. 6835 //* F4 #4 *// [F]356 6836 6837 6838new feature: Jmol SMILES and SMARTS accepts look-back bond targeting using (n) 6839 where n is the sequential atom in the pattern. 6840 -- for example: 6841 6842 $load cyclopentane 6843 print {*}.find("CCCCC(1)") # cyclopentane ring 6844 6845 -- will be very important in building around [@PHn] stereochemistry, because these 6846 components need to have no other connections, at least at the point of description. 6847 Then if we need to attach to these, we can do so by connecting using this look-back 6848 technique. 6849 6850bug fix: Jmol bioSMARTS string-based search not implemented correctly 6851 -- for example, "~p~AC:A".find("SMARTS","~p~A:C", true) should give [[2,1]] 6852 6853new feature: Jmol SMILES trigonal pyramidal stereochemistry 6854 -- same as tetrahedral, put without the fourth group. 6855 6856new feature: {*}.find("SEQ") 6857new feature: {*}.find("SEQ", true) 6858new feature: {*}.find("SEQ", "H") 6859 -- no-comment Jmol bioSMILES: 6860 6861 $ load =3ll2 6862 $ print {carbohydrate}.find("seq") 6863 ~c~[MAN][MAN][MAN].~c~[MAN][MAN].~c~[MAN][MAN][MAN] 6864 $ print {carbohydrate}.find("seq", true) 6865 6866 6867 6868code: much more efficient selection for groups, types of monomers, polymers, etc. 6869 6870bug fix: {*}.find("SMILES",true) should default to covalent crosslinks 6871bug fix: {*}.find("SEQUENCE",true) should not include hydrogen bonded crosslinks 6872 6873undocumented feature: Jmol bioSMILES includes ~c~ for carbohydrate 6874 -- for example: 6875 6876 $ load =3LL2 6877 SUGAR BINDING PROTEIN 28-JAN-10 3LL2 6878 MONOMERIC GRIFFITHSIN IN COMPLEX WITH A HIGH-MANNOSE BRANCHED 6879 CARBOHYDRATE 6880 found biomolecule 1: A 6881 6882 $ select carbohydrate 6883 168 atoms selected 6884 $ show smiles true 6885 //* Jmol bioSMILES 14.3.16_2015.08.29 2015-08-29 12:03 1 *// 6886 //* chain A CARBOHYDRATE 122 *// ~c~[MAN]:1[MAN]:2[MAN] //* 124 *//. 6887 //* chain A CARBOHYDRATE 125 *// ~c~[MAN]:2[MAN] //* 126 *//. 6888 //* chain A CARBOHYDRATE 127 *// ~c~[MAN]:1[MAN][MAN] //* 129 *// 6889 6890 6891new feature: show SMILES TRUE 6892 -- shows bioSMILES 6893new feature: {*}.find("SEQUENCE","H") adds hydrogen-bonded crosslinks 6894 6895bug fix: select within(polymer, water) should select nothing 6896bug fix: select !within(polymer, *) should not select nothing 6897 6898bug fix: SMILES/SMARTS not accepting two separate processing directives such as /noaromatic/ /nostereo/ 6899new feature: GaussianReader reads high precision vibrational mode data 6900 -- Gaussian input options must include Freq=(HPModes) 6901new feature: GaussianRedaer filter "NOHP" flag ignores high precision vibrational mode log info 6902new feature: Gaussian FCHK file reader reads vibrational modes 6903 -- Gaussian input options must include Freq=(SaveNormalModes) 6904 6905JmolVersion="14.3.16_2015.08.26" 6906 6907new feature: SMARTS conformational search no longer limited to one range. 6908 -- example: 6909 6910 select on search("{[CH3]}(.t:50,70,-70,-50)CC{[CH3]}") 6911 6912 6913JmolVersion="14.3.16_2015.08.25b" 6914 6915bug fix: {3/, 2/, 1/} notation broken 6916 6917JmolVersion="14.3.16_2015.08.25" 6918 6919 6920bug fix: JmolThread should use setTimeout in resumeEval 6921 6922new feature: JmolSMILES $(.x:1,2,3,4,5,6,7,8) 6923 -- x is oen of d,a,t 6924 -- up to four ranges per measurement 6925new feature: print {2.1}.find("SMILES",{1.1}) 6926 6927bug fix: compare() function returning matrix with translation about center, not origin 6928bug fix: print compare({1.1},{2.1}, "SMILES", "stddev") broken 6929bug fix: select search("[$(select atomno < 5)]") broken 6930bug fix: select search("[$(select atomno < 5) or @5]") broken 6931 6932new feature: _hoverLabel 6933 -- reports general hover label set by hover command 6934 6935new feature: _hoverEnabled 6936 -- reports if hover is enabled or not 6937 6938bug fix: calculate partialCharge does not store result if all values are 0 (Otis Rothenberger) 6939bug fix: still problems with aTest = "testing"; x = [aTest:aTest] or a = [property_MYINFO:aTest] (Rolf Huehne) 6940bug fix: cross(a,b) broken 6941bug fix: write PDB broken; works without "PDB" keyword broken in 14.3.15_2015.06.18 6942 6943 6944new feature: /invertStereo/ flag for SMARTS search 6945 -- allows quick check for enantiomers 6946 -- example: select search("/invertStereo/C[C@H](Br)CC") will match (R)-2-bromobutane 6947 even though it is for (S)-2-bromobutane 6948 6949FEATURE CHANGE: Definitions of dna, rna, purine, and pyrimidine were ambiguous and 6950 not particularly viable for group fragments. This is much clearer 6951 now: Fragments and P-only and N-only monomers are identified by 6952 name only: 6953 6954 // These masks are only used for P-only and N-only polymers 6955 // or cases where there are so few atoms that a monomer's type 6956 // cannot be determined by checking actual atoms and connections. 6957 // They are used for NucleicMonomer or AminoMonomer classes only as 6958 // a last resort. 6959 // 6960 // I A G 6961 // purine: 100101 = 0x25 6962 6963 // UT C 6964 // pyrimidine: 011010 = 0x1A 6965 // 6966 // +IUTACGDIUTACG IUTACG 6967 // rna: 110000 000000 110111 = 0x30037 6968 6969 // +IUTACGDIUTACG IUTACG 6970 // dna: 001111 111111 001000 = 0x0FFC8 6971 6972 6973bug fix: SMILES recognizes atom name [*.CA] but not residue name [ALA.*] 6974bug fix: Jmol BioSMILES broken 6975 6976bug fix: set cartoonLadders with phosphorus-only polymers crashes Jmol 6977 6978bug fix: protein and nucleic are not set properly for non-monomer groups (Eric Martz) 6979 -- broken in Jmol 14.3.11 (12/13/2014) 6980 -- general definition of protein is from having CA, C, and N. But there 6981 are situations where we know it is protein from its group name (ALA,LEU..) 6982 despite the fact that it is just one atom. Same for nucleic. 6983 -- note that non-canonical (HETERO) amino acids or nucleic bases that do not have 6984 the requisite atoms to identify them as such will still not test positive for 6985 "protein" or "nucleic". 6986 6987JmolVersion="14.3.16_2015.08.21" 6988 6989bug fix: Tools...Spectra...JSpecView broken 6990 6991JmolVersion="14.3.16_2015.08.21" 6992 6993new feature: load var x 6994 -- same as load "@x" 6995 -- similar in syntax to write var x t.png 6996 -- example: 6997 6998 var x = load("quartz.cif") 6999 load var x {1 1 1} 7000 7001bug fix: creating and running and saving binary hash from PNGJ fails 7002 -- allows creating an associative binary array from a PNGJ file 7003 then modifying it and loading that variable 7004 then saving it as a new PNGJ file 7005 -- initial PNGJ file is not necessary if binary array x is created by some other means 7006 -- example: 7007 7008 var x = load("test.png",true) 7009 load "@x" 7010 write test2.png as PNGJ 7011 7012bug fix: hover callback is not supposed to be stopped with HOVER OFF 7013bug fix: atom.sx and atom.sy and atom.sz report incorrectly when antialiasing is on 7014bug fix: write VAR x "test.png" creates a ZIP file instead of a PNGJ file when x is from load("test.png",true) 7015bug fix: write test.png as PNGJ (without initial quotes) fails 7016 7017JmolVersion="14.3.16_2015.08.19" 7018 7019bug fix: PyMOL reader does not load surface from PNGJ file 7020bug fix: PDB reader can skip assignments of secondary structure after first structure loaded during session 7021 7022JmolVersion="14.3.16_2015.08.18" 7023 7024bug fix: PyMOL reader not reading "H69" as "helix" (RGS-Ga_8pdb_structures_aligned_S90_20.5.15.pse) 7025bug fix: PyMOL labels offset in Y direction (down.pse) see http://noys3.weizmann.ac.il/a2jb/browse 7026bug fix: PyMOL session with isosurface cannot be read from state 7027known bug: RGS-Ga_8pdb_structures_aligned_S90_20.5.15.pse has two frames; showing frame 2 with no displayed atoms 7028 7029JmolVersion="14.3.16_2015.08.17" 7030 7031bug fix: select %? not working 7032bug fix: select ^? not working 7033 7034 7035JmolVersion="14.3.16_2015.08.17" 7036released 7037 7038bug fix: PDB reader cuts off long titles. 7039bug fix: slab setting by wheel can be unintentional 7040bug fix: wheeling slab could run range unintentionally way too high or low 7041 7042new feature: slab/depth setting. 7043 7044 -- these enable wheel actions 7045 7046 bindAction(SINGLE|CTRL|WHEEL, ActionManager.ACTION_wheelZoom); 7047 bindAction(SINGLE|SHIFT|WHEEL, ActionManager.ACTION_wheelZoom); 7048 bindAction(SINGLE|CTRL|SHIFT|WHEEL, ActionManager.ACTION_wheelZoom); 7049 7050 -- these enable slab-wheel actions 7051 7052 bindAction(SINGLE|CTRL|WHEEL, ActionManager.ACTION_slab); 7053 bindAction(SINGLE|SHIFT|WHEEL, ActionManager.ACTION_depth); 7054 bindAction(SINGLE|CTRL|SHIFT|WHEEL, ActionManager.ACTION_slabAndDepth); 7055 7056 7057JmolVersion="14.3.16_2015.08.16" 7058 7059run up to full documentation 7060 7061JmolVersion="14.3.16_2015.08.15" 7062 7063new feature: xxx.array 7064 -- forces xxx if xxx is already an array, otherwise returns an array created from xxx. 7065 -- matrix3f and matrix4f are converted to standard 3x3 or 4x4 arrays; others are returned as [ xxx ]. 7066 -- can be used to force an array where a string or other single value will be returned. 7067 -- particularly useful to force an array from a bitset operation that is evaluated for one atom. 7068 -- example: 7069 7070 print {altloc=='A'}.sort # causes an error if {altloc="A"} is one atom 7071 print {altloc=='A'}.array.sort # forces an array [ "A" ] 7072 7073bug fix: x.array.pivot returns "NaN" for empty array -- should return an empty associative array 7074 7075JmolVersion="14.3.16_2015.08.14" 7076 7077bug fix: label "3%" reads "3null" 7078bug fix: {*}.label = ... resets offsets, fonts, and alignment 7079bug fix: label "3%%" is saved in the state as "3%" 7080 7081JmolVersion="14.3.16_2015.08.13" 7082 7083released 7084 7085JmolVersion="14.3.16_2015.08.12" 7086 7087released - but a bad build 7088 7089bug fix: set labeloffset 4 4 (specifically) just centers label 7090bug fix: var b = a..B fails (found by Rolf Huehne) 7091 -- non-lower-case associative array name same as user variable name 7092 turned into lower case and then looked up as a["b"] instead of a["B"], so not found 7093 7094bug fix: show xxx (variable) broken in 4.3.15_2015.06.13 7095 7096JmolVersion="14.3.16_2015.08.11" 7097 7098released 7099 7100bug fix: a = {*}.label("%[xxx]") does not work. 7101bug fix: "".format([a,b]) crashes Jmol 7102 7103new feature: load <mmCIF file> filter "addBonds" 7104 -- processes _struct_conn records 7105 -- inter-group connections only 7106 -- includes _struct_conn bond types: 7107 covale covalent bond 7108 covale_base covalent modification of a nucleotide base 7109 covale_phosphate covalent modification of a nucleotide phosphate 7110 covale_sugar covalent modification of a nucleotide sugar 7111 disulf disulfide bridge 7112 metalc metal coordination 7113 -- ignores _struct_conn bond types: 7114 hydrog hydrogen bond 7115 mismat mismatched base pairs 7116 modres covalent residue modification 7117 saltbr ionic interaction 7118 7119new feature: load *1crn* 7120 -- loads PDBe "updated" CIF files to allow CONECT-like bond creation 7121 -- for example, http://www.ebi.ac.uk/pdbe/static/entry/1h68_updated.cif 7122 -- suitable replacement for PDB CONECT 7123 -- processes _chem_comp_bond and _struct_conn categories 7124 -- presence of _chem_comp_bond will process _struct_conn as well, regardless of filter "addbonds" 7125 (because _chem_comp bonds are only intra-group, and for full CONECT-like behavior, we need all bonds) 7126 7127JmolVersion="14.3.15_2015.08.09" 7128 7129bug fix: CML reader can fail (e.g. nsc244a.cml) 7130 7131code: refactoring of JmolDataManager 7132 7133JmolVersion="14.3.15_2015.08.08" 7134 7135new feature: atom property "monomer" same as %g 7136new feature: atom property "seqcode" same as %r 7137new feature: load "test.pdb" from write property atomno temperature now restores values for atomno and temperature for points on plot 7138 7139bug fix: label %g does not indicate group index in chain 7140bug fix: JSmol does not recognize label %W %g %r %O etc. with single digits where there is no %[xxx] equivalent 7141 7142bug fix: "print stateVersion" not reporting as documented. 7143bug fix: write property atomno temperature "test.pdb" does not preserve long residue names from CIF files or long atom names from other file types 7144 7145JmolVersion="14.3.15_2015.08.06" 7146 7147bug fix: stereo setting should not be saved in state. 7148 -- though saved, it was not by default set to normal, 7149 -- thus influencing later loads. 7150 7151bug fix: STEREO not implemented in JavaScript 7152 7153new feature: STEREO DTI 7154 -- left/right dual panel, as just STEREO 7155 -- compresses width by 50% for DTI mode (Dimension Technologies, Inc.) 7156 7157bug fix: calculate STRUTS broken for 3dfr, with peptide ligand MTX 7158 7159JmolVersion="14.3.15_2015.08.01" 7160 7161bug fix: SMARTS matching broken for [r5] ring designation 7162 7163bug fix: reference to functions as commands requires lower case: 7164 -- for example: 7165 function F(a){ print a } 7166 F("test") // OK 7167 f("test") // OK 7168 f "test" // OK 7169 F "test" // fails 7170 7171 7172JmolVersion="14.3.15_2015.07.30b" 7173 7174bug fix: JavaScript deletion of array elements fails for int[] arrays. 7175 7176JmolVersion="14.3.15_2015.07.30" 7177 7178new feature: set multipleBondBananas TRUE 7179 -- displays multiple bonds as banana bonds 7180 -- does not carry over after model loading 7181 7182new feature: set multipleBondSpacing 0.15; set multipleBondRadiusFactor -1.0 7183 -- positive number for spacing but negative for radiusFactor rotates fixed multiple bonds 90 degrees. 7184 7185bug fix: magnetic spin vectors do not render properly (broken in 14.3.13_2015.05.12) 7186 7187JmolVersion="14.3.15_2015.07.29" 7188 7189new feature: [Font] button added to ScriptEditor 7190 7191bug fix: config 2 and select config=2 may not work properly (still) 7192bug fix: minimization of PCl4 (==PC4) does not auto-switch to UFF from MMFF94 (bond key not set) 7193 7194FEATURE CHANGE: org.jmol.awtjs.swing.Dimension dependency removed from JmolViewer and JmolStatusListener interfaces 7195 -- changed to int[] 7196 7197JmolVersion="14.3.15_2015.07.22" 7198 7199bug fix: config 1 does not work; listing is not complete. 7200 7201JmolVersion="14.3.15_2015.07.11" 7202 7203bug fix: format("%5.-5i") broken -- only shows right four digits if # digits is 5. 7204bug fix: write PDB broken for some systems (14.3.12) 7205 7206JmolVersion="14.3.15_2015.07.09" 7207 7208released as 14.2.15_2015.07.09 7209 7210 7211bug fix: load "xxx" 1 {10 10 10} does not recognize lattice information when model number is given (broken in 07.07) 7212 7213JmolVersion="14.3.15_2015.07.08c" 7214 7215bug fix: load files "xxx.png|xxxx" "xxx.png|zzzz" not read from state properly 7216bug fix: polyhedra not saved in state property 7217bug fix: moving atoms with 4x4 matrix not saved in state 7218bug fix: moving of an atom having a polyhedron fails to move the polyhedron as well 7219 7220 7221new feature: smiles2.find("SMILES",smiles1, asMap, allMappings) 7222 -- asMap = TRUE (default false) indicates you want an atom 7223 correlation map indicating positions in smiles2 corresponding to smiles1 7224 -- allMappings = TRUE (default false) indicates you want 7225 all mappings, not just the first found 7226 -- returns a number, -1, 0, n>0 when asMap is false (allMappings ignored) 7227 -- returns int[] when allMappings is false 7228 -- returns int[][] when allMappings is true 7229 -- example: 7230 var s1 = atom1.polyhedron.getProperty("SMILES") 7231 var coords = atom2.polyhedron.getProperty("vertices") 7232 var s2 = atom2.polyhedron.getProperty("SMILES") 7233 var coords2 = atom2.polyhedron.getProperty("vertices") 7234 var map12 = s2.find("SMILES", s1, true, false) 7235 var coords2Mapped = [] 7236 for (var i in map12) coords2Mapped.push(coords2[i + 1]) 7237 coords2 = coords2Mapped 7238 var mat = compare(coords1, coords2) 7239 select {1.1} 7240 rotateselected @mat 7241 7242JmolVersion="14.3.15_2015.07.07c" 7243 7244bug fix: x.getProperty("[select name where composition[1] == 0.5]") 7245 -- the [ there is tripping us up. True, ..1 could be used instead as well. 7246 7247JmolVersion="14.3.15_2015.07.07b" 7248 7249bug fix: 2015.07.06 breaks text writing in JSmol 7250bug fix: Crystal reader cannot handle TOTAL ENERGY CORRECTED... line 7251 7252new feature: JSmol Jmol._persistentMenu = true 7253 -- allows menu to persist and not be removed 7254 7255new feature: JSmol <div id=JmolApplet0_console></div> sets a place on the page for the JSmol console. 7256 7257new feature: load xxx filter "latticeScaling=1.2" 7258 -- scales model based on a crystal lattice 7259 -- allows volume matching for crystal comparison 7260 7261bug fix: SMARTS processing with "." may not find substructure 7262 7263JmolVersion="14.3.15_2015.07.03" 7264 7265bug fix: mmCIF reader does not recognize load MODEL ... 7266bug fix: PDB reader should be reading load "" [1 3 4] as MODEL record numbers, not sequential numbers 7267bug fix: load MODELS "" [1 3 4] does not work (although load "" [1 3 4], without with MODELS keyword, works) 7268 7269clarification: 7270 7271 load "" 1 # loads the first model in a file when not PDB or mmCIF. 7272 load "" 1 # loads the model with MODEL 1 record for a PDB file. 7273 load "" 1 # loads the model with _atom_site.pdbx_PDB_model_num = 1 for an mmCIF file 7274 load "" [1] # same as load "" 1; brackets allow for more than one model, for instance [1 3 5] 7275 load MODELS ({1}) "" # always loads the SECOND model in a file 7276 7277 7278 7279JmolVersion="14.3.15_2015.06.30" 7280 7281bug fix: POVRay and VRML exporters mishandle label backgrounds 7282bug fix: exports not handling rockets correctly 7283 7284JmolVersion="14.3.15_2015.06.19c" 7285 7286bug fix: 1/{a b c} gives 0, not 1/length({a b c}) 7287 7288JmolVersion="14.3.15_2015.06.19b" 7289 7290new feature: MACRO command 7291 -- runs predefined script, generally defining new functions of general use 7292 -- contributions welcome! 7293 -- will be expanded 7294 7295 $ macro aflow 7296 running http://aflowlib.mems.duke.edu/users/jmolers/jmol/spt/AFLOW.spt 7297 aflowLoad(binaryAlloy) loaded 7298 aflowBinaries loaded 7299 aflowDualArray(binaryAlloy, a, b) loaded 7300 aflowDualWrite loaded 7301 aflowConvexHull(binaryAlloy) loaded 7302 aflowCheckBinary(binaryAlloy) loaded 7303 aflowGetPG(binaryAlloy, a, range1, range2,radius) loaded 7304 $ aflowLoad("AgAu") 7305 294 models 7306 7307 $ print aflowConvexHull 7308 { 7309 "Cb" : 0.0 7310 "Hf_eV_VASP" : 0.0 7311 "modelNumber" : 2 7312 } 7313 { 7314 "Cb" : 0.25 7315 "Hf_eV_VASP" : -0.0472733 7316 "modelNumber" : 26 7317 } 7318 { 7319 "Cb" : 0.5 7320 "Hf_eV_VASP" : -0.085589 7321 "modelNumber" : 180 7322 } 7323 { 7324 "Cb" : 0.75 7325 "Hf_eV_VASP" : -0.0463823 7326 "modelNumber" : 25 7327 } 7328 { 7329 "Cb" : 1.0 7330 "Hf_eV_VASP" : 0.0 7331 "modelNumber" : 260 7332 } 7333 7334bug fix: AFLOW binary file reader can fail with certain VASP formats containing 7335 both in-line atom labels and atom elements prior to #elements line. (AlPd#5, for example) 7336 7337JmolVersion="14.3.15_2015.06.19" 7338 7339new feature: pt.distance(plane,ptRef) 7340 -- returns a negative distance if pt and ptRef are on different sides of the plane 7341 -- useful for constructing 3D convex hulls and polyhedra, where all points 7342 must be on the same side of all planes 7343 7344new feature: removing empty array values using array.find() and opposite using array.find("") 7345 -- "empty" means an entry that is "", [], or {} 7346 -- for example: 7347 7348 print [0 3 4 "" 5 {} [] 6].find() 7349 7350 [0 3 4 5 6] 7351 7352 print [0 3 4 "" 5 {} [] 6].find("") 7353 [ "" {} [] ] 7354 7355bug fix: msCIF reader can hang if occupancy is not fractional 7356bug fix: JSmol applet not returning full set of parameters in animFrameCallback 7357bug fix: load FILL command can fail if base unit cell is not part of the needed set for the specified volume 7358 7359JmolVersion="14.3.15_2015.06.18" 7360 7361new feature: polyhedra ONLY 7362 7363new feature: calculate symmetry POLYHEDRA 7364 -- sets values for ShapeInfo.Polyhedra.smiles, .smarts, and .pointGroup 7365 7366bug fix: wireframe ONLY (RESTRICT) executes polyhedral DELETE instead of OFF 7367bug fix: Polygons not indicating visibility when they are the only thing visible. 7368bug fix: x[++y] did not increment y. x[y++] and other contexts were fine 7369 7370JmolVersion="14.3.15_2015.06.17" 7371 7372new feature: extracting array of sequential arrays from array of associative arrays 7373 -- pull out just the values desired into a sequential array 7374 -- example, where b is an array of associative arrays [....., energy:..., pointGroup....] 7375 7376 print b.format(["energy", "pointGroup"]) 7377 7378new feature: array of sequential arrays formatting using array.format("format") 7379 -- example 7380 7381 energy_pg = b.format(["energy", "pointGroup"]) 7382 print energy_pg.format("%5.3f\t%5s") 7383 7384new feature: associative array binning: 7385 -- creates a pivot table of the bins 7386 -- adds keys "_bin", "_binMin", and "_binMax" to the initial array 7387 -- example: 7388 7389 7390 load "AgAu.aflow_binary" 7391 polyhedra 4-24 3.65 unitcell translucent 0.2 7392 m = _("aflowInfo[Select modelNumber where Cb=0.5]") 7393 b = {@1 and model=m}.polyhedra.all.getProperty("[select energy,pointGroup,modelNumber"); 7394 c = b.bin(-0.1,0.1,0.02,"energy") 7395 print b.format(["energy", "pointGroup"]).sort(1).reverse.format("%5.3f %5s") 7396 7397 7398 7399new feature: polyhedra highlight with select ON or set selectionHalos ON 7400 7401new feature: getProperty("ShapeInfo.polyhedra") includes keys 7402 atomIndex 7403 atomNumber 7404 center 7405 energy // from model auxiliaryInfo _m.Energy, if available 7406 faceCount 7407 faces 7408 modelIndex 7409 modelNumber 7410 smarts 7411 smiles 7412 vertexCount 7413 vertices 7414 7415new feature: polyhedra properties "smiles" and "smarts" 7416 -- uses JmolSMILES, extending SMILES for periodic structures 7417 -- smiles is a SMILES string for the polyhedron, not including its center atom. 7418 -- smarts is smiles but replacing atom descriptors with * 7419 -- can be searched for using x = polyhedron(s) where s is SMILES or SMARTS 7420 7421 7422 7423new feature: polyhedron(smiles) 7424new feature: polyhedron(smarts) 7425 -- searches for a polyhedron (which must be already present) matching the given SMILES 7426 -- for example: 7427 7428 // load a set of binary alloy structures 7429 load "AgAu.aflow_binary" 7430 // generate all polyhedra on the first atom of each model 7431 select @1 7432 polyhedra 4-24 3.65 unitcell translucent 0.2 7433 // find all SMARTS codes for 12-vertex polyhedra; taking the first 7434 x= polyhedra(12).polyhedra.all.getProperty("smarts")[1] 7435 // find central atoms for all similar polyhedra 7436 y= polyhedra(x) 7437 // get their model numbers 7438 print y.model.all 7439 z= y.model.all 7440 // make the current frame set just those models 7441 frame @z 7442 7443 -- not fully worked out 7444 7445new feature: array.getProperty("xxxx") 7446 -- same as getproperty(array, "xxxx") 7447 -- drills down into an array of associative arrays to get sublist 7448 -- can be used with [SELECT ... WHERE] 7449 7450 7451bug fix: ++x and x++ do not increment properly when in expressions 7452 // no problem here because it is compiled as "x = x + 1" 7453 x = 0 7454 x++ 7455 print "x should be 1 " + x 7456 7457 // x does not increment, but the test passes 7458 x = 0 7459 if (++x) { 7460 print "good" 7461 } 7462 print "x should be 1 " + x 7463 7464 // x does not increment, but the test passes ("bad" is not printed) 7465 x = 0 7466 if (x++) { 7467 print "bad" 7468 } 7469 print "x should be 1 " + x 7470 x = 0 7471 // works 7472 x++ 7473 // y is OK, but x does not increment 7474 y = x++ 7475 print "x should be 2 " + x 7476 x = 0 7477 // z is OK, but x does not increment 7478 z = ++x 7479 print "x should be 1 " + x 7480 7481 // result: 7482 7483 x should be 1 1 7484 good 7485 x should be 1 0 7486 x should be 1 0 7487 x should be 2 1 7488 x should be 1 0 7489 7490JmolVersion="14.3.15_2015.06.16" 7491bug fix: msCIF reader failing for Legendre polynomials of order greater than 4 7492 -- JavaScript fix for new double[m + 1][] 7493 -- must use AU.newDouble2(m + 1); 7494 7495JmolVersion="14.3.15_2015.06.14c" 7496 7497bug fix: var firstPARAM = "p1_b"; x = [FIRSTParam: "p1_a"]; results in lowering of case as [firstparam:....] 7498bug fix: set drawPicking draw;set drawpicking does not show handles 7499bug fix; point group not calculated when the selected atoms are a subset of a model 7500bug fix: x.find("SMILES") is incorrect for structures that have hypervalent atoms and branches such as inorganic nitrates 7501bug fix: msCIF reading with two models, and only one has displacement modulation causes "render error" crash 7502bug fix: msCIF reader failing for Legendre polynomials of order greater than 4 7503bug fix: DRAW for quadrilateral broken when perspective depth is turned off. 7504bug fix: SET ECHO IMAGE broken in JavaScript version 7505 7506 7507new feature: POLYHEDRA 12 UNITCELL 7508 -- creates a polyhedron (12-gon in this case) around each of the 7509 currerntly selected atoms that has that bonding environment 7510 -- DOES NOT require atoms at these positions - can simply use the 7511 unit cell and periodicity to find the relevant atom positions. 7512 -- will check bonding as necessary using autobonding parameters 7513 -- accepts all standard polyhedra options. For example: 7514 7515 polyhedra 12,16 3.5 UNITCELL 7516 7517new feature: POLYHEDRA 4-16 7518 -- allows a range of unit cell bonding patterns. 7519 -- in this case, same as 4,5,6,7,8,9,10,11,12,13,14,15,16 7520 7521 polyhedra 4-16 3.5 UNITCELL 7522 7523new feature: getProperty shapeInfo.polyhedra 7524 7525 print getProperty("shapeInfo.polyhedra[1]").keys 7526 7527 _ipt 7528 center 7529 modelIndex 7530 planeCount 7531 polygons 7532 vertexCount 7533 vertices 7534 7535new feature: draw POINTS [ array of points ] 7536 7537 draw diameter 0.2 points @{getProperty("shapeInfo.polyhedra[1].vertices")} 7538 7539new feature: show pointgroup POLYHEDRON 7540 -- uses points from the polyhedron of the first selected atom 7541 -- recommended to use specific atom reference in POLYHEDRA command: 7542 7543 select @21 7544 polyhedron 3.5 UNITCELL 7545 show pointgroup polyhedron 7546 7547 7548$ show pointgroup polyhedron 7549# 13 atoms 7550 7551 7552Oh Ci {2.1020985 -4.3122215 2.1430104} 7553 7554Oh nC4 3 2 7555Oh C4_1 {0.99993926, -0.007795072, 0.0077921236} 7556Oh C4_2 {7.8514034E-7, -0.9997856, -0.020707628} 7557Oh C4_3 {7.619045E-7, 0.009661385, -0.9999533} 7558 7559Oh nC3 4 2 7560Oh C3_1 {-0.58944535, 0.5712053, 0.57120806} 7561Oh C3_2 {-0.58944565, -0.5712049, -0.57120824} 7562Oh C3_3 {-0.5824926, -0.58349025, 0.5658989} 7563Oh C3_4 {0.5764604, -0.5864354, 0.5690228} 7564 7565Oh nC2 9 1 7566Oh C2_1 {0.7004682, -0.71362424, -0.0092081865} 7567Oh C2_2 {0.7004673, 0.009209763, 0.7136251} 7568Oh C2_3 {0.99993926, -0.007795072, 0.0077921236} 7569Oh C2_4 {-0.70046806, -0.71362436, -0.009208187} 7570Oh C2_5 {-8.22445E-7, 0.7071046, -0.707109} 7571Oh C2_6 {7.8514034E-7, -0.9997856, -0.020707628} 7572Oh C2_7 {0.7056006, -0.019795598, -0.70833325} 7573Oh C2_8 {7.619045E-7, 0.009661385, -0.9999533} 7574Oh C2_9 {5.440252E-7, 0.70734024, 0.7068733} 7575 7576Oh nS6 4 2 7577Oh S6_1 {-0.58944535, 0.5712053, 0.57120806} 7578Oh S6_2 {-0.58944565, -0.5712049, -0.57120824} 7579Oh S6_3 {-0.5824926, -0.58349025, 0.5658989} 7580Oh S6_4 {0.5764604, -0.5864354, 0.5690228} 7581 7582Oh nS4 2 2 7583Oh S4_1 {0.99993926, -0.007795072, 0.0077921236} 7584Oh S4_2 {7.619045E-7, 0.009661385, -0.9999533} 7585 7586Oh nCs 9 1 7587Oh Cs_1 {0.0, 0.7071068, -0.7071067} 7588Oh Cs_2 {0.0, -0.7071068, -0.7071068} 7589Oh Cs_3 {0.007949507, 0.020366998, -0.999761} 7590Oh Cs_4 {0.007952394, 0.999761, -0.020367} 7591Oh Cs_5 {1.0, 0.0, 0.0} 7592Oh Cs_6 {0.7030396, 0.014484465, 0.71100324} 7593Oh Cs_7 {0.7030395, 0.71100324, 0.014484464} 7594Oh Cs_8 {0.70023495, -0.008727634, -0.7138592} 7595Oh Cs_9 {0.7030395, -0.71100324, -0.014484464} 7596 7597Oh type nType nUnique 7598Oh E 1 1 7599Oh Ci 1 1 7600Oh Cs 9 9 7601Oh Cn 16 23 7602Oh Sn 6 12 7603Oh TOTAL 46 7604 7605 7606 -- displays a table showing point group information. 7607 -- notice that not all the operators may be found because of settings of 7608 set pointGroupDistanceFactor 0.2 being too tight a restriction. 7609 7610new feature: draw POINTS <list of points or array of points> 7611new feature: draw POLYGON <list of points or array of points> -1 7612 -- these two are identical; POINTS is a bit nicer. 7613 7614load "=aflow/AgAu" 20 7615 7616select @1 & 1.1 7617polyhedra 4-16 3.7 unitcell 7618 7619x = within(4, true, "unitcell", {selected}) 7620print x; 7621 7622draw width 0.2 points @{x["points"]} color red mesh nofill translucent 7623 7624 7625new feature: select POLYHEDRA 7626 -- selects central atoms of any atoms having polyhedra. 7627 7628new feature: select polyhedra(4) 7629 -- selects central atoms of any atoms having tetrahedral polyhedra. 7630 7631new feature: x.find("SMILES","*") 7632 -- creates a topology SMILES, involving just * and connections 7633 -- does not include stereochemistry 7634 -- allows comparison of connection patterns without respect to any other consideration. 7635 -- can be used to check equivalences in inorganic crystal structures. 7636 7637 7638code: SMILES code cleaned up. 7639code: most image loading is now asynchronous. (Not BMP, not from PNGJ files with "|" in filename) 7640code: introducing interfaces to allow less use of @j2sNative and more traceability of method calls in Eclipse 7641 7642 7643 7644bug fix: polyhedra broken for number of vertices > 6. 7645 -- needed smaller default distanceFactor (set to 1.5; formerly 1.85) 7646 -- this setting is for any 7647 7648code: to be released 6/11/15 7649 7650JmolVersion="14.3.14_2015.06.10c" 7651 7652bug fix: "transparent" PNG images as echos in front still hide pixels 7653 7654code : PNG images with partial transparency are not supported. 7655 They COULD be supported, but currently the rendering is 7656 in the first pass, but it could be in a later pass. 7657 7658code: g3d.ImageRenderer removed; code moved to g3d 7659 7660bug fix: GaussianDialog fails to write element symbols 7661bug fix: animation buttons go to wrong first frame for FRAME [3 2 1] 7662 7663bug fix: JSmol set echo IMAGE not working properly (Frieda Reichsman) 7664 7665new feature: {atomset}.bondcount({atomset2}) 7666 -- counts bonds to a specific set of atoms 7667 -- result is an array 7668 7669new feature: [array].pivot 7670 -- creates a pivot table using strings, integers, or floats 7671 -- result is a hash for which the keys are 7672 7673$ print {*}.label("%a").pivot 7674{ 7675 "Ag" : 1561 7676 "Cd" : 1360 7677 } 7678 7679 7680$ load $caffeine 7681$ print {_N}.bondCount({_C}) 7682 3 7683 3 7684 2 7685 3 7686 7687$ print {_N}.bondCount({_C}).pivot 7688{ 7689 "2" : 1 7690 "3" : 3 7691 } 7692$ 7693 7694 7695JmolVersion="14.3.14_2015.06.08" 7696 7697new feature: [Font] button added to Console 7698 7699 7700 _ by itself, not as a function, is shorthand for getProperty("auxiliaryInfo") 7701 7702 $ print _.keys 7703 7704 boundbox 7705 group3Counts 7706 group3Lists 7707 modelLoadNote 7708 models 7709 properties 7710 someModelsHaveFractionalCoordinates 7711 someModelsHaveSymmetry 7712 someModelsHaveUnitcells 7713 symmetryRange 7714 7715 7716 _m by itself, not as a function, is shorthand for getProperty("auxiliaryInfo.models")[_currentFrame] 7717 7718 $ print format("json",_m.unitCellParams) 7719 7720 [ 0.0,0.0,0.0,0.0,0.0,0.0,0.0,-2.1660376,-2.1660376,0.0,-2.1660376,2.1660376,-4.10273,0.0,0.0,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN ] 7721 7722 7723 {atomset}._ by itself delivers a subset array of auxiliaryInfo.models for all models in {atomset} 7724 7725 $ print {*}._..1..aflowInfo 7726 7727 (first model's aflowInfo) 7728 7729 7730 _(key) prepends "auxiliaryInfo.models", delivering a modelCount-length array of information 7731 7732 $ print _("aflowInfo[SELECT auid WHERE H__eV___VASP_ < 0]") 7733 7734 7735 {atomset}._(key) selects for model Auxiliary info related to models of the specified atoms 7736 7737 {atomset}.getProperty(key) defaults to atomInfo, but also allows key to start with "bondInfo" 7738 7739 Examples: 7740 7741 print _("aflowInfo[select sg where volume_cell > 70]") 7742 7743 print {model>10}._("aflowInfo[select sg where volume_cell > 70]") 7744 7745 7746bug fix: [array].find("xxx") should always return a sub-array; previously if there was only one hit, it returned that hit 7747bug fix: [array].find("xxx") should not return string equivalent even if it uses that in the find. 7748 7749JmolVersion="14.3.14_2015.06.07" 7750 7751new feature: _m.xxx _m shortcut for @{getProperty("auxiliaryInfo.models[<currentModel>]")} 7752 -- much easier syntax for getting auxiliary information 7753 -- <currentModel> was not available, so this was not easily determined 7754 -- for example - a dynamic echo with model-specific info that changes when the frame is changed 7755 set echo top center 7756 echo "@{_m.modelNumber} 7757 7758new feature: _.currentModelIndex _ shortcut for @{getProperty("auxiliaryInfo", "")} 7759 -- much easier syntax for getting auxiliary information 7760new feature: 7761 7762new feature: {*}.getProperty("atomInfo.xxx") alternative for getProperty("atominfo.xxx", {*}) 7763new feature: {*}.getProperty("xxx") same as {*}.getProperty("atomInfo.xxx") 7764new feature: {*}.getProperty("bondInfo.xxx") alternative for getProperty("bondinfo.xxx", {*}) 7765new feature: {*}._(...) same as {*}._getProperty(...) 7766 -- note that {*}.getProperty was present but undocumented and not useful 7767 7768bug fix: Console should be checking scripts after space-bar is pressed. 7769bug fix: script checking should not trigger screen refresh 7770 7771code: refactoring of vi ewer.JC for label/echo business 7772 7773new feature: set labeloffset range expanded to [-500,500] 7774 7775new feature: set labelOffsetAbsolute x y 7776 -- was undocumented as "set labelOffsetExact" but used in state (still available) 7777 -- sets label to specific value; same as set labelOffset, but allows 0 in x or y 7778 -- range [-500,500] 7779 7780bug fix: dragging labels not working properly 7781bug fix: axisAngle (javajs.util.A4) not resetting angle to 0 --> wrong default orientation saved to state immediately after RESET (broken in 14.1.6_dev_2014.01.16c) 7782 7783JmolVersion="14.3.14_2015.06.05" 7784 7785new feature: load "...." FILL BOUNDBOX 7786new feature: load "...." FILL UNITCELL 7787new feature: load "...." FILL [o va vb vc] 7788new feature: load "...." FILL [o vabc] 7789new feature: load "...." FILL 7790 7791 -- loads a crystal structure such that a given volume is packed 7792 -- volume can be the current boundbox or the current unitcell 7793 -- can specify origin and a,b,c vectors or origin and diagonal vector 7794 -- no parameters --> {0 0 0} {10 10 10} 7795 -- when not a crystal, just loads this model with the specified boundbox 7796 -- simplification of initial idea (6/4/2015) 7797 7798JmolVersion="14.3.14_2015.06.04" 7799 7800new feature: _argCount, _arguments for functions and scripts 7801 7802new feature: _caller for functions 7803 -- a hashtable of local VARs defined in the calling function 7804 -- note that _caller._caller is not valid. But you can define 7805 7806 var caller = _caller 7807 7808 and then that will be exposed to the next level of function calls. 7809 Or you could use use it as a parameter: 7810 7811 function xx() { 7812 .... 7813 yyy(_caller) 7814 ... 7815 7816given t.spt: 7817 7818function showme(a,b,c) { 7819 var x = "showme" 7820 print "c._arguments =" + (c ? format("json",c._arguments) : "<n/a>") 7821 print "_argCount = " + _argCount + "\nx = " + x 7822 print "_caller.x = " + _caller.x 7823 print "_caller.caller.x = " + _caller.caller.x 7824 print "_arguments = " + format("json", _arguments) 7825 print " " 7826} 7827 7828var x = "scriptlevel" 7829var caller = {} 7830showme(1) 7831 7832function show2() { 7833 var x = "show2" 7834 var caller = _caller 7835 showme(5,6,_caller,7,8,9) 7836} 7837show2(4) 7838 7839 7840$ t.spt("testing" ,"here") 7841c._arguments = <n/a> 7842_argCount = 1 7843x = showme 7844_caller.x = scriptlevel 7845_caller.caller.x = 7846_arguments = [ 1 ] 7847 7848c._arguments = [ "testing","here" ] 7849_argCount = 6 7850x = showme 7851_caller.x = show2 7852_caller.caller.x = scriptlevel 7853_arguments = [ 5,6,{ "x": "scriptlevel","caller": { },"_arguments": [ "testing","here" ] },7,8,9 ] 7854 7855 7856JmolVersion="14.3.14_2015.06.03" 7857 7858new feature: AFLOW binary alloy file reader centers unit cells in all frames at the same point 7859 7860new feature; AFLOW binary alloy file reader can filter "list=xx" to produce a list of values start with xx. 7861 7862 load "file:/C:/jmol-dev/bobtest/aflow/binary/AgCd.aflow_binary" {2 2 2} packed filter "list=Hf_a" 7863 7864 7865new feature: AFLOW binary alloy file reader selective for a given composition: 7866 7867 load "file:/C:/jmol-dev/bobtest/aflow/binary/AgCd.aflow_binary" {2 2 2} packed filter "Ca=0.5" 7868 7869new feature: AFLOW binary alloy file reader reading -- DATA -- block into associative arrays: 7870 7871 load "file:/C:/jmol-dev/bobtest/aflow/binary/AgCd.aflow_binary" {2 2 2} packed 7872 print getProperty("auxiliaryInfo.models.aflowInfo['Hf_atom (VASP)']") 7873 7874 7875bug fix: [SELECT ... WHERE ...] can fail with spaces or [ ] in key names. For example: 7876 7877 print getProperty("auxiliaryInfo.models.aflowInfo[SELECT Cb,\"Hf_atom [eV](VASP)\" WHERE Cb > 0.4 and Cb< 0.6]") 7878 7879 7880The call to the AFLOWLIB API to do this in Jmol involves forcing use of the POST method. The following link will work only in Jmol: 7881 7882 http://aflowlib.mems.duke.edu/php/apool.php?POST?job=awrapper_apool&lattice=all&alloy=AgAu 7883 7884Notice that when Jmol reads these files, it automatically catalogs the models along the lines of composition, and it translates their unit cells to be on a common center from frame to frame. 7885 7886Using a local file, requesting a listing of Hf_atom: 7887 7888 load "file:/C:/jmol-dev/bobtest/aflow/binary/AgCd.aflow_binary" {2 2 2} packed filter "list=Hf_a" 7889 7890FileManager opening 1 file:/C:/jmol-dev/bobtest/aflow/binary/AgCd.aflow_binary 7891The Resolver thinks AFLOW 7892filtering with ;LIST=HF_A; 7893[AgCd] REFERENCE: S. Curtarolo, W. Setyawan, S. Wang, J. Xue, K. Yang, R. H. Taylor, L. J. Nelson, G. L. W. Hart, S. Sanvito, M. Buongiorno Nardelli, N. Mingo, and O. Levy, AFLOWLIB.ORG: a distributed materials properties repository from high-throughput ab initio calculations, Comp. Mat. Sci. 58, 227-235 (2012). 7894[AgCd] REFERENCE: S. Curtarolo, W. Setyawan, G. L. W. Hart, M. Jahnatek, R. V. Chepulskii, R. H. Taylor, S. Wang, J. Xue, K. Yang, O. Levy, M. Mehl, H. T. Stokes, D. O. Demchenko, and D. Morgan, AFLOW: an automatic framework for high-throughput materials discovery, Comp. Mat. Sci. 58, 218-226 (2012). 7895[AgCd] REFERENCE: S. Curtarolo, D. Morgan, and G. Ceder, Accuracy of ab-initio methods in predicting the crystal structures of metals: review of 80 binary alloys, Calphad 29, 163-211 (2005). 7896AgCd 0.00000000000000 11 Hf_atom [eV] (VASP) 0.0 7897AgCd 0.04347826086957 1 Hf_atom [eV] (VASP) 0.0870304 7898AgCd 0.07142857142857 1 Hf_atom [eV] (VASP) 0.15737298 7899AgCd 0.11111111111111 1 Hf_atom [eV] (VASP) -0.011088 7900AgCd 0.12500000000000 1 Hf_atom [eV] (VASP) -0.027350498 7901AgCd 0.16666666666667 7 Hf_atom [eV] (VASP) -0.037070002 7902AgCd 0.17241379310345 1 Hf_atom [eV] (VASP) 0.020694898 7903AgCd 0.20000000000000 9 Hf_atom [eV] (VASP) -0.0460172 7904AgCd 0.25000000000000 30 Hf_atom [eV] (VASP) -0.056237496 7905AgCd 0.33333333333333 42 Hf_atom [eV] (VASP) -0.0609502 7906AgCd 0.37500000000000 3 Hf_atom [eV] (VASP) -0.0589556 7907AgCd 0.40000000000000 12 Hf_atom [eV] (VASP) -0.0618938 7908AgCd 0.41379310344828 1 Hf_atom [eV] (VASP) 0.00122355 7909AgCd 0.42857142857143 2 Hf_atom [eV] (VASP) -0.037301403 7910AgCd 0.44444444444444 2 Hf_atom [eV] (VASP) -0.0335542 7911AgCd 0.46153846153846 1 Hf_atom [eV] (VASP) -0.0150388 7912AgCd 0.50000000000000 46 Hf_atom [eV] (VASP) -0.068898305 7913AgCd 0.53846153846154 1 Hf_atom [eV] (VASP) 0.0721082 7914AgCd 0.55555555555556 2 Hf_atom [eV] (VASP) -0.033519298 7915AgCd 0.57142857142857 2 Hf_atom [eV] (VASP) -0.0333517 7916AgCd 0.58620689655172 1 Hf_atom [eV] (VASP) -0.0124974 7917AgCd 0.60000000000000 12 Hf_atom [eV] (VASP) -0.047418 7918AgCd 0.61538461538462 1 Hf_atom [eV] (VASP) -0.06818979 7919AgCd 0.62500000000000 3 Hf_atom [eV] (VASP) -0.040674802 7920AgCd 0.66666666666667 42 Hf_atom [eV] (VASP) -0.0603182 7921AgCd 0.75000000000000 29 Hf_atom [eV] (VASP) -0.0485616 7922AgCd 0.80000000000000 9 Hf_atom [eV] (VASP) -0.0095262 7923AgCd 0.82758620689655 1 Hf_atom [eV] (VASP) 0.033198204 7924AgCd 0.83333333333333 7 Hf_atom [eV] (VASP) -0.025705501 7925AgCd 0.87500000000000 1 Hf_atom [eV] (VASP) 0.0031846298 7926AgCd 0.88888888888889 1 Hf_atom [eV] (VASP) 0.0286024 7927AgCd 0.92857142857143 1 Hf_atom [eV] (VASP) 0.114186 7928AgCd 0.95652173913043 1 Hf_atom [eV] (VASP) 0.065135606 7929AgCd 1.00000000000000 12 Hf_atom [eV] (VASP) 0.0 7930Time for openFile(file:/C:/jmol-dev/bobtest/aflow/binary/AgCd.aflow_binary): 288 ms 7931reading 24509 atoms 7932297 models 7933 7934Notice that I could have used a different listing key. 7935 7936You can load just a single composition by filtering with "Ca=x" 7937 7938 load "file:/C:/jmol-dev/bobtest/aflow/binary/AgCd.aflow_binary" {2 2 2} packed filter "ca=0.5" 7939 7940[AgCd] REFERENCE: S. Curtarolo, W. Setyawan, S. Wang, J. Xue, K. Yang, R. H. Taylor, 7941L. J. Nelson, G. L. W. Hart, S. Sanvito, M. Buongiorno Nardelli, N. Mingo, and O. Levy, AFLOWLIB.ORG: a distributed materials properties repository from high-throughput ab initio calculations, Comp. Mat. Sci. 58, 227-235 (2012). 7942[AgCd] REFERENCE: S. Curtarolo, W. Setyawan, G. L. W. Hart, M. Jahnatek, R. V. Chepulskii, R. H. Taylor, S. Wang, J. Xue, K. Yang, O. Levy, M. Mehl, H. T. Stokes, D. O. Demchenko, and D. Morgan, AFLOW: an automatic framework for high-throughput materials discovery, Comp. Mat. Sci. 58, 218-226 (2012). 7943[AgCd] REFERENCE: S. Curtarolo, D. Morgan, and G. Ceder, Accuracy of ab-initio methods in predicting the crystal structures of metals: review of 80 binary alloys, Calphad 29, 163-211 (2005). 7944 794546 models 7946 7947 7948The file loader parses all the -- DATA -- information into arrays, so that can all be accessed using getProperty(). For example: 7949 7950 print getProperty("auxiliaryInfo.models.aflowInfo['space group POST']") print getProperty("auxiliaryInfo.models.aflowInfo['Hf_atom [eV] (VASP)']") 7951 7952JmolSQL selectors can be used to select out specific records. 7953 7954 print getProperty("auxiliaryInfo.models.aflowInfo[SELECT Cb,'Hf_atom [eV] (VASP)' WHERE Cb > 0.4 and Cb< 0.6]") 7955 7956 7957Jmol adds two additional fields, "fileModelNumber" and "modelNumber": 7958 7959 print getProperty("auxiliaryInfo.models.aflowInfo[SELECT modelNumber,Ca,'Hf_atom [eV] (VASP)' WHERE Cb > 0.4 and Cb< 0.6]") 7960 7961 7962JmolVersion="14.3.14_2015.06.01b" 7963 7964bug fix: unncessary dialog with LOAD ? when using JSmol/HTML5 7965 7966JmolVersion="14.3.14_2015.06.01" 7967 7968new feature: preliminary AFLOW AaBb binary file reader 7969 - see http://www.aflowlib.org/binary_alloys.php 7970 7971new feature: NBO cfi file writer 7972 - print data({*}, "cfi") 7973 7974bug fix: draw pointgroup also draw arrow broken 7975bug fix: write("pdb") not returning string data and instead creating file "pdb" 7976bug fix: VASP reader for in-line atom labels 7977bug fix: measure pending dashed line does not appear 7978 7979JmolVersion="14.3.14_2015.05.25" 7980 7981release; synchronized with 14.2.14 7982 7983JmolVersion="14.3.13_2015.05.23" 7984 7985bug fix: select conformation=1 broken for non-bio CIF data 7986 7987JmolVersion="14.3.13_2015.05.19" 7988 7989bug fix: CML reader not recognizing "fragment/join/fragment" sequence 7990 from http://www.xml-cml.org/schema/schema3/schema.xsd (Stuart Chalk) 7991 7992JmolVersion="14.3.13_2015.05.14" 7993 7994new feature: set contextDepthMax 7995 -- sets the maximum depth of contexts, including {}, if{} for{} while{} function{} 7996 as well as the SCRIPT command and a number of expression-related situations 7997 -- default 100 7998 -- minimum 10 7999 8000bug fix; 05.12 breaks Jmol.evaluate and Jmol.evaluateVar and print getProperty("variableInfo", exp) 8001bug fix: using historyLevel = ... or scriptlevelMax = ... doesn't really set these 8002bug fix: a number of settings have not been excluded from state scripts, which 8003 only should save critical information for the state, not general processing 8004 -- no longer saved in state 8005 -- no longer read using "set xxxxx" when that is in a state script 8006 -- includes: historylevel;imagestate;iskiosk;useminimizationthread; 8007 -- includes: showkeystrokes;saveproteinstructurestate;testflag1;testflag2;testflag3;testflag4 8008 8009JmolVersion="14.3.13_2015.05.12" 8010 8011bug fix: re-entering functions loses if/else state 8012bug fix: more issues with low-resolution linear-z index lines. 8013 Need to compromise for isosurfaces and nucleic cartoons and bonds 8014 -- which became very slow to render with precision Z placement. 8015 8016JmolVersion="14.3.13_2015.05.08" 8017 8018bug fix: BIND can cause fault 8019bug fix: write "?" can cause fault when [x] box is pushed on window 8020bug fix: set picking dragMolecule, set picking dragMinimizeMolecule, set picking dragLigand broken 8021 8022JmolVersion="14.3.13_2015.05.07" 8023 8024bug fix: x = plane(@1 @2 @3) fails 8025 8026bug fix: isolated bio groups such as AMP, which are not part of biopolymers, can result in crashes 8027 when colored or queried about their parameters (Hiroufmi Suzuki) 8028 8029bug fix: new JmolSQL ** feature needed a tweak 8030 8031JmolVersion="14.3.13_2015.05.06" 8032 8033new feature: JmolSQL "drilling" in associative arrays for sub arrays with a given property (Rolf Huehne) 8034 -- NOTE ADDED: replaced by WHEREIN in Jmol 14.3.16 8035 -- uses "**" as the SELECT option, sort of the way ** sometimes means "subdirectories of" 8036 -- returns an associative array or "" if no match 8037 -- example: 8038 8039 x = [key_1:[type:"a"],key_2:[type:"b"],key_3:[type:"a"]] 8040 z = getProperty(x, "[SELECT ** WHERE type='a']"); 8041 show z; 8042 8043 z = { "key_1":{ "type":"a" },"key_3":{ "type":"a" } } 8044 8045JmolVersion="14.3.13_2015.05.05" 8046 8047bug fix: set structureModifiedCallback does not work with "JmolScript:...." 8048 8049JmolVersion="14.3.13_2015.05.03" 8050 8051new feature: for msCIF (modulated structure files), setting modulation or using vibration ON 8052 now also indicates occupancy changes 8053bug fix: sawtooth and Legendre displacement modulations should set occupancy to 0 outside of their range. 8054 8055JmolVersion="14.3.13_2015.05.02" 8056 8057bug fix: color atoms property vxyz crashes Jmol if no vibrations 8058bug fix: with msCIF, select subsystem=1 does not select anything 8059bug fix: vibrations in trajectories not animating (14.3.6_2014.08.14) 8060 8061JmolVersion="14.3.13_2015.04.30d" 8062 8063bug fix: reading Molden file with no MOs crashes Jmol 8064 8065JmolVersion="14.3.13_2015.04.30c" 8066 8067bug fix: color $id [30 40 50] translucent 0.8 fails 8068bug fix: Jmol.jar was requiring Java 1.7 8069bug fix: POV-Ray fixed for perspective and orthographic cameras using new z-depth formula. 8070thanks: Many thanks to Laurent Proville for motivating me to look in this issue. 8071 8072JmolVersion="14.3.13_2015.04.29" 8073 8074bug fix: perspective renderer was using the wrong formula for calculating Z depth of pixels: 8075 8076 * Note added 4/2015 BH: 8077 * 8078 * Well, it turns out that the calculation of the intermediate pixel z value 8079 * in all methods involving rasterization of lines is incorrect and has been 8080 * incorrect since Jmol's inception. I noticed long ago that large triangles such as 8081 * produced in DRAW could incorrectly overlay/underlay other objects, but I could 8082 * never determine why. It turns out that the assumption that z-value is linear 8083 * across a line when perspectiveDepth is TRUE is simply incorrect. 8084 * 8085 * Basically, the function z(x) is non-linear. Treating it as simply a 8086 * linear function results in oddities where lines and planes 8087 * -- particularly created using DRAW and large distances -- appear 8088 * to be where they are not. 8089 * 8090 * Through Jmol 13.3.13 we had the standard linear relationship: 8091 * 8092 * z = (x - xa) / (xb - xa) * (zb - za) + za 8093 * 8094 * I worked it out, and, amazingly, it should be 8095 * 8096 * z = (xb - xa) * za * zb / ((xb - x) * zb + (x - xa) * za) 8097 * 8098 * Note that it is still true that when x = xb, z = zb 8099 * and when x = xa, z = za, as required. 8100 * 8101 * This equation can be rearranged to 8102 * 8103 * z = a / (b - x) 8104 * 8105 * where 8106 * 8107 * a = (xb - xa) * za * (zb / (zb - za)) 8108 * 8109 * and 8110 * 8111 * b = (xb * zb - xa * za) / (zb - za) 8112 * 8113 * These values must be floats, not integers, to work properly, because 8114 * these are extrapolations from long distances in some cases. So there is 8115 * considerable overhead there. It will take some experimentation to figure this 8116 * out. 8117 * 8118 * The practical implications are for line, cylinder, and triangle drawing. 8119 * First-pass corrections are for axes and DRAW objects. They tend to be the 8120 * larger objects that result in the issue. 8121 * 8122 * Also affected is POV-Ray output, because right now POV-Ray is created using 8123 * perspective on and plotted as though it were orthographic, but although that 8124 * works in x and y, it does not work in z! 8125 * 8126 8127 8128JmolVersion="14.3.13_2015.04.27" 8129 8130bug fix: with set dragSelected, highlight does not recognize whole molecule 8131 8132JmolVersion="14.3.13_2015.04.25" 8133 8134code: integration of changes made for SwingJS into JSmol code 8135 8136 8137JmolVersion="14.3.13_2015.04.22" 8138 8139bug fix: loading mmCIF data in-line loses multi-character chain IDs 8140 8141bug fix: with set picking dragSelected with allowMoveAtoms FALSE and allowRotateSelected TRUE 8142 rotating the atoms with ALT-left ignores setting of allowMoveAtoms 8143 8144 // see footnotes below for ^, #, *, and $ 8145 // 8146 // settings:^ set picking dragSelected set dragSelected 8147 // 8148 // move:# drag alt-shift-drag 8149 // rotate:#* alt-drag alt-drag 8150 // z-shift:# shift-drag (n/a) 8151 // 8152 // double-click:$ (starts measurement) (sets selected if set picking SELECT) 8153 // 8154 // ^ set picking dragSelected overrules set dragSelected 8155 // # all actions involve whole molecules unless set allowMoveAtoms TRUE 8156 // * rotate requires set allowRotateSelected TRUE 8157 // $ set dragSelected allows setting of a new molecule with double-click when set picking SELECT 8158 // $ set picking dragSelected allows measurements with double-click, as usual 8159 8160 8161code: introduce use of (int... ) syntax in ActionManager simplifies logic 8162 8163JmolVersion="14.3.13_2015.04.17" 8164 8165bug fix: for in/from broken in 14.3.13_2015.04.05 8166 -- entering a FOR loop with empty has pops {...} context one level too far, exiting functions 8167 8168JmolVersion="14.3.13_2015.04.12" 8169 8170code: refactoring PT.isAxxx to AU.isAxxx (array type testing) 8171 8172JmolVersion="14.3.13_2015.04.09b" 8173 8174feature update: EBI validation site updated from wwwdev.ebi to www.ebi 8175 -- for example, LOAD *1crn/val 8176 8177JmolVersion="14.3.13_2015.04.09" 8178 8179bug fix: MO calculation hanging when G orbitals are present 8180 8181JmolVersion="14.3.13_2015.04.08" 8182 8183bug fix: echo id myecho "testing" reports "myecho" instead of "testing" 8184 8185JmolVersion="14.3.13_2015.04.07" 8186 8187bug fix: Molden reader broken for Dalton2015 version 8188 8189JmolVersion="14.3.13_2015.04.05b" 8190 8191bug fix: language switching not working from popup menu; 8192bug fix: language bundles not processed in the correct order for variants 8193 8194JmolVersion="14.3.13_2015.04.05" 8195 8196code: rewriting FOR loop code to enhance performance 8197 8198new feature: set showScript -1 8199 -- turns off history (on when commands come from the keyboard) 8200 -- stops every-second JavaScript interruptions -- Caution! 8201 8202new feature: for (var i FROM [a, b]) {...} 8203 -- same as for (var i = a; i <= b; i++) when a < b 8204 -- same as for (var i = a; i >= b; i--) when a > b 8205 -- much more efficient 8206 8207bug fix: for (var i in hashArray) {....} broken (also in 14.2; not fixed there) 8208 8209JmolVersion="14.3.13_2015.04.02" 8210 8211bug fix: [3 4 5].min should give integer 3, not decimal 3.0 (same with .max) 8212 8213JmolVersion="14.3.13_2015.04.01b" 8214 8215bug fix: hash values created from named int variables do not clone properly 8216bug fix: hash[key1]..key2.push() does not work properly 8217bug fix: show hash where one of the elements is an empty hash ignores that key 8218bug fix: local var xxx with same name of ..xxx forces lower case xxx 8219 8220JmolVersion="14.3.13_2015.04.01" 8221 8222bug fix: local var xxx with same name of foo..xxx forces lower case xxx 8223 8224new feature: draw polygon [@1 @2 @3...] 8225 -- fills polygon with triangles 8226 -- order is important -- must be cw or ccw 8227 -- does not have to be convex 8228 -- indeterminate result if atoms are not coplanar 8229 -- example: 8230 8231 load $caffeine 8232 draw polygon [@5 @7 @12 @13 @1 @3] 8233 8234new feature: ".[a]" notation extended to x.. and allows mixing with .a. 8235 function a(){return 1} 8236 x = [A:[1,2,3], a:[4,5,6]] 8237 $ print x.a.[a()] 8238 4 8239 $ print x..a..[a()] 8240 4 8241 $ print x.a..[a()] 8242 4 8243 $ print x..a..[a()] 8244 4 8245 $ print x..a.[a()] 8246 4 8247 $ y = x.a[1][2]; show y 8248 y = [ 4,5 ] 8249 8250JmolVersion="14.3.13_2015.03.30" 8251 8252bug fix: {hash}.Key = value will be stored as "key" rather than "Key" if "key" is also a user-defined function. 8253bug fix: {hash}.key will fail if "key" is also a user-defined function. 8254bug fix: print a where a is an associative arrays fails in JavaScript (since jmol-14.3.7_2014.08.25) 8255 8256JmolVersion="14.3.13_2015.03.27" 8257 8258new feature: "." notation extended to x.[a] 8259 disambiguifies x[a][b][c]... 8260 allows for variables and expressions in "." notation 8261 i = 2 8262 x = [1,[2 3 4 [5 6 7]],3] 8263 show x[2].[4].[i] 8264 ==> "6" 8265 x = [ 1,[ 2,3,4,[ 5,6,7 ],{ "testing":"now" } ],3 ] 8266 x[i + 1].[5].["testing"] = "again" 8267 show x 8268 ==> x = [ 1,[ 2,3,4,[ 5,6,7 ],{ "testing":"again" } ],3 ] 8269 8270 8271JmolVersion="14.3.13_2015.03.25" 8272 8273bug fix: translate SELECTED {1 1 1} @1 not working (works fine without the SELECTED keyword) 8274 8275JmolVersion="14.3.13_2015.03.23" 8276 8277bug fix: isosurface solvent will fail if max volume is smaller than cavity max even though not cavity 8278 8279JmolVersion="14.3.13_2015.03.21" 8280 8281bug fix: JmolVersion="14.3.13_2015.03.20b" broke JSmol due to error in coding URL.js 8282 8283JmolVersion="14.3.13_2015.03.20b" 8284 8285bug fix: popup menu Symmetry broken 8286bug fix: PDB reader does not save unit cell on simple load 8287 8288JmolVersion="14.3.13_2015.03.20" 8289 8290bug fix: use of {*}.xxxx = for(i;{*};....) fails 8291 8292JmolVersion="14.3.13_2015.03.19" 8293 8294bug fix: VASP chgcar surface reader fails to recognize 10-per-line file format 8295 8296JmolVersion="14.3.13_2015.03.16" 8297 8298bug fix: label <color ...> xxxx </color> does not calculate stringwidth properly; set labeloffset 0 incorrect 8299 8300JmolVersion="14.3.13_2015.03.13" 8301released 8302 8303bug fix: fonts too small with antialiasDisplay (14.2.12) 8304bug fix: PNG generation uses iTXt instead of tEXt; problems with diacritical marks (German translation of "March" month in creation time) 8305 8306JmolVersion="14.3.13_2015.03.11" 8307 8308bug fix; pdb and mmcif readers not doing biomolecule 2 properly 8309bug fix: load filter "bychain" broken 8310bug fix: x.a.push(6) does not work 8311bug fix: (x.a).push(3) does not work 8312bug fix: (x.a)[3] = 5 does not work 8313 8314JmolVersion="14.3.13_2015.03.10" 8315 8316new feature: print command by itself clears JavaScript and Jmol consoles 8317 8318new feature: color polyhedra red blue (edge color blue) 8319 8320bug fix: show state/xxxx does not work 8321 8322JmolVersion="14.3.13_2015.03.07" 8323synchronized with 14.2.12_2015.03.07 8324 8325bug fix: x[2] = y[2] fails 8326 8327new feature: NBO command with no arguments starts NBO panel (Java application only) 8328 8329JmolVersion="14.3.12_2015.03.05b" 8330synchronized with 14.2.13_2015.03.05 8331 8332bug fix: reading legacy mapped plane (2ptn-molecular_slice1.jvxl.txt) crashes Jmol 8333 8334JmolVersion="14.3.12_2015.03.05" 8335synchronized with 14.2.13_2015.03.05 8336released 8337 8338bug fix: (14.3 only) write VRML|MAYA|OBJ|POVRAY broken 8339 8340JmolVersion="14.3.12_2015.03.01" 8341 8342bug fix: late discovery of mmCIF format does not load secondary structure 8343bug fix: reading PNGJ file saved after load with /dssr or /rna3d annotations ignores annotations 8344bug fix: {*}.find("~d~G:C") broken (find with bioSMARTS) 8345 8346new feature: image # the current view as an image 8347new feature: image 300 400 # adjustable size 8348new feature: image "c:/temp/t.bmp" # image from a file 8349 8350new feature: image "" close # close the current view image 8351new feature: image "c:/temp/t.bmp" close # close image from a file 8352new feature: image CLOSE # close all 8353 8354new feature: image ID ... 8355 -- id for IMAGE CLOSE; 8356 -- displayed in title of frame 8357 -- examples: 8358 8359 image ID "test" 8360 image ID "test" 400 500 8361 image ID "test" "bob.png" 8362 image ID "test" close 8363 8364new feature: write IMAGE 8365 -- same as IMAGE 8366 8367new feature: write IMAGE 500 500 8368 -- same as IMAGE 500 500 8369 8370new feature: (JavaScript/HTML5; see JSmol_Console.java) 8371 // page designer may indicate one of three divs for images on the page: 8372 // <appletID>_Image_app_holder for IMAGE command by itself (current app image) 8373 // <appletID>_Image_<cleaned id or filename>_holder for IMAGE ID "xxx" ... or IMAGE "xxx" 8374 // where cleaning is with .replace(/\W/g,"_") 8375 // <appletID>_Image_holder for all images not identified as above 8376 // if a page div is not identified, then the image will be placed in a new floating div 8377 8378 8379note: experimental SHOW IMAGE now replaced by new command IMAGE 8380 8381JmolVersion="14.3.12_2015.02.26" 8382 8383bug fix: imageFontScaling integer instead of float; does not scale appropriately on resize 8384bug fix: writing image of MO fails to write info (Jmol 12 or before) 8385 8386JmolVersion="14.3.12_2015.02.25c" 8387bug fix: legacy non-XML JVXL files with color mapping should default to RGB color scheme 8388bug fix: Jmol 14.1.2_2013.12.13 disabled some mmCIF file reading for non-wwPDB mmCIF files 8389 8390 8391JmolVersion="14.3.12_2015.02.25b" 8392 8393new feature: random(low,high,seed) 8394 -- provides a new seed for the random() function 8395 -- seed may be any 48-bit integer. 8396 -- x = random(0.0,1.0,121231223) 8397 -- low and high are simply placeholders 8398 -- does return the first number from this seed 8399 -- note that Java and JavaScript will have DIFFERENT seedings 8400 -- utilizes https://github.com/davidbau/seedrandom/blob/released/seedrandom.js 8401 (appended to java.util.Random.js) 8402 8403JmolVersion="14.3.12_2015.02.25" 8404 8405new feature: show chemical drawing 8406new feature: show drawing 8407 -- pops up window with drawing of model 8408 -- service is from NCI 8409 -- uses SMILES if structure was not loaded using $... (NCI) or :... (PubChem) 8410 8411JmolVersion="14.3.12_2015.02.24" 8412 8413// 02.28 removes "show " from these 8414 8415new feature: show IMAGE 8416 -- pops up a frame with the current image 8417 -- allows "Save As..." 8418 8419new feature: show IMAGE "filename" 8420 -- pops up a frame with the image loaded from a file 8421 -- allows "Save As..." 8422 8423new feature: show image 300 400 # adjustable size 8424new feature: show image none # closes all image panels 8425new feature: show image CLOSE # "all" presumed 8426new feature: show image CLOSE "" # the model image 8427new feature: show image CLOSE "c:/temp/t.bmp" # the image for this file 8428 8429new feature: write IMAGE 8430 -- same as SHOW IMAGE 8431 8432new feature: write IMAGE 500 500 8433 -- same as SHOW IMAGE 500 500; allows customization of width and height 8434 8435new feature: Windows BMP image reading 8436 -- reads 24-bit (full color) as well as 16-, 8-, 4-, 2-, and 1-bit color palette modes 8437 -- 14-byte and 40-byte headers only 8438 -- does not read compressed modes 8439 8440bug fix: restriction against getting SMILES string for biomolecule lifted 8441bug fix: end-on bonds may appear to disappear 8442bug fix: JavaScript -2.format("%8.3") gives 2.000 not -2.000 8443 8444bug fix: minimizer treats hydrogen bonds as covalent single bonds 8445 8446code: javajs.img.BMPDecoder 8447code: org.openscience.jmol.app.jmolpanel.ImageDialog 8448 8449JmolVersion="14.3.12_2015.02.19" 8450 8451bug fix: CML reader does not show proper atom names for crystal structures 8452bug fix: POV-Ray renderer does not show proper backbone width (since forever) 8453bug fix: POV-Ray renderer with a translucent surface shows bonds that should be hidden (since 13.1) 8454bug fix: unitcell info for PDB file biomolecule does not show "biomolecule 1" 8455 8456JmolVersion="14.3.12_2015.02.18" 8457 8458bug fix: load filter "biomolecule 1" broken in 14.3.12_2015.02.14 8459 8460JmolVersion="14.3.12_2015.02.17b" 8461 8462bug fix: writing to PNGJ data to .ZIP file should create a standard ZIP file. 8463 -- especially useful now that some zip readers will not open PNGJ files as zip files 8464 (with newer 7zip you can right-click file, then select 7zip...open archive...zip) 8465 8466 var x = load("t.png", true) 8467 write var x "t.zip" 8468 8469 8470bug fix: VASP POSCAR fix for atom symbols in header line 8471 8472JmolVersion="14.3.12_2015.02.17" 8473 8474new feature: set zshadePower 0 8475 -- allows examination of depth buffer and writing to image for external processing 8476 8477 set zShadePower 0 8478 set zSlab 100 8479 set zDepth 0 8480 set zShade true 8481 write z.jpg 8482 set zShade false 8483 write rgb.jpg 8484 8485JmolVersion="14.3.12_2015.02.16" 8486 8487new feature: x.dot(y) for planes and points -- was present but undocumented and not working correctly 8488new feature: (undocumented) x.distance.all(y) 8489 8490new feature: load MUTATE "==LYS" 8491 -- loads using set appendNew false 8492 -- bypasses regeneration of secondary structure 8493 -- not to be documented 8494 -- issued by MUTATE command only 8495 8496bug fix: write isosurface "./xxx.jvxl" broken -- concatenates "isosurface" with filename 8497bug fix: write ISOSURFACE by itself broken (similarly for write POINTGROUP and others) 8498bug fix: MUTATE command adjustments for saving state 8499bug fix: MUTATE command should not force recreation of shapes 8500bug fix: MUTATE command should not change backbone atoms 8501bug fix: x = measure(a,b) where b is {none} crashes Jmol 8502bug fix: compare({atomA},{atomsB}) should return standard 4x4 matrix, not one involving a rotation 8503 about an atom center 8504 -- (not adjusted when ROTATESELECTED was fixed in 14.3.11_2014.12.17; Angel Herraez) 8505 8506code: org.jmol.modelsetbio.BioExt 8507 -- extracts struts, quaternion plots, polymerInfo, mutate into optional module 8508 -- saves 15K in corebio.js 8509 8510JmolVersion="14.3.12_2015.02.11" 8511 8512bug fix: 14.3.12_2015.02.09 breaks MODEL "someTitle" syntax 8513bug fix: MUTATE not properly saved in state 8514bug fix: "USER MOD" not accepted at beginning of PDB file (MolProbity breaking PDB format here) 8515bug fix: 02.10 may break loading ligand files 8516 8517JmolVersion="14.3.12_2015.02.10" 8518 8519bug fix: color $contact1 "roygb" range -0.5 1.0; broken (in state after using CONTACT) 8520bug fix: mmCIF reader does not flag first model of a multimodel set as type PDB 8521 8522 8523JmolVersion="14.3.12_2015.02.09" 8524 8525new feature: frame align {atoms} FIXED 8526 -- shifts atom positions in each frame to match first atom in {atoms} 8527 -- unlike just frame align {atoms}, frame * will still show alignment 8528 -- objects such as DRAW and ISOSURFACE will NOT be shifted 8529 -- needs testing 8530 8531new feature: frame align [modelNo] [pt] 8532 -- FIXED is assumed 8533 -- used in state; shifts a model by a specific amount after removing any current frame alignment 8534 8535JmolVersion="14.3.12_2015.02.07" 8536released 8537 8538bug fix: set meshScale is not being applied to isosurface contours 8539bug fix: zoomTo{xxx} 0 does not center (broken in 13.1.16_dev_2013.05.23) 8540bug fix: appending a model to a model with data can fail 8541bug fix: 02.04 select conformation=1 broken 8542bug fix: 02.04 select within(chain,...) broken 8543 8544bug fix: hydrogen addition should not follow component file 8545 ILE7 HG12 != ILE7 HG13 8546 ILE7 HG13 != ILE7 HG12 8547 8548 ARG10 HB2 != ARG10 HB3 8549 ARG10 HB3 != ARG10 HB2 8550 ARG10 HG2 != ARG10 HG3 8551 ARG10 HG3 != ARG10 HG2 8552 ARG10 HD2 != ARG10 HD3 8553 ARG10 HD3 != ARG10 HD2 8554 8555 LEU18 HB3 != LEU18 HB2 8556 LEU18 HB2 != LEU18 HB3 8557 8558 PRO19 HD2 != PRO19 HD3 8559 PRO19 HD3 != PRO19 HD2 8560 8561 ILE25 HG12 != ILE25 HG13 8562 ILE25 HG13 != ILE25 HG12 8563 8564 8565 8566JmolVersion="14.3.12_2015.02.04" 8567released 8568 8569new feature: print data({*},"xyz") 8570 -- (lower case) writes only atom data lines 8571 8572new feature: print data({*},"XYZ", true) 8573 -- third parameter TRUE writes all trajectories 8574 8575bug fix: show mouse fails in JavaScript 8576 -- we cannot test using AU.isAI() in org.jmol.viewer.binding.Binding 8577 -- because of a Java2Script compiler creates standard array [...] 8578 -- from new int[] {....} whereas it should create Clazz.newArray() and fill it 8579bug fix: writing of file formats was inconsistent between WRITE and data() (not fixed in 14.2) 8580bug fix: Jmol writing of PDB file data did not include TER records (not fixed in 14.2) 8581bug fix: label %r should print "1" for non-PDB file atoms 8582bug fix: 01.30 mutate {xxx} ~... skips first-listed replacement group identifier 8583bug fix: 01.29 breaks loading non-trajectory file after a trajectory is loaded 8584 8585JmolVersion="14.3.12_2015.01.30b" 8586 8587bug fix: select %w %x %y %z not implemented 8588bug fix; lcaoCartoon broken in 14.3.10_2014.11.27/14.2.12_2015.01.22 8589bug fix: isosurface id surf1 solvent; select within(2.0, $surf1) broken 8590 8591JmolVersion="14.3.12_2015.01.30" 8592 8593new feature: MUTATE command 8594 -- operates only on last model present if multiple models are loaded 8595 -- replaces one or more amino acids group with others 8596 -- can read from RCSB or from user-specified file 8597 -- examples: 8598 mutate 33 lys // replace resno=33 with lysine 8599 mutate @3 arg // replaces group of atom 3 with arginine 8600 mutate @r gly // replaces groups in variable r with glycine 8601 mutate 22 "myfile.cif" // user-defined replacement 8602 mutate {1-3} ala // replace first three residues with alanine 8603 mutate {1-5} GLVAG // (sequence codes) replace residues 1-5 with gly-leu-val-ala-gly 8604 mutate {1-3} ~LYS // (force 1-character sequence codes) replace 1-3 with leu-tyr-ser 8605 mutate {1-3} A?L // replace 1 with ala, 3 with leu; skip 2 8606 mutate {within(sequence, "GAT")} GYT // replace locations of GAT with GYT (needs testing) 8607 mutate 35 @fname // replaces resno=33 with file data (use "==ALA" or "~A" for RCSB) 8608 mutate {r} his // same as above; r must be an atom selection 8609 8610 8611bug fix: code fixes relating to calculate structure in 01.29 8612 8613JmolVersion="14.3.12_2015.01.29" 8614 8615bug fix: 01.28 version does not write correct PDB CONECT records 8616bug fix: 01.22 version may not correctly clear rasmol hydrogen bonds in trajectories 8617code: simplification of BioModel; extraction of legacy Chime messaging into ChimeMessenger class 8618code: extraction of org.jmol.modelset.Trajectory 8619 8620JmolVersion="14.3.12_2015.01.28" 8621 8622bug fix: write "t.pdb" now correctly sequences groups and atoms, even after mutation 8623 8624new feature: resno is user settable 8625 8626JmolVersion="14.3.12_2015.01.27" 8627 8628bug fix: select thisModel does not select all atoms in visible frame set 8629 8630new feature: @@3 for "atomno=3 and thisModel" 8631 -- provides a function distinct from @3 when there are multiple models 8632 -- includes all atoms in current frame set 8633 -- example: 8634 8635 load "cyclohexane_movie.xyz" 8636 select @10 8637 35 atoms selected 8638 select @@10 8639 1 atom selected 8640 frame [1 2 4 6] 8641 select @@10 8642 4 atoms selected 8643 @@10.label = "atom 10" 8644 8645 8646new feature: frame [1 3 5 6] 8647 -- sets limited number of frames for animation and frame * 8648 -- same as animation frame [1 3 5 6]; frame * 8649 8650new feature: CGO SCREEN option 8651 -- CGO [SCREEN z ...] 8652 -- reads CGO 2D VERTEX records as screen coordinates, installing them at a depth of z 8653 - where z > 0 indicates a percent (0.01 far back; 100 front) 8654 - z < 0 indicates an absolute screen z value as -z. 8655 - uses 2D VERTEX and other CGO point elements, not 3D 8656 -- example: a static border 20% from the back of the model 8657 8658cgo test2 [ SCREEN 20 8659 BEGIN LINE_LOOP 8660 VERTEX 10 10 8661 VERTEX 90 10 8662 VERTEX 90 90 8663 VERTEX 10 90 8664 END 8665] 8666 8667new feature: CGO UVMAP option 8668 -- CGO [UVMAP @origin @x @y x0 y0 x1 y1 scaleX scaleY ...] 8669 -- 2D VERTEX records are scaled and mapped to a plane defined by @origin @x @y 8670 -- example: a parallelogram based on atoms 1, 6, and 11 8671 8672cgo test1a [ UVMAP @1 @6 @11 0 0 80 80 1 1 8673 BEGIN LINE_LOOP 8674 VERTEX 0 0 8675 VERTEX 80 0 8676 VERTEX 80 80 8677 VERTEX 0 80 8678 END 8679] 8680 8681new feature: CGO PostScript option 8682 -- CGO [ PS @origin @x @y ] data "PS" [primitive encapsulated postscript data] end "PS" 8683 -- maps 2D EPS data onto a plane defined by an origin point, an x-axis point, and a y-axis point. 8684 -- somewhat similar to UV mapping of textures in other programs 8685 -- allows 2D data to be superimposed on a model. 8686 -- a crude implementation still in development; doesn't properly implement stroke; 8687 -- just for drawing lines; does not implement PS fill, gsave, grestore 8688 -- just moveto, lineto, newpath, closepath, setlinewidth, scale 8689 -- uses %%BoundingBox x0 y0 x1 y1 prolog record 8690 to map [x0 y0] to @origin, [x1 0] to @x, and [0 y1] to @y 8691 -- used for NBO contour mapping 8692 8693CGO[ PS @{point(-5,-5,0)} @{point(5,-5,0)} @{point(-5,5,0)] data "PS" 8694%!PS-Adobe-2.0 EPSF-1.2 8695%%Creator: Bob Hanson (from NBO) 8696%%Title: nbo orbital slice 8697%%CreationDate: 1/26/2015 5:36 AM 8698%%DocumentFonts: Helvetica 8699%%BoundingBox: 211 300 428 518 8700%% note: above numbers are from 0.24*881 0.24*1781 0.24*1256 0.24*2156 8701%%EndComments 8702%%EndProlog 8703 0.2400 0.2400 scale 8704 newpath 8705 3 setlinewidth 8706 newpath 8707 881 1256 moveto 8708 1781 1256 lineto 8709 1781 2156 lineto 8710 881 2156 lineto 8711 closepath 8712 stroke 8713 1241 1717 moveto 8714 1250 1713 lineto 8715... 8716 stroke 8717%%Trailer 8718showpage 8719end "PS" 8720 8721bug fix: CGO LINE_LOOP not closing 8722bug fix: configuration 1 broken 8723bug fix: display configuration=1 broken (in Jmol 12.0, 2011) 8724 8725JmolVersion="14.3.12_2015.01.25" 8726 8727bug fix: image echos broken 8728 8729JmolVersion="14.3.12_2015.01.24" 8730 8731new feature: load NBO CH3CH2CH3 8732 -- retrieves the stucture of propane (in this case) from a local NBO server. 8733 -- including inorganics. For example: 8734 8735 load nbo "Cr 3::acac" 8736 load nbo "Cr 2:::Bz" 8737 8738code: new interface for "services" that can provide valuable information to Jmol 8739 over ports or by running executable processes. 8740 -- currently just NBO 8741 8742 8743bug fix: MOPAC reader loses two atoms in IRC calculation for MOPAC 2012 8744bug fix: _slabPlane and _depthPlane not set immediately when slab and depth are set 8745 8746JmolVersion="14.3.12_2015.01.22" 8747released simultaneously with 14.2.12 8748 8749bug fix: color rockets amino fails 8750bug fix: "color TRANSLUCENT -1" (screened translucency) restored; 8751 -- had been removed in 14.3.12_2015.01.20 because broken in jmol-11.7.27_02-27-09 8752bug fix: atom screened translucency not saved in state 8753bug fix: isosurfaces with screened translucency not restored from JVXL with that 8754bug fix: screened translucent bonds broken 8755 8756code: adding org.jmol.g3d.PixelatorScreened, PixelatorT 8757 8758JmolVersion="14.3.12_2015.01.21" 8759 8760new feature: load =cod/1000041 loads Crystallographic Open Database CIF files 8761 8762bug fix: load =xxx/..... (special database) fails 8763bug fix: (JavaScript) using "Helvetica Neue, Sans-serif" instead of just "Sans-serif" (org.jmol.awtjs2d.JSFont.java) 8764 - gets around Safari bug in Safari v. 7 8765 8766 8767JmolVersion="14.3.11_2015.01.20" 8768released simultaneously with 14.2.11 8769 8770bug fix: Languages lost in Jmol Application 8771 8772new feature: select :"X" where quotes are used now forces case sensitivity 8773 8774bug fix: DIPOLE command broken in Jmol 14.3.10_2014.11.27 (OK in 14.2) 8775 8776bug fix: for old PDB files with no chain ID, "select :" fails 8777 8778JmolVersion="14.3.11_2015.01.18" 8779 8780new feature: Jmol Application Tools|NBO... (Experimental Only; requires NBOServer) 8781 8782bug fix: Typing select his and :A will set chain selection to be case sensitive due to a bug that 8783 processes "his an" as "{his:}an". 8784 8785 8786JmolVersion="14.3.11_2015.01.15" 8787 8788bug fix: modulation x.x and modulation n not described correctly in documentation 8789 8790new feature: modulation T x.x 8791new feature: modulation Q n 8792new feature: modulation T {t1 t2 t3} 8793new feature: modulation Q {q1 q2 q3} 8794 8795 8796JmolVersion="14.3.11_2015.01.12" 8797 8798bug fix: color PMESH reader not working properly 8799 8800JmolVersion="14.3.11_2015.01.11" 8801 8802bug fix: JSpecView -- version/date not appearing in menu 8803bug fix: GIF images bleed into background. 8804bug fix: GIF writing of xxx.gif (three character name) broken. 8805bug fix: proper isosurface capping. Test code: 8806 8807 function test(i) { 8808 set echo top left 8809 echo @i 8810 isosurface slab none 8811 isosurface cap plane {1 1 1 1} @i 8812 refresh 8813 } 8814 8815 load 1crn.pdb 8816 rotate y 60 8817 rotate y -120 8818 isosurface s1 vdw; 8819 display none 8820 center $s1 8821 for (var i = -2 ; i < 58; i++){test(i)} 8822 8823 8824JmolVersion="14.3.11_2014.12.21" 8825 8826code: major refactoring into BioModel of PDB-specific code in ModelSet 8827 8828new feature: CGO (undocumented command from Jmol 13.1.16; never tested) 8829 8830cgo test1a [ 8831 BEGIN LINES 8832 VERTEX 0 0 0 VERTEX 2 2 2 8833 VERTEX 2 2 2 VERTEX 3 2 0 8834 END 8835] 8836 8837cgo test1b [ 8838 BEGIN LINE_LOOP 8839 VERTEX 4 0 0 8840 VERTEX 6 2 2 8841 VERTEX 5 2 0 8842 END 8843] 8844 8845cgo test1c [ 8846 BEGIN LINE_STRIP 8847 VERTEX 4 0 0 8848 VERTEX 6 2 2 8849 VERTEX 5 2 0 8850 END 8851] 8852 8853cgo test2 [ 8854 BEGIN POINTS 8855 COLOR 255 0 0 8856 LINE 0 0 3 0 0 3 2 2 8857 COLOR 0 255 0 8858 LINE 0 0 3 2 2 4 2 0 8859 END 8860] 8861 8862cgo test2b [ 8863 BEGIN LINE_LOOP 8864 DIAMETER 0.3 8865 VERTEX 4 0 0 8866 VERTEX 6 2 2 8867 VERTEX 5 2 0 8868 END 8869] 8870 8871 8872new feature: NBO command 8873 -- same as MO command, but allows TYPE keyword 8874 -- to be developed with, perhaps, different defaults, 2D slices, etc. 8875 8876new feature: NBO TYPE <nboType> 8877 -- options AO, PNAO, NAO, PNHO, NHO, PNBO, NBO, PNLMO, NLMO, MO 8878 -- results in immediate loading of .32-.41 file if present 8879 -- generally after a .47 archive file has been loaded 8880 8881new feature: ... PLANE {pt1} {pt2} frac12 8882 -- wherever a PLANE parameter is required 8883 -- perpendicular plane frac12 of the distance from pt1 to pt2 8884 8885new feature: x = plane(pt1, pt2, frac12) 8886 -- perpendicular plane frac12 of the distance from pt1 to pt2 8887 8888JmolVersion="14.3.11_2014.12.19" 8889 8890bug fix: JavaScript connect broken 8891 due to j2s failure to create bsAromatic when BondCollection created (14.3.7) 8892 due to j2s bug in instantiating global definitions in super classes using Clazz_prepareFields 8893 8894bug fix: label, echo, and measurement text should not display when deeper 8895 than zSlab with zShade is TRUE 8896bug fix: mmCIF reader load filter biomolecule 1 8897 broken for viruses with symmetry ranges listed as "1-60" with a hyphen 8898bug fix: mmCIF reader coarse-grain load filter bysymop broken 8899bug fix: mmCIF reader coarse-grain load filter bychain broken 8900 8901JmolVersion="14.3.11_2014.12.17" 8902 8903bug fix: rotate selected <4x4 matrix> should not rotate about center of atoms 8904bug fix: use of a subset command will change value of a variable bitset if "select x" is used 8905 -- example: 8906 x = {*} 8907 subset {atomno < 10} 8908 print x // just the first 9 8909 select x // just the first 9 8910 subset all 8911 print x // but now x itself is truncated; this is not supposed to be the case 8912 8913 8914new feature: SYNC nnnn x 8915 -- x is a math expression, possibly just a string, but also possibly an associative array. 8916 8917new feature: SYNC nnnn {type:"command", "command" : command, "var": vname, "data":vdata} 8918 -- script command request, with optional definition of a Jmol user variable prior to execution) 8919 -- for example: 8920 x = {"type":"command","command":"background green; print y", "var": "y", "data":['an array',2]} 8921 sync 3000 x 8922 -- allows simple transfer of data via JSON strings between applications 8923 8924 8925JmolVersion="14.3.11_2014.12.15" 8926 8927FEATURE CHANGE: JmolViewer interface streamlined 8928 -- many esoteric methods removed 8929 -- can be reinstated upon request 8930 -- many are available via public fields 8931 -- for economy of performance and .js file size 8932 8933FEATURE CHANGE: "screened translucency TRANSLUCENT -1" removed (broken in jmol-11.7.27_02-27-09) 8934 8935bug fix: mol2 reader fails to read "THR1" as a PDB group 8936 8937bug fix: PyMOL reader should not reset user variables 8938 8939bug fix: show LIGHTING does not report a full list of settings 8940 8941new feature: reset LIGHTING 8942 public void resetLighting() { 8943 vwr.setIntProperty("ambientPercent", 45); 8944 vwr.setIntProperty("celShadingPower", 10); 8945 vwr.setIntProperty("diffusePercent", 84); 8946 vwr.setIntProperty("phongExponent", 64); 8947 vwr.setIntProperty("specularExponent", 6); // log2 of phongExponent 8948 vwr.setIntProperty("specularPercent", 22); 8949 vwr.setIntProperty("specularPower", 40); 8950 vwr.setIntProperty("zDepth", 0); 8951 vwr.setIntProperty("zShadePower", 3); 8952 vwr.setIntProperty("zSlab", 50); 8953 8954 vwr.setBooleanProperty("specular", true); 8955 vwr.setBooleanProperty("celShading", false); 8956 vwr.setBooleanProperty("zshade", false); 8957 } 8958 8959code: moved PDB-related methods and constants in JC.java to org.jmol.modelsetbio.Resolver 8960 -- allows 50K savings in core.z.js 8961 8962code: reduced method sets for Viewer, ModelSet, and several other classes 8963 -- a bit contrary to standard practice, I know 8964 -- direct access of class fields instead of using methods with just one or two references 8965 -- direct access of class fields instead of using getXXX() and setXXX() 8966 because these are NOT optimized in JavaScript. 8967 8968JmolVersion="14.3.11_2014.12.09" 8969 8970new feature: Castep reading of .ts files 8971 8972bug fix: array.add("\t",array) broken 2014.12.04 8973bug fix: array.split("",true) doesn't handle CSV with new lines in quotes 8974 8975JmolVersion="14.3.11_2014.12.06" 8976 8977new feature: MODEL 1 PROPERTY "xxx" x 8978 -- adds property to model's auxilliaryInfo 8979 -- x may be any valid math expression, for example 8980 model 1 property "test" {1.1}.temperature.mul(0.1) 8981 -- if x is an array, then these become atom data accessible via %{...} 8982 -- for example: 8983 x = "1\n2\n3\n".lines 8984 model 1 property "mydata" x 8985 {model=1}.property_n = {*}.label("%{mydata}") // converts to numbers 8986 8987 data "myd @x" // similar, but not model-based 8988 label %{myd} 8989 8990 8991bug fix: format() function broken 8992bug fix: SHOW DATA should be cleared when a file is loaded 8993 8994JmolVersion="14.3.11_2014.12.04" 8995 8996new feature: "....".split("",true) // CSV split of string to array of arrays 8997new feature: [...].split("",true) // CSV split of array to array of arrays 8998new feature: "...".split("\t",true) // tab split of string to array of arrays 8999new feature: [...].split("\t",true) // tab split of array to array of arrays 9000new feature: [...][...].join("",true) // CSV join to array of lines 9001new feature: [...][...].join("\t",true) // tab join to array of lines 9002 -- example: 9003 x = load("test.csv").split("",true) //from CSV 9004 print x.join("",true) // back to CSV 9005 print x.join("\t",true) // to tab-separated 9006new feature: [...][...].col(n) 9007 -- extracts nth column from an array of arrays 9008 -- example: 9009 x = load("test.csv").split("",true).col(3) //3rd column from CSV 9010 9011 9012JmolVersion="14.3.11_2014.12.02" 9013 9014bug fix: for (x in yUpperCase) fails 9015bug fix: draw SYMOP fails for incommensurate space groups 9016bug fix: incommensurate magnetic CIF reading does not apply magnetic spin operation to spin modulations 9017bug fix: CIF reader can cycle infinitely if loop_ keywords are not followed by any data 9018 9019new feature: Gaussian Input File creation defaults to "opt pop=full gfprint" to generate orbital information by default. 9020FEATURE CHANGE: Gaussian Input File creation moved to Tools menu rather than file...export 9021 9022JmolVersion="14.3.11_2014.11.28" 9023 9024new feature: readers for ESS input types: CFILE, VFILE, MOPAC, NWChem, Gaussian, GAMESS, Orca, PQS 9025 -- CFILE and VFILE require CFI:: and VFI:: (or C:: and V::) 9026 -- MOPAC requires MND:: 9027 -- any of these could also use ZMATRIX:: or INPUT:: 9028 9029 9030bug fix: dynamicMeasurements deprecated in 14.1.1 but 9031 not left in as a valid token to allow use 9032 9033JmolVersion="14.3.11_2014.11.27" 9034 9035new feature: GAMESS input reader 9036new feature: NBO .37 archive file coordinate reader (not MOs) 9037new feature: ZMatrixReader also serves as simple input file reader 9038 for Q-Chem, Gaussian, Jaguar, MolPro, and ADF, as produced by NBO6Pro 9039 9040 9041JmolVersion="14.3.10_2014.11.27" 9042 9043released as 14.3.10 9044 9045(note - these were not fixed in 14.2) 9046 9047bug fix: SPIN BRANCH {atomno=2} {atomno=1} does not work 9048 9049code: scriptExt.IsoExt splits CmdExt into two parts 9050 -- (note this will require changes to build_03_tojs_stable) 9051code: simplification of SurfaceGenerator 9052 9053bug fix: JVXL files do not record selected contour 9054bug fix: isosurface CONTOUR -n broken (in Jmol 12) 9055bug fix: isosurface "t.jvxl" loading of contoured planes broken 9056bug fix: isosurface plane xy map property atomno broken every other time used 9057 9058new feature: isosurface contour 0 "t.jvxl" will override contour selected in JVXL file 9059 9060new feature: isosurface CONTOUR n i 9061 -- n contours; i-th only 9062 9063FEATURE CHANGE: For the ISOSURFACE command, there is an undocumented 9064 syntax that the CUTOFF keyword prior to a number is optional, 9065 as in "ISOSURFACE 2.0". This was never documented and was never 9066 shown in any examples. This change is to require the CUTOFF keyword 9067 9068new feature: isosurface LATTICE {i j k} FIXED 9069 -- creates an isosurface from periodic volumetric data 9070 with the specified number of unit cells 9071 -- "fixed" in the sense that the operation is at load time 9072 not at rendering, allowing slabbing and use of WITHIN 9073 9074new feature: isosurface UNITCELL x.x .... 9075 -- for periodic lattices only 9076 -- adjusts grid by x.x in fractional coordinates 9077 -- caution is advised, as the grid is expanded in this process, 9078 leading to more grid points and more memory required 9079 -- negative x.x results in a selection of a subset of the data 9080 centered on the center of the unit cell 9081 9082JmolVersion="14.3.10_2014.11.26" 9083 9084bug fix: hover OFF disables hover callback, but should not 9085bug fix: reading of JVXL file saved with noFill still does fill 9086bug fix: CASTEP DENSITY surface file reader does not do downsampling 9087 9088new feature: VASP CHGCAR default cutoff set to 0.5 9089new feature: set edsUrlFormatDiff 9090 -- specifies difference map location 9091 9092new feature: isosurface "==1blu" 9093 -- difference map fo-fc 9094 -- defaults to sigma=3 9095 -- automatically implements SIGN option 9096 9097new feature: isosurface RMSD (same as SIGMA) 9098 9099JmolVersion="14.3.9_2014.11.23" 9100 9101released as Jmol 14.3.9 and Jmol 14.2.9 9102 9103bug fix: isosurface slab plane -xy not recognizing "-" 9104bug fix: PNGJ writing broken 9105bug fix: VASP CHGCAR reader not recognized for primitive cell 9106bug fix: Euler ZYZ and ZXZ for quaternion({0 0 1},theta) where theta < 0 in error 9107 9108 9109JmolVersion="14.3.9_2014.11.17" 9110 9111released as Jmol 14.3.9 and Jmol 14.2.9 9112 9113new feature: VASP CHGCAR reader 9114new feature: VASP CHGCAR isosurface reader 9115 9116new feature: load HISTORY "saved.his" (Gabor Oszlanyi) 9117 -- loads command history with script in saved.his 9118 9119new feature: CTRL-PAGE_UP CTRL-PAGE_DOWN in console (Gabor Oszlanyi) 9120 -- searches for next instance of current start of command up or down command history 9121 9122new feature: capture END 9123 -- closes capture without annoying popup message 9124 -- also for capture CANCEL and just CAPTURE 9125 9126new feature: transparent GIF using WRITE GIFT "xxx.gif" 9127new feature: GIF images use dithering to approximate full palette. 9128new feature: CAPTURE "file.gif" 10 transparent 9129 - or CAPTURE "file.gift" -- "gift" automatically changed to "gif" 9130 9131new feature: CAPTURE "filename0000.png" 9132 -- captures set of PNG files 9133 -- 0000 is not required 9134 9135new feature: CAPTURE "filename0000.gif" 9136 -- captures set of GIF files 9137 -- 0000 IS required in order to distinguish this from animated GIF 9138 9139bug fix: set labelOffset {1 2 3} or set labelOffset [1 2 3 4 5 6 7] 9140 fails if selection does not contain a label at each selected atom 9141 9142bug fix: Molden reader fails to read orbitals if [GEOCONV] is present 9143 9144bug fix: JmolVersion 14.3.3_2014.07.27 broke ligand bond reading when fetching ligands. 9145 -- mmCIF reader was not being selected by the Resolver 9146 -- Requires an increment of version number to 14.3.9 9147 9148bug fix: slightly better GIF processing 9149 9150bug fix: GIF writer not properly handling large numbers of colors 9151 -- use of CIE L*a*b for color quantification 9152 -- nearly identical to GIMP 9153 -- uses MEAN_cut (not MEDIAN_cut) 9154 -- uses Floyd-Steinberg dithering 9155 -- will not discolor background (as GIMP will do) 9156 9157bug fix: GIF and PPM writing broken in JavaScript 9158 -- initial putString improperly forces string buffer mode in OC (Output Channel) 9159 9160bug fix: WRITE command should remove "t" or "j" in WRITE xxx.PNGJ, WRITE xxx.PNGT, WRITE xxx.GIFT 9161 -- specifically when no PNGJ, GIFT, or PNGT designation is made. 9162 9163bug fix: PDB reader limited to 20 connections per atom 9164 9165bug fix: up-arrow in console may not return command if contains unicode 9166bug fix: antialiasing can subtly change background color 9167 9168bug fix: working on GIF writer -- some success with 256 colors using median-cut with RGB 9169 9170bug fix: GIFT (transparent-background GIF) dithering transparent background 9171 9172bug fix: Legendre for U not implemented in msCIF reader - preliminary 9173bug fix: Legendre for D,U in Jana2006 reader not implemented - preliminary 9174 9175code: code clean-up in GData, Graphics3D, and Export3D 9176code: PDB reader CONECT efficiency 9177 9178released as Jmol 14.3.9 and Jmol 14.2.9 9179 9180bug fix: set labelOffset {1 2 3} or set labelOffset [1 2 3 4 5 6 7] 9181 fails if selection does not contain a label at each selected atom 9182 9183 9184JmolVersion="14.3.9_2014.11.15" 9185 9186new feature: VASP CHGCAR reader 9187new feature: VASP CHGCAR isosurface reader 9188 9189JmolVersion="14.3.9_2014.11.12" 9190 9191bug fix: Molden reader fails to read orbitals if [GEOCONV] is present 9192 9193JmolVersion="14.3.9_2014.11.11" 9194 9195bug fix: JmolVersion 14.3.3_2014.07.27 broke ligand bond reading when fetching ligands. 9196 -- mmCIF reader was not being selected by the Resolver 9197 -- Requires an increment of version number to 14.3.9 9198 9199JmolVersion="14.3.8_2014.11.10" 9200 9201bug fix: slightly better GIF processing 9202 9203JmolVersion="14.3.8_2014.11.09" 9204 9205new feature: CAPTURE "filename0000.png" 9206 -- captures set of PNG files 9207 -- 0000 is not required 9208 9209new feature: CAPTURE "filename0000.gif" 9210 -- captures set of GIF files 9211 -- 0000 IS required in order to distinguish this from animated GIF 9212 9213bug fix: GIF writer not properly handling large numbers of colors 9214 -- use of CIE L*a*b for color quantification 9215 -- nearly identical to GIMP 9216 -- uses MEAN_cut (not MEDIAN_cut) 9217 -- uses Floyd-Steinberg dithering 9218 -- will not discolor background (as GIMP will do) 9219 9220bug fix: GIF and PPM writing broken in JavaScript 9221 -- initial putString improperly forces string buffer mode in OC (Output Channel) 9222 9223bug fix: WRITE command should remove "t" or "j" in WRITE xxx.PNGJ, WRITE xxx.PNGT, WRITE xxx.GIFT 9224 -- specifically when no PNGJ, GIFT, or PNGT designation is made. 9225 9226bug fix: PDB reader limited to 20 connections per atom 9227 9228code: code clean-up in GData, Graphics3D, and Export3D 9229code: PDB reader CONECT efficiency 9230 9231 9232JmolVersion="14.3.8_2014.10.27" 9233 9234bug fix: up-arrow in console may not return command if contains unicode 9235bug fix: antialiasing can subtly change background color 9236 9237bug fix: working on GIF writer -- some success with 256 colors using median-cut with RGB 9238 9239new feature: load HISTORY "saved.his" (Gabor Oszlanyi) 9240 -- loads command history with script in saved.his 9241 9242new feature: CTRL-PAGE_UP CTRL-PAGE_DOWN in console (Gabor Oszlanyi) 9243 -- searches for next instance of current start of command up or down command history 9244 9245JmolVersion="14.3.8_2014.10.15b" 9246 9247bug fix: GIFT (transparent-background GIF) dithering transparent background 9248 9249JmolVersion="14.3.8_2014.10.15" 9250 9251new feature: capture END 9252 -- closes capture without annoying popup message 9253 -- also for capture CANCEL and just CAPTURE 9254 9255JmolVersion="14.3.8_2014.10.14" 9256 9257new feature: transparent GIF using WRITE GIFT "xxx.gif" 9258new feature: GIF images use dithering to approximate full palette. 9259new feature: CAPTURE "file.gif" 10 transparent 9260 - or CAPTURE "file.gift" -- "gift" automatically changed to "gif" 9261 9262bug fix: Legendre for U not implemented in msCIF reader - preliminary 9263bug fix: Legendre for D,U in Jana2006 reader not implemented - preliminary 9264 9265JmolVersion="14.3.7_2014.10.13" 9266 9267new feature: modulation occupancy settable using {*}.occupancy = {*}.modulation('O',t) 9268 -- for example: 9269 9270 load "t3.cif" {20 1 1} packed 0.5 9271 connect {_Mn} {_Mn} delete 9272 polyhedra bonds {_Mn} collapsed; 9273 set echo top right; 9274 capture "occ.gif" 120 9275 for (var i = 0; i <= 100; i++) { 9276 var f = i/100. 9277 modulation @f 9278 {*}.occupancy = {*}.modulation("O",f); 9279 display _Mn and occupancy > 0; 9280 var t = "t=" + f 9281 echo @t 9282 refresh; 9283 } 9284 capture 9285 9286bug fix: msCIF reader superspace group operators with mixing of x1,x2,x3 into x4,x5 9287 was still not quite correct. 9288 9289bug fix: data "occupancy set" spelled wrong in state 9290 9291JmolVersion="14.3.7_2014.10.12" 9292 9293bug fix: JSmol/HTML5 SCRIPT command broken (forces async, which is not working yet) 9294 -- since 14.3.7_2014.9.17 9295 9296feature change: DSSR reference to "lonePairs" changed to "isolatedPairs" 9297 -- select within(dssr,"isolatedPairs") preferred 9298 -- select within(dssr,"lonePairs") still OK 9299 9300bug fix: msCIF reader incorrectly handling multiple Legendre orders 9301bug fix: msCIF reader incorrectly handling superspace operators with x1,x2,x3 mixed into x4,x5 9302bug fix: CONTACT FULL does not report proper volume (Young ho Jhon) 9303bug fix: (Java only) write FILE fails for string (copy/pasted) data 9304 9305JmolVersion="14.3.7_2014.10.10" 9306 9307bug fix: set waitForMoveTo not controlling script for ROTATE x.x y.y (finite spin) 9308bug fix: capture command not waiting properly for full spin 9309bug fix: msCIF reader: wave vectors of the form {a -a 0} were being ignored. 9310 (14.3.6_2014.08.16 and 14.2.6) 9311 9312JmolVersion="14.3.7_2014.10.05" 9313 9314bug fix: isosurface molecular reader misassigning voxel source atom 9315bug fix: JSpecView integration not displaying properly 9316bug fix: JSmol does not allow Info._coverImage 9317 9318JmolVersion="14.3.7_2014.09.30" 9319 9320bug fix: CGD reader for fractional coordinates; alternative EDGE syntax 9321 9322JmolVersion="14.3.7_2014.09.29" 9323 9324bug fix: JavaScript j2sjmol.js -- should not create object .isArray() method as it conflicts with 9325 JavaScript Array.isArray 9326 9327bug fix: CGD reader space groups set to Bilbao (origin 2) setting. 9328 9329 9330JmolVersion="14.3.7_2014.09.28" 9331 9332bug fix: Molden reader overlaying MO info and unit cell info 9333 9334new feature: Molden reader adds [CellAxes] block 9335 -- three vectors -- a, b, c 9336 -- Angstroms assumed; no other option, actually 9337 -- Use 0 0 0 for c to indicate slab 9338 -- example 9339 [CellAxes] (Angs) 9340 2.963407 0.0 0.0 9341 0.0 6.513587 0.0 9342 0.0 0.0 0.0 9343 9344 9345JmolVersion="14.3.7_2014.09.27" 9346 9347bug fix: interpretation of space group I41 by name only, without operations, 9348 drops second (centered) C2 axis. 9349 9350 9351JmolVersion="14.3.7_2014.09.26" 9352 9353new feature: TOPOS Crystal Graph Data (CGD) file reader 9354 9355JmolVersion="14.3.7_2014.09.24" 9356 9357bug fix: exporter generally not allowing creating meshes with PovRAY 9358 9359JmolVersion="14.3.7_2014.09.23" 9360 9361bug fix: Clazz.floatToLong not aliased as Clazz_floatToLong in corebottom2.js/coretop2.js 9362 -- causes CAPTURE command to fail for JSmol/HTML5 9363 9364new feature: {xxx}.find("MF","CH2O") 9365 -- returns subset of {xxx} 9366 -- first atoms that match formula; not necessarily sequential 9367 9368new feature: {*}.find("MF", TRUE) 9369 -- calculates EMPIRICAL formula 9370 -- example: 9371 $ load $glucose 9372 $ print {*}.find("MF") 9373 H 12 C 6 O 6 9374 $ print {*}.find("MF",true) 9375 H 2 C 1 O 1 9376 9377new feature: {cell=555}.find("CellFormula"); 9378 -- calculates cell formula for specified unit cell 9379 -- weights interior 1, face 1/2, edge 1/4, vertex 1/8 9380 -- selection should be a single packed unit cell 9381 -- fails with "?" if end result is not integral 9382 -- example: 9383 $ load quartz.cif packed 9384 $ print {*}.find("cellFormula"); 9385 O 6 Si 3 9386 9387new feature: {cell=555}.find("CellFormula", TRUE); 9388 -- calculates empirical cell formula for specified unit cell 9389 -- weights interior 1, face 1/2, edge 1/4, vertex 1/8 9390 -- selection should be a single packed unit cell 9391 -- fails with "?" if end result is not integral 9392 -- example: 9393 $ load quartz.cif packed 9394 $ print {*}.find("cellFormula", true); 9395 O 2 Si 1 9396 9397new feature: label %O 9398 -- lists all symmetry operators leading to this position (as a string) 9399 -- if more than one operator (contains a comma), this is a special position 9400 -- same as %[symmetry] but just a simple list of operators 9401 9402JmolVersion="14.3.7_2014.09.22" 9403 9404FEATURE CHANGE: atoms without vibration will no longer report out as vxyz = {0 0 0} or vx = 0 9405 -- print {atomno=3}.vxyz and {*}.vxyz.all will report -1 9406 instead of {vx vy vz} when atom does not have a vibration 9407 -- print {atomno=3}.vx will report "NaN" (also vy and vz) 9408 -- label %[vxyz] will be blank 9409 -- label %[vx] will be blank (also vy and vz) 9410 -- select vxyz >= 0 will select for atoms with vibrations of any magnitude 9411 -- select vxyz < 0 will select for atoms without vibrations of any magnitude 9412 -- select vx = 0 will NOT select atoms with no vibration vector 9413 -- select vx != 0 will NOT select atoms with no vibration vector 9414 -- select vx = 0 || vx != 0 will select for atoms with vibrations of any magnitude 9415 -- same with modulations and modxyz, modx, mody, modz 9416 9417FEATURE CHANGE: {xxx}.vxyz = a, where a is an array 9418 -- no longer throws an exception if a[i] is not a point 9419 -- simply does not set that value. 9420 -- allows for v = {*}.vxyz.all; {*}.vxyz = v; 9421 9422 9423JmolVersion="14.3.7_2014.09.21" 9424 9425bug fix: magCIF reading with symmetry scaling (-x+1/2,-2x+y,z+1/2,+1 mx,2mx-my,-mz) 9426 improperly rotates moments (1.34.cif) 9427 9428JmolVersion="14.3.7_2014.09.20b" 9429 9430bug fix: array sorting broken in JavaScript 9431 9432code: magCIF change to _space_group_symop.magn_ssg_centering_algebraic 9433code: efficiencies in storage of CIF keys 9434 9435bug fix: CIF reader not reading magnetic lattice centering for incommensurately modulated structures 9436bug fix: {*}.modulation("M") not functional 9437 9438bug fix: script queue broken in 2014.09.17 9439 9440JmolVersion="14.3.7_2014.09.17" 9441 9442bug fix: cartoon OFF does not remove nucleic bases from visible set 9443bug fix: select visible does not recalculate visible set 9444 -- after RESTRICT, for instance; Eric Martz 9445 -- at least since 14.1.14 9446 load =1d66 9447 cartoons only # if this is omitted, 'select visible' works correctly 9448 refresh 9449 restrict 28-36:B 9450 print {visible} 9451 9452bug fix: x = {visible} does not COPY the visible set 9453bug fix: spin broken in WebGL 9454 9455code: further progress with fully asynchronous HTML5 9456 -- all initial script loading and program start-up 9457 -- general LOAD and SCRIPT command processing 9458 -- minimization (static resource loading) 9459 -- PNGJ file loading 9460 9461JmolVersion="14.3.7_2014.09.16" 9462 9463bug fix: chainCaseSensitive ignored for select :a 9464bug fix: JmolData not reporting out properly 9465 9466 9467JmolVersion="14.3.7_2014.09.15b" 9468 9469bug fix: 14.3.7_2014.09.14 breaks nucleic acid rendering 9470 9471JmolVersion="14.3.7_2014.09.15" 9472 9473bug fix: CARTOON OFF does not remove visibility flag for alpha carbons 9474 (introduced in jmol-14.1.17_2014.06.03) 9475 9476JmolVersion="14.3.7_2014.09.14" 9477 9478bug fix: JSmol/HTML5 fails to show rockets 9479bug fix: setting structures after displaying rockets does not reset rockets correctly 9480 9481bug fix: load *xxxx/val validation loading not working (14.3.7_2014.09.07) 9482 9483new feature: load =xxxx/rna3d 9484 -- mmCIF only 9485 -- fetches http://rna.bgsu.edu/rna3dhub/loops/download/xxxx 9486 -- hairpinLoops, internalLoops, junctions 9487 -- allows for such constructs as: 9488 select within(rna3d,"hairpinLoops") 9489 select within(rna3d,"hairpinLoops where index=5") 9490 x = getproperty("auxiliaryInfo.models[1].rna3d.internalLoops.5") 9491 x = getproperty("auxiliaryInfo.models[1].rna3d.internalLoops")[5] 9492 print x 9493 { 9494 _atoms : ({3023:3062 3639:3706}) 9495 _isres : true 9496 _path : "internalLoops" 9497 index : 5 9498 units : "1S72|1|0|C|153,1S72|1|0|C|154,1S72|1|0|G|182,1S72|1|0|A|183,1S72|1|0|G|184" 9499 } 9500 y = x._atoms 9501 select y 9502 9503new feature: load =xxxx/val 9504new feature: load =xxxx/dom 9505 -- extends PDBe validation/domain annotation to RCSB calls 9506 9507new feature: load *xxxx/dssr 9508new feature: load *xxxx/rna3d 9509 -- DSSR analysis extended to PDBe calls 9510 -- RNA3D analysis extended to RCSB calls 9511 9512JmolVersion="14.3.7_2014.09.12" 9513 9514bug fix: Draw broken in JSmol/HTML5 in 14.3.7_2014.09.07 9515 9516JmolVersion="14.3.7_2014.09.11" 9517 9518bug fix: Unit cell display and other characteristics offset or wrong when 9519 crystallographic coordinates include an intrinsic offset from 9520 Cartesian coordinates, as in the case of ENT/mmCIF 1hbb and 2hhb. 9521 9522bug fix: PDB reader not reading SCALEn records; required in certain cases for load =xxxx {1 1 1} 9523 9524 9525JmolVersion="14.3.7_2014.09.10" 9526 9527bug fix: Pending measurements lost when dragging to reposition molecule 9528bug fix: EM files not allowing unit cell creation for PDB or mmCIF files 9529 9530JmolVersion="14.3.7_2014.09.08" 9531 9532bug fix: binary document reader can skip bytes if an http connection 9533 fails to deliver the full set of requested bytes in one operation 9534 (nonstandard MRC files and PyMOL files) 9535 9536JmolVersion="14.3.7_2014.09.07" 9537 9538code: note new Jmol. in front of ___xxx here 9539 9540code: further work on asynchronous file loading 9541 -- uses script state machine to reset state 9542 -- xhr used only for data files; DOM for scripts 9543 -- caches data files 9544 -- principal shown to work 9545 -- works for package.js and corexxx.js files 9546 -- works for most Java-class xxxx.js files 9547 -- fails (requires multiple attempts) for some cases 9548 -- animation/vibration/spin threads 9549 -- PNGJ file loading 9550 -- cleaned up j2sjsmol code 9551 -- abandons complex j2s Clazz file loading methods; just uses jQuery 9552 9553new feature: Legendre polynomials for MSCIF file reading 9554 9555bug fix: adds correct dates for code versions of JSmol files 9556bug fix: load quartz.cif {1 1 1};draw symop @1 @5 does not work 9557 due to refactoring error 7/9/2014 (14.3.3) 9558bug fix: dssr broken in 14.3.5 9559bug fix: throw context prior to try/catch within function causes exception 9560bug fix: polyhedra not removed from rendering when central atoms are deleted 9561 9562code: refactoring symmetry info into org.jmol.symmetry.SymmetryDesc 9563 9564JmolVersion="14.3.7_2014.08.29" 9565 9566code: preliminary all-asynchronous JSmol/HTML5 9567 9568JmolVersion="14.3.7_2014.08.25" 9569 9570bug fix: translation of atoms after deleting atoms having dots on crashes Jmol 9571 9572JmolVersion="14.3.7_2014.08.22" 9573 9574new feature: AXES TYPE "a"|"b"|"c"|"ab"|"ac"|"bc"|"abc" 9575 -- for axes position [x y] only shows specified axes 9576 9577new feature: load quartz.cif supercell "2a,2b+a,c;1/2,0,0" 9578 -- allows adjusting origin without changing symmetry operations 9579 -- same as load quartz.cif filter "cell=2a,2b+a,c;1/2,0,0" 9580 -- default lattice set to {555 555 -1} (i.e., PACKED) 9581 -- sets packing range based on the supercell 9582 -- packing can be avoided by specifying the lattice: 9583 load quartz.cif {1 1 1} supercell "2a,2b+a,c;1/2,0,0" 9584 9585doc note: load ... SUPERCELL "2a,2b,2c" is the same as load ... SUPERCELL {2 2 2} 9586 except that the packing will be based on the supercell dimensions, not the 9587 original cell dimensions, with range 0.02. 9588 This can be adjusted using PACKED x.x, which is still a fraction of the supercell dimensions. 9589 load quartz.cif supercell "10a, 10b+5a,c" PACKED 0.002 9590 9591doc note: load ... SUPERCELL ... defaults to PACKED, but simply adding a lattice overrides this: 9592 load ... {1 1 1} SUPERCELL ... 9593 9594new feature: load(filename, asbinary, async) 9595 -- 3rd parameter loads file asynchronously in HTML5 9596 9597<<< above is not documented TODO 9598 9599 9600bug fix: magnetic CIF files incompatible with displacement modulation 9601bug fix: write PNG xxx.png when xxx.png is currently loaded saves 0-length data files 9602bug fix: load ASYNC was documented for 14.1.12_2014.03.10 but never implemented 9603 9604JmolVersion="14.3.7_2014.08.18" 9605 9606bug fix: load quartz.cif supercell "2a,2b+a,c" not working properly 9607 9608JmolVersion="14.3.6_2014.08.17b" 9609released as Jmol 14.3.6 9610 9611bug fix: modulated magnetic moment scaling by VECTORS MAX x.x not saved in state 9612 for modulations that are 0,0,0. 9613bug fix: magnetic CIF reader not automatically showing modulation 9614bug fix: load SUPERCELL {x y z} not working correctly in terms of packing 9615bug fix: load SUPERCELL not working correctly with modulation or magnetic 9616 9617JmolVersion="14.3.6_2014.08.15" 9618 9619new feature: upgrade of application file...export...Gaussian Input File... 9620 9621new feature: pmesh files can contain triangle colors 9622 9623JmolVersion="14.3.6_2014.08.14" 9624 9625bug fix: JavaScript drag-drop clears cache inappropriately when spt file is dropped 9626 9627IMPORTANT NOTE: The problem described here only affects the reading of states that 9628 have been created for crystallographic files, and then only if the 9629 state was created in Java and then displayed in JavaScript, 9630 or vice-versa. 9631 9632 The problem is due to the fact that the Java implementation 9633 of Jmol uses float values for atom coordinates, while JavaScript 9634 is restricted to using only double values. The problem arises when 9635 a comparison must be made between two decimal values. After symmetry 9636 has been applied, it is possible for atom coordinates to be off in the 9637 4th-7th decimal digit for floats and 14th-17th for doubles in the 9638 range -256 to 256. 9639 9640 The problem is most acute for inorganic crystal systems where 9641 symmetry has been applied and especially after the CONNECT NONE command 9642 has been issued. 9643 9644 Aspects where a problem might arise include: 9645 -- packing of unit cells, where atoms are discarded 9646 -- iterating over atoms, where atom order is important 9647 -- autobonding, where distances and order are critical 9648 -- comparing Cartesian or fractional coordinate values 9649 9650 Solution to the problem is to automatically round all fractional 9651 atom coordinates to a precision of 0.00001 and all Cartesian 9652 atom coordinates to a precision of 0.0001. This forces both 9653 double and float implementations to the same value and 9654 results in no practical error, since these ranges are 9655 well beyond the precision of atom coordinates in crystals. 9656 Coincidence is assured for fractional coordinates up to 9657 about 126 and for Cartesian coordinates up to about 838. 9658 9659 This rounding is not implemented for state or PNGJ file 9660 with state version v where 9661 9662 v < 140206 || v >= 140300 && v < 140306 9663 9664 and in general only in the case where the file coordinates are 9665 fractional. Thus, those files will be read exactly as in the 9666 version they were created by. And they will have have the same 9667 issues as well. 9668 9669 The result is also much cleaner-looking atom coordinates. 9670 For example, in JavaScript: 9671 9672 print {*}.fxyz 9673 9674 {0.33333328149215147 0.999999891271352 1.0000000000000024} 9675 {0.6666666148254848 0.999999891271352 1.0000000000000024} 9676 {0.9999999844017011 1.000000000000001 0} 9677 {0.9999999616049127 0.9999999316096356 0.6290004156275991} 9678 {0.9999999709556066 0.9999999596617175 0.3709995843724032} 9679 {0.9999999481588181 0.999999891271352 1.0000000000000024} 9680 9681 becomes: 9682 9683 {0.33333 1 1} 9684 {0.66667 1 1} 9685 {1 1 0} 9686 {1 1 0.629} 9687 {1 1 0.371} 9688 {1 1 1} 9689 9690 9691new feature: set legacyJavaFloat 9692 -- set by Jmol when a state is read that is before 14.2.6 or in the range 14.3.0 - 14.3.5; 9693 -- prevents fractional and cartesian coordinate rounding. 9694 -- cleared by ZAP or LOAD or loading of any later state script 9695 9696new feature: MOLDEN extensions [SpaceGroup] [Operators] [Cell] 9697 9698JmolVersion="14.3.5_2014.08.10" 9699 9700code: static Txt functions moved to javajs.util.PT 9701 9702new feature: SHOW/WRITE PROPERTIES ... format "%s %i %f %f %f" 9703 -- allows specifying the format for a set of up to three properties. 9704 -- %s is atom name; %i is atom number 9705 9706bug fix: show PROPERTIES broken 9707bug fix: plot PROPERTIES changes axis settings 9708 9709JmolVersion="14.3.5_2014.08.09" 9710 9711bug fix: magCIF file reading broken for new file format 9712 9713new feature: magCIF file reading for incommensurately modulated magnetic structures 9714 -- very preliminary only; not tested 9715 9716new feature: set showModulationVectors true/false 9717 -- required now for showing modulation vectors rather than vibration vectors 9718 9719new feature: vibration max x.x 9720new feature: vector max x.x // alternative; the same 9721 -- renormalizes all vibrations and vibration/spin vectors to have a maximum value of x.x 9722 9723 9724 9725JmolVersion="14.3.5_2014.08.08" 9726 9727bug fix: CIF operators with n/9 not supported 9728 9729JmolVersion="14.3.5_2014.08.05" 9730 9731bug fix: CIF reader broken for load xxx.cif 1 (14.1.17_2014.06.07) 9732bug fix: CONTACT command not functioning properly with multiple models 9733 9734JmolVersion="14.3.4_2014.08.03" 9735note: Sourceforge release of 14.3.4 and 14.2.4 9736 9737bug fix: annotation atom sets not adjusted for added hydrogens 9738bug fix: 14.3.3_2014.08.02 broke mmCIF reader 9739bug fix: BinaryDocument (Spartan file) reading broken in 14.1.12_2014.03.18 9740 9741JmolVersion="14.3.3_2014.08.02" 9742note: Sourceforge release of 14.3.3 and 14.2.3 9743 9744new feature: point({x,y,z}, true) 9745 -- TO screen coordinates 9746 9747new feature: point({sx,sy,sz}, false) 9748 -- FROM screen coordinates 9749 9750JmolVersion="14.3.3_2014.08.01" 9751 9752bug fix: move+moveto/zoomto still an issue. 9753 9754summary of new features for annotations, July 17 - Aug 1 9755 9756new feature: load *1cbs/dom 9757 -- loads mmCIF file from EBI along with sequence domain data 9758 -- uses URL http://wwwdev.ebi.ac.uk/pdbe/api/mappings/sequence_domains/1cbs?metadata=true&pretty=false 9759 -- use example: 9760 9761 load *1cbs/dom 9762 9763 Domains loaded: 9764 CATH 2.40.128.20 9765 GO GO:0001972 GO:0005215 GO:0005501 GO:0005634 GO:0005730 GO:0005737 GO:0005783 GO:0006355 GO:0006810 GO:0007165 GO:0008289 GO:0008544 GO:0016918 GO:0019841 GO:0035115 GO:0042573 GO:0070062 9766 InterPro IPR000463 IPR000566 IPR011038 IPR012674 9767 Pfam PF00061 9768 SCOP 50847 9769 UniProt P29373 9770 9771 Use SHOW DOMAINS for details. 9772 9773 $ show domains 9774 9775 metadata restapi_version=0.8 9776 metadata date=20140801 9777 metadata url=http://wwwdev.ebi.ac.uk/pdbe/api/mappings/1cbs?pretty=false&metadata=true 9778 1cbs SCOP 50847 identifier=Fatty acid binding protein-like 9779 1cbs SCOP 50847 fold description=Lipocalins 9780 1cbs SCOP 50847 fold sunid=50813 9781 1cbs SCOP 50847 description=Fatty acid binding protein-like 9782 1cbs SCOP 50847 class description=All beta proteins 9783 1cbs SCOP 50847 class sunid=48724 9784 1cbs SCOP 50847 superfamily description=Lipocalins 9785 1cbs SCOP 50847 superfamily sunid=50814 9786 1cbs UniProt P29373 name=RABP2_HUMAN 9787 1cbs UniProt P29373 identifier=RABP2_HUMAN 9788 1cbs GO GO:0005215 name=transporter activity 9789 1cbs GO GO:0005215 identifier=transporter activity 9790 1cbs GO GO:0005215 definition=Enables the directed movement of substances (such as macromolecules, small molecules, ions) into, out of or within a cell, or between cells. 9791 1cbs GO GO:0005215 category=Molecular_function 9792 ... 9793 1cbs CATH 2.40.128.20 architecture=Beta Barrel 9794 1cbs CATH 2.40.128.20 identifier=Lipocalin 9795 1cbs CATH 2.40.128.20 name=Cellular retinoic acid binding protein type ii. Chain: a. Engineered:yes 9796 1cbs CATH 2.40.128.20 homology=Lipocalin 9797 1cbs CATH 2.40.128.20 class=Mainly Beta 9798 1cbs CATH 2.40.128.20 topology=Lipocalin 9799 1cbs Pfam PF00061 identifier=Lipocalin / cytosolic fatty-acid binding protein family 9800 1cbs Pfam PF00061 description=Lipocalin / cytosolic fatty-acid binding protein family 9801 1cbs InterPro IPR012674 name=Calycin 9802 1cbs InterPro IPR012674 identifier=Calycin 9803 1cbs InterPro IPR000566 name=Lipocalin/cytosolic fatty-acid binding domain 9804 1cbs InterPro IPR000566 identifier=Lipocalin/cytosolic fatty-acid binding domain 9805 1cbs InterPro IPR011038 name=Calycin-like 9806 1cbs InterPro IPR011038 identifier=Calycin-like 9807 1cbs InterPro IPR000463 name=Cytosolic fatty-acid binding 9808 1cbs InterPro IPR000463 identifier=Cytosolic fatty-acid binding 9809 9810 select within(domains,"InterPro where domain.identifier='calycin'") 9811 9812new feature: load *1cbs/val 9813 -- loads mmCIF file from EBI along with validation data 9814 -- use URL http://wwwdev.ebi.ac.uk/pdbe/api/validation/outliers/all/1cbs?metadata=true&pretty=false 9815 -- places that data into property_xxxx arrays 9816 -- use examples: 9817 9818 load *2x9t/val 9819 color property_rsrz "bwr" 9820 display group within(5, property_rsrz > 0) 9821 9822 found biomolecule 1: A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y 9823 9824 Validations loaded: 9825 property_sidechains (residues: 181) 9826 property_rama (residues: 262) 9827 property_rsrz (residues: 87, max: 10.6) 9828 property_chirals (atoms: 1) 9829 property_planes (residues: 21, max: 0.08) 9830 property_RNA_suite (residues: 241) 9831 property_RNA_pucker (residues: 33) 9832 property_bond_angles (atoms: 31, max: 14.12) 9833 property_clashes (atoms: 2655, max: 3.42) 9834 9835 load *1d66/val 9836 select on within(validation,"clashes") 9837 9838new feature: load *1cbs/all 9839 -- loads mmCIF file from EBI along with validation and domain data 9840 -- may be extended to more types as they arise. 9841 9842new feature: label %[validation.xxxx] 9843 -- retrieves comma-separated validation values after load *yyyy/val 9844 -- xxxx is an entry in the validation API return, such as clashes or rsrz 9845 -- NOT a sum of absolute values, as %[property_xxxx] is for validation data 9846 -- example: 9847 load *1d66/val 9848 select within(validation,"bond_angles") 9849 label val=%[validation.bond_angles] 9850 9851new feature: set hoverlabel "%[validation.xxxx]" 9852 -- allows customized hover based on validation data 9853 -- example: 9854 set hoverlabel "%[validation.bond_angles]" 9855 9856new feature: select within(validation, "clashes where value>3") 9857 -- selects atoms from "outliers" array 9858 -- similar to select within(domains, "....") 9859 -- uses sum of absolute values for each atom 9860 9861new feature: print getProperty("validationInfo[select * where _type='clashes']", atomset) 9862 -- WHERE close can contain any validation type (see SHOW VALIDATION) 9863 -- second parameter can be atom set -- {2.1} for instance -- defaults to current model 9864 -- allows uses SQL-like select phrases 9865 -- example: 9866 9867 set hoverlabel "@{getProperty(\"validationInfo[select value where _type='bond_angles' and (_atoms and {hovered})]\").join(',')}" 9868 9869new feature: print getProperty("domainInfo[select * where _type='SCOP']") 9870 -- subset of auxiliaryInfo 9871 -- assumes model of visible 9872 -- second parameter can be atom set: {2.1} for instance 9873 -- uses sum of absolute values for each atom 9874 -- allows uses SQL-like select phrase: 9875 9876 print getProperty("domainInfo[select * where _type='SCOP' and _domain like '508']") 9877 9878 9879new feature: SQL NOCACHE flag 9880 -- prevents caching when using outside variables or functions 9881 -- can be anywhere in the clause 9882 -- example: 9883 select within(domains,"NOCACHE SCOP where myFunc(domain, _atoms)") 9884 9885new feature: SHOW DOMAINS "some info" 9886 -- selects specific records 9887 -- text-based matching in all fields and key names 9888 -- dot-notation allowed 9889 -- examples: 9890 show domains name 9891 show domains CATH 9892 show domains InterPro.IPR002409 9893 show domains Gal4 9894 9895new feature: SHOW DOMAINS "<annotationRecordIinfo> all" 9896 -- shows JSON-like array data 9897 -- will involve a circular reference because the domain key 9898 points to the parent.parent entry in the main array 9899 -- example: 9900 load *1cbs/dom 9901 show domains InterPro.IPR002409 all 9902 9903 { 9904 _atoms : ({15:204}) 9905 _path : "InterPro.IPR000463" 9906 chain_id : "A" 9907 domain : 9908 { 9909 identifier : "Cytosolic fatty-acid binding" 9910 mappings : "<circular reference>" 9911 name : "Cytosolic fatty-acid binding" 9912 } 9913 end : 9914 { 9915 author_insertion_code : "" 9916 author_residue_number : 25 9917 residue_number : 25 9918 } 9919 entity_id : 1 9920 start : 9921 { 9922 author_insertion_code : "" 9923 author_residue_number : 3 9924 residue_number : 3 9925 } 9926 struct_asym_id : "A" 9927 } 9928 { 9929 _atoms : ({32:185}) 9930 _path : "InterPro.IPR000463" 9931 chain_id : "A" 9932 domain : 9933 { 9934 identifier : "Cytosolic fatty-acid binding" 9935 mappings : "<circular reference>" 9936 name : "Cytosolic fatty-acid binding" 9937 } 9938 ... 9939 9940 9941 9942JmolVersion="14.3.3_2014.07.27" 9943 9944bug fix: set pdbAddHydrogens incompatible with mmCIF *xxxx/val 9945 9946new feature: select within(validation, "clashes where value>3") 9947 -- selects atoms from "outliers" array 9948 -- similar to select within(domains, "....") 9949 -- uses sum of absolute values for each atom 9950 9951new feature: print getProperty("validationInfo[select * where _type='clashes']") 9952 -- subset of auxiliaryInfo 9953 -- WHERE close can contain any validation type, currently including: 9954 -- assumes model of visible 9955 -- second parameter can be atom set: {2.1} for instance 9956 -- allows uses SQL-like select phrase: 9957 9958 print getProperty("domainInfo[select * where _type='SCOP' and _domain like '508']") 9959 9960 -- does NOT use abolute value; report is as an array when select value is used: 9961 9962 set hoverlabel "@{getProperty(\\"validationInfo[select value where _type='bond_angles' and (_atoms and {hovered})]\\").join(',')}" 9963 9964 9965new feature: print getProperty("domainInfo[select * where _type='SCOP']") 9966 -- subset of auxiliaryInfo 9967 -- assumes model of visible 9968 -- second parameter can be atom set: {2.1} for instance 9969 -- uses sum of absolute values for each atom 9970 -- allows uses SQL-like select phrase: 9971 9972 print getProperty("domainInfo[select * where _type='SCOP' and _domain like '508']") 9973 9974 9975JmolVersion="14.3.3_2014.07.26" 9976 9977code: refactoring dssr/domains/validation clases 9978 9979new feature: load *1crs/val 9980 -- loads PDBe file with validation data 9981 -- places that data into property_xxxx arrays 9982 -- use examples: 9983 9984 load *2x9t/val 9985 color property_rsrz "bwr" 9986 display group within(5, property_rsrz > 0) 9987 9988found biomolecule 1: A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y 9989 9990Validations loaded: 9991 property_sidechains (residues: 181) 9992 property_rama (residues: 262) 9993 property_rsrz (residues: 87, max: 10.6) 9994 property_chirals (atoms: 1) 9995 property_planes (residues: 21, max: 0.08) 9996 property_RNA_suite (residues: 241) 9997 property_RNA_pucker (residues: 33) 9998 property_bond_angles (atoms: 31, max: 14.12) 9999 property_clashes (atoms: 2655, max: 3.42) 10000 10001 10002 load *1d66/val 10003 select on within(validation,"clashes") 10004 10005 10006JmolVersion="14.3.3_2014.07.23" 10007 10008bug fix: write PDB fails 10009 10010JmolVersion="14.3.3_2014.07.22" 10011 10012new feature: getProperty(x,"[select a,b,c .... 10013 - selection of specific keys to report in getProperty command 10014 - does not require star-slash, which could mark end-of-comment 10015 10016new feature: x.in(a,b,c,d...) # suggestion of Sameer Velankar 10017new feature: x.in([a,b,c,d]) 10018 - returns 0 (x not in group) or position 1-n 10019 10020new feature: SQL NOCACHE flag 10021 - prevents caching when using outside variables or functions 10022 - can be anywhere in the clause 10023 - example: 10024 select within(domains,"NOCACHE ...") 10025 10026JmolVersion="14.3.3_2014.07.20" 10027 10028new feature: load *1cbs/dom 10029 - loads domain info from EBI along with mmCIF file 10030 - enables seqid (_atom_site.label_seq_id) required for animation 10031 - ` information is in the JSON form (in all cases below, 10032 additional key/value pairs are allowed): 10033 10034 { "<pdbID>" : { <databaseInformation> } } 10035 10036 where <PdbID> is a lower-case PDB id such as 1crs or 1d66 10037 and <databaseInformation> is one or more records: 10038 10039 "<databaseID>" : { <entryInfo> } 10040 10041 <dataBaseID> is a database identifier such as: 10042 "CATH", "SCOP", "InterPro", "UniProt", "GO", "EC" 10043 10044 <entryInfo> is one or more records of the form: 10045 10046 "<entryID>" : { <entry> } 10047 10048 <entry> must at the very least contain: 10049 10050 "identifier" : "<some identifier>" 10051 "mappings" : [ array of <mapping> ] 10052 10053 <mapping> must minimally be 10054 10055 { "chain_id" : "<author chainIdentifier>" } 10056 10057 but is more likely to contain start/end records: 10058 10059 { "chain_id" : "<author chainIdentifier>", 10060 "start" : <residueRecord>, 10061 "end" : <residueRecord> 10062 } 10063 10064 <residueRecord> must minimally be: 10065 10066 { "residue_number" : <mmCIF _atom_site.label_seq_id> } 10067 10068 but usually also contains "author_residue_number" and "author_insertion_code". 10069 10070 - reports to console: 10071 10072 Domains loaded: 10073 CATH 2.40.128.20 10074 EC 10075 GO GO:0001972 GO:0005215 GO:0005501 GO:0005634 GO:0005730 GO:0005737 GO:0005783 GO:0006355 GO:0006810 GO:0007165 GO:0008289 GO:0008544 GO:0016918 GO:0019841 GO:0035115 GO:0042573 GO:0070062 10076 InterPro IPR000463 IPR000566 IPR011038 IPR012674 10077 Pfam PF00061 10078 SCOP 50847 10079 UniProt P29373 10080 Use SHOW DOMAINS for details. 10081 10082new feature: SHOW DOMAINS 10083 - displays tab-separated annotation information 10084 10085 1cbs CATH 2.40.128.20 topology=Lipocalin 10086 1cbs Pfam PF00061 identifier=Lipocalin / cytosolic fatty-acid binding protein family 10087 1cbs Pfam PF00061 description=Lipocalin / cytosolic fatty-acid binding protein family 10088 1cbs InterPro IPR012674 name=Calycin 10089 1cbs InterPro IPR012674 identifier=Calycin 10090 10091new feature: SHOW DOMAINS "<annotationRecordIinfo>" 10092 - selects specific records 10093 - text-based matching in all fields 10094 10095new feature: SHOW DOMAINS "<annotationRecordIinfo> mappings" 10096 - adds information about mapping 10097 10098new feature: select within(annotation, "<query>") 10099 10100 - allows selection of atoms based on annotations. 10101 - <query> can be: 10102 - a databaseID: 10103 10104 select within(domains,"InterPro") 10105 10106 - a specific databaseID.entryID: 10107 10108 select within(domains,"InterPro.IPR012674") 10109 10110 - a specific databaseID, with WHERE clause: 10111 10112 select within(domains,"InterPro where domain.identifier='calycin'") 10113 select within(domains,"InterPro where identifier='calycin'") 10114 select within(domains,"InterPro where identifier like '*-like*'") 10115 10116 10117 10118 10119note: "annotations" references changed to "domains" 10120bug fix: Jmol application starts in English regardless of language 10121 10122JmolVersion="14.3.3_2014.07.29" 10123 10124new feature: label %[validation.xxxx] 10125 -- retrieves comma-separated validation values after load *yyyy/val 10126 -- xxxx is an entry in the validation API return, such as clashes or rsrz 10127 -- NOT a sum of absolute values, as %[property_xxxx] is for validation data 10128 -- example: 10129 load *1d66/val 10130 select within(validation,"bond_angles") 10131 label val=%[validation.bond_angles] 10132 10133new feature: set hoverlabel "%[validation.xxxx]" 10134 -- allows customized hover based on validation data 10135 -- example: 10136 set hoverlabel "%[validation.bond_angles]" 10137 10138JmolVersion="14.3.3_2014.07.27" 10139 10140bug fix: set pdbAddHydrogens incompatible with mmCIF *xxxx/val 10141 10142new feature: select within(validation, "clashes where value>3") 10143 -- selects atoms from "outliers" array 10144 -- similar to select within(domains, "....") 10145 -- uses sum of absolute values for each atom 10146 10147new feature: print getProperty("validationInfo[select * where _type='clashes']") 10148 -- subset of auxiliaryInfo 10149 -- WHERE close can contain any validation type, currently including: 10150 -- assumes model of visible 10151 -- second parameter can be atom set: {2.1} for instance 10152 -- allows uses SQL-like select phrase: 10153 10154 print getProperty("domainInfo[select * where _type='SCOP' and _domain like '508']") 10155 10156 -- does NOT use abolute value; report is as an array when select value is used: 10157 10158 set hoverlabel "@{getProperty(\"validationInfo[select value where _type='bond_angles' and (_atoms and {hovered})]\").join(',')}" 10159 10160 10161new feature: print getProperty("domainInfo[select * where _type='SCOP']") 10162 -- subset of auxiliaryInfo 10163 -- assumes model of visible 10164 -- second parameter can be atom set: {2.1} for instance 10165 -- uses sum of absolute values for each atom 10166 -- allows uses SQL-like select phrase: 10167 10168 print getProperty("domainInfo[select * where _type='SCOP' and _domain like '508']") 10169 10170 10171JmolVersion="14.3.3_2014.07.26" 10172 10173code: refactoring dssr/domains/validation clases 10174 10175new feature: load *1crs/val 10176 -- loads PDBe file with validation data 10177 -- places that data into property_xxxx arrays 10178 -- use examples: 10179 10180 load *2x9t/val 10181 color property_rsrz "bwr" 10182 display group within(5, property_rsrz > 0) 10183 10184found biomolecule 1: A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y 10185 10186Validations loaded: 10187 property_sidechains (residues: 181) 10188 property_rama (residues: 262) 10189 property_rsrz (residues: 87, max: 10.6) 10190 property_chirals (atoms: 1) 10191 property_planes (residues: 21, max: 0.08) 10192 property_RNA_suite (residues: 241) 10193 property_RNA_pucker (residues: 33) 10194 property_bond_angles (atoms: 31, max: 14.12) 10195 property_clashes (atoms: 2655, max: 3.42) 10196 10197 10198 load *1d66/val 10199 select on within(validation,"clashes") 10200 10201 10202JmolVersion="14.3.3_2014.07.23" 10203 10204bug fix: write PDB fails 10205 10206JmolVersion="14.3.3_2014.07.22" 10207 10208new feature: getProperty(x,"[select a,b,c .... 10209 - selection of specific keys to report in getProperty command 10210 - does not require star-slash, which could mark end-of-comment 10211 10212new feature: x.in(a,b,c,d...) # suggestion of Sameer Velankar 10213new feature: x.in([a,b,c,d]) 10214 - returns 0 (x not in group) or position 1-n 10215 10216new feature: SQL NOCACHE flag 10217 - prevents caching when using outside variables or functions 10218 - can be anywhere in the clause 10219 - example: 10220 select within(domains,"NOCACHE ...") 10221 10222JmolVersion="14.3.3_2014.07.20" 10223 10224new feature: load *1cbs/dom 10225 - loads domain info from EBI along with mmCIF file 10226 - enables seqid (_atom_site.label_seq_id) required for animation 10227 - ` information is in the JSON form (in all cases below, 10228 additional key/value pairs are allowed): 10229 10230 { "<pdbID>" : { <databaseInformation> } } 10231 10232 where <PdbID> is a lower-case PDB id such as 1crs or 1d66 10233 and <databaseInformation> is one or more records: 10234 10235 "<databaseID>" : { <entryInfo> } 10236 10237 <dataBaseID> is a database identifier such as: 10238 "CATH", "SCOP", "InterPro", "UniProt", "GO", "EC" 10239 10240 <entryInfo> is one or more records of the form: 10241 10242 "<entryID>" : { <entry> } 10243 10244 <entry> must at the very least contain: 10245 10246 "identifier" : "<some identifier>" 10247 "mappings" : [ array of <mapping> ] 10248 10249 <mapping> must minimally be 10250 10251 { "chain_id" : "<author chainIdentifier>" } 10252 10253 but is more likely to contain start/end records: 10254 10255 { "chain_id" : "<author chainIdentifier>", 10256 "start" : <residueRecord>, 10257 "end" : <residueRecord> 10258 } 10259 10260 <residueRecord> must minimally be: 10261 10262 { "residue_number" : <mmCIF _atom_site.label_seq_id> } 10263 10264 but usually also contains "author_residue_number" and "author_insertion_code". 10265 10266 - reports to console: 10267 10268 Domains loaded: 10269 CATH 2.40.128.20 10270 EC 10271 GO GO:0001972 GO:0005215 GO:0005501 GO:0005634 GO:0005730 GO:0005737 GO:0005783 GO:0006355 GO:0006810 GO:0007165 GO:0008289 GO:0008544 GO:0016918 GO:0019841 GO:0035115 GO:0042573 GO:0070062 10272 InterPro IPR000463 IPR000566 IPR011038 IPR012674 10273 Pfam PF00061 10274 SCOP 50847 10275 UniProt P29373 10276 Use SHOW DOMAINS for details. 10277 10278new feature: SHOW DOMAINS 10279 - displays tab-separated annotation information 10280 10281 1cbs CATH 2.40.128.20 topology=Lipocalin 10282 1cbs Pfam PF00061 identifier=Lipocalin / cytosolic fatty-acid binding protein family 10283 1cbs Pfam PF00061 description=Lipocalin / cytosolic fatty-acid binding protein family 10284 1cbs InterPro IPR012674 name=Calycin 10285 1cbs InterPro IPR012674 identifier=Calycin 10286 10287new feature: SHOW DOMAINS "<annotationRecordIinfo>" 10288 - selects specific records 10289 - text-based matching in all fields 10290 10291new feature: SHOW DOMAINS "<annotationRecordIinfo> mappings" 10292 - adds information about mapping 10293 10294new feature: select within(annotation, "<query>") 10295 10296 - allows selection of atoms based on annotations. 10297 - <query> can be: 10298 - a databaseID: 10299 10300 select within(annotations,"InterPro") 10301 10302 - a specific databaseID.entryID: 10303 10304 select within(annotations,"InterPro.IPR012674 where identifier='calycin'") 10305 10306 - a databaseID followed by a WHERE clause: 10307 10308 select within(annotations,"InterPro where identifier='calycin'") 10309 select within(annotations,"InterPro where identifier like '*-like*'") 10310 10311 10312 10313 10314 any text information in the 10315 SHOW ANNOTATION report. 10316 10317bug fix: 1-letter sequence for water showing as "I" not "?" 10318bug fix: SHOW SEQUENCE FALSE not giving 1-letter sequences 10319bug fix: for (i in x) where x is an associative array does not work 10320 10321JmolVersion="14.3.3_2014.07.17" 10322 10323new feature: load *1cbs/all 10324 -- preliminary only 10325 10326new feature: show annotation 10327 10328bug fix: DSSP analysis not returning information to console 10329 10330JmolVersion="14.3.3_2014.07.13" 10331 10332code: refactoring of HTML5 Jmol, JSpecView, and AstexViewer for cleaner 10333 interaction with web-page based JavaScript. All interations now 10334 go directly through JS 10335 10336bug fix: move and moveto cannot be in the same session 10337 10338JmolVersion="14.3.3_2014.07.12" 10339 10340bug fix: x.func(y) as second operand in a boolean "and" operation 10341 where the first operand evaluates to FALSE 10342 (so that x.func(y) is never evaluated), triggers a script error. 10343bug fix: set atomPicking, setDrawPicking, pickLabel, pickingSpinRate 10344 all should not be in state 10345 10346new feature: load /pdbe/xxxx 10347 -- loads CIF file http://www.ebi.ac.uk/pdbe/entry-files/download/xxxx.cif 10348 -- can be abbreviated as "*": 10349 10350 load *1ai6 10351 10352 -- can be supplemented with annotations (TODO) 10353 10354new feature: {*}.seqid 10355 -- mmCIF only 10356 -- settable using {*}.seqid = .... 10357 -- from _atom_site.label_seq_id 10358 -- a pointer to _entity_poly_seq.num in the ENTITY_POLY_SEQ category. 10359 Data items in the ENTITY_POLY_SEQ category specify the sequence 10360 of monomers in a polymer. Allowance is made for the possibility 10361 of microheterogeneity in a sample by allowing a given sequence 10362 number to be correlated with more than one monomer id - the 10363 corresponding ATOM_SITE entries should reflect this heterogeneity. 10364 10365bug fix: model kit menu does not allow setting of new element 10366bug fix: set atomPicking, setDrawPicking should not be in state 10367 10368JmolVersion="14.3.3_2014.07.09" 10369 10370new feature: eval(...) 10371 10372code: org.jmol.util.Measure moved to javajs.util.Measure 10373 10374JmolVersion="14.3.3_2014.07.02" 10375 10376bug fix: getproperty structureInfo can fail with phosphorus monomers 10377bug fix: PDB reader not placing compoundSource in model auxiliary info 10378 10379JmolVersion="14.3.2_2014.06.29" 10380 10381bug fix: MCIF reader misreads magnetic symmetry operators involving xyz scaling 10382bug fix: isosurface "=3hyd" AS "3hyd.omap" fails to save proper file 10383 (error in seek() method of javajs.util.binaryDocument) 10384 10385JmolVersion="14.3.1_2014.06.28" 10386 10387bug fix: zz = write("coord") should write untransformed coordinates in XYZ format. It is writing untransformed coordinates in MOL format. 10388bug fix: zz = write("coord", "MOL") should write transformed coordinates in MOL format. It is writing untransformed coordinates. 10389bug fix: write COORD should display untransformed coordinates in XYZ format in the console, but it does not. It writes a JPG file named "coord". 10390bug fix: MCIF reader not reading magnetic centerings 1/3, 2/3 10391bug fix: JSV jsvAddHighlight broken 10392bug fix: JSmol HTML5 console broken for Safari and Chrome 10393bug fix: CASTEP phonon .geom file reading broken 10394 10395JmolVersion="14.3.0_2014.06.13" 10396 10397RELEASE OF Jmol 14.2.0 Friday, June 13, 2014 10398 10399new feature: readers with unit cells may load as trajectories 10400 10401bug fix: CASTEP reader broken for multiple cells and geometry optimization 10402 10403JmolVersion="14.1.17_2014.06.12" 10404 10405new feature: protein sidechain minimization 10406 -- enabled by set picking dragMinimizeMolecule 10407 -- proteins only 10408 -- uses MMFF or UFF force field automatically 10409 -- important to use set pdbAddHydrogens prior to loading 10410 to avoid stereochemical switch (ILE, THR, e.g.) 10411 or to be very careful about that 10412 10413JmolVersion="14.1.17_2014.06.11" 10414 10415bug fix: set pdbAddHydrogens fails for structures with ANISOU records 10416bug fix: select x < 0.3 reports error when checking, though it does run when executed 10417bug fix: SMILES for model with nonbonded atoms fails 10418 10419JmolVersion="14.1.17_2014.06.10" 10420 10421bug fix: 06.09 broke unitcell display 10422bug fix: WebPanel error trapping problem; too long file name for tar file 10423 10424synchonized with Jmol 14.0.17 June 9, 2014 10425 10426bug fix: zoomto broken 10427bug fix: atoms turned off with restrict still clickable 10428 10429JmolVersion="14.1.17" 10430JmolVersion="14.1.17_2014.06.07" 10431 10432FEATURE CHANGE: jmolCommandInput 6th parameter added is default value 10433 -- defaults to "help" 10434 10435FEATURE CHANGE: set useArcBall removed 10436 -- no longer necessary; never documented 10437 -- arcBall is always used anyway 10438 10439FEATURE CHANGE: removed UNITCELL "xxx" where xxx is an isosurface ID 10440 -- undocumented 10441 -- not necessary, as UNITCELL $xxx or UNITCELL isosurface xxx does as well 10442 -- conflicts with new UNITCELL "parent" and other unit cell types 10443 10444FEATURE CHANGE: REMOVED: set fractionalRelative 10445 -- an odd quantity -- related specifically to scripts commands 10446 using {1/1 1/2 1/3} and cell=nnn 10447 -- Its use with cell= was never documented. 10448 -- It makes no sense to change the unit cell and not change the 10449 meaning of {1/1 1/2 1/3} and cell=nnn 10450 -- Only relates to situations where the unit cell has been offset. 10451 -- Its presence caused unitcell [{origin} {a} {b} {c}] to fail. 10452 -- It should never have been set in state, as it has nothing to do with the state 10453 10454FEATURE CHANGE: default space group names for Int. Tables # 39, 41, 64, 67, 68 added 10455 10456new feature: x= format("JSON", data) 10457 -- simple way to generate JSON code. 10458 10459new feature: x = format("base64", data) 10460 -- creates base64-encoding of the data 10461 -- data can be an array, a byteArray, a string, or a base64-encoded array 10462 -- prepends the string with ";base64," 10463 10464new feature: x = format("byteArray", data) 10465 -- creates byte array from the data 10466 -- data can be an array, a byteArray, a string, or a base64-encoded array 10467 10468new feature: x = format("array", data) 10469 -- data can be an array, a byteArray, a string, or a base64-encoded array 10470 -- turns byteArrays and strings into integer arrays 10471 -- copies arrays if data is an array 10472 10473new feature: load xxxx filter "CELL=va,vb,vc;oa,ob,oc" 10474 -- generic cell transformation during load 10475 -- applicable to any crystallographic file 10476 -- must be the LAST element of a filter 10477 -- operators are applied BEFORE this transformation 10478 -- can be expanded with {i j k} or {mmm nnn 1} 10479 -- can be used to create a supercell with or without offset 10480 -- reversed with "cell=!a,b,c:0,0,1/2" 10481 -- forces packing, with range based on specified cell dimensions 10482 -- example: 10483 load t.mcif filter "cell=2a,2b,c:0,0,1/2" 10484 10485new feature: load xxxx filter "NOPACKCELL=va,vb,vc;oa,ob,oc" 10486 -- same as CELL= except without any packing 10487 10488new feature: load filter "cell=parent" or "cell=standard" 10489 -- for MCIF files (magnetic spin CIF files 10490 -- later, UNITCELL "conventional" displays conventional cell 10491 10492new feature: set showUnitCellInfo TRUE (default) 10493 -- set FALSE to hide unit cell information display 10494 10495new feature: unitcell "type" 10496 -- type can be "standard" or "parent" for now 10497 derived from CIF records 10498 -- "primitive" may follow 10499 unitcell "standard" 10500 unitcell "parent" 10501 unitcell "conventional" 10502 10503new feature: unitcell "abc_offset" 10504 -- abc_offset is of the form "a,b,c;0,0,0" 10505 where a, b, and c, can be any expression involving a, b, and c 10506 and 0 can be an offset 10507 -- numbers can be expressed fractionally or as decimals 10508 -- offset is optional, but semicolon is not 10509 -- effect is cumulative -- unit cell is NOT first restored 10510 -- reversed using ! 10511 -- examples: 10512 10513 unitcell "a+b,a-b,c;1/4,1/4,1/4" 10514 unitcell "!a+b,a-b,c;1/4,1/4,1/4" 10515 unitcell "a+b,a-b,c;" 10516 10517new feature: unitcell {555 575 0} 10518 -- 0 here means "draw these cells without internal lines" 10519 -- (currently) .uxyz does not scale 10520 10521new feature: unitcell OFFSET and RANGE 10522 -- explicit parameters for unitcell {i j k} and unitcell {nnn mmm x} 10523 10524new feature: unitcell BOUNDBOX 10525 -- allows calculation of positions relative to boundbox using fractional coordinates 10526 -- for example 10527 10528 unitcell boundbox 10529 draw {1/2 1/2 1/2} 10530 unitcell reset 10531 10532new feature: x.push(key,value) for associative array 10533 -- same as x.key = value; seems appropriate 10534 10535new feature: x.pop("key") for an associative array 10536 -- same as x - "key"; just seems more appropriate 10537 10538new feature: load ORIENTATION or load DATA "...orientation..." ... 10539 -- loads a file and preserves current orientation 10540 -- creates saved orientation "preload" 10541 -- shortcut for save orientation preload;load....;restore orientation preload 10542 -- example: 10543 load orientation "" // reload file with same orientation 10544 10545new feature: V3000 reading of DATA SGROUP records: 10546 -- for example: 10547 ... 10548 M V30 BEGIN SGROUP 10549 M V30 1 DAT 0 ATOMS=(1 1) FIELDNAME=pc FIELDDATA=-0.2344 10550 M V30 1 DAT 0 ATOMS=(1 2) FIELDNAME=pc FIELDDATA=0.3344 10551 M V30 1 DAT 0 ATOMS=(1 3) FIELDNAME=pc FIELDDATA=-0.4344 10552 M V30 END SGROUP 10553 ... 10554 then partialCharges, for example, can be set using: 10555 {*}.partialCharge = {*}.property_pc.all 10556 -- optionally, if FIELDNAME contains "partial" then the atom's partial charge 10557 is automatically set instead of property_partialCharge 10558 -- if more than one field starts with "partial" then the 10559 first one indicated in the file is assigned to partialCharge 10560 and the any others are left as property_partialXXXX 10561 10562new feature: moveTo AXIS [a,b,c,x,y,z] 10563 -- for example: moveTo AXIS a 10564 -- rotates the model smoothly to a crystallographic or cartesian axis. 10565 -- in the case of abc, the rotation places the remaining two axes 10566 to the right and down (International Tables standard) 10567 -- in the case of xyz, the rotation places the remaining two axes 10568 to the right and up (standard Cartesian orientation) 10569 -- for abc, if no unit cell is available, a simple {1 1 1 90 90 90} unit cell is used 10570 -- added to application and popup View menus 10571 10572new feature: JSmol: allow for a user callback for customization of menu 10573 if (Jmol._showMenuCallback) 10574 Jmol._showMenuCallback(menu, x, y); 10575 10576new feature: show(xxx) function 10577 -- same as script("show " + xxx) 10578 10579new feature: set showUnitCellDetails TRUE (default) 10580 -- FALSE removes a,b,c,alpha,beta,gamma lines 10581 10582new feature: unitcell RESET (or RESTORE) 10583 -- returns unit cell to original values and removes offset and scaling 10584 -- resets width to fine line 10585 10586new feature: restore UNITCELL 10587 -- returns unit cell to original values and removes offset and scaling 10588 10589new feature: show symop n "fmatrix" 10590new feature: show symop @1 @2 "fmatrix" 10591 -- gives rational fractional matrix 10592 10593new feature: BilbaoReader NONORM option -- reads displacements as actual values, not normalized 10594 10595new feature: load ... filter "symop=..." 10596 -- list of numbers separated by space, for example: 10597 load quartz.cif packed filter "symop=2" 10598 load quartz.cif packed filter "symop=2 3" 10599 10600new feature: set echo depth x.x for standard echos 10601 -- works for 3D echos now as well as 2D echos 10602 -- values in percent of depth 10603 -- x.x >= 1000 are (x.x % 1000) in front of the 3D position 10604 -- x.x <= -1000 are (-x.x % 1000) behind the 3D position 10605 10606new feature: set starWidth 10607 -- replaces set set starScale 10608 10609new feature: menu item color--atoms--by scheme--vectors 10610 10611new feature: load "filename" packed x.x 10612 -- x.x is the range in fractional coordinates within which an atom 10613 can be close to being in the 555 cell but not quite and still be 10614 accepted by the atom loading filter. 10615 -- default is 0.02 10616 -- in some cases, this adds too many atoms and can be reduced to 0.01 or 0.001 10617 -- modulation reader uses 0.001 strictly. 10618 -- for example: 10619 10620 load t2.bcs packed 0.01 10621 {1.1}.property_dist = {1.1}.distance.min({1.2}) 10622 {1.1}.spacefill={1.1}.property_dist.all 10623 color {1.1} property_dist "bwr" range 0 0.5 10624 select 1.2 10625 stars -0.3 10626 set starscale 0.1 10627 frame * 10628 unitcell {1.2} 10629 10630new feature: Bilbao Crystallographic Server file reader 10631 -- scrapes Bilbao HTML pages for Bilbao structure format 10632 -- for example, http://www.cryst.ehu.es/cryst/compstru.html 10633 or http://www.cryst.ehu.es/cryst/amplimodes.html 10634 -- reads Bilbao standard setting data: 10635 15 10636 13.800 5.691 9.420 90.0 102.3 90.0 10637 7 10638 Pb 1 4e 0.0000 0.2910 0.2500 10639 Pb 2 8f 0.3170 0.3090 0.3520 10640 P 1 8f 0.5990 0.2410 0.4470 10641 O 1 8f 0.6430 0.0300 0.3920 10642 O 2 8f 0.6340 0.4640 0.3740 10643 O 3 8f 0.6420 0.2800 0.6120 10644 O 4 8f 0.4910 0.2220 0.4200 10645 -- identified by 1st and third line being a single integer only 10646 (IT spacegroup number and atom count, respectively) 10647 10648new feature: dipole ID m1 ALL {...} 10649 -- creates a molecular dipole set with ID 10650 -- one dipole per molecule in specified range 10651 -- connected to associated molecule in terms of visibility 10652 10653new feature: unit cell display includes k (mCIF) and q (CIF, Jana2006) vectors 10654 10655bug fix: cannot zap model for which atoms are all deleted 10656bug fix: isosurface "=1bna" does not work for zapped file 10657bug fix: label %[x] does not work 10658bug fix: show spacegroup not complete for magnetic and modulated structures 10659bug fix: legacy JVXL file data skipping broken in 14.1.13 10660bug fix: MO file line includes full path; should be just the filename 10661bug fix: V3000 reader skips 2nd file in multiple files separated by $$$$ 10662bug fix: isosurface color density broken 10663bug fix: isosurface slab @1 @2 @3 broken 10664bug fix: (undocumented) isosurface slab @3 fails when isosurface has not been mapped 10665bug fix: console not properly handling TAB key 10666bug fix: double-click drag doesn't drag the model, and 10667 since double-click is determined by time, not location, 10668 it appears as though sometimes the model drags and 10669 sometimes it does not. Solution is to 10670 a) add a localization to double clicking. I think that 10671 was removed because of touch interface problems. 10672 b) add left-double-drag to left-single-drag for standard rotation 10673 10674bug fix: browser errant zero mouse move 10675 causes collapse of rotation matrix 10676 due to coding error in arcball routine 10677 10678bug fix: drag-drop followed by model building may fail. 10679bug fix: tm.matrixRotate protected from setting to all zeros (Chrome issue; reason unknown) 10680bug fix: JavaScript state creation not properly representing integral decimal numbers 10681bug fix: draw length pt1 pt2 only makes half the line 10682bug fix: color $m* green blue wild card coloring for isosurfaces doe not work 10683bug fix: {*}.trace = {*}.bfactor crashes Jmol (.bfactor does not exist) 10684bug fix: ramachandran plot scaling off 10685bug fix: color $isosurface1 "rwb" range 3.0 4.5 fails to set color scheme 10686bug fix: write VAR X fails if X is an associative array 10687bug fix: show NMR broken 10688bug fix: H1 simulation not happening in Jmol.jar 10689bug fix: write() function does not work for write("coords") 10690bug fix: vibration vectors may have incorrect length if vector scale and vibration scale are different 10691bug fix: LOAD ... SUPERCELL not saved in state 10692bug fix: CASTEP reader not handling supercell correctly (packing and phonons) 10693 10694bug fix: Jmol 14.1.12 broke atom.fxyz for models that have vibrations. 10695 -- atom.fxyz SHOULD change with changes in unit cell, but when an update was 10696 made to accommodate modulated subsystems, where different atoms in a 10697 model may have different unit cells, this capability was lost for any 10698 atom having any sort of vibration other than a modulation. 10699 10700bug fix: set hoverlabel will be ignored if no hover has already taken place 10701 10702bug fix: symmetry operation drawing/description with centering 10703bug fix: Bilbao uses 2nd origin for numerous spacegroups 10704 10705bug fix: magCIF reader using 4x4 determinant, not 3x3 10706 10707bug fix: file drag-drop doing append if no atoms 10708bug fix: BilbaoReader amplimode correction 10709bug fix: polyhedra not vibrating 10710bug fix: application file open preview not working 10711bug fix: show file only shows file for model 1.1 10712bug fix: signed applet not accepting drag-drop 10713bug fix: getProperty "fileInfo" for CIF should fix keys (lower case and change '.' to '_') 10714bug fix: problems reading PNGJ files for Jana2006 10715 10716code: V3000 reader split off from MolReader; saves 2K or so. 10717code: faster calculations involving point-based atom properties such as fx 10718code: TransformManager clean-up; 10719code: Viewer/FileManager clean-up; image loading moved to jzu 10720 10721 10722JmolVersion="14.1.15" 10723JmolVersion="14.1.15_2014.05.08" 10724 10725bug fix: pubChem reader broken 10726 10727new feature: mCIF (magnetic CIF) file reader 10728 -- preliminary reader for CIF format development testing 10729 -- includes latest proposal in committee as of May 8, 2014 10730 10731new feature: unitcell [ {origin} {a} {b} {c} ] 10732 -- defines unit cell in terms of an origin and three vectors 10733 -- just wasn't documented. 10734 10735 10736JmolVersion="14.1.15_2014.05.06" 10737 10738bug fix: CIF reader not filtering atoms by element 10739bug fix: structure command may not properly remove residues from structures (F. Reichmann) 10740bug fix: FRAME n setting frame to n - 1. (F. Reichmann) 10741bug fix: unitcell {0 0 0}; in state leaves unit cell on 10742bug fix: modulation of anisotropic parameters broken 10743bug fix: Jana2006 reader does not accept filter "MODAVE" 10744bug fix: msCIF with filter "MODAXES=X" broken 10745 10746JmolVersion="14.1.15_2014.05.04" 10747 10748new feature: reset PRINT 10749 -- clears the output buffer (scriptWait, scriptEcho, evaluateVar 10750bug fix: color property x does not pass script check, so not allowed in web command box 10751bug fix: echo "@{xxx}" may fail 10752but fix: print @b fails for referred variable an array 10753bug fix: xxx.format("%8.-3p") does not work 10754bug fix: [array].format("%8.3p") does not work 10755bug fix: PDB Reader skips first ANISOU record 10756bug fix: SFTP not supported 10757bug fix: fix for measurements not updating with modulation x.x 10758 10759new feature: replace() 10760 -- no arguments means "clean whitespace to single space and trim" 10761 10762new feature: replace(x, y, TRUE) 10763 -- all occurrences of characters of x will be replaced with y. 10764 10765new feature: mCIF reader 10766 -- Bilbao Crystallographic Server format 10767 -- magnetic extension to CIF reader 10768 10769new feature: set vectorsCentered 10770 -- centers vibration vector on atom 10771 -- vector is never animated 10772 -- useful for magnetic/spin properties 10773 10774new feature: select xyz > 1.0 10775 -- xyz, fxyz, fuxyz, uxyz, vxyz 10776 -- uses length 10777 10778JmolVersion="14.1.14" 10779JmolVersion="14.1.14_2014.04.28" 10780 10781FEATURE CHANGE: Application Tools...Spectrum menu removed 10782 -- Issue is that EPFL returns with a new 2D structure, 10783 -- and Jmol would have to determine from that an atom selection map. 10784 -- we are doing this with JSmol, but not yet with the application. 10785 -- Bummer! 10786 10787new feature: getProperty(x, SQL_query) 10788 -- Full SQL for any Jmol associative array. 10789 -- Result is an array if x is an array. 10790 -- example: 10791 x = [ 1,2,3,{ "testing":"here","val":33 } ] 10792 y = getProperty(x, "SELECT val WHERE testing LIKE 'here'") 10793 show y 10794 10795 [ 33 ] 10796 10797 z = x[4] 10798 show z 10799 10800 z = { "testing":"here","val":33 } 10801 10802 y = getProperty(z, "SELECT val WHERE testing LIKE 'here'") 10803 show y 10804 10805 33 10806 10807new feature: LIKE operator extended to atom expressions 10808 --IS case-sensitive (unlike "=") 10809 --examples: 10810 load =1crn 10811 select group like "G*" 10812 print "x" like "X" // FALSE 10813 10814new feature: "like" operator, strings only: 10815 a LIKE "x" a equals x 10816 a LIKE "*x" a ends with x 10817 a LIKE "x*" a starts with x 10818 a LIKE "*x*" a contains x 10819 10820new feature: rich SQL logic in GETPROPERTY, getProperty(), and within(dssr,"xxxx.yyy..."): 10821 -- syntax: [SELECT keys WHERE expression] 10822 -- keys indicating only one key, such as "nt1", return just the value 10823 -- keys may be a LIKE wildcard such as "nt*" or "*nt" or "*nt*" (but are NOT case sensitive) 10824 also return just the value(s) 10825 -- keys * or */* means "return all values as an associative array" 10826 -- keys */nt1,nt2 means "return a new associative array including only keys nt1 and nt2" 10827 -- keys */nt* means "return a new associative array including all keys starting with nt" 10828 -- if drilling to this associative array from a list, * or */... returns an array of key/value pairs 10829 -- expression may be any standard Jmol expression that does not involve actual Jmol variables 10830 (instead, the variable names should all be the keys, and their values will be that given in the key:value pair) 10831 -- example: 10832 load files "=1ehz/dssr" 10833 x = getProperty("auxiliaryInfo.models.1.dssr.basepairs"); 10834 print getProperty(x,"[SELECT nt* WHERE bp='C-G']") 10835 print getProperty(x, "[SELECT */nt* WHERE Saenger LIKE '19*']") 10836 -- keys may be "dotted" -- modelProperties.FreqValue -- but in this case 10837 the dotted key (FreqValue here) must be exact case. "modelProperties.freqvalue" would not work. 10838 -- example: 10839 load C6H6.smol 10840 x = getProperty("modelInfo.models[select _ipt where modelProperties.PATH='Frequencies' and modelProperties.FreqValue > 3000]") 10841 select modelIndex = x // 6 models selected 10842 10843new feature: JANA2006 reader adds M40 molecular group support 10844 -- no TLS modulation 10845 -- no local axes (third header line of pos# record) 10846 10847new feature: calculate structure dssr 10848 -- fetches http://x3dna.bio.columbia.edu/dssr/?POST?opts=--hl%20--more&model=[pdb data] 10849 -- builds auxiliaryInfo.models.n.dssr 10850 -- displays summary report 10851 -- complements calculate structure dssp, except it is done by the x3dna server at Columbia, not Jmol 10852 10853new feature: (application only) -a --autoAnimationDelay 10854 -- delay time in seconds for press-and-hold operation of 10855 toolbar animation buttons (default 0.2; set to 0 to disable) 10856 10857new feature: calculate hbonds structure 10858 -- now includes DSSR-calculated bonds for nucleic acids 10859 10860new feature: select leadAtom 10861 -- selects *.CA, *.P and terminal O in nucleotides 10862 10863 10864new feature: set backboneSteps TRUE 10865 -- draws base pair steps between dssr-identified base pairs 10866 10867TRANSCRIPTION/DNA 06-MAR-92 1D66 10868DNA RECOGNITION BY GAL4: STRUCTURE OF A PROTEIN/DNA COMPLEX 10869found biomolecule 1: D, E, A, B 10870 10871DSSR: a software program for Defining the Secondary 10872Structures of RNA from three-dimensional coordinates 10873v1.0.6-2014apr04, Xiang-Jun Lu (xiangjun@x3dna.org) 10874List of 19 base pairs 10875List of 1 helix 10876List of 4 stems 10877List of 1 coaxial stack 10878List of 3 internal loops 10879 10880 10881new feature: load =1msy/dssr 10882 -- very simple RCSB/DSSR connection 10883 -- loads both files: 10884 FileManager opening 1 http://www.rcsb.org/pdb/files/1msy.pdb.gz 10885 FileManager opening 1 http://x3dna.bio.columbia.edu/dssr?id=1msy 10886 10887 load =1msy/dssr 10888 set backboneSteps 10889 backbone -0.2 10890 select within(dssr,"helices") 10891 color blue 10892 select within(dssr,"stems") 10893 color red 10894 select within (dssr,"singleStranded") 10895 color white 10896 select within (dssr,"multiplets") 10897 color green 10898 select within (dssr,"isolatedPairs") // was "lonePairs" 10899 color orange 10900 select leadatom 10901 spacefill 1.5 10902 label %[group1] 10903 font label 24 bold 10904 set labeloffset 0 0 10905 color label grey 10906 10907new feature: select within(dssr,"subset") 10908 -- subsets include 10909 aMinorMotifs 10910 basePairs 10911 bulges 10912 coaxialStacks 10913 hairpinLoops 10914 helices 10915 internalLoops 10916 junctions 10917 kinkTurns 10918 kissingLoops 10919 lonePairs 10920 multiplets 10921 riboseZippers 10922 singleStranded 10923 stems 10924 summary 10925 -- optionally followed by ".n" where n is a number starting with 1 10926 -- optionally followed by ".linkedBy" for loops, bulges, and junctions 10927 -- optionally followed by ".res1" or ".res2" 10928 -- can accommodate SQL 10929 -- results are cached for individual models 10930 -- example: 10931 10932 select within(dssr,"multiplets") 10933 select within(dssr,"bulges.3") 10934 select within(dssr,"bulges.3.linkedBy") 10935 select within(dssr,"basePairs[SELECT res* WHERE twist > 1]") 10936 10937new feature: select x = [array or array variable] 10938 -- implied OR 10939 -- operators other than equals use implied AND 10940 10941new feature: DSSR server 10942 -- load files "=1d66" + "=dssr/1d66" 10943 10944 DSSR: a software program for Defining the Secondary 10945 Structures of RNA from three-dimensional coordinates 10946 v1.0.6-2014apr04, Xiang-Jun Lu (xiangjun@x3dna.org) 10947 10948 -- uses new "concatenate" notation to combine data from two sources 10949 -- after loading, try 10950 10951 print getProperty("auxiliaryInfo.models.1.dssr") 10952 10953 10954new feature: array.keys.all 10955 -- drills down in sequential or associative arrays 10956 -- gives all keys as well as number of array elements: 10957 10958 load files "=1d66" + "=dssr/1d66" 10959 x=getProperty("auxiliaryInfo.models.1.dssr") 10960 print x.keys.all 10961 10962basePairs 10963basePairs.19.DSSR 10964basePairs.19.LW 10965basePairs.19.Saenger 10966basePairs.19.bp 10967basePairs.19.id 10968basePairs.19.info 10969basePairs.19.name 10970basePairs.19.nt1 10971basePairs.19.nt2 10972coaxialStacks 10973coaxialStacks.1.helix 10974coaxialStacks.1.nts 10975coaxialStacks.1.nts.4.5.DSSR 10976coaxialStacks.1.nts.4.5.LW 10977coaxialStacks.1.nts.4.5.Saenger 10978coaxialStacks.1.nts.4.5.bp 10979coaxialStacks.1.nts.4.5.id 10980coaxialStacks.1.nts.4.5.info 10981coaxialStacks.1.nts.4.5.name 10982coaxialStacks.1.nts.4.5.nt1 10983coaxialStacks.1.nts.4.5.nt2 10984coaxialStacks.1.stemCount 10985helices 10986helices.1.basePairs 10987helices.1.basePairs.19.DSSR 10988helices.1.basePairs.19.LW 10989helices.1.basePairs.19.Saenger 10990helices.1.basePairs.19.bp 10991helices.1.basePairs.19.id 10992helices.1.basePairs.19.info 10993helices.1.basePairs.19.name 10994helices.1.basePairs.19.nt1 10995helices.1.basePairs.19.nt2 10996helices.1.info 10997internalLoops 10998internalLoops.3.count 10999internalLoops.3.dssrType 11000internalLoops.3.id 11001internalLoops.3.linkedBy 11002internalLoops.3.nts 11003internalLoops.3.nts.3.count 11004internalLoops.3.nts.3.nt 11005internalLoops.3.nts.3.seq 11006stems 11007stems.4.basePairs 11008stems.4.basePairs.5.DSSR 11009stems.4.basePairs.5.LW 11010stems.4.basePairs.5.Saenger 11011stems.4.basePairs.5.bp 11012stems.4.basePairs.5.id 11013stems.4.basePairs.5.info 11014stems.4.basePairs.5.name 11015stems.4.basePairs.5.nt1 11016stems.4.basePairs.5.nt2 11017stems.4.info 11018 11019 11020 11021new feature: array.join() 11022 -- creates a flat array from an array of arrays: 11023 -- example: 11024 $x = [1,2,[3,4,5],[6,[7,8,9]]].join() 11025 $show x 11026 x = [ 1,2,3,4,5,6,7,8,9 ] 11027 11028new feature: DSSR output reading 11029 -- Defining the (Secondary) Structures of RNA 11030 -- see http://forum.x3dna.org/rna-structures/dssr-software-for-defining-the-%28secondary%29-structures-of-rna/ 11031 -- brain-child of Xiang-Jun Lu (3dna.lu@gmail.com; Columbia University) 11032 -- use system command x3d-dssr.exe --input=xxxx.pdb > xxxx.out 11033 -- then in Jmol: 11034 load files "xxxx.pdb" + "xxxx.out" 11035 -- all DSSR information will be in auxiliaryInfo.models.dssr with the following keys: 11036 11037 aMinorMotifs 11038 basePairs 11039 bulges 11040 coaxialStacks 11041 hairpinLoops 11042 helices 11043 internalLoops 11044 junctions 11045 kinkTurns 11046 kissingLoops 11047 lonePairs 11048 multiplets 11049 riboseZippers 11050 singleStrandedSegments 11051 stems 11052 11053 -- all entries are lists. 11054 -- most of these list entries have "nt" entries, and those 11055 are nucleotide residue identifiers, so Jmol's 11056 getProperty() "drill-down" capabilities allow for: 11057 11058 x = getProperty("auxiliaryInfo.models.1.dssr.basepairs.nt") 11059 select @{x} 11060 11061bug fix: x=3;select atomno=x can fail (E. Martz) 11062bug fix: JSmol deferred (image-covered) applet can produce unwanted multiple canvases (J. Gutow) 11063 11064bug fix: print "x" = "X" returns false; should be TRUE (broken in 14.0/1.10) 11065bug fix: script error in JavaScript xxx.spt stops all subsequent script processing (P. Bays) 11066bug fix: color property_x fails (broken in jmol-14.1.14_2014.04.16) (P. Bays) 11067bug fix: halos ON fails for small vdw radii (A. Herraez) 11068bug fix: CIF reader with bsModels fails 11069 -- example: 11070 load maleic.cif [3 5 7] 11071bug fix: reading concatenated files from PNGJ with model selected 11072bug fix: reading gzip files from PNGJ fails when concatenated 11073bug fix: group1 codes for nonstandard residues not read from mmCIF (_struct_ref_seq_dif.db_mon_id) or PDB (SEQADV) 11074bug fix: select group="ALA" fails due to select group ..... option 11075bug fix: getProperty("auxiliaryInfo") fails for JavaScript 11076bug fix: Gaussian FCHK file reader fails when no SP coefficients 11077bug fix: set defaultVDW not working (A. Herraez) 11078bug fix: color isosurface range broken (Lucy Cusinato) 11079bug fix: script compiler error: x.x*x.x requiring space: x.x * x.x (Alexander Rose) 11080bug fix: lost H atoms of PDB-designated water (E. Martz) 11081bug fix: mouse rotation can cause loss of model (E. Martz) 11082bug fix: Jana2006 reader not reading groups correctly 11083bug fix: functions called in script defined by script called by this script 11084 must be lower case. (A. Rose) 11085bug fix: clickable atoms may not be considered visible for hover 11086bug fix: select color=red should be color="red" to allow 11087 for variable after "color=" 11088 11089code: upgrade of Apache Commons CLI (Command Line Interface) to 1.2 from 1.0 11090 11091code: T4 generalized as extending T3, allowing 4D mesh reading. 11092code: implementation of Andrew Hanson's 3D Ball Roll mouse algorithm 11093 -- no significant practical improvement, but nicer mathematics 11094 -- a bit more involved, but this is once per mouse move. Doesn't matter. 11095 11096JmolVersion="14.1.13" 11097 11098new feature: load files "xxx" + "yyy" 11099 -- concatenates yyy onto xxx as a single string of file data 11100 11101new feature: Gaussian fchk file reader 11102 11103new feature: var x,y,z; 11104 -- commas optional 11105 -- similar to JavaScript 11106 -- initializes the variable to "" 11107 11108 11109JmolVersion="14.1.13_2014.04.03c" 11110 11111bug fix: LOAD command cannot force XML types 11112 -- load xmlvasp::vasprun.xml 11113 -- load vasp::vasprun.xml 11114 -- option without "xml" required only for Odyssey, as there are both Odyssey and XmlOdyssey 11115bug fix: application file open fails when preview is unchecked in Edit|Properties 11116 11117bug fix: vectors using vibration scale, not vector scale 11118bug fix: vector 0.01 misread as if integer "20" (pixel width) 11119bug fix: Gaussian fchk+freq needs to propagate bonding as well to modes 11120bug fix: JDX reading of older Chime-related ##PEAKASSIGNMENTS records 11121 11122bug fix: polyhedra display improperly when some vertex atoms are hidden (Nick Greeves) 11123 11124code: Huge refactoring for JavaScript and judicious post-Google Closure Compiler 11125 editing serves to reduce code size by 5% -- to 1.38 MB for core.z.js 11126 partially due to additional directory changes in JavaScript and 11127 partially due to removing unnecessary final static variable defs. 11128 (These are just constants that are never referred to.) 11129 11130JmolVersion="14.1.13_2014.04.02" 11131 11132code: JavaScript additional global reduction 11133new feature: load files "xxx" + "yyy" 11134 -- concatenates yyy onto xxx as a single string of file data 11135 11136JmolVersion="14.1.13_2014.04.01d" 11137 11138bug fix: JmolAppletSigned0.jar missing export classes (POV-Ray, VRML, for example) 11139bug fix: Mac Spartan spardir reading 11140 -- for web, use zipped up version of spardir 11141 11142new feature: Gaussian fchk file reader 11143 11144bug fix: A=[]; A[3] = 5 not working 11145 11146new feature: var x,y,z; 11147 -- commas optional 11148 -- similar to JavaScript 11149 -- initializes the variable to "" 11150 11151 11152bug fix: var x not isolated to script context 11153bug fix: ellipsoid command broken 11154 11155JmolVersion="14.1.12" 11156JmolVersion="14.1.12_2014.03.30" 11157 11158changes since 14.1.11: 11159 11160new feature: JSpecView getSolutionColor fill/all/none/false 11161 -- any combination of these four flags 11162 -- fill: fill area under a VIS spectrum with color 11163 -- none: remove fill 11164 -- all: do this for all spectra, not just the selected spectrum 11165 -- false: use interpolation method rather than curve fitting 11166 (see jspecview.common.Visible.java for details) 11167 11168new feature: JSpecView PEAK command -- adds PEAK GC/MS "#1" 11169 -- #1 here indicates "MS for first GC peak" 11170 11171summary: We now have general ZIP and image file (including PDF) creation in 11172 JavaScript independent of Jmol itself. 11173 11174new feature; byteArray type 11175 -- from format("byteArray", x) where 11176 x is an integer array, or 11177 x is a string starting with ";base64," 11178 x is any other variable (converted to byte list of string equiv. 11179 -- from binary associative arrays 11180 11181new feature: binary associative arrays 11182 -- Any array containing "$_BINARY_$" as a key. 11183 -- Values may contain raw byte array data, but need not. 11184 -- Can be expanded or changed, just like any associative array. 11185 -- Seen in string form when in a string context. 11186 -- .type of elements will report "byteArray" 11187 11188new feature: x = write("PNGJ") 11189 -- Creates a binary associative array equivalent to writing a PNGJ file 11190 -- Contains keys "_IMAGE_", "JmolManifest.txt", "state.spt" 11191 and all associated files. 11192 11193new feature: write VAR x "filename" 11194 or write @x "filename" 11195 -- Where x is a byteArray or a (possibly binary) associative array. 11196 -- When x is a byteArray, writes binary data to a file. 11197 -- When x is an associative array, creates a ZIP file 11198 (or PNGJ file, if _IMAGE_ is present and is PNG format), 11199 automatically converting strings starting with ";base64," to 11200 byte arrays in the ZIP file. To do the same with x a binary 11201 array, just use @{array(x)} instead of @x. 11202 11203new feature: x = load("myfile",true) 11204 -- Creates a binary associative array variable x that contains the contents of 11205 the file. 11206 -- data are stored as byte arrays. 11207 -- If the file is a standard file, the key "_DATA_" will hold the file data. 11208 -- If the file is a PNGJ file, the key "_IMAGE_" will hold the image data, 11209 and additional files are keyed by file name. 11210 -- If the file is a zip file, the files are keyed by file name. 11211 -- Note that x = load("myfile") without "true" loads the contents of 11212 the file into x and, if the file is a PNGJ or ZIP file, just loads 11213 the list of files in the collection, not the actual data. 11214 11215new feature: filter "ATOM" opposite of filter "HETATM" 11216 11217new feature: load ASYNC .... 11218new feature: script ASYNC .... 11219 -- load and script ASYNC start a new asynchronous thread to load the file 11220 and then continue after that. 11221 -- JSmol/HTML5 only; others ignore 11222 11223new feature: Mol3D reader 11224 -- using load "MOL3D::xxx.mol" one can force only 3D mol files to be read 11225 -- 2D mol files will throw an error. 11226 11227new feature: show CHEMICAL STDINCHIKEY 11228new feature: show CHEMICAL STDINCHI 11229 11230new feature: load ":inchikey:xxxxx" 11231 -- requires STANDARD InChIKey (as from {*}.find("chemical", "stdinchikey") 11232 11233new feature: x = {*}.find("chemical",type) 11234 -- type is "smiles", "inchi", "stdinchi", "inchikey", "stdinchikey" 11235 -- uses NCI/CADD CIR 11236 -- Note that unlike SHOW CHEMICAL, "InChIKey=" and "InChI=" are dropped 11237 -- Note that unlike SHOW CHEMICAL, trailing new line char is removed 11238 11239new feature: x = smilesString.find("chemical",type) 11240 -- type is "smiles", "inchi", "stdinchi", "inchikey", "stdinchikey" 11241 -- allows going directly from SMILES to other quantities 11242 -- uses NCI/CADD CIR 11243 -- Note that unlike SHOW CHEMICAL, "InChIKey=" and "InChI=" are dropped 11244 -- Note that unlike SHOW CHEMICAL, trailing new line char is removed 11245 11246bug fix: NWChem reader broken 11247bug fix: JSpecView GC/MS issues 11248bug fix: JSmol callbacks should refer to "jmolApplet0" not "jmolApplet0_object" 11249bug fix: set cameraDepth not working 11250 -- note that loading of PyMOL files affects this setting, which 11251 is reset only using the INITIALIZE command 11252bug fix: getProperty() function does not recognize a list as a variable and returns it as a string 11253bug fix: Dsn6Reader.java misnamed, causing EDS map file load error 11254 in JavaScript only. (I did not know that was even possible!) 11255bug fix: java.io.dataStreamReader.readShort() does not take into 11256 account JavaScript equivalence of short and int, causing 11257 "-1" to be read as 65535. 11258bug fix: minimum modulationScale set to 1; should be 0.1. 11259bug fix: translucent echo backgrounds broken 11260bug fix: filter "HETATM" does not work 11261bug fix: write XYZ broken by changes to the way arrays 11262 are shown with the PRINT command 11263bug fix: x = adfjladj(3) crashes Jmol 11264bug fix: x[0] = "tst" "here" "now" should cause script exception 11265bug fix: isosurface MOLECULAR delivers wrong surface 11266bug fix: spacefill ionic not working 11267bug fix: set cameraDepth disabled 11268bug fix: some translations not being carried out. 11269bug fix: msCIF reader not accepting normalized commensurate Fourier vectors 11270bug fix: JSmol/HTML MSIE local installation AJAX working again (still no binary files) 11271 11272code: variable compression issues in Jmol and JSV 11273code: org.jmol.io and org.jmol.io2 consolidated 11274code: select water hard-coded for speed (2 x faster) 11275code: careful attention to loading of biomolecules results in 160K core bio load savings 11276code: JavaScript core load reduced by 2% (30KB) by changing high-frequency global name "viewer" to "vwr" 11277code: refactoring of image writing code to javajs.img for general use 11278code: refactoring of zip code into javajs.util for general use 11279code: refactoring of minimization code saves 10KB 11280code: isosurface MOLECULAR speed-up by a factor of 10. 11281 -- better handling of constants during iteration 11282 -- better identification of unnecessary edges and faces 11283 11284 11285JmolVersion="14.1.12_2014.03.27b" 11286 11287bug fix: NWChem reader broken 11288 11289new feature: JSpecView PEAK command -- adds PEAK GC/MS "#1" 11290 -- #1 here indicates "MS for first GC peak" 11291 11292bug fix: JSpecView GC/MS issues 11293bug fix: JSmol callbacks should refer to "jmolApplet0" not "jmolApplet0_object" 11294bug fix: set cameraDepth not working 11295 -- note that loading of PyMOL files affects this setting, which 11296 is reset only using the INITIALIZE command 11297 11298code: variable compression issues in Jmol and JSV 11299 11300JmolVersion="14.1.12_2014.03.21" 11301 11302bug fix: getProperty() function does not recognize a list as a variable and returns it as a string 11303 11304code: org.jmol.io and org.jmol.io2 consolidated 11305code: select water hard-coded for speed (2 x faster) 11306code: careful attention to loading of biomolecules results in 160K core bio load savings 11307code: JavaScript core load reduced by 2% (30KB) by changing high-frequency global name "viewer" to "vwr" 11308code: refactoring of image writing code to javajs.img for general use 11309code: refactoring of zip code into javajs.util for general use 11310code: refactoring of minimization code saves 10KB 11311 11312summary: We now have general ZIP and image file (including PDF) creation in 11313 JavaScript independent of Jmol itself. 11314 11315 11316JmolVersion="14.1.12_2014.03.19" 11317 11318new feature: x= format("JSON", data) 11319 -- simple way to generate JSON code. 11320 11321new feature: x = format("base64", data) 11322 -- creates base64-encoding of the data 11323 -- prepends the string with ";base64," 11324 11325new feature; binary byte array 11326 -- from array(s) where s starts with ";base64," 11327 -- from binary associative arrays 11328 11329new feature: binary associative arrays 11330 -- Any array containing "$_BINARY_$" as a key. 11331 -- Values may contain raw byte array data, but need not. 11332 -- Can be expanded or changed, just like any associative array. 11333 -- Seen in string form when in a string context. 11334 -- .type of elements will report "byteArray" 11335 11336new feature: x = write("PNGJ") 11337 -- Creates a binary associative array equivalent to writing a PNGJ file 11338 -- Contains keys "_IMAGE_", "JmolManifest.txt", "state.spt" 11339 and all associated files. 11340 11341new feature: write VAR x "filename" 11342 or write @x "filename" 11343 -- Where x is a byteArray or a (possibly binary) associative array. 11344 -- When x is a byteArray, writes binary data to a file. 11345 -- When x is an associative array, creates a ZIP file 11346 (or PNGJ file, if _IMAGE_ is present and is PNG format), 11347 automatically converting strings starting with ";base64," to 11348 byte arrays in the ZIP file. To do the same with x a binary 11349 array, just use @{array(x)} instead of @x. 11350 11351new feature: x = load("myfile",true) 11352 -- Creates a binary associative array variable x that contains the contents of 11353 the file file. 11354 -- data are stored as raw bytes. 11355 -- If the file is a standard file, the key "_DATA_" will hold the file data. 11356 -- If the file is a PNGJ file, the key "_IMAGE_" will hold the image data, 11357 and additional files are keyed by file name. 11358 -- If the file is a zip file, the files are keyed by file name. 11359 -- Note that x = load("myfile") without "true" loads the contents of 11360 the file into x and, if the file is a PNGJ or ZIP file, just loads 11361 the list of files in the collection, not the actual data. 11362 11363 11364 11365 11366JmolVersion="14.1.12_2014.03.18" 11367 11368bug fix: Dsn6Reader.java misnamed, causing EDS map file load error 11369 in JavaScript only. (I did not know that was even possible!) 11370bug fix: java.io.dataStreamReader.readShort() does not take into 11371 account JavaScript equivalence of short and int, causing 11372 "-1" to be read as 65535. 11373 11374JmolVersion="14.1.12_2014.03.17" 11375 11376bug fix: minimum modulationScale set to 1; should be 0.1. 11377 11378new feature: filter "ATOM" opposite of filter "HETATM" 11379 11380bug fix: translucent echo backgrounds broken 11381bug fix: filter "HETATM" does not work 11382bug fix: write XYZ broken by changes to the way arrays 11383 are shown with the PRINT command 11384bug fix: x = adfjladj(3) crashes Jmol 11385bug fix: x[0] = "tst" "here" "now" should cause script exception 11386 11387JmolVersion="14.1.12_2014.03.16" 11388 11389code: isosurface MOLECULAR speed-up by a factor of 10. 11390 -- better handling of constants during iteration 11391 -- better identification of unnecessary edges and faces 11392 11393bug fix: isosurface MOLECULAR delivers wrong surface 11394 11395JmolVersion="14.1.12_2014.03.13" 11396 11397bug fix: spacefill ionic not working 11398bug fix: set cameraDepth disabled 11399 11400JmolVersion="14.1.12_2014.03.10" 11401 11402bug fix: some translations not being carried out. 11403 11404new feature: load ASYNC .... 11405new feature: script ASYNC .... 11406 -- load and script ASYNC start a new asynchronous thread to load the file 11407 and then continue after that. 11408 -- JSmol/HTML5 only; others ignore 11409 11410bug fix: msCIF reader not accepting normalized commensurate Fourier vectors 11411 11412bug fix: JSmol/HTML MSIE local installation AJAX working again (still no binary files) 11413 11414new feature: Mol3D reader 11415 11416new feature: show CHEMICAL STDINCHIKEY 11417new feature: show CHEMICAL STDINCHI 11418 11419new feature: load ":inchikey:xxxxx" 11420 -- requires STANDARD InChIKey (as from {*}.find("chemical", "stdinchikey") 11421 11422new feature: x = {*}.find("chemical",type) 11423 -- type is "smiles", "inchi", "stdinchi", "inchikey", "stdinchikey" 11424 -- uses NCI/CADD CIR 11425 -- Note that unlike SHOW CHEMICAL, "InChIKey=" and "InChI=" are dropped 11426 -- Note that unlike SHOW CHEMICAL, trailing new line char is removed 11427 11428new feature: x = smilesString.find("chemical",type) 11429 -- type is "smiles", "inchi", "stdinchi", "inchikey", "stdinchikey" 11430 -- allows going directly from SMILES to other quantities 11431 -- uses NCI/CADD CIR 11432 -- Note that unlike SHOW CHEMICAL, "InChIKey=" and "InChI=" are dropped 11433 -- Note that unlike SHOW CHEMICAL, trailing new line char is removed 11434 11435JmolVersion="14.1.11" 11436JmolVersion="14.1.11_2014.03.08" 11437 11438FEATURE CHANGE: associative array .count, .length, .lines removed 11439 -- specifically for associative arrays, nothing more 11440 -- these were unnecessary equivalents of .size 11441 -- change will not be incorporated into Jmol 14.0 11442 11443new feature: JSpecView readers for ACD/Labs annotated MS, IR, Raman, and UV/VIS 11444 -- displays fragments for MS (highlights atoms) 11445 -- highlights atoms involved in an IR/Raman stretch 11446 -- UV/VIS and Raman untested 11447 11448new feature: JSpecView and Jmol read ACD/Labs assigned spectra block JDX files. 11449 -- 2D MOL files with missing hydrogens on hetero atoms. 11450 -- fully synced 11451 -- drag-drop enabled 11452 11453new feature: associative array standard "dot" notation 11454 -- a.test = 33 11455 -- print a.test 11456 -- caveat: cannot do this with a.keys, a.size, or a.type 11457 -- not implemented in Jmol 14.0 because of the feature change 11458 11459new feature: associative array alternative ".." syntax 11460 -- same as JavaScript and Java, but ".." instead of "." 11461 -- for example: 11462 a["test"] == a..test 11463 11464new feature: .covalentRadius added as more appropriate alias for .covalent 11465 11466new feature: .bondingRadius added as more appropriate alias for .ionic 11467 11468new feature: set bondingVersion 11469 -- 0: Jmol default, from OpenBabel 1.100.1 11470 -- uses a mix of covalent and ionic radii for autobonding 11471 11472 -- 1: Pyykko and Atsumi, 2009 11473 -- changes the distance criteria for autobonding to be specifically covalent 11474 11475 -- saved in state only for file loading; should be unchanged after state loading. 11476 11477new feature: color(color1, color2, n, asHSL) 11478 -- returns a color scheme as a string 11479 -- colors can be of any nature -- string or point, name or rgb 11480 -- n colors; simple interpolation from color1 to color2 11481 -- asHSL must be TRUE or FALSE; 11482 -- when TRUE, uses hue/saturation/luminance instead of rgb gradient 11483 11484 -- example: 11485 11486 $ print color("white", "red", 5, false) 11487 11488 [xffffff][xffbfbf][xff7f7f][xff3f3f][xff0000] 11489 11490 $ print color("red", "blue", 5, true) 11491 11492 [xff0000][xffff00][x00ff00][x00ffff][x0000ff] 11493 11494 $ set propertyColorScheme color("yellow","black",50,true) 11495 $ color property temperature 11496 11497 11498new feature: added simpler associative array notation: [key:value,...] 11499 -- no quotes required 11500 -- supplements {"key":value,...} where quotes are still required 11501 due to conflict with atom set chain descriptors such as {a:b}. 11502 11503new feature: catchable THROW 11504 11505 -- as in Java or JavaScript, allows a way of jumping 11506 out of a process. 11507 11508 -- outside of try/catch gives the expected error report: 11509 11510 $ print "testing" 11511 $ throw "testing here" 11512 $ print "we will never see this" 11513 11514 testing 11515 script ERROR: testing here 11516 ---- 11517 throw >> "testing here" << 11518 11519 -- passes a string as the variable thrown_value 11520 11521 $ print thrown_value 11522 11523 testing here 11524 11525 -- can be trapped with try/catch: 11526 11527 try{ 11528 print "testing" 11529 throw "testing here" 11530 print "continuing" 11531 } catch(e) { 11532 print "thrown_value=" + thrown_value; 11533 } 11534 11535 results in: 11536 11537 testing 11538 thrown_value=testing here 11539 11540new feature: asynchronous resumable processes 11541 11542 -- THROW CONTEXT contextName 11543 11544 -- throws a catchable error, but in the process of doing so, 11545 creates a script context that allows RESUMING 11546 at the point of the throw, unlike anything in JavaScript 11547 or Java (or perhaps like a debug mode). 11548 11549 -- if within a try/catch phrase, is handled by catch. 11550 in which case the error message is simply the context name. 11551 11552 -- if not within a try/catch phrase just reports 11553 11554 to resume, enter: &contextName 11555 11556 -- essentially provides a callback into the running 11557 script, so you could, for example, put a running script 11558 on hold while you load a file, check variables, etc., 11559 then continue. 11560 11561 -- can be resumed using RESUME CONTEXT or just & followed 11562 by the name of the context: 11563 11564 &test 11565 11566 resume context &test 11567 11568 -- replaces PAUSE/RESUME, now deprecated. 11569 11570 -- The current context returns to the highest level, however 11571 the variables in the context that was thrown are 11572 accessible as though the context variable was an 11573 associative array. So, for example, if we have 11574 11575 function f(a, b, c) { 11576 var x = 5 11577 throw context testing 11578 print "x=" + x 11579 } 11580 11581 f(1,2,3) 11582 print "done" 11583 11584 The context will be saved as the variable "testing", and 11585 we can then test all the variables in that saved context, 11586 (and change them before continuing): 11587 11588 print testing["x"] 11589 11590 5 11591 11592 testing["x"]++ 11593 11594 print testing 11595 11596 _path : [script] >> function f 11597 _retval : 0 11598 11599 a : 2 11600 b : 2 11601 c : 3 11602 x : 6 11603 11604 -- contexts can be restored using 11605 11606 &contextName 11607 11608 In the above case, we would get the report: 11609 11610 x=6 11611 done 11612 11613new feature: SAVE CONTEXT contextName 11614 -- similar to THROW, but does not stop processing. 11615 So in the above example, if we change THROW to SAVE, 11616 the processing continues, but after it has completed, 11617 we can change context variables and run it again. 11618 11619new feature: show SAVED 11620 -- same as show SAVE 11621 11622new feature: delete $SAVED savedName 11623 11624 delete $SAVED Context_xxxx 11625 11626 -- $ is important; case is not. 11627 -- allows selective deletion of saved objects 11628 -- Contexts always start with "Context_" but the subname 11629 "xxxx" in this case will work as well. 11630 11631new feature: RESUME with arguments is synonymous with RESTORE 11632 11633new feature: Better idea for THROW: 11634 throw "this is an error" 11635 throw x 11636 -- that is, throw is like PRINT, not LABEL 11637 11638bug fix: applet language localization skipping translations containing \" 11639bug fix: application language localization does not include defs defined for JmolApplet 11640bug fix: JSpecView/JSME connection with simulated and ACD/Labs annotated spectra 11641bug fix: JSpecView loading simulation now compatible with synced applets 11642bug fix: drag/drop not working for JSV applet 11643bug fix: solid-state NMR calc (Magres) should not apply "nearest-atom-only" 11644 algorithm for measure ALL in dipolar coupling measurements 11645bug fix: state contains: zap;load /*data*/ data "append inline" 11646bug fix: zoomto without time goes over 2 seconds, not 1 second 11647bug fix: print "id" + "x" fails (back to 13.2 at least) 11648bug fix: animFrameCallback not reporting for each morph 11649bug fix: inline-if fails if not at end of statement 11650 -- Bug goes back to at least 11.8 11651bug fix: Jmol math fix for new . notation. 11652 -- needs testing 11653 -- examples: 11654 11655 -- note that .. notation works with numbers 11656 and in all expressions 11657 11658 b = [1 2 3 [ 1 2 [1 2 [1 [testing:"here"] 3]]]] 11659 print b..4..3..1 11660 b..2 = 34 11661 11662 b..2..1 = 33 11663 print b..2..1 11664 11665 -- alternative single dot notation also on both sides 11666 -- associative arrays only 11667 -- no numbers here 11668 11669 b = [testing:"here"] 11670 b.testing= 33 11671 print b.testing 11672 11673 -- note that sequential brackets for arrays 11674 work only on the left side of an assignment 11675 11676 b = [ [2] 10 11 ] 11677 b[1][2]= 33 11678 #NOT print b[1][2] (that's a range) 11679 11680 b = [1 2 3 [ 1 2 [1 2 [1 [testing:"here"] 3]]]] 11681 b[4][3][3][2].more = "yes" 11682 #NOT print b[4][3] (that's a range) 11683 11684 -- extends to matrices 11685 11686 b = quaternion()%"matrix" 11687 b[1] = [1 2 3] 11688 b[-1] = [1 2 3] 11689 b[2][3] = 2 11690 11691 -- extends to string 11692 11693 b = "testing" 11694 b[1] = "T" 11695 b[1][3] = "T" 11696 b["t"] = "T" 11697 11698 -- extends to points 11699 11700 p = {3 3 3} 11701 p.x = 10 11702 p.y = 5 11703 p.z = 3 11704 11705 -- extends to bitsets 11706 -- single dots only, not a["color"] or a..color 11707 11708 a = {*} 11709 a.color = "red" 11710 a.property_x = {*}.temperature.all 11711 11712 11713bug fix: state reading broken in most recent version at chemapps 11714bug fix: ++/-- compatibility with no-comma arrays 11715bug fix: print ++b["test"] fails 11716bug fix: ++b["test"] fails 11717bug fix: a[6][8] = "q" not working correctly when a is a string 11718bug fix: {*}.covalent is misleading in that it is a mix of covalent and ionic bonding 11719 distances. As such, I have replaced it with data at the Blue Obelisk Data Repository 11720 which are from 11721 11722 Pyykk�, P. and Atsumi, M. (2009), 11723 Molecular Single-Bond Covalent Radii for Elements 1\u2013118. 11724 Chem. Eur. J., 15: 186\u2013197. doi: 10.1002/chem.200800987 11725 11726bug fix: try { ... throw ...} catch {....} continues through catch when resumed. 11727bug fix: anonymous context { ..... } not closed 11728bug fix: JSON of 4x4 matrix (M4) fails 11729bug fix: modelkitmode broken for Java in 14.1.10 11730 11731code: unused obrador package removed from application 11732code: JavaScript org.jmol.modelset->JM, org.jmol.modelsetbio->JMB 11733code: org.jmol.util.Quaternion moved to javajs.util.Quat 11734code: Refactoring of script.ScriptEvaluator to make it more manageable: 11735 11736 * ScriptEval -- entry point and script command code 11737 * 11738 * extends ScriptExpr -- expression parsing 11739 * 11740 * extends ScriptParam -- parameter parsing 11741 * 11742 * extends ScriptError -- error handling 11743 * 11744 * scriptext.CmdExt -- optionally loaded, less-used commands 11745 * scriptext.MathExt -- optionally loaded, less-used functions 11746 * scriptext.SmilesExt -- optionally loaded methods for cmds and math 11747 11748code: faster CONNECT [{...}] process for specified bonds 11749 11750JmolVersion="14.1.10" 11751JmolVersion="14.1.10_2014.02.20" 11752 11753new feature: THROW command 11754 -- accepts unquoted string or @x simple variable substitution 11755 -- examples: 11756 throw this is an error 11757 or 11758 x = "this is an error" 11759 throw @x 11760 resulting in: 11761 this is an error 11762 ----line 3 command 3 of try: 11763 throw >> "this is an error" << 11764 ----line 10 command 1 of t.spt: 11765 end 11766 ---- 11767 script "t.spt" 11768 11769 11770JmolVersion="14.1.10_2014.02.19" 11771 11772bug fix: color atoms formalcharge not saved in state 11773bug fix: averageAtomPosition never updated. 11774bug fix: load of model with one atom does not set center to that atom 11775bug fix: ==/!= comparison not appropriate for arrays or strings 11776 -- string/string comparison should be case sensitive, but wasn't 11777 -- (you can use x %9999 == y %9999 to force no-case comparison) 11778 -- array/array comparison should be element by element and exact 11779 -- assoc.array/assoc.array should be key/value by key/value and exact 11780 -- int/decimal comparison should be simply numerical, always 11781 -- decimal/decimal comparison should be able to be done without the < 1e-6 cutoff 11782 -- you can now use [x] == [y] for exact numerical comparison 11783 -- string/int and string/decimal comparison should also only be outside of arrays 11784 -- all approximations for type1/type2 should be only outside the context of arrays 11785 11786bug fix: array/string assignment broken in 14.1.9 11787 -- a[2] = ... 11788 -- a["testing"] = ... 11789 11790bug fix; HTML5 popup frank mini-menu not implemented 11791bug fix: HTML5 popup menu checkboxes not turning off 11792bug fix: zap <model Number> or zap {atom expression} broken 11793 -- does not affect ZAP command without parameters 11794 11795JmolVersion="14.1.9" 11796JmolVersion="14.1.9_2014.02.18" 11797 11798bug fix: recently released 14.0.8 introduced a math bug that caused 11799 y = "test" + x.f() to be evaluated as ("test" + x).f() 11800bug fix: long-time multiple unary minus bug (at least 6 years!) 11801 that print 3 +(- -3) evaluates to 0, not 6. 11802 11803new feature: WRITE "filename" AS type 11804 -- allows setting type at end of WRITE command using AS 11805 -- for example: 11806 11807 write "t.png" as PNGJ 11808 11809 -- meant only for very simple production; no additional parameters. 11810 -- all parameterized cases must use standard notation 11811 write PNGJ 300 300 "t.png" 11812 11813 11814JmolVersion="14.1.8_2014.02.17" 11815 11816bug fix: JSpecView issues with navigating through spectra 11817bug fix: PyMOL reader multiple bond view 11818bug fix: popup menu fixes 11819bug fix: bond/draw/isosurface picking broken 11820bug fix: [1 -5 6 -2] gives [1 (-5+6-2)] instead of [1 -5 6 -2] 11821 11822bug fix: set defaultLoadScript "{0 0 0}" actually sets that to {1 1 1} 11823 -- goes way way back to early Jmol math where there were no point-type variables 11824bug fix: PyMOL reader update for Version 1700 lacking setting 83. 11825bug fix: -m option not working with Jmol.jar 11826 11827bug fix: PNGJ files within ZIP collections not being read. 11828 -- full PNGJ models can be extracted from MS Word .docx files. 11829 -- for example: 11830 show file "t.docx" 11831 [Content_Types].xml 11832 _rels/.rels 11833 word/_rels/document.xml.rels 11834 word/document.xml 11835 word/media/image1.png 11836 word/theme/theme1.xml 11837 word/settings.xml 11838 word/webSettings.xml 11839 docProps/core.xml 11840 word/styles.xml 11841 word/fontTable.xml 11842 docProps/app.xml 11843 load t.docx|word/media/image1.png 11844 11845new feature: JSmol Info.z, Info.zIndexBase 11846bug fix: tensor("efg", "value") should return sparce array, not dense for missing tensors 11847bug fix: JSmol now allows writing POVRAY, MAYA, IDTF, VRML, etc. 11848 both from Java and from HTML5 11849code: reworking of export classes 11850bug fix: label @{math expression...} not working 11851bug fix: interpretation of x and @x in select commands and {...} phrases 11852 -- Variable substitution has been unintuitive and inconsistent. 11853 For instance: 11854 11855 x = "C or T" 11856 11857 select @x -- works fine 11858 print {@x} -- fails 11859 11860 The problem is the use of @ to reference the variable NAMED BY another 11861 variable within a math expression (print context) but not a select context. 11862 For instance: 11863 11864 y = 3 11865 x = "y" 11866 print x --> "y" 11867 print @x --> 3 11868 11869 Such referencing is important for math expressions, but the 11870 extension of this to atom expressions is not necessary and 11871 not generally useful. 11872 -- The current situation is as follows: 11873 11874 x = "A or T" 11875 select @x --> all A and T groups 11876 print {@x} --> nothing (because @x is "the contents of the variable 'A or T'") 11877 11878 -- This fix simplifies the situation by not allowing variable-variable 11879 referencing within atom expressions bounded by braces, just like 11880 within implicit atom expression commands (select, display, hide, delete, etc.). 11881 -- The result is much more consistent. The following do exactly what 11882 you think they would do: 11883 11884 x = "A or T" 11885 select @x 11886 print {@x} 11887 11888 -- The current way of doing this, by defining a temporary atom 11889 expression using the DEFINE (or @) command still works: 11890 11891 x = "A or T" 11892 @y @x 11893 select y same as select @x 11894 11895 -- Note that the difference between "select x" and "select @x" 11896 may be significant: 11897 11898 ala = "cys" 11899 11900 select ala --> selects all alanines 11901 select @ala --> selects all cysteines 11902 11903 11904 11905code: way more efficient for loop -- loop overhead decreased by > 80% 11906bug fix: for(i in ...) does not exit when i is assigned a value, as per documentation 11907bug fix: for(x in ...) command broken and also quite inefficient. 11908 11909 11910JmolVersion="14.1.8_dev_2014.02.06" 11911 11912new feature: set cartoonRibose 11913 -- draws in ribose rings, with facets showing puckering 11914 -- connects via C4'-C5'-O5'-P explicitly 11915 -- shows C3'-O3' for reference. 11916 -- disables cartoonBaseEdges (Leontis-Westhof Edges) 11917 -- disabled by SET cartoonBaseEdges ON 11918 -- suggested by Rick Spinney, Ohio State 11919 11920new feature: anim frame [a,b,c,d] works with negative numbers to indicate ranges: 11921 -- anim frame [1, -5, 10, -6] --> [1,2,3,4,5,10,9,8,7,6] 11922 -- read as "1 through 5 and then 10 through 6" 11923 11924new feature: Tinker file reader (and FoldingXYZ reader upgrade) 11925 -- see http://dasher.wustl.edu/tinker/ 11926 -- Can use Tinker:: but this is only required if first line is JUST an atomCount 11927 -- accommodates older Tinker format with n-1 atoms for atomCount 11928 -- allows for trajectories and desired model number 11929 11930new feature: (actually 13.1 but undocumented) animation frame [ 51 50 49 48 47 46 45 (etc) 27 1 2 3 4 5 6 7 (etc)....] 11931 11932new feature: x = compare({atomset1}, {atomset2}, "MAP") 11933new feature: x = compare({atomset1}, {atomset2}, "MAP", "all") 11934new feature: x = compare({atomset1}, {atomset2}, "MAP", "best") 11935new feature: x = compare({atomset1}, {atomset2}, "MAP", "H") 11936new feature: x = compare({atomset1}, {atomset2}, "MAP", "allH") 11937new feature: x = compare({atomset1}, {atomset2}, "MAP", "bestH") 11938 -- generates one or more correlation lists based on non-aromatic SMILES 11939 -- optionally includes H atoms 11940 -- optionally generates all possible atom mappings 11941 -- returns int[][] = [ [a1 b1],[a2 b2],[a3 b3],... ] 11942 where an and bn are integer atom indices 11943 or list<int[][]> when "all" option is chosen. 11944 -- the following will generate one atom correlation 11945 map for two structures including hydrogen atoms: 11946 load files "a.mol" "b.mol" 11947 x = compare({1.1} {2.1} "MAP" "H") 11948 (useful for 2D/3D model atom matching) 11949 -- the following compares the model of caffeine from NCI to that from PubChem: 11950 load $caffeine;load append :caffeine;frame * 11951 select 2.1; label %[atomIndex] 11952 compare {1.1} {2.1} SMILES rotate translate 11953 x = compare({1.1}, {2.1}, "MAP" "bestH") 11954 for (a in x) {a1 = a[1];a2=a[2];select atomindex=a1;label @a2} 11955 11956new feature: compare {model1} {model2} SMILES 11957 -- no need to give SMILES; Jmol can generate it from {model1} 11958 11959new feature: x = {*}.find("SMILES", "H") 11960 -- generates SMILES with explicit H atoms 11961 11962bug fix: substructure() function using SMILES instead of SMARTS, so only full structures; 11963bug fix: better error trapping and messages in SMILES-related methods 11964bug fix: make webexport discovery of path to Jmol.jar and jsmol.zip more robust. 11965bug fix: getProperty extractModel not honoring subset 11966bug fix: set pdbGetHeader TRUE does not capture REMARK3 REMARK290 REMARK350 11967bug fix: getProperty("JSON",....) should wrap value in {value:...} 11968bug fix: MO persistent translucency broken in 11.x 11969bug fix: show MENU write MENU load MENU all broken in 12.2 11970bug fix: {*}[n] should be empty if nAtoms <=n 11971bug fix: abinit reader was nonfunctional 11972bug fix: assign atom into into PDB file loses atom names 11973bug fix: y = ([3])[1][1] should be [3] not 3 11974bug fix: break n nonfunctional 11975bug fix: format() and label() functions limited to 4 arguments; should be unlimited 11976bug fix: errors in paths to js code in web export templates. 11977 11978code: JSmol: applying atom mapping between mol2D and mol3D for viewSets 11979code: refactoring to enable SWING in JavaScript for all menus 11980code: methods from jcampdxReader extracted to org.jmol.jsv.JDXMOLParser 11981code: reader overhaul for setting atom coordinates in a consistent fashion 11982 11983 11984JmolVersion="14.1.7" 11985 11986JmolVersion="14.1.7_dev_2014.01.20" 11987 11988 bug fix: 14.0.6 fatally bugged -- unitcell and echo rendering, getProperty 11989 11990JmolVersion="14.1.6" 11991 11992bug fix: translucent geosurface was turned off; 11993 11994JmolVersion="14.1.6_dev_2014.01.19" 11995 11996bug fix: Jmol2.js should have commented lines in Jmol.Info but does not 11997bug fix: JSpecView cannot close "Options...Show Header" panel in HTML5 11998bug fix: select visible not right after this sequence: 11999 12000 load $C\C=C\CC 12001 select _C 12002 wireframe off 12003 spacefill off 12004 display !_H 12005 select visible // 5 (but nothing is showing) 12006 12007bug fix: for (a in {displayed}) { a.property_x = 3 } construction fails 12008bug fix: FireFox browser in mode to open files in new tabs in the background 12009 fails to load second applet of a page unless Jmol.__execDelay is more than 55 ms 12010 and the user specifically right-clicks a link to open a page in a new tab. 12011bug fix: write ....?POST? fails 12012bug fix: getproperty broken in 14.1.6_dev_2014.01.15 12013bug fix: GETPROPERTY command and function can return SV.toString() rather than property escaped value 12014bug fix: getProperty for certain arrays returns string "[object Array]" 12015bug fix: Jmol2.js not working when there is no jmolInitialize() 12016bug fix: _DirectDatabaseCalls not including NMR prediction site 12017bug fix: reading of *co*mmensurately modulated structures (e.g. Lilianite) working 12018bug fix: wrong name for coverimage in WebExport. 12019 12020code: refactored matrix classes javajs.util.M34/M3/M4 12021code: JSpecView upgrade includes 12022 -- operational applet from jnlp 12023 -- append options from menus 12024 -- file helper for local files using load ? 12025 -- file helper for URL using load http://? 12026 -- file helper for simulation using load $? 12027 code: reader refactoring isolates symmetry aspects 12028 12029update: images and instructions for WebExport 12030 12031JmolVersion="14.1.5" 12032JmolVersion="14.1.5_dev_2014.01.09" 12033 12034bug fix: LCAOCartoon translucency broken 12035bug fix: translucent backbone broken 12036bug fix: pqr,p2n readers broken 12037bug fix: isosurface map property xxx can fail if surface is a 12038 fragment that (somehow) has a point not associated with 12039 an underlying atom. 12040 12041 12042 12043JmolVersion="14.1.4" 12044JmolVersion="14.1.4_dev_2014.01.05" 12045 12046bug fix: PDB byChain, bySymop not supported. 12047 12048//TODO: Add BSPF for symmetry distance checking in AtomSetCollection to speed special-position checking 12049 12050new feature: {xxx}.distance.all({yyy}) returns float[][] of values 12051 12052new feature: expanded unit cell ijk notation: 12053 - 111 - 1000 --> center 5,5,5; range 0 to 9 or -5 to +4 12054 - 1000000 - 1999999 --> center 50,50,50; range 0 to 99 or -50 to +49 12055 - 1000000000 - 1999999999 --> center 500, 500, 500; range 0 to 999 or -500 to +499 12056 12057JmolVersion="14.1.3" 12058JmolVersion="14.1.3_dev_2013.12.29" 12059 12060new feature: filter "MODCELL=x" 12061 -- incommensurate composite readers Jana2006 and CIF 12062 -- sets base cell to specified subsystem 12063 12064new feature: MSCIF reader now allowing up to d=10; was d=6 12065 12066new feature: escape pressed cancels pending measurement 12067 12068new feature: {xxx}.getProperty("yyy") 12069 -- only for FIRST atom 12070 -- returns getProperty("atomInfo.yyy", {xxx})[1] (not xxx.yyy.all) 12071 12072new feature: unitcell {atomset} 12073 -- unit cell based on first atom of atom set. 12074 -- canceled by any unitcell {none} 12075 or other unitcell command other than on/off and width 12076 12077new feature: altloc set for msCIF _atom_site_subsystem_code 12078 -- sets % and also configuration 12079 -- prevents covalent bonding between subsystems 12080 12081new feature: select ON ; select OFF 12082 -- same as selectionHalos ON/OFF 12083 -- deprecates selectionHalos command 12084 12085new feature: atomSet1.distance.min(atomSet2, TRUE) 12086new feature: atomSet1.distance.min(point, TRUE) 12087new feature: atomSet1.distance.max(atomSet2, TRUE) 12088new feature: atomSet1.distance.max(point, TRUE) 12089 -- returns single closest/furthest atom in atomSet1 from point or atomSet2 12090 12091bug fix: incommensurate composite structures not packed into unit cell properly 12092bug fix: incommensurate composite structures - wrong unit cell for d > 1 12093bug fix: if load "" fails, last file name is lost 12094bug fix: print a (operator) b not processing string parameter B consistently across operators 12095bug fix: composite structures reading for JANA2006 M50/M40 files 12096bug fix: capture time slightly off; needs 50 ms addition. This may vary with rendering speeds. 12097bug fix: CIF reader goes into molecular mode even if geom_bond block is all "? ? ? ? ?" 12098bug fix: n-d incommensurate modulated composite structures (preliminary testing) 12099bug fix: getProperty atomInfo broken for modulated atoms 12100bug fix: x.distance.min(y) broken 12101 12102code: generic javajs.util.Matrix class added based on Jama code for inversion using L/U decomposition 12103 12104JmolVersion="14.1.2" 12105JmolVersion="14.1.2_2013.12.13" 12106 12107new feature: JavaScript: JSmol api Jmol.evaluateVar(applet, expression) 12108 -- better than Jmol.evaluate because result is a JavaScript variable, not a string. 12109 -- DEPRECATING JSmol api Jmol.evaluate(applet, expression) 12110 12111new feature: getProperty("JSON", ....) 12112 -- returns JSON code for property 12113 -- allows JavaScript: x = Jmol.getPropertyAsArray("variableInfo","some expression") 12114 12115new feature: getProperty variableInfo <expression> 12116 -- allows retrieval of variables in Java or JSON format 12117 -- evaluates expression 12118 -- defaults to "all" 12119 12120new feature: modulation adjustable by q and t, up to d=3 12121 // modulation on/off (all atoms) 12122 // moduation {atom set} on/off 12123 // modulation int q-offset 12124 // modulation x.x t-offset 12125 // modulation {t1 t2 t3} 12126 // modulation {q1 q2 q3} TRUE 12127 12128new feature: pickedList -- ordered array of recently picked atoms 12129 -- can be used the same as the PICKED variable, 12130 but that is ordered sequentially, not temporally 12131 -- twice clicking off structure clears the list 12132 -- @{pickedList}[0] last-picked atom 12133 -- @{pickedList}[-1] next-to-last-picked atom 12134 -- @{pickedList}[-1][0] last two picked atoms 12135 12136new feature: array.pop(), array.push() 12137 -- similar to JavaScript 12138 -- for example: 12139 a=[];a.push("testing");print a.pop() 12140 12141 // create a distance t-plot 12142 12143 at = [] // t points 12144 am = [] // distance measurements 12145 12146 var p1 = a.modulation(1e10)[1] 12147 var p2 = a2.modulation(1e10)[1] 12148 for (var i = 0; i <= 50; i++) { 12149 var t = i / 50.0; 12150 at.push(t); 12151 var b1 = a.modulation(t)[1]; 12152 var b2 = b.modulation(t)[1]; 12153 var m = distance((p1 + b1).xyz, (p2 + b2).xyz); 12154 am.push(m); 12155 } 12156 d = at.add("\t", am) 12157 12158new feature: modulation scale x.x 12159new feature: caption "xxxxx" x.x -- number of seconds to run 12160new feature: modulation 0.2 // sets t-value 12161 12162new feature: select ON/OFF atom-set 12163 -- turns selection halos on or off as well as doing the selection 12164 -- convenience only 12165 -- for example: 12166 12167 select on _O2 12168 select off * 12169 12170new feature: pt1.mul3(pt2) 12171 -- returns {pt1.x*pt2.x, pt1.y*pt2.y, pt1.z*pt2.z} 12172 -- if both are not points, reverts to simple multiplication 12173 12174new freature: array.mul3(pt2) 12175 -- applies mul3 to all elements of array 12176 12177new feature: {atomset}.modulation(type, t) 12178 -- delivers P3 (displacement modulation) 12179 -- implemented only for type="D" (optional) 12180 -- optional t is 0 by default 12181 -- if t is missing, the unmodulated displacement is returned 12182 12183bug fix: modulation not distinguishing between q and t; 12184bug fix: modulated measurements not working 12185 12186bug fix: not skipping set defaultLattice "{NaN NaN NaN}" 12187bug fix: isosurface map atomic orbital fails 12188 12189bug fix: vibrational display of modulation with distances doesn't update 12190bug fix: vibration off causes unnecessary warning in console 12191bug fix: draw symop broken 12192 12193bug fix: array.mul(matrix3f) crashes Jmol 12194 12195bug fix: select symop=1555 broken 12196bug fix: set picking dragSelected not working 12197 12198code: refactored CifReader, separating out MMCifReader and MSCifReader 12199 12200code: minor renaming/refactoring of methods in SV 12201 12202code: adds javajs.api.JSONEncodable interface 12203 -- super-simple implementation in org.jmol.script.SV 12204 -- allows implementations of javajs to deliver custom JSON results 12205 12206JmolVersion="14.1.1_2013.12.04" 12207JmolVersion="13.3.9_dev_2013.12.04" 12208 12209 12210new feature: Jmol._j2sLoadMonitorOpacity (default 55) 12211 12212new feature: load() function, as in print load("xxx"), limited local file reading in applet: 12213 -- no root-directory files 12214 -- no files without extension 12215 -- no files with any "/." in path 12216 12217new feature: JAR files securely signed 12218 12219new feature: applet JAR files include JNLPs (Java Network Launch Protocols) for local file loading 12220 12221new feature: JSmol URL options _USE= _JAR= _J2S= overrides for Info data 12222 12223new feature: (was present but undocumented) print quaternion([array of quaternions]) 12224 -- returns spherical mean a la Buss and Fillmore (http://www.math.ucsd.edu/~sbuss/ResearchWeb/spheremean/) 12225 12226new feature: print quaternion([array of quaternions], true) 12227 -- returns standard deviation for spherical mean a la Buss and Fillmore (http://www.math.ucsd.edu/~sbuss/ResearchWeb/spheremean/) 12228 -- units are angular degrees 12229 12230new feature: named quaternion modulus values 12231 -- print quaternion(1,0,0,0)%"matrix" 12232 -- options include w x y z normal eulerzxz eulerzyz vector theta axisx axisy axisz axisangle matrix 12233 12234new feature: set celShadingPower 12235 -- sets strength of cel shading 12236 -- integer values 12237 -- default 10 is a thick line 12238 -- 5 is a fine line 12239 -- 0 turns cel shading off 12240 -- negative value removes interior shading -- outline only 12241 -- operates on pixel based on normal to light source (power > 0) or user (power < 0) 12242 -- sets color to background contrast (black or white) when 12243 normal_z < 1 - 2^-(|celShadingPower|/10) 12244 12245new feature: mmCIF reading reports _citation.title in Jmol scripting console 12246 12247new feature: minimize SELECT {atomset} ONLY 12248 -- ONLY option excludes all other atoms 12249 12250new feature: minimize {atomset} 12251 -- implicit SELECT and ONLY 12252 12253new feature: "extensions" directories in JSmol for contributed JS and SPT scripts 12254 -- jsmol/js/ext 12255 -- jsmol/spt/ext 12256 12257new feature: load ... filter "ADDHYDROGENS" 12258 -- local set pdbAddHydrogens just for one load command 12259 12260new feature: compare {1.1} {2.1} BONDS SMILES 12261 12262new feature: list = compare({atomset1} {atomset2} "SMILES" "BONDS") 12263new feature: list = compare({atomset1} {atomset2} SmartsString "BONDS") 12264 12265new feature: write JSON xxx.json 12266 12267new feature: [#210] JSON {"mol":...} reader 12268 -- example (penicillin; no actual line breaks) 12269 {"mol":{ 12270 "_is2D":false, 12271 "_scale":{"x":1,"y":1,"z":1}, 12272 "a":[{"x":3.9236999,"y":-0.9222,"z":0.1835},{"x":3.2479,"y":-3.2106004,"z":0.3821},{"x":5.1731,"y":-1.3284999,"z":-0.24640003},{"x":4.4973,"y":-3.6169,"z":-0.0478},{"x":5.4598002,"y":-2.6759,"z":-0.3623},{"x":1.599,"y":-1.4203,"z":0.9663},{"x":-4.2137,"y":0.8188001,"z":2.5929},{"x":-5.7525997,"y":0.1604,"z":0.70350003},{"l":"H","x":-0.92130005,"y":-0.6858,"z":0.8503},{"x":2.961,"y":-1.8632,"z":0.49760002},{"l":"O","x":-4.989,"y":2.5026002,"z":-1.2333001},{"l":"O","x":-1.2756001,"y":1.6640999,"z":-1.9360001},{"l":"O","x":1.104,"y":-1.4738001,"z":-1.3405999},{"l":"O","x":-4.604,"y":3.4702,"z":0.7158},{"x":-4.4305005,"y":2.47,"z":-0.1623},{"x":0.68810004,"y":-1.2541,"z":-0.2227},{"x":-3.5391,"y":1.3063,"z":0.1875},{"x":-1.4742,"y":-0.7,"z":-1.1997},{"x":-1.8847001,"y":0.7218999,"z":-1.4753001},{"l":"H","x":-5.185,"y":4.1949,"z":0.44660002},{"l":"N","x":-0.5887,"y":-0.86149997,"z":-0.043799996},{"x":-2.9578,"y":-0.84800005,"z":-0.8823999},{"x":-4.298,"y":0.3443,"z":1.1408},{"l":"S","x":-3.3189998,"y":-1.1949,"z":0.8809},{"l":"N","x":-3.159,"y":0.59889996,"z":-1.0386},{"l":"H","x":-2.6423,"y":1.6747,"z":0.6855},{"l":"H","x":-3.5207,"y":-1.4693998,"z":-1.5789001},{"l":"H","x":-4.6569,"y":1.8111,"z":2.6771998},{"l":"H","x":-4.7551003,"y":0.123500004,"z":3.2344003},{"l":"H","x":-3.1692,"y":0.86,"z":2.9017},{"l":"H","x":-5.7794,"y":-0.2569,"z":-0.3031},{"l":"H","x":-6.2558002,"y":-0.5187,"z":1.3918},{"l":"H","x":-6.2588997,"y":1.1256,"z":0.71029997},{"l":"H","x":-1.1443,"y":-1.2523,"z":-2.0796},{"l":"H","x":1.1846,"y":-2.1707997,"z":1.6393999},{"l":"H","x":1.6871,"y":-0.46960002,"z":1.4921},{"l":"H","x":3.7012,"y":0.1303,"z":0.2784},{"l":"H","x":2.4957001,"y":-3.9457002,"z":0.62750006},{"l":"H","x":5.9251003,"y":-0.5933,"z":-0.4921},{"l":"H","x":4.7215,"y":-4.6695,"z":-0.13759999},{"l":"H","x":6.4357004,"y":-2.9933,"z":-0.6989}], 12273 "b":[{"b":10,"e":14,"o":2},{"b":13,"e":14},{"b":14,"e":16},{"b":16,"e":24},{"b":16,"e":22},{"b":21,"e":24},{"b":18,"e":24},{"b":6,"e":22},{"b":7,"e":22},{"b":22,"e":23},{"b":21,"e":23},{"b":17,"e":21},{"b":17,"e":18},{"b":11,"e":18,"o":2},{"b":17,"e":20},{"b":15,"e":20},{"b":5,"e":15},{"b":12,"e":15,"o":2},{"b":5,"e":9},{"b":0,"e":9,"o":2},{"b":1,"e":9},{"b":0,"e":2},{"b":1,"e":3,"o":2},{"b":2,"e":4,"o":2},{"b":3,"e":4},{"b":13,"e":19},{"b":16,"e":25},{"b":21,"e":26},{"b":6,"e":27},{"b":6,"e":28},{"b":6,"e":29},{"b":7,"e":30},{"b":7,"e":31},{"b":7,"e":32},{"b":17,"e":33},{"b":8,"e":20},{"b":5,"e":34},{"b":5,"e":35},{"b":0,"e":36},{"b":1,"e":37},{"b":2,"e":38},{"b":3,"e":39},{"b":4,"e":40}] 12274 }} 12275 -- is2D will trigger minimization 12276 -- scale indicates overall scaling present in the "a" records 12277 12278new feature: set particleRadius 12279 -- global radius for atoms over the max radius value (16.0) 12280 -- defaults to 20.0 12281 12282new feature: CIF and PDB filters "BYCHAIN" and "BYSYMOP" for virus particulation 12283 -- creates just one atom per chain or per symop 12284 -- size can be scaled larger than the max of 16 Angstroms using, for example: 12285 set particleRadius 30; 12286 spacefill 30; // any number over 16 here uses particleRadius instead 12287 12288new feature: symop() function allows symmetry from biomolecule filter for PDB and mmCIF 12289 12290new feature: isosurface SYMMETRY 12291 -- applies symmetry operators to isosurface 12292 -- more efficient rendering and creation 12293 -- default selection is {symop=1} only 12294 -- default coloring is to color by symop based on propertyColorScheme 12295 -- example: 12296 load 1stp filter "biomolecule 1" 12297 color property symop 12298 isosurface sa resolution 0.8 symmetry sasurface 0 12299 12300new feature: new atom property: chainNo 12301 -- sequentially from 1 for each model; 12302 -- chainNo == 0 means "no chain" or chain = '<space>' 12303 12304new feature: new propertyColorScheme "friendly" 12305 -- color-blindness-friendly color scheme 12306 -- used at RCSD 12307 -- example: 12308 12309 set propertyColorScheme "friendly" 12310 color {chainNo > 0} property chainNo 12311 12312new feature: JSpecView completely Java-free; includes 2D nmr and PDF printing of spectra 12313 12314new feature: WRITE PDF <width> <height> <quality> "xxx.pdf" quality > 1 requests landscape mode 12315 -- uses efficient custom PDF creation classes 12316 -- sizes image to fit if too large 12317 12318new feature: JSpecView adds PDF and 2D NMR for JavaScript 12319 12320new feature: load "==xxx" FILTER "NOIDEAL" 12321 -- chemical component load from PDB using the "nonideal" coordinate set 12322 12323bug fix: write CD removed; ChemDoodle has changed formats; use JSON instead 12324bug fix: PDB and CIF files indicated assemblies such as PAU as large negative number 12325bug fix: COMPARE with no rotation starts infinite loop 12326bug fix: looping problem with delay(-1) 12327bug fix: Mouse wheeling for Chrome in JavaScript 12328bug fix: JavaScript popup menu fix for language changes 12329bug fix: JavaScript core components not being processed; Jmol._debugCode not recognized 12330bug fix: unitcell offset incorrectly for biomolecules; origin incorrect for axes. 12331bug fix: isosurface/mo FRONTONLY broken 12332bug fix: language localization broken in JavaScript 12333bug fix: ADF reader not reading MO output from DIRAC Build 201304052106 12334bug fix: Safari reports yellow Jmol info instead of asking to accept applet 12335 -- <object> tag needed to be <applet> 12336bug fix: CIF reader not handling _pdbx_struct_assembly_gen.assembly_id properly 12337 -- wrong atom set for load =3fsx.cif filter "ASSEMBLY 1" 12338bug fix: [#558 Compatibility issue with ChemDoodle] JSmol error in definition of Number.toString() 12339bug fix: mouse wheel not working properly 12340bug fix: JavaScript J2S compiler error does not coerce int += float to integer 12341bug fix: JavaScript WEBGL option broken 12342bug fix: JavaScript NMRCalculation does not access resources 12343bug fix: JavaScript stereo not implemented 12344bug fix: MOL reader fix for multiple-model file (just 13.3.9_dev) 12345bug fix: MOL reader error with load APPEND -- does not continue atom numbers 12346bug fix: CIF modulation reader not reading linear combinations of cell wave vectors 12347bug fix: CIF reading with filter "BIOMOLECULE 1" fails if only the identity operation 12348bug fix: mmCIF reader not reading all _pdbx_struct_assembly_gen.oper_expression options 12349bug fix: PDB CRYST entry 1.0 1.0 1.0 90 90 90 should mean "no unit cell" regardless of biomolecule filter 12350bug fix: isosurface slab <percent> not adapting well for flat molecules such as HEM 12351bug fix: print userfunc() may fail (userfunc() by itself is fine) 12352bug fix: within(helix) not implemented for C-alpha-only polymers 12353bug fix: _modelTitle not updated when a new file is loaded or zapped 12354bug fix: {*}.symop.all not delivering symmetry operator appropriately 12355bug fix: for triple bond in SMILES in URLs 12356bug fix: build.xml missing PDF creation classes 12357bug fix: [#554] for 12358 load http://sourceforge.net/p/jmol/code/18631/tree/trunk/Jmol-datafiles/xyz/3structs.xyz?format=raw; 12359 zap model!=1.1; 12360bug fix: following Java update, adding proper path check for local signed applet 12361bug fix: {xxx}.property_xx not saved in state (broken 8/7/2013 rev 18518) 12362bug fix: Manifests updated for signed and unsigned applet JAR files 12363bug fix: write <type> <filename> fails 12364bug fix: applet scriptWait() method broken 12365bug fix: PyMOL session may display unit cell after read from saved state 12366bug fix: MMCIF reader fails for multiple assembly types 12367bug fix: CIF reader "biomolecule 1" translating to "molecular" rather than "assembly" 12368bug fix: load trajectory with multiple files not working 12369bug fix: JS applet popup menu not closing properly upon language change 12370bug fix: HTML checkbox id attribute not assigned 12371 12372 12373code: refactoring of applet/appletjs code; org.jmol.util.GenericApplet 12374code: refactoring, simplification of buffered readers and buffered input streams. 12375code: JavaScript refactoring, better build_...xml 12376code: JavaScript Integer, Long, Short, Byte, Float, Double all reworked 12377code: disambiguation of GT._ 12378code: Refactored all unnecessarily inner classes to top level 12379code: isolated util/ModulationSet using api/JmolModulationSet 12380code: All applet language localization read from plain .po files 12381 -- as for JavaScript already 12382 -- no need to compile class files for applet languages 12383 -- no language .jar files 12384 -- new jsmol/idioma directory holds .po files for both Java and HTML5 12385code: faster isosurface rendering adding implicit "frontonly" with select {xxx} ONLY 12386code: faster isosurface rendering with implicit "isosurfacepropertySmoothing FALSE" in relevant (integer) cases 12387code: JmolBinary.getBufferedReaderForResource() 12388 -- consolidates all references to URL.getContent() and Class.getResource() 12389code: JavaScript work around for inner class problem with variable name reassignment 12390code: work-around for eval(functionName) not working in JavaScript. 12391code: experimenting with ambient occlusion 12392code: Required manifests added for Java Ju51 (January, 2014). 12393code: JmolOutputChannel moved to javajs.util.OutputChannel 12394code: jsmol.php fixed to allow " in saveFile method 12395code: refactoring Parser into javajs.util 12396code: DSSP moved to org.jmol.dssx, reducing JSmol bio load by 20K 12397code: iText package jettisoned, no longer nec, as I wrote my own PDF creator 12398 12399 12400JmolVersion="13.3.7" 12401 12402code; JavaScript comparison, 13.2.7 with 13.3.7. 12403 12404module 13.2.7 13.3.7 dBytes % 12405 12406core.z.js* 781,122 582,590 -198,532 75 12407corebinary.z.js 10,958 10,852 -106 99 12408corebio.z.js 199,251 199,249 -2 100 12409coreconsole.z.js 13,421 13,421 0 100 12410coremenu.z.js 105,606 107,832 2,226 102 12411coremin.z.js 113,754 113,938 184 100 12412coreprop.z.js 28,601 28,918 317 101 12413corepymol.z.js 153,236 153,271 35 100 12414corescript.z.js* 430,832 339,062 -91,770 79 12415corescript2.z.js 159,078 159,078 12416coresmiles.z.js 90,317 90,317 0 100 12417corestate.z.js 60,478 49,667 -10,811 82 12418coresurface.z.js 271,642 271,535 -107 100 12419coresym.z.js 129,456 129,529 73 100 12420coretext.z.js 46,033 46,033 12421corezip.z.js 163,080 92,476 -70,604 57 12422 12423*core+scripting 1,211,954 921,652 -290,302 76 12424TOTAL 2,551,754 2,387,768 -163,986 94 12425 12426JmolApplet0.jar 1,034,203 1,044,111 12427JmolApplet.jar 2,757,469 2,766,400 12428 12429JmolVersion="13.3.7_dev_2013.10.01" 12430 12431bug fix: Crystal reader not applying lattice translations 12432bug fix: translations incomplete 12433bug fix: state saving of echo "bottom left" instead does "top left" 12434bug fix: multiple-file crystal structures may fail to load if there is a lattice shift 12435bug fix: space group not being calculated automatically for user-defined space groups 12436bug fix: measures broken 12437 12438code: further consolidation: 12439 -- uncompressed(former) gzipped 12440 -- JSmol.min.nojq.js 134K 38K 12441 -- core.z.js 1583K(1781K) 363K 12442 -- corescript.z.js 339K (436K) 83K 12443 12444 -- TOTAL 2056K(2217K) 484K 12445 (7% reduction) 12446 12447 -- JmolApplet0.jar 1038K 1005K 12448 12449 12450JmolVersion="13.3.7_dev_2013.09.30" 12451 12452JmolVersion="13.3.6" 12453 12454bug fix: angle measurements can end with "//nanometers" 12455bug fix: first pending measurement loses label 12456 12457JmolVersion="13.3.6_dev_2013.09.27" 12458 12459new feature: adds remote logging for applet and app via http:// and via function for applet using 12460 jmolApplet0._applet.viewer.setLogfile(function(data) {......}) 12461 12462new feature compare {1.1} {2.1} BONDS "smiles" 12463 -- does flexible fit based on dihedrals. 12464 -- does internal rotation even if ROTATION TRANSLATION are not given 12465 (considered a possible bug) 12466 -- concatenation of: 12467 list = compare({1.1},{2.1},"smiles","BONDS") 12468 rotate branch @list 1 12469 compare {1.1} {2.1} SMARTS "smiles" rotate translate 12470 12471 so, for example: 12472 12473 load files "$tyrosine" "$lysergamide" 12474 select 1.1; color bonds red 12475 select 2.1; color bonds yellow 12476 sm = "c1ccccc1CCN" 12477 compare {1.1} {2.1} BONDS @sm rotate translate 12478 12479new feature: show BEST ROTATION / show BEST VOLUME (better than undocumented show rotation best, show rotation volume) 12480 12481new feature: set animationMode "ONCE" "LOOP" "PALINDROME" 12482new feature: show animationMode; x = animationMode 12483 12484new feature: CAPTURE command, including ROCK and SPIN 12485 -- application and signed applet only (no JS) 12486 -- creates animated GIF 12487 -- uses ANIMATION FPS to determine play-back rate. 12488 CAPTURE "filename" 12489 -- starts capturing 12490 -- uses ANIMATION MODE to determine looping 12491 -- both PALINDROME and LOOP create looping; ONCE (default) does not 12492 CAPTURE "filename" ROCK x|y|z degrees 12493 -- does a clean rocking of the molecule about one of the three major axes 12494 -- axis and degrees optional; y 5 assumed 12495 -- based on: rotate Y 10 10;delay 2.0; rotate Y -10 -10; delay 2.0;rotate Y -10 -10; delay 2.0;rotate Y 10 10;delay 2.0 12496 -- uses LOOP mode 12497 CAPTURE "filename" SPIN x|y|z 12498 -- does a full spin of the molecule about one of the three major axes 12499 -- axis optional; y assumed 12500 -- based on: rotate Y 360 30;delay 15.0; 12501 -- uses LOOP mode 12502 CAPTURE off/on 12503 -- temporarily disables/enables capturing 12504 CAPTURE "" or just CAPTURE 12505 -- end capturing 12506 12507new feature: set drawFontSize // defaults to 14.0 12508 12509FEATURE CHANGE: added bindings: "drag" and "up" -- may affect power users who use BIND command 12510 new: _center CTRL+SHIFT+LEFT+click 12511 new: _reset SHIFT+LEFT+double+click 12512 12513 mouse actions include one (each) of: 12514 SINGLE DOUBLE 12515 LEFT MIDDLE RIGHT WHEEL 12516 DOWN DRAG UP CLICK 12517 12518 for example: 12519 SINGLE-RIGHT-CLICK 12520 DOUBLE-LEFT-DRAG 12521 12522 defaults are SINGLE, LEFT, and CLICK 12523 12524 sequence is always: 12525 12526 down 12527 (drag,drag,drag...) 12528 up 12529 (click) (only if no drag) 12530 12531 Any of these actions may be tapped using 12532 12533 bind "<some mouse action>" "<jmol action or script>" 12534 12535 Note that adding "+:" to an action 12536 12537 bind "<some mouse action" "+:<script...>" 12538 12539 does not replace the Jmol action, just supplements it. 12540 12541$ show mouse 12542_assignNew LEFT+click assign/new atom or bond (requires set picking assignAtom_??/assignBond_?) 12543_center CTRL+SHIFT+LEFT+click center 12544_clickFrank LEFT+click pop up recent context menu (click on Jmol frank) 12545_pickConnect LEFT+click connect atoms (requires set picking CONNECT) 12546_deleteAtom LEFT+click delete atom (requires set picking DELETE ATOM) 12547_deleteBond LEFT+click delete bond (requires set picking DELETE BOND) 12548_depth CTRL+SHIFT+LEFT+double+drag adjust depth (back plane; requires SLAB ON) 12549_dragAtom LEFT+drag move atom (requires set picking DRAGATOM) 12550_dragDrawObject SHIFT+LEFT+drag move whole DRAW object (requires set picking DRAW) 12551_dragDrawPoint ALT+LEFT+drag move specific DRAW point (requires set picking DRAW) 12552_dragLabel SHIFT+LEFT+drag move label (requires set picking LABEL) 12553_dragMinimize LEFT+drag move atom and minimize molecule (requires set picking DRAGMINIMIZE) 12554_dragMinimizeMolecule LEFT+drag move and minimize molecule (requires set picking DRAGMINIMIZEMOLECULE) 12555_dragSelected ALT+SHIFT+LEFT+drag move selected atoms (requires set DRAGSELECTED) 12556_dragZ SHIFT+LEFT+drag drag atoms in Z direction (requires set DRAGSELECTED) 12557_navTranslate LEFT+drag translate navigation point (requires set NAVIGATIONMODE and set picking NAVIGATE) 12558_pickAtom LEFT+click pick an atom 12559_pickIsosurface LEFT+click pick an ISOSURFACE point (requires set DRAWPICKING 12560_pickLabel LEFT+click pick a label to toggle it hidden/displayed (requires set picking LABEL) 12561_pickMeasure LEFT+click pick an atom to include it in a measurement (after starting a measurement or after set picking DISTANCE/ANGLE/TORSION) 12562_pickNavigate CTRL+SHIFT+LEFT+click pick a point or atom to navigate to (requires set NAVIGATIONMODE) 12563_pickPoint LEFT+click pick a DRAW point (for measurements) (requires set DRAWPICKING 12564_popupMenu CTRL+LEFT+down, RIGHT+down pop up the full context menu 12565_reset SHIFT+LEFT+double+click, MIDDLE+double+click reset (when clicked off the model) 12566_rotate LEFT+drag rotate 12567_rotateBranch SHIFT+LEFT+drag rotate branch around bond (requires set picking ROTATEBOND) 12568_rotateSelected ALT+LEFT+drag rotate selected atoms (requires set DRAGSELECTED) 12569_rotateZ ALT+LEFT+drag, SHIFT+RIGHT+drag rotate Z 12570_rotateZorZoom SHIFT+LEFT+drag, MIDDLE+drag rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse) 12571_select LEFT+double+click select an atom (requires set pickingStyle EXTENDEDSELECT) 12572_selectToggleOr LEFT+click if all are selected, unselect all, otherwise add this group of atoms to the set of selected atoms (requires set pickingStyle DRAG) 12573_setMeasure LEFT+double+click pick an atom to initiate or conclude a measurement 12574_slab CTRL+SHIFT+LEFT+drag adjust slab (front plane; requires SLAB ON) 12575_slabAndDepth CTRL+ALT+SHIFT+LEFT+drag move slab/depth window (both planes; requires SLAB ON) 12576_slideZoom LEFT+drag zoom (along right edge of window) 12577_spinDrawObjectCCW LEFT+drag click on two points to spin around axis counterclockwise (requires set picking SPIN) 12578_spinDrawObjectCW SHIFT+LEFT+drag click on two points to spin around axis clockwise (requires set picking SPIN) 12579_stopMotion LEFT+double+click stop motion (requires set waitForMoveTo FALSE) 12580_swipe LEFT+drag spin model (swipe and release button and stop motion simultaneously) 12581_translate CTRL+ALT+LEFT+drag, CTRL+RIGHT+drag, SHIFT+LEFT+double+drag, MIDDLE+double+drag translate 12582_wheelZoom WHEEL zoom 12583 12584bug fix: JSON NIO port SYNC broken 12585bug fix: print getProperty("image", "width=200;height=300;type=png") not working 12586 12587bug fix: write IMAGE "t.png" not working 12588bug fix: rotate -10 -10 not working 12589 12590bug fix: mouse bindings not distinguishing DOWN/CLICK/DRAG/UP properly 12591bug fix: mouse bindings _center and _reset not working 12592bug fix: show MOUSE not including user-defined mouse bindings 12593 12594bug fix: chains improperly selected in JSmol/HTML5 12595bug fix: JSmol/HTML5 not allowing drag-drop or file loading from a local drive. 12596bug fix: JSmol/HTML5 not allowing WRITE FILE ? 12597bug fix: JSmol/HTML5 not allowing WRITE xxx.pdb, xxx.mol, etc 12598 12599bug fix: platformSpeed persists but appears unreadable after loading a state 12600bug fix: JavaScript version InputStreamReader not processing non-UTF data correctly 12601bug fix: second reading of older PNG files with embedded script fails 12602 due to improper png file caching 12603 12604code: overhaul of image creation methods 12605 12606code: careful attention to core functions yields results in 5% reduction in core download size: 12607 -- uncompressed(former) gzipped 12608 -- JSmol.min.nojq.js 134K 38K 12609 -- core.z.js 1586K(1781K) 364K 12610 -- corescript.z.js 378K (436K) 95K 12611 12612 -- TOTAL 2098K(2217K) 497K 12613 (5% reduction) 12614 12615 -- JmolApplet0.jar 1038K 1005K 12616 12617 -- Thus, the "real" transfer size -- based on server-side gzipping -- is half the size of Jmol/Java. 12618 12619code: continued refactoring of ScriptEvaluator to ScriptExt 12620code: refactoring to isolate LabelToken and Labels from core JavaScript load 12621code: refactoring, simplification of image output and export 12622 -- folders created: org.jmol.image, org.jmol.dialog 12623 -- JpgEncoder, Jpg64Encoder, PngEncoder brought to org.jmol.image 12624 and made subclasses of ImageEncoder 12625 -- PpmEncoder fixed 12626 -- ImageEncoder stripped of all unnecessary ImageConsumer/producer business 12627 -- org.jmol.export.image.ImageCreator and parts of org.jmol.viewer.stateCreator reorganized 12628 into org.jmol.OutputManager, org.jmol.OutputManagerAwt, and org.jmol.OutputManagerJS 12629 -- clipboard functions moved into org.jmol.awt and org.jmol.awtjs2d 12630 -- org.jmol.io.JmolOutputChannel now serves for just about all output needs. 12631 12632 12633code: major simplification and consolidation of file I/O methods, including exporters, using JmolOutputChannel class. 12634code: only FileOutputStream reference is one reference in org.jmol.awt. 12635 12636code: code merge between 13.2 and 13.3 18 Sept 2013 12637code: major clean-up of ActionManager 12638 12639JmolVersion="13.3.5" 12640 12641JmolVersion="13.3.5_dev_2013.09.06" 12642 12643new feature: show NMR taps into NMRDB directly 12644 -- for now, application only 12645 12646bug fix: CRYSTAL reader not allowing vibration for conventional cell 12647bug fix: JavaScript binary for Safari and Opera 12648new feature: strutureModifiedCallback 12649bug fix: ID @id vector fails 12650 12651JmolVersion="13.3.4" 12652 12653bug fix: select 1-5 broken 12654 12655JmolVersion="13.3.4_dev_2013.08.21" 12656 12657bug fix: JANA2006 reader not processing occupancies 12658 -- read now forced to "PACKED" in order to calculate site multiplicity 12659bug fix: CIF reader not reading _CCDC_GEOM_BOND_TYPE record 12660bug fix: File dialog problems with paths having space 12661bug fix: GAMESS reader not reading energies 12662bug fix: TRY failure in a load command followed by a successful load 12663 having a loadScript will pop past the second TRY and crash Jmol 12664 12665new feature: _logfile holds full path to logfile 12666 12667code: Incommensurate modulated structure CIF and M50/40 file loading validation 12668 -- includes d=1 and d=2 12669 -- Fourier, sawtooth, crenel 12670 12671bug fix: translation not read from state 12672 12673new feature: set platformSpeed [0 to 10] 12674 -- basically an expanded "set wireframe OFF" with more options 12675 -- only effected during model rotation 12676 (including mouse dragging, spin, vibration, and animation) 12677 -- default value is 10 (all features; no compromises) 12678 -- value >= enables 12679 8 antialiasDisplay (and thus, all features) 12680 7 translucency 12681 6 meshes (contact, draw, isosurface, MO, pmesh, lcaocartoon, CGO) 12682 5 cartoons, rockets, trace, ribbon 12683 4 geosurfaces 12684 3 ellipsoids 12685 2 wireframe and balls 12686 1 none of the above (same as "set wireframeRotation off") 12687 0 [reserved for "auto"] 12688 12689FEATURE CHANGE: set wireframeRotation expanded 12690 12691new feature: show ROTATION BEST 12692 -- operates on currently selected atoms 12693 -- reports "{quaternion}" 12694 12695new feature: quaternion("best") 12696 -- delivers actual quaternion 12697 12698new feature: show ROTATION VOLUME 12699 -- calculates approximate best box (from 1495 quaternion-based alternatives) 12700 -- reports "<volume> {dx dy dz}" 12701 -- where <volume> is the volume, 12702 -- and {dx dy dz} are the dimensions, where dx > dy > dz 12703 12704new feature: rotate BEST 12705new feature: rotate SELECTED BEST 12706 12707new feature: pop-up menu selection "view...best" 12708 12709bug fix: CIF reader does not find Hall name for space groups 12710 12711bug fix: binding names not included in SHOW MOUSE 12712bug fix: "single" touch can fire double-click 12713bug fix: {x}.tensor() command fails when no atom tensors 12714bug fix: isosurface slab not allowing two different slabs for two diffrent isosurfaces 12715bug fix: set wireframeRotation not working ("inMotion" flag not properly read in Viewer). 12716bug fix: screen repaints were being requested far too frequently 12717 12718 *indicates when a refresh is made (external apps and applets only) 12719 12720 external apps only 12721 via loadInline(List)* 12722 createModelSetAndReturnError 12723 12724 openDOM, openReader, openFile, openFiles 12725 via loadModelFromFileRepaint* 12726 createModelSetAndReturnError 12727 12728 loadInLine(String) via loadInLineScriptRepaint* 12729 FileDropper (string drop) via openStringInline* 12730 via openStringInlineParamsAppend 12731 createModelSetAndReturnError 12732 12733 external apps, applet only, via loadInline(String[])* 12734 via openStringsInlineParamsAppend 12735 createModelSetAndReturnError 12736 12737 script LOAD 12738 via loadModelFromFile 12739 createModelSetAndReturnError 12740 12741 script CALCULATE HYDROGENS, PLOT, ZAP (modelkit) 12742 via openStringInlineParamsAppend 12743 createModelSetAndReturnError 12744 12745 script LOAD DATA via loadFileFull and loadInlineScript 12746 openStringsInlineParamsAppend 12747 createModelSetAndReturnError 12748 12749new feature: incommensurate modulation of ADPs. 12750new feature: Jana2006 M40/M50 file reading 12751 12752bug fix: set loglevel 6 (debugHigh) not working 12753bug fix: {*}.tensor("", "id") not implemented 12754bug fix: {*}.tensor("") not implemented 12755bug fix: {*}.tensor("adp") fails 12756bug fix: {*}.symmetry fails when space group is P1 12757bug fix: atom tensors lost when merging 12758 12759bug fix: Jsmol menu and console broken in 2013.08.07 when jQuery calls were all moved into JSmolCore.js 12760 12761bug fix: float parser broken in dev_2013.08.07 12762 12763code: reorganization of ScriptEvaluator into two sections, one optional 12764 12765new feature: COMPARE {atoms} [coords] 12766new feature: COMPARE {atoms} ATOMS {subset1} [coords1] {subset2} [coords2] ... 12767 12768new feature: MODULATION command -- for modulated structures 12769 -- operates on currently selected set of atoms 12770 -- MODULATION ON 12771 -- MODULATION OFF 12772 -- MODULATION t 12773 -- sets modulation "t" of selected atoms 12774 -- MODULATION PLAY t1 t2 12775 -- animates a once-through sequence of t from t1 to t2 12776 -- MODULATION FPS x.x // may be < 1 12777 -- sets speed of animation 12778 12779bug fix: zoom setting lost in state 12780 12781code: incommensurate crystal work -- Uiso, preliminary Uij and subsystems 12782code: incommensurate crystal work -- occupancy Crenel, displacive sawtooths 12783 12784bug fix: shapeInfo not reporting visibility of isosurface 12785 12786code: pdb, cif readers separated into separate packages; p2n, pqr readers with pdb now 12787 12788new feature: Jana2006 reader -- reader for http://jana.fzu.cz/ 12789new feature: CIF reader reads incommensurate modulated structures 12790 -- FILTER options include: 12791 -- NOSPECIAL (include special atoms for debugging 12792 -- MODAVERAGE (do not read modulation 12793 -- MODAXES=xyz (select only specific axes -- x, y, and/or z) 12794 -- NOSYM (no symmetry read) 12795 12796code: Even faster float parsing 12797bug fix: filter lost after CENTROID or PACKED load option 12798bug fix: set rangeSelected not functional 12799 12800new feature: msCIF file reading of incommensurate modulation data as vibration 12801new feature: msCIF file filter "MODAXES=xxx" where xxx = X,XY,XYZ,YZ,etc. 12802new feature: msCIF file filter "MODAVE" gives average structure with vibration vectors. 12803 12804bug fix: minimization can fail after MMFF switches to UFF. 12805bug fix: CIF reader fix for no element given "phenyl1" in ZjzxlegN.cif 12806JSmol: Jmol form moved to end of body 12807JSmol: All $(xx) references moved to JmolCore.js 12808 12809JmolVersion="13.3.3_dev_2013.07.27" 12810 12811code: reconfigured JSmol build no longer needs jsmol/make directory. 12812 12813bug fix: Gaussian cube format changed and not recognized (extra "1" in third line). 12814bug fix: PDB header don't do trim(); 12815bug fix: isosuface ID @x ... becomes isosurface ID "@x" 12816bug fix: color chain broken 12817bug fix: rockets with color chain 12818bug fix: filter ":X" broken 12819bug fix: O not 2- in PDB adding hydrogens 12820bug fix: NWChem reader error 12821 12822 12823bug fix: isosurface SLAB TRANSLUCENT 0.x color 12824 -- inherits color of isosurface when color parameter is absent 12825 12826bug fix: JSmol 2-sided surface color problem due to Java2Script miscoding of Number.shortValue() 12827bug fix: PyMOLMeshReader code clean-up. 12828 12829JmolVersion="13.3.2_dev_2013.07.21" 12830 12831bug fix: PyMOL mesh reader broken for EDS files 12832 12833JmolVersion="13.3.1_dev_2013.07.20" 12834 12835bug fix: MMCIF_PDBX structures not being read 12836 12837bug fix: allow PyMOL PSE files reading as part of a set of files, not just by itself 12838 12839bug fix: quaternion plots not synched with originating structure 12840bug fix: 1skt.cif loses secondary structure (MMCIF_PDBX reader needed) 12841 12842new feature: calculate formalCharge 12843 12844bug fix: set showTiming not functional 12845bug fix: set pdbAddHydrogens does not set formal charge on O(1-) or "O" of H2O (2-) 12846bug fix: PNGJ files not properly caching, and PSE files with DOCACHE option 12847 12848JmolVersion="13.3.0" 12849JmolVersion="13.1.19_dev_2013.07.18" 12850 12851new feature: set exportScale x.x 12852 -- adjusts export scale 12853 -- only implemented for VRML and X3D exporters 12854new feature: unitcell center {atomset} 12855new feature: unitcell center {fx fy fz} 12856new feature: {*}.ms, {*}.cs %[ms] %[cs] magnetic shielding and chemical shift 12857new feature: label <color red>xxx</color> 12858new feature: set shift_H xxx (ppm) 12859new feature: getProperty("nmrInfo") 12860new feature: NMR analysis tools: 12861 -- x = measure({a} {b} "isc_hz") -- J coupling 12862 -- x = measure({a} {b} "dc_khz") -- dipolar constant 12863 -- MEASURE {a} {b} "2://dc_hz" -- dipolar constant 12864 -- MEASURE {a} {b} "2:%3.2VALUE//dc_khz" -- dipolar constant 12865 -- MEASURE {a} {b} "2://khz" -- defaults to dc_khz 12866 -- MEASURE {a} {b} "2://hz" -- defaults to isc_hz 12867 -- MEASURE {a} {b} "2://isc_1hz" 12868 12869new feature: {xxx}.tensor(type,what) 12870 -- type = "temp", "ms", "efg", etc. 12871 -- returns a list of data. isc-type returns a list of lists [index1, index2, value] 12872 -- what = 12873 "j" (isc-type only) 12874 "chi" (efg only) 12875 "dc" (dipolar coupling constant; type ignored) 12876 "eigenvalues" float[v1,v2,v3] 12877 "eigenvectors" P3[V1,V2,V3] 12878 "value" Float (v3) 12879 "asymMatrix" Matrix3f 12880 "symMatrix" Matrix3f 12881 "isotropy" Float v_iso=(v1 + v2 + v3)/3 12882 "anisotropy" Float v3 - (v1 + v2)/2 12883 "asymmetry" Float (v2 - v1)/(v3 - v_iso) 12884 "eulerzxz" float[] 12885 "eulerzyz" float[] 12886 "quaternion" Quaternion 12887 "indices" float[modelIndex,atomIndex1,atomIndex2] 12888 "string" selected readable data 12889 "type" 12890 anything else -- all key/value pairs 12891 12892new feature: bind "+:<script...>" 12893 -- added "+:" indicates to NOT unbind Jmol action 12894 12895new feature: ellipsoid OPTIONS "xxxx" 12896 -- "xxxx" is a quoted string of options separated by semicolon: 12897 "arcs;arrows;axes;ball;dots;fill;wireframe" 12898 with optional "no" in front of each 12899 12900new feature: SET ECHO POINT {atom or point} 12901 -- allows 2D and 3D echos to have pointers to atoms or points 12902 12903 12904bug fix: set shift_XX not saved in state 12905bug fix: JSmol menu not disappearing upon touch outside menu 12906bug fix: PyMOL surface map reading error 12907bug fix: magres measurement of dipole coupling constants do not reach just min-distance set 12908bug fix: "cs" for Cs symmetry broken in chemicalshift 12909bug fix: cartoons with too small nonzero size will not render anything 12910 12911code: org.jmol.quantum.NMRCalculation smoothly handles J-coupling and dipolar coupling constant display. 12912code: org.jmol.quantum.NMRCalculation implements org.jmol.api.JmolNMRCalculation: 12913 public float getQuadrupolarConstant(Tensor efg); 12914 public float getJCouplingHz(Atom a1, Atom a2, String type, Tensor t); 12915 public float getDipolarConstantHz(Atom a1, Atom a2); 12916 public float getDipolarCouplingHz(Atom a1, Atom a2, V3 vField); 12917 public JmolList<Tensor> getInteractionTensorList(String type, BS bs); 12918 public BS getUniqueTensorSet(BS bs); 12919 public JmolList<Object> getTensorInfo(String tensorType, String infoType, BS bs); 12920 public Map<String, Float> getMinDistances(MeasurementData md); 12921 public boolean getState(SB sb); 12922 public Object getInfo(String sym); 12923 12924JmolVersion="13.1.17_dev_2013.06.27" 12925 12926new feature: CASTEP reader filter option q=all 12927new feature: set picking DRAGLIGAND 12928 -- won't move the protein 12929new feature: CIF reader upgrade to allow multicharacter chain specs. 12930 -- See 1bgl_1bgm.cif 12931 -- automatically switches to chainCaseSensitive if multi-character 12932 or lower-case chains are read in a CIF file. 12933 -- note that in certain cases quotation marks will be needed: 12934 select chain=0123 NOT OK 12935 select :0123 NOT OK 12936 select chain="0123" OK 12937 select :"0123" OK 12938 select :"A*" or :"A'" or :'A"' or :"A\"" 12939 12940new feature: {atomset1}.distance.min({atomset2}) 12941 -- returns an array 12942 -- minimum distance of each atom in atomset1 to any atom in atomset2 12943new feature: {atomset1}.distance.max({atomset2}) 12944 -- returns an array 12945 -- maximum distance of each atom in atomset1 to any atom in atomset2 12946 12947note: much of the next compare/branch business was built into a 12948 new COMPARE command for Jmol 13.3.6 12949 12950new feature: list = compare({atomset1} {atomset2} "ccCCN" "BONDS") 12951 -- determines the dihedrals that match atomset1 to atomset2 12952 -- returns arrays of length 6n, list[6n] 12953 which lists six numbers for each dihedral in the comparison set, 12954 including i1 i2 i3 i4 set1value set2value, where i1-i4 are 12955 atom indices, and set1value and set2value are the dihedral angles 12956 in sets 1 and 2, respectively. 12957 -- feeds into the rotate BRANCH @list command 12958 12959new feature: BRANCH @list 12960 -- takes a list of 6n numbers from compare function 12961 -- rotates all dihedrals in the selected atom set to target values concurrently 12962 12963 // application: flexible substructure fit using a SMARTS search 12964 12965 load files "$tyrosine" "$lysergamide" 12966 select 1.1; color bonds red 12967 select 2.1; color bonds yellow 12968 sm = "c1ccccc1CCN" 12969 list = compare({1.1},{2.1},sm,"BONDS") 12970 rotate branch @list 1 12971 compare {1.1} {2.1} SMARTS @sm rotate translate 12972 // at this point the two models match almost perfectly among these key atoms. 12973 12974new feature: {1.1}.find("ccCCN", "BONDS") 12975 -- finds the first match in the structure to the given SMARTS string 12976 -- returns an n-length array of 4-length arrays, list[n][4] 12977 -- each list[i] is a set of four atoms in bond-connected order 12978 -- full list comprises all dihedrals in the found set of atoms. 12979 12980new feature: set translucent 12981 -- default TRUE : translucent objects are fully translucent 12982 -- FALSE: translucent objects are opaque to other translucent objects 12983 12984bug fix: CrystalReader broken by recent change to simpleReplace() 12985bug fix: PyMOL movie start frame 12986bug fix: PyMOL putty broken 12987bug fix: pdbAddHydrogens may miss O3' or O5' H atoms at end of DNA strands 12988bug fix: pdbAddHydrogens may miss H in first group of a chain 12989bug fix: set defaultDrawArrowScale broken 12990bug fix: "ligand" should include all _g=0 (nonPDB atoms) 12991bug fix: applet getpropertyAsArray("bondInfo") fails 12992bug fix: JSmol script/scriptWait nuance with moveto. 12993 -- when using scriptWait with HTML5, there can be no threading 12994bug fix: invertSelected on trajectory causes nullPointerException 12995bug fix: POLYHEDRA with faceCenterOffset not saved in state properly; EDGES option nonfunctional 12996bug fix: JavaScript not returning arrays properly from Jmol.getPropertyXXXX() 12997 -- very important to have {} after j2sNative directive! 12998bug fix: COMPARE could rotate to less-good fit with SMARTS search 12999bug fix: draw ARROW ATOM/BOND broken 13000bug fix: animation MORPH broken for non-PyMOL files 13001 -- load trajectory ({0 6}) 1cdr.pdb 13002 -- animation MORPH 10 13003 -- animation ON 13004 -- load trajectory "test1.pdb" "test2.pdb" 13005 -- animation MORPH 30 13006 -- animation ON 13007bug fix: draw ARROW ATOM/BOND broken 13008bug fix: draw ARROW with offset disallows set picking draw adjustments 13009bug fix: concurrent loading of two cif files by two different applets fails 13010bug fix: draw LINEDATA not operative (undocumented, for state; from draw xxx INTERSECT yyy) 13011 -- needs revision to create DATA option; can be huge and very long to process state file 13012bug fix: load :2-butanone fails 13013bug fix: PyMOL volume map data saved from PyMOL 1.6 has slightly different data structure 13014bug fix: jvxl reader ignores jvxlVertexColorData 13015bug fix: ellipsoid rendering problems 13016 13017code: MagRes/CASTEP reader upgrades 13018code: color/translucent/opaque clean up in ScriptEvaluator 13019 13020============================================================================= 13021 13022JmolVersion="13.1.16_a" 13023 13024new feature: set defaults PyMOL 13025 -- zoomHeight TRUE 13026 -- measurementUnits ANGSTROMS 13027 13028 new feature: color BALLS 13029 -- distinct from color ATOMS because it doesn't get inherited 13030 -- for PyMOL compatability with sphere_color 13031 13032new feature: restore SCENE "xxxx" nSec 13033 13034new feature: Scene menu 13035 -- PyMOL scene names, in order 13036 13037new feature: added parameters to moveTo allows setting cameraDepth, cameraX, and cameraY 13038new feature: moveTo <nseconds> PYMOL [18-element standard PyMOL view matrix] 13039 -- used for PSE file loading 13040 -- to be used also for scenes 13041 [0-8] are 3x3 rotation matrix (row/column inverted) 13042 [9,10] are x,y translations (y negative) 13043 [11] is distance from camera to center (negative) 13044 [12-14] are rotation center coords 13045 [15-16] are slab and depth distance from camera (0 to ignore) 13046 [17] is field of view; positive for orthographic projection 13047 -- internal use only; not documented 13048 13049new feature: cache CLEAR 13050 -- same as cache REMOVE ALL 13051 13052new feature: load xxx.pse FILTER "DOCACHE" 13053 -- specifically for editing large PSE files when included in a state 13054 -- caches streamlined file that is still readable by PyMOL (needs testing!) 13055 (no electron density map data, for instance -- see HupA_2.pse) 13056 -- caches all isosurfaces, creating JVXL equivalents 13057 -- should be followed with WRITE xxx.pngj or WRITE xxx.jmol or WRITE xxx.zip 13058 -- for example: 13059 before: 13060 04/07/2013 07:46 AM 11,929,507 HupA_2.pse 13061 13062 $ zap;load "HupA_2.pse" filter 'docache' 13063 $ write t.zip 13064 13065 after: 13066 Listing archive: t.zip 13067 Physical Size = 395174 13068 13069 Date Time Attr Size Compressed Name 13070 ------------------- ----- ------------ ------------ ------------------------ 13071 2013-05-17 06:46:36 ..... 1092432 219718 HupA_2.pse 13072 2013-05-17 06:46:36 ..... 1473760 6589 isosurface_level2 13073 2013-05-17 06:46:36 ..... 25495 11624 state.spt 13074 2013-05-17 06:46:36 ..... 134 119 JmolManifest.txt 13075 2013-05-17 06:46:36 ..... 0 2 Jmol_version_13.1.16_dev_2013.05.17__2013-05-15_07.09 13076 2013-05-17 06:46:36 ..... 158082 156316 preview.png 13077 ------------------- ----- ------------ ------------ ------------------------ 13078 2749903 394368 6 files, 0 folders 13079 13080new feature: anim FRAMES [1, 3, 9, 9, 9, 3, 1] 13081 -- arbitrary PyMOL-like model list 13082 13083new feature: FRAME n 13084 -- same as MODEL n, unless we have PyMOL-like frames 13085 -- if have frames, then FRAME 2 goes to the second frame (model 3 in this case) 13086 -- MODEL n still always goes to a specific model. 13087 -- all relative options -- FIRST LAST PREV NEXT -- refer to frames if there are frames 13088 even if the MODEL command is given. 13089 13090new feature: pyMOL PSE state options: LOAD "FOO.PSE" state FILTER "xxxx" 13091 -- [state not present; default] load all PyMOL states (one PyMOL state == one Jmol model) 13092 -- state = 0 (load only the current PyMOL state) 13093 -- state > 0 (load just a specific PyMOL state) 13094 -- FILTER "nosurface" -- load PyMOL file without surfaces 13095 13096new feature: getProperty BONDINFO {atomset1} {atomset2} 13097 13098new feature: measurements with IDs and radius/diameter: 13099 -- measure ID "xxx" ... 13100 -- measure ID "xxx" RADIUS x.y (or DIAMETER x.y) 13101 -- renders as dots 13102 13103new feature: set zoomHeight 13104 -- FALSE by default 13105 -- set TRUE for PyMOL-like resizing (scale only set by height adjustment) 13106 13107new feature: isosurface color density (decimal) 13108 - variable decimal point size 13109 13110new feature: PyMOL CGOs as CGO command 13111 - needs testing 13112 - CGO ID "xxx" [ cgo data (float array) ] 13113 - includes basic CGO methods 13114 BEGIN 13115 GL_POINTS 13116 GL_LINES 13117 GL_LINESTRIP 13118 GL_TRIANGLE 13119 GL_TRIANGLE_STRIP 13120 GL_TRIANGLE_FAN 13121 VERTEX 13122 END 13123 COLOR 13124 NORMAL 13125 SIMPLE_LINE 13126 SAUSAGE 13127 TRICOLOR_TRIANGLE 13128 13129popup: added menu for MEP range -0.1 0.1 13130 13131PyMOL: uniqueBondSettings working 13132 13133PyMOL: better scene restore; 13134 13135PyMOL: adds SASURFACE option (surface_solvent ON), with "carving" (ProFusion_ABL.pse, scene F6) 13136 13137PyMOL: abstraction of scene setting from reader 13138 13139PyMOL: first phase of reader development complete (working with Jaime Prilusky) 13140 -- 104 test models http://ispcsrv3.weizmann.ac.il/a2jmolb/browse 13141 -- implementation of standard objects, including: 13142 -- atoms with labels 13143 -- bonds 13144 -- standard PyMOL rendering, including: 13145 -- lines 13146 -- sticks 13147 -- nonbonded (stars) 13148 -- nb_spheres 13149 -- cartoons of various types (not plank) 13150 -- rockets 13151 -- ribbon (backbone/trace) 13152 -- putty (trace) 13153 -- dots 13154 -- measures 13155 -- simple CGO objects 13156 -- molecular surfaces 13157 -- electron density as points and meshes 13158 -- custom colors 13159 -- fog and slab 13160 -- morphing movies 13161 -- JVXL caching of isosurfaces 13162 13163PyMOL: measurement font/offsets enabled 13164 -- adds measure ID "xxx" FONT scale face style 13165 -- adds measure ID "xxx" OFFSET [mode, sx, sy, sz, ax, ay, az] 13166 -- adds measure ID "xxx" OFFSET {sx, sy, sz} 13167 13168PyMOL: perspective fix for translated center -- H115W.PinM.PSE 13169 13170PyMOL: preliminary scene implementation 13171 -- view only 13172 -- use RESTORE ORIENTATION xxxxx 13173 13174code: Text.java, Object2d.java moved from shapes to modelset 13175 13176bug fix: COMPARE move of group saved in state may not be correct when restored 13177bug fix: write command doesn't accept parameter sequence IMAGE PNGJ ... (broken in 13.1.14) 13178bug fix: load APPEND with PDB file loses structure (broken in 13.1.15) 13179bug fix: restore command broken 13180bug fix: JavaScript: adding SYNC 13181bug fix: antialiasing or resizing stray lines problem solved (introduced in 11.0, 08/2006!) 13182bug fix: "display add" by itself should not do anything 13183bug fix: Hall translation initialization problem 13184bug fix: JavaScript reading of old-style JVXL files 13185bug fix: Gaussian reader not splitting MO set by model 13186bug fix: polyhedron reading from state 13187bug fix: connect delete not saved in state 13188bug fix: rockets not working for alpha polymer (also in 13.0.16) 13189bug fix: GXL added to carbohydrates 13190bug fix: show state/anim turns "anim" into "animation" 13191bug fix: MoldenReader orbitals are not in energy order; use FILTER "NOSORT" to prevent sorting by energy 13192bug fix: simultaneous spin/animation broken in 13.1.13 13193bug fix: MoldenReader fix for file blank lines and g,h,i orbitals - also for 13.0.16 13194bug fix: COMPARE does not allow nSeconds at beginning, as described in documentation 13195bug fix: isosurface VOLUME/AREA SET n cannot return to full array reporting; SET -1 added. 13196bug fix: isosurface VOLUME/AREA always returns an array, possibly of length 0 13197bug fix: isosurface molecular/solvent can give inappropriate inner surfaces 13198bug fix: show selected includes deleted atoms 13199 13200============================================================================= 13201 13202JmolVersion="13.1.15" 13203 13204FEATURE CHANGE: default JPEG quality set to 100 (was 75, which looks crappy) 13205 13206new feature: select command parameter completion using [TAB] includes variables 13207 13208new feature: PyMOL-like label offset options: 13209 13210 set labelOffset [sx, sy, sz] 13211 set labelOffset [mode, sx, sy, sz, ax, ay, az] 13212 13213 where 13214 13215 sx,sy,sz are screen coord offsets 13216 -- in Angstroms 13217 -- applied after view rotation 13218 -- sy > 0 LOWERS label 13219 ax,ay,az are xyz position (in Angstroms; applied before view rotation) 13220 mode == 1 indicates xyz position is an offset to the atom position 13221 mode != 1 indicates xyz position is absolute 13222 defaults: mode == 1; ax = ay = az = 0 13223 13224 13225new feature: CASTEP energy reading 13226new feature: XCrysDen file reader 13227new feature: VASP POSCAR reader 13228 13229new feature: set cartoonLadders -- no bases, like PyMOL 13230 13231new feature: model CREATE n 13232 -- allows "empty" model creation without atoms 13233 -- n = number of models to create 13234 -- defaults to 1 13235 13236new feature: "all frames" toolbar button starts/stops PyMOL movies: if(_isMovie){if (_animating) {animation off}else{animation play}} else {frame *} 13237 13238new feature: Jmol/JmolData application -I flag accepts input from System.in and command piping: 13239 13240 type t.spt | jmol -I start Jmol with this script 13241 13242 Note: if you use a pipe, be sure to make "exitJmol" the last command of the script 13243 13244 Add -o for output to System.out. Without the pipe, we are going to control Jmol 13245 from a Jmol> prompt on the command line console 13246 13247 jmol -Io see messages on input console 13248 ...messages from Jmol 13249 Jmol> background red;load 1crn.pdb;.... 13250 ...messages from Jmol 13251 Jmol> exitJmol 13252 13253 Add -n for headless operation (will not exit automatically). 13254 13255 type t.spt | jmol -Ion 13256 13257 Note: if you use a pipe, be sure to make "exitJmol" the last command of the script 13258 13259 Add -i for silent operation (no writing to System.output). 13260 13261 13262new feature: dots IGNORE {atom set} ON; 13263 13264new feature: Jmol or JmolData with -g0x0 and load filter "DORESIZE" will automatically 13265 resize the image to what is given in the PyMOL file as its default size: 13266 JmolData -ns "load t.pse filter 'DORESIZE'" -g0x0 -w "PNGJ:t.png" 13267bug fix: isosurface map property may not reference correct atom 13268bug fix: set isosurfacekey may not work with slabbing 13269bug fix: deleting atoms does not remove bioshape rendering 13270bug fix: isosurface in multi-model context saved in state with wrong model number 13271bug fix: PyMOL label fix, including fonts 13272bug fix: PyMOL rockets, nucleic acid rendering 13273bug fix: write JPG not working in JavaScript 13274bug fix: isosurface ... map property colors not cleared entirely before next mapping 13275bug fix: MSMS reader broken 13276bug fix: labels lost upon z-shading 13277bug fix: isosurface property temperature default smoothing broken in 13.1.13. 13278bug fix: {xxx}.cartoon = {xxx}.temperature.all fails to use correct values (also backbone, trace, etc.) 13279bug fix: isosurface translucent level not re-zeroed properly 13280bug fix: IDTF exporter with translucency fails 13281bug fix: commands f.sort() and f.reverse() fail. 13282bug fix: {;...;} syntax does not work in 13.1 13283bug fix: select dots > 0 does not work 13284bug fix: JmolData broken 13285 13286code: PyMOL work; CGO command and class CGO extends DRAW preliminary only; preliminary putty; fix for putty+sticks issue 13287code: PyMOL reader localSettings 13288code: PyMOL putty hack for Cover1.pse removed; colix index error fixed 13289code: PyMOL slab and depth; better field of view; even better zslab/zdepth 13290code: PyMOL reader "backbone" (really a trace -- fixed width?) 13291code: PyMOL reader isosurface solvent 13292code: PyMOL reader and full surfaces, mixed bigEndian/littleEndian Pickle reading 13293code: PyMOL reader: cartoon_ladder_mode approximation as cartoons 13294code: PyMOL reader: includes cartoon type 1,4,7 -> trace 13295code: String JmolViewer.runScript(String script) runs script immediately and returns output buffer 13296code: continued work on PyMOL PSE file reader 13297code: simplification of JmolViewer interface and access to global parameters: 13298 13299 // several; methods were deprecated and removed in 13.1.15. All are accessible via "getXxxx" methods: 13300 13301 abstract public float getFloat(int tok); 13302 abstract public int getInt(int tok); 13303 abstract public boolean getBoolean(int tok); 13304 13305 //abstract public int getAnimationFps(); see getInt(T.animationFps) 13306 //abstract public boolean getShowHydrogens(); see getBoolean(T.showhydrogens) 13307 //abstract public boolean getShowMeasurements(); see getBoolean(T.showmeasurements) 13308 //abstract public boolean getAxesOrientationRasmol(); see getBoolean(T.axesorientationrasmol) 13309 //abstract public int getPercentVdwAtom(); see getInt(T.percentvdwatom) 13310 //abstract public boolean getAutoBond(); see getBoolean(T.autobond)) 13311 //abstract public boolean showModelSetDownload(); deprecated -- was just "true" 13312 13313 13314 13315============================================================================= 13316 13317JmolVersion="13.1.14" 13318 13319new feature: JVXL vertex-only data encoding "none" allows hand-coding of JVXL files 13320new feature: isosurface efvet reader data "0" is "indicated colors" 13321 -- isosurface "test.efvet" 0 13322 13323JavaScript: WebGL fix involving Collections.list calling ArrayList.add() 13324JavaScript: disambiguation of Mesh() 13325JavaScript: changing to utf-8 String nonbinary reading of .po files 13326JavaScript: localization working 13327 13328code: cleaning up of Escape and checks for array types 13329code: JavaScript does not need a visible canvas to create images -- could allow for "headless" JS operation 13330 13331bug fix: isosurface boundbox plane .... 13332bug fix: isosurface boundbox {pt1} {pt2} plane ... 13333bug fix: JVXL 1.0 format reading broken 13334bug fix: MOL2 reader not properly assigning element symbols 13335bug fix: isosurface slab translucent broken when saved in state 13336bug fix: isosurface slab translucent mesh broken when saved in state 13337bug fix: JavaScript minimization fix 13338bug fix: sync socket connections not working 13339bug fix: "navigate percent" broken 13340bug fix: isosurface area/volume broken 13341bug fix: JavaScript WRITE IMAGE with HTML5 does not allow change of width or height 13342bug fix: WRITE PNGJ does not allow sizing of image 13343bug fix: backbone/spine defs do not take into account phosphorylated proteins. Better: 13344 "@backbone protein&(_a>=1&_a<6|_a>=64&_a<72)|nucleic&(_a>=6&_a<14|_a>=72)", 13345 "@spine protein&_a>=1&_a<4|nucleic&_a>=6&_a<14&_a!=12", 13346bug fix: getProperty fileInfo fixed and documented 13347bug fix: assign atom does not update selections for elements 13348bug fix: FileDropper broken 13349bug fix: LcaoCartoon "-sp3d" not working 13350bug fix: PyMOL PSE files not accessible by Jmol app File...Open or drag/drop 13351bug fix: incorrect calculation of RMSD for COMPARE and SMILES 13352bug fix: ModelKit menu "SHIFT to rotate" should read "ALT to rotate" 13353bug fix: starting applet console takes two clicks 13354bug fix: JavaScript SMILES bug (String.replaceAll() does not work 13355bug fix: JavaScript LOOP command not implemented 13356 13357============================================================================= 13358 13359JmolVersion="13.1.13" 13360 13361FEATURE CHANGE: multiple applets no longer share the same lighting space 13362 13363new feature: animation DISPLAY {atomset} 13364 - applies a filter to a running animation to display only a certain set of atoms. 13365 - for example: 13366 load test.pse 13367 animation display {act_site} // defined in test.pse 13368 13369new feature: animation MORPH n 13370 - where n is a number of frames to be inserted between trajectories 13371 - requires previous LOAD TRAJECTORY 13372 or the loading of a PyMOL PSE file having a movie (automatically a trajectory) 13373 - Jmol will do a linear morph as the animation runs. 13374 - for example: 13375 load test.pse 13376 animation morph 3 13377 - could be used for a linear morph between just two structures: 13378 load trajectory "test1.pdb" "test2.pdb" 13379 animation morph 32 // animation will run 33 frames 13380 13381new feature: frame -x.y 13382 - negative decimals indicate a linear morph is requested between two 13383 trajectory frames. 13384 - for example: 13385 load test.pse 13386 frame -3.5 13387 13388new feature: set celShading TRUE -- produces cel shading effect 13389 - see http://en.wikipedia.org/wiki/Cel_shading 13390 - introduced by N David Brown 13391 13392new Feature: Experimenting with ellipsoid {atom set} and ellipsoid $isosurfaceID 13393 13394new feature: PyMOL PSE reader enhancements -- labels, simple surfaces, measures 13395 13396new feature: isosurface xxxx MAP property COLOR 13397 -- allows inheritance of color from underlying atom (as in PyMOL) 13398 13399new feature: UHBD grid file reader 13400new feature: DelPhi grid file reader 13401 13402new feature: load =xxx/ where xxx is a database code that can be set up in the future by a user. 13403 -- currently including mp MaterialsProject http://www.materialsproject.org/materials/%FILE/cif 13404 -- along with ligand, nci, nmr, pdb, pubchem 13405 -- see JmolConstants.databases for the full list. 13406 -- note that nci can take an additional tag such as /names after the name, and pubchem can take one before it: 13407 13408 load =mp/1 13409 load =nci/caffeine 13410 load =pubchem/caffeine 13411 load =pubchem/cid/2345 13412 print(load('=nci/caffeine/names')) 13413 13414bug fix: set picking IDENT when picking is already ident can cancel a pending measurement 13415bug fix: applet does not refresh when mouse exits with pending measurement 13416bug fix: labels within fog should be hidden 13417bug fix: load CENTROID does not always work -- wrong implicit normalization flag (was -1 instead of 1) 13418bug fix: property_xxx does not work (since 10/3/12, 13.1.7) 13419bug fix: The "show history" command is supposed to clear out the "show history" command 13420 itself, but only if it is a top-level command (from the console), 13421 but it does more than that if it is part of script("show history"). 13422 Probably true with all recent versions of Jmol. 13423bug fix: isosurface binary file reading (MRC, CCP4, O, binary PMESH, etc.) broken 13424bug fix: JavaScript: zoomTo [seconds > 0]... and restore rotation|orientation [name] [seconds > 0] not waiting 13425 13426code: Refactoring class names to reduce JSmol JavaScript footprint 13427 ScriptVariable --> SV 13428 Token --> T 13429 BitSet --> BS 13430 BitSetUtil --> BSUtil 13431 Colix --> C 13432 Point3f --> P3 13433 Point3fi --> P3i 13434 StringXBuilder --> SB 13435 Vector3f --> V3 13436 JmolConstants --> JC 13437 13438code: shader functions removed from Colix; Shader class made nonstatic 13439code: refactored to allow scriptless JavaScript. (reduces initial core code load size by 25%, to 2.5Mb) 13440 13441============================================================================= 13442 13443version="13.1.12" 13444 13445new feature: PDB reading of X-PLOR using hybrid-36 and NAMD files using hex 13446 -- see https://www.schrodinger.com/AcrobatFile.php?type=supportdocs&type2=&ident=530 13447 -- see http://cci.lbl.gov/cctbx_sources/iotbx/pdb/hybrid_36.py 13448 13449new feature: load xxx.pdb filter "TYPE i,n" 13450 -- loads custom text fields into the "atomType" property of an atom upon customized PDB file loading 13451 where i is the number of the column (starting with 1) and n is the number of columns 13452 -- text is trimmed 13453 -- e.g. load xxx.pdb filter "TYPE 73,4" loads four characters starting at column 73 as "atomType" (segID) 13454 -- to convert to a numerical value, convert that to .property_foo: 13455 load xxx.pdb filter "type 22,4"; {*}.property_seqNo = {*}.atomType 13456 13457new feature: PDB filter "TYPE 73,4=xxx" 13458 -- loads four characters starting at column 73 (1-based) as "atomType" 13459 -- loads only those atoms with atom types starting with "xxx" 13460 13461new feature: axes labels "a" "b" "c" "xxx" where "xxx" is the label for the origin 13462 13463bug fix: PDB file reading of remediated 1A7Y and 1E9W error due to too many CONECT bonds 13464 -- now reads HEADER columns 63-66 for 4-digit PDB ID. 13465 -- only if this ID is absent will the number of CONECT bonds be checked in decision to autobond 13466 13467bug fix/update: revision of the pages that make the About menu (application) in each language. 13468 -- Some changes that had been formerly applied to the English page are now in all. 13469 (Removal of copyright date in text) 13470 -- All About_xx.html files are now encoded and saved in UTF-8 w/o BOM, 13471 except Chinese which is in GB2312/GB18030. 13472 -- Extended characters in tr and zh that had become corrupt across revisions were restored from old ones. 13473 -- Several html header tags updated or added (html5 doctype, charset, lang) 13474 -- Hopefully all will display correctly after these changes! 13475 13476JavaScript: fix for SMILES matcher and compare({*},{*},"isomer") 13477 -- j2s reminder: Can't use Java new int[n][]; must use org.jmol.util.ArrayUtil.newInt2(n) 13478JavaScript: going to Float64Array for all noninteger arrays -- all numbers double 13479 Note that this could cause differences with Jmol, but I think we will have to live with that. 13480 The problem was with (new Float32Array([13.48]))[0] != 13.48. So instead of trying to force 13481 floats, it seems to make more sense to me to force doubles, using Float64Array instead of Float32Array. 13482 Thanks given to Ira Hanson for clearing this up for me. 13483JavaScript: JSmol writes PNG, PNGJ, JMOL, ZIP files from a web page 13484JavaScript: JSmol writes text files from a web page 13485 13486============================================================================= 13487 13488version="13.1.11" 13489 13490new feature: Jmol app "recent files" recognizes if file was drag-dropped or opened via "File Open" 13491new feature: color cartoons red blue 13492 -- front/back colors 13493 -- preliminary - only for hermiteLevel = 0, not cartoonFancy 13494 -- a bit rough at the edges 13495 -- not in state 13496 13497bug fix: 13.1 does not calculate partial charges (mark/reset fault in reading resource files) 13498bug fix: MOPAC2012 files not recognized 13499bug fix: patch 3581394 - small fixes for cartoon meshes 13500bug fix: 13.1.8 does not display translucent bonds when only bonds are translucent 13501JavaScript: flat cartoons for WebGL using mesh 13502JavaScript: adds XML model file readers 13503 -- tested: VASP, XODYDATA, CML, Chem3D, MolPro, XSD 13504 13505code: refactoring for JavaScript popup/modelkit menus 13506code: GT optimization, refactoring 13507code: Naga sockets upgrade to Naga-3_0. (MolecularPlayground and jsonKiosk) 13508 13509============================================================================= 13510 13511version="13.1.10" 13512 13513FEATURE CHANGE: set perspectiveMode removed 13514 -- nonlinear version 10 perspective mode no longer supported 13515 13516bug fix: !quit was not stopping animation and vibration 13517bug fix: slowed zoomTo in Java version of 13.1.9 13518bug fix: PDB occupancies for first atoms may be 0.0 instead of 1.0 (broken in 11.7) 13519bug fix: select *W does not work 13520bug fix: setEllipsoid... options not implemented for nonthermal ellipsoids in 13.0 or 13.1 13521bug fix: nonthermal ellipsoids broken in 13.1. 13522 13523JavaScript: !quit and navigation enabled 13524JavaScript: script queue enabled 13525JavaScript: move thread implemented; needs navigation threads 13526 13527code: JmolApplet0_Navigate.jar and JmolApplet0_Parallel.jar added 13528code: Navigator separated from TransformManager11 13529code: TransformManager10 removed 13530code: TransformManager11 combined with TransformManager 13531 13532 13533============================================================================= 13534 13535version=13.1.9 13536 13537new feature: MO or (ISOSURFACE MO) DENSITY 13538 -- electron density 13539 -- same as MO [1] SQUARED 13540new feature: MO HOMO|LUMO|NEXT|PREV|[c1 n2 c2 n2...] SQUARED 13541 -- Squares wave functions as it combines them. 13542 -- That is, displays the collective electron density (if occupied) 13543 -- if [...] is not given, groups orbitals by energy 13544 -- examples: 13545 load c6h6.smol;mo homo squared // displays symmetric squared sum of two degenerate orbitals 13546 load co2.smol; mo homo squared // displays cylindrical electron density 13547 mo next squared // lumo, provided homo was just displayed 13548 13549bug fix: Molden reader tweaks 13550bug fix: Jmol application toolbar picking tool should not select none 13551bug fix: ellipsoid rendering fails 13552bug fix: translucent echo oddities in Jmol 13.1.8 13553bug fix: lost volume rendering in 13.1.8 13554bug fix: CASTEP density reader fails to reset origin to 0 0 0 in mapping 13555bug fix: UTF files with BOM (byte order marker) present not read correctly 13556bug fix: UTF files within GZIP or ZIP files not read correctly 13557bug fix: set picking draw no longer works in Jmol 13.0 or 13.1 13558bug fix: translucent echo backgrounds lost in 13.1.8 13559bug fix: select resno=@{n+3} fails in 12.2, 13.0, and 13.1 13560bug fix: isosurface AtomicOrbital broken in 13.1.8 13561 13562JavaScript: removing ambiguity in AtomObject in setColix(short, int, int) and (int, short, int) 13563JavaScript: binary Spartan SMOL reader enabled 13564 - nice IEEE calculator: http://www.merlyn.demon.co.uk/js-exact.htm#DW4 13565JavaScript: delay, hover, animation, vibration, moveto, spin, timeout 13566JavaScript: full binary loading for JavaScript -- tested only in Firefox, but specifically 13567 designed for Chrome's insistence that synchronized AJAX processes must not be binary 13568JavaScript: base64 translation of encoded binary strings from JS file reading 13569 prefix: ";base64," initiates decoding. 13570JavaScript: com.json JSON package removed due to licensing issues 13571JavaScript: JSmol -- all references to InputStream.read(byte[]) --> InputStream.read(byte[], 0, len) 13572 to speed file reading processing 13573JavaScript: JSmol -- float[].clone(), int[].clone() not supported in Java2Script 13574JavaScript: java.text.DateFormat not supported in Java2Script 13575JavaScript: Note -- org.jmol.adapter.smarter.Atom is not fully cloned 13576 (anisoBorU and ellipsoid are not copied 13577 and their values must be considered "final") 13578 13579code: adding quotes to above properties allows them to be used in JavaScript; j2sNative in JmolConstants.java 13580code: refactoring org.jmol.util into org.jmol.io and org.jmol.io2 13581 13582 13583============================================================================= 13584 13585version=13.1.8 13586 13587new feature: much better text rendering using 3-bit translucency 13588 13589bug fix: boundbox $pmeshID, center $pmeshID, and zoomto $pmeshID not implemented 13590bug fix: stronger (bold) frame labels 13591bug fix: no automatic change to bold for antialiasDisplay or PovRAY 13592bug fix: try/catch not working when embedded in another context 13593bug fix: JmolData not producing output for PRINT commands 13594bug fix: JmolData setting haveDisplay true, then failing to get mouse manager 13595bug fix: MRC file reader not setting default cutoff correctly 13596bug fix: (13.1 only) MRC/DNS6 file readers fail 13597bug fix: MRC surface file reader with symmetry error 13598bug fix: (13.1 only) minimization broken 13599 13600code: clearing font cache upon zap. 13601code: HTML5-only JavaScript full text working 13602code: HTML5-only JavaScript version working 13603 13604============================================================================= 13605 13606version=13.1.7 13607 13608FEATURE CHANGE: getProperty isosurfaceInfo no longer returns vertex data 13609 13610new feature: getProperty isosurfaceData returns vertex data 13611new feature: set cartoonFancy -- creates elliptical ribbon for cartoons 13612 -- if ribbonAspectRatio is its default value of 16, it is reset to 4 while cartoonFancy = true. 13613 13614bug fix: (13.1 only) reading of states with select BONDS fails to select bonds broken in 13.1.6 13615bug fix: (13.1 only) centered/right-aligned text only aligned after first line 13616bug fix: export WRL missing various objects requiring transformMatrixInv 13617bug fix: export may be missing protein cartoon turn 13618bug fix: set ribbonAspectRatio improperly widens ribbon 13619bug fix: zShadePower should not be static (affecting all applets/Jmol application frames) 13620bug fix: write OBJ xxx.obj not working (but write xxx.obj is fine) 13621bug fix: cartoons (with hermiteLevel > 1) adjusted to have smooth 13622 normals between segments (Alexander Rose) 13623 also, hermiteLevel >= 6 now gives ellipse cross-section 13624 recommended settings: set hermiteLevel 6;set ribbonAspectRatio 4 13625bug fix: JmolControls.js had broken radio buttons 13626bug fix: DRAW {x y z} "title" can fail in multimodel cases with translucency 13627 13628============================================================================= 13629 13630version=13.1.6 13631 13632new feature: showTiming 13633 13634new feature: CIF reader reads assembly information 13635 -- load =1vif.cif filter "ASSEMBLY 1" 13636 -- load =1vif.cif filter "ASSEMBLY 1;$A" # just label_asym_id A 13637 -- load =1vif.cif filter "ASSEMBLY 1;!$C" # just label_asym_id values not C 13638new feature: LOAD "xxx.cif" APPEND "appendedData" @x 13639 -- specifically for CIF files, reads a CIF file, appending string in variable 13640 -- intentionally not documented. 13641 -- feature particularly for RCSB (John Westbrook), so, for example: 13642 13643 Var x = load("test.txt") 13644 load "1vif-early.cif" append "appendedData" @x FILTER "assembly 1;$A" 13645 13646 -- or in one line: 13647 load "1vif-early.cif" append "appendedData" @{load("test.txt")} FILTER "assembly 1;$A" 13648 13649_pdbx_struct_assembly_gen.assembly_id 1 13650_pdbx_struct_assembly_gen.oper_expression 1,2,3,4 13651_pdbx_struct_assembly_gen.asym_id_list A,B,C 13652# 13653loop_ 13654_pdbx_struct_oper_list.id 13655_pdbx_struct_oper_list.symmetry_operation 136561 x,y,z 136572 y,x,-z+1 136583 -x+1,-y+1,z 136594 -y+1,-x+1,-z+1 13660# 13661 13662new feature: LOAD "xxx.cif" APPEND DATA "appendedData" .... end "appendedData" 13663 -- specifically for CIF files, reads a CIF file, appending string in lines of script 13664 -- intentionally not documented 13665 -- most important for saving the state: 13666 13667load "1vif-early.cif" append data "appendedData" 13668_pdbx_struct_assembly_gen.assembly_id 1 13669_pdbx_struct_assembly_gen.oper_expression 1,2,3,4 13670_pdbx_struct_assembly_gen.asym_id_list A,B,C 13671# 13672loop_ 13673_pdbx_struct_oper_list.id 13674_pdbx_struct_oper_list.symmetry_operation 136751 x,y,z 136762 y,x,-z+1 136773 -x+1,-y+1,z 136784 -y+1,-x+1,-z+1 13679# 13680end "appendedData" FILTER "assembly 1;$A" 13681 13682 -- option reserved to allow different data names for different purposes 13683 -- not general yet -- specific to CIF reader. 13684 13685bug fix: PDB 4B2Q, with faulty (incomplete) REMARK 350 not read 13686 13687code: successfully refactored for JavaScript 13688 (see http://chemapps.stolaf.edu/jmol/jsmol-10-1/jsmol2.htm) 13689 -- note that all code development is done in Jmol, then 13690 Java src code is transferred to JSmol project 13691 13692 -- adding: 13693 javax.util.BitSet 13694 javax.util.StringXBuilder 13695 -- streamlining: 13696 javax.vecmath... 13697 -- removed all references to StringBuffer 13698 -- StringXBuilder allows optimization of performance in JavaScript 13699 -- workaround for Java2Script compiler bug setting "char x;" to 0 13700 -- Java2Script compiler is not distinguishing int[] from float[] when creating the array 13701 -- StringXBuilder takes care of adding ".0" to floats and doubles, but 13702 we need to be on the lookout for not places where we are constructing 13703 a string where the difference between an int and a float is significant. 13704 -- optimize class hierarchy return by cataloging classes 13705 as org_jmol_xxxx in addition to org.jmol.xxxx 13706 -- tie in graphics on JavaScript side 13707 -- add fonts 13708 -- add "billboard" objects such as labels, 3D echos, etc. 13709 -- add 2D echos 13710 -- ultimately write an asynchronous version of JSmol 13711 13712code: org.jmol.jvxl.readers classes accessed reflexively (for JavaScript optimization) 13713code: JSmol classes incorporated into Jmol code -- org.jmol.awtjs, org.jmol.appletjs, org.jmol.exportjs 13714code: refactored for JavaScript (mostly removing ambiguity in method names) 13715 13716 13717============================================================================= 13718 13719version=13.1.5 13720 13721bug fix: CASTEP PHONON files not loading 13722 13723code: refactored for JavaScript 13724 13725============================================================================= 13726 13727version=13.1.4 13728 13729new feature: ISOSURFACE PLANE ... MAP ... LATTICE {i j k} [volume data] 13730 -- allows periodic volume data to be mapped to a plane 13731 based on a specified translational lattice 13732 -- for example: isosurface plane x=2 map LATTICE {1 2 2} "data.dat" 13733 13734new feature: POLYHEDRA {atom1} to {atoms_including_atom1} 13735 -- polyhedra with or without central atom, but with a reference atom 13736 13737bug fix: translate selected x ... bug 13738 13739bug fix: ISOSURFACE saving in state broken 7/30/12 in 13.0.RC3 13740bug fix: simple isosurface PLANE not saved in state 13741bug fix: isosurface command with MAP from state when saved to state may fail 13742bug fix: 13.1.2 offsets label positions incorrectly 13743 13744code: refactored for JavaScript 13745 13746============================================================================= 13747 13748version=13.1.3 13749 13750bug fix: 13.1.2 breaks loading of ZIP files 13751bug fix: CUBE reader reading atom Z numbers as partial charge 13752bug fix: 13.1.2 breaks LOAD ? 13753 13754============================================================================= 13755 13756version=13.1.2 13757 13758new feature: cache ADD "filename" 13759 -- adds a file into the memory cache as a set of bytes 13760new feature: cache REMOVE "filename"|ALL 13761 -- removes a file from the cache 13762new feature: show cache 13763 -- displays the cache as an array 13764new feature: cache() function 13765 -- returns the cache as an associative array {filename: nBytes, filename: nbytes,...} 13766new feature: write INLINE "xxxx" "filename" 13767 for example: write INLINE "testing" "myfile.txt" 13768 for example: write INLINE @{load("$caffeine")} "caffeine.mol" 13769new feature: set defaultDropScript for drag-drop and File|Open 13770 13771bug fix: translate x 0 does not recenter the model in the window 13772bug fix: PDB polymers of length 1 allow size to be set and appear {visible} but are not 13773bug fix: OPEN dialog doesn't allow for no PDB cartoons. 13774bug fix: open dialog for 1-residue PDB files does not show atoms. 13775bug fix: pngj storage of Spartan directory zip files or Spartan directories cannot be read 13776 because the PNGJ files created do not contain the necessary files from the directory 13777 13778code: (JmolViewer) public void cacheFile(String fileName, byte[] bytes) 13779 -- allows a mechanism for applets or embedding apps to deliver file content as bytes 13780 -- for applets, first getPropertyAsJavaObject("Viewer") 13781code: refactored for Java2Script due to inner class bug there. 13782 13783============================================================================= 13784 13785version=13.0.1 13786 13787APPLET: 13788-- a new OOP JavaScript interface (Jmol-JSO) 13789 allowing nonJava options such as ChemDoodle and GLmol 13790 as well as JME/JSpecView connectivity 13791-- JmolData full "headless" operation for server-side processing 13792 13793BIOPHYSICS: 13794-- COMPARE command 13795 13796FILE READING: 13797-- reading of JCAMP-DX files having structure/spectra assignment data 13798 using ##$MODELS and ##$PEAKS (see http://chemapps.stolaf.edu/jmol/jspecview) 13799-- Gaussian log reading of Natural Transition Orbitals 13800-- automatic PNGJ file caching for immensely faster loading of PNGJ files from remote servers 13801 13802FILE WRITING: 13803-- write PNGJ files encapsulate all model file data into one PNG file 13804-- write image 400 400 PNGJ "http://....." POSTs JMOL or IMAGE or structure to a server as application/octet-stream 13805-- write MOL adds partial charge data as > <JMOL_PARTIAL_CHARGES> in SDF format 13806-- multiple-scene PNGJ files allowing minimal or full data loading and scripted animations 13807 13808ISOSURFACES: 13809-- isosurface caching 13810-- isosurface MOVE [[...matrix4f...]] moves/rotates an isosurface (for the state) 13811 13812MINIMIZATION: 13813-- MMFF94/UFF minimization and energy calculation 13814 13815MOLECULAR DATA: 13816-- show CHEMICAL 13817-- show NMR 13818 13819MOLECULAR PLAYGROUND: 13820-- MolecularPlayground -- remote status and remote control 13821 13822SOLID-STATE PHYSICS: 13823-- solid state physics support 13824 13825SPECTROSCOPY: 13826-- integration of JSpecView into Jmol, including 2D spectral display and manipulation 13827 13828STRUCTURE SEARCHING: 13829-- extended Jmol SMARTS searching 13830-- PubChem search for name (which can be a CAS number), cid, or SMILES using ":" 13831 13832============================================================================= 13833 13834version=13.0.RC7_dev 13835 13836bug fix: isosurface CAVITY not saved in state 13837 13838============================================================================= 13839 13840version=13.0.RC6 13841 13842bug fix: isosurface CAVITY not saved in state 13843bug fix: Gaussian reader not reading "AO basis set in the form of general basis input" properly ("Gen" keyword) 13844bug fix: Gaussian reader not reading "7D 0" correctly 13845bug fix: Trajectories still broken for PDB files 13846 13847code: all import foo.*; removed, specified 13848 13849============================================================================= 13850 13851version=13.0.RC5 13852 13853bug fix: broke trajectories in 13.0.RC4 13854 13855============================================================================= 13856 13857version=13.0.RC4 13858 13859new feature: write SCENE PNG|PNGJ "xxxx.spt" option to create PNG or PNGJ files (same file, just different extension) 13860new feature: "menu" as sole contents of a script pops up the context menu 13861 -- joins category of special commands, including "exit" "pause" and "quit" 13862 13863bug fix: load append TRAJECTORY (upper case) fails 13864bug fix: load append trajectory "$mannose" fails (loads two models) 13865bug fix: load trajectory "maleic.cif" fails with cryptic error message (not appropriate for trajectory loading) 13866bug fix: undocumented and inaccurate CALCULATE VOLUME removed 13867 13868============================================================================= 13869 13870version=13.0.RC3 13871 13872new feature: automatic PNGJ file caching for immensely faster loading 13873new feature: write MOL adds partial charge data as > <JMOL_PARTIAL_CHARGES> in SDF format 13874new feature: isosurface CACHE <surface creation parameters> .... 13875 -- parameter CACHE along with isosurface creation or alone instructs Jmol to 13876 immediately create JVXL data for the specified surface and to load that data instead. 13877 The surface remains in memory (in this version of Jmol) can can be used again 13878 using cache://isosurface_<ID> where <ID> is the isosurface ID such as "isosurface1". 13879 -- The command ISOSURFACE CACHE alone will cache the current isosurface 13880 -- If the cache is no longer needed, then RESET CACHE will release the memory used to hold the JVXL data for the isosurface 13881 -- The result should be essentially equivalent to the original command. 13882 (It is recommended that the original be a relatively simple command, because not all nuances 13883 of an isosurface may be stored in the JVXL data.) 13884 -- THIS OPTION IS NOT COMPATIBLE WITH SAVING THE STATE AS AN SPT FILE. 13885 -- Instead, one needs to save the state in PNGJ or JMOL format, where the cached isosurface 13886 can be reloaded from a file saved in the PNGJ or JMOL zip directory 13887 13888bug fix: load a model, then load append TRAJECTORY -- will fail 13889bug fix: load APPEND xxx where xxx is FILE, INLINE, SMILES, TRAJECTORY, MODEL 13890 all save incorrect LOAD command in state 13891bug fix: shelx reader (.res) not assigning space group name or applying normalization 13892 13893============================================================================= 13894 13895version=13.0.RC2 13896 13897bug fix: isosurface molecular producing artifacts 13898bug fix: isosurface select {...} molecular not excluding all other atoms for troughs 13899new feature: Gaussian log reading of Natural Transition Orbitals 13900new feature: isosurface MOVE [[...matrix4f...]] moves/rotates an isosurface (for the state) 13901 13902bug fix: isosurface moved by atom connection not saved correctly in state 13903bug fix: isosurface SET n not read properly from JVXL file. 13904ant fix: changing the way Jmol.properties is handled vis-a-vis # and underscores 13905bug fix: isosurface SOLVENT producing artifacts --- needed minimum resolution 13906bug fix: isosurface with selected set not delivering just those vertices for within distance calc 13907bug fix: isosurface CONNECT in documentation but never implemented 13908bug fix: isosurface SET n not saved in state or JVXL file. 13909bug fix: Gaussian reader fails for 2-digit basis orbital names such as "12XX" 13910bug fix: PNGJ creation not handling same-file or same-name issues. 13911bug fix: isosurface SOLVENT producing cavity-like artifacts 13912bug fix: SCENE writing with toggle (pause scene 2 ... pause scene 2) in error 13913bug fix: SCENE min spt script needs wrapping by pathForAllFiles 13914bug fix: isosurface MINSET or SET not compatible with SLAB 13915bug fix: show $d1 where d1 is a DRAW object broken 13916bug fix: calculate hydrogens incorrect for proteins 13917 13918============================================================================= 13919 13920version=13.0.RC1 13921 13922-- a new OOP JavaScript interface allowing nonJava options and JME/JSpecView connectivity 13923-- MMFF94/UFF minimization and energy calculation 13924-- integration of JSpecView into Jmol, including 2D spectral display and manipulation 13925-- reading of JCAMP-DX files having structure/spectra assignment data 13926 ##$MODELS and ##$PEAKS (see http://chemapps.stolaf.edu/jmol/jspecview) 13927-- multiple-scene PNGJ files allowing minimal or full data loading and scripted animations 13928-- write PNGJ files encapsulate all model file data into one PNG file 13929-- extended Jmol SMARTS searching 13930-- show CHEMICAL 13931-- show NMR 13932-- solid state physics support 13933-- MolecularPlayground -- remote status and remote control 13934-- COMPARE command 13935-- JmolData full "headless" operation for server-side processing 13936-- PubChem search for name (which can be a CAS number), cid, or SMILES using ":" 13937-- isosurface caching 13938-- write image 400 400 PNGJ "http://....." POSTs JMOL or IMAGE or structure to a server as application/octet-stream 13939 13940============================================================================= 13941 13942version=12.3.33 (13.0.RC1) 13943 13944new feature: full JSpecView support for NMR 13945 -- integration, peak listing, measurements 13946 -- printing with peak measurements 13947new feature: measure(a b "minArray") 13948 -- measures minimum distance from atom set a to atom set b atom by atom 13949 -- return array with number of elements corresponding to the number of selected atoms 13950 -- for example: {1.1}.property_distTo12 = measure({1.1}, {1.2} "minArray"); color property_distTo12 13951new feature: {x}.property_d = [....] 13952 -- allows for [....] to have length of the number of atoms in {x} 13953 in which case the values are assigned on a 1:1 basis 13954new feature: PDB reader reads gromacs-created "pdb_wide_format" files 13955 and also automatically reads PQR based on gromacs REMARK 13956 13957bug fix: select within(1.0, withinallmodels, 1.1) and 1.2 causes exception 13958bug fix: script xxx(yyy).spt broken 13959 13960============================================================================= 13961 13962version=12.3.32 13963 13964FEATURE CHANGE: LOAD "myfile.xxx" with no additional parameters 13965 where xxx is "png" or "pngj" or "spt" 13966 now assumes these are scripts and runs SCRIPT "myfile.spt" instead 13967 13968new feature: write SCENE "xxxx.spt" 13969 -- creates pngj files 13970 -- using "xxxx.png" will STILL USE "xxxx.spt" but will create PNGJ files with ".png" extensions 13971 -- scene creation with linked PNGJ files 13972 -- xxxx.spt should include "pause scene n" commands, which are then 13973 used to separate the script into separate scenes. "n" must be an integer. 13974 -- Two files are created for each scene (pngj unles: 13975 xxxx_scene_n.min.pngj very small; does not contain anything more than 13976 an image, JmolManifest.spt, and scene.spt 13977 xxxx_scene_n.all.pngj adds all necessary files, plus script.spt 13978 -- Either of these files can be used, but if x.min.pngj is used, 13979 then x.all.pngj needs to be present as well in the same directory. 13980 13981new feature: drawHover displays ID for isosurface and reports to hoverCallback 13982new feature: load "$$xxxxx" loads 2D version, not 3D (used for JmolData connection with JME) 13983 -- basically, use of two $ signs results in drop of "&get3d=True" from NCI call 13984 13985bug fix: compiler not synchronized; allows jmolEvaluate() to fail if two threads access it simultaneously 13986bug fix: getproperty isosurface after a "no-surface" isosurface call like load $water;isosurface sasurface fails 13987bug fix: color for hbonds/ssbonds backbone incorrect 13988 13989============================================================================= 13990 13991version=12.3.31 13992 13993bug fix: isosurface plane ... within ... map ... fails 13994bug fix: write broken in 12.3.30 13995 13996============================================================================= 13997 13998version=12.3.30 13999 14000new feature: atom properties sx, sy, sz, and sxyz -- screen coordinates 14001new feature: app flag -r restricts file access 14002 -- like -R, but allows reading of ".spt" files 14003new feature: load("http://.....?POST?_PNGJBIN_") 14004 -- accompanies load("http://....?POST?_PNG_") and load("http://....?POST?_PNGJ_") 14005 -- sends PNGJ image to server as byte array instead of as application/octet-stream 14006 instead of Base64-encoded string and application/x-www-form-urlencoded 14007 -- return value is whatever server is set up to send 14008new feature: select within(distance, $drawID) 14009 14010bug fix: isosurface plane... map property temperature not working 14011bug fix: PNG files written by Jmol from 12.3.7 - 12.3.29 have incorrect 14012 checksum. Browsers do not seem to care, but Java does 14013 when loading a background image in Jmol! 14014bug fix: background image NONE fails 14015bug fix: if(...) statement (no braces) broken in 12.3.21 14016 14017============================================================================= 14018 14019version=12.3.29 14020 14021new feature: (JmolCore.js/JmolApplet.js/JmolCD.js/JmolApi.js) 14022 -- changes "useChemDoodleOnly" to "disableJmol" 14023 in preparation for non-ChemDoodle plug-ins similar to JmolCD.js 14024 -- allows for default values for Info 14025 -- adds Info.src 14026 -- similar to src in an <image src="xxx.png" /> tag 14027 -- turned into LOAD "xxx.png" 14028 -- more efficient coding 14029new feature: set MESHSCALE (default 1) also allows isosurface/mo mesh scaling 14030 -- was DOTSCALE in 12.3.26, but that is not appropriate 14031new feature: Mopac archive reader, including internal coord. defs 14032 -- use FILTER "NOCENTER" to NOT center atoms in unit cell 14033 -- use CENTROID for complete molecules with centroids within unit cell 14034 -- use PACKED CENTROID for complete molecules with any atoms within unit cell 14035 -- properties stored in auxiliaryInfo 14036 use getProperty auxiliaryInfo or x = getProperty("auxiliaryInfo".foo) to retrieve 14037new feature: set pathForAllFiles "..." 14038 -- all files, local or remote, will be taken from the indicated path 14039 -- the indicated path may be a zip file entry (ending with "|") 14040 -- automatically reset to '' in case of an unrecoverable error in execution 14041 -- used for creating JMOL files containing user scripts instead of a state 14042 -- disallows all writing and image creation 14043 -- scripts including prompts to read wildcard files (for example, "load ?") 14044 will still prompt for those and read them properly 14045new feature: write SCRIPT ["scriptFileName", "filename2","filename3",...] PNGJ|JMOL... 14046 -- syntax is WRITE SCRIPT followed by an array of file names 14047 then whatever else is necessary to create the PNGJ or JMOL file 14048 -- for example: write script ["wind.spt"] test.jmol 14049 -- Creates a single PNGJ or JMOL file that instead of containing the state 14050 contains the script and additional files listed by the user. 14051 The first script is run, and it is presumed that the other files are 14052 needed for full execution of that script. 14053 -- Allows for creating PNGJ and JMOL files that run as animations, not just final states. 14054 -- Jmol will automatically add any files current to the state, 14055 but other files not indicated by the state (script files especially) 14056 required for the script to run need to be indicated by the user. 14057 -- When the script is executed, pathForAllFiles is set to the zip file 14058 itself. Thus, even scripts containing references such as "script2.spt" or "=xxxx" 14059 can be run, provided the user supplies script2.spt xxxx.pdb.gz as one of the required filenames. 14060 -- Note that if a file is saved locally using LOAD =xxxx AS t.pdb, Jmol will automatically use 14061 the local file reference to t.pdb, not the RCSB reference. 14062 -- If the file is loaded using only LOAD =xxxx, then Jmol will reload the 14063 remote file and store it in the PNGJ/JMOL file as xxxx.pdb.gz. 14064 14065bug fix: Jmol 12.3.28 breaks writing JMOL/PNGJ files 14066 -- Jmol 12.3.28 release DELETED 14067bug fix: modelkit mode creating atoms after load "@x" fails 14068bug fix: script javascript:xxxx() broken for Jmol object javascript 14069bug fix: JmolCore.js fix for getPropertyAsArray 14070bug fix: draw arrows not adjustable using set picking draw 14071bug fix: Exception for select within(molecule,...) when atoms have been deleted 14072 14073============================================================================= 14074 14075version=12.3.28 14076 14077DELETED 6/10/2012 due to breaking of JMOL/PNGJ format 14078 14079new feature: isosurface ... map PERIODIC ... 14080 -- allows mapping grid-based data beyond the unit cell defining its grid 14081new feature: write VIBRATION n 14082 -- writes 20 * n frames 14083 -- n periods 14084 -- some issues with first frame and value of n 14085new feature: load PACKED CENTROID 14086 -- only complete molecules having one or more atoms within or on the face of the unit cell 14087 -- may not preserve # of atoms of unit cell 14088 -- reverts to simple PACKED if this is a single-molecule solid (such as diamond) 14089new feature: unitcell $isosurfaceID 14090new feature: unitcell [{center}, {a}, {b}, {c}] 14091 -- sets unit cell for current model only 14092new feature: "plot data" command by itself opens a new frame with just one atom in it, at (0,0,0) 14093new feature: isosurface SLAB BRILLOUIN (or WIGNERSEITZ) 14094 -- transposes an isosurface into the Brillouin-zone/Wigner-Seitz unit cell 14095 -- based on the isosurface's vectors if there is no unit cell for this model. 14096 -- for creating isosurfaces of Fermi surfaces 14097 14098bug fix: LOAD with SPACEGROUP or RANGE or UNITCELL should default to {555 555 -1} (packed) lattice 14099bug fix: JVXL reading of mapped data does not use file's rendering option for lighting 14100bug fix: default measure dotted lines are too thin for export 14101bug fix: measures not offset correctly when given width in line. 14102 14103============================================================================= 14104 14105version=12.3.27 14106 14107new feature: [menu] vibration [*,/] 2 14108new feature: XSF isosurface reader 14109new feature: load CENTROID 14110 -- only complete molecules having centroid in unit cell 14111 -- preserves # of atoms of unit cell 14112 14113bug fix: write PNGJ broken in 12.3.26 14114bug fix: 12.3.26 breaks Jmol/JspecView connection 14115bug fix: draw pointgroup scale x.x -- changing x.x does not revise point group 14116bug fix: reading of JVXL-version 1 (nonXML) files does not display colors 14117bug fix: translate y 10 works, but translate Y 10 does not 14118 14119============================================================================= 14120 14121version=12.3.26 14122 14123new feature: Jmol SMARTS searching can include full Jmol selection syntax within 14124 an atom primitive using the "atomType" option and "select:": 14125 14126 load caffeine.xyz 14127 print {*}.find('{c}$(select _N and connected(2, _C))') 14128 14129new feature: model ID "xxx" (or frame ID....) 14130 -- sets the model's ID to "xxx" 14131 -- can be used to switch to that model using model "xxx" 14132 -- can be targeted file-specifically using "filename#xxx" 14133 -- if two models have the same ID and no filename is given, 14134 then the first model found becomes the current model 14135 -- used for correlating non-Jmol synced applets 14136new feature: script "t.spt"(...variables...) 14137 -- quotes are optional if file name does not include " " or "(" 14138 -- "script" is optional if file name is quoted or ends with ".spt" 14139 -- allows passing variables to a script much like a function call 14140 -- variables will be in VAR named "_arguments" within that script (like JavaScript) 14141 -- _arguments, like all arrays in Jmol, is 1-based, 0-terminated (unlike JavaScript) 14142 -- _arguments is unsettable by the user 14143 -- for standard script functions, _arguments will be [] 14144 14145 -- for example, if test.spt is simply "show _arguments", then 14146 load $caffeine 14147 test.spt({*}, {*}.xyz ,35, [1,2,3,4]) 14148 14149will output: 14150 14151 _arguments = [({0:23}),{-0.086670786 -0.02787502 5.6667876E-4},35,[1,2,3,4]] 14152 14153new feature: set forcefield "UFF" or "MMFF" 14154 -- default is MMFF 14155 -- automatically switches to UFF if atom types cannot be set 14156 -- minimizationCallback reports actual force field used 14157 14158new feature: set energyUnits kJ|kcal 14159new feature: antialiased display and image creation uses larger mesh scaling for cleaner look 14160 14161code: adding empirical rules to MMFF94 calculation 14162 14163checkmm.spt;checkAllEnergies 14164 14165checking calculated energies for 761 models 141661 COMKAQ E= -7.3250003 Eref= -7.6177 diff= 0.2926998 141672 DUVHUX10 E= 64.759995 Eref= 64.082855 diff= 0.6771393 141683 FORJIF E= 35.978 Eref= 35.833878 diff= 0.14412308 141694 JADLIJ E= 25.104 Eref= 24.7038 diff= 0.4001999 141705 PHOSLA10 E= 111.232994 Eref= 112.07078 diff= 0.8377838 141716 PHOSLB10 E= -93.479004 Eref= -92.64081 diff= 0.8381958 14172 14173for 761 atoms, 6 have energy differences outside the range -0.1 to 0.1 14174with a standard deviation of 0.05309403 14175 14176bug fix: nested SMARTS strings can give incorrect response 14177load data "mol" 14178C:/jmol-dev/bobtest/t6.mol 14179__Jmol-12_05191218593D 1 1.00000 0.00000 0 14180Jmol version 12.3.26 2012-05-19 18:34 EXTRACT: ({0 3 4}) 14181 3 2 0 0 0 0 1 V2000 14182 2.89480 4.81990 0.01710 N 0 0 0 0 0 0 14183 3.52580 2.75730 -0.17290 N 0 0 0 0 0 0 14184 3.94370 4.03730 -0.25710 C 0 0 0 0 0 0 14185 1 3 2 0 0 0 14186 2 3 1 0 0 0 14187M END 14188end "mol" 14189select search("$([#7][#6]([#7&!$([#7][O])])=[#7])") 14190show selected 14191 was returning 1 atom, but should be 0 (because there are only two N atoms!) 14192bug fix: measurementUnits = "au" does not work 14193bug fix: select 1.0 fails 14194bug fix: COMPARE broken 14195bug fix: Writing file into .jmol file after reading it from another results in the whole 14196 zip file being copied into the new .jmol file. 14197 14198 14199============================================================================= 14200 14201version=12.3.25 14202 14203new feature: MMFF94 single point energy calculation and minimization 14204 set forcefield "MMFF" 14205 checkmm.spt 14206 checkmm "AMHTAR01";minimize energy 14207 AMHTAR01 Initial E = 66.180 kcal/mol # should be 66.18011 14208 checkmm "ARGIND11";minimize energy 14209 ARGIND11 Initial E = -207.436 kcal/mol # should be -207.43598 14210 14211validation complete. The following 13 structures (of 761) do not validate to within 0.1 kcal/mol 14212 142131 COMKAQ E= -7.3250003 Eref= -7.6177 diff= 0.2926998 14214 -- MMFF94 ignores 1 of 5-membered ring torsions for a 1-oxo-2-oxa-bicyclo[3.2.0]heptane 14215 -- MMFF94_bmin.log: WARNING - Conformational Energies May Not Be Accurate 14216 142172 DUVHUX10 E= 64.759995 Eref= 64.082855 diff= 0.6771393 14218 -- MMFF94 ignores 5-membered ring issue for S-S-containing ring 14219 -- MMFF94_bmin.log: WARNING - Conformational Energies May Not Be Accurate 14220 142213 FORJIF E= 35.978 Eref= 35.833878 diff= 0.14412308 14222 -- MMFF94 uses some sort of undocumented empirical rule used for 1 torsion not found in tables 14223 -- MMFF94_bmin.log: WARNING - Conformational Energies May Not Be Accurate 14224 142254 JADLIJ E= 25.104 Eref= 24.7038 diff= 0.4001999 14226 -- ignores 5-membered ring for S (note, however, this is not the case in BODKOU) 14227 -- MMFF94_bmin.log: WARNING - Conformational Energies May Not Be Accurate 14228 142295 KEPKIZ E= 61.127 Eref= 61.816277 diff= 0.68927765 14230 -- MMFF94 requires empirical rule parameters 14231 -- MMFF94_bmin.log: WARNING - Conformational Energies May Not Be Accurate 14232 142336 PHOSLA10 E= 111.232994 Eref= 112.07078 diff= 0.8377838 14234 -- MMFF94 ignores all 5-membered ring torsions in ring with P 14235 -- (note, however, this is not the case in CUVGAB) 14236 -- MMFF94_bmin.log: WARNING - Conformational Energies May Not Be Accurate 14237 142387 PHOSLB10 E= -93.479004 Eref= -92.64081 diff= 0.8381958 14239 -- MMFF94 ignores all 5-membered ring torsions in ring with P 14240 -- (note, however, this is not the case in CUVGAB) 14241 -- MMFF94_bmin.log: WARNING - Conformational Energies May Not Be Accurate 14242 14243empirical-rule-requiring models: (all are nonaromatic heterocycles) 14244 142458 ERULE_01 E= -22.582 Eref= -21.515108 diff= 1.0668926 142469 ERULE_02 E= 29.407999 Eref= 29.799572 diff= 0.39157295 1424710 ERULE_03 E= -3.326 Eref= -2.9351802 diff= 0.3908198 1424811 ERULE_04 E= -2.572 Eref= -2.31007 diff= 0.26193 1424912 ERULE_07 E= 2.873 Eref= 3.16775 diff= 0.29474998 (fixed in 123.3.26 by correcting angle calc) 1425013 ERULE_08 E= 33.734 Eref= 34.41382 diff= 0.6798172 14251 14252 14253bug fix: compare {22-31} {7-16} subset {*.ca} should work without ATOMSET next 14254bug fix: compare {22-31} {7-16} should work, using {spine} as default 14255bug fix: isosurface molecular for certain flat models will fail to cap H atoms 14256bug fix: calculate partial charge fails after model kit changes 14257 (because Bond[] bonds field not cleaned 14258bug fix: dipole command fails after model kit changes 14259 14260code: refactoring of minimize for generalization 14261 14262============================================================================= 14263 14264version=12.3.24 14265 14266new feature: SMARTS search for atom type using quotes: ["37"]-["58"] 14267new feature: SMARTS option /aromaticdouble/ allows distinguishing between aromatic single and double bonds 14268new feature; SMARTS option /aromaticstrict/ checks 6-electron rule for aromatics 14269new feature: CALCULATE partialCharge does MMFF94 charge calculation 14270 -- all atom types validated 14271 -- charge values validated to +- 0.001001 over the 761-atom dative validation set 14272new feature: isosurface CACHE 14273 -- creates a JVXL version of the surface (possibly outside of Jmol, but that's not implemented yet) 14274 -- saved by write JMOL as a JVXL file "isosurface_ID" 14275 (where ID is the original isosurface ID) within the JMOL zip collection 14276 -- Warning! not saved using write SPT 14277 ***ALWAYS*** use write JMOL or write PNGJ after using the CACHE option, not write SPT 14278 -- invoked by isosurface file "cache://isosurface_ID" 14279 -- cleared by reset CACHE 14280 -- allows rapid recreation of an isosurface across file loads 14281 -- possibly limited to a subset of surface types 14282 -- not fully tested 14283 14284new feature: write ... "http://....." 14285 -- POSTs JMOL or IMAGE or structure or whatever to a server as application/octet-stream 14286 -- to be used in Proteopedia for saving a fully self-contained state 14287 14288new feature: load filter "CENTER" -- centers models on the first model as they are loaded 14289new feature: load filter "NAME=..." -- loads only those models with a name that contains ... 14290new feature: calculate partialcharge 14291 -- works on currently selected set of atoms 14292 -- uses MMFF94 charge calculation (unverified; most certainly not quite correct) 14293 -- preliminary only; working on validation 14294 14295bug fix: x = {"c1": 3}; if(x["c1"]) should return TRUE 14296code: Simple way to assign MMFF94 atom types and partial charges 14297-- N,S-containing compounds not validated; CHO-containing compounds partially validated 14298bug fix: MOL2 reader assuming PDB for non-PDB format files (such as MMFF94-dative.mol2) 14299bug fix: label %W not working properly for non-PDB files 14300bug fix: write MOL does not save partial-single bond as type 8 ("ANY") 14301bug fix: set echo IMAGE fails (since 12.3.20) 14302 14303code: (applet) JmolCore.js free of need for JSON 14304 14305============================================================================= 14306 14307version=12.3.23 14308 14309new feature: (applet) new interface for Jmol as an HTML object as well as full support on all platforms 14310 using a ChemDoodle fall-back option for Java/Applet-challenged platforms (iPad,iPhone,Android) 14311 14312 Note that Jmol.js is no longer required, but not all of the features of Jmol.js are in place yet 14313 14314 allows Jmol applets to be created on a page with more flexibility and extendability 14315 possibly using infrastructure of ChemDoodle for multiplatform doodlable structures 14316 14317 required/optional libraries (preferably in the following order): 14318 14319 jQuery.min.js -- required for ChemDoodle or any server-based options 14320 gl-matrix-min.js -- required for ChemDoodle option 14321 mousewheel.js -- required for ChemDoodle option 14322 ChemDoodleWeb.js -- required for ChemDoodle option 14323 JmolCore.js -- required 14324 JmolApplet.js -- required 14325 JmolCD.js -- required for ChemDoodle option 14326 JmolApi.js -- required 14327 14328 Allows Jmol-like objects to be displayed on Java-challenged (iPad/iPhone) 14329 or applet-challenged (Android/iPhone) platforms, with automatic switching to 14330 whatever is appropriate. You can specify "ChemDoodle-only", "Jmol-only", "Image-only" 14331 or some combination of those -- and of course, you are free to rewrite the logic below! 14332 14333 Allows ChemDoodle-like 3D and 3D-faked 2D canvases that can load files via a privately hosted 14334 server that delivers raw data files rather than specialized JSON mol data. 14335 Access to iChemLabs server is not required for simple file-reading operations and 14336 database access. PubChem and image services are provided by a server-side PHP program 14337 running JmolData.jar with flags -iR (at St. Olaf College). 14338 For your installation, you should consider putting JmolData.jar and jmolcd.php 14339 on your own server. Nothing more than these two files is needed on the server. 14340 14341 The NCI and RCSB databases are accessed via direct AJAX if available (xhr2). 14342 14343new feature: PubChem search for name (which can be a CAS number), cid, or SMILES using ":" 14344 from pubChemFormat = "http://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/%FILE/SDF?record_type=3d"; 14345 (many thanks to Evan Bolton and Paul Thiessen (NIH) for their assistance on this. 14346 load :name:tylenol # or load :tylenol 14347 load :cas:103-90-2 # or load :103-90-2 14348 load :cid:1983 # or load :1983 14349 load :smiles:C/C=C/C 14350 14351bug fix: callback functions for modular calls: applet0.readCallback(....) 14352bug fix: Molden reader problems reading frequencies 14353bug fix: VASP reader with {n n n} and vibration vectors problem 14354bug fix: in 2bat, SIA was considered part of the carbohydrate chain because we were not checking bonding 14355 14356============================================================================= 14357 14358version=12.3.22 14359 14360new feature: Jmol extensions to ChemDoodle allow display of Jmol, ChemDoodle-equivalent (simple model only), 14361 or just an image with server-side JmolData.jar support. 14362 14363 JmolCD.js -- Jmol ChemDoodle extension author: Bob Hanson, hansonr@stolaf.edu 4/16/2012 14364 14365 requires ChemDoodleWeb.js and ChemDoodleWeb-libs.js 14366 prior to JmolCD.js 14367 14368 allows Jmol applets to be created on a page with more flexibility and extendability 14369 using much of the infrastructure of ChemDoodle. 14370 14371 allows Jmol-like objects to be displayed on Java-challenged (iPad/iPhone) 14372 or applet-challenged (Android/iPhone) platforms, with automatic switching to 14373 whatever is appropriate. You can specify "ChemDoodle-only", "Jmol-only", "Image-only" 14374 or some combination of those -- and of course, you are free to rewrite the logic below! 14375 14376 allows ChemDoodle-like 2D and 3D canvases that can load files via a privately hosted 14377 server that delivers raw data files rather than specialized JSON mol data. 14378 access to iChemLabs server is not required for simple file-reading operations and 14379 database access. Database and image services are provided by a server-side PHP program 14380 running JmolData.jar with flags -iR. 14381 14382 In this case, the NCI and RCSB databases are accessed via a St. Olaf College server, 14383 but for your installation, you should consider putting JmolData.jar and jmolcd.php 14384 on your own server. Nothing more than these two files is needed on the server. 14385 14386new feature: write CD (simple ChemDoodle JSON format -- atoms and bonds only) 14387 For example: java -jar JmolData.jar -iRJ "load $tylenol;print write('cd')" 14388 generates: {"mol":{"a":[{"x":0.20549999,"y":0.8303,"z":0.3823},{"x":0.6906,"y":-1.4656999,"z":-0.14220001},{"x":1.5485,"y":1.1359,"z":0.2829},{"x":2.0332,"y":-1.1585,"z":-0.24180001},{"x":-3.9799001,"y":-0.1617,"z":0.1295},{"l":"H","x":4.2731,"y":0.35680005,"z":0.7047},{"l":"H","x":-1.8655999,"y":-1.6522,"z":0.6012},{"x":-0.2273,"y":-0.4718,"z":0.17},{"x":2.4650002,"y":0.1425,"z":-0.029099999},{"l":"O","x":-2.1741998,"y":1.1759001,"z":-0.59169996},{"l":"O","x":3.7872,"y":0.4441,"z":-0.1268},{"x":-2.5170999,"y":0.1262,"z":-0.089999996},{"l":"N","x":-1.5898,"y":-0.78279996,"z":0.2712},{"l":"H","x":-0.50740004,"y":1.6029,"z":0.6296},{"l":"H","x":0.35450003,"y":-2.4786,"z":-0.3079},{"l":"H","x":1.8853,"y":2.1487997,"z":0.4477},{"l":"H","x":2.7472,"y":-1.9314001,"z":-0.485},{"l":"H","x":-4.3884,"y":-0.65880007,"z":-0.7504},{"l":"H","x":-4.0964003,"y":-0.8086,"z":0.9991},{"l":"H","x":-4.513,"y":0.7739,"z":0.2986}],"b":[{"b":8,"e":10},{"b":9,"e":11,"o":2},{"b":7,"e":12},{"b":11,"e":12},{"b":0,"e":7,"o":2},{"b":1,"e":7},{"b":0,"e":2},{"b":2,"e":8,"o":2},{"b":3,"e":8},{"b":1,"e":3,"o":2},{"b":4,"e":11},{"b":5,"e":10},{"b":6,"e":12},{"b":0,"e":13},{"b":1,"e":14},{"b":2,"e":15},{"b":3,"e":16},{"b":4,"e":17},{"b":4,"e":18},{"b":4,"e":19}]}} 14389 (this ended up NOT being used in the Jmol extension to ChemDoodle) 14390new feature: (JmolData) -iR (silent, restricted) mode sends output from PRINT and ECHO commands to SYSOUT 14391 and also restricts the application to no local file read/writing 14392 14393bug fix: "connect;" command in states saved prior to 11.9.24 and then read by versions after that 14394 The order in which Jmol created bonds changed in 11.9.24. Due to this, Jmol must check for the 14395 version number of Jmol used to create a state, and if it was before this point, it must 14396 apply "legacy" autobonding methods. Unfortunately, if that state from pre-11.9.24 versions 14397 contains the "connect;" command, which it would if someone used the CONNECT command by itself 14398 to regenerate all bonds in a model PRIOR to saving the state (Proteopedia does this), then 14399 those scripts will be misread in versions 11.9.24-12.2.21/12.3.21. 14400bug fix: antialiasDisplay does not show drag-box properly 14401bug fix: SMARTS syntax [${xxx}n] and [${xxx}m-n] changed to [$n{xxx}] and [$m-n{xxx}] 14402 to avoid conflict with specifying isotope 14403 14404============================================================================= 14405 14406version=12.3.21 14407 14408new feature: app flag -R restricts file access -- no local file reading; no writing, no logging 14409 // disables WRITE, LOAD file:/, set logFile 14410 // command line -g and -w options ARE available for final writing of image 14411 // for use with headless operation 14412new feature: app flag -T <seconds> headless timeout delay for "exitJmol" 14413note: Headless operation with image creation works perfectly using JmolData.jar 14414 java -Djava.awt.headless=true -Xmx512m -jar "JmolData.jar" -RJ "load $tylenol;" -g1000x1000 -wJPG:t.jpg 14415 see also: http://leshazlewood.com/2009/08/26/linux-javaawtheadless-and-the-display-environment-variable/ 14416 // determined by GraphicsEnvironment.isHeadless() 14417 // from java -Djava.awt.headless=true 14418 // disables command threading 14419 // disables DELAY, TIMEOUT, PAUSE, LOOP, GOTO, SPIN <rate>, ANIMATION ON 14420 // turns SPIN <rate> <end> into just ROTATE <end> 14421new feature: JSpecView JCamp-MOL files can reference model="$xxxx" -- model retrieved from NCI 14422 14423bug fix: PDB reader 14424 and state scripts created with 12.1.51-12.2.20 and 12.3.0-12.3.20 14425 state scripts prior to those versions with multiple models 14426 and also select BOND commands will read the bond indexes incorrectly 14427 and, in addition, will assign proper CONECT links only to the last model 14428bug fix: if (....) # comment fails 14429bug fix: Molden reader hack for bad Molden files with ** instead of atom number in [GTO] 14430bug fix: headless creation of JPG fails 14431bug fix: spin .... 30 takes 30 to be number of degrees, not rate 14432 14433version=12.3.20 -- skipped 14434 14435============================================================================= 14436 14437version=12.3.19 14438 14439new feature: select baseModel for JSpecView 14440new feature; model {atomset} -- model of first atom in this set 14441 14442bug fix: set dragSelected disallows popup menu 14443bug fix: MOPAC (PUBLIC DOMAIN) output reader can fail on reading vibrations 14444bug fix: Spartan 10 archives have .gz and .carc files. This fix adds .gz reading; 14445 work-around is that Spartan 10 allows saving of Archive without carc compression, 14446 which is a proprietary format. From Wavefunction: 14447 "If you want all files to use the "text" version, you can go to the 14448 Options->Preferences->X-Platform pane and make sure "Use Binary Archive" is unchecked." 14449bug fix: rotateSelected of models that have had dots at one point retrieved from a state file fails 14450code: refactored org.jmol.g3d.[Normix3d,Shade3D] --> org.jmol.util.[Normix, Shader] 14451code: refactored org.jmol.geodesic.Geodesic --> org.jmol.util.Geodesic 14452 14453bug fix: Jmol defaults not being loaded with startup option -n (no display) 14454bug fix: UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName() 14455 failed for non-graphics system, and even though it is an exception, it 14456 isn't trapped by try/catch. 14457bug fix: point() function does not accept 3x1 array 14458bug fix: show x where x is a matrix does not have ',' before tabs, so it can't be clipped directly 14459 back into Jmol 14460code: better coding for quaternions 14461 14462============================================================================= 14463 14464version=12.3.18 14465 14466new feature: JSpecView reads and displays 2D spectra very quickly -- all 14467 tested JCamp-DX 6.0 files readable. -- JSpecView 2.0.10176 14468 14469bug fix: allow for alternating list/hash entry: 14470 for example: print getproperty("jspecview","##TITLE")["items"][1]["spectra"][1]["id"] 14471 instead of: print ((getproperty("jspecview","##TITLE")["items"][1])["spectra"][1])["id"] 14472bug fix: GaussianReader not reading "Natural Orbitals" section from 14473 B3LYP 6-31g sp gfprint pop(full,NO) 14474bug fix: Jmol support for ZIP collection of JDX files read properly 14475bug fix: support for file reading with BOM UTF-8, UTF-16, or UTF-32 14476bug fix: script processor not recognizing UTF-8 Binary Order Mark at start of script 14477bug fix: (undocumented) POLYHEDRA {...} to {...} with COLOR or TRANSLUCENT fails 14478bug fix: POLYHEDRA command or COLOR POLYHEDRA can change selection 14479bug fix: PDB reader doesn't recognize 16 LINK records at start of file 14480bug fix: script xxxx(xxx)xxx/xx.xxx fails at "(" due to revision 16201 2011-10-02 14481 14482============================================================================= 14483 14484version=12.3.17 14485 14486new feature: (JspecView 2.0.10033) new script commands (indicated with *) 14487 UNKNOWN("?"), 14488 APPLETID("APPLETID"), 14489 APPLETREADYCALLBACKFUNCTIONNAME("APPLETREADYCALLBACKFUNCTIONNAME"), 14490 AUTOINTEGRATE("AUTOINTEGRATE", "TF"), 14491 BACKGROUNDCOLOR("BACKGROUNDCOLOR", "C"), 14492*CLOSE("CLOSE", "spectrumId or fileName or ALL"), 14493 COMPOUNDMENUON("COMPOUNDMENUON", "TF"), 14494 COORDCALLBACKFUNCTIONNAME("COORDCALLBACKFUNCTIONNAME"), 14495 COORDINATESCOLOR("COORDINATESCOLOR", "C"), 14496 COORDINATESON("COORDINATESON", "TF"), 14497*DEBUG("DEBUG", "TF"), 14498 DISPLAYFONTNAME("DISPLAYFONTNAME", "fontName"), 14499 ENABLEZOOM("ENABLEZOOM", "TF"), 14500 ENDINDEX("ENDINDEX"), 14501*EXPORT("EXPORT", "[JPG,PNG,XY,...] \"filename\""), 14502 GETSOLUTIONCOLOR("GETSOLUTIONCOLOR", ""), 14503 GRIDCOLOR("GRIDCOLOR", "C"), 14504 GRIDON("GRIDON", "TF"), 14505*INTEGRATE("INTEGRATE", ""), 14506 INTEGRALPLOTCOLOR("INTEGRALPLOTCOLOR"), 14507 INTEGRATIONRATIOS("INTEGRATIONRATIOS"), 14508 INTERFACE("INTERFACE"), 14509*IRMODE("IRMODE", "A or T or ?"), 14510*LABEL("LABEL", "x y [color and/or \"text\"]"), 14511*LOAD("LOAD", "[APPEND] \"fileName\""), 14512 MENUON("MENUON"), 14513 OBSCURE("OBSCURE"), 14514*OVERLAY("OVERLAY", "spectrumID, spectrumID, ..."), 14515 PEAKCALLBACKFUNCTIONNAME("PEAKCALLBACKFUNCTIONNAME"), 14516 PLOTAREACOLOR("PLOTAREACOLOR", "C"), 14517 PLOTCOLOR("PLOTCOLOR", "C"), 14518 PLOTCOLORS("PLOTCOLORS"), 14519 REVERSEPLOT("REVERSEPLOT", "TF"), 14520 SCALECOLOR("SCALECOLOR", "C"), 14521 SPECTRUM("SPECTRUM", "spectrumID"), 14522 SPECTRUMNUMBER("SPECTRUMNUMBER"), 14523 STARTINDEX("STARTINDEX"), 14524 SYNCCALLBACKFUNCTIONNAME("SYNCCALLBACKFUNCTIONNAME"), 14525 SYNCID("SYNCID"), 14526 TITLEBOLDON("TITLEBOLDON", "TF"), 14527 TITLECOLOR("TITLECOLOR", "C"), 14528 TITLEFONTNAME("TITLEFONTNAME", "fontName"), 14529 UNITSCOLOR("UNITSCOLOR", "C"), 14530 VERSION("VERSION"), 14531 XSCALEON("XSCALEON", "TF"), 14532 XUNITSON("XUNITSON", "TF"), 14533 YSCALEON("YSCALEON", "TF"), 14534 YUNITSON("YUNITSON", "TF"), 14535*ZOOM("ZOOM", "OUT or x1,x2"); 14536 14537new feature: allows simpler color scheme definition 14538 color property occupancy "myscheme=red green blue" 14539 Var x = ["red","green","blue"]; color property occupancy @{"myscheme=" + x} 14540 14541bug fix: JCampDX reader resolving should allow spaces before "##TITLE" 14542bug fix: jvxl issue when color PHASE and translucent 14543 -- upon reading JVXL doesn't handle translucency right 14544 -- upon writing SPT doesn't preserve colors 14545bug fix: user variable lower case "x" not cleared by "X = none" 14546bug fix: draw HELIX fails for residue numbers < 0 14547code: better Enum structure using name() 14548 14549============================================================================= 14550 14551version=12.3.16 14552 14553new feature: (application) SYNC ON; sync * "JSpecView:..." sends commands to JSpecView 14554new feature: (JSpecView) accepts commands using public syncScript(script) 14555 14556bug fix: GAMESS-US reader error reading NBOs 14557bug fix: print [2, 3, 4].mul([3,4,5]) fails 14558bug fix: missing ANISOU records cause file-read error in PDB files 14559bug fix: JCAMP-DX reading by JSpecView for tiered BLOCK files 14560 14561============================================================================= 14562 14563version=12.3.15 14564 14565new feature: JCAMP-DX file reading 14566 -- reading of ##$MODELS and ##$PEAKS (see http://chemapps.stolaf.edu/jmol/jspecview) 14567new feature: context menu Spectra submenu 14568new feature: JSpecView integration into Jmol application 14569 -- if model/peak-enhanced JDX file is read, clicking on an atom or switching 14570 to an IR vibration or MS fragment displays the appropriately highlighted spectrum/fragment 14571new feature: sync ~ 'Select: xxx' 14572 -- xxx can include file="xxx" model="xxx" atoms="xxx" select="xxx" script="xxx" 14573 -- file and model combined as model ID "file#model" 14574 -- will automatically load the file if the given file#model ID is not found 14575 -- atoms = list of atom numbers separated by commas: 1,2,3 --> @1 or @2 or @3 14576 -- select is any valid selection such as THR or 1-30 14577 -- automatically adds "visible &" to atoms or select 14578 -- requires sync ON 14579new feature: NFF neutral file format reader (http://paulbourke.net/dataformats/nff/nff1.html) 14580 for electron microscopy data exported from IMOD 14581new feature: preliminary JCAMP-DX file reader, where <models></models> is present 14582new feature: when picking struts or delete bond or measure, distance shows as per usual measurement 14583 14584bug fix: SLAB unit cell not showing all lines 14585bug fix: CRYSTAL reader needs to change to MOLECULAR when X(ANGSTROMS) found (fullerene slab) 14586bug fix: Popup Menu item hbond calculate should not require PDB 14587 14588============================================================================= 14589 14590version=12.3.14 14591 14592bug fix: state after frame RANGE or frame 0 not saved properly (state saves "frame all" instead of "frame 0") 14593bug fix: frame n does not work properly after load APPEND 14594bug fix: measurement units may appear as full word "nanometers" instead of "nm" 14595bug fix: user bindings do not access _atomPicked 14596 -- solution is to add _ATOM _BOND _POINT _OBJECT to user binding actions 14597 14598============================================================================= 14599 14600version=12.3.13 14601 14602new feature: isosurface SCALE extends to volume file readers 14603new feature: zoom $isosurface1 0 -- scales to match isosurface boundbox 14604 14605bug fix: getProperty("bondinfo",[{13}]) gets info for atom 13 instead of bond 13 14606bug fix: isosurface offset does not change boundbox or zoom/center points 14607note to Bob: jpe needs update of img/blank.js js/top_buttons.js htm1/quickvs.js,qv_msgs.js molview/JmolAppletSigned.jar 14608 14609============================================================================= 14610 14611version=12.3.12 14612 14613bug fix: symmetry popup submenu not enabled 14614bug fix: show spacegroup not working 14615bug fix: lcaocartoon for allene central carbon py incorrect 14616bug fix: antialiasdisplay (and image writing) not compatible with scaleAngstromsPerInch 14617bug fix: last group of protein cartoon will not display if it is not helix and not sheet 14618bug fix: getproperty MENU does not work 14619bug fix: PDB reader of multiple-bond files with duplicated bonds does not ignore duplicate 14620 14621============================================================================= 14622 14623version=12.3.11 14624 14625new feature: plot ramachandran -- now those points .phi and psi return values 14626-- load 1crn.pdb;plot ramachandran;print {2.1}.psi 14627new feature: LOAD .... filter "reverseModels" 14628 -- does just that 14629 -- for IRC calculation transition state -> minimum reversal 14630new feature: measures "2:%VALUE %UNITS//xx" 14631 -- where xx is a specified unit such as nm or Angstroms 14632 -- overrides set measurementUnits 14633 -- fixes state problem when units or labels are changed after measurements are made 14634 -- operates on selected measurements only (or all, if no measurements are selected) 14635 14636bug fix: frame 0 during animation can cause exception 14637bug fix: changes in defaultDistanceLabel not always preserved in state correctly 14638bug fix: parameters can be set to invalid values using xxx = ... instead of set xxx ... 14639bug fix: (Application) proper Edit...Preferences dialog action 14640 14641============================================================================= 14642 14643version=12.3.10 14644 14645new feature: _animTimeSec 14646new feature: Application -- press and hold animation next/prev button to continuously run animation 14647new feature: write PDB adds CONECT records 14648 -- for all multiple bonding and all HETATM bonds 14649 -- uses CONECT i j j to indicate multiple bonding 14650new feature: compare {from} {to} FRAME 14651 -- aligns frames automatically 14652 -- particularly nice for IRC calculation animations 14653 -- for example: compare {file=2} {1.1} FRAME 14654 -- can be followed by quaternion, atom, or SMILES options 14655 -- for example: compare {file=2} {1.1} FRAME ATOMS @1 @5 @2 @8 @3 @9 14656 (all of file 2 atoms moved) file 2 atoms 1,2,3 aligned 14657 with file 1.1 atoms 5,8,9) 14658 -- if {to} is a subset of {from}, then FRAME is unnecessary, 14659 and if ATOMS is included, then just the list of alignment 14660 atoms is necessary. For example: 14661 compare {*} {1.1} 14662 compare {*} {1.1} atoms @1 @2 @3 14663 -- see http://chemapps.stolaf.edu/jmol/docs/examples-12/mp for more examples 14664 14665bug fix: script @{x} fails 14666bug fix: Molecular Playground should allow for set allowGestures OFF to disallow swipe 14667bug fix: lcaoCartoon dual color p orbitals giving white for one lobe 14668new feature: set echo myecho SCALE 0.3 -- for image scaling 14669bug fix: after "ZAP; LOAD append" show orientation will have incorrect zyz script 14670bug fix: function call with @x or @1 in parameters fails 14671bug fix: PNGJ reading remote fails 14672bug fix: H5T should not be used as a lead atom ever, because of set showHydrogens FALSE 14673bug fix: adding H atoms to mol2 file faulty 14674bug fix: load xxx.png;write PNGJ xxx.png (to same file as loaded) fails 14675 14676============================================================================= 14677 14678version=12.3.9 14679 14680new feature: FRAME DELAY x.y 14681 -- specific delay (in seconds) in animation at a given frame 14682 -- applies to all currently in-frame models 14683bug fix: set isKiosk should: 14684 (a) not be reversible 14685 (b) not allow file saves other than logging 14686 (c) not allow prompt dialogs 14687 (d) not allow console or popup menu or ScriptEditor 14688bug fix: background colors saved to state can be off very slightly 14689bug fix: draw PLANE with three vertices problems after save -- four-atom planes, not three 14690bug fix: x = file("?") fails on Cancel 14691bug fix: delay not allowed within try{...} 14692 14693============================================================================= 14694 14695version=12.3.8 14696 14697new feature: MolecularPlayground -- remote status and remote control 14698 -- see for example http://chemapps.stolaf.edu/jmol/mpstatus.php 14699 -- set topic, subtopic, delay from a web page 14700 -- set banner and image for website from Jmol 14701new feature: load("http://.....?POST?_PNG_") or load("http://....?POST?_PNGJ_") 14702 -- sends PNG or PNGJ image to server 14703 -- return value is whatever server is set up to send 14704 -- used by MolecularPlayground at St. Olaf to send current state to web server 14705new feature: polyhedra FULLYLIT -- useful for zeolites along with COLLAPSED 14706new feature: ZMATRIX upgraded to allow all forms of Gaussian input 14707 http://www.gaussian.com/g_tech/g_ur/c_zmat.htm 14708 14709bug fix: set picking DRAW does not work on polygon sets 14710bug fix: set picking DRAW does not report position change 14711bug fix: MPJmolApp (Molecular Playground) problems when navigation is on 14712bug fix: CifReader (molecular type, with GEOM_BOND records) adds 14713 extra atoms when embedded in JMOL or PNGJ file or part load FILES command 14714bug fix: PdbReader -- crystallographic non-PDB files not checking special positions 14715 14716============================================================================= 14717 14718version=12.3.7 14719 14720new feature: "Write PNG+JMOL" added to application and signed applet menu 14721code: dispensing with InputStream in favor of BufferedInputStream 14722new feature: write PNGJ 14723 -- creates a PNG file with appended JMOL (zip) data containing 14724 all necessary files, MANIFEST, and script file. 14725 -- viewable in directories as an "icon" and readable by image readers 14726 -- draggable back into Jmol and readable using LOAD 14727 -- PNG file includes: 14728 -- iTXt field "Jmol Type\0PNGJxxxxxxxxx+yyyyyyyyy" 14729 where xxxxxxxxx is a pointer to the ZIP data 14730 yyyyyyyyy is the number of ZIP data bytes 14731 -- iTXt field "Software\0Jmol 12.3.7 2011-10-11 15:30" 14732 -- iTXt field "Creation Time\0Tue, 24 Nov 2011 19:56:10 -0600" 14733 -- yyyyyyyyy bytes of .JMOL zip data 14734 -- show FILE "xxx.PNG" will show list of contained files. 14735 -- show state FILE "xxx.PNG" will extract state 14736 -- show FILE "xxx.PNG|1crn.pdb" for example will extract file 14737 14738new feature: simple Z-Matrix reader 14739 -- invoked by ZMATRIX:: or file starting with #ZMATRIX 14740 -- lines starting with # are comments, which can contain jmolscript: 14741 -- blank lines are ignored 14742 14743 #ZMATRIX -- methane 14744 C 14745 H 1 1.089000 14746 H 1 1.089000 2 109.4710 14747 H 1 1.089000 2 109.4710 3 120.0000 14748 H 1 1.089000 2 109.4710 3 -120.0000 14749 14750 -- allows bond order specification 14751 14752 #ZMATRIX -- CO2 14753 C 14754 O 1 1.3000 2 14755 O 1 1.3000 2 180 2 14756 14757 -- any position number may be replaced by a unique atom name, with number: 14758 14759 #ZMATRIX -- CO2 14760 C1 14761 O1 C1 1.3000 2 14762 O2 C1 1.3000 O1 180 2 14763 14764 -- allows for dummy atoms Xn, allowing for positioning: 14765 14766 #ZMATRIX -- CO2 14767 X1 14768 X2 X1 1.0 14769 C1 X1 1.0 X2 90 14770 O1 C1 1.3000 X2 90 X1 0 2 14771 O2 C1 1.3000 O1 180 X2 0 2 14772 14773 -- negative distance indicates that the second angle is a normal angle, not a dihedral 14774 14775 #ZMATRIX -- NH3 (using simple angles only) 14776 N1 14777 H1 N1 1.0 14778 H2 N1 1.0 H1 107 14779 H3 N1 -1.0 H1 107 H2 107 14780 14781 -- negative distance and one negative angle reverses the chirality 14782 14783 #ZMATRIX -- NH3 (using simple angles only; reversed chirality) 14784 N1 14785 H1 N1 1.0 14786 H2 N1 1.0 H1 107 14787 H3 N1 -1.0 H1 -107 H2 107 14788 14789 14790 -- symbolics may be used -- they may be listed first or last 14791 14792 #ZMATRIX 14793 14794 dist 1.0 14795 angle 107 14796 14797 N1 14798 H1 N1 dist 14799 H2 N1 dist H1 angle 14800 H3 N1 -dist H1 angle H2 angle 14801 14802 -- If #ZMATRIX is not the start of the file, MOPAC style is assumed. 14803 The first two lines will be considered to be comments and ignored: 14804 14805 AM1 14806 Ethane 14807 14808 C 14809 C 1 r21 14810 H 2 r32 1 a321 14811 H 2 r32 1 a321 3 d4213 14812 H 2 r32 1 a321 3 -d4213 14813 H 1 r32 2 a321 3 60. 14814 H 1 r32 2 a321 3 180. 14815 H 1 r32 2 a321 3 d300 14816 14817 r21 1.5 14818 r32 1.1 14819 a321 109.5 14820 d4213 120.0 14821 d300 300.0 14822 14823bug fix: show orientation shows incorrect zyz format if reset uses file-based orientation matrix (smol, Sygress) 14824bug fix: isosurface plane xy map mep 14825code: MPJmolApp work 14826bug fix: user variables should not be rest by INITIALIZE in an spt file 14827bug fix: x3d/vrml outputting unnecessary spheres 14828 -- bond caps within opaque atoms removed (not precisely correct to do that) 14829bug fix: minimization broken 14830bug fix: contact still not quite right -- setting default to +0.0 instead of +0.25 14831 14832 14833============================================================================= 14834 14835version=12.3.6 14836 14837new feature: load files "xxx.tlsout" "xxxx.pdb" 14838 -- loads REFMAC-style TLS data into xxxx.pdb 14839 14840new feature: contact SASURFACE <radius> 14841 -- ignores solvent (as does CAP) 14842 14843bug fix: contact command hbond/clash cutoff not sensitive to H-O/N vs O/N-O/N 14844 -- set to -1.2 for H-N/O, -1.0 for N/O-N/O 14845bug fix: contact command default probe radius should be 0.0 except for VDW (0.25) 14846 14847bug fix: minimize constraint CLEAR broken 14848bug fix: constraints not reported in show minimization 14849bug fix: set measures off broken 14850bug fix: contact color density broken 14851bug fix: contact volume report not correct for color density 14852bug fix: MO HOMO not set properly when using LUMO = "lowest E > 0" (GAMESS-US reader) 14853bug fix: zSlab settings not stored properly in parameters; should have default zSlab = 50 14854 14855============================================================================= 14856 14857version=12.3.5 14858 14859new feature: color isosurface PHASE color1 color2 14860 -- allows post-isosurface creation coloring by phase (atomicOrbitals) 14861bug fix: isosurface scale 0.5 plane... broken if no atoms present 14862bug fix: isosurface color density broken 14863bug fix: set PdbAddHydrogens does not transfer C atomSymmetry to H atoms 14864bug fix: contact() function not working when typed from console 14865bug fix: set axesOrientationRasmol not working properly (since 11.5.51) 14866 14867code: org.jmol.modelsetbio.BioModel localizes more bio-only code into modelsetbio package 14868code: removal of org.jmol.modelset.Polymer 14869code: refactoring and organizing RepaintManager and ShapeManager 14870 14871============================================================================= 14872 14873version=12.3.4 14874 14875bug fix: frame x.y - y.z not working 14876bug fix: with antialiasDisplay, dragMolecule goes 1/2 speed of cursor 14877bug fix: nucleic acid residues with HO5' may render last group strangely (since 12.0.RC16, 6/6/2010) 14878bug fix: workaround for weird Mac Point3i(Point3i pt) class initializer bug 14879bug fix: array.bin(low,high,binSize) not documented and can cause exception 14880bug fix: MO readers can fail if inappropriate filter "TLS" is given 14881bug fix: PDB TLS error reading TLS data missing "NUMBER OF COMPONENTS" line 14882 14883============================================================================= 14884 14885version=12.3.3 14886 14887new feature: ellipsoid SET 1; ellipsoid SET 2; 14888 -- TLS ellipsoids are dual 14889 -- TLS-S is SET 1; TLS-T is SET 2 14890 -- after issuing this command, further size or color commands affect only that set 14891 -- needs verification by Ethan Merrit 14892new feature: load xxx.pdb filter "TLS" -- loads TLS data 14893new feature: atom property property_tlsGroup 14894new feature: MolecularPlayground now accepts messages to the banner: 14895 message banner: xxxxxxx 14896new feature: MolecularPlayground fully functional. 14897 This application (MPJmolApp) is part of a three-part suite 14898 that runs on a Mac mini involving: 14899 "Hub" [name] for overall control (Mac app; not open source yet) 14900 MPKinectDriver for obtaining motion events (Mac app; not open source yet) 14901 MPJmolApp for displaying the results (source here) 14902 The Hub and MPJmolApp communicate over local port 31416, sending 14903 JSON messages back and forth. (See note in org.jmol.app.jsonkiosk.JsonNioService.java) 14904 For demonstrations of the installation at St. Olaf College, 14905 see the following YouTube videos: 14906 http://www.youtube.com/watch?v=iQRkuku8ry0 14907 http://www.youtube.com/watch?v=XCRrRZe1j6g 14908 http://www.youtube.com/watch?v=FTTIVWGtFD0 14909 For details relating to the original Molecular Playground 14910 installation at U. Mass.-Amherst, see 14911 http://molecularPlayground.org 14912 Note that all of the functionality of the original MP are 14913 present in MPJmolApp 14914new feature: MolecularPLayground can now ignore all Hub requests for 14915 commands and content changes, thus allowing its own configuration 14916 script to drive the presentation instead of the Hub's. So the Hub 14917 can be used simply as an interface to the Kinect driver. This just 14918 allows a simpler development interface -- a simple three-column Excel file can 14919 be used to drive a presentation. (see org.jmol.molecularplayground.biophysics.xlsx) 14920 -- MPJmolApp looks for the file MpJmolAppConfig.spt 14921 -- This file can override MPJmolApp's default parameters: 14922 NIOContentPath 14923 -- default: System.getProperty("user.dir").replace('\\', '/') 14924 + "/Content-Cache/%ID%/%ID%.json" 14925 -- ignored if NIOcontentDisabled ends up true (see below) 14926 NIOterminatorMessage 14927 -- default: "MP_DONE" 14928 NIObannerEnabled 14929 -- default: true 14930 NIOcontentScript 14931 -- default: (not present, setting NIOcontentDisabled=false) 14932 NIOcontentDisabled 14933 -- default: true if NIOcontentScript is present; false if not 14934 NIOmotionDisabled 14935 -- default: false 14936 -- The script in MpJmolAppConfig.spt is run, along with whatever 14937 default settings are generated by the above checks. 14938 -- Parameters are set by querying the Viewer for those Jmol variables. 14939 -- If NIOcontentDisabled is true, then all JSON messages from the Hub 14940 of types "content", "command", and "banner" are ignored. It is still 14941 important that the running script send "MP_DONE" messages periodically 14942 (within every 6 minutes) so that the Hub knows that MPJmolApp is still 14943 alive and does not try to restart it. 14944 -- If NIOmotionDisabled is true, then all JSON messages from the Hub 14945 of types "move", "sync", and "touch" are ignored. 14946 -- These are checked every time a JSON command is received, so the 14947 running script can specifically turn off motion detection if that 14948 or content detection if that is desired. 14949 -- Note that MPJmolApp has a full console and menu that are available 14950 on the operator's screen, (which is just mirrored to the projector). 14951 This allows for parameter setting and adjustments on the fly. 14952 14953new feature: show NMR 14954 -- predicted NMR spectrum 14955 -- uses http://www.nmrdb.org/predictor?smiles=xxxx 14956 -- requires NCI SMILES due to bug at nmrdb not allowing "." 14957 14958bug fix: CRYSTAL reader not properly setting model properties 14959bug fix: userFunction(x,@y) should operate as per all math 14960 -- parens - value of variable pointed to by y 14961 -- x = myfunc(x, @y) same action as just myfunc(x, @y) 14962bug fix: userFunction x @y 14963 -- no parens - should operate as value of x and value of y 14964 -- @ is unnecessary but allowed 14965bug fix: set echo "myecho" [10 10%] not working 14966bug fix: apiPlatform not correctly accessed in JpegEncoder 14967bug fix: reading of JVXL files for color density fails to color properly 14968bug fix: .... vdw 100.0% --- should be OK with float there, even if it rounds. 14969 14970code: refactored for Molecular Playground and Jmol Android 14971 -- several System.out. messages present. 14972code: refactoring adapter XML readers 14973 14974============================================================================= 14975 14976version=12.3.2 14977 14978new feature: compare("XXX","XXXX","ISOMER") comparison now includes "AMBIGUOUS STEREOCHEMISTRY!" 14979new feature: show chemical XXXXX where XXXXX is any NCI Cactus information token: 14980 stdinchikey Standard InChIKey 14981 stdinchi Standard InChI 14982 smiles SMILES 14983 ficts FICTS Identifier 14984 ficus FICuS Identifier 14985 uuuuu uuuuu Identifier 14986 hashisy Cactvs HASHISY 14987 sdf SD File 14988 names Names 14989 iupac_name IUPAC Name 14990 cas CAS Registry Number(s) 14991 chemspider_id ChemSpider ID 14992 mw Molecular Weight 14993 formula Chemical Formula 14994 h_bond_donor_count Number of Hydrogen Bond Donors 14995 h_bond_acceptor_count Number of Hydrogen Bond Acceptors 14996 h_bond_center_count Number of Hydrogen Bond Acceptors and Donors 14997 rule_of_5_violation_count Number of Rule of 5 Violations 14998 rotor_count Number of Freely Rotatable Bonds 14999 effective_rotor_count Number of Effectively Rotatable Bonds 15000 ring_count Number of Rings 15001 ringsys_count Number of Ring Systems 15002 15003bug fix: array.bin(low,high,binSize) not documented and can cause exception 15004new feature: PQR write option 15005bug fix: load append twice can cause zap to be in wrong place in state file 15006bug fix: for (x IN {*}) ... makes x a bitset and leads to array[1] for x.atomName 15007bug fix: for (x IN {*}.bonds) does not work 15008bug fix: POV-Ray export of cartoons broken 15009bug fix: script javascript:xxxx() broken 15010new feature: set vectorSymmetry -- displays vibration vectors as double-ended arrows. 15011bug fix: SMILES comparison when the number of stereocenters is not the same is wrong 15012code: popup/modelkit refactoring to isolate awt/Swing references 15013bug fix: connection deletion removes all measurements -- can't imagine why... 15014code: JmolModelKitInterface part of apiPlatform call 15015code: JmolPromptInterface replaced with apiPlatform call 15016 15017============================================================================= 15018 15019version=12.3.1 15020 15021new feature: CASTEP reader (take 2) 15022 -- reads Mulliken files by default, Hirshfield with filter "CHARGE=HIRSH" 15023 -- reads spins into {*}.property_spin. label is %[property_spin] 15024 -- reads Born charge tensors as atom ellipsoids 15025 15026bug fix: H2,H3 connected to terminal N of protein not backbone 15027bug fix: select PROTEIN selects non-PDB atoms 15028bug fix: Molden reader does not read "Sym=X" (missing space after '=') 15029bug fix: Molden reader does not read angstrom units 15030bug fix: color isosurface {atomset} <color> does not work if isosurface has not already been mapped. 15031bug fix: PDB reader not reading Rasmol-style files with multiple bonding 15032 CONECT 1 2 2 15033 or 15034 CONECT 1 2 15035 CONECT 1 2 15036 means for Rasmol double bond between atoms 1 and 2 15037 15038code: experimenting with fragmentation of applet core classes into _1b, _1c, _1d, _1e, _1f 15039 15040version=12.3.0 15041 15042October 4, 2011 15043 15044 15045====================================== 15046 15047some feature notes: 15048 15049 15050bug fix: var firstPARAM = "p1_b"; x = [FIRSTParam: "p1_a"]; results in lowering of case as [firstparam:....] 15051bug fix: set drawPicking draw;set drawpicking does not show handles 15052bug fix; point group not calculated when the selected atoms are a subset of a model 15053bug fix: x.find("SMILES") is incorrect for structures that have hypervalent atoms and branches such as inorganic nitrates 15054bug fix: msCIF reading with two models, and only one has displacement modulation causes "render error" crash 15055bug fix: msCIF reader failing for Legendre polynomials of order greater than 4 15056bug fix: DRAW for quadrilateral broken when perspective depth is turned off. 15057bug fix: SET ECHO IMAGE broken in JavaScript version 15058 15059 15060feature note: Jmol 14.5.2 15061 15062FEATURE NOTE: Prior to this version if the MO command was issued after use of 15063 rotateSelected, the orbitals were calculated improperly, because the 15064 basis functions always must be applied for the original file coordinate 15065 frame, not the rotated frame. In addition, if MOs were calculated prior to 15066 use of rotateSelected or translateSelected, then they would not "track" 15067 with the modified atom positions. So MOs and rotate/translateSelected 15068 were completely incompatible. Jmol 14.4.2 fixes this issue. It should be 15069 possible now to produce correct MOs before or after use of rotateSelected. 15070 Note that ALL atoms in a specified model must be moved in order for this 15071 tracking of MOs to take place. This functionality was introduced in 15072 14.4.1_2016.01.28, but that version (never released) does not properly 15073 check to see that ALL the atoms in a model have been involved in the rotation. 15074 15075FEATURE NOTE: If rotateSelected or translateSelected is used to move all atoms in a 15076 model, and after that the state is saved, then Jmol 14.4.2 15077 will save a state that is not readable in 14.4.1. This is necessary 15078 because of the added FRAME ORIENTATION command, which is used in the states 15079 to indicate the relationship of a model to its file coordinates. The MO 15080 reader requires this so that it can rotate the coordinates back to their 15081 original position prior to doing its calculation. 15082 15083FEATURE NOTE: Jmol 14.5.4 now has a RELATIVELY COMPLETE set of analysis and visualization 15084 tools for space group symmetry. All standard and magnetic space group operations 15085 are covered. Features are concentrated in four command options and one function: 15086 15087 LOAD .... SPACEGROUP .... UNITCELL .... 15088 SHOW SYMOP .... 15089 DRAW SYMOP .... 15090 DRAW POINTGROUP SPACEGROUP 15091 x = symop(....) 15092 15093 With these features, you can: 15094 15095 -- load any model while applying any actual or conceivable space group or subset of a space group 15096 -- tabulate all space group operations associated with that model 15097 -- retrieve an associative array indicating all aspects of the operation, including 15098 point, rotation axis, plane, glide vector, lattice offset vector, and 4x4 matrix 15099 -- visualize all aspects of an operation, including proper and improper rotations 15100 inversion centers, mirror planes, glide planes, translations, and magnetic spin time reversal 15101 -- apply any operation to any atom or any point in space 15102 -- given any combination of two atoms or two points in space, determine and/or 15103 depict the operation(s) that relate those to atoms or positions 15104 15105 15106 15107feature note: Jmol 14.3 introduces several very powerful and very different capabilities 15108 to Jmol in the area of crystallography. Many of these features are nonexistent 15109 in other programs. They involve: 15110 15111 - an extension of SMILES to compare bonding topology irrespective of atom identity. 15112 (Are these two atom environments both iscoahedral?) 15113 15114 x = {@1 and 1.1 and connected(@1)}.find("SMILES", "*"} 15115 y = {2.1}.find("SMARTS", x) 15116 15117 - the generation of polyhedra in crystal structures for which only the central atom 15118 may be loaded. 15119 (What is the atom environment around Au3 in this crystal structure?) 15120 15121 load t.cif // just the unit cell, maybe just one atom even 15122 polyhedra 4-12 UNITECELL @1 15123 15124 - the ability to load a given block of space (such as a 10x10x10-Angstrom cube) 15125 with a crystal structure irrespective of its given unit cell. 15126 (Are these two structures that have totally different unit cells really that different?) 15127 15128 load t.cif FILL 15129 load t.cif FILL 20 15130 load t.cif FILL {20 10 10} 15131 load t.cif FILL [{0 0 0} {5.2 5.2 0} {-5.2 5.5 0} {1.3 0 3.3}] 15132 15133 - the ability to show and draw the point group of a polyhedron 15134 15135 load t.cif 15136 polyhedron 12 unitcell @1 15137 select @1 15138 show pointgroup POLYHEDRON 15139 draw pointgroup POLYHEDRON 15140 15141 - the ability to extract information about polyhedra 15142 15143 print getProperty("shapeInfo.polyhedra[1]").keys 15144 15145 _ipt 15146 center 15147 modelIndex 15148 planeCount 15149 polygons 15150 vertexCount 15151 vertices 15152 15153 - the ability to select polyhedra 15154 15155 select polyhedra 15156 select polyhedra(4) 15157 15158 print polyhedra() 15159 print polyhedra(4) 15160 15161 15162 - the ability to draw points from derived arrays 15163 15164 draw diameter 0.2 points @{getProperty("shapeInfo.polyhedra[1].vertices")} 15165 15166 15167Jmol 14.3.15 15168 15169new feature: MACRO command 15170 -- runs predefined script, generally defining new functions of general use 15171 -- contributions welcome! 15172 -- will be expanded 15173 15174 $ macro aflow 15175 running http://aflowlib.mems.duke.edu/users/jmolers/jmol/spt/AFLOW.spt 15176 aflowLoad(binaryAlloy) loaded 15177 aflowBinaries loaded 15178 aflowDualArray(binaryAlloy, a, b) loaded 15179 aflowDualWrite loaded 15180 aflowConvexHull(binaryAlloy) loaded 15181 aflowCheckBinary(binaryAlloy) loaded 15182 aflowGetPG(binaryAlloy, a, range1, range2,radius) loaded 15183 $ aflowLoad("AgAu") 15184 294 models 15185 15186 $ print aflowConvexHull 15187 { 15188 "Cb" : 0.0 15189 "Hf_eV_VASP" : 0.0 15190 "modelNumber" : 2 15191 } 15192 { 15193 "Cb" : 0.25 15194 "Hf_eV_VASP" : -0.0472733 15195 "modelNumber" : 26 15196 } 15197 { 15198 "Cb" : 0.5 15199 "Hf_eV_VASP" : -0.085589 15200 "modelNumber" : 180 15201 } 15202 { 15203 "Cb" : 0.75 15204 "Hf_eV_VASP" : -0.0463823 15205 "modelNumber" : 25 15206 } 15207 { 15208 "Cb" : 1.0 15209 "Hf_eV_VASP" : 0.0 15210 "modelNumber" : 260 15211 } 15212 15213 15214 15215 15216 15217 15218