Skip to main content

physicaloptix

Physical optics — PSFs and diffraction — for the HWO direct-imaging simulation suite.

What physicaloptix is

physicaloptix turns an optixstuff hardware description into point-spread functions by wave-optics propagation. It is a downstream consumer of optixstuff — parallel to coronagraphoto (2D image simulation) and jaxEDITH (exposure-time and yield calculations) — so optixstuff itself stays free of diffraction code.

The propagation core is owned: a plane-aware Field/Grid data model, the continuous-FT MFT pair, the multi-scale vortex, and the OpticalPath fold with construction-time sampling gates, validated against the HWO Coronagraph Design Survey (cds_pipeline) EAC-1 AAVC to an on-axis null of 3.05e-11 (0.2 percent of the reference; the acceptance gates live in tests/validation/).

The key piece is PathCoronagraph, which implements optixstuff's AbstractCoronagraph: build an OpticalPath (entrance pupil to Lyot plane), wrap it, and hand it to any downstream tool. Its IWA and scalar performance curves are derived from the propagated PSFs at construction, never declared.

import physicaloptix as po

coro = po.PathCoronagraph.from_path(
    core_path, pupil_field, diameter_m=6.0, owa_lod=32.0
)
psf = coro.on_axis_psf(600.0, pixel_scale_rad, npix)   # unit-flux PSF out
eta = coro.throughput(6.0, 600.0)                      # derived, not declared

What physicaloptix is not

  • Not a hardware model. The telescope / coronagraph / detector description lives in optixstuff; physicaloptix consumes it.
  • Not a PSF interpolator. That's yippy's job (a sampled YIP table). physicaloptix is its functional sibling — live propagation — and both back the same AbstractCoronagraph slot.
  • Not a scene model. Stars, planets, disks, and zodi live in skyscapes.

Architecture

Built on JAX and Equinox, physicaloptix provides:

  • The owned core (physicaloptix.core) — Grid (all-static, half-pixel offset, continuous-FT weights), PlaneKind-tagged Field pytrees, and Spectrum for chromatic fields.
  • Propagators (physicaloptix.transforms) — the validated cmft_fwd / cmft_bwd continuous-FT MFT pair and the plane-aware Fraunhofer wrapper, with sampling diagnostics evaluated at construction time.
  • Elements (physicaloptix.elements) — grid-stamped SampledOptic for ingested masks and the MultiScaleVortex ladder (hcipy port; reaches the cds EAC-1 on-axis null).
  • The optical path (physicaloptix.path) — OpticalPath, named plane-checked stages folded once, with static taps for free instrumented propagation.
  • The speckle layerSpeckleProcess / AnalyticSpeckleField, the linear speckle generator (E_nom, G) behind optixstuff's AbstractSpeckleField.
  • Interop (physicaloptix.interop) — PathCoronagraph, the optixstuff AbstractCoronagraph adapter: cached-Lyot image interface and scalar curves (throughput, core area/intensity, occulter transmission) derived from a build-time separation sweep.

Ecosystem position

flowchart TB
    optix["<b>optixstuff</b><br/>Telescope · Coronagraph · Detector · OpticalPath"]
    physopt["<b>physicaloptix</b><br/>Owned propagation core / diffraction<br/>OpticalPath · PathCoronagraph"]
    yippy["<b>yippy</b><br/>Sampled-YIP PSF interpolation"]
    corono["<b>coronagraphoto</b><br/>2D image simulation"]
    jaxedith["<b>jaxEDITH</b><br/>Exposure-time / yield"]

    optix --> physopt
    optix --> yippy
    physopt -- AbstractCoronagraph --> corono
    physopt -- AbstractCoronagraph --> jaxedith
    yippy -- AbstractCoronagraph --> corono

Installation

pip install physicaloptix

Status

Early development. The owned core propagates a full apodized vortex coronagraph chain (see tests/validation/), and PathCoronagraph serves it through the optixstuff interface with derived performance curves. The optical model is scalar; the chain propagates broadband on a fixed angular grid, and the yield-input-package emitter freezes it to tables.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

physicaloptix-0.1.0.tar.gz (63.2 kB view details)

Uploaded Source

Built Distribution

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

physicaloptix-0.1.0-py3-none-any.whl (71.8 kB view details)

Uploaded Python 3

File details

Details for the file physicaloptix-0.1.0.tar.gz.

File metadata

  • Download URL: physicaloptix-0.1.0.tar.gz
  • Upload date:
  • Size: 63.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for physicaloptix-0.1.0.tar.gz
Algorithm Hash digest
SHA256 7c775920c696e4f7983c0f778b7e4405ff8a2b110a52d0c4d66c27ffaeca19b2
MD5 21d52291fad6a85eeebdbfad6d9f0c51
BLAKE2b-256 016bed4d1710ef19c210ed004ead32fa9fede240a3c74b4626352dff8f7fed40

See more details on using hashes here.

Provenance

The following attestation bundles were made for physicaloptix-0.1.0.tar.gz:

Publisher: publish-to-pypi.yml on CoreySpohn/physicaloptix

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

File details

Details for the file physicaloptix-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: physicaloptix-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 71.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for physicaloptix-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b770cf2ec2931de53958cacb1e59ce87f29cfafb06c4bc148ac26b97e8d2c83a
MD5 3a1039190c29bda16e48b5924178f9fd
BLAKE2b-256 23651dea4bbd4d6b8fb1d556218762e0fb4603bf88f3110ca0567bb322c7f899

See more details on using hashes here.

Provenance

The following attestation bundles were made for physicaloptix-0.1.0-py3-none-any.whl:

Publisher: publish-to-pypi.yml on CoreySpohn/physicaloptix

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

Release history Release notifications | RSS feed

1.2.0

2 files

1.1.0

2 files

1.0.1

2 files

1.0.0

2 files

This release

0.1.0 This release

2 files

0.0.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page