scopesim.effects.ter_curves module

class scopesim.effects.ter_curves.ADCWheel(**kwargs)[source]

Bases: Effect

This wheel holds a selection of predefined atmospheric dispersion correctors.

apply_to(obj, **kwargs)[source]

Use apply_to of current adc

change_adc(adcname=None)[source]

Change the current ADC

property current_adc

Return the currently used ADC

property display_name
get_table()[source]

Create a table of ADCs with maximimum througput

class scopesim.effects.ter_curves.AtmosphericTERCurve(**kwargs)[source]

Bases: TERCurve

class scopesim.effects.ter_curves.DownloadableFilterCurve(**kwargs)[source]

Bases: FilterCurve

class scopesim.effects.ter_curves.FilterCurve(**kwargs)[source]

Bases: TERCurve

Parameters:
positionint, optional
filter_namestr, optional

Ks - corresponding to the filter name in the filename pattern

filename_formatstr, optional

TC_filter_{}.dat

Can either be created using the standard 3 options:
- ``filename``: direct filename of the filer curve
- ``table``: an ``astropy.Table``
- ``array_dict``: a dictionary version of a table: ``{col_name1: values, }``
or by passing the combination of ``filter_name`` and ``filename_format`` as
kwargs. Here all filter file names follow a pattern (e.g. see above) and the
``{}`` are replaced by ``filter_name`` at run time. ``filter_name`` can
also be a !bang string for a ``__currsys__`` entry: ``”!INST.filter_name”``
property center
property centre
fov_grid(which='waveset', **kwargs)[source]

Returns the edges needed to generate FieldOfViews for an observation

Parameters:
whichstr

[“waveset”, “edges”, “shifts”] where: * waveset - wavelength bin extremes * edges - on sky coordinate edges for each FOV box * shifts - wavelength dependent FOV position offsets

Returns:
wavesetlist

[um] N+1 wavelengths that set edges of N spectral bins

edgeslist of lists

[arcsec] Contains a list of footprint lists

shiftslist of 3 lists

[wave, dx, dy] Contains lists corresponding to the (dx, dy) offset from the optical axis (0, 0) induced for each wavelength in (wave) [um, arcsec, arcsec]

property fwhm
class scopesim.effects.ter_curves.FilterWheel(**kwargs)[source]

Bases: Effect

This wheel holds a selection of predefined filters.

Examples

name: filter_wheel
class: FilterWheel
kwargs:
    filter_names: []
    filename_format: "filters/{}.
    current_filter: "Ks"
apply_to(obj, **kwargs)[source]

Use apply_to of current filter

change_filter(filtername=None)[source]

Change the current filter

property current_filter
property display_name
fov_grid(which='waveset', **kwargs)[source]

Returns the edges needed to generate FieldOfViews for an observation

Parameters:
whichstr

[“waveset”, “edges”, “shifts”] where: * waveset - wavelength bin extremes * edges - on sky coordinate edges for each FOV box * shifts - wavelength dependent FOV position offsets

Returns:
wavesetlist

[um] N+1 wavelengths that set edges of N spectral bins

edgeslist of lists

[arcsec] Contains a list of footprint lists

shiftslist of 3 lists

[wave, dx, dy] Contains lists corresponding to the (dx, dy) offset from the optical axis (0, 0) induced for each wavelength in (wave) [um, arcsec, arcsec]

get_table()[source]
plot(which='x', wavelength=None, **kwargs)[source]
Parameters:
whichstr

“x” plots throughput. “t”,”e”,”r” plot trans/emission/refl

wavelength
kwargs
Returns:
class scopesim.effects.ter_curves.PupilTransmission(transmission, **kwargs)[source]

Bases: TERCurve

Wavelength-independent transmission curve

Use this class to describe a cold stop or pupil mask that is characterised by “grey” transmissivity. The emissivity is set to zero, assuming that the mask is cold.

make_ter_curve(transmission)[source]
update_transmission(transmission, **kwargs)[source]
class scopesim.effects.ter_curves.QuantumEfficiencyCurve(**kwargs)[source]

Bases: TERCurve

class scopesim.effects.ter_curves.SkycalcTERCurve(**kwargs)[source]

Bases: AtmosphericTERCurve

property include
load_skycalc_table()[source]
query_server(**kwargs)[source]
class scopesim.effects.ter_curves.SpanishVOFilterCurve(**kwargs)[source]

