Skip to main content

Dual-graph GNN sampler for fine regular triangulations of 2D lattice polygons

Project description

dualGNN

Nate MacFadden, Liam McAllister Group, Cornell

Paper: Sampling Triangulations and Calabi-Yau Threefolds with Autoregressive GNNs (arXiv:2605.27770; PDF in this repo)

PyPI DOI HF Open in Colab

This repo contains a small graph-neural-network sampler for fine regular triangulations (FRTs) of convex 2D lattice polygons.

These FRTs are useful in string theory. More generally, they are a combinatorial population to sample from with nontrivial local and global constraints. At the time of writing this, the 'dualGNN' model in this repo is the most uniform sampler tested for polygons up to $\sim10^{20}$ triangulations.

Model

The idea is to represent a triangulation $\mathcal{T}_i$ by its dual graph: nodes are simplices $\sigma_a\in\mathcal{T}_i$ and edges are drawn between adjacent simplices. By combining into $G$ the dual graphs of all fine triangulations (if the same simplex $\sigma_a$ is in another triangulation $\mathcal{T}_j$, merge the nodes), one can view the problem as selecting an appropriate subgraph from $G$. We do so autoregressively, adding simplices 1-by-1 to the subgraph through

  1. having the model assign probabilities to the nodes (via message passing),
  2. sampling a node according to these probabilities, and then
  3. masking out nodes which cannot coexist with the newly chosen simplex.

To give the model enough information to do this, we encode the polytope's 'oriented matroid' via certain vectors corresponding to 'signed circuits' (see page 17 here or this wonderful book). The matroid characterizes the count of fine triangulations while our specific vectors (slightly richer than actual circuits) characterize the regularity of these triangulations (DRS). More so, circuits are invariant under the $\mathrm{GL}(d,\mathbb{Z})\ltimes\mathbb{Z}^d$ symmetries of the polytope (we weaken to $\mathrm{SL}(d,\mathbb{Z})\ltimes\mathbb{Z}^d$ - see paper), giving the model strong inductive bias. This information is specifically encoded on the edges of $G$ and is concatenated with the messages passed through said edges.

This model is trained via supervised learning on a pool of fine regular triangulations. We allow bootstrapping of the pool (similar to CYTransformer) since the polygons of primary interest have too many triangulations to enumerate (otherwise, enumerating them and sampling from them would be preferable). We also fine-tune with REINFORCE.

Performance

The model

  1. is the most uniform sampler of FRTs tested (there are a few methods due to their application in string theory; we include some custom methods, too),
  2. is general (a single model can be trained that samples FRTs from arbitrary polygons),
  3. is small (~92k parameters; trained in ~7.5hrs; checkpoint attached to this repo),
  4. shows good inductive bias (generalizes zero shot), and
  5. is competitive in speed compared to the other tested samplers.

Most of the performance is attributed to the inductive bias. See the paper.

The major limitations are that this model was trained with $K=16$ message passing rounds - if the polygon of interest has $\mathrm{diam}(G)\gtrsim K$ then performance is expected to degrade. Additionally, while dualGNN enhances the sampling of regular triangulations generally, it does not only sample regular triangulations (irregulars sneak in). Neither issue inhibits use in practice - most polygons of interest have much smaller diameters and regularity is typically so prevalent that filtering on it is a good strategy.

