The Pandeia Engine is a Python module (compatible with Python 3.6 and later) that functions as the computational engine of the JWST ETC and Roman ETC. It can be imported and run as a standalone module.
The engine itself can be run with the command
from pandeia.engine import perform_calculation result = perform_calculation.perform_calculation(calculation) |
where "calculation" is a heirarchical dictionary describing a scene of sources, an instrument setup, and an extraction strategy.
Such dictionaries are available in JWST Webapp download files (as a JSON-formatted file named input.json, suitable for reading in with built-in Python functions) or default versions can be created with the function build_default_calc() and then edited:
from pandeia.engine import calc_utils calculation = calc_utils.build_default_calc("jwst","nircam","sw_imaging") |
The command above produces the NIRCam calculation below.
The full API documentation, with all possible options and combinations for any instrument, is in the attached file:
The following calculation defines a JWST NIRCam observation in SW Imaging mode using the full subarray and rapid readout pattern and f070w filter, for a flat-spectrum (in fnu) point source normalized to 0.001 mJy, intended to be observed with a 0.2" aperture.
(click here to download as a JSON file: sw_f070w_rapid_full.jeng){ "background": "minzodi", "background_level": "benchmark", "calculation": { "effects": { "saturation": null }, "noise": { "crs": null, "ffnoise": null } }, "configuration": { "detector": { "nexp": 1, "ngroup": 10, "nint": 1, "readout_pattern": "rapid", "subarray": "full" }, "instrument": { "aperture": "sw", "disperser": null, "filter": "f070w", "instrument": "nircam", "mode": "sw_imaging" } }, "scene": [ { "position": { "orientation": 0.0, "x_offset": 0.0, "y_offset": 0.0 }, "shape": { "geometry": "point" }, "spectrum": { "extinction": { "bandpass": "j", "law": "mw_rv_31", "unit": "mag", "value": 0.0 }, "lines": [], "name": "generic source", "normalization": { "norm_flux": 0.001, "norm_fluxunit": "mjy", "norm_wave": 2.0, "norm_waveunit": "microns", "type": "at_lambda" }, "redshift": 0.0, "sed": { "sed_type": "flat", "unit": "fnu", "z": 0.0 } } } ], "strategy": { "aperture_size": 0.1, "background_subtraction": true, "display_string": "Imaging Aperture Photometry", "method": "imagingapphot", "sky_annulus": [ 0.22, 0.4 ], "target_source": "1", "target_type": "coords", "target_xy": [ 0.0, 0.0 ], "units": "arcsec" } } |
The following dictionary defines a Roman WFI Imaging observation with the F062 filter, 1024x1024 subarray (similar read time to what's expected for Roman WFI Imaging), medium8 readout pattern, and 6 groups; for a 0.001 mJy flat-spectrum point source (in fnu) intended to be observed with a 0.2" aperture.
(click here to download as a JSON file: any_f062_medium8_1024x1024.jeng)
{ "background": "minzodi", "background_level": "benchmark", "calculation": { "effects": { "saturation": null }, "noise": { "crs": null, "ffnoise": null } }, "configuration": { "detector": { "nexp": 1, "ngroup": 6, "nint": 1, "readout_pattern": "medium8", "subarray": "1024x1024" }, "instrument": { "aperture": "any", "disperser": null, "filter": "f062", "instrument": "wfi", "mode": "imaging" } }, "scene": [ { "position": { "orientation": 0.0, "x_offset": 0.0, "y_offset": 0.0 }, "shape": { "geometry": "point" }, "spectrum": { "extinction": { "bandpass": "j", "law": "mw_rv_31", "unit": "mag", "value": 0.0 }, "lines": [], "name": "generic source", "normalization": { "norm_flux": 0.001, "norm_fluxunit": "mjy", "norm_wave": 2.0, "norm_waveunit": "microns", "type": "at_lambda" }, "redshift": 0.0, "sed": { "sed_type": "flat", "unit": "fnu", "z": 0.0 } } } ], "strategy": { "aperture_size": 0.2, "background_subtraction": true, "display_string": "Imaging Aperture Photometry", "method": "imagingapphot", "sky_annulus": [ 0.4, 0.6 ], "target_source": "1", "target_type": "coords", "target_xy": [ 0.0, 0.0 ], "units": "arcsec" } } |