Overview#

What is Discovery?#

Discovery is a next-generation pulsar-timing-array data-analysis package, built for speed on a JAX backend that supports GPU execution and autodifferentiation.

Philosophy#

If Enterprise is Spock—logical and elegant—Discovery is all Scotty: fast, efficient, and not above a hack if it gets you to warp speed.

Key Features#

JAX Backend

Discovery is built on JAX, enabling:

  • Just-in-time (JIT) compilation for optimized execution

  • Automatic differentiation for gradient-based inference

  • Seamless GPU acceleration with CUDA

  • Efficient vectorization with vmap

High Performance
  • Optimized for modern hardware (GPUs, TPUs)

  • Batched operations for array-level analysis

  • Minimal overhead for large datasets

Flexible Modeling
  • Modular signal and noise components

  • Support for custom priors and spectra

  • Deterministic delays and stochastic processes

  • Global and pulsar-specific models

Requirements#

Discovery needs a modern Python environment with:

  • numpy - Numerical computing

  • scipy - Scientific computing

  • jax - Autodiff and GPU support

  • pyarrow - Efficient data storage

Discovery will be happier running on an Nvidia GPU with CUDA-enabled JAX.

Optional Dependencies#

Discovery’s subpackages require additional dependencies:

  • discovery.flow - Normalizing flow samplers

  • discovery.samplers - Various sampling backends (numpyro, etc.)

See Installation for installation instructions.

Next Steps#