Skip to main content

structure-clustering – Fast Exact Clustering of Molecular Structures through Parameterized Connectivity Graphs

structure-clustering groups molecular geometries by their distance-derived connectivity.

For each structure, the algorithm builds an undirected graph in which atoms are element-labelled vertices and connected atoms are edges. Structures are assigned the same cluster only when their graphs are exactly isomorphic. Fast graph signatures and Weisfeiler–Lehman refinement are used to reduce the number of expensive isomorphism checks. The edges describe the molecule's connectivity, not it's bonds.

Example clusters of Ag+(H2O)4 structures

Installation

Install the package from PyPI:

pip install structure_clustering

Upgrade an existing installation with:

pip install --upgrade structure_clustering

Prebuilt wheels are available for common platforms. Building from source requires a C++17 compiler and the Boost Graph Library headers.

Quick start

Cluster a multi-XYZ file:

structure_clustering structures.xyz

By default, only structures with fully connected graphs are clustered; structures with disconnected graphs are sorted out. The command writes the clustered structures to the Chemcraft-compatible file sc.chemcraft.chd.

Chemcraft visualization demo

To choose another Chemcraft output path:

structure_clustering structures.xyz -ec results.chemcraft.chd

To limit the number of exported structures per cluster, use --export-limit:

structure_clustering structures.xyz --export-limit

Without an integer, the limit defaults to 10 structures per cluster. To choose another limit, provide it explicitly, for example:

structure_clustering structures.xyz --export-limit 3

If --export-limit is omitted, all structures are exported as usual. Unique singles are always exported, and clustering itself is unchanged. The same limit is applied to both Chemcraft and optional native output. --export-limit 1 therefore exports one representative from each non-singleton cluster plus all unique singles.

The native clustering format is optional and can be written in addition:

structure_clustering structures.xyz -e

This writes sc.dat alongside the default sc.chemcraft.chd. To choose paths for both outputs:

structure_clustering structures.xyz -e results.dat -ec results.chemcraft.chd

The native .dat output can be visualized with cluster-vis.

Command-line interface

usage: structure_clustering [-h] [--disconnected] [--config CONFIG]
                            [-e [FILE]] [-ec [FILE]]
                            [--export-limit [N]]
                            xyz_file

Options:

  • xyz_file: multi-XYZ file containing the input structures.
  • --config CONFIG: TOML file with connectivity settings.
  • --disconnected: include disconnected graphs in clustering. By default, disconnected structures are sorted out. An explicit CLI flag overrides options.only_connected_graphs from the TOML file.
  • -e [FILE], --export [FILE]: additionally write the native clustering output. Without a filename, uses sc.dat.
  • -ec [FILE], --export-chemcraft [FILE]: set the Chemcraft-compatible output path. Chemcraft output is written by default to sc.chemcraft.chd. Note that the file extension needs to be .chd, otherwise Chemcraft will not read it properly.
  • --export-limit [N]: limit output of each luster to maximum N exported structures. Without N, defaults to 10. If the option is omitted, all structures are exported. Unique singles are always included. This affects both Chemcraft and native output and does not change clustering itself.
  • -h, --help: show the command-line help.

If the installed structure_clustering command is not on your PATH, use:

python -m structure_clustering structures.xyz

Example

structure_clustering structures.xyz -ec clusters.chd --export-limit

A typical run reports the number of clusters and singles, the number of structures sorted out, cluster-size statistics, and connectivity statistics. In the default connected-only mode, the sorted-out count includes disconnected structures as well as redundant members removed when one representative per cluster is retained.

Connectivity model and configuration

Connectivity is derived from interatomic distances.

For atom pairs without a dedicated pair-distance rule, atoms are connected when

0.8\,\text{Å} < d < r(A) + r(B) + 0.4\,\text{Å,}

where $d$ is the distance between the atoms $A$ and $B$, with their covalent radii $r(A)$ and $r(B)$.

A pair-specific distance replaces that rule for the selected element pair. The CLI defines an O–H maximum distance of 2.3 Å by default; it can be replaced in the configuration file.

Example sc_config.toml:

[covalent]
He = 0.90
Ag = 1.59

