Skip to main content

GAE-Δ: Phenotype-specific gene role shifts in multi-omics data via graph autoencoder embedding differences

Project description

🧬 GAE-Δ

Phenotype-Specific Gene Role Shifts in Multi-Omics Data via Graph Autoencoder Embedding Differences

When genes don't change expression — but change who they talk to

Python 3.10+ PyTorch 2.x PyG 2.5+ License: MIT


💡 What is GAE-Δ?

Most multi-omics methods ask: "Which genes are differentially expressed between phenotypes?"

GAE-Δ asks a different question: "Which genes change their network roles between phenotypic groups?"

We train separate graph autoencoders on group-specific gene interaction networks, then compute embedding differences — capturing how each gene's functional context reorganizes across phenotypic conditions. This isn't about expression changes; it's about network rewiring.

GAE-Δ is a general framework applicable to any binary stratification of multi-omics cohorts — survival outcomes, treatment response, disease subtypes, or any clinically meaningful grouping.

  ┌─────────────┐         ┌─────────────┐
  │   Group A    │         │   Group B    │
  │  Gene Graph  │         │  Gene Graph  │
  └──────┬──────┘         └──────┬──────┘
         │                       │
    ┌────▼────┐             ┌────▼────┐
    │  GAE    │             │  GAE    │
    │ Encoder │             │ Encoder │
    └────┬────┘             └────┬────┘
         │                       │
      z_A ∈ ℝ^d              z_B ∈ ℝ^d
         │                       │
         └──────────┬────────────┘
                    │
              Δz = z_B − z_A
                    │
              ┌─────▼─────┐
              │    KNN     │
              │  Residual  │
              └─────┬─────┘
                    │
         ε_g ∈ ℝ^d (per gene, per omics)
                    │
         ┌──────────┼──────────┐
         RNA      Meth       CNV
         │         │          │
         └─────────┼──────────┘
                   │
           s_g ∈ ℝ^(3d) (fused)
                   │
           ┌───────▼───────┐
           │ Isolation      │
           │ Forest (top-N) │
           └───────┬───────┘
                   │
           ┌───────▼───────┐
           │ Patient Embed  │
           │ + MLP → 0/1    │
           └───────────────┘

🔬 Key Features

  • Phenotype-specific graph learning — separate GAEs for each group, capturing group-specific gene interaction topology
  • Embedding difference as biomarker — gene-level network reorganization, not just expression fold-change
  • Multi-omics late fusion — RNA-seq, DNA methylation, CNV integrated at the embedding-shift level
  • KNN residual correction — removes globally smooth trends, highlights genes with atypical rewiring
  • Isolation Forest gene selection — unsupervised anomaly detection on fused shift space
  • Cython + C++ accelerated — performance-critical PCC computation and KNN in compiled extensions

⚡ Quick Start

Prerequisites

Dependency Version Required?
Python ≥ 3.10 yes
PyTorch ≥ 2.0 yes
PyG ≥ 2.5 yes
C++ Compiler C++17 only to build the optional native speedups
CUDA ≥ 11.8 optional — GPU only; CPU works out of the box

The Cython (PCC/adjacency) and C++ (KNN) extensions are performance optimizations only — the package runs correctly on pure NumPy / scikit-learn fallbacks if they are not compiled.

Build & Install

# 1. Create environment
conda env create -f environment.yml
conda activate gae-delta

# 2. Install (compiles all native extensions automatically)
pip install .

Note: pip install . now builds all native extensions — the Cython PCC/adjacency modules and the C++ KNN extension (pybind11) — in a single step; no separate make is required. A C++17 compiler is needed. make all remains available for an in-place editable dev build.

Run with toy data

gae-delta \
    data.hdf5_path=data/example/toy_demo.h5 \
    data.fi_network_path=data/example/toy_fi_network.txt

Run with real TCGA data

gae-delta \
    data.hdf5_path=/path/to/your/cancer_data.h5 \
    data.fi_network_path=/path/to/FI_network.txt \
    n_folds=10 \
    device=auto

Use as a Python library

After pip install gae-delta, call the framework directly from your own code:

