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 (eval/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]); the NTFE pipeline additionally needs CYTools from the conda environment below.

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.

The per-2-face FRT pools are identical across calls on the same polytope. To sample more NTFEs later without resampling them, ask the first call to hand the setup back, then feed it to the next call:

h1, ctx = sample_ntfes(poly, net, N=20, return_ctx=True)  # pools built once
h2      = sample_ntfes(poly, net, N=200, ctx=ctx)         # pools reused

(Calls sharing a ctx draw from the same finite pools, so they are not independent across calls the way fresh-pool runs are.)

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)
tests/                pytest suite (pip surface; NTFE tests need the conda env)
tutorials/            inference, NTFE demos (Colab-ready)
eval/                 benchmark polygons, uniformity-scoring protocol, demo
docs/                 paper, figures, GUI demo gif, 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.6.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.6-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.6-cp314-cp314t-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

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

Uploaded CPython 3.14tmacOS 10.15+ x86-64

dualgnn-0.0.6-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.6-cp314-cp314-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.14macOS 10.15+ x86-64

dualgnn-0.0.6-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.6-cp313-cp313-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.13+ x86-64

dualgnn-0.0.6-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.6-cp312-cp312-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.13+ x86-64

dualgnn-0.0.6-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.6-cp311-cp311-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.9+ x86-64

dualgnn-0.0.6-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.6-cp310-cp310-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

dualgnn-0.0.6-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.6.tar.gz.

File metadata

  • Download URL: dualgnn-0.0.6.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.6.tar.gz
