Configuration

gort’s configuration is stored in a file shipped with the package in etc/lvmgort.yml. The contents of the default configuration are shown below.

Currently the only way to override the configuration file is to define an environment variable $GORT_CONFIG_FILE pointing to a different YAML file with the configuration to load. Then exit your Python interpreter and reimport gort.

Configuration file

logging:
  path: /data/logs/lvmgort/{SJD}.log

telescopes:
  devices:
    sci:
      actor: lvm.sci.pwi
      kmirror: lvm.sci.km
      focuser: lvm.sci.foc
    spec:
      actor: lvm.spec.pwi
      kmirror: null
      focuser: lvm.spec.foc
      fibsel: lvm.spec.fibsel
    skye:
      actor: lvm.skye.pwi
      kmirror: lvm.skye.km
      focuser: lvm.skye.foc
    skyw:
      actor: lvm.skyw.pwi
      kmirror: lvm.skyw.km
      focuser: lvm.skyw.foc
  timeouts:
    pwi:
      slew: 60
    kmirror:
      slewStart: 60
      slewStop: 30
      moveAbsolute: 60
      moveToHome: 60
    focuser:
      moveAbsolute: 60
      moveToHome: 60
    fibsel:
      moveAbsolute: 60
      moveRelative: 30
      moveToHome: 60
  kmirror:
    seg_time: 1
    seg_min_num: 3
    stop_degs_before:
      sci: 1.5
  pointing_offsets:
    sci: [0, 0]
    skye: [0, 0]
    skyw: [0, 0]
    spec: [0, 0]
  named_positions:
    park:
      all:
        alt: -60
        az: 90
    zenith:
      all:
        alt: 90
        az: 0
    calibration:
      skyw:
        az: 101.327
        alt: 42.311
      skye:
        az: 263.417
        alt: 31.903
      sci:
        az: 130.183
        alt: 70.804
      spec:
        az: 252.558
        alt: 56.414
    selfie:
      skyw:
        az: 91.5
        alt: 16.17
      spec:
        az: 91.5
        alt: 16.17
      sci:
        az: 272
        alt: -16.4
      skye:
        az: 272
        alt: -16.4
  mask_positions:
    P1-1: 1650
    P1-2: 215
    P1-3: 16610
    P1-4: 15180
    P1-5: 13640
    P1-6: 12205
    P1-7: 10645
    P1-8: 9205
    P1-9: 7665
    P1-10: 6205
    P1-11: 4645
    P1-12: 3210
    P2-1: 15885
    P2-2: 14335
    P2-3: 12885
    P2-4: 11375
    P2-5: 9915
    P2-6: 8395
    P2-7: 6940
    P2-8: 5405
    P2-9: 3945
    P2-10: 2395
    P2-11: 935
    P2-12: 17340

guiders:
  devices:
    sci:
      actor: lvm.sci.guider
      dither_offsets:
        0: [0.00, 0.00]
        1: [-10.68, 18.50]
        2: [10.68, 18.50]
        3: [0.00, -12.33]
        4: [10.68, -6.17]
        5: [-10.68, -6.17]
        6: [10.68, 6.17]
        7: [-10.68, 6.17]
        8: [0.00, 12.33]
    spec:
      actor: lvm.spec.guider
      named_pixels:
        P1-1: [2658.7, 1570.6]
        P1-2: [2912.2, 1423.5]
        P1-3: [3071.5, 1147.7]
        P1-4: [3071.1, 853.48]
        P1-5: [2912.5, 576.37]
        P1-6: [2658.6, 429.15]
        P1-7: [2341.6, 429.26]
        P1-8: [2087.4, 576.48]
        P1-9: [1928.8, 853.37]
        P1-10: [1928.8, 1147.8]
        P1-11: [2087.6, 1423.7]
        P1-12: [2341.7, 1570.7]
        P2-1: [2690.4, 1736.3]
        P2-2: [3039.2, 1532.9]
        P2-3: [3229.8, 1201.4]
        P2-4: [3229.7, 797.37]
        P2-5: [3039.6, 465.48]
        P2-6: [2690.1, 264.37]
        P2-7: [2309.5, 264.15]
        P2-8: [1960.7, 466.04]
        P2-9: [1770.6, 798.26]
        P2-10: [1770.5, 1201.8]
        P2-11: [1960.9, 1533.4]
        P2-12: [2309.8, 1736.5]
    skye:
      actor: lvm.skye.guider
    skyw:
      actor: lvm.skyw.guider
  focus:
    step_size: 0.2
    steps: 7
    exposure_time: 5.0

