v3.1.0
EXOSIMS v3.1.0
This release includes a fairly major reworking of the TargetList
, OpticalSystem
, and ZodiacalLight
prototypes, along with associated updates to multiple downstream implementations.
The OpticalSystem
prototype is updated to perform a basic set of integration time calculations assuming a non-photon counting model (a photon counting model is provided, as before, by the Nemati
implementation). This replaces the original behavior where the prototype generated fake integration times unrelated to the inputs. The OpticalSystem
initialization is restructured to allow for easier expansion of inputs in downstream implementations, and to also keep track of allowed keywords in the various OpticalSystem
dictionaries (i.e., scienceInstruments
, starlightSuppressionSystems
, and observingModes
).
In TargetList, calculation of stellar fluxes is significantly updated via the inclusion of the synphot
package as an upstream dependency. All relevant calculations using stellar template spectra and blackbody spectra are offloaded to synphot
. Every OpticalSystem
observingMode
now includes a synphot
bandpass model. There are also numerous updates to caching mechanisms to ensure proper caching of computed products, and the addition of computation of stellar diameters and effective temperatures for all targets.
OpticalSystem
Changes
- All
Nemati
andNemati2019
specific inputs are moved to those classes and removed from prototype. - New
starlightSuppressionSystem
allowed inputs:input_angle_units
(allows specification of input angle units as physical angles or lambda/D units),core_platescale_units
(same, forcore_platescale
),bandpass_model
andbandpass_step
specifyobservingMode
bandpass,use_core_thruput_for_ez
toggle use ofcore_thruput
vsocc_trans
in computing exozodi contribution,csv_angsep_colname
allows specification of angular separation column header for CSV table data. - New attributes:
allowed_observingMode_kws
,allowed_scienceInstrument_kws
, allowed_starlightSuppressionSystem_kwsused to track allowable inputs for each dictionary type.
vega_spectrum` contains Vega's spectrum. - Change in behavior: if
core_mean_intensity
is set for astarlightSuppressionSystem
, thecore_contrast
is not populated from defaults (and is set to None if not in the input dictionary). Ifcore_mean_intensity
is not Nonecore_platescale
may not be none (error is raised). - New methods:
populate_starlightSuppressionSystems
,populate_starlightSuppressionSystems_extra
,populate_scienceInstruments
,populate_scienceInstruments_extra
,populate_observingModes
, andpopulate_observingModes_extra
offload functionality previously in__init__
and make it easier to add new dictionary keys in inheriting implementations. - New
observingMode
keys:F0
(integration of Vega's spectrum over the observing bandpass),attenuation
(product of instrument and systemoptics
values),losses
(product of pupil area, QE, attenuation, and accounts for spectral resolution of spectrometers). - New method
get_core_mean_intensity
adds support for stellar-diameter core mean intensity table inputs.core_mean_intensity
lambda functions now take 3 inputs: wavelength, angular separation, and stellar diameter, the last of which defaults to 0 (unresolved). - New method
get_angle_unit_from_header
for processing angle units from inputs and FITS headers. - Updates to
get_coro_param
to allow more flexibility in processing FITS and CSV files. Adding special handling ofcore_area
such that the lambda function returns units (arcsec^2). All interpolants are now linear by default and occulter interpolants do not have inputs scaled by wavelength. - New helper method
Cp_Cb_Csp_helper
offloads most ofCp_Cb_Csp
functionality for easier overloading inNemati
. calc_intTime
implements the basic integration time model from Garrett et al. 2016/Nemati et al. 2014 (without photon counting effects). Infeasible integration times are now returned as NaN (not zero).int_time_denom_obj
moved toNemati
.- New method:
calc_saturation_dMag
computes saturation delta mag.
StarCatalog
Changes
- New input
VmagFill
(default 0.1) sets all Vmag values to avoid all zeros (which causes problems inTargetList
). StarCatalog
objects now provide an (optional)catalog_atts
attribute, which, if present, is used byTargetList
in place of its owncatlog_atts
default.- New implementation:
HWOMissionStars
provides a star catalog with the HWO Mission Star list by Mamajek and Stapelfeldt (see https://exoplanetarchive.ipac.caltech.edu/docs/2645_NASA_ExEP_Target_List_HWO_Documentation_2023.pdf)
SurveySimulation
Changes
- Removing redundant calculation of limiting delta mag (this is done via the saturation dMag in
TargetList
now).
TargetList
Changes
- New input
fillMissingBandMags
toggles filling missing band magnitudes (new flux calculation makes this generally unnecessary). - New helper methods
load_spectral_catalog
,get_template_spectrum
, andload_standard_bands
for spectral template library handling. - Rationalized helper methods:
stellar_Teff
,stellar_diameter
andstellar_mass
to all behave the same - all now generate attribute arrays of the relevant properties by default, and only fill values not provided by theStarCatalog
. - Methods
F0
,starF0
, andstarMag
are deprecated and replaced with new methodstarFlux
which directly computes the stellar flux in a given band. - Method
calc_intCutoff_dMag
deprecated and functionality folded intocalc_saturation_and_intCutoff_vals
. - Method
calc_saturation_dMag
deprecated and functionality moved intoOpticalSystem
.
ZodiacalLight
Changes
fZmap
is now computed to match the time step of thekoMap
s.fZQuads
is deprecated and replaced with two dictionaries:fZmins
andfZtypes
, which encode the same information in a more easily addressable fashion.calclogf
replaced withload_zodi_wavelength_data
, which is always called from the Prototype__init__
.calcfbetaInput
replaced withload_zodi_spatial_data
, which is always called from the Prototype__init__
.- New method
zodi_intensity_at_wavelength
computes the zodiacal light intensity as a function of wavelength - New method
zodi_color_correction_factor
to compute the zodiacal light color correction factor - New method
zodi_intensity_at_location
computes the zodiacal light intensity at a particular solar lat/lon at 500 nm - New method
zodi_latitudinal_correction_factor
computes the zodiacal light latitudinal correction factor
New Utilities
input_script_check
checks JSON scripts against their module specification for spurious/deprecated keywordsphotometricModels
collection of useful photometric models and extensions tosynphot
used byTargetList
radialfun
collection of routines for radial averaging and aperture arithmeticprocess_opticalsys_package
turns the standard Stark/Krist yield model coronagraph input files into EXOSIMS-standard inputs.
Internals
- Massive documentation updates. Switching from drawio diagrams to mermaid flowcharts.
setup.py
now reads requirements directly fromrequirements.txt
. More dependencies have explicit minimum versions.- Added
.readthedocs.yaml
for better control over documentation build.
Full Changelog: v3.0.4...v3.1.0