|
From: Robert H. <ha...@st...> - 2024-04-15 03:54:54
|
With this version <https://sourceforge.net/projects/jmol/files/Jmol/Version%2016.1/Jmol%2016.2.3/>, the space group upgrade for Jmol is essentially complete. [image: 84-84.png] [PNGJ illustrating two settings of space group 84 (P 4/2 m). The one outlined in red is the standard unit cell; the larger one is one of its subgroups of index 2 (because we have lost half of the diagonal translations -- note that the vertical 2-fold axes are only half the density in the yellow subset cell on the right). - Jmol now has access to the full Bilbao Crystallographic Server (BCS) collection of 611 standard and nonstandard space group settings (plus a couple more). It is possible to add customized settings or just create them on the fly. - Jmol uses these settings natively; they are built into Jmol as (potentially user-modifiable) JSON property files - Jmol can generate and visualize any nonstandard space group setting based on a standard setting using simple "(P,p)" transformation notation. - You can switch settings after loading a structure, seeing how the symmetry (but not the structure itself!) changes with different unit cells, for example. - You can build models from scratch in any space group setting. - Jmol has the full complement of standard BCS group-maximal subgroup transformations up to index 4 (3767 total). The full collection of visualizations of these relationships as PNGJ model files is available at https://chemapps.stolaf.edu/jmol/data/ita/subgroups.zip (190M). These can be dropped into Jmol or viewed as a gallery after downloading to your machine. - Combined with the nonstandard settings, Jmol can calculate and visualize any *non*-standard group-maximal subgroup transformation up to index 4. - Combined with multiple settings, Jmol can calculate and visualize any group-subgroup chain of transformations. - All the matrix math associated with these calculations can be carried out and demonstrated easily using Jmol scripting. Several additional new features and bug fixes: Jmol.___JmolVersion="16.2.3" // (legacy) also 16.2.4 (swingJS) demo page: https://chemapps.stolaf.edu/jmol/jsmol/iucrdemo -- supplement to a forthcoming publication -- lots of examples of using the MODELKIT SPACEGROUP command note: completion of the MODELKIT SPACEGROUP implementation initiated in 15.2.30/14.2.30 bug fix: (JavaScript) no spinner showing at startup. Jmol_spinner.gif was missing in site/jsmol/j2s/img bug fix: (JavaScript chemapps) the php/jsmol.php AJAX relay was failing due to the presence of both header('Access-Control-Allow-Origin: *') in jsmol.php and .htaccess file in site/, causing a "multiple header" error. The .htaccess file was kept, and the php header was removed. bug fix: (legacy JavaScript only) right-click on pop-up menu throws background error and fails to place submenu correctly (traced to minor jMenu incompatibility with jQuery 3.7.1) bug fix: (JavaScript) Jmol javascript command containing call back to Jmol.script() fails to execute callback script bug fix: (JavaScript) JSpecView and other pages fail to open due to Enum and ArrayList coding bugs recently introduced that are only used in JSpecView bug fix: animation range not responsive to load append bug fix: PDB reader needs to allow PDB files with BIOMT but no CRYST1/SCALE headers bug fix: SHELX reader fails due to LATT processing failure bug fix: display of symmetry elements in SHOW and DRAW minor issues bug fix: DRAW UNITCELL with {555 666 1} notation should show all interior edges of block of cells bug fix: more work on subgroup-group relations - still finalizing code for using transformations such as "a+b,a-b,c;1/2,1/2,0" - for example, to create a group, add atoms, and display a packed subgroup, coloring by site: zap modelkit spacegroup 18 draw unitcell color red modelkit add P wyckoff "G" modelkit spacegroup "18 >c,a,b;0,1/4,0>4" packed color property site draw spacegroup all feature change: DRAW UNITCELL default changed to MESH NOFILL - was normal default of FILL NOMESH, but this is much better - overridden by explicit NOMESH or FILL - does not affect states, as they are explicit, not default feature change: x = spacegroup("153") or x = spacegroup(153) - one parameter, just a number from 1 to 230 - was Jmol's idiocyncratic Hall-notation-derived operator list - now ITA standard list - same list; just a different order - spacegroup() by itself shows current, possibly file-derived, operators. new feature: x = spacegroup("153:") - with colon - returns Jmol's internal setting and original listing new feature: DRAW UNITCELL AXES - draws axes red/green/blue (no labels) with unit cell. new feature: spacegroup(g1,g2,i1,i2) - same as spacegroup(g1,g2,i1,i2,"subgroups") - "subgroups" is unnecessary new feature: x = spacegroup("Hall:p 32 2\" (0 0 2)") - translates Hall notation to XYZ list - outputs a map similar to x = spacegroup(154) with at least keys HallSymbol, operationCount, and operationsXYZ; possibly, if known, also: HermannMauguinSymbol clegId crystalClass ita itaIndex jmolId new feature: x = {*}.rxyz - returns rational fraction if within +/- 0.001 of n/2,3,4,6,8,12,24,48 - returns rounded to 0.001 if not - string value with parentheses: "(1/2 1/2 1/2)" new feature: fpt.rxyz - returns rational of fractional. - {1/2 1/2 1/2}.rxyz == "(1/2 1/2 1/2)" new feature: x = matrix(...) - creates a 3x3 or 4x4 matrix - options include (by example): matrix("x-y+1/2,x+y,z") // row-based matrix("a+b+1/2,b-a,c") // column-based matrix("a+b,b-a,c;1/2,0,0") // ITA transform notation, col-based matrix([1,2,3,4,5,6,7,8,9]) // 3x3 from array[9] matrix([1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6]) // 4x4 from array[16] matrix([1,2,3] [4,5,6] [7,8,9]) // 3x3 from array[3][3] matrix([1,2,3,4] [5,6,7,8] [9,0,1,2] [3,4,5,6]) // 4x4 from array[4][4] P = matrix("c,a,b;1/2,0,0"); f = {0.5 0.25 0.5}; print P*f; {0.75 0.5 0.5} new feature: x = matrix(..., "abc") new feature: x = matrix(..., "xyz") - returns the string form of a 4x4 matrix, either in abc-column format or xyz-row format new feature: MODELKIT SPACEGROUP <setting> - Jmol will automatically adjust unit cell if necessary. - should be used after ZAP or LOAD - for example: function test(n,i) { if (!i) { load @{"=aflowlib/" + n} + " packed"; center unitcell; print "nSettings=" + spacegroup("ITA/" + n).n; test(n,1); } else { draw delete; modelkit spacegroup @{"" + n + "."+i} packed; draw ID @{"sg"+i} spacegroup all; center visible; axes 0.1; connect auto; moveto axis c1; } } test(23) opens an example AFLOW Encyclopedia of Crystallographic Prototypes, then switches to a one of the available settings, packing the new unit cell and displays all symmetry operations. Finally, does some clean up and goes to the standard ITA "c1" axis view. (looing toward 0 along c axis in the top left corner) new feature: MODELKIT SPACEGROUP "n >sub> m" - switch from crystallographic group to maximal subgroup - uses (unpublished) CLEG notation (more details to follow) - chooses first-listed transformation - typically a translationengleichen (translation-preserving) transformation - for example: MODELKIT SPACEGROUP 13 >sub> 10 function showSubgroup(i1, i2) { if (!i2) { print spacegroup(i1,0,"subgroups"); return; } save orientation o1; zap; modelkit spacegroup @i1; restore orientation o1; center unitcell; draw uc1 unitcell color red; draw sg1 spacegroup all; modelkit add P wyckoff "G"; modelkit spacegroup @{"" + i1 + ">sub>" + i2} packed; color property site; draw uc2 unitcell color yellow; draw sg2 spacegroup all; delay 2; for (var i = 0; i < 10; i++) { delay 1; draw sg1* on; draw sg2* off; delay 1; draw sg1* off; draw sg2* on; } draw sg1* on; draw sg2* on; } showSubgroup 107 showSubgroup 107 42 new feature: unitcell NONE - removes unit cell and spacegroup - removes unit cell and spacegroup information from model auxiliary info _M - allows nonperiodic manipulation of atom positions new feature: SHELX reader returns Q-peaks as "Xx" (unknown atom); was returning "C" new feature: x = spacegroup("ITA/4:c,a,b") - finds the ITA spacegroup setting with this specific transformation. - text match so must be exact form: [rotation;translation], e.g. a,b,c;0,0,0 "2/3a+1/3b+1/3c,-1/3a+1/3b+1/3c,-1/3a-2/3b+1/3c" "a+b,-a+b,c;-1/4,-1/4,-1/4" new feature: x = spacegroup(itaNo, itaFrom, index1, index2, "subgroups") - returns information on group-subgroup relationships - based on Bilbao Crystallographic Server public data - uses set of JSON data files - see - return depends upon values: spacegroup(4,"subgroups") // all maximal subgroup data for space group 4 spacegroup(4,0,"subgroups") // an array of known subgroup numbers spacegroup(4,5,"subgroups") // list of all 4 >> 5 spacegroup(4,5,1,"subgroups") // first-listed 4 >> 5 as a map spacegroup(4,0,2,"subgroups") // second listed subgroup as a map spacegroup(4,0,2,1,"subgroups") // second listed subgroup, first transformation spacegroup(4,5,1,2,"subgroups") // first listing for 4>>5, second transformation spacegroup(4,0,0,0,"subgroups") // an array of arrays of [isub, ntrm, subIndex, type] where * [ isub, ntrm, subIndex, idet, trType ] * * isub: subgroup ITA number * ntrm: transformation count * subIndex: index of this group-subgroup relationship * idet: determinant if determinant >= 1; -1/determinant if determinant < 1 * trType: 1 translationengelieche, * 3 klassengleiche "ct" loss of centering translation, * 4 klassengleiche "eu" enlarged unit cell -- Robert M. Hanson Professor of Chemistry, Emeritus St. Olaf College Northfield, MN http://www.stolaf.edu/people/hansonr If nature does not answer first what we want, it is better to take what answer we get. -- Josiah Willard Gibbs, Lecture XXX, Monday, February 5, 1900 *We stand on the homelands of the Wahpekute Band of the Dakota Nation. We honor with gratitude the people who have stewarded the land throughout the generations and their ongoing contributions to this region. We acknowledge the ongoing injustices that we have committed against the Dakota Nation, and we wish to interrupt this legacy, beginning with acts of healing and honest storytelling about this place.* |