# Wolfram Function Repository

Instant-use add-on functions for the Wolfram Language

Function Repository Resource:

Compute the symmetry point group symbol of a molecule from its atom coordinates and masses, or a polyhedron from its vertex coordinates

Contributed by:
Robert B. Nachbar

ResourceFunction["PointGroupSymbol"][ returns the symmetry point group symbol of molecule | |

ResourceFunction["PointGroupSymbol"][ returns the symmetry point group symbol of the atoms | |

ResourceFunction["PointGroupSymbol"][Entity["Polyhedron", returns the symmetry point group symbol of the polyhedron |

A finite object with a well-defined shape is often symmetrical, that is, it can be reoriented and superimposed upon itself. The most familiar symmetrical objects are polygons and polyhedra. For example, a square can be turned in increments of 90° and look as though it had not been moved. In 3-dimensional space there are three kinds of operations that can bring an object into coincidence with itself: a rotation about an axis, a reflection across a plane, and a rotary-reflection (rotation about an axis followed by reflection across a plane perpendicular to the axis; inversion through a point is a special case of this kind of operation). When more than one operation exists for an object, they can be combined in pairs to generate new operations. However, there is generally only a finite number of these combinations, and mathematically they have the structure of a group. Geometrically, they all intersect at a point or along a line. Hence the name "symmetry point group" for the collection of operations. While ancient philosophers, such as Plato, recognized these symmetries, it wasn't until the end of the 19^{th} century that crystallographers codified the naming of these point groups. There are a number of naming conventions in use today by mathematicians, chemists, and physicists. The two most common are the Schoenflies and the Hermann-Mauguin symmetry point group symbols. The latter is also known as the International symmetry point group symbol, as it is used in the *International Tables for Crystallography*.

The finite symmetry point groups can be placed into five classes: axial, dihedral, tetrahedral, octahedral, and icosahedral. The first two have a principal *n*-fold rotation axis, and the latter three have multiple, intersecting threefold, fourfold, and fivefold rotation axes, respectively. In the Schoenflies system, the axial groups are given the symbol *C* or *S*, the dihedral groups the symbol *D*, the tetrahedral groups the symbol *T*, the octahedral groups the symbol *O*, and the icosahedral groups the symbol *I*. For the cyclic and dihedral groups, the order of the rotation axis (that is, the number of partial turns, *n*, that produce a complete cycle) is given as a subscript. For example, the cyclic group with a threefold rotation axis is given the symbol *C*_{3}. If the principal axis of the cyclic group is a rotary-reflection (also known as an improper rotation) axis, then the symbol *S* is given. The order of rotary-reflection axes is always even, e.g., *S*_{4}. If mirror planes parallel to the principal axis are present, the subscript *v* is added (for “vertical”); e.g., *C*_{3v}. If instead a mirror plane perpendicular to the principal axis is present, the subscript *h* is added (for “horizontal”); e.g., *C*_{3h}. The dihedral groups are similar to the cyclic groups, but additionally have twofold rotation axes perpendicular to the principal axis. If mirror planes parallel to the principal axis are present the subscript d is used (for “diagonal”); e.g., *D*_{3d}.

There are three so-called non-axial symmetry point groups. The group *C*_{s} has just a mirror plane, and is the same as *C*_{1v} and *C*_{1h}. The group *C*_{i} has just a center of inversion, and is the same as *S*_{2}. The group *C*_{1} has no symmetry elements.

The tetrahedral symmetry group has 3 mutually perpendicular twofold rotation axes and four threefold rotation axes that meet at an angle of arc cos -, or approximately 109.47°, and is given the symbol *T*. If additionally a center of inversion is present, the subscript *h* is added, e.g., *T*_{h}. If instead there are mirror planes parallel with the threefold rotation axes, the the subscript d is added, e.g., *T*_{d}. The octahedral group is given the symbol *O*, and has three mutually perpendicular fourfold rotation axes, four threefold rotation axes meeting at an angle of arc cos -, six twofold rotation axes. If mirror planes and a center of inversion are present the subscript h is added, e.g., *O*_{h}. The icosahedral group has six fivefold rotation axes, ten 3-threefold rotation axes, and fifteen twofold rotation axes, and is given the symbol *I*. If mirror planes and a center of inversion are present, then the subscript *h* is added, e.g., *I*_{h}.

There are three infinite symmetry point groups relevant to the structure of molecules, and they possess a principal ∞-fold rotation axis. The cyclic infinite point group also has mirror planes parallel to the principal rotation axis and is given the symbol *C*_{{XMLElement[span, {class -> stylebox}, {∞, XMLElement[i, {class -> ti}, {v}]}]}}. The dihedral infinite point group also has a mirror plane perpendicular to the principal rotation axis and is given the symbol *D*_{{XMLElement[span, {class -> stylebox}, {∞, XMLElement[i, {class -> ti}, {h}]}]}}. The third infinite symmetry point group is that for a perfect sphere. It has an infinite number of ∞-fold rotation axes and an infinite number of mirror planes, and is given the symbol *K*_{h} (for "Kugel").

The output is a Subscript object, and is from one of the following symmetry point group families:

C_{n} | cyclic; n-fold rotation axis |

C_{nv} | cyclic; n-fold rotation axis with mirror planes parallel to rotation axis; C_{1v}=C_{s} |

C_{nh} | cyclic; n-fold rotation axis with mirror plane perpendicular to rotation axis; C_{1h}=C_{s} |

S_{2n} | cyclic; 2n-fold rotary-reflection axis; S_{2}=C_{i} |

D_{n} | dihedral; n-fold princicpal rotation axis and twofold rotation axes perpendicular to principal axis |

D_{nd} | dihedral; n-fold princicpal rotation axis and twofold rotation axes perpendicular to principal axis with mirror planes parallel to principal axis |

D_{nh} | dihedral; n-fold princicpal rotation axis and twofold rotation axes perpendicular to principal axis with mirror planes parallel to principal axis and a mirror plane perpendicular to principal axis |

T | tetrahedral; four threefold rotation axes and three twofold rotation axes |

T_{h} | tetrahedral; four threefold rotation axes and three twofold rotation axes with center of inversion |

T_{d} | tetrahedral; four threefold rotation axes and three twofold rotation axes with mirror planes |

O | octahedral; three 4-fold rotation axes, four threefold rotation axes, and six twofold rotation axes |

O_{h} | octahedral; three 4-fold rotation axes, four threefold rotation axes, and six twofold rotation axes with center of inversion |

I | icosahedral; six fivefold rotation axes, ten threefold rotation axes, and fifteen twofold rotation axes |

I_{h} | icosahedral; six fivefold rotation axes, ten threefold rotation axes, and fifteen twofold rotation axes with center of inversion |

C_{{XMLElement[span, {class -> stylebox}, {∞, XMLElement[i, {class -> ti}, {v}]}]}} | continuous, linear; ∞-fold principal rotation axis with mirror planes parallel to principal axis |

D_{{XMLElement[span, {class -> stylebox}, {∞, XMLElement[i, {class -> ti}, {h}]}]}} | continuous, linear; ∞-fold principal rotation axis and ∞ twofold rotation axes perpendicular to principal axis with mirror planes parallel to rotation axis and a mirror plane perpendicular to the principal axis |

K_{h} | continuous, spherical |

The following options can be given:

"ComputeAtomCoordinates" | False | whether to compute atom coordinates if not present |

"SymbolType" | "Schoenflies" | type of symbol to return; other choices are "HermannMauguin" and "International" |

Tolerance | 0.0001 | the tolerance to use for internal comparisons |

The option "ComputeAtomCoordinates" may be used to specify the coordinates to be used. Available choices are:

True | discard atom coordinates if present and compute new ones using MoleculeModify |

False | use the atom coordinates present in the Molecule |

Automatic | use the atom coordinates present in the Molecule, and if absent compute new ones with MoleculeModify |

It is the responsibility of the user to provide atom coordinates with the desired geometry, and thus the point symmetry. Most molecules can adopt many different shapes, and the distance geometry method used by MoleculeModify can be somewhat arbitrary when the opportunity arises. Therefore the default setting is not Automatic. It may be useful in some settings to include SetOptions[ResourceFunction["PointGroupSymbol"],"ComputeAtomCoordinates"→Automatic] at the beginning of one’s notebook.

Monatomic molecules have spherical symmetry, neon is an example:

In[1]:= |

Out[1]= |

Diatomic and linear molecules have an ∞-fold rotation axis, hydrogen is an example where the two ends of the molecule are the same:

In[2]:= |

Out[2]= |

Hydrogen fluoride is a diatomic molecule where the ends are different and the symmetry is lower:

In[3]:= |

Out[3]= |

Carbon dioxide is a linear triatomic molecule whose ends are the same:

In[4]:= |

Out[4]= |

Hydrogen cyanide is a linear triatomic molecule whose ends are different:

In[5]:= |

Out[5]= |

Water has axial symmetry and mirror planes:

In[6]:= |

Out[6]= |

Ammonia also has axial symmetry and mirror planes:

In[7]:= |

Out[7]= |

Methane has tetrahedral symmetry:

In[8]:= |

Out[8]= |

Benzene has the symmetry of a regular hexagon:

In[9]:= |

Out[9]= |

Sulfur hexafluoride has octahedral symmetry:

In[10]:= |

Out[10]= |

Isotopic substitution is taken into account:

In[11]:= |

Out[11]= |

Compute the symmetry point group symbol:

In[12]:= |

Out[12]= |

A subset of atoms can be considered; first generate the adamantane molecule:

In[13]:= |

Out[13]= |

Compute the symmetry point group symbol:

In[14]:= |

Out[14]= |

The symmetry of just the methylene carbons is higher than that of the whole molecule:

In[15]:= |

Out[15]= |

Compute the symmetry point group symbol:

In[16]:= |

Out[16]= |

Polyhedron entities are handled:

In[17]:= |

Out[17]= |

The input molecule is expected to have 3D coordinates:

In[18]:= |

Out[18]= |

Use automatically computed coordinates if they are missing:

In[19]:= |

Out[19]= |

Use automatically computed coordinates, even if other coordinates are present; here is the point group symbol for the boat conformation of cyclohexane:

In[20]:= |

Out[20]= |

Automatically generated coordinates for cyclohexane have the chair conformation:

In[21]:= |

Out[21]= |

The Hermann-Mauguin, or International, symbol can be returned. Here is the result for propyne that has *"C"*_{} symmetry:

In[22]:= |

Out[22]= |

Here are more examples showing both forms of output:

In[23]:= |

Out[23]= |

Increase the tolerance to find approximate symmetries. This asymmetric cyclotol has *"C"*_{{XMLElement[span, {class -> stylebox}, {1}]}} symmetry:

In[24]:= |

Out[24]= |

Compute the symmetry point group symbol:

In[25]:= |

Out[25]= |

The ring carbons are approximately D_{3d}:

In[26]:= |

Out[26]= |

Hexapyridine iron (II) has the uncommon tetrahedral symmetry with a center of inversion *"T"*_{{XMLElement[span, {class -> stylebox}, {"h"}]}}; the geometry is from a crystal structure determination and the molecule does not sit on a special position, so the symmetry is only approximate:

In[27]:= |

Out[27]= |

Compute the symmetry point group symbol:

In[28]:= |

Out[28]= |

Here are the six symmetric conformations of cyclohexane, from the highest to lowest symmetry, the first being the planar conformation:

In[29]:= |

Out[29]= |

The chair conformation:

In[30]:= |

Out[30]= |

The twist-boat conformation:

In[31]:= |

Out[31]= |

The boat conformation:

In[32]:= |

Out[32]= |

The half-chair conformation:

In[33]:= |

Out[33]= |

The half-boat conformation:

In[34]:= |

Out[34]= |

A series of molecules of various symmetries starting with ethane and generated by successive atom substitution:

In[35]:= |

Out[35]= |

Compute the symmetry point group symbol:

In[36]:= |

Out[36]= |

Replace a hydrogen atom by a chlorine atom. The desymmetrization preserves only a mirror plane:

In[37]:= |

Out[37]= |

Compute the symmetry point group symbol:

In[38]:= |

Out[38]= |

Replace the other hydrogen atoms at the same carbon. This modification restores the 3-fold rotation and two more mirror planes:

In[39]:= |

Out[39]= |

Compute the symmetry point group symbol:

In[40]:= |

Out[40]= |

Replace a hydrogen atom gauche to the chlorine atom at the other carbon atom. This modification destroys the mirror plane and creates a 2-fold rotation axis:

In[41]:= |

Out[41]= |

Compute the symmetry point group symbol:

In[42]:= |

Out[42]= |

Replace the anti hydrogen atom at the other carbon atom. This modification maintains the mirror plane and creates a 2-fold rotation axis:

In[43]:= |

Out[43]= |

Compute the symmetry point group symbol:

In[44]:= |

Out[44]= |

Here is the unsubstituted molecule, with the symmetry point group symbol shown at the origin:

In[45]:= |

Out[45]= |

Substituting a nitrogen atom at C-2 in each ring preserves only the principal rotation axis:

In[46]:= |

Out[46]= |

Substituting a nitrogen atom at C-2 and C-6 in alternating rings preserves only the improper rotation axis:

In[47]:= |

Out[47]= |

Substituting two nitrogen atoms at C-2 and C-6 in each ring preserves only the principal rotation axis and the horizontal mirror plane:

In[48]:= |

Out[48]= |

Substituting two nitrogen atoms at C-2 and C-3 in each ring preserves only the principal rotation axis and the vertical mirror planes:

In[49]:= |

Out[49]= |

Substituting two nitrogen atoms at C-2 and C-5 in each ring preserves only the principal rotation axis and the 2-fold rotation axes:

In[50]:= |

Out[50]= |

Substituting two nitrogen atoms at C-2 and C-3 and at C-5 and C-6 in alternating rings reduces the order of the principal rotation axis by 2 and preserves only half of the 2-fold rotation axes:

In[51]:= |

Out[51]= |

The chiral polyhedra have pure rotation group symmetries:

In[52]:= |

Out[52]= |

- 1.1.0 – 20 January 2021
- 1.0.0 – 05 January 2021

This work is licensed under a Creative Commons Attribution 4.0 International License