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 write only a deduplicated set of structures, use --representatives-only:

structure_clustering structures.xyz --representatives-only

This keeps the first structure from each cluster and all unique singles in the exported file. Clustering itself is unchanged; the option only filters the written output. If native output is requested with -e, the same filtering is applied there as well.

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]]
                            [--representatives-only]
                            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.
  • --representatives-only: export only the first structure from each cluster, plus all unique single structures. 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 --representatives-only

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.0

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.0
File Size Uploaded
structure_clustering-1.2.0.tar.gz 26.6 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for structure-clustering 1.2.0
File
structure_clustering-1.2.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
structure_clustering-1.2.0-cp313-cp313-win32.whl CPython 3.13 CPython 3.13 Windows x86-32 Details
structure_clustering-1.2.0-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.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
structure_clustering-1.2.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
structure_clustering-1.2.0-cp312-cp312-win32.whl CPython 3.12 CPython 3.12 Windows x86-32 Details
structure_clustering-1.2.0-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.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
structure_clustering-1.2.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
structure_clustering-1.2.0-cp311-cp311-win32.whl CPython 3.11 CPython 3.11 Windows x86-32 Details
structure_clustering-1.2.0-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.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
structure_clustering-1.2.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
structure_clustering-1.2.0-cp310-cp310-win32.whl CPython 3.10 CPython 3.10 Windows x86-32 Details
structure_clustering-1.2.0-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.0-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
structure_clustering-1.2.0-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
structure_clustering-1.2.0-cp39-cp39-win32.whl CPython 3.9 CPython 3.9 Windows x86-32 Details
structure_clustering-1.2.0-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.0-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details
structure_clustering-1.2.0-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details
structure_clustering-1.2.0-cp38-cp38-win32.whl CPython 3.8 CPython 3.8 Windows x86-32 Details
structure_clustering-1.2.0-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.0-cp38-cp38-macosx_11_0_arm64.whl CPython 3.8 CPython 3.8 macOS 11.0+ ARM64 Details
structure_clustering-1.2.0-cp37-cp37m-win_amd64.whl CPython 3.7 CPython 3.7 pymalloc Windows x86-64 Details
structure_clustering-1.2.0-cp37-cp37m-win32.whl CPython 3.7 CPython 3.7 pymalloc Windows x86-32 Details
structure_clustering-1.2.0-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.0.tar.gz

Download URL structure_clustering-1.2.0.tar.gz
Size 26.6 kB
Tags Source
SHA-256 checksum
How to use checksums
06d3e175065462d678137491fceb64af3f07acf4e0b6a9dca6bebb8d4e6016b1
BLAKE2b-256 checksum
How to use checksums
c5f5a5395cadf8fed555db286498f3534dd8c73cb0c24bdfb4ef91ab0aeb1523
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 14, 2026.

Transparency log

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

Download URL structure_clustering-1.2.0-cp313-cp313-win_amd64.whl
Size 176.7 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
5cb654791f4d05a4b156711b6e8352eca2b57abc65f4fa5156158f8426788e2b
BLAKE2b-256 checksum
How to use checksums
29f808e9d0932ef15b4bdde86b57d8abfe966604f7bd8148421b5342a9524f78
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 14, 2026.

Transparency log

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

Download URL structure_clustering-1.2.0-cp313-cp313-win32.whl
Size 145.7 kB
Tags CPython 3.13 Windows x86-32
SHA-256 checksum
How to use checksums
1cef2d0acb37aa37e29ffe6660c90f2acd76904d8d936b05cb76f50ccf1d4efc
BLAKE2b-256 checksum
How to use checksums
5abdacaa14d597479541959a87e2a26e5142d330175bd3e26d18fd5adc75fa3b
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 14, 2026.

Transparency log

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

Download URL structure_clustering-1.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 197.8 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
28008fa6860240a68b37ada38f7fc66b3ab369f8c5c731ce02f56571a026180f
BLAKE2b-256 checksum
How to use checksums
f4e5a3e3ad68cafac446ed2922d187ce652025a9901d36fc31683930008fda1e
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 14, 2026.

Transparency log

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

Download URL structure_clustering-1.2.0-cp313-cp313-macosx_11_0_arm64.whl
Size 150.6 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
6a05fe25dce031ddec3433894f77f468e3dc307050919dacf5c2ded31c4a44a4
BLAKE2b-256 checksum
How to use checksums
c341bbdeddefd8b8b171b1bc71e10e32716132f9903345de7d40cfa1d3469da1
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 14, 2026.

Transparency log

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

Download URL structure_clustering-1.2.0-cp312-cp312-win_amd64.whl
Size 176.6 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
683a8ad9867b5ed9d036c1e31e36913f598bc22887f6aeed0aef89a2278dcbe4
BLAKE2b-256 checksum
How to use checksums
a05226957dc6cc005b93e49cbdaec6913a16f696729a4f3d1048aaf37f7aa407
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 14, 2026.

