EXOSIMS.OpticalSystem package

Submodules

EXOSIMS.OpticalSystem.KasdinBraems module

class EXOSIMS.OpticalSystem.KasdinBraems.KasdinBraems(PSF=array([[1., 1., 1.], [1., 1., 1.], [1., 1., 1.]]), **specs)[source]

Bases: OpticalSystem

KasdinBraems Optical System class

This class contains all variables and methods necessary to perform Optical System Module calculations in exoplanet mission simulation using the model from Kasdin & Braems 2006.

Parameters:
  • PSF (ndarray(float)) – Default point spread function suppression system. Only used when not set in starlight suppression system definition. Defaults to np.ones((3,3))

  • **specs – user specified values

calc_intTime(TL, sInds, fZ, fEZ, dMag, WA, mode, TK=None)[source]

Finds integration times of target systems for a specific observing mode (imaging or characterization), based on Kasdin and Braems 2006.

Parameters:
  • TL (TargetList module) – TargetList class object

  • sInds (integer ndarray) – Integer indices of the stars of interest

  • fZ (astropy Quantity array) – Surface brightness of local zodiacal light in units of 1/arcsec2

  • fEZ (astropy Quantity array) – Surface brightness of exo-zodiacal light in units of 1/arcsec2

  • dMag (float ndarray) – Differences in magnitude between planets and their host star

  • WA (astropy Quantity array) – Working angles of the planets of interest in units of arcsec

  • mode (dict) – Selected observing mode

Returns:

Integration times in units of day

Return type:

intTime (astropy Quantity array)

populate_starlightSuppressionSystems_extra()[source]

Additional setup for starlight suppression systems. This is intended for overloading in downstream implementations and is intentionally left blank in the prototype.

EXOSIMS.OpticalSystem.Nemati module

class EXOSIMS.OpticalSystem.Nemati.Nemati(CIC=0.001, radDos=0, PCeff=0.8, ENF=1, ref_dMag=3, ref_Time=0, **specs)[source]

Bases: OpticalSystem

Nemati Optical System class

Optical System Module based on [Nemati2014].

Parameters:
  • CIC (float) – Default clock-induced-charge (in electrons/pixel/read). Only used when not set in science instrument definition. Defaults to 1e-3

  • radDos (float) – Default radiation dose. Only used when not set in mode definition. Specific defintion depends on particular optical system. Defaults to 0.

  • PCeff (float) – Default photon counting efficiency. Only used when not set in science instrument definition. Defaults to 0.8

  • ENF (float) – Default excess noise factor. Only used when not set in science instrument definition. Defaults to 1.

  • ref_dMag (float) – Reference star \(\Delta\mathrm{mag}\) for reference differential imaging. Defaults to 3. Unused if ref_Time input is 0

  • ref_Time (float) – Faction of time used on reference star imaging. Must be between 0 and 1. Defaults to 0

  • **specsInput Specification

default_vals_extra

Dictionary of input values to be filled in as defaults in the instrument, starlight supporession system and observing modes. These values are specific to this module.

Type:

dict

ref_dMag

Reference star \(\Delta\mathrm{mag}\) for reference differential imaging. Unused if ref_Time input is 0

Type:

float

ref_Time

Faction of time used on reference star imaging.

Type:

float

Cp_Cb_Csp(TL, sInds, fZ, fEZ, dMag, WA, mode, returnExtra=False, TK=None)[source]

Calculates electron count rates for planet signal, background noise, and speckle residuals.

Parameters:
  • TL (TargetList) – TargetList class object

  • sInds (ndarray(int)) – Integer indices of the stars of interest

  • fZ (Quantity(ndarray(float))) – Surface brightness of local zodiacal light in units of 1/arcsec2

  • fEZ (Quantity(ndarray(float))) – Surface brightness of exo-zodiacal light in units of 1/arcsec2

  • dMag (ndarray(float)) – Differences in magnitude between planets and their host star

  • WA (Quantity(ndarray(float))) – Working angles of the planets of interest in units of arcsec

  • mode (dict) – Selected observing mode

  • returnExtra (bool) – Optional flag, default False, set True to return additional rates for validation

  • TK (TimeKeeping, optional) – Optional TimeKeeping object (default None), used to model detector degradation effects where applicable.

Returns:

C_p (~astropy.units.Quantity(~numpy.ndarray(float))):

Planet signal electron count rate in units of 1/s

C_b (~astropy.units.Quantity(~numpy.ndarray(float))):

Background noise electron count rate in units of 1/s

C_sp (~astropy.units.Quantity(~numpy.ndarray(float))):

Residual speckle spatial structure (systematic error) in units of 1/s

Return type:

tuple

calc_dMag_per_intTime(intTimes, TL, sInds, fZ, fEZ, WA, mode, C_b=None, C_sp=None, TK=None)[source]

