skyscapes.disk

Contents

skyscapes.disk#

Disk hierarchy: extended-source surface brightness maps.

Submodules#

Classes#

AbstractDisk

Extended-source surface brightness map.

CompositeDisk

Sum of multiple disk components rendered on a shared grid.

ExovistaDisk

Wavelength-interpolated 3D contrast cube loaded from ExoVista FITS.

ExovistaParametricDisk

ExoVista-style disk component (faithful per-component reproduction).

GraterDisk

Augereau 1999 scattered-light disk.

Package Contents#

class skyscapes.disk.AbstractDisk[source]#

Bases: equinox.Module

Extended-source surface brightness map.

Subclasses return contrast (flux ratio relative to the host star) per pixel. The concrete System multiplies by star.spec_flux_density to turn that into ph/s/m^2/nm per pixel.

incl_deg / pa_deg are supplied at render time rather than stored on the disk so the System’s midplane orientation drives every disk component consistently. Disks whose geometry is pre-baked into their representation (e.g. ExovistaDisk’s contrast cube) may ignore the arguments; parametric disks (GraterDisk, ExovistaParametricDisk) consume them.

abstractmethod surface_brightness(wavelength_nm, time_jd, incl_deg, pa_deg)[source]#

Return contrast per pixel, shape (ny, nx).

Parameters:
  • wavelength_nm (jaxtyping.Array)

  • time_jd (jaxtyping.Array)

  • incl_deg (jaxtyping.Array)

  • pa_deg (jaxtyping.Array)

Return type:

jaxtyping.Array

abstractmethod spatial_extent()[source]#

Return (width_arcsec, height_arcsec).

Return type:

tuple[float, float]

class skyscapes.disk.CompositeDisk[source]#

Bases: skyscapes.disk.base.AbstractDisk

Sum of multiple disk components rendered on a shared grid.

Attributes:
components: Tuple of AbstractDisk instances. At least one

component is required. All components must report the same spatial_extent() so their rendered (ny, nx) arrays sum elementwise.

components: tuple[skyscapes.disk.base.AbstractDisk, Ellipsis]#
__check_init__()[source]#

Reject empty composites and mismatched component extents.

surface_brightness(wavelength_nm, time_jd, incl_deg, pa_deg)[source]#

Return the per-pixel sum of all component contrast maps.

Parameters:
  • wavelength_nm (jaxtyping.Array)

  • time_jd (jaxtyping.Array)

  • incl_deg (jaxtyping.Array)

  • pa_deg (jaxtyping.Array)

Return type:

jaxtyping.Array

spatial_extent()[source]#

Return the shared (width_arcsec, height_arcsec).

Return type:

tuple[float, float]

__repr__()[source]#

Nested summary listing each component disk.

Return type:

str

class skyscapes.disk.ExovistaDisk(pixel_scale_arcsec, wavelengths_nm, contrast_cube)[source]#

Bases: skyscapes.disk.base.AbstractDisk

Wavelength-interpolated 3D contrast cube loaded from ExoVista FITS.

Attributes:

pixel_scale_arcsec: Pixel scale [arcsec/pixel]. wavelengths_nm: 1-D wavelength grid [nm], shape (n_wl,). contrast_cube: Contrast cube, shape (n_wl, ny, nx).

Parameters:
  • pixel_scale_arcsec (float)

  • wavelengths_nm (jaxtyping.Array)

  • contrast_cube (jaxtyping.Array)

pixel_scale_arcsec: float#
wavelengths_nm: jaxtyping.Array#
contrast_cube: jaxtyping.Array#
_contrast_interp: interpax.CubicSpline#
surface_brightness(wavelength_nm, time_jd, incl_deg, pa_deg)[source]#

Contrast map at the requested wavelength, shape (ny, nx).

time_jd, incl_deg, and pa_deg are part of the AbstractDisk interface but ignored here: the cube is a single time snapshot with disk geometry already baked in by the loader.

Parameters:
  • wavelength_nm (jaxtyping.Array)

  • time_jd (jaxtyping.Array)

  • incl_deg (jaxtyping.Array)

  • pa_deg (jaxtyping.Array)

Return type:

jaxtyping.Array

spatial_extent()[source]#

Return (width_arcsec, height_arcsec).

Return type:

tuple[float, float]

__repr__()[source]#

One-line summary of cube shape, pixel scale, and wavelength grid.

Return type:

str

class skyscapes.disk.ExovistaParametricDisk[source]#

Bases: skyscapes.disk.base.AbstractDisk

ExoVista-style disk component (faithful per-component reproduction).

Attributes (PyTree leaves, fittable):

r0_AU: Ring center radius [AU]. dror: Ring fractional width Delta r / r0 (dimensionless). rinner_AU: Inner truncation radius [AU]; below this the density

is suppressed by (r/rinner_AU)^3. Set to a value smaller than rmin_AU to disable.

hor: Opening angle (Gaussian vertical scale / radius). nzodis: Density normalization in zodi units. eta: PR-drag / collision-timescale ratio at r0 - dr. g0, g1, g2: Three-component HG asymmetry parameters. w0, w1, w2: Three-component HG weights. Should sum to 1; not

enforced.

rmin_AU: LOS-integration inner bound [AU]. rmax_AU: LOS-integration outer bound [AU]. wavelengths_nm: 1-D wavelength grid for Ag_grid. Queries

