httk.atomistic.symmetry.subgroups

Graph queries and exact transformations for Bärnighausen subgroup trees.

The vendored tables contain maximal subgroup relations and their standard-setting transformations for all 230 space-group types. Only those one-hop relations are tabulated; closures and the inverted supergroup graph are derived here.

The split-affine convention pinned by tests/test_subgroups.py is that a WyckoffSplitPiece operation maps a parent standard-setting coordinate directly to a child standard-setting coordinate. The tabulated SubgroupTransform operation has matrix M with the child basis on the left: B_child = M.T() * B_parent. At the affine-coordinate level it maps child coordinates into parent coordinates, f_parent = f_child * M.T() + v; its inverse matrix is the coordinate basis change used by the split operations (up to their listed origin translations).

Classes

SubgroupRepresentationResult

Store an exact asymmetric-unit representation in a subgroup.

WyckoffSplitPiece

One child Wyckoff piece in a maximal subgroup transformation.

SubgroupTransform

One exact standard-setting transformation in a maximal subgroup table entry.

Functions

maximal_subgroups(spacegroup)

Return the distinct tabulated maximal-subgroup IT numbers.

minimal_supergroups(spacegroup)

Return the distinct tabulated minimal-supergroup IT numbers.

subgroup_closure(spacegroup, *[, include_self])

Return the graph-derived transitive subgroup closure.

supergroup_closure(spacegroup, *[, include_self])

Return the graph-derived transitive supergroup closure.

subgroup_transforms(parent, subgroup)

Return every tabulated transform for one parent/target pair.

Module Contents

class httk.atomistic.symmetry.subgroups.SubgroupRepresentationResult[source]

Store an exact asymmetric-unit representation in a subgroup.

Parameters:
  • asu – The subgroup-standard-setting asymmetric unit with identity transform.

  • spacegroup – The subgroup space group in its standard setting.

  • path – The selected maximal-subgroup transforms, in parent-first order.

  • multiplier – The exact child-to-parent cell-content ratio.

asu: httk.atomistic.models.structure.asu.ASUStructure[source]
spacegroup: httk.atomistic.symmetry.spacegroup.Spacegroup[source]
path: tuple[SubgroupTransform, Ellipsis][source]
multiplier: fractions.Fraction[source]
class httk.atomistic.symmetry.subgroups.WyckoffSplitPiece[source]

One child Wyckoff piece in a maximal subgroup transformation.

Parameters:
  • letter – The child-setting Wyckoff letter as tabulated.

  • xyz – The tabulated coordinate expression, for display and provenance.

  • operation – The exact affine map from a parent standard-setting coordinate directly to a child standard-setting coordinate.

letter: str[source]
xyz: str[source]
operation: httk.atomistic.symmetry.affine_operation.AffineOperation[source]
class httk.atomistic.symmetry.subgroups.SubgroupTransform[source]

One exact standard-setting transformation in a maximal subgroup table entry.

Parameters:
  • parent – The parent space group in its IT standard setting.

  • subgroup – The subgroup in its IT standard setting.

  • index – The tabulated subgroup index [G:H].

  • subgroup_type – The tabulated relation type, "t" or "k".

  • k_subtype – The tabulated k subtype, or None for a t relation.

  • operation – The exact tabulated affine basis change from child to parent coordinates. If its matrix is M and vector is v, it evaluates as f_parent = f_child * M.T() + v; the child basis is M.T() * parent_basis.

  • splittings – An immutable mapping from parent Wyckoff letters to child pieces.

parent: httk.atomistic.symmetry.spacegroup.Spacegroup[source]
subgroup: httk.atomistic.symmetry.spacegroup.Spacegroup[source]
index: int[source]
subgroup_type: str[source]
k_subtype: str | None[source]
operation: httk.atomistic.symmetry.affine_operation.AffineOperation[source]
splittings: collections.abc.Mapping[str, tuple[WyckoffSplitPiece, Ellipsis]][source]
httk.atomistic.symmetry.subgroups.maximal_subgroups(spacegroup)[source]

Return the distinct tabulated maximal-subgroup IT numbers.

Self-referencing isomorphic entries are excluded from graph navigation.

Parameters:

spacegroup (httk.atomistic.symmetry.spacegroup.Spacegroup | int) – A space group or IT number identifying the parent.

Returns:

Sorted unique target IT numbers, excluding spacegroup itself.

Raises:

KeyError – If the IT number has no vendored subgroup record.

Return type:

tuple[int, Ellipsis]

httk.atomistic.symmetry.subgroups.minimal_supergroups(spacegroup)[source]

Return the distinct tabulated minimal-supergroup IT numbers.

Self-referencing isomorphic entries are excluded from graph navigation.

Parameters:

spacegroup (httk.atomistic.symmetry.spacegroup.Spacegroup | int) – A space group or IT number identifying the subgroup.

Returns:

Sorted unique parent IT numbers, excluding spacegroup itself.

Raises:

KeyError – If the IT number has no vendored subgroup record.

Return type:

tuple[int, Ellipsis]

httk.atomistic.symmetry.subgroups.subgroup_closure(spacegroup, *, include_self=False)[source]

Return the graph-derived transitive subgroup closure.

Parameters:
Returns:

Sorted reachable subgroup IT numbers.

Raises:

KeyError – If the IT number has no vendored subgroup record.

Return type:

tuple[int, Ellipsis]

httk.atomistic.symmetry.subgroups.supergroup_closure(spacegroup, *, include_self=False)[source]

Return the graph-derived transitive supergroup closure.

Parameters:
Returns:

Sorted reachable supergroup IT numbers.

Raises:

KeyError – If the IT number has no vendored subgroup record.

Return type:

tuple[int, Ellipsis]

httk.atomistic.symmetry.subgroups.subgroup_transforms(parent, subgroup)[source]

Return every tabulated transform for one parent/target pair.

Results retain table order, including self-targeted isomorphic entries. The returned tuple is empty when the pair has no tabulated relation.

Parameters:
Returns:

All exact standard-setting transformations for the pair.

Raises:

KeyError – If either IT number has no vendored subgroup record.

Return type:

tuple[SubgroupTransform, Ellipsis]