Computes the continuous symmetry operation measure (CSoM): how far a structure is from possessing a given point group’s symmetry operations, searching over all orientations for the best fit. Cosmochlore supports 47 chemically important point groups.

cosmochlore csom <NAME> [OPTIONS]

Options

FlagValueDescription
-n, --ncTreat the structure as non-centred (see cshm’s -n).
-c, --center<POSITION>1-based position of the atom in the .xyz table that is the centre of the structure. Defaults to the first atom (position 1) when omitted. Cannot be combined with --nc.
-p, --pg<POINT_GROUPS>...Point groups to measure the structure against, in Schoenflies notation, separated by whitespace (e.g. -p Oh D4h C2v). If omitted, every supported point group (all 47) is analysed.
-m, --modeauto | first | centroid | manualCentring mode. auto (default) centres on the first atom if the structure has an explicit centre, or on the centroid otherwise.
-u, --vector<X> <Y> <Z>Centring vector, required when --mode manual is used.
-t, --tableWrite a name_csom_table.csv summary file (point group, deviation, refined rotation matrix).
-f, --fullWrite a name_<PG>_details.csv file per analysed point group, listing every individual symmetry operation’s matrix and deviation.
-o, --operatedWrite, per analysed point group, a name_<PG>_operated.xyz file with every symmetry-operated image of the structure at the minimum-deviation orientation, plus a name_<PG>_merged.mol2 overlaying all of those images in one 3D structure for viewers such as Mercury. Bonds in the .mol2 join atoms closer than 1.3 times the sum of their covalent radii, plus the centre atom to every ligand.
-s, --seeds<N>Number of candidate symmetry-axis directions, spread over a Fibonacci hemisphere, used to seed the axis search; each is refined at every in-plane orientation the point group tells apart. Defaults to 20.
-i, --iterations<N>Maximum number of Nelder-Mead iterations used to refine each seed. Defaults to 200.
-T, --tolerance<TOLERANCE>Convergence tolerance of the Nelder-Mead refinement (the standard deviation of the deviations across the simplex). Defaults to 1e-6.
-g, --ignoreIgnore atom labels when searching for the best atom-to-atom permutation: every atom is treated as interchangeable regardless of element/label, instead of only matching atoms that share a label.

Warning

Changing --seeds, --iterations or --tolerance may result in long run times. It is recommended to leave them at their defaults.

The symmetry operations of every point group are tabulated with the principal axis along , so the structure first has to be rotated into the orientation that minimizes (see orientation matrix). Once the structure is centred (see --mode), csom searches for in three steps:

  1. Fibonacci-hemisphere seeding: --seeds candidate directions for the principal axis are spread evenly over the upper hemisphere (an axis and its opposite are the same axis), and each seed is the rotation that carries one of them onto . Whatever the input orientation, some seed therefore starts with the true axis within the lattice spacing of . Aligning the axis leaves the spin about it free. When the point group has vertical mirror planes or perpendicular axes, which make that spin matter, every direction is also tried at several in-plane angles, in steps no coarser than the lattice spacing, up to the angle after which the group repeats: 90° for or , 30° for , and none at all for , , , or .
  2. Nelder-Mead refinement: every seed is refined with the derivative-free Nelder-Mead method over the three components of the rotation vector, until the simplex converges to --tolerance or --iterations steps are reached. The refined rotation with the lowest deviation over all seeds is kept as the orientation for that point group.
  3. Atom pairing: for every operation , the pairing of each image with an original point is found with the Hungarian algorithm. Atoms are only paired with atoms of the same element, read from the start of their label (N004 and N006 are both N), unless --ignore is passed. When the structure is centred on an atom, that atom sits at the origin and is invariant under every operation, so it is paired with itself and left out of the search. This reduces the size of the assignment by one at no cost in accuracy.

Examples