Skip to main content

A vectorized implementation of the Coleman et al. (2020) Milky Way bulge density model.

Project description

Coleman Bulge Density Model

A JAX-based, differentiable implementation of the Coleman et al. (2020) Milky Way bulge density model.

Features

  • JAX Backend & Auto-Diff: Built on jax.numpy, allowing for gradient computations via jax.grad.
  • Hybrid Evaluation: Evaluates density using jax.scipy.ndimage.map_coordinates for coordinates within a pre-computed grid. It falls back to an analytical model for extrapolation outside the grid bounds.
  • Vectorized & JIT-Compiled: Vectorized and JIT-compiled (@jax.jit) to process large arrays of coordinates on CPU, GPU, or TPU.
  • Flexible Coordinates: Accepts inputs in either Sun-centered spherical coordinates (r, lat, lon) or Galactic Cartesian coordinates (x, y, z).

Requirements

  • Python >= 3.8
  • JAX >= 0.4.0
  • NumPy >= 1.20.0
  • SciPy >= 1.7.0

Installation

This package can be installed using pip:

pip install coleman-bulge-density-model

Usage

To use the model, import the pre-instantiated bulge_density_model.

Basic Evaluation

import jax.numpy as jnp
from coleman_bulge_density import bulge_density_model

# 1. Using Galactic Cartesian coordinates (x, y, z)
density, in_bounds = bulge_density_model(x=8.0, y=0.0, z=0.0)

# 2. Processing large arrays
x_arr = jnp.linspace(0, 15, 100)
y_arr = jnp.zeros(100)
z_arr = jnp.zeros(100)
densities, bounds = bulge_density_model(x=x_arr, y=y_arr, z=z_arr)

Hexagonal bin plot showing the spatial distribution of Milky Way bulge density samples across the celestial sphere.

HMC & Gradients

The model is compatible with JAX operations, allowing for gradient calculations for use in physics simulations and HMC samplers.

import jax
import jax.numpy as jnp
from coleman_bulge_density import bulge_density_model

def log_prob(position_vector):
    """Calculates the log-probability for a given (x, y, z) position."""
    density, _ = bulge_density_model(
        x=position_vector[0], 
        y=position_vector[1], 
        z=position_vector[2]
    )
    return jnp.log(density)

# Generate the gradient function
grad_log_prob = jax.grad(log_prob)

# Evaluate the gradient at a given position
position = jnp.array([8.0, 0.0, 0.0])
gradient = grad_log_prob(position)

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

coleman_bulge_density_model-0.3.3.tar.gz (77.4 MB view details)

Uploaded Source

Built Distribution

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

coleman_bulge_density_model-0.3.3-py3-none-any.whl (74.1 MB view details)

Uploaded Python 3

File details

Details for the file coleman_bulge_density_model-0.3.3.tar.gz.

File metadata

File hashes

Hashes for coleman_bulge_density_model-0.3.3.tar.gz
Algorithm Hash digest
SHA256 e9af1dfa355d17dbfdda49ff4f956869672248d459a18fa27d45a75172654933
MD5 f9c753f5483978760474b87c132e924b
BLAKE2b-256 6895564dde7ab52aee3e535db20769dbdb668a4a0ba78d95d96d9730512eddd5

See more details on using hashes here.

Provenance

The following attestation bundles were made for coleman_bulge_density_model-0.3.3.tar.gz:

Publisher: publish.yml on dylannpaterson/coleman_bulge_density_model

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

File details

Details for the file coleman_bulge_density_model-0.3.3-py3-none-any.whl.

File metadata

File hashes

Hashes for coleman_bulge_density_model-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 5a867d9d383484dbaea74bc195e3591c9389c0b95a2f9573b015dfacc77d4931
MD5 930b1a425da686f194757ca2a0c4c335
BLAKE2b-256 9b1a9a65b0bebc8f951dd1dd2ebf7a1b9a62cbf4bf4fec25700042928a67b606

See more details on using hashes here.

Provenance

The following attestation bundles were made for coleman_bulge_density_model-0.3.3-py3-none-any.whl:

Publisher: publish.yml on dylannpaterson/coleman_bulge_density_model

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