[pair]
O-H = 2.30

[options]
only_connected_graphs = true

All sections and entries are optional:

  • [covalent] overrides the default covalent radius of an element.
  • [pair] defines a maximum distance for a specific unordered atom pair. O-H and H-O therefore refer to the same pair.
  • [options].only_connected_graphs controls whether disconnected graphs are eligible for clustering.

Distances are in Ångström and element symbols are case-sensitive.

Connected vs. disconnected graphs

Connected-only clustering is the default. In this mode, a disconnected input structure is sorted out entirely: it is not compared with other structures and does not appear in either result.clusters or result.singles.

Use --disconnected to include disconnected structures in clustering by graph topology. With that option enabled, disconnected structures can appear in clusters or as singles just like connected structures.

How clustering works

For each input structure, structure_clustering:

  1. Builds an undirected, element-labelled connectivity graph from the geometry.
  2. Computes inexpensive graph descriptors such as vertex/edge counts, element counts, element-degree combinations, and connected-component sizes.
  3. Applies WL refinement to obtain order-independent vertex colours and a compact graph signature.
  4. Buckets structures with matching signatures.
  5. Runs exact Boost graph-isomorphism checks only inside the surviving buckets.

The signatures and WL hashes are filters, not proofs of graph identity. Final cluster membership still requires exact labelled graph isomorphism.

This makes the current implementation conceptually different from the previous version, which compared each structure against existing cluster representatives much more broadly. The new approach moves most rejection work into reusable signatures and reserves exact isomorphism for plausible matches.

Graphs do not have a natural ordering of vertices. Weisfeiler-Lehman (WL) refinement creates a canonical, order-independent description of a graph’s structure.

Python API

Cluster structures from a multi-XYZ file

import structure_clustering

machine = structure_clustering.Machine()

# Optional connectivity overrides.
machine.setCovalentRadius(1, 0.42)
machine.addPairDistance(8, 1, 2.30)
machine.setOnlyConnectedGraphs(True)

structures = structure_clustering.import_multi_xyz("structures.xyz")
result = machine.cluster(structures)

print("clusters:", result.clusters)
print("singles:", result.singles)

result.clusters contains the clusters (groups), result.singles contains eligible structures that have no clustered equivalent. When connected-only mode is active, disconnected structures are excluded from both collections.

The indices in clusters and singles are zero-based indices into the original input structure list, so skipped disconnected structures can create gaps in the reported indices. Do not rely on the ordering of the cluster list itself.

Create a structure programmatically

from structure_clustering import Atom, Structure

structure = Structure(0)
structure.addAtom(Atom(8, -1.674872668,  0.000000, -0.984966492))
structure.addAtom(Atom(1, -1.674872668,  0.759337, -0.388923492))
structure.addAtom(Atom(1, -1.674872668, -0.759337, -0.388923492))

The integer passed to Structure(...) is the structure's stored ID; cluster membership is still reported using the structure's position in the input list.

Inspect clustered structures

After clustering, graph-derived information is available through result.structures:

structure = result.structures[5]

print("atoms:", structure.numAtoms)
print("connections:", structure.numConnections)
print("fragments:", structure.numFragments)
print("hash:", structure.getHash())

first_atom = structure.getAtom(0)
print("atomic number:", first_atom.atomic_number)
print("x coordinate:", first_atom.position.x)

print("fragment 0 atom indices:", structure.getFragmentAtomIndices(0))

Export from Python

result.export("clusters.dat")
result.exportChemcraft("clusters.chemcraft.xyz")

The native .dat format contains cluster groups, singles, graph edges, and geometries. Group and structure numbers written to that format are one-based, while the Python result indices are zero-based.

Structure hashes

Structure.getHash() returns a 16-character hexadecimal WL-style graph hash. The implementation uses deterministic 64-bit FNV-1a-based mixing, so the hash does not depend on Python's process-randomized hashing or C++ std::hash implementation details.

The hash is independent of vertex ordering and useful for keeping track of clusters across multiple program runs (e.g., molecular dynamics simulations). It is not a substitute for exact graph isomorphism: hash collisions and WL-indistinguishable non-isomorphic graphs are possible but very unlikely.