Transparency log

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

Download URL structure_clustering-1.2.0-cp312-cp312-win32.whl
Size 145.8 kB
Tags CPython 3.12 Windows x86-32
SHA-256 checksum
How to use checksums
5e3606b60f64c85bdbaa93224e0fc496840172dd15df12dddf50b59d8e8ee7ec
BLAKE2b-256 checksum
How to use checksums
1f97d91e329fa190b113c41583598b71c0b3868c281277b9ac4036a948597fea
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 14, 2026.

Transparency log

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

Download URL structure_clustering-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 197.6 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
f1021bca358cc91a3577d44f30249f72648b18fd40025c9858d5a8b0e9753d48
BLAKE2b-256 checksum
How to use checksums
fde9a5e7b42eee8f53eb7c7e55bf43cc63ec59a73159e1db597930be6f77e405
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 14, 2026.

Transparency log

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

Download URL structure_clustering-1.2.0-cp312-cp312-macosx_11_0_arm64.whl
Size 150.5 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
0ca711a2a74c584eaad1a5479e6eb53db070cce58818d0cab0e4874778501fc0
BLAKE2b-256 checksum
How to use checksums
80652575c4919b644007002ae9b93e33a620002b814deb1a6bef06184adf18dc
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 14, 2026.

Transparency log

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

Download URL structure_clustering-1.2.0-cp311-cp311-win_amd64.whl
Size 174.3 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
21ebaf66a941c77276e20c2077c60d6ade4e994e7f84cf0401025b1fad16aa15
BLAKE2b-256 checksum
How to use checksums
9df8c91e92160d284a4371739eed5544753483671c9a6a42849854ff68f1d2f3
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 14, 2026.

Transparency log

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

Download URL structure_clustering-1.2.0-cp311-cp311-win32.whl
Size 145.3 kB
Tags CPython 3.11 Windows x86-32
SHA-256 checksum
How to use checksums
500b233b18a5d590c97526da7d80f4aed313b3d77f430d4fe11be305ee4de854
BLAKE2b-256 checksum
How to use checksums
c799fd7ef362db44ca6f62628c553bf9d0c29615e8057cae117327251744acf3
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 14, 2026.

Transparency log

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

Download URL structure_clustering-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 197.6 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
183b80d53407a0c5e1096ff55a9cd202789e400ab4776008a3fbd905e41b6d0f
BLAKE2b-256 checksum
How to use checksums
08d9e7f2b26ff630b682711bda1cf2f1e7e7c6dfdea56935ce3b0386c99c6b1c
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 14, 2026.

Transparency log

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

Download URL structure_clustering-1.2.0-cp311-cp311-macosx_11_0_arm64.whl
Size 149.9 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
29edb0da9deaefe98bf5d980635ccf9c14e2642fce355e1950e4716fc1f613b5
BLAKE2b-256 checksum
How to use checksums
c387b8890667fcd4de07718de1541a568adbf78c8ef186e57c76793e296e275a
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 14, 2026.

Transparency log

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

Download URL structure_clustering-1.2.0-cp310-cp310-win_amd64.whl
Size 173.2 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
755d13541acb84ea44c3cca98a53df973ab4022f4af85077d643f2d3599a2997
BLAKE2b-256 checksum
How to use checksums
be1da9d0d49b0ba0f594902b4dd4eedc1916db5eea075f9788bef462f373c619
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 14, 2026.

Transparency log

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

Download URL structure_clustering-1.2.0-cp310-cp310-win32.whl
Size 144.5 kB
Tags CPython 3.10 Windows x86-32
SHA-256 checksum
How to use checksums
d7de82e586fe1e8c98bd9233c5ff14b58732ee791ace0527cdb89079b718cd11
BLAKE2b-256 checksum
How to use checksums
220b3507497387639b3792543e3f3a6715db3c52297d8fa7767e2498547aedb2
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 14, 2026.

Transparency log

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

Download URL structure_clustering-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 196.3 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
1461dce09ceac9ba5392a5a288babe9a36afd94a91f4cd5cdc7e673c79bedd08
BLAKE2b-256 checksum
How to use checksums
c5807d4e5c8989b46c216cf59600051580004c8f27c21de908463f7a2518f05d
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 14, 2026.

Transparency log

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

Download URL structure_clustering-1.2.0-cp310-cp310-macosx_11_0_arm64.whl
Size 148.5 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
0866d8d0671fb7a3fb46acdc919a00bcd1afd6e23b3ce24e588935700ed8cb36
BLAKE2b-256 checksum
How to use checksums
0eb4168b0e8c34899f050c5502d63ea638206b89e9378a44d09516e882506be0
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 14, 2026.

Transparency log

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