Algorithm Hash digest
SHA256 a57590866807a73952e2b6645621da6dfb5726e40bb6e128f87420b53b9432b1
MD5 a8ab3de96805e8f90426f7f86cebe746
BLAKE2b-256 6f21c16de81007065315dff1b6288d9dec34c3ec34ec2dda9567d135505fd7a1

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.6.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.6-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.6-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ea98118b3d66d04df7ff653a8c9c27196aabfcf53a211c6a35f368d6cf0dcf44
MD5 962c8603826e1df4bd72ddf0a0a1a8ca
BLAKE2b-256 e2e99cab9de61937a09272169bf0e5e88096bd43a00135c065fc05c894cebbc7

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.6-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.6-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.6-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 19d1b90a5079f113e7c2ea23d8e05683c90ced65aee2d8b59a620faa4becd110
MD5 7d1e474688732025a03ba7986e2a41de
BLAKE2b-256 69d12c37c91bf63e8f831dafa55666cef5a52fc0e9a07179746970cf893bc50d

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.6-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.6-cp314-cp314t-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.6-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 a0eb08cf6783b79c0d5632ab39d547e567853819b2143e9ab50c3e2d0334802b
MD5 28980a6f9e62c8ae4025421a796ccb42
BLAKE2b-256 71dec43d1b085a38296e304bdb8e57e5b0bc28b9226bd6e4e70a04514c5dd892

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.6-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.6-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.6-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3ed4bcc2464f4c05edc9765c8cd5dd38de044d5975e46c6153d557cd9123083e
MD5 4df5a8d5f8a9c4d64a0b35bbea4bc651
BLAKE2b-256 57708a16109332923ae449ddbfa634c6eb56b719d6327cb903f363a3a0a6dc8b

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.6-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.6-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.6-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9e936e2f4fcf3b16060f489bebf2f11885ec460fb9d47b908e3db6e6b972f56a
MD5 bdb6b8b409fd4c6dbdb8e10e638d2dda
BLAKE2b-256 95aa993bc1d82004d437f3257e58f17d1ab96e3749e9071a661745219d03116d

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.6-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.6-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.6-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 b739d6988de1ba1459b6cd04e63bcb4b0ad4c4d515c1d8835e3954d2f2e3a554
MD5 70e3c050932ff9c49d672993be76a9b2
BLAKE2b-256 69f6ef99ce972500d25d47af3f089c09724bf4996014091a3e4c200a4f2328cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.6-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.6-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.6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 586a39d3ee88d049b8ffa8ede4a8984a087ef83be0bac96c17e7152f2e281846
MD5 86eac24c260688b64baa6968b49d5ccb
BLAKE2b-256 42c0b21fdcad15cda215633059e03507025604744d6491ae322493058c7cf159

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.6-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.6-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.6-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bd416c80b688cea6e90b2827116afb2997774a4f0f9bf89243c37040ae31afa4
MD5 b573233ed8e38cf9450154e0d5ffb21c
BLAKE2b-256 a87095b653bf7d723bad7cc362039c78de5bbcb5e199a1851a380c320d1a226b

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.6-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.6-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.6-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 86d9e1726d8f8188b3c8d4a000b1bc07ee6b2af7f698b1c1c2095687fc4b1166
MD5 2d1cf57a0a7170ac3899215615f2e916
BLAKE2b-256 14c433b4ac0542d21a02e8d1acc03e40ba97f547f5dbc2ebbb2817df0954aa8a

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.6-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.6-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.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cc426199c54dd7ccc714d9cfa0a20c7eaa0d2e9efc21847c87afdd34f26b212c
MD5 2c8f9562aa621c7848871888da7bd022
BLAKE2b-256 ce1d6bfaa2ceadcdfd73ce275d8063b352057aa3d556ab41a3394e990617b34a

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.6-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.6-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.6-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cb4cf8e26167fcaa77899de87514a9e8738753ef4c6cb9918f13445352650602
MD5 98612b91a2276dda5fe3295e0915df5a
BLAKE2b-256 7ff491102d43b36e11652622e9ef5bf4c8fbed94da64d9fab4b3a2dfeb3b4d09

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.6-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.6-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.6-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 8189e84802fd15895906fbc99e8216e61e6355c0882b54857c8f8abf7c4819b6
MD5 1a04cd58623ce9ef9500ceb2838495c6
BLAKE2b-256 6014074e4f4c9ec1f029f8e2ce0a0c110f8e7f3e4289a1dd546d9e8772ef348c

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.6-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.6-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.6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 220fb22b2ea52cacb85ca77d1a053f4b7ebff99d50029cbbc65c2caeabb91d65
MD5 d5e51b5e4e5d323bfbada8dc5127b5c4
BLAKE2b-256 362b22ef0a28bfd6724c6fb14ae5ebba26b673d10e2fda1cafd53a4e4e2972ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.6-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.6-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.6-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0c10dbeb7fcd885b6d358106ac63dbc2be11665d63dd3248f9667588da4d872a
MD5 6ed9e56cbb7287e066aa576a8307f456
BLAKE2b-256 92d5659e879b91cc9d4847cbc9565a6822ee7b37b758e783b891d02d85514672

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.6-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.6-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.6-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6322e8c1f46880f5f873c97e6c7fab4fdcd72b70232f642947832a58320366d4
MD5 8b7134e9b0f2fc70ce14ee834b94cb95
BLAKE2b-256 646c40df4106854517e83e2df14f334a7d576a21e10325b1284db5e6b83df01e

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.6-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.6-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.6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a62fb5968eb6e4ce8e3156fe21ae04d96716f537fcd4787428da97057d537d9d
MD5 4ccc4de601ace3160856bfc243976bb1
BLAKE2b-256 3317a40be59de3ee738ae9e53ab65750b16ad07d98a921b7e18247ef0f4a78af

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.6-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.6-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.6-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1004790bdb53fa27de9b14f7f279a742062a92f9c63258a70800ddf1aa531177
MD5 3c834b3ac34894d236bf78c34583fe77
BLAKE2b-256 90e848266b4d4c0fbe54840b0798094f4d33a0a387ff8d4e9471516e094bddbc

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.6-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.6-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for dualgnn-0.0.6-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 86e01a1e23a8919e969bde594989c1ad48dea3ff34bf48e2ca3b0c58eca66c1f
MD5 79ae6d4d1b66da18ae796c7e26de5a17
BLAKE2b-256 8cf995658540525e69fd0d4dde8bd0d20bd49f72c477e627433ef8e7102be9b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for dualgnn-0.0.6-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