from gae_delta import (
    run_cross_validation,      # full 10-fold pipeline (Algorithm 1)
    compute_embedding_shift,   # Δz between two group embeddings
    knn_residual_correction,   # remove globally smooth trends
    fuse_multiomics_shifts,    # late-fusion of per-omics shifts
    select_shift_genes,        # Isolation-Forest gene ranking
    OutcomeGraphBuilder,       # FI-constrained group graph builder
    MultiOmicsDataset,         # HDF5 multi-omics loader
)

# End-to-end: dataset + FI network in, cross-validated result out
result = run_cross_validation(dataset, fi_edges, n_folds=10, n_top_genes=100)
print(result.summary())        # e.g. "AUC: 0.71 ± 0.05 | F1: 0.68 ± 0.06"

# …or compose the building blocks for your own analysis
shift    = compute_embedding_shift(z_good, z_poor, normalize=True)
residual = knn_residual_correction(shift, k=15)
top_idx, scores = select_shift_genes(fused_shifts, n_top=100)

The public API is imported lazily, so import gae_delta stays fast and does not pull in PyTorch until you actually call a model-backed entry point.

📂 Project Structure

GAE-Delta/
├── csrc/                    # C++ KNN extension (pybind11)
├── gae_delta/
│   ├── core/
│   │   ├── graph/           # Cython PCC + FI-constrained graph builder
│   │   ├── model/           # GCN Encoder → GAE → MLP
│   │   ├── shift/           # Δz computation + KNN residual + fusion
│   │   └── selection/       # Isolation Forest gene ranking
│   ├── data/                # HDF5 loader + omics preprocessing
│   ├── pipeline/            # 5-stage pipeline + Hydra runner
│   ├── evaluation/          # 10-fold CV + metrics
│   └── configs/             # Hydra YAML configs (shipped inside the wheel)
├── data/example/            # Toy demo dataset
└── tests/

📊 Data Format

Input data must follow this HDF5 schema:

dataset.h5
├── rna/expression           float32  (n_patients × n_genes)
├── methylation/beta_values  float32  (n_patients × n_genes)
├── cnv/copy_ratios          float32  (n_patients × n_genes)
├── clinical/os_days         float32  (n_patients,)
├── clinical/os_status       int32    (n_patients,)    # 1=deceased
└── meta/gene_universe       str      (n_common_genes,)

Each group also contains gene_symbols and patient_ids arrays. See gae_delta/data/tcga/loader.py for the full specification.

⚙️ Configuration

GAE-Δ uses Hydra for configuration management. Override any parameter from the command line:

# Custom hyperparameters
gae-delta \
    model.gae.encoder.out_channels=32 \
    model.mlp.architecture.hidden_dim=128 \
    experiment.graph.pcc_threshold=0.4 \
    n_top_genes=200

# Environment variables also work
export GAE_DELTA_DATA_PATH=/data/tcga/lihc.h5
gae-delta

🧪 Testing

make test

📜 Citation

If you use GAE-Δ in your research, please cite:

@article{tang2026gaedelta,
  title={GAE-$\Delta$: Phenotype-Specific Gene Role Shifts in Multi-Omics
         Data via Graph Autoencoder Embedding Differences},
  author={Tang, Zhiyong and Chen, Zhe and Chen, Mengting and Ewing, Rob
          and Niranjan, Mahesan and Ennis, Sarah and Wang, Yihua},
  journal={Bioinformatics},
  year={2026},
  publisher={Oxford University Press}
}

📄 License

This project is licensed under the MIT License — free to use, modify, and redistribute with attribution.

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

gae_delta-0.1.0.tar.gz (260.6 kB view details)

Uploaded Source

Built Distributions

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

