Configuration#
uataq’s configuration is one JSON file, src/uataq/config.json, with an entry for each site: its name and location, the research groups that log it, and its instruments with their dates. uataq reads it when it is imported, and Sites and instruments shows it as tables. A change at a site is written in this file (see Contributing). This page lists its keys.
Site keys#
Each site is an entry of the configuration, keyed by its SID (WBB).
It accepts:
nameThe site’s name, such as
"William Browning Building".latitude/longitudeA fixed site’s position, in degrees (longitude is negative in Utah). A mobile site has neither: its
gpsgives the position of each measurement.zaglThe height above ground level of a fixed site’s measurements, in meters.
is_mobiletruefor a site on a vehicle (a TRAX train or a bus), whichget_site()returns as aMobileSite. Omit it for a fixed site.is_activefalsemarks a site that has been taken down. Nothing reads it: whether a site is active is decided by its instruments’removal_date.loggersThe same map as an instrument’s
loggers(below), for every instrument at the site that does not give its own.instrumentsThe site’s instruments, keyed by instrument name; each takes the keys below. Required.
Instrument keys#
Each entry under a site’s instruments accepts:
loggersMap of research group to the logger that group records the instrument with. Every group listed operates the instrument.
installation_date/removal_dateWhen the instrument was installed at and removed from the site. Reads are clipped to this window. Omit
removal_datewhile it is still installed. Each is an instant in UTC: a date alone is that day’s midnight, and a time of day can follow it ("2025-01-06 19:30:00"), as at the MetOne swaps, where the ES642’sremoval_dateis the ES405’sinstallation_date.group_dates(optional)Map of research group to a
[start, stop]pair: the half-open window[start, stop)that group’s archive holds this instrument’s data for. Either end may benullfor unbounded. Dates are exact instants, likeinstallation_date: a stop of"2017-10-28"means2017-10-28 00:00. A group not listed covers the whole installation.Only needed when two groups log the same instrument but one archive stops early. When no group is named, a read crossing a window edge is split there, and each portion is read from the most preferred group whose window covers it: the default group first, then the order of
loggers. For example, TRX01’s2b_205lists"lin": ["2015-05-13", "2017-10-28"], so an automatic read takes lin data through 2017-10-27 and horel data after it. The stop dates here are the midnight after lin’s last sample.Note
Some of horel’s data are only at the
rawlevel, so afinal-level read, asget_obs()makes, has a gap between lin’s stop and horel’s firstfinaldata, as in the example above: see Months that are only raw.es642_column_dates(optional)Only for a
metone_es405: map of research group to a[start, stop]pair, the half-open window[start, stop)in which that group’s qaqc and final files give the instrument’s values under themetone_es642’s column names (ES642_PM2.5_Concentrationand so on). Inside the window the ES405 reads those columns as its own; outside it ignores them. Horel’s files do this at BUS01 (["2026-02-01", "2026-04-01"]) and BUS02 (["2025-03-13 02:38:00", "2026-04-01"]) for the months after each swap, and use the ES405’s own names from April 2026. At BUS02 the window starts at the ES405’s installation because its flow, temperature, humidity, pressure and error code are under ES642 names from then; its PM2.5 under that name is empty until November 2025, so qaqc has no PM2.5 for 2025-03-13 to 2025-11-01 (the raw file has it).model(optional)The instrument class to use when it differs from the instrument’s name.
notes(optional)Free text; not read by the code.