Background
Observations on the GBT are scheduled using the Dynamic Scheduling System (DSS). The GBT Data Sender queries this system for details about upcoming observations, and sends that data to the OSSDB via the REST API.
Note that while the DSS contains scheduled observations, observers are not constrained to following those stated intentions, and could potentially change their observation during the session.
GitLab Repository
The GitLab repository with this code can be found here: https://gitlab.nrao.edu/nms-evla/nrao-oss/gbt_data_sender
Sphinx Documentation
The full documentation for this project can be found here: http://planck.gb.nrao.edu:9438/index.html
Open issues
- Duplication of data entries – currently the Data Sender is not checking to see if it is sending a scheduled observation already in the OSSDB, creating the potential for duplicate entries.
The DSS Database
To learn more about the DSS, please see the following resources:
- http://docs.greenbankobservatory.org/repos/nell/docs/sphinx/source/deployment_overview.html
- https://safe.nrao.edu/wiki/bin/view/GB/Software/DssDocs
The OSS Exporter
The exporter consists of a Django command in the nell app, which pulls values from the DSS database and pushed them to the OSS database. The read and write URLs for the database are stored in a configuration file with restricted permissions.
DSS Information
For a given looktime defined as now + 30 minutes, we first identify the observing period (look_period) and receiver (period_rx) which correspond to that time.
look_period = Period.objects.filter(start__gte=self.looktime).order_by("start").first()
period_rx = Period_Receiver.objects.filter(period=self.look_period.id).first()
Site Data
The following information is sent as a JSON object to be a site_data entry in the OSS database.
Key | Type | Value |
---|---|---|
obs_id | string | look_period.session.name |
site_id | string | "gbt" |
site_lat_deg | float | 38.433129 |
site_lon_deg | float | -79.839839 |
site_elev_m | float | 824.0 |
src_id | string | look_period.session.target.source |
src_ra_deg_j2000 | float | look_period.session.target.vertical |
src_dec_deg_j2000 | float | look_period.session.target.horizontal |
src_radius_deg | float | 0.0 (TBD) |
trk_rate_ra_deg_per_sec | float | 0.0 (TBD) |
trk_rate_dec_deg_per_sec | float | 0.0 (TBD) |
freq_lower_hz | float | period_rx.receiver.freq_low * 1E9 |
freq_upper_hz | float | period_rx.receiver.freq_hi * 1E9 |
src_start_utc | timestamp | look_period.start |
src_end_utc | timestamp | look_period.start + look_period.duration |
status | string | look_period.state.name |
notes | string | look_period.session.observing_type.type |