Building instrument components
Sensors, preamplifiers and dataloggers are all instrument components. All instrument components have an ordered list of response stages. StationXML has a single ordered list of response stages, which is constructed from:
the
sensorstagesthe
preamplifierstages (if any)the
dataloggerstages.
As with all modifiable elements, instrument components source filenames end
with _base and they allow a configurations element.
The simplest way to build an instrument_component is from a copy of an
existing component, or using the template subcommand.
sensor_base template
> obsinfo template sensor_base
---
format_version: "1.0"
revision:
authors:
- {$ref: "persons/EXAMPLE.person.yaml"} # Reference to a file,
# or fields of a person element
date: "2024-09-30" # yyyy-mm-dd
sensor_base:
seed_codes:
band: "broadband" # 'broadband', 'shortperiod', "A", "I", "O", "L", or "S"
# If "broadband" or "shortperiod", will chose the appropriate
# code according to the sampling rate
instrument: "H" # Seed "instrument" (or "source") code
equipment:
model: "CMG-3T"
type: "Broadband seismometer"
description: "Triaxial force-feedback seismometer"
manufacturer: "Guralp, Ltd"
# BEGIN OPTIONAL equipment elements
vendor: "various"
serial_number: "2014a2"
installation_date: "2024-09-30"
removal_date: "2025-08-31"
resource_id: "IPGP:2004iepw44" # Unique ID of the filter, typically
# "GENERATOR:Meaningful_ID"
calibration_dates:
- "2004-09-22T07:00:00"
- "2014-08-31T07:00:00"
# END OPTIONAL equipment elements
stages:
- base: {$ref: "sensor_bases/stage_bases/EXAMPLE_BBSeismometer.stage_base.yaml"}
# BEGIN OPTIONAL stage elements
configuration: "SN1-399, differential"
# END OPTIONAL stage elements
# BEGIN OPTIONAL sensor_base elements
stage_modifications: {}
notes: [""]
configuration_default: "DEFAULT"
configurations:
"DEFAULT":
configuration_description: "Default configuration"
"High Gain":
configuration description: "High gain configuration"
stage_modifications:
"1": {gain: {value: 100}}
"Low Gain":
configuration description: "Low gain configuration"
stage_modifications:
"1": {gain: {value: 1}}
# END OPTIONAL sensor_base elements
# BEGIN OPTIONAL top-level elements
notes:
- ""
# END OPTIONAL top-level elements
Running the schema, print and plot subcommands on this file returns:
Validating sensor_base file
Reading /Users/crawford/temp/TEMPLATE.sensor_base.yaml
schema = sensor_base.schema.json
Testing instance ...OK
sensor_base test for: /Users/crawford/temp/TEMPLATE.sensor_base.yaml: PASSED
TEMPLATE.sensor_base.yaml:
Sensor:
band: broadband
instrument code: H
equipment: Equipment:
type: Broadband seismometer
description: Triaxial force-feedback seismometer [config: Default configuration]
model: CMG-3T
manufacturer: Guralp, Ltd
vendor: various
serial_number: 2014a2
resource_id: IPGP:2004iepw44
installation_date: 2024-09-30
removal_date: 2025-08-31
calibration_dates: OIDates: 2 OIDates
stages: Stages: [Stage [config: SN1-399, differential]]
preamplifier_base template
> obsinfo template preamplifier_base
---
format_version: "1.0"
revision:
authors:
- {$ref: "persons/EXAMPLE.person.yaml"} # Reference to a file,
# or fields of a person element
date: "2024-09-30" # yyyy-mm-dd
preamplifier_base:
equipment:
model: "CUBI-RC-RC"
type: "Analog gain/filter card"
description: "CUBI gain/filter card, LP at ~100 MHz"
manufacturer: "IPGP"
# OPTIONAL elements
vendor: "None"
serial_number: "2014a2"
installation_date: "2024-09-30"
removal_date: "2025-08-31"
resource_id: "IPGP:2004iepw44" # Unique ID of the filter, typically
# "GENERATOR:Meaningful_ID"
calibration_dates:
- "2004-09-22T07:00:00"
stages:
- base: {$ref: "preamplifier_bases/stage_bases/EXAMPLE_BBOBS.stage_base.yaml"}
# BEGIN OPTIONAL preamplifier_base elements
stage_modifications:
"1": {gain: {value: 200}} # Modifications to a stage or stages, with
# stage number(s) as key (1 = first stage)
notes:
- "A note"
configuration_default: "128x gain"
configurations:
"16x gain":
stage_modifications:
'2': {gain: {value: 16}}
"32x gain":
stage_modifications:
'2': {gain: {value: 32}}
"64x gain":
stage_modifications:
'2': {gain: {value: 64}}
"128x gain":
stage_modifications:
'2': {gain: {value: 128}}
# END OPTIONAL preamplifier_base elements
# BEGIN OPTIONAL top-level elements
notes:
- ""
# END OPTIONAL top-level elements
> obsinfo print TEMPLATE.preamplifier_base.yaml
TEMPLATE.preamplifier_base.yaml:
Preamplifier:
equipment: Equipment:
type: Analog gain/filter card
description: CUBI gain/filter card, LP at ~100 MHz [config: 128x gain]
model: CUBI-RC-RC
manufacturer: IPGP
vendor: None
serial_number: 2014a2
resource_id: IPGP:2004iepw44
installation_date: 2024-09-30
removal_date: 2025-08-31
calibration_dates: OIDates: [2004-09-22T07:00:00]
stages: Stages: [Stage [config: 1.0x]]
> obsinfo plot TEMPLATE.preamplifier_base.yaml
We see the gain of 200, which was forced by the optional stage_modifications
element in the template file. And that there was no frequency-based filtering.
datalogger_base template
> obsinfo template datalogger_base
---
format_version: "1.0"
revision:
authors:
- {$ref: "persons/EXAMPLE.person.yaml"} # Reference to a file,
# or fields of a person element
date: "2024-09-30" # yyyy-mm-dd
datalogger_base:
equipment:
model: "ADS1281"
type: "delta-sigma A/D converter + digital filter"
description: "Single Chip High-Resolution Analog-to-Digital Converter"
manufacturer: "Texas Instruments"
# BEGIN OPTIONAL equipment elements
vendor: "various"
serial_number: "2014a2"
installation_date: "2024-09-30"
removal_date: "2025-08-31"
resource_id: "IPGP:2004iepw44" # Unique ID of the filter, typically
# "GENERATOR:Meaningful_ID"
calibration_dates:
- "2004-09-22T07:00:00"
- "2014-08-31T07:00:00"
# END OPTIONAL equipment elements
sample_rate: 250 # Data sampling rate
stages: # A list of stages (base + possible modifications)
- {base: {$ref: "datalogger_bases/stage_bases/EXAMPLE_FIR1.stage_base.yaml"}}
- {base: {$ref: "datalogger_bases/stage_bases/EXAMPLE_FIR2.stage_base.yaml"}}
- {base: {$ref: "datalogger_bases/stage_bases/EXAMPLE_FIR2.stage_base.yaml"}}
- {base: {$ref: "datalogger_bases/stage_bases/EXAMPLE_FIR2.stage_base.yaml"}}
- {base: {$ref: "datalogger_bases/stage_bases/EXAMPLE_FIR2.stage_base.yaml"}}
- {base: {$ref: "datalogger_bases/stage_bases/EXAMPLE_FIR2.stage_base.yaml"}}
- {base: {$ref: "datalogger_bases/stage_bases/EXAMPLE_FIR2.stage_base.yaml"}}
- {base: {$ref: "datalogger_bases/stage_bases/EXAMPLE_FIR3.stage_base.yaml"}}
# BEGIN OPTIONAL datalogger_base elements
stage_modifications:
"1": {gain: {value: 200}} # Modifications to a stage or stages, with
# stage number(s) as key (1 = first stage)
notes:
- "First note"
- "Second note"
correction: 27.5 # Time that the datalogger subtracted
# (this value/sample_rate) from the data to compensate
# for digitization delays.
# If 0, the datalogger did not correct the times.
# If None, correction will be set equal to delay in all
# stages (perfect datalogger correction).
configuration_default: "250sps" # The default configuration (must be
# one of the specified configurations)
configurations: # Each configuration can use the same elements as in
# datalogger_base, which are then updated. An additional
# element is configuration_description
"250sps" : # any provided elements update base values
configuration_description: "250 sps"
"500sps" : # any provided elements update base values
configuration_description: "500 sps"
sample_rate: 500
stages:
- {base: {$ref: "datalogger_bases/stage_bases/EXAMPLE_FIR1.stage_base.yaml"}}
- {base: {$ref: "datalogger_bases/stage_bases/EXAMPLE_FIR2.stage_base.yaml"}}
- {base: {$ref: "datalogger_bases/stage_bases/EXAMPLE_FIR2.stage_base.yaml"}}
- {base: {$ref: "datalogger_bases/stage_bases/EXAMPLE_FIR2.stage_base.yaml"}}
- {base: {$ref: "datalogger_bases/stage_bases/EXAMPLE_FIR2.stage_base.yaml"}}
- {base: {$ref: "datalogger_bases/stage_bases/EXAMPLE_FIR2.stage_base.yaml"}}
- {base: {$ref: "datalogger_bases/stage_bases/EXAMPLE_FIR3.stage_base.yaml"}}
# END OPTIONAL datalogger_base elements
# BEGIN OPTIONAL top-level elements
notes:
- ""
# END OPTIONAL top-level elements
> obsinfo print TEMPLATE.datalogger_base.yaml
TEMPLATE.datalogger_base.yaml:
Datalogger:
sample_rate: 100
correction: 27.5
equipment: Equipment:
type: delta-sigma A/D converter + digital filter
description: Single Chip High-Resolution Analog-to-Digital Converter [config: 100 sps, linear phase FIR]
model: ADS1281
manufacturer: Texas Instruments
vendor: various
serial_number: 2014a2
resource_id: IPGP:2004iepw44
installation_date: 2024-09-30
removal_date: 2025-08-31
calibration_dates: OIDates: 2 OIDates
stages: Stages:
- Stage "EXAMPLE FIR1"
- Stage "EXAMPLE FIR2"
- Stage "EXAMPLE FIR2"
- Stage "EXAMPLE FIR2"
- Stage "EXAMPLE FIR2"
- Stage "EXAMPLE FIR2"
- Stage "EXAMPLE FIR2"
- Stage "EXAMPLE FIR3"
> obsinfo plot TEMPLATE.datalogger_base.yaml
We see the effect of the cutoff filter at the Nyquist frequency, and of forcing the gain value to 200.