Skip to main content

Ancestral recombination graph (ARG) data structure and operations

Project description

arg-needle-lib

This repository contains arg-needle-lib, which implements an ARG data structure and ARG-based analyses such as genealogy-wide association.

Prebuilt CPython wheels are available for Linux (compatible with glibc ≥ 2.28) and macOS (built on macOS 15 for x86_64 and macOS 14 for arm64).

Platform \ CPython ≤3.8 3.9 3.10 3.11 3.12 3.13 3.14
Linux x86_64
Linux aarch64
macOS Intel (x86_64)
macOS Apple Silicon (arm64)

Quickstart

Install the Python module from PyPI

Most functionality is available through a Python module which can be installed with:

pip install arg-needle-lib

This Python module is currently available on Linux and macOS.

Documentation

Please see the ARG-Needle manual for all usage instructions and documentation.

License

arg-needle-lib is distributed under the GNU General Public License v3.0 (GPLv3). For any questions or comments on arg-needle-lib, please contact Pier Palamara using <lastname>@stats.ox.ac.uk.

Acknowledgements

arg-needle-lib is developed by (in alphabetical order) Arjun Biddanda, Fergus Cooper, Árni Freyr Gunnarsson, Pier Francesco Palamara, Sinan Shi, Brian C. Zhang, and Jiazheng Zhu.

Reference

If you use this software, please cite:

B. C. Zhang, A. Biddanda, Á. F. Gunnarsson, F. Cooper, P. F. Palamara, Biobank-scale inference of ancestral recombination graphs enables genealogical analysis of complex traits. Nature Genetics, 2023.

arg-needle-lib Release Notes

v1.2.1 (2025-11-07)

Other changes

  • ARG-RHE and ARG matrix multiplication routines.
  • Use cibuildwheel default folder structure.
  • Deploy for latest macos targets as GitHub macos 13 has been retired.

v1.2.0 (2025-09-04)

Other changes

  • Add option to provide height value in add_sample. If omitted the height is set to 0 so original code behaves as normal.
  • Fixed compute_grm alpha argument default value from 0 to -1, as stated in the function's API docs.

v1.1.3 (2025-02-24)

Other changes

  • Resolve incompatibility preventing wheels being built for Python 3.13
  • Additionally, build wheels for Linux arm64. Can now pip install arg-needle-lib in Docker on arm64 Macbook, for example.

v1.1.2 (2025-02-21)

Other changes

  • Added get_midpoint_height method to Mutation API, to calculate a height (age) estimate using the midpoint of the containing edge
  • Build wheels for Python 3.13

v1.1.1 (2024-10-21)

Other changes

  • Added child_edges_at method to ARGNode API, for parity for existing methods like parent_edge_at

v1.1.0 (2024-09-26)

Major changes

  • Added methods for genotype mapping
    • map_genotype_to_ARG, taking a single genotype as a vector/list and a position
    • map_genotypes_to_ARG, taking a matrix of genotypes, and a vector/list of positions
  • Method to get sorted vector/list of positions from ARG object is renamed to get_site_positions from get_sites

Other changes

  • Improve documentation
  • Deserialization now performed in C++ rather than Python
  • Python infrastructure modernized to replace setup.py with pyproject.toml

v1.0.2 (2023-09-29)

Breaking changes

None

Other changes

  • Improve documentation.
  • Build Python wheels for macOS arm64 (Apple Silicon)
  • Build wheels for Python 3.12

v1.0.1 (2023-07-14)

Breaking changes

None

Other changes

  • Clean-up and release of the source code.
  • Improved mutation class.
  • Added from-to parameters to some functions.

v1.0.0 (2023-03-07)

Initial PyPI release of arg-needle-lib.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

arg_needle_lib-1.2.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (15.8 MB view details)

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

