Install with new Conda Environment

This installation tutorial assumes a clean installation with Anaconda via:

$ conda create -n py39 python=3.9 anaconda

and has been verified on Python 3.9 using the following modules:

  • Numpy 1.20

  • Matplotlib 3.5

  • Scipy 1.7

  • Astropy 5.0

  • Astroquery 0.4.3


Configure Conda Channels

We will first install a few packages that live in the AstroConda and Conda-Forge channels. If you’re already working in an AstroConda environment, then you should be all set and can probably skip most of these steps and jump to Installing WebbPSF Extensions.

If you have some other Conda installation, such as indicated above, then you can simply add the AstroConda and Conda-Forge channels to your .condarc file, which appends the appropriate URL to Conda’s channel search path:

# Writes changes to ~/.condarc
$ conda config --append channels https://ssb.stsci.edu/astroconda
$ conda config --append channels conda-forge

Now your .condarc file should look something like the following:

channels:
  - defaults
  - https://ssb.stsci.edu/astroconda
  - conda-forge

Installing Pysynphot

With the AstroConda channel added, it’s a simple matter to run:

$ conda install pysynphot

or from PyPi:

$ pip install pysynphot

Data files for Pysynphot 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 the following file: cdbs.tar.gz [approx. 760 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/'
    

You should now be able to successfully import pysynphot in a Python session.


Installing WebbPSF

The easiest way to install WebbPSF without inducing package conflicts is to install some of its main dependencies, then WebbPSF using the --no-deps flag. In this particular example, we use a combination of conda and pip, because of minor issues installing photutils dependencies.

$ conda install photutils
$ pip install pysiaf poppy
$ pip install webbpsf --no-deps

Note

The synphot package has been ignored in this case, because pynrc currently uses the slightly older pysynphot package. For details on installing synphot as well as other installation methods, see the WebbPSF documentation. Configuring pynrc to use synphot is under development.

WebbPSF Data Files

You will also need to download and install WebbPSF data files: webbpsf-data-1.0.0.tar.gz [approx. 280 MB]. Follow the same procedure as with the Pysynphot data files, setting the WEBBPSF_PATH environment variable to point towards your webbpsf-data directory.

Matplotlib Backends

In many cases matplotlib crashes when using the default backend (at least on Mac OS X and certain Linux distributions). Given the propensity for these crashes, it may be preferable to use a different graphics backend such as TkAgg. This can either be accomplished by setting matplotlib.use("TkAgg") after importing matplotlib or setting the default backend via your matplotlibrc file. The latter option is probably preferred for most cases.


Installing JWST Backgrounds

jwst_bakcgrounds is a a simple program to predict the levels of background emission in JWST observations. It accesses a precompiled background cache prepared by STScI, requiring an internet connection to access. However, pynrc comes with a simpler background estimator in the event jwst_background is not installed or no functioning internet. In this sense, jwst_backgrounds is not a strict requirement for running pynrc.

This module requires healpy to run:

$ conda install healpy

Then install JWST Backgrounds with pip:

$ pip install jwst_backgrounds

Installing Astroquery

Astroquery is a set of tools for querying astronomical web forms and databases. It is used within pynrc to query Simbad and Gaia databases to search for sources and obtain basic astrometry, fluxes, and spectral types.

Install via conda:

$ conda install astroquery

Installing JWST Pipeline

In order to create DMS-like datasets, pyNRC uses data models from the JWST pipeline (https://github.com/spacetelescope/jwst). Again, easiest to install via pip:

$ pip install jwst

The JWST pipeline is under significant development, so it’s a good idea to keep this up-to-date with new releases by regularly running:

$ pip install jwst --upgrade

CRDS Data Files

Configure the calibration reference database (CRDS) by defining the CRDS directory that will store downloaded cal files. For example, in .bashrc shell file:

export CRDS_PATH='$HOME/data/crds_cache/'
export CRDS_SERVER_URL='https://jwst-crds.stsci.edu'

Installing WebbPSF Extensions

The webbpsf_ext package calculates and stores polynomial relationships between PSFs with respect to wavelength, focal plane position, and WFE drift in order to quickly generate arbitrary NIRCam PSFs without having to simulate a new PSF on the fly.

pip install webbpsf_ext

Set 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/'

Installing pyNRC

Finally, we are ready to install pynrc!

Installing with pip

You can install the pynrc package through pip:

$ pip install pynrc

Note that the pip command only installs the program code. You still must download and install the data files, as described below.

Installing from source

To get the most up to date version of pynrc, install directly from source, though stability is not guaranteed. The development version can be found on GitHub.

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

$ git clone https://github.com/JarronL/pynrc

Then install the package with:

$ cd pynrc
$ pip install .

For development purposes:

$ cd pynrc
$ pip install -e .

This creates an editable installation, which is great for helping to develop the code, create bug reports, pull requests to GitHub, etc. Make sure to switch to the develop branch after installation in order to get access to the latest code base.

pyNRC Data Files

Similarly, pynrc comes with its own set of data files, such as instrument throughputs, SCA biases and darks, stellar models, and exoplanet models. To run pynrc, you must download these files and define the PYNRC_PATH environment variable. This is also the location that PSF coefficients will be saved to during normal operations of pynrc.

Files containing information such as the instrument throughputs, stellar models, and exoplanet models are already distributed through webbpsf_ext. In addition, pynrc requires a number of files to simulate realistic detector data with DMS-like formatting and headers. In general, these are not necessary to run pynrc’s ETC capabilities and simple simulations. But, in order to create DMS and pipeline-compliant data, you must download these files and define the PYNRC_PATH environment variable.

  1. Download the following file: pynrc_data_all_v1.0.0.tar [approx. 17.0 GB]

  2. Untar into a directory of your choosing.

  3. Set the environment variable PYNRC_PATH to point to that directory. For example, in .bashrc shell file, add:

    export PYNRC_PATH='$HOME/data/pynrc_data'
    

You should now be able to successfully import pynrc in a Python session.

Environment Variables

In the end, you should have a number of environment variables in your .bashrc (or equivalnet):

export CRDS_PATH='$HOME/data/crds_cache/'
export CRDS_SERVER_URL='https://jwst-crds.stsci.edu'
export PYSYN_CDBS='$HOME/data/cdbs/'
export WEBBPSF_PATH='$HOME/data/webbpsf-data/'
export WEBBPSF_EXT_PATH='$HOME/data/webbpsf_ext_data/'
export PYNRC_DATA='$HOME/data/pynrc_data/'