Skip to main content

WebbPSF Extensions

Project description

WebbPSF Extensions

Extending JWST PSF generation

PyPI Version

Authors: Jarron Leisenring (U. of Arizona, Steward Observatory)

webbpsf_ext provides some enhancements to the WebbPSF package for PSF creation. This follows the pyNRC implementation for storing and retrieving JWST PSFs. In particular, this module generates and saves polynomial coefficients to quickly create unique instrument PSFs as a function of wavelength, focal plane position, and wavefront error drift from thermal distortions.

More specifically, webbpsf_ext uses WebbPSF to generate a series of monochromatic PSF simulations, then produces polynomial fits to each pixel. Storing the coefficients rather than a library of PSFS allows for quick creation (via matrix multiplication) of PSF images for an arbitrary number of wavelengths (subject to hardware memory limitations). The applications range from quickly creating PSFs for many different stellar types over wide bandpasses to generating a large number of monochromatic PSFs for spectral dispersion.

In addition, each science instrument PSF is dependent on the detector position due to field-dependent wavefront errors. Such changes are tracked in WebbPSF, but it becomes burdensome to generate new PSFs from scratch at each location, especially for large starfields. Instead, these changes can be stored by the fitting the residuals of the PSF coefficients across an instrument's field of view, then interpolating for an arbitrary location. A similar scheme can be achieved for coronagraphic occulters, where the PSF changes as the source position moves with respect to the mask.

JWST's thermal evolution (e.g., changing the angle of the sunshield after slewing to a new target) causes small but significant distortions to the telescope backplane. WebbPSF has tools to modify OPDs, but high-fidelity simulations take time to calculate. Since the change to the PSF coefficients varies smoothly with respect to WFE drift components, it's simple to parameterize the coefficient residuals in a fashion similar to the field-dependence.

webbpsf_ext classes

Currently, only NIRCam and MIRI instrument classes are supported via the NIRCam_ext and MIRI_ext objects (although other instruments can be similarly implemented), which subclass the native NIRCam and MIRI objects found in WebbPSF. The key functions to call and generate PSF coefficients are:

  1. gen_psf_coeff: Creates a set of coefficients that will generate simulated PSFs for any arbitrary wavelength. This function first simulates a number of evenly- spaced PSFs throughout the specified bandpass (or the full channel). An nth-degree polynomial is then fit to each oversampled pixel using a linear-least squares fitting routine. The final set of coefficients for each pixel is returned as an image cube. The returned set of coefficient are then used to produce PSF via calc_psf_from_coeff. Useful for quickly generated imaging and dispersed PSFs for multiple spectral types.
  2. gen_wfedrift_coeff: This function finds a relationship between PSF coefficients in the presence of WFE drift. For a series of WFE drift values, we generate corresponding PSF coefficients and fit a polynomial relationship to the residual values. This allows us to quickly modify a nominal set of PSF image coefficients to generate a new PSF where the WFE has drifted by some amplitude.
  3. gen_wfefield_coeff: Science instruments generally have field-dependent wavefront errors, which have been carefully measured in ground-based cryovac test campaigns (SI WFE). These aberrations are expected to be static throughout the JWST mission lifetime. Similar to the above function, we generate PSF coefficients at each of the sampled positions and create a RegularGridInterpolator function to quickly determine new coefficient residuals at arbitrary locations.
  4. gen_wfemask_coeff: For coronagraphic masks, slight changes in the PSF location relative to the image plane mask can substantially alter the PSF speckle pattern. This function generates a number of PSF coefficients at a variety of positions, then fits polynomials to the residuals to track how the PSF changes across the mask's field of view. Special care is taken near the 10-20mas region in order to provide accurate sampling of the SGD offsets.

Installing with pip

Download via pip:

pip install webbpsf_ext

Installing from source

To get the most up to date version of webbpsf_ext, install directly from the GitHub source.

In this case, you will need to clone the git repository:

git clone https://github.com/JarronL/webbpsf_ext

Then install the package with:

cd webbpsf_ext
pip install .

For development purposes, you can use editable installations:

cd webbpsf_ext
pip install -e .

This is useful for helping to develop the code, creating bug reports, switching between branches and submitting pull requests to GitHub. Since the code then lives in your local GitHub directory, this method makes it simple to pull the latest updates straight from the GitHub repo, which are then immediately available to python at runtime without needing to reinstall.

Create Data Directory

You can define the directory that stores the PSF coefficients by setting the environment variable WEBBPSF_EXT_PATH to point to some data directory. All PSF coefficients will be saved here as they are generated to be reused later. For example, in .bashrc shell file, add:

export WEBBPSF_EXT_PATH='$HOME/data/webbpsf_ext_data/'

If this is not set, then a psf_coeff sub-directory is created in the already existing WEBBPSF_PATH directory.

Synphot Data Directory

If you have not already done so, you will need to provide a data files for the required synphot and stsynphot packages . These are used to generate the monochromatic PSFs and to calculate the throughput of the instrument. Data files for Synphot are distributed through the Calibration Reference Data System. They are expected to follow a certain directory structure under the root directory, identified by the PYSYN_CDBS environment variable that must be set prior to using this package.

  1. Download cdbs.tar.gz [approx. 900 MB] to obtain the full set of Synphot data files. Or download a minimum subset of files here [approx 50 MB].
  2. Untar into a directory of your choosing.
  3. Set the environment variable PYSYN_CDBS to point to that directory. For example, in .bashrc shell file, add:
export PYSYN_CDBS='$HOME/data/cdbs/'

After re-sourcing your shell, you should now be able to successfully import synphot, stsynphot in a Python session.

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

webbpsf_ext-1.2.3.tar.gz (8.5 MB view details)

Uploaded Source

Built Distribution

webbpsf_ext-1.2.3-py3-none-any.whl (9.0 MB view details)

Uploaded Python 3

File details

Details for the file webbpsf_ext-1.2.3.tar.gz.

File metadata

  • Download URL: webbpsf_ext-1.2.3.tar.gz
  • Upload date:
  • Size: 8.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.9

File hashes

Hashes for webbpsf_ext-1.2.3.tar.gz
Algorithm Hash digest
SHA256 8a854ff322164d2fc48b7c8b05d69b87caa40c4f79edc206f9d81620afbe88e4
MD5 3b1735677c72a291ef437bb51f3e041a
BLAKE2b-256 5295fa74509cf11df5c2ff6670d292bdb1c6dcf211904987f9ee43562b5d3c39

See more details on using hashes here.

File details

Details for the file webbpsf_ext-1.2.3-py3-none-any.whl.

File metadata

  • Download URL: webbpsf_ext-1.2.3-py3-none-any.whl
  • Upload date:
  • Size: 9.0 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.9

File hashes

Hashes for webbpsf_ext-1.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 2eb73d8ff44f01187edabd5af99bb6c59900841559acd3467ae868e1f1f07c6c
MD5 e1961ffbad119c44fd343dd0681fbb96
BLAKE2b-256 045b8972ca1ef700588f9b825cb273f0261f1667d3e3c96d922340ba9d151f54

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page