arg_needle_lib-1.2.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (15.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

arg_needle_lib-1.2.1-cp314-cp314-macosx_15_0_x86_64.whl (17.4 MB view details)

Uploaded CPython 3.14macOS 15.0+ x86-64

arg_needle_lib-1.2.1-cp314-cp314-macosx_14_0_arm64.whl (16.9 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

arg_needle_lib-1.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (15.8 MB view details)

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

arg_needle_lib-1.2.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (15.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

arg_needle_lib-1.2.1-cp313-cp313-macosx_15_0_x86_64.whl (17.4 MB view details)

Uploaded CPython 3.13macOS 15.0+ x86-64

arg_needle_lib-1.2.1-cp313-cp313-macosx_14_0_arm64.whl (16.9 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

arg_needle_lib-1.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (15.8 MB view details)

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

arg_needle_lib-1.2.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (15.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

arg_needle_lib-1.2.1-cp312-cp312-macosx_15_0_x86_64.whl (17.4 MB view details)

Uploaded CPython 3.12macOS 15.0+ x86-64

arg_needle_lib-1.2.1-cp312-cp312-macosx_14_0_arm64.whl (16.9 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

arg_needle_lib-1.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (15.8 MB view details)

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

arg_needle_lib-1.2.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (15.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

arg_needle_lib-1.2.1-cp311-cp311-macosx_15_0_x86_64.whl (17.4 MB view details)

Uploaded CPython 3.11macOS 15.0+ x86-64

arg_needle_lib-1.2.1-cp311-cp311-macosx_14_0_arm64.whl (16.9 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

arg_needle_lib-1.2.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (15.8 MB view details)

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

arg_needle_lib-1.2.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (15.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

arg_needle_lib-1.2.1-cp310-cp310-macosx_15_0_x86_64.whl (17.4 MB view details)

Uploaded CPython 3.10macOS 15.0+ x86-64

arg_needle_lib-1.2.1-cp310-cp310-macosx_14_0_arm64.whl (16.9 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

arg_needle_lib-1.2.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (15.8 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

arg_needle_lib-1.2.1-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (15.5 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

arg_needle_lib-1.2.1-cp39-cp39-macosx_15_0_x86_64.whl (17.4 MB view details)

Uploaded CPython 3.9macOS 15.0+ x86-64

arg_needle_lib-1.2.1-cp39-cp39-macosx_14_0_arm64.whl (16.9 MB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

File details

Details for the file arg_needle_lib-1.2.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for arg_needle_lib-1.2.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 40b00bec95c493e4bca73c527a7847faaa82edc6fc599e90d2a8825bb881b754
MD5 e626009fa04437cf48f0cd225c541644
BLAKE2b-256 0d5b26fd6599f4f1cfa736720da0c3382fff35f81071fd7e44f567ccdaa986bd

See more details on using hashes here.

File details

Details for the file arg_needle_lib-1.2.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for arg_needle_lib-1.2.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 709d49b83e0fb8cbbc4b0dd1f5602e22900308078fd4afcf54f22514d8a24fbd
MD5 2f7fd242a2665d42b0845c771936a3ec
BLAKE2b-256 17d78491a1f4204c9792335b72a2f29922138b8df83124d046763391c8fe5a0d

See more details on using hashes here.

File details

Details for the file arg_needle_lib-1.2.1-cp314-cp314-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for arg_needle_lib-1.2.1-cp314-cp314-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 3c80fa66eba7e61fce35fc1762e9c4a5ad92e0953bcd295bf2cadad3e60f88d0
MD5 5806a57ca8a2df909e998a6f363ac8bb
BLAKE2b-256 761a80644eee52bb5e0ff048bf2f4448d56d99a88848970a05901f0de5afa28e

See more details on using hashes here.

File details

Details for the file arg_needle_lib-1.2.1-cp314-cp314-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for arg_needle_lib-1.2.1-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 04903f7be6ad5465a9e81ba26170c364e6c84a1492a28a2e17d770ebdac46055
MD5 a82e87b079ab378a64893c8cd7e71673
BLAKE2b-256 d65f895876a4448af089d9635205f4294a7b71e39d246c55ef7558d2f26b2d6c

See more details on using hashes here.

File details

Details for the file arg_needle_lib-1.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for arg_needle_lib-1.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e0d6eecffe5809957e56f4a21bbb9e325cda122a094ef250e1e12150ebaa4388
MD5 21a96030eb3e4fd9eb0d7132ccfb3360
BLAKE2b-256 7e4443411b4a4120006dc614a8385e903b43c9ca545bd5542c02314d9b658eed

See more details on using hashes here.

File details

Details for the file arg_needle_lib-1.2.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for arg_needle_lib-1.2.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e391fe34132167c3708b06ec73e24f04b46269d87ea4e5fc8789fe5201f14c2f
MD5 7df287301504043800aa9dea0a193edb
BLAKE2b-256 542feaf99de925f8eb6b06a29727c21214b75e343034c7775c042dc156843185

See more details on using hashes here.

File details

Details for the file arg_needle_lib-1.2.1-cp313-cp313-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for arg_needle_lib-1.2.1-cp313-cp313-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 58cc24c2a102668129f8a109a37fbe03dd46e5a7b8ccd1248b6c87a319d22677
MD5 9fed4f251fae50bf61147321319145f4
BLAKE2b-256 af0fc8505370eaace18e845199c8c54ebd7cead15ef90dfb671f593fa7574e08

See more details on using hashes here.

File details

Details for the file arg_needle_lib-1.2.1-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for arg_needle_lib-1.2.1-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 3d05ce330d1b87232e64839f8c52a980f6dd7f8fcc182741840db23188046251
MD5 5bb02e07a032fa776de2ca059baa1977
BLAKE2b-256 f610b8af7d5ae26d62f97919e2dc34929d951e03ea1f3e622e17da926bfaf439

See more details on using hashes here.

File details

Details for the file arg_needle_lib-1.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for arg_needle_lib-1.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 69504ff10ac4f07d4c436582f57d8b1ee91d96f218c4bd80dafaa66a4b3e2d4b
MD5 fbe2e85021c688e49d7f9ce3331690b4
BLAKE2b-256 0f2af995a497506b6200ca41dd5f8434836f30933e2848a8eef9b583688631de

See more details on using hashes here.

File details

Details for the file arg_needle_lib-1.2.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for arg_needle_lib-1.2.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cc7c0eb00741e8c69b8e9e67b8ae10af67978849497ab66a6c3a9d290e05586f
MD5 668c40d71f6316554d9f3c2987c20085
BLAKE2b-256 2c28a50412e598c708267bc5ce392683e6c3961eddd54ac413285533560510ce

See more details on using hashes here.

File details

Details for the file arg_needle_lib-1.2.1-cp312-cp312-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for arg_needle_lib-1.2.1-cp312-cp312-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 f127fbdffefd3f1dbfe10a4639ce039bc7beb991eebe68f1616f5283e54b0dc2
MD5 f3e580042c06f4062a9fa86fe1e48424
BLAKE2b-256 e7c9baac8512e1dd53f04de49c52816f69dc3889b289fcb3cc159850b26c8384

See more details on using hashes here.

File details

Details for the file arg_needle_lib-1.2.1-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for arg_needle_lib-1.2.1-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 e95d8afc1bdaaad69afb6d3b5bcbfdefe7841b68155fbad5787821a3dde0d6c8
MD5 fe4a718d0b937ee375260277aee48e6a
BLAKE2b-256 1ed3bcf175725fec672f89f8ad37a69a26912f9a49d17dfc6b20bdcb02ef2d7d

See more details on using hashes here.

File details

Details for the file arg_needle_lib-1.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for arg_needle_lib-1.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a65c3f6fb8037cdc258685116eedd0b12cf384dfc672b84934bf9d71e65f7b38
MD5 01278793e417b3ff5b3a61ad358f1267
BLAKE2b-256 ea4b6e3694b810d4846c42b4d42aa0328e1935df54be3ef26c6a354e0cd7216f

See more details on using hashes here.

File details

Details for the file arg_needle_lib-1.2.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for arg_needle_lib-1.2.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a8b3bc466f8b2aeedba3613ec0c5a8578eab1edd61197345a8458cd0ef9f8e19
MD5 4840f823956675bebd084717241fb68d
BLAKE2b-256 f8e4ebf85ed9c810cd631c0b59f13d776349c430bfb6562a095e6d03c4baf706

See more details on using hashes here.

File details

Details for the file arg_needle_lib-1.2.1-cp311-cp311-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for arg_needle_lib-1.2.1-cp311-cp311-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 4ec91d22ddf35867fdfe9b4b973bbeb9a4ecc4e5eca888bc4d439a8fe54cf5a9
MD5 5fdf14a1b27ced0f2f07c3c8f925dae7
BLAKE2b-256 c207d96b68a77858810964ffe219501c9be1ab6be6dfea0c2162711f1106b3f8

See more details on using hashes here.

File details

Details for the file arg_needle_lib-1.2.1-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for arg_needle_lib-1.2.1-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 e916c1f4d4a56ebe6a1c9bc5964da6a66c983b92873b0c8f6a1e156b7dff886a
MD5 c299081e03ca7c1a1d4b1a75a3aeb957
BLAKE2b-256 814e68e8cddf07510259e1b14f8c2a23f12d87ac08bdef981aecc9e54a9bb5be

See more details on using hashes here.

File details

Details for the file arg_needle_lib-1.2.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for arg_needle_lib-1.2.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 49b9a9ae5e1ae9bf3cd67d4aecbf8c25ead033653b01ecc01fe25005b7dfedff
MD5 825d789870f3275b0feb7f33d64f728a
BLAKE2b-256 a734601a75fc2a791b41b78d839fc0177f2e8bd52a22362453c03227a095a4cb

See more details on using hashes here.

File details

Details for the file arg_needle_lib-1.2.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for arg_needle_lib-1.2.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 be40e3f190dbd59170c030a51e036e7d9a03ae0acfe0c1f7b129b14d6a2a3563
MD5 a070c2c43c732170f8e2bab1e86059f4
BLAKE2b-256 5601fc341d9fa077a1e32b63ff6ea0fdb8ec9f36b0a408a8c4c508e2cd3bbb0e

See more details on using hashes here.

File details

Details for the file arg_needle_lib-1.2.1-cp310-cp310-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for arg_needle_lib-1.2.1-cp310-cp310-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 719a98a22f6facce0f4331b0c0aeb054756f19f73b75d80c2299802f6d017f33
MD5 6767f5e38a3f3b11ec2a7ee05c20b636
BLAKE2b-256 e577bc9886ec8c4ee5118607988020d829922861b21b41e7538d8cf57d362056

See more details on using hashes here.

File details

Details for the file arg_needle_lib-1.2.1-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for arg_needle_lib-1.2.1-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 ee7c1273beac7163ba27fe4523e5e9d5ae813cf2bc3af47da06fb81c4bc3cd5b
MD5 e514b7b3b8f5eee6506162e296bfee6b
BLAKE2b-256 a5615c39625114d95c0b849737305db8b612a9f69ec9e43c510246257fb3f147

See more details on using hashes here.

File details

Details for the file arg_needle_lib-1.2.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for arg_needle_lib-1.2.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3ef6c21a95a2d30acfc1b33e8cced2fffe8a97b9cd03a13e5bdb959390cd464c
MD5 79cf7b8fd0977cbc875e8a3559104950
BLAKE2b-256 7e8dfb01f428e6768c444ee0351cd06571b106225c1292e14572c2edd106003b

See more details on using hashes here.

File details

Details for the file arg_needle_lib-1.2.1-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for arg_needle_lib-1.2.1-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0c824eb66b4bc0f752738adb6a16bcc441062641b2f62f09433b1c1a0ab4dec3
MD5 80b1e04ffaea3c2e66fc62bbc2d994ac
BLAKE2b-256 dd1b3e4359b7197dbbd0efe1d6e3162db76272bd21c6532f11b1096e2a4ec5fa

See more details on using hashes here.

File details

Details for the file arg_needle_lib-1.2.1-cp39-cp39-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for arg_needle_lib-1.2.1-cp39-cp39-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 74d3dea8cd79b1321b5c6d4f301e0a9a99b81e2d372e3adbc32e7f58b8dacf15
MD5 aa0db54e4667aa3e7284d42ee8bfde27
BLAKE2b-256 ab369921e155b653657982aa3f8baef951dc243def910d38b5834b6f10f1457a

See more details on using hashes here.

File details

Details for the file arg_needle_lib-1.2.1-cp39-cp39-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for arg_needle_lib-1.2.1-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 22adf8e6575748da33756ca0d0402cab7d1489d3cf3f31bb4227d5c028157aa8
MD5 0e06b1c427c46c5d069da0e3aabf9db8
BLAKE2b-256 830723f61260e6dc612d11fd0012735ef1b196f840de5f2af9d589801fedee2d

See more details on using hashes here.

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