For string theory applications, it generates uniform samples (when paired with my NTFE algorithm) up to $h^{1,1}=86$. Likely higher (we generated samples consistent with being uniform at $h^{1,1}=128$, but it's hard to gain enough confidence in uniformity here). The model runs all the way up to the max $h^{1,1}=491$, but checking uniformity here would require assessing it out of a pool of at least $10^{167}$, which our statistics definitely cannot do. Also, we'd likely need more message passing rounds ($K=16$ in attached model).

Results

The figures below are taken from the paper (included in this repo) and are not directly reproducible from the code here; the repo ships inference and a small uniformity demo (uniformity/), not the full training and evaluation pipeline. See the paper for methodology, hardware, and sample counts.

Zero-shot to a much larger polygon. The model, trained on the single triangle $\mathrm{conv}{(0,0),(0,4),(6,0)}$ ($405{,}706$ FRTs) and applied zero-shot to $[0,4]^2$ ($735{,}430{,}548$ FRTs), reaches the uniform ($1/N$) floor and is faster than flip_walk, the only other sampler that reaches it; pushing/grow2d/fast are quicker but biased.

KL vs sample time, zero-shot on [0,4]^2

Most uniform across many polygons. Over $200{,}000$ samples on $20$ held-out polygons ($11 \le N_\mathrm{pts} \le 18$), dualGNN is the most uniform sampler tested at every size, tying flip_walk only at $N_\mathrm{pts}=18$ while being $\sim4\times$ faster.

multi-polygon uniformity

No sample autocorrelation. A good sampler's draws should be as far apart as independent uniform draws. Plotting the flip distance between samples $k$ apart, normalized against that uniform baseline, dualGNN matches uniform ($0$) at every lag while flip_walk's nearby samples are correlated (closer together) until about $k=20$.

multi-polygon autocorrelation

Downstream: more diverse Calabi-Yau samples. Combined into Calabi-Yau threefolds via the NTFE algorithm, dualGNN's samples span far wider flop distances than the de facto random_triangulations_fast ($130$ vs $46$ mean flops at $h^{1,1}=86$; $204$ vs $22$ at $h^{1,1}=128$), a tradeoff for its uniformity.

CY flop-distance histograms

Benchmark your own sampler against these results: the paper's 20 held-out polygons (with exact FRT counts) and the uniformity-scoring protocol ship in eval/.

Install

For inference (sampling with the shipped model):

pip install dualgnn

The model checkpoints ship inside the package. By default this pulls the standard PyTorch build, which on Linux bundles CUDA (a multi-GB download); on a CPU-only or Apple-silicon machine, install the matching wheel first (e.g. pip install torch --index-url https://download.pytorch.org/whl/cpu) then pip install dualgnn. The tutorials' plotting and the GUI additionally need matplotlib (pip install dualgnn[viz]).

For training (and development), use the conda environment -- the training pipeline needs CYTools, which pip cannot install (pip install dualgnn[train] fails on purpose and points you here):

conda env create -f environment.yml
conda activate dualgnn

Inference

One call samples deduplicated fine triangulations of a polygon with the shipped model (packaged as data -- works from any install, CPU included):

import numpy as np
from dualgnn import sample_frts

pts = np.array([[x, y] for x in range(5) for y in range(5)], dtype=np.int64)  # [0,4]^2
fts = sample_frts(pts, 8)                              # (<=8, 32, 3) int8
fts = sample_frts(pts, 8, only_regular=True, seed=0)   # FRTs only

The lower-level pieces are available too -- DualGNN.default() is the shipped REINFORCE-finetuned model (cached per device), DualGraph the candidate complex, and sample the raw with-replacement sampler:

from dualgnn       import DualGraph, sample
from dualgnn.model import DualGNN

net = DualGNN.default()                  # or DualGNN.from_ckpt(path)
fts = sample(net, DualGraph(pts), Ntriangs=8)          # (8, 32, 3) int8

Stable contract (downstream consumers, e.g. CYTools, assume this): pts is the polygon's full lattice-point set as an (Npts, 2) int array, and returned simplices index into pts in the caller's row order. Every sample is a fine triangulation of the full point set, returned in canonical form (vertex indices sorted within each simp, simps lex-sorted), so exact duplicates compare equal under np.unique(axis=0). Regularity is learned, not guaranteed -- filter with only_regular=True (or your own check) if you need FRTs.

See tutorials/inference_demo.ipynb for a runnable version with plotting (open it in Colab -- no install needed).

For comparison, two reference samplers are bundled (CYTools-free, both return (simps, status)):

from dualgnn import grow2d, pushing

simps, status = grow2d(pts, seed=0)    # random fine triangulation
simps, status = pushing(pts, seed=0)   # random fine pushing triangulation

GUI

For fun, we include a GUI demo (it's what's shown at the top of this README): python scripts/visualize.py. It allows you to build an arbitrary (or random) lattice polytope (left), build its graph $G$ (right), and either select nodes manually (clicking) or randomly (n-button). This is the same model trained and studied in the paper. It should run even on light hardware... I tested it on my M1 MacBook.

String Theory

Pair the 2D sampler with the NTFE algorithm to sample fine, regular, star triangulations (FRSTs) of a reflexive 4D polytope:

import numpy as np
from cytools import Polytope
from dualgnn.model import DualGNN
from dualgnn.ntfe  import sample_ntfes

verts = [[-1, -1, -1, -1], [-1, -1, -1,  3], [-1, -1,  3, -1], [-1,  3, -1, -1],
         [ 1, -1, -1, -1], [ 1, -1, -1,  3], [ 1, -1,  3, -1], [ 1,  3, -1, -1]]
poly = Polytope(np.array(verts, dtype=np.int64))                           # reflexive, h11 = 86
net  = DualGNN.default()
heights = sample_ntfes(poly, net, N=20, N_face_triangs=1_000, n_workers=4) # (20, npts) float64

Each row is a height vector defining an FRST; pass as_triangs=True to get CYTools Triangulation objects instead. See tutorials/ntfe_demo.ipynb.

Train end-to-end

Requires the conda environment (environment.yml) -- these scripts import CYTools, which pip cannot provide.

Three commands -- generate polygons, supervised train, REINFORCE fine-tune:

# 1) sample polygons (Npts 5..40, 3 per bucket); writes polygons.parquet
python scripts/make_polygons.py --out runs/data/polygons.parquet

# 2) supervised train (~5 h on a Blackwell-class GPU at 500k steps)
python scripts/train.py \
    --run-dir runs/sft \
    --src-polygons runs/data/polygons.parquet \
    --src-fts-dir  runs/data/fts \
    --n-steps 500000

# 3) REINFORCE fine-tune from the SFT final ckpt (~2 h at 10k steps)
python scripts/reinforce.py \
    --init-ckpt runs/sft/ckpt_0500000.pt \
    --run-path  runs/rl \
    --steps 10000

The FRT pool is auto-harvested per polygon on first use; you can also pre-harvest a specific polygon via python scripts/harvest.py --poly-id N.

Citation

If you use dualGNN, please cite Sampling Triangulations and Calabi-Yau Threefolds with Autoregressive GNNs:

@article{MacFadden:2605.27770,
  author        = {MacFadden, Nate},
  title         = {Sampling Triangulations and Calabi-{Y}au Threefolds with Autoregressive {GNN}s},
  year          = {2026},
  eprint        = {2605.27770},
  archivePrefix = {arXiv},
  primaryClass  = {hep-th},
  doi           = {10.48550/arXiv.2605.27770},
  url           = {https://arxiv.org/abs/2605.27770},
}

and/or this repository:

@software{dualGNN,
  author  = {MacFadden, Nate},
  title   = {dualGNN},
  year    = {2026},
  doi     = {10.5281/zenodo.20622920},
  url     = {https://github.com/natemacfadden/dualGNN},
  orcid   = {0000-0002-8481-3724},
}

Layout

src/dualgnn/          library code (DualGraph, DualGNN, sampler, training)
src/dualgnn/ckpts/    shipped checkpoints, packaged as data (D32K16 SFT,
                      D32K16 + REINFORCE = DualGNN.default())
scripts/              CLI entry points (train, reinforce, harvest, make_polygons, visualize)
eval/                 benchmark polygons + uniformity-scoring protocol
tutorials/             inference, NTFE demos
hf/                   Hugging Face model card

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dualgnn-0.0.4.tar.gz (2.5 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

dualgnn-0.0.4-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (3.6 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

dualgnn-0.0.4-cp314-cp314t-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

dualgnn-0.0.4-cp314-cp314t-macosx_10_15_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.14tmacOS 10.15+ x86-64

dualgnn-0.0.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (3.6 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

dualgnn-0.0.4-cp314-cp314-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

dualgnn-0.0.4-cp314-cp314-macosx_10_15_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

dualgnn-0.0.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (3.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

dualgnn-0.0.4-cp313-cp313-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

dualgnn-0.0.4-cp313-cp313-macosx_10_13_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

dualgnn-0.0.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (3.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

dualgnn-0.0.4-cp312-cp312-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

dualgnn-0.0.4-cp312-cp312-macosx_10_13_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

dualgnn-0.0.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (3.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

dualgnn-0.0.4-cp311-cp311-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

dualgnn-0.0.4-cp311-cp311-macosx_10_9_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

dualgnn-0.0.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

dualgnn-0.0.4-cp310-cp310-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

dualgnn-0.0.4-cp310-cp310-macosx_10_9_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

Details for the file dualgnn-0.0.4.tar.gz.

File metadata

  • Download URL: dualgnn-0.0.4.tar.gz
  • Upload date:
  • Size: 2.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dualgnn-0.0.4.tar.gz
Algorithm Hash digest
SHA256 10a61b3bfb6ec03c71bb28afc05e867f8808c58de022764fbf701497aa160c4a
MD5 606b2cb96e6428f6384bc88d4219d114
BLAKE2b-256 c51e38324202636ab63901b35dd40a3e16e23bb4da266752ad40e2243cfdfd88

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.4.tar.gz:

Publisher: publish.yml on natemacfadden/dualGNN

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dualgnn-0.0.4-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.4-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 277db2a3e5fe7ecd534d8d443b83be4a17871604e79d5d2de393b578b6c07653
MD5 1ead190c33271367cd858e1409c704c9
BLAKE2b-256 eed7804cbdfb7cff5e92e1c48cafd2f54c9b51a08403e0e36ce33ffa45db5b31

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.4-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on natemacfadden/dualGNN

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dualgnn-0.0.4-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.4-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fdee03857726c628d729c15a47d4bd949ec0a650492f62e84bbd5439908eb689
MD5 dff82008daf8ae3b8f7307a028e2b0e2
BLAKE2b-256 09b359055d54aa903936f3ee6ef5dddf83278e34a77ba1838ed0c74683cd0f26

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.4-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: publish.yml on natemacfadden/dualGNN

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dualgnn-0.0.4-cp314-cp314t-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.4-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 76990ef160ef09e66ba8520d8399dd1d38ea2935c569824314c17404f5343b39
MD5 e9bf87e78ee4f9312f48a367f7ef2e96
BLAKE2b-256 bc6f082dc9af1a73056989b1e96a131b703c0e1fb03ff5c2e63b90644e296a71

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.4-cp314-cp314t-macosx_10_15_x86_64.whl:

Publisher: publish.yml on natemacfadden/dualGNN

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dualgnn-0.0.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8cfa2061afa95b6d7261669ad3f4374818d7ad92c42bbdda1797bbd4847acf06
MD5 bb3bcaca504bae13562e9515f27abb27
BLAKE2b-256 8f921bcca1df16d06e93c73f1f252800c30229e059607ba00852ac052ba24c53

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on natemacfadden/dualGNN

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dualgnn-0.0.4-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.4-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 863218b685c31c31fb9cb57cf82e1a3068343f39cf86113d902c863008d7b13d
MD5 8306308e443570171a3e8b84e8b28ef9
BLAKE2b-256 7b42ad5b0bcce069c7b001788ed76aed699dca3ef5aff545544136bc1c5d6cc5

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.4-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: publish.yml on natemacfadden/dualGNN

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dualgnn-0.0.4-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.4-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 a0c51ef8d293f8817ccd62fe50bb72f71068a7179a1f0156e7a1ff4858d2a287
MD5 63435796c3c629831de8b527d88e181a
BLAKE2b-256 e4c9d2101935a97678efa3d487004758eea5d5f467b6e419189eec7933df5c69

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.4-cp314-cp314-macosx_10_15_x86_64.whl:

Publisher: publish.yml on natemacfadden/dualGNN

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dualgnn-0.0.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 866c49066e67610a1e36256211d209899d7fe8e712c903473ec5715e2147fe25
MD5 f5fde400c827a11c7b4ab794217373e1
BLAKE2b-256 cb7c2d5c3008e583acd739b90c222e65fc8565ff790923c1c26d124a0099e5ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on natemacfadden/dualGNN

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dualgnn-0.0.4-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c7bfa1eac825187eba2aee5b5344a7be7b77a51ee78564e8749059f172c7575b
MD5 87fba57ac7a9f308dd8ad52a356ec5d9
BLAKE2b-256 97d0c64ff6025e2b3078bb42ced2aa8f3941d5e5b00f2ccc8cea49a169353f8a

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.4-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on natemacfadden/dualGNN

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dualgnn-0.0.4-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.4-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 b60696ca3ddd703db5bdc75be403dccc9b199f3e13bee176b51d0243d904fe25
MD5 fbe5b87293e98578b33ba2e3cf8c2b2f
BLAKE2b-256 0be95036aa1a7e2f298424f9a33caaa807a175fc1c9a0c5ed83ab4c9deb25302

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.4-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: publish.yml on natemacfadden/dualGNN

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dualgnn-0.0.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c7178af90a5b2bd92b8fce8d373d2d67a7d318d27fcf2290deddb100f02a18e8
MD5 f91d10f7fc69c43e4b912719158f0bef
BLAKE2b-256 a036219131f174e4e8162e59729cca4b38ae8a65b59f3cc47bc245edcf511418

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on natemacfadden/dualGNN

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dualgnn-0.0.4-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9eaa7b835e5c1d3aea9cf851f16e4b81f54acac7b5f327c5cd3b70ecd58dff63
MD5 bd97b0e309e60e890787c3c229bb15de
BLAKE2b-256 bd0e18c2c24fa5a3a1901f898aa2e279b1887793778a770decf77a1a8177cdc2

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.4-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on natemacfadden/dualGNN

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dualgnn-0.0.4-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.4-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 382842fdc42e1e06bd9ab0cbf92a8939f791969451d6aefb1ab2110f01451fee
MD5 15cccc5566e4410b6be770d784f6a26d
BLAKE2b-256 96395a6e3a78429c8fbdfdefe47964b57f68062b215d4729e77d015f380daf9d

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.4-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: publish.yml on natemacfadden/dualGNN

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dualgnn-0.0.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d9798a2411377467c038f5609bc729d078b657b5dd28d95774eca602ca857db5
MD5 c0690f4037a24b97d55770992286a243
BLAKE2b-256 51f48e0090689534c79e25114ccdcbe5d9de1d849d3123c9f6b0f21a121f674b

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on natemacfadden/dualGNN

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dualgnn-0.0.4-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bf0dad4c16fa68ff7a34601050ec6cf684a2ef65cc1131a8eb05e0be608122fe
MD5 aa5e231eef2c84808702611e2ae9e00c
BLAKE2b-256 739fbb918168c20fa7ad57eb800b48cafb73cc0961630ae027d0a2e7fb43c6d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.4-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on natemacfadden/dualGNN

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dualgnn-0.0.4-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.4-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cf1bcdc9d1092742f31ae130ec4dc1812e5409bb6dfea2b5273e27ab1730a115
MD5 469e253e5690f7eca8b05d7cb395e375
BLAKE2b-256 2116ffc095ee1e71d8caac8f71b13a4623060d639a734cb6cd25252694bf86ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.4-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: publish.yml on natemacfadden/dualGNN

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dualgnn-0.0.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 106f64d348348ce083d802ab04e74e01ea1a6c20faa1e634fc24042a9c027f76
MD5 9f0f705413ab8e4ebfb1482a96eab029
BLAKE2b-256 a01a5d8d2e14c1eba6a07c9a4852951d0e4684247c390ea591caa4debc4bc4be

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on natemacfadden/dualGNN

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dualgnn-0.0.4-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 58a7dc46326b444555cdb4ff55b15524d2b7f095c8a07920add4aca341868817
MD5 598f38af3c8fd4a72a255c00d124daa2
BLAKE2b-256 52feedf98c8560b14a59e570a9f74f45904124f645d8f3f9cc450a19858da508

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.4-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on natemacfadden/dualGNN

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dualgnn-0.0.4-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.4-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b012c38a404e42711cb00cf1d214514be56efad5d7864eac751d739c9107998f
MD5 499b350ef38744723b0cbafe28dccaac
BLAKE2b-256 034f7f8f6511a98b31a658f5685bc7cb4ff3c82959b87dbd04512addd55a96b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.4-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: publish.yml on natemacfadden/dualGNN

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page