Skip to content

v3.1.0

Compare
Choose a tag to compare
@dsavransky dsavransky released this 12 Apr 01:45
· 189 commits to master since this release
f46844b

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 and Nemati2019 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, for core_platescale), bandpass_model and bandpass_step specify observingMode bandpass, use_core_thruput_for_ez toggle use of core_thruput vs occ_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 a starlightSuppressionSystem, the core_contrast is not populated from defaults (and is set to None if not in the input dictionary). If core_mean_intensity is not None core_platescale may not be none (error is raised).
  • New methods: populate_starlightSuppressionSystems, populate_starlightSuppressionSystems_extra, populate_scienceInstruments, populate_scienceInstruments_extra, populate_observingModes, and populate_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 system optics 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 of core_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 of Cp_Cb_Csp functionality for easier overloading in Nemati.
  • 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 to Nemati.
  • New method: calc_saturation_dMag computes saturation delta mag.

StarCatalog Changes

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, and load_standard_bands for spectral template library handling.
  • Rationalized helper methods: stellar_Teff, stellar_diameter and stellar_mass to all behave the same - all now generate attribute arrays of the relevant properties by default, and only fill values not provided by the StarCatalog.
  • Methods F0, starF0, and starMag are deprecated and replaced with new method starFlux which directly computes the stellar flux in a given band.
  • Method calc_intCutoff_dMag deprecated and functionality folded into calc_saturation_and_intCutoff_vals.
  • Method calc_saturation_dMag deprecated and functionality moved into OpticalSystem.

ZodiacalLight Changes

  • fZmap is now computed to match the time step of the koMaps.
  • fZQuads is deprecated and replaced with two dictionaries: fZmins and fZtypes, which encode the same information in a more easily addressable fashion.
  • calclogf replaced with load_zodi_wavelength_data, which is always called from the Prototype __init__.
  • calcfbetaInput replaced with load_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 keywords
  • photometricModels collection of useful photometric models and extensions to synphot used by TargetList
  • radialfun collection of routines for radial averaging and aperture arithmetic
  • process_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 from requirements.txt. More dependencies have explicit minimum versions.
  • Added .readthedocs.yaml for better control over documentation build.

Full Changelog: v3.0.4...v3.1.0