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
NematiandNemati2019specific inputs are moved to those classes and removed from prototype. - New
starlightSuppressionSystemallowed inputs:input_angle_units(allows specification of input angle units as physical angles or lambda/D units),core_platescale_units(same, forcore_platescale),bandpass_modelandbandpass_stepspecifyobservingModebandpass,use_core_thruput_for_eztoggle use ofcore_thruputvsocc_transin computing exozodi contribution,csv_angsep_colnameallows 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_intensityis set for astarlightSuppressionSystem, thecore_contrastis not populated from defaults (and is set to None if not in the input dictionary). Ifcore_mean_intensityis not Nonecore_platescalemay not be none (error is raised). - New methods:
populate_starlightSuppressionSystems,populate_starlightSuppressionSystems_extra,populate_scienceInstruments,populate_scienceInstruments_extra,populate_observingModes, andpopulate_observingModes_extraoffload functionality previously in__init__and make it easier to add new dictionary keys in inheriting implementations. - New
observingModekeys:F0(integration of Vega's spectrum over the observing bandpass),attenuation(product of instrument and systemopticsvalues),losses(product of pupil area, QE, attenuation, and accounts for spectral resolution of spectrometers). - New method
get_core_mean_intensityadds support for stellar-diameter core mean intensity table inputs.core_mean_intensitylambda 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_headerfor processing angle units from inputs and FITS headers. - Updates to
get_coro_paramto allow more flexibility in processing FITS and CSV files. Adding special handling ofcore_areasuch 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_helperoffloads most ofCp_Cb_Cspfunctionality for easier overloading inNemati. calc_intTimeimplements 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_objmoved toNemati.- New method:
calc_saturation_dMagcomputes saturation delta mag.
StarCatalog Changes
- New input
VmagFill(default 0.1) sets all Vmag values to avoid all zeros (which causes problems inTargetList). StarCatalogobjects now provide an (optional)catalog_attsattribute, which, if present, is used byTargetListin place of its owncatlog_attsdefault.- New implementation:
HWOMissionStarsprovides 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
TargetListnow).
TargetList Changes
- New input
fillMissingBandMagstoggles filling missing band magnitudes (new flux calculation makes this generally unnecessary). - New helper methods
load_spectral_catalog,get_template_spectrum, andload_standard_bandsfor spectral template library handling. - Rationalized helper methods:
stellar_Teff,stellar_diameterandstellar_massto 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, andstarMagare deprecated and replaced with new methodstarFluxwhich directly computes the stellar flux in a given band. - Method
calc_intCutoff_dMagdeprecated and functionality folded intocalc_saturation_and_intCutoff_vals. - Method
calc_saturation_dMagdeprecated and functionality moved intoOpticalSystem.
ZodiacalLight Changes
fZmapis now computed to match the time step of thekoMaps.fZQuadsis deprecated and replaced with two dictionaries:fZminsandfZtypes, which encode the same information in a more easily addressable fashion.calclogfreplaced withload_zodi_wavelength_data, which is always called from the Prototype__init__.calcfbetaInputreplaced withload_zodi_spatial_data, which is always called from the Prototype__init__.- New method
zodi_intensity_at_wavelengthcomputes the zodiacal light intensity as a function of wavelength - New method
zodi_color_correction_factorto compute the zodiacal light color correction factor - New method
zodi_intensity_at_locationcomputes the zodiacal light intensity at a particular solar lat/lon at 500 nm - New method
zodi_latitudinal_correction_factorcomputes the zodiacal light latitudinal correction factor
New Utilities
input_script_checkchecks JSON scripts against their module specification for spurious/deprecated keywordsphotometricModelscollection of useful photometric models and extensions tosynphotused byTargetListradialfuncollection of routines for radial averaging and aperture arithmeticprocess_opticalsys_packageturns 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.pynow reads requirements directly fromrequirements.txt. More dependencies have explicit minimum versions.- Added
.readthedocs.yamlfor better control over documentation build.
Full Changelog: v3.0.4...v3.1.0