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:

  1. the sensor stages

  2. the preamplifier stages (if any)

  3. the datalogger stages.

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]]
../_images/obsinfo_plot_sensor_base.png

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
../_images/obsinfo_plot_preamplifier_base.png

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
../_images/obsinfo_plot_datalogger_base.png

We see the effect of the cutoff filter at the Nyquist frequency, and of forcing the gain value to 200.