Finds achievable dMag for one integration time per star in the input list at one working angle.

Parameters:
  • intTimes (astropy Quantity array) – Integration times

  • TL (TargetList module) – TargetList class object

  • sInds (integer ndarray) – Integer indices of the stars of interest

  • fZ (astropy Quantity array) – Surface brightness of local zodiacal light for each star in sInds in units of 1/arcsec2

  • fEZ (astropy Quantity array) – Surface brightness of exo-zodiacal light for each star in sInds in units of 1/arcsec2

  • WA (astropy Quantity array) – Working angle for each star in sInds in units of arcsec

  • mode (dict) – Selected observing mode

  • C_b (astropy Quantity array) – Background noise electron count rate in units of 1/s (optional)

  • C_sp (astropy Quantity array) – Residual speckle spatial structure (systematic error) in units of 1/s (optional)

  • TK (TimeKeeping object) – Optional TimeKeeping object (default None), used to model detector degradation effects where applicable.

Returns:

Achievable dMag for given integration time and working angle

Return type:

dMag (ndarray)

calc_intTime(TL, sInds, fZ, fEZ, dMag, WA, mode, TK=None)[source]

Finds integration times of target systems for a specific observing mode (imaging or characterization), based on Nemati 2014 (SPIE).

Parameters:
  • TL (TargetList module) – TargetList class object

  • sInds (integer ndarray) – Integer indices of the stars of interest

  • fZ (astropy Quantity array) – Surface brightness of local zodiacal light in units of 1/arcsec2

  • fEZ (astropy Quantity array) – Surface brightness of exo-zodiacal light in units of 1/arcsec2

  • dMag (float ndarray) – Differences in magnitude between planets and their host star

  • WA (astropy Quantity array) – Working angles of the planets of interest in units of arcsec

  • mode (dict) – Selected observing mode

  • TK (TimeKeeping object) – Optional TimeKeeping object (default None), used to model detector degradation effects where applicable.

Returns:

Integration times in units of day

Return type:

intTime (astropy Quantity array)

calc_saturation_dMag(TL, sInds, fZ, fEZ, WA, mode, TK=None)[source]

This calculates the delta magnitude for each target star that corresponds to an infinite integration time.

Parameters:
  • TL (TargetList) – TargetList class object

  • sInds (numpy.ndarray(int)) – Integer indices of the stars of interest

  • fZ (Quantity(ndarray(float))) – Surface brightness of local zodiacal light in units of 1/arcsec2

  • fEZ (Quantity(ndarray(float))) – Surface brightness of exo-zodiacal light in units of 1/arcsec2

  • WA (Quantity(ndarray(float))) – Working angles of the planets of interest in units of arcsec

  • mode (dict) – Selected observing mode

  • TK (TimeKeeping, optional) – Optional TimeKeeping object (default None), used to model detector degradation effects where applicable.

Returns:

Maximum achievable dMag for each target star

Return type:

ndarray(float)

dMag_per_intTime_obj(dMag, *args)[source]

Objective function for calc_dMag_per_intTime’s minimize_scalar function that uses calc_intTime from Nemati and then compares the value to the true intTime value

Parameters:
  • dMag (ndarray(float)) – dMag being tested

  • *args – all the other arguments that calc_intTime needs

Returns:

Absolute difference between true and evaluated integration time in days.

Return type:

ndarray(float)

ddMag_dt(intTimes, TL, sInds, fZ, fEZ, WA, mode, C_b=None, C_sp=None, TK=None)[source]

Finds derivative of achievable dMag with respect to integration time

Parameters:
  • intTimes (astropy Quantity array) – Integration times

  • TL (TargetList module) – TargetList class object

  • sInds (integer ndarray) – Integer indices of the stars of interest

  • fZ (astropy Quantity array) – Surface brightness of local zodiacal light for each star in sInds in units of 1/arcsec2

  • fEZ (astropy Quantity array) – Surface brightness of exo-zodiacal light for each star in sInds in units of 1/arcsec2

  • WA (astropy Quantity array) – Working angle for each star in sInds in units of arcsec

  • mode (dict) – Selected observing mode

  • C_b (astropy Quantity array) – Background noise electron count rate in units of 1/s (optional)

  • C_sp (astropy Quantity array) – Residual speckle spatial structure (systematic error) in units of 1/s (optional)

  • TK (TimeKeeping object) – Optional TimeKeeping object (default None), used to model detector degradation effects where applicable.

Returns:

Derivative of achievable dMag with respect to integration time

Return type:

ddMagdt (ndarray)

int_time_denom_obj(dMag, *args)[source]

Objective function for calc_dMag_per_intTime’s calculation of the root of the denominator of calc_inTime to determine the upper bound to use for minimizing to find the correct dMag

