Axisymmetric Jeans modeling and inference#
Use this guide for geometry, physical parameter domains and the differences from spherical models. For a complete executable workflow, follow the axisymmetric synthetic analysis. The axisymmetric API reference documents constructors and individual methods; Theory gives the dynamical assumptions and equations. For factor integrals and numerical settings, see the J/D-factor guide and quadrature reference.
The supported components are a flattened Plummer tracer, an oblate or prolate
Zhao halo and constant cylindrical anisotropy. Cylindrical beta_z is distinct
from spherical beta_ani; the common spherical/isotropic limit requires
q = Q = 1 and beta_z = 0 together.
Units, geometry and physical parameters#
Distances are pc, masses Msun, velocities km/s. inclination is in radians:
zero is face-on and pi/2 is edge-on. Sky x_pc is the line of nodes, the
projected major axis for an oblate tracer, and y_pc is perpendicular to it.
For a prolate tracer x need not be the projected major axis. Rotate an observed
catalog by its position angle and convert angular separations to pc before
passing it to this API. Signed coordinates and the projected center are valid.
Parameter |
Meaning/domain |
|---|---|
|
Positive equatorial Plummer scale; projected major-axis half-light radius for an oblate tracer |
|
Positive Zhao scale radius and density scale; rho_s is not rho(rs) |
|
Positive intrinsic stellar vertical/equatorial ratio |
|
Alternative to q: oblate projected ratio in (0,1], deprojected using inclination |
|
Positive intrinsic halo vertical/equatorial ratio; default 1 |
|
Zhao exponents: alpha > 0, beta > 2, 0 <= gamma < 2; defaults 1,3,1 |
|
Finite and < 1; default 0; positive moments impose additional constraints |
|
In [0,pi/2]; default pi/2 |
|
Optional positive equatorial ellipsoidal cutoff; default infinity |
|
Systemic velocity, explicitly fixed or sampled for inference |
Supply exactly one of q and q_projected. Oblate photometry obeys
q_projected² = cos(i)² + q² sin(i)²; deprojection requires nonzero inclination
and positive intrinsic q². intrinsic_axis_ratio(q_projected, inclination)
provides the same conversion. A round image at exactly zero inclination is
degenerate and is rejected; use an explicitly supplied intrinsic q for a
face-on model. Unknown parameter names and nonscalar physical parameters are
errors. Use jax.vmap over parameter dictionaries for batched JAX predictions.
The halo density is
A finite r_t_pc sets this density to zero for m > r_t in the density, mass,
force and J/D calculations. enclosed_mass(m_pc) means mass inside the
spheroid m <= m_pc and includes the factor Q in its volume element. It
saturates outside r_t. The Hayashi 2015 halo uses alpha=2, beta=3 and
gamma=-alpha_paper; NFW uses alpha=1, beta=3, gamma=1.
Forward APIs#
Both implementations compose AxisymmetricPlummerModel,
AxisymmetricZhaoModel and AxisymmetricConstantAnisotropyModel inside
AxisymmetricDSphModel. Choose the imports and parameter interface below:
Implementation |
Import module |
Physical parameters |
|---|---|---|
NumPy/SciPy |
|
Stored in immutable components; optional per-call |
JAX |
|
Passed explicitly at evaluation time |
The component interfaces are AxisymmetricStellarModel, AxisymmetricDMModel
and AxisymmetricAnisotropyModel. Zhao exponents retain the names
alpha, beta, gamma in this geometry.
The force method returns the potential gradient, opposite to gravitational
acceleration. Exact cusp-origin force evaluation is undefined in this API;
cored-origin force, intrinsic central moments and projected central moments
are supported. Intrinsic moments are ordered (vR2, vz2, vphi2). These and LOS
outputs are second moments, equal to dispersion squared under the zero
streaming assumption used by the likelihood.
The components and forward configuration are immutable; use
dataclasses.replace to construct changed components or quadrature settings.
A per-call params dictionary overrides stored values without changing the
model. model.physical_params returns a detached dictionary of all stored
physical values. Supplying q_projected as an override replaces the stored
intrinsic q and applies the same deprojection rule.
NumPy raises InvalidAxisymmetricModelError (a ValueError) for inadmissible
physical parameters or negative/nonfinite intrinsic moments.
JAX uses JAX operations throughout, with no SciPy callbacks. Invalid dynamic proposals give NaN forward outputs and are rejected by the likelihood. Coordinate and schema shape errors raise immediately. Arrays broadcast and scalar coordinates produce scalar outputs in both backends. For JIT setup, runtime precision and gradient checks, use the backend tutorial.
Inference and restart#
Observations require matching, finite, nonempty 1-D arrays x_pc, y_pc,
vlos_kms, e_vlos_kms. Errors must be nonnegative; zero is allowed. A
DataFrame or mapping is accepted by the NumPy/SciPy model. The explicit
AxisymmetricKinematicData object copies observations and supplies detached
arrays with as_kwargs() for NumPyro calls. reset_data validates replacements
before mutation; user-provided priors are never derived from velocities.
The likelihood equation and
MCMC tutorial explain the statistical model.
The NumPy/SciPy wrapper is
AxisymmetricDSphEstimationModel;
NumPyro uses AxisymmetricJeansLikelihoodModel.
The NumPy/SciPy prior table names the sampling coordinates, in sampler
order. Supply matching SamplingParameter objects with a physical name and
transform for each coordinate. For example,
SamplingParameter("log10_one_minus_beta_z", "beta_z", "one_minus_pow10")
means beta_z = 1 - 10**x, and
SamplingParameter("cos_inclination", "inclination", "arccos")
returns radians. Names alone imply no transformation. Uniform bounds on a
coordinate with this arccos specification give an isotropic orientation
prior over the explicitly chosen
range; use bounds compatible with photometry, or allow the deprojection
constraint to reject inadmissible proposals. No implicit transformation
Jacobian is added: the prior is defined in the named sampling coordinate.
An optional PhotometryPriorModel multiplies the prior on a coordinate
explicitly mapped by pow10 to re_pc;
initial points then use the appropriately truncated Gaussian. fit.sample
accepts an RNG/seed and bounded rejection to return feasible initial points.
Impossible support raises an error rather than changing the priors.
lnlikelihoods, lnlikelihood, lnpriors, lnposterior,
lnposterior_wbic, and sample_data are available. WBIC needs at least two
stars. NumPy/SciPy data are process-local and pickleable; shared-memory buffers
specific to the spherical implementation are not used.
ParameterSpec supports general priors/transforms and deterministic physical
sites. Sampled and fixed physical names must be disjoint; optional
postprocessing receives their combined dictionary. The NumPyro likelihood
also accepts the existing configurable velocity-mean and observation-distribution
hooks. Without postprocessing, construction checks required and supported
physical names, exactly one of q and q_projected, and the parameter selected
by a named velocity_mean (default vmem_kms). A callable mean does not require
vmem_kms. With postprocessing, these checks apply to its output immediately
before evaluating the forward model; construction does not execute callbacks or
sample priors. Configuration errors raise ValueError, while inadmissible
physical proposals still receive log probability minus infinity.
Its sigma2_bounds are rejection limits (default 1e-12 to 1e12 in
(km/s)²); finite variances outside them are rejected, never clipped into range.
Both inference paths reject inadmissible Jeans moments with log probability minus infinity. This is not a proof of a positive distribution function or of moment positivity at unobserved positions.
The save/resume tutorial describes persisted analysis identity. For this geometry it includes sky coordinates in both axes, priors and transformations, parameter order, fixed physical values and quadrature settings, in addition to the shared source/dependency and JAX runtime checks. Follow the worked analysis for executable restart commands and output files.