outside this range return NaN.

Ag_grid: Phenomenological albedo scaling vs wavelength.

Static attributes:

nx, ny: Output image shape. pixel_scale_arcsec: Pixel scale [arcsec/pixel]. dist_pc: System distance [pc]. n_slices_los: Number of LOS integration slices. n_scale_heights: LOS half-extent in units of the scale height at

rmax_AU (default 6.0).

r0_AU: jaxtyping.Array#
dror: jaxtyping.Array#
rinner_AU: jaxtyping.Array#
hor: jaxtyping.Array#
nzodis: jaxtyping.Array#
eta: jaxtyping.Array#
g0: jaxtyping.Array#
g1: jaxtyping.Array#
g2: jaxtyping.Array#
w0: jaxtyping.Array#
w1: jaxtyping.Array#
w2: jaxtyping.Array#
rmin_AU: jaxtyping.Array#
rmax_AU: jaxtyping.Array#
wavelengths_nm: jaxtyping.Array#
Ag_grid: jaxtyping.Array#
nx: int#
ny: int#
pixel_scale_arcsec: float#
dist_pc: float#
n_slices_los: int#
n_scale_heights: float#
_zmax_AU()[source]#

LOS half-extent in disk-frame z, evaluated at the ring center.

For ExoVista-style disks the mass is concentrated near r0_AU (ring + nearby halo + inward profile), and the radial profile decays as r^-1.5 outside. Using r0_AU rather than the LOS-bound rmax_AU gives an LOS extent matched to where the density actually lives, so per-slice dz scales with the scale height at the ring rather than with the (much larger) LOS-bound.

Return type:

jaxtyping.Array

surface_brightness(wavelength_nm, time_jd, incl_deg, pa_deg)[source]#

Render the ExoVista-style disk on a sky-plane grid.

Parameters:
  • wavelength_nm (jaxtyping.Array)

  • time_jd (jaxtyping.Array)

  • incl_deg (jaxtyping.Array)

  • pa_deg (jaxtyping.Array)

Return type:

jaxtyping.Array

spatial_extent()[source]#

Return (width_arcsec, height_arcsec).

Return type:

tuple[float, float]

__repr__()[source]#

Compact summary of ring/density/HG parameters + image/Ag grid.

Return type:

str

class skyscapes.disk.GraterDisk[source]#

Bases: skyscapes.disk.base.AbstractDisk

Augereau 1999 scattered-light disk.

Attributes (PyTree leaves, fittable):

sma_AU: Reference radius [AU] (radial profile peak). alpha_in: Inner power-law slope (positive). alpha_out: Outer power-law slope (negative). ksi0_AU: Vertical scale height at sma_AU [AU]. gamma: Vertical profile exponent (2 = Gaussian). beta: Flaring index (0 = none, 1 = linear). rmin_AU: Inner truncation radius [AU]. rmax_AU: Outer truncation radius [AU]. wavelengths_nm: 1-D wavelength grid for g_HG_grid /

Ag_grid, shape (n_wave,) [nm]. Must be sorted. surface_brightness calls outside this range return NaN.

g_HG_grid: Henyey-Greenstein asymmetry at each grid wavelength. Ag_grid: Albedo-like scaling at each grid wavelength.

Static attributes (compilation-time constants):

nx, ny: Output image shape. pixel_scale_arcsec: Pixel scale [arcsec/pixel]. dist_pc: System distance [pc]. n_slices_los: Number of LOS integration slices. n_scale_heights: LOS half-extent in units of the local scale

height at rmax_AU (default 6.0).

sma_AU: jaxtyping.Array#
alpha_in: jaxtyping.Array#
alpha_out: jaxtyping.Array#
ksi0_AU: jaxtyping.Array#
gamma: jaxtyping.Array#
beta: jaxtyping.Array#
rmin_AU: jaxtyping.Array#
rmax_AU: jaxtyping.Array#
wavelengths_nm: jaxtyping.Array#
g_HG_grid: jaxtyping.Array#
Ag_grid: jaxtyping.Array#
nx: int#
ny: int#
pixel_scale_arcsec: float#
dist_pc: float#
n_slices_los: int#
n_scale_heights: float#
_zmax_AU()[source]#

LOS half-extent in disk-frame z, evaluated at rmax_AU.

For a flared disk, the scale height grows with radius, so the LOS depth that captures the vertical tails at the outer edge is larger than n_scale_heights * ksi0_AU at sma_AU.

Return type:

jaxtyping.Array

surface_brightness(wavelength_nm, time_jd, incl_deg, pa_deg)[source]#

Render the Augereau 1999 scattered-light disk on a sky-plane grid.

wavelength_nm selects g_HG and Ag via cubic-spline interpolation over wavelengths_nm / g_HG_grid / Ag_grid. Queries outside the grid return NaN. time_jd is part of the AbstractDisk interface but ignored (static disk).

Parameters:
  • wavelength_nm (jaxtyping.Array)

  • time_jd (jaxtyping.Array)

  • incl_deg (jaxtyping.Array)

  • pa_deg (jaxtyping.Array)

Return type:

jaxtyping.Array

spatial_extent()[source]#

Return (width_arcsec, height_arcsec).

Return type:

tuple[float, float]

__repr__()[source]#

Compact summary of radial/vertical/HG parameters + image/Ag grid.

Return type:

str