base-configuration-modification
Several elements in information files are expressed using “base-configuration-modification”. This allows easy specifiation or modification of values with minimum repetition.
The base and configurations are defined in an element named <field>:base and
are implemented and modified in an element just above named <field>, where
field could be instrumentation, location, sensor, datalogger,
preamplifier or stage.
For example:
datalogger:
base:
equipment: ...
stages: ...
sample_rate: 125
correction: 0.232
configuration_default: "125sps"
configurations:
"62.5sps":
configuration_description: "62.5 sps"
sample_rate: 62.5
correction: 0.464
stages: ...
"125sps":
configuration_description: "125 sps"
"250sps":
configuration_description: "250 sps"
sample_rate: 250
correction: 0.116
stages: ...
configuration: "250sps"
modification:
correction: 1.0
equipment:
serial_number: "F05"
<shortcuts>
<non-base_elements>
<specific_modifications>
If the datalogger base were specified and no configuration
was specified, then the “125sps” configuration would be used.
The configuration_description is appended to the equipment
description.
In this example the “250sps” configuration is specified, so the values
in the “250sps” configuration will replace the values with the same
names in the base definition.
The modifications field allows one to further modify the values. The values
specified in modifications overwrite corresponding values in both the
base and the configuration.
If no configuration_default is specified and configurations is
specified, the level above MUST specify the configuration. This will not be
caught by obsinfo-validate: only by obsinfo_print or obsinfo_makeStationXML.
The base element must include all required fields for the element (needed for
obsinfo-validate).
In our example, since this base configuration specifies the values
corresponding to a 125 sps sampling rate, the “125sps” configuration is nearly
empty.
configurations are optional, so if you only have one configuration
you don’t have to add additional elements. Some elements (such as timing_bases)
may nneed a configuration but the base-configuration-modification system
provides a consistent interface that allows us to easily add in information,
in this case sync times.
In almost all cases, the element definition should be in a separate file: for example the datalogger definition file would contain:
datalogger_base:
equipment: ...
stages: ...
sample_rate: 125
correction: 0.232
configuration_default: "125sps"
configurations:
"62.5sps":
configuration_description: "62.5 sps"
sample_rate: 62.5
correction: 0.464
stages: ...
"125sps":
configuration_description: "125 sps"
"250sps":
configuration_description: "250 sps"
sample_rate: 250
correction: 0.116
stages: ...
and the call to it would look like:
datalogger:
base: {$ref: 'dataloggers/LC2000.datalogger_base.yaml#datalogger_base'}
configuration: "250sps"
modifications:
correction: 1.0
equipment:
serial_number: "F05"
Shortcuts
Shortcuts allow you to quickly enter common modifications.
For example, the datalogger element has a shortcut called serial_number
that duplicates datalogger: {equipment: {serial_number:}}, allowing you to
write the above code as:
datalogger:
base: {$ref: 'dataloggers/LC2000.datalogger_base.yaml#datalogger_base'}
configuration: "250sps"
serial_number: "F05"
modifications:
correction: 1.0
Shortcuts override equivalent entries at the modifications level.
They are:
Shortcut |
Replaces |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Non-base elements
Non-base elements are not specified in the base element, because they are expected
to be different for each deployment. They are:
location:
position: {lat.deg: <number>, lon.deg: <number>, elev.m: <number>}
clock_correction_linear:
start_sync_reference: <date-time>
end_sync_reference: <date-time>
end_sync_instrument: <date-time>
Specific modifications
Specific modifications apply only to certain channels or even certain stages
of a given channel. They are specified using the channel_modifications
and stage_modifications elements at the instrumentation,
datalogger, sensor or preamplifier level.
Details are provided in Channel_modifications and in
stage_modifications.