Example:

0504d8ff3dc965c0

Example structure with two connected components:

Structure Clustering example with two fragments

Changes to v1.1.6

  • Significantly improved performance: graph signatures and integer WL refinement now bucket plausible matches before exact isomorphism, instead of broadly comparing each structure with cluster representatives. Graph isomorphism remains the final equivalence test.
  • Deterministic hashing: the previous string-WL approach is replaced by shared integer-WL/FNV-based hashing.
  • Chemcraft CLI output: the CLI now writes Chemcraft-compatible output by default.

No breaking changes compared to v1.1.6. This version is confirmed to produce the exact same results as v1.1.6.

Development

Local development requires Python, CMake, a C++17 compiler, and Boost headers.

Create and activate a virtual environment, then install the project from the repository root:

python -m venv ~/venvs/structure_clustering_dev
source ~/venvs/structure_clustering_dev/bin/activate
pip install .

Python bindings are defined in src/main.cpp. When adding a new C++ API method or property that should be available from Python, expose it there as well.

The GitHub Actions workflow builds wheels for the configured Python/platform matrix when the corresponding workflow is triggered.

License

structure-clustering is distributed under the MIT License. See LICENSE.

Metadata

Release files for structure-clustering 1.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for structure-clustering 1.2.1
File Size Uploaded
structure_clustering-1.2.1.tar.gz 27.0 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for structure-clustering 1.2.1
File
structure_clustering-1.2.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
structure_clustering-1.2.1-cp313-cp313-win32.whl CPython 3.13 CPython 3.13 Windows x86-32 Details
structure_clustering-1.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
structure_clustering-1.2.1-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
structure_clustering-1.2.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
structure_clustering-1.2.1-cp312-cp312-win32.whl CPython 3.12 CPython 3.12 Windows x86-32 Details
structure_clustering-1.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
structure_clustering-1.2.1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
structure_clustering-1.2.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
structure_clustering-1.2.1-cp311-cp311-win32.whl CPython 3.11 CPython 3.11 Windows x86-32 Details
structure_clustering-1.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
structure_clustering-1.2.1-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
structure_clustering-1.2.1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
structure_clustering-1.2.1-cp310-cp310-win32.whl CPython 3.10 CPython 3.10 Windows x86-32 Details
structure_clustering-1.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
structure_clustering-1.2.1-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
structure_clustering-1.2.1-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
structure_clustering-1.2.1-cp39-cp39-win32.whl CPython 3.9 CPython 3.9 Windows x86-32 Details
structure_clustering-1.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details
structure_clustering-1.2.1-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details
structure_clustering-1.2.1-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details
structure_clustering-1.2.1-cp38-cp38-win32.whl CPython 3.8 CPython 3.8 Windows x86-32 Details
structure_clustering-1.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.17+ x86-64 Details
structure_clustering-1.2.1-cp38-cp38-macosx_11_0_arm64.whl CPython 3.8 CPython 3.8 macOS 11.0+ ARM64 Details
structure_clustering-1.2.1-cp37-cp37m-win_amd64.whl CPython 3.7 CPython 3.7 pymalloc Windows x86-64 Details
structure_clustering-1.2.1-cp37-cp37m-win32.whl CPython 3.7 CPython 3.7 pymalloc Windows x86-32 Details
structure_clustering-1.2.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.17+ x86-64 Details

Total release size: 4.5 MB

Release files / structure_clustering-1.2.1.tar.gz

Download URL structure_clustering-1.2.1.tar.gz
Size 27.0 kB
Tags Source
SHA-256 checksum
How to use checksums
3323ce2a1e9d4e89867fb752a2480bf8eefd10647e80097f4a4554ff00b2d656
BLAKE2b-256 checksum
How to use checksums
1786a9b412182958d2b282a1891386101e28225a9ca66a109c7149cb67d5cc89
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / structure_clustering-1.2.1-cp313-cp313-win_amd64.whl

