Configuration and sensors

Detectors, the telescope, and astrophysical defaults are described by TOML configuration files bundled with the package under src/wcc_etc/data/config/. Notebooks and scripts can also override any of these values on the fly with update().

Sensor strings

Sensors are addressed as "kind:band". The available combinations:

String

Detector

Notes

sony:r / sony:bb

Sony IMX455 (ZWO ASI6200MM)

16-bit, 3.76 µm pixels. adc_max = 65535.

qcmos:r

Hamamatsu qCMOS

12-bit, 4.6 µm pixels. adc_max = 4095.

(The zwo and hwk configs back the Sony and qCMOS sensors respectively.)

Note

The narrowband bands sony:halpha / sony:nii / sony:oiii / sony:heii exist as placeholders but have no throughput file yet, so they are not usable until those CSVs are added.

The configuration files

File

Contents

zwo.toml

Sony IMX455 detector: pixel size, gain setting, sensor area, bias level, bit depth, and paths to the dark-current, gain, read-noise, and well-depth CSV calibration curves.

qcmos.toml

Hamamatsu qCMOS detector (12-bit) — same structure as zwo.toml.

lazuli.toml

Telescope: primary diameter (3.065 m), focal ratio (f/15), pointing jitter (10 mas), and the default zodiacal background magnitude.

astro.toml

Astrophysical defaults, e.g. the background surface brightness.

Example — the Sony detector config

[sensor]
pixel_size   = 3.76     # micron / pix
gain_setting = 100      # 0.1 dB
sensor_temp  = 0.0      # C
sensor_area  = 864      # mm^2  (36 mm x 24 mm)
bias_level   = 0        # ADU, additive offset
bit_depth    = 16       # ADC bit depth; adc_max = 2^bit_depth - 1
path_dark_current = "sensors/.../Dark_Current_vs_Sensor_Temperature.csv"
path_gain_curve   = "sensors/.../Gain_vs_Gain_Setting.csv"
path_read_noise   = "sensors/.../Read_Noise_vs_Gain_Setting.csv"
path_well_depth   = "sensors/.../Well_Depth_vs_Gain_Setting.csv"

Example — the telescope config

[telescope]
diameter_primary = 3.065   # m
f_num            = 15.0    # unitless
jitter_sigma     = 10      # mas

[zodi]
zodi_mag_r = 22.5

Overriding configuration at runtime

You do not need to edit the TOML files to explore parameter changes. Use update with element__key syntax:

sim.update(telescope__jitter_sigma=15)     # mas
sim.update(sensor__gain_setting=200)
sim.update(source__mag=22)

Reading configs programmatically

Lower-level helpers are exported for working with the configs directly:

from wcc_etc import read_config, get_sensor_config

cfg = get_sensor_config("sony", "r")    # the resolved sensor config dict
tel = read_config("lazuli", source="config")