gae_delta-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (579.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

gae_delta-0.1.0-cp313-cp313-macosx_11_0_arm64.whl (340.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

gae_delta-0.1.0-cp313-cp313-macosx_10_13_x86_64.whl (343.5 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

gae_delta-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (597.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

gae_delta-0.1.0-cp312-cp312-macosx_11_0_arm64.whl (341.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

gae_delta-0.1.0-cp312-cp312-macosx_10_13_x86_64.whl (343.9 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

gae_delta-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (573.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

gae_delta-0.1.0-cp311-cp311-macosx_11_0_arm64.whl (339.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

gae_delta-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl (341.5 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

gae_delta-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (562.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

gae_delta-0.1.0-cp310-cp310-macosx_11_0_arm64.whl (339.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

gae_delta-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl (341.1 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

gae_delta-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (562.7 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

gae_delta-0.1.0-cp39-cp39-macosx_11_0_arm64.whl (339.6 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

gae_delta-0.1.0-cp39-cp39-macosx_10_9_x86_64.whl (341.6 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

File details

Details for the file gae_delta-0.1.0.tar.gz.

File metadata

  • Download URL: gae_delta-0.1.0.tar.gz
  • Upload date:
  • Size: 260.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gae_delta-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4c8e53e1ebb544a2cc64cffe0250bb63be219e9b9852d63d978c52f00462627f
MD5 a4d3fa871866f8a364eeb23abe08db0a
BLAKE2b-256 4a774b5c7dc6f221014f2383837d4de730e83a76c7baa4bdc0d32a10b22b0833

See more details on using hashes here.

Provenance

The following attestation bundles were made for gae_delta-0.1.0.tar.gz:

Publisher: publish.yml on zhiyongtang1998/GAE-Delta

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

File details

Details for the file gae_delta-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gae_delta-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 874559ba8654da633efdf64033b6e2178d5195217248ceb8d4d3f451b558c367
MD5 c42304ca25e14e19f9e9d8361050689e
BLAKE2b-256 cb883d1d1907106150f06d7b322e4cd5b66d9c052d40237b03b511d89e832a01

See more details on using hashes here.

Provenance

The following attestation bundles were made for gae_delta-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on zhiyongtang1998/GAE-Delta

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

File details

Details for the file gae_delta-0.1.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gae_delta-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b56aedd1f77200fa508b2fb24dbc739837369ff530f0e3715b2b9b0c821f0492
MD5 246bbece9285e651471e29dc20282e2f
BLAKE2b-256 46cbfcdb27cd28bc8a23db595be6ab090591212ed64f4308c3d8bee0629fb8a1

See more details on using hashes here.

Provenance

The following attestation bundles were made for gae_delta-0.1.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on zhiyongtang1998/GAE-Delta

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

File details

Details for the file gae_delta-0.1.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for gae_delta-0.1.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 e8d6b7daa314ac92bcdfd082b40866d12725d5fb86e6aa3381c28512914028de
MD5 af1dd80915d74244e40c764b0fd24a5c
BLAKE2b-256 db7b07ce1ea276ce462d4bb3e56865a257870584412bfe2339fd342efb64923a

See more details on using hashes here.

Provenance

The following attestation bundles were made for gae_delta-0.1.0-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: publish.yml on zhiyongtang1998/GAE-Delta

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

File details

Details for the file gae_delta-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gae_delta-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 584eff3c5d32bc90b5c493bfe3c52e37cefba872e1b4cebee28fa685e234a3a3
MD5 365821a3b416f39fcaead348bcf08266
BLAKE2b-256 52f40aad17b81f2ba7b085b87d858622cd67d9ef0c280f02aff14f0696317250

See more details on using hashes here.

Provenance

The following attestation bundles were made for gae_delta-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on zhiyongtang1998/GAE-Delta

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

File details

Details for the file gae_delta-0.1.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gae_delta-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aa0c865695ebfb21aa83b04c2892542136c5652c646b51706fb2ad49b80b76ba
MD5 d55295a64f8423d6c54f1ced1c42c168
BLAKE2b-256 2a80a9acabcf78614188a40117f83604ea6c533185e75efac56233049fc7f5e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for gae_delta-0.1.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on zhiyongtang1998/GAE-Delta

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

File details

Details for the file gae_delta-0.1.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for gae_delta-0.1.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 7c8d73fbcaa46fd6b4fb73ab2b7bcf082696fe563bf8084abeadb12978ac8b48
MD5 2562534f52e1beecc55c4559b62a652f
BLAKE2b-256 b81a4ce1f8630b662c4ef2328f440c68689bce1632a217fc21142b8cb7ce8e66

See more details on using hashes here.

Provenance

The following attestation bundles were made for gae_delta-0.1.0-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: publish.yml on zhiyongtang1998/GAE-Delta

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

File details

Details for the file gae_delta-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gae_delta-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d4743dd6bc115e832548200644f7230c4a80fe1944e08369ed9c81f06f6b54ac
MD5 a03c187436625a81ac27ab5bd116caa4
BLAKE2b-256 2a768d26bc3db3f72fdde705574ba04261e9947f2545a8555a0e20bca8f31e36

See more details on using hashes here.

Provenance

The following attestation bundles were made for gae_delta-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on zhiyongtang1998/GAE-Delta

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

File details

Details for the file gae_delta-0.1.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gae_delta-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5fbb3c82fcf231eb6775214fa447ac9ed82871b761982c9cb103ebe50d62d802
MD5 2ff723ca777ac96dcadf1b8e6b6e92fe
BLAKE2b-256 2086c6eaac6b22ca99407a5acee3c3333d4a29e160184de223ce9e5637662d7a

See more details on using hashes here.

Provenance

The following attestation bundles were made for gae_delta-0.1.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on zhiyongtang1998/GAE-Delta

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

File details

Details for the file gae_delta-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for gae_delta-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1df92c7f582301ff016e7c2f9abc21fd3886add101b84ceedf7509c8009abef8
MD5 a9390cab769d9d7926d0966cda84e2b9
BLAKE2b-256 c4e2411135957966b884fa1a132ad419723caf0bac3fbc1d826b1cc9b0ba2f70

See more details on using hashes here.

Provenance

The following attestation bundles were made for gae_delta-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: publish.yml on zhiyongtang1998/GAE-Delta

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

File details

Details for the file gae_delta-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gae_delta-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a94c0cc51735059515d734dfa8ef90878812f4ca870a5ed0bb1f776494fba66e
MD5 f483abd64ef53e2b9f5f8f9a370d4052
BLAKE2b-256 8489ca864c7f3aa14f9e641a1e1644d6c8a0a3067e10c99edf6afdfb44ddbee2

See more details on using hashes here.

Provenance

The following attestation bundles were made for gae_delta-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on zhiyongtang1998/GAE-Delta

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

File details

Details for the file gae_delta-0.1.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gae_delta-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2f6f3c0d22dd6b5125ca34652bfa2b7ca34dae4fb993f51314f22f4a76bf8c30
MD5 aecd8e043ebcf4c8a59fa141aba3c447
BLAKE2b-256 4319d8e0794d36f110709ffd1ccbd5f4c497ff8f9a99111529d3ba1b1d75d4b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for gae_delta-0.1.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on zhiyongtang1998/GAE-Delta

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

File details

Details for the file gae_delta-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for gae_delta-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1d5ecc7c97cb637edaa9a3fad081ad9e6962f47168302679a8abb70872069c4c
MD5 857a7969a83962af1b4aa03150fc7670
BLAKE2b-256 d6c993bc1e41a902e6ecbb46f16bb458fb6bd8859b9cf0cc91a4536bab3a13ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for gae_delta-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: publish.yml on zhiyongtang1998/GAE-Delta

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

File details

Details for the file gae_delta-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gae_delta-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 57328ecd8a15467b9c63c98edadf090860eb1ead7e677c234da003325728e7fb
MD5 65def1fe2fafb0e57c794821f03d8eb8
BLAKE2b-256 11a4c4d8e02c86b0759a82fe8ba5f298337c930641c58532f555d27f8c8783d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for gae_delta-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on zhiyongtang1998/GAE-Delta

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

File details

Details for the file gae_delta-0.1.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gae_delta-0.1.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f369be9c8f231d2104f9d8568697217730aa2adff7d60ea2c0ac28cdb7c3e060
MD5 eb5c2ca9724d4b9ab91c6e92cc655432
BLAKE2b-256 c98b479aebd0212d6870d8fb545036639d028b8d3e7e55e75a560eb31877e3e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for gae_delta-0.1.0-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: publish.yml on zhiyongtang1998/GAE-Delta

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

File details

Details for the file gae_delta-0.1.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for gae_delta-0.1.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 bff7045e4df9ef6abd2413097b55d44886d89ad2d41b100ebe10b0f7ac7f8951
MD5 803f11e95e722c6c189a2eb2f397a412
BLAKE2b-256 256da9d4c76a92e5492ce7899913db9e56c7e38281fc4bad298de35bf71d98d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for gae_delta-0.1.0-cp39-cp39-macosx_10_9_x86_64.whl:

Publisher: publish.yml on zhiyongtang1998/GAE-Delta

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