Download URL structure_clustering-1.2.1-cp313-cp313-win_amd64.whl
Size 177.0 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
c941127d3511b28203d9eeb4e0d1eb7e8bc1e9cfdde6cae9177e0e266026901f
BLAKE2b-256 checksum
How to use checksums
aaee607ab9b3c31b2c41edbcde5e892bb5ec6ebeffb8235033898d2d0564e0b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / structure_clustering-1.2.1-cp313-cp313-win32.whl

Download URL structure_clustering-1.2.1-cp313-cp313-win32.whl
Size 146.0 kB
Tags CPython 3.13 Windows x86-32
SHA-256 checksum
How to use checksums
8db4b5b8448652e515185055eeb4057a46b55215ab3bdfaab76e0868d5fca6d0
BLAKE2b-256 checksum
How to use checksums
df1cac898138e3d5257b98573b4c941b84157cf52e621a7923984d9d6cbaff42
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / structure_clustering-1.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL structure_clustering-1.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 198.0 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
a2b29370d00f06c58a0b104c5ea7e642c7d48adfe0246a5ec302737cc2e08457
BLAKE2b-256 checksum
How to use checksums
49812a92dc310d840b6dda702a0bf7bb4ecfd849b826fa94af9ec09bf582c02e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / structure_clustering-1.2.1-cp313-cp313-macosx_11_0_arm64.whl

Download URL structure_clustering-1.2.1-cp313-cp313-macosx_11_0_arm64.whl
Size 150.8 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
124c22dd5e8bdc8f2cb740f4e829367a0373a3bd2fc407aa7abefab8a80a55c4
BLAKE2b-256 checksum
How to use checksums
c447b58c7fd4a951df8727ab44991968701addec1c8c0f0f69b3a1770bacff2a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / structure_clustering-1.2.1-cp312-cp312-win_amd64.whl

Download URL structure_clustering-1.2.1-cp312-cp312-win_amd64.whl
Size 176.9 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
e5612f0e95088a781b24c7dcf60cde0d2221457c7a4a6e74e64a84c52b8443f6
BLAKE2b-256 checksum
How to use checksums
e6d31c9a404a60400fc076103349b5341a138f8428d551e3487e076c537efbd8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / structure_clustering-1.2.1-cp312-cp312-win32.whl

Download URL structure_clustering-1.2.1-cp312-cp312-win32.whl
Size 146.0 kB
Tags CPython 3.12 Windows x86-32
SHA-256 checksum
How to use checksums
00a03b3e90a20c929267e6e6edb9d032404ca90170d867a2d2d060e83ee2aee1
BLAKE2b-256 checksum
How to use checksums
4eda99a6bbd1d8a9e7c9c706639e1f4fc71ed35f3fff1fee08da3ad760f95467
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / structure_clustering-1.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL structure_clustering-1.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 197.9 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
a39adf73e8672fa64a6d384128f1bfd1986006d9b994397124ed41d360cc28a5
BLAKE2b-256 checksum
How to use checksums
5cf0f559bd35a240406c1f1cebe996e897c7bd23dc985f89e5503e8db96638e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / structure_clustering-1.2.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL structure_clustering-1.2.1-cp312-cp312-macosx_11_0_arm64.whl
Size 150.8 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c1928a160721dcddc707e2c4dbc113a974cc5c077c97fd84ecabea66de95405f
BLAKE2b-256 checksum
How to use checksums
014375271e2e85f9a594fce7b22546cf4dd8daf76c0413c7809e7017907f7158
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / structure_clustering-1.2.1-cp311-cp311-win_amd64.whl

Download URL structure_clustering-1.2.1-cp311-cp311-win_amd64.whl
Size 174.6 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
c8fc968bd9e461e09483b062cf225033ef8123ea0be576bffaaa3e3df21eb1a9
BLAKE2b-256 checksum
How to use checksums
dded45b552f72df5a74c2878cb190a8f5561b29b1cbf1ebfe1f3878de88aaea1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / structure_clustering-1.2.1-cp311-cp311-win32.whl