nps:
  devices:
    sp1:
      actor: lvmnps.sp1
    sp2:
      actor: lvmnps.sp2
    sp3:
      actor: lvmnps.sp3
    calib:
      actor: lvmnps.calib
    sci:
      actor: lvmnps.sci
    spec:
      actor: lvmnps.spec
    skye:
      actor: lvmnps.skye
    skyw:
      actor: lvmnps.skyw
    mocon:
      actor: lvmnps.mocon

telemetry:
  devices:
    sci:
      actor: lvm.sci.telemetry
    skye:
      actor: lvm.skye.telemetry
    skyw:
      actor: lvm.skyw.telemetry
    spec:
      actor: lvm.spec.telemetry

specs:
  devices:
    sp1:
      actor: lvmscp.sp1
    sp2:
      actor: lvmscp.sp2
    sp3:
      actor: lvmscp.sp3
  data_path: /data/spectro/{SJD}
  nextExposureNumber: /data/spectro/nextExposureNumber
  verification:
    headers:
      critical:
        - TILE_ID
        - DPOS
        - ARGON
        - NEON
        - LDLS
        - QUARTZ
        - HGNE
        - XENON
        - HARTMANN
        - TESCIRA
        - TESCIDE
        - TESKYERA
        - TESKYEDE
        - TESKYWRA
        - TESKYWDE
        - TESPECRA
        - TESPECDE
      warning: []

ags:
  offline_cameras: []
  devices:
    sci:
      actor: lvm.sci.agcam
      ips:
        east: 10.8.38.111
        west: 10.8.38.112
    spec:
      actor: lvm.spec.agcam
      ips:
        east: 10.8.38.117
        west: null
    skye:
      actor: lvm.skye.agcam
      ips:
        east: 10.8.38.113
        west: 10.8.38.114
    skyw:
      actor: lvm.skyw.agcam
      ips:
        east: 10.8.38.115
        west: 10.8.38.116

enclosure:
  bypass_local_mode: false

recipes:
  twilight_flats:
    popt: [1.09723745, 3.55598039, -1.86597751]
    sunset_start: 2 # minutes
    sunrise_start: 15 # minutes
    fudge_factor: 1 # minutes
    min_exp_time: 1 # seconds
    max_exp_time: 300 # seconds
    max_exp_time_extra: 100 # seconds
  long_term_calibrations:
    n_biases: 7
    quartz_exp_time: 20
    ldls_exp_time: 150
    arc_exp_times: [10, 50]

observer:
  guide_tolerance:
    sci: 2
    spec: 3
    skye: 3
    skyw: 3
  acquisition_timeout: 180

site:
  lon: -70.70166667
  lat: -29.00333333
  height: 2282.0

services:
  kubernetes:
    path:
      default: /home/sdss5/config/kube
      notebook: ~/sdss5/config/kube

  lvmcore:
    path: ${LVMCORE_DIR}
    fibermap: metrology/lvm_fiducial_fibermap.yaml

  scheduler:
    host: 10.8.38.26
    port: 5100

  lvmapi:
    host: 127.0.0.1
    port: 8085

  redis:
    url: redis://localhost:6379/0

  database:
    connection:
      host: lvm-webapp.lco.cl
      port: 5432
      user: sdss
      database: lvmdb
    tables:
      overheads: gortdb.overhead
      exposures: gortdb.exposure
      events: gortdb.event
      notifications: gortdb.notification

overwatcher:
  observer:
    focus:
      every: 7200 # Seconds. 0 disables regular focus sweeps
      require_mjd_sweep: false # Perform a focus sweep at least once per MJD, even if every=0
      on_error: false # Perform a focus sweep if an error occurs while observing

  schedule:
    open_dome_buffer: 200
    open_dome_secs_before_twilight: 300
    stop_secs_before_morning: 600

  alerts:
    max_time_without_alerts_data: 300
    idle_timeout: 600
    main_task_stalled: 600

  disabled_actors: null

  slack:
    notifications_channels:
      - lvm-overwatcher
  tasks:
    ags_power_cycle:
      min_time: 3600
      max_time: 3000

  actor:
    name: lvm.overwatcher
    host: localhost
    port: 5672
    models:
      - lvmecp
    log_dir: /data/logs/lvmgort/overwatcher
    console_verbosity: WARNING