Bases: FilterCurve

Pulls a filter transmission curve down from the Spanish VO filter service

Parameters:
observatorystr
instrumentstr
filter_namestr

Examples

name: HAWKI-Ks
class: SpanishVOFilterCurve
kwargs:
    observatory : Paranal
    instrument : HAWKI
    filter_name : Ks
class scopesim.effects.ter_curves.SpanishVOFilterWheel(**kwargs)[source]

Bases: FilterWheel

A FilterWheel that loads all the filters from the Spanish VO service

Warning

This use astropy.download_file(..., cache=True).

The filter transmission curves probably won’t change, but if you notice discrepancies, try clearing the astopy cache:

>> from astropy.utils.data import clear_download_cache
>> clear_download_cache()
Parameters:
observatorystr
instrumentstr
current_filterstr

Default filter name

include_str, exclude_strstr

String sequences that can be used to include or exclude filter names which contain a certain string. E.g. GTC/OSIRIS has curves for sdss_g and sdss_g_filter. We can force the inclusion of only the filter curves by setting list_include_str: "_filter".

Examples

name: svo_filter_wheel
class: SpanishVOFilterWheel
kwargs:
    observatory: "GTC"
    instrument: "OSIRIS"
    current_filter: "sdss_r_filter"
    include_str: "_filter"
class scopesim.effects.ter_curves.TERCurve(**kwargs)[source]

Bases: Effect

Transmission, Emissivity, Reflection Curve

Must contain a wavelength column, and one or more of the following: transmission, emissivity, reflection. Additionally in the header there should be the following keywords: wavelength_unit

kwargs that can be passed:

"rescale_emission" : { "filter_name": str, "value": float, "unit": str}

Examples

Directly inside a YAML file description:

name: bogus_surface
class: TERCurve
kwargs:
    array_dict:
        wavelength: [0.3, 3.0]
        transmission: [0.9, 0.9]
        emission: [1, 1]
    wavelength_unit: um
    emission_unit: ph s-1 m-2 um-1
    rescale_emission:
        filter_name: "Paranal/HAWKI.Ks"
        value: 15.5
        unit: ABmag

Indirectly inside a YAML file:

name: some_curve
class TERCurve
kwargs:
    filename: bogus_surface.dat

which references this ASCII file:

# name: bogus_surface
# wavelength_unit: um
wavelength  transmission    emissivity
0.3         0.9             0.1
3.0         0.9             0.1
apply_to(obj, **kwargs)[source]
property background_source
property emission
plot(which='x', wavelength=None, ax=None, new_figure=True, label=None, **kwargs)[source]
Parameters:
whichstr

“x” plots throughput. “t”,”e”,”r” plot trans/emission/refl

wavelengthlist, np.ndarray
axmatplotlib.Axis
kwargs
Returns:
property throughput
class scopesim.effects.ter_curves.TopHatFilterCurve(**kwargs)[source]

Bases: FilterCurve

A simple Top-Hat filter profile

Parameters:
transmissionfloat

[0..1] Peak transmission of filter

blue_cutoff, red_cutofffloat

[um] Blue and Red cutoff wavelengths

wing_transmissionfloat, optional

[0..1] Default 0. Wing transmission of filter outside the cutoff range

Examples

name: J_band_tophat
class: TopHatFilterCurve
kwargs:
    transmission : 0.9
    wing_transmission : 0.001
    blue_cutoff : 1.15
    red_cutoff : 1.35
class scopesim.effects.ter_curves.TopHatFilterWheel(**kwargs)[source]

Bases: FilterWheel

A selection of top-hat filter curves as defined in the input lists

Parameters:
filter_names: list of string
transmissions: list of floats

[0..1] Peak transmissions inside the cuttoff limits

wing_transmissions: list of floats

[0..1] Wing transmissions outside the cuttoff limits

blue_cutoffs: list of floats

[um]

red_cutoffs: list of floats

[um]

current_filter: str, optional

Name of current filter at initialisation. If no name is given, the first entry in filter_names is used by default.

Examples

name: top_hat_filter_wheel
class: TopHatFilterWheel
kwargs:
    filter_names: ["J", "H", "K"]
    transmissions: [0.9, 0.95, 0.85]
    wing_transmissions: [0., 0., 0.001]
    blue_cutoffs: [1.15, 1.45, 1.9]
    red_cutoffs: [1.35, 1.8, 2.4]
    current_filter: "K"