Download URL structure_clustering-1.2.1-cp311-cp311-win32.whl
Size 145.6 kB
Tags CPython 3.11 Windows x86-32
SHA-256 checksum
How to use checksums
dc784c5355ffb54342e71eaab10864a269d93289785ca538b635e9b5a8131c65
BLAKE2b-256 checksum
How to use checksums
f5abbb4a82409794b557983562d03cb9eee77b581b47639e6d3dc62a191a09a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / structure_clustering-1.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL structure_clustering-1.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 197.9 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
4e532a818786c4ab66478255218c1693934bcaa522de806ce2bfb18ebd1a095b
BLAKE2b-256 checksum
How to use checksums
a0cd5954b7df6a57e05d7867fbdc097f2cf668cb5d933f5406d34a47314e66ee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / structure_clustering-1.2.1-cp311-cp311-macosx_11_0_arm64.whl

Download URL structure_clustering-1.2.1-cp311-cp311-macosx_11_0_arm64.whl
Size 150.2 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c709a41a888c3c01a61a3b0c58468d5f3c22c4bd14227d561e5ec893346f9131
BLAKE2b-256 checksum
How to use checksums
cf1c6bb473fed100864ab8b054290c3504dc2dd2ef63f0bb217e06f39095ace0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / structure_clustering-1.2.1-cp310-cp310-win_amd64.whl

Download URL structure_clustering-1.2.1-cp310-cp310-win_amd64.whl
Size 173.5 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
21373beb04453ef7ab920684bf7d5196820f3aa9f6173f6dfeb492dc1301c353
BLAKE2b-256 checksum
How to use checksums
c9ccdda4304c90c1e117b5dae3bf01fafc086ca39efa7a7c8437e2a20b731cb3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / structure_clustering-1.2.1-cp310-cp310-win32.whl

Download URL structure_clustering-1.2.1-cp310-cp310-win32.whl
Size 144.8 kB
Tags CPython 3.10 Windows x86-32
SHA-256 checksum
How to use checksums
ea8a2d54c815dc0622d6f548266f22602e84faa1f9f676409d69eb1c76ba3c9a
BLAKE2b-256 checksum
How to use checksums
ecc2ef6121b395960c7aa04ccadff9054bbc81d6390b4a36dcae2fd666ea8b1d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / structure_clustering-1.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL structure_clustering-1.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 196.6 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
50f6b88dbaf306dbab2604901e1eb3a0e2f3668780b1cd194779307dc57eb883
BLAKE2b-256 checksum
How to use checksums
c5b7074339e557d553325156e6fc7969d2fae1d929ee4f1288803c416a91d4d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / structure_clustering-1.2.1-cp310-cp310-macosx_11_0_arm64.whl

Download URL structure_clustering-1.2.1-cp310-cp310-macosx_11_0_arm64.whl
Size 148.8 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
80f195cae944260011cfab57e5bfb36f3661da18d521936a75de931e9dfda2fc
BLAKE2b-256 checksum
How to use checksums
b5fb639406f37bbb04e7a2bf1a0f8b265b34ee66356f8dffe2c74ad181e96b01
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / structure_clustering-1.2.1-cp39-cp39-win_amd64.whl

Download URL structure_clustering-1.2.1-cp39-cp39-win_amd64.whl
Size 173.7 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
785341f7b46d0b0ec8255085a732f30fd94cf8cb0db0c4ec7756714e63f222da
BLAKE2b-256 checksum
How to use checksums
45e3cf1ec8c8a858f501b53ee9aab57cacc3d11a35f668183829665a32c0f6ef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / structure_clustering-1.2.1-cp39-cp39-win32.whl

Download URL structure_clustering-1.2.1-cp39-cp39-win32.whl
Size 145.0 kB
Tags CPython 3.9 Windows x86-32
SHA-256 checksum
How to use checksums
7f1ad21be589ac709ebf01a79d094592b921ff66db35eaf75279d19575f828b4
BLAKE2b-256 checksum
How to use checksums
89b513a299ebb1d797c567305a99012da32c25dbb30edca988b04f70eff716c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / structure_clustering-1.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL structure_clustering-1.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 196.8 kB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
09fcbe200c22566b0e92ff4843fbc8e8a92df95e134c6784ff51c66daa41aee5
BLAKE2b-256 checksum
How to use checksums
f125c5bd608fa2c23674337d06eca799c771fb8ed9014983797076c3bd9b4dff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / structure_clustering-1.2.1-cp39-cp39-macosx_11_0_arm64.whl

