Calculations at large radii (> 500 lambda/D ~ 30 arcsec for 2 microns) will show numerical artifacts from Fourier aliasing and the implicit repetition of the pupil entrance aperture in the discrete Fourier transform. If you need accurate PSF information at such large radii, please contact Marshall Perrin for higher resolution pupil data.
You may see various warning messages while running computations, like thus:
((<pysynphot.spectrum.Box object at 0x1047132d0> * nircam,im,f200w)) does not have a defined binset in the wavecat table. The waveset of the spectrum will be used instead. Warning: invalid value encountered in absolute
These can safely be ignored.
The following factors are NOT included in these simulations:
This is a major release of WebbPSF, with several additions to the optical models (particularly for slit and slitless spectroscopy), and extensive software improvements and under-the-hood infrastructure code updates. Many default settings can now be customized by a text configuration file in your home directory. The GUI has also been completely revamped to use a better cross-platform widget toolkit, wxpython.
Updates to the optical models:
Initial support for spectroscopy: NIRSpec fixed slit and some MSA spectroscopy, MIRI LRS spectroscopy (for both slit and slitless modes), and NIRISS single-object slitless spectroscopy. To model one of these modes, select the desired image plane stop (if any) plus the pupil plane stop for the grating. WebbPSF does not yet include any model for the spectral dispersion of the prisms, so you will want to perform monochromatic calculations for the desired wavelengths, and coadd the results together yourself into a spectrum appropriately. For example:>> nirspec.image_mask = 'S200A1' >> nirspec.pupil_mask = 'NIRSpec grating' >> monopsf = nirspec.calcPSF(monochromatic=3e-6, fov_arcsec=3) >> miri.image_mask = 'LRS slit' >> miri.pupil_mask = 'LRS grating' >> miripsf = miri.calcPSF(monochromatic=10e-6) >> niriss.pupil_mask = 'GR700XD' >> monopsf = niriss.calcPSF(monochromatic=1.5e-6, oversample=4)
In fact the NIRSpec class now automatically defaults to having the NIRSpec grating pupil stop as the selected pupil mask, since that’s always in the beam. For MIRI you must explicitly select the ‘LRS grating’ pupil mask, and may select the ‘LRS slit’ image stop. For NIRISS you must select the ‘GR700XD’ grating as the pupil mask, though of course there is no slit for this one.
Please note This is new/experimental code and these models have not been validated in detail against instrument hardware performance yet. Use with appropriate caution, and we encourage users and members of the instrument teams to provide input on how this functionality can be further improved. Note also that MIRI MRS and NIRSpec IFU are still unsupported.
Thanks to Loic Albert (U de Montreal) and Anand Sivaramakrishnan for data and many useful discussions on NIRISS SOSS. Thanks to Klaus Pontoppidan for proposing the NIRSpec and MIRI support and useful discussions. Thanks to Erin Elliott for researching the NIRSpec grating wheel pupil stop geometry, and Charles Lajoie for information on the MIRI LRS pupil stop.
Added NIRISS CLEARP pupil mask; this includes the obscuration from the pupil alignment reference. Given the pupil wheel layout, this unavoidably must be in the beam for any NIRISS long-wave PSFs, and WebbPSF will automatically configure it in the necessary cases.
Minor bug fix to weak lens code for NIRCam, which previously had an incorrect scaling factor. Weak lens defocus values updated to the as-built rather than ideal values (which differ by 3%, but the as built values are very well calibrated).
Added defocus option to all instruments, which can be used to simulate either internal focus mechanism moves or telescope defocus during MIMF. For example, set>> nircam.options['defocus_waves']=3 >> nircam.options['defocus_wavelength']=2.0e-6
to simulate 3 waves of defocus at 2 microns, equivalently 6 microns phase delay peak-to-valley in the wavefront.
Added new option to offset intermediate pupils (e.g. coronagraphic Lyot stops, spectrograph prisms/grisms, etc) in rotation as well as in centering:>> niriss.options['pupil_rotation'] = 2 # degrees counterclockwise
Added support for rectangular subarray calculations. You can invoke these by setting fov_pixels or fov_arcsec with a 2-element iterable:>> nc = webbpsf.NIRCam() >> nc.calcPSF('F212N', fov_arcsec=[3,6]) >> nc.calcPSF('F187N', fov_pixels=(300,100) )
Those two elements give the desired field size as (Y,X) following the usual Python axis order convention. This is motivated in particular by the rectangular subarrays used in some spectroscopic modes.
Other Software Updates & Enhancements:
Required Python modules updated, now with dependency on astropy:
- astropy.io.fits replaces pyfits for FITS I/O.
- astropy.io.ascii replaces asciitable for ASCII table I/O.
- atpy is no longer required.
- New astropy.config configuration system is used for persistent settings. This includes saving accumulated FFTW ‘wisdom’ so that future FFT-based calculations will begin more rapidly.
- lxml now required for XML parsing of certain config files
- psutil strongly recommended for cross-platform detection of available free RAM to enable better parallelization.
Improvements to parallelization code. Better documentation for parallelization. PyFFTW3 replaced with pyFFTW for optimized FFTs (yes, those are two entirely different packages).
New GUI using the wxpython widget toolkit in place of the older/less functional Tkinter tool kit. Thanks to Klaus Pontoppidan for useful advice in wxpython. This should offer better cross-platform support and improved long term extensibility. (For now, the existing Tkinter GUI remains in place but is deprecated and further development is not planned.)
- The calculation options dialog box now has an option to toggle between monochromatic and broadband calculations. In monochromatic mode, the “# of wavelengths” field is replaced by a “wavelength in microns” field.
- There is also an option to toggle the field of view size between units of arcseconds and pixels.
- Log messages giving details of calculations are now displayed in a window as part of the GUI as well.
- The wx gui supports rectangular fields of view. Simply enter 2 elements separated by a comma in the ‘Field of view’ text box. As a convenience, these are interpreted as (X,Y) sizes. (Note that this is opposite of the convention used in the programming interface noted above; this is potentially confusing but seems a reasonable compromise for users of the webbpsf GUI who do not care to think about Python conventions in axis ordering. Comments on this topic are welcome.)
Improved configuration settings system. Many settings such as default oversampling, default field of view size, and output file format can now be set in a configuration file for persistence between sessions. So if you always want e.g. 8x oversampling, you can now make that the default. An example configuration file with default values will be created automatically the first time you run webbpsf now, including informative comments describing possible settings. This file will be in your astropy config directory, typically something like “~/.astropy/config”.
- New ‘Preferences’ dialog allows changing these persistent defaults through the GUI.
New function webbpsf.setup_logging() adds some more user-friendliness to the underlying python logging system. This includes persistent log settings between sessions. See updated documentation in the webbpsf page.
The first time it is invoked on a computer, WebbPSF will display a welcome message providing some information of use to new users. This includes checking whether the requisite data files have been installed properly, and alerting users to the location of the configuration file, among other things.
Some bugfixes in the example code. Thanks to Diane Karakla, Anand Sivaramakrishnan, Schuyler Wolff.
Various updates & enhancements to this documentation. More extensive documentation for POPPY now available as well. Doc theme derived from astropy.
Released May 18, 2012
Repaired functionality for saving intermediate opticals planes
Coronagraph pupil shear shifts now use scipy.ndimage.shift instead of numpy.roll to avoid wrapping pixels around the edge of the array.
Significant internal code reorganizations and cleanup:
- switched package building to use setuptools instead of distutils/stsci_distutils_hack
- poppy now installed as a separate package to more easily allow direct use.
- new Instrument class in poppy provides much of the functionality previously in JWInstrument, to make it easier to model generic non-JWST instruments using this code.
- Better packaging in general, with more attention to public/private API consistency
- Built-in test suite available via python setup.py test
Minor fix to MIRI ND filter transmission curve (Note: MIRI ND data is available on internal STScI data ditribution only)
Binset now specified when integrating across bandpasses in pysynphoteliminating a previous warning message for that calculation.
Stellar spectra are now by default drawn from the PHOENIX models catalog rather than the Castelli & Kurucz 2004 models. This is because the PHOENIX models have better spectral sampling at mid-infrared wavelengths.
Default centroid box sizes are now consistent for measure_centroid() and the markcenter option to display_PSF(). (Thanks to Charles Lajoie for noting the discrepancy)
TFI class (deprecated in version 0.2.6) now removed.
Released December 6, 2011
Released November 7, 2011
Initial public release, June 1 2011. Questions, comments, criticism all welcome!
Initial STScI internal release, spring 2011. Questions, comments, criticism all welcome!
Development, fall 2010.