Parameters:
  • dMag (ndarray(float)) – dMag being tested

  • *args – all the other arguments that calc_intTime needs

Returns:

Denominator of integration time expression

Return type:

Quantity(ndarray(float))

populate_observingModes_extra()[source]

Add Nemati-specific observing mode keywords

populate_scienceInstruments_extra()[source]

Add Nemati-specific keywords to scienceInstruments

EXOSIMS.OpticalSystem.Nemati_2019 module

class EXOSIMS.OpticalSystem.Nemati_2019.Nemati_2019(k_samp=0.25, Nlensl=5, lam_d=500, lam_c=500, MUF_thruput=0.91, ContrastScenario='CGDesignPerf', **specs)[source]

Bases: Nemati

Nemati Optical System class

This class contains all variables and methods necessary to perform Optical System Module calculations in exoplanet mission simulation using the model from Nemati 2014.

Parameters:
  • k_samp (float) – Default coronagraphic intrinsice sampling. Only used if not set in instrument definition. Defaults to 0.25. TODO: move to starlight suppresion system.

  • Nlensl (float) – Total lenslets covered by PSF core. Only used when not set in science instrument definition. Only applies for spectrometers. Defaults to 5

  • lam_d (float) – Default instrument design wavelength (in nm). Only used when not set in science instrument definition. Defaults to 500

  • lam_c (float) – Default instrument critical wavelength (in nm). Only used when not set in science instrument definition. Defaults to 500

  • MUF_thruput (float) – Model uncertainty factor core throughput. Only used when not set in science instrument definition. Defaults to 0.91

  • **specsInput Specification

default_vals_extra2

Dictionary of input values to be filled in as defaults in the instrument, starlight supporession system and observing modes. These values are specific to this module.

Type:

dict

Cp_Cb_Csp(TL, sInds, fZ, fEZ, dMag, WA, mode, TK=None, returnExtra=False)[source]

Calculates electron count rates for planet signal, background noise, and speckle residuals.

Parameters:
  • TL (TargetList module) – TargetList class object

  • sInds (integer ndarray) – Integer indices of the stars of interest

  • fZ (astropy Quantity array) – Surface brightness of local zodiacal light in units of 1/arcsec2

  • fEZ (astropy Quantity array) – Surface brightness of exo-zodiacal light in units of 1/arcsec2

  • dMag (float ndarray) – Differences in magnitude between planets and their host star

  • WA (astropy Quantity array) – Working angles of the planets of interest in units of arcsec

  • mode (dict) – Selected observing mode

  • TK (TimeKeeping object) – Optional TimeKeeping object (default None), used to model detector degradation effects where applicable.

  • returnExtra (bool) – Optional flag, default False, set True to return additional rates for validation

Returns:

C_p (astropy.units.Quantity numpy.ndarray):

Planet signal electron count rate in units of 1/s

C_b (astropy.units.Quantity numpy.ndarray):

Background noise electron count rate in units of 1/s

C_sp (astropy.units.Quantity numpy.ndarray):

1/s

Return type:

tuple

calc_dMag_per_intTime(intTimes, TL, sInds, fZ, fEZ, WA, mode, C_b=None, C_sp=None, TK=None)[source]

Finds achievable dMag for one integration time per star in the input list at one working angle each. Uses scipy’s root-finding function fsolve

Parameters:
  • intTimes (astropy Quantity array) – Integration times

  • TL (TargetList module) – TargetList class object

  • sInds (integer ndarray) – Integer indices of the stars of interest

  • fZ (astropy Quantity array) – Surface brightness of local zodiacal light for each star in sInds in units of 1/arcsec2

  • fEZ (astropy Quantity array) – Surface brightness of exo-zodiacal light for each star in sInds in units of 1/arcsec2

  • WA (astropy Quantity array) – Working angle for each star in sInds in units of arcsec

  • mode (dict) – Selected observing mode

  • C_b (astropy Quantity array) – Background noise electron count rate in units of 1/s (optional)

  • C_sp (astropy Quantity array) – Residual speckle spatial structure (systematic error) in units of 1/s (optional)

  • TK (TimeKeeping object) – Optional TimeKeeping object (default None), used to model detector degradation effects where applicable.

Returns:

Achievable dMag for given integration time and working angle

Return type:

dMag (ndarray)

get_csv_values(csv_file, *headers)[source]

This takes in a csv file and returns the values in the columns associated with the headers given as args

Parameters:
  • csv_file (str or Path) – location of the csv file to read

  • *headers (str) – The headers that correspond to the columns of data to be returned

Returns:

The values in the columns for every given header. Ordered the same way they were given as inputs

Return type:

list

populate_observingModes_extra()[source]

Add Nemati_2019-specific observing mode keywords

populate_scienceInstruments_extra()[source]

Add Nemati_2019-specific keywords to scienceInstruments