Download URL structure_clustering-1.2.1-cp39-cp39-macosx_11_0_arm64.whl
Size 149.0 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a7ebdbe97d95c362ffc3243136fc3054dc51d86733eb8d7eca00bbc22a072c2b
BLAKE2b-256 checksum
How to use checksums
64ef0d000f742d58d6a7c91a33cdfcf8df89d8060e63e36a8ec86835f368665c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / structure_clustering-1.2.1-cp38-cp38-win_amd64.whl

Download URL structure_clustering-1.2.1-cp38-cp38-win_amd64.whl
Size 173.5 kB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
71e0386886b2d50220f55734379cd7b05cd6e067d7631ecd7b1f91ef4ea24fde
BLAKE2b-256 checksum
How to use checksums
397ae1a823bf91f8fd2c07a2a176a7f29355de1dbdede2c4652cc8631b5c09ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / structure_clustering-1.2.1-cp38-cp38-win32.whl

Download URL structure_clustering-1.2.1-cp38-cp38-win32.whl
Size 143.4 kB
Tags CPython 3.8 Windows x86-32
SHA-256 checksum
How to use checksums
ff68c8a62622135e65f3472bd2471b3ccab066c32fbe04fecdad047679034566
BLAKE2b-256 checksum
How to use checksums
e71a7a235052303964f5461b673c91ace9f32a7cb639162bc056982b568ccc68
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / structure_clustering-1.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL structure_clustering-1.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 195.5 kB
Tags CPython 3.8 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
76b8338c0be0b8049822154590fc22ebcabff23b2c92bf398bd0bb8412d74149
BLAKE2b-256 checksum
How to use checksums
e51e100d972d2745489cb023b76b5f90942697d484e0ec44532dbb8f695994ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / structure_clustering-1.2.1-cp38-cp38-macosx_11_0_arm64.whl

Download URL structure_clustering-1.2.1-cp38-cp38-macosx_11_0_arm64.whl
Size 147.6 kB
Tags CPython 3.8 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d5a11e10b487f7fa8cfabcc98d7a3b0f5f39a237f228c410ef84c6c07f69fdcd
BLAKE2b-256 checksum
How to use checksums
f582c26526e536bd0712bd22b32df27d0dadfd91bd0d3b2429a24fc8b6f9236f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / structure_clustering-1.2.1-cp37-cp37m-win_amd64.whl

Download URL structure_clustering-1.2.1-cp37-cp37m-win_amd64.whl
Size 158.2 kB
Tags CPython 3.7 CPython 3.7 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
52339a20a4b2715d66555e979d899eb5b3619345c36253067ae93731dbb9c138
BLAKE2b-256 checksum
How to use checksums
ee0c7a838130a5d03eba94fa84a9a9642aab0286ca889559c10c2ec53bc25b5a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / structure_clustering-1.2.1-cp37-cp37m-win32.whl

Download URL structure_clustering-1.2.1-cp37-cp37m-win32.whl
Size 133.9 kB
Tags CPython 3.7 CPython 3.7 pymalloc Windows x86-32
SHA-256 checksum
How to use checksums
09328364e3c84efc1c14789d7ad06afb6c57339fc6ed777d150a6c5100e1f0ca
BLAKE2b-256 checksum
How to use checksums
8cc3058fb7062489e7b0ce842b6370885e8077adb1f625077b4a0ef73a1dff66
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / structure_clustering-1.2.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL structure_clustering-1.2.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 180.0 kB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
1a39c6f7a2d668e63a7ab610f3f73bd33a618bcef94b33c1ef1406aabd06cd95
BLAKE2b-256 checksum
How to use checksums
01eefb496fd762a9f0b54e2a43dd46b6df6b73a9287b8afbc87a653b5c5bbfb4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.2.1 This release

28 release files

1.2.0

28 release files

1.1.6

28 release files

1.1.5

28 release files

1.1.4

28 release files

1.1.3

28 release files

1.1.2

30 release files

1.1.1

7 release files

1.1.0

7 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page