Skip to content
Stefan Sommer edited this page Mar 22, 2024 · 3 revisions

Welcome to the Hyperiax Wiki!

Home

  1. What is Hyperiax?
  2. What is Hyperiax for?
  3. Why JAX?

Getting started

  1. Build a tree
  2. Create your tree functions and execute them
  3. Save the tree and load it

Examples

What is Hyperiax

Hyperiax is a tool for tree traversal and large-scale parallel computations over trees. Initially, Hyperiax was designed specifically for phylogenetic analysis of biological shape data. It is integrated with JAXGeometry, a computational differential geometry toolbox implemented in JAX. However, Hyperiax's messaging system and operations are general and they can be applied for use in other contexts where fast tree-level computations are necessary.

Hyperiax relies on JAX and Just-in-Time (JIT) compilation to enable high-performance, parallel simulations and other computations on trees with various structures.

Hyperiax was inspired by the backwards filtering, forward guiding approach described in

What is Hyperiax for

Hyperiax enables tree traversal and computations over tree given functions for the message passing and edge and node specific computations. We currently exemplify this with the following examples:

  • MCMC sampling
  • Mean estimation
  • LDDMM alignment/PCA

Why JAX

Here's a discussion on some of the main features of JAX that we prefer to utilize in Hyperiax, including JIT and automatic parallelization.

Clone this wiki locally