Download URL structure_clustering-1.2.0-cp39-cp39-win_amd64.whl
Size 173.4 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
609d0c93c82057f761ebb5144aa13ac3440b3ef68dc3f0408a567d399602cbc0
BLAKE2b-256 checksum
How to use checksums
4699b5076ad4788e4b76afacc5b8da0ec73e7f37c6478628d476c14c6248b487
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 14, 2026.

Transparency log

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

Download URL structure_clustering-1.2.0-cp39-cp39-win32.whl
Size 144.7 kB
Tags CPython 3.9 Windows x86-32
SHA-256 checksum
How to use checksums
53050dbd76ae4b078917dedb7e3008c867fc81ee2be927b2209b91a10311dafa
BLAKE2b-256 checksum
How to use checksums
8512f17076fea0298dfe6045429976379932162414f750170f36bd3c6dbb2ad1
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 14, 2026.

Transparency log

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

Download URL structure_clustering-1.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 196.6 kB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
1ee66efdaaf91830bd914c08dd16dcc6fff55287cbc7b2c1e5ea8a9e19bbe8c6
BLAKE2b-256 checksum
How to use checksums
f702caecf19ee43f04826f54d3d85257d690893dfc37c9a7f7f7f42c23c99ca5
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 14, 2026.

Transparency log

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

Download URL structure_clustering-1.2.0-cp39-cp39-macosx_11_0_arm64.whl
Size 148.7 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
5272e1b2ed2c96f26d5487baad8a7826c43b2d5b6981d6fe42af228b80a4ecf5
BLAKE2b-256 checksum
How to use checksums
efa94997bc6c62a69dc5eb765a010d9070681411b02d378da621d1d46cd435cf
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 14, 2026.

Transparency log

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

Download URL structure_clustering-1.2.0-cp38-cp38-win_amd64.whl
Size 173.2 kB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
0a74d03bb037a0a3730ea8b000c2eabc78302a3045815e23e791279921f53e51
BLAKE2b-256 checksum
How to use checksums
9d0e7e635568619d8a1e0c062e9b47cf6cfe06eb159193107b3a95771f5e5232
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 14, 2026.

Transparency log

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

Download URL structure_clustering-1.2.0-cp38-cp38-win32.whl
Size 143.1 kB
Tags CPython 3.8 Windows x86-32
SHA-256 checksum
How to use checksums
aa6f741780a58519a77a2e7eb7a9451d0126ec2af29e1bd01831827bfb9c4ef8
BLAKE2b-256 checksum
How to use checksums
cbaca3a46ebb8dd4a4605283f6c1c16b45f40e72ad65c604f0efbb8ba7b0ffc2
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 14, 2026.

Transparency log

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

Download URL structure_clustering-1.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 195.2 kB
Tags CPython 3.8 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
e518bc08eeeb6e2cdd0b15637d6df6aae7e7c6c8e79faba13d1ee54508dc8327
BLAKE2b-256 checksum
How to use checksums
17d946c268a179677d694f2a6b560b67db695e1767fd7984d9a48982d74cd826
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 14, 2026.

Transparency log

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

Download URL structure_clustering-1.2.0-cp38-cp38-macosx_11_0_arm64.whl
Size 147.3 kB
Tags CPython 3.8 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8eedb206d09ae5baad52fc1f5873aefed3cf96e3dc279038973eb00575144ffc
BLAKE2b-256 checksum
How to use checksums
afaac13651ad1d803435fd9b214eba24450218944ae3075ca6a76017bac98dbe
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 14, 2026.

Transparency log

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

Download URL structure_clustering-1.2.0-cp37-cp37m-win_amd64.whl
Size 157.9 kB
Tags CPython 3.7 CPython 3.7 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
0f44d6497f3b703eedc80a5fbec97d2033606fcdcbf88b949e3bd823a3075d18
BLAKE2b-256 checksum
How to use checksums
e5576726fb49c813631e5f48c1d84d8cf2f5225e07265b91b8e205523bc5c65a
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 14, 2026.

Transparency log

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

Download URL structure_clustering-1.2.0-cp37-cp37m-win32.whl
Size 133.7 kB
Tags CPython 3.7 CPython 3.7 pymalloc Windows x86-32
SHA-256 checksum
How to use checksums
aba8fb75d4037cc2d186533a3f0eb92674f55bf5e3f46fa684f90a6b3ac0e217
BLAKE2b-256 checksum
How to use checksums
288a6e5a9617848a20e24b89332f6f8e900043e38c75f045ca8a5c57868a4627
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 14, 2026.

Transparency log

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

Download URL structure_clustering-1.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 179.8 kB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
0bb315641c6d31b62b32a9034b3decf92e4aa06944e2757c562ee77f277b811c
BLAKE2b-256 checksum
How to use checksums
97fc82c47b9e874bf0923cf5e34fd0c5235f0546ca16c47df270e1e7a5fb94d1
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 14, 2026.

Transparency log

Release history Release notifications | RSS feed

1.2.1

28 release files

This release

1.2.0 This release

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