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

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
spacegroup: httk.atomistic.symmetry.spacegroup.Spacegroup
path: tuple[SubgroupTransform, Ellipsis]
multiplier: fractions.Fraction
class httk.atomistic.symmetry.subgroups.WyckoffSplitPiece

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
xyz: str
operation: httk.atomistic.symmetry.affine_operation.AffineOperation
class httk.atomistic.symmetry.subgroups.SubgroupTransform

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
subgroup: httk.atomistic.symmetry.spacegroup.Spacegroup
index: int
subgroup_type: str
k_subtype: str | None
operation: httk.atomistic.symmetry.affine_operation.AffineOperation
splittings: collections.abc.Mapping[str, tuple[WyckoffSplitPiece, Ellipsis]]
httk.atomistic.symmetry.subgroups.maximal_subgroups(spacegroup)

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)

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)

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)

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)

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]