Templates

Here are template files for each type of information file. Every possible element is included, with optional parameters marked. For details on formatting, see the schemas at Schema files

Subnetwork and friends

subnetwork

---
format_version: "1.0"
revision:
    authors:
        - {$ref: "persons/EXAMPLE.person.yaml"} # a person element
    date: "2024-09-30" # yyyy-mm-dd
subnetwork:
    operators: # Default station operators
        - {$ref: "operators/EXAMPLE.operator.yaml"}
    network: {$ref: "networks/EXAMPLE.network.yaml"}
    stations:
        "STA1":
            start_date: "2022-01-01T01:00:00"
            end_date: "2022-07-01T01:00:00" 
            locations:
                "00":
                    base: {$ref: "location_bases/EXAMPLE.location_base.yaml"}
                    position: {lon.deg: -1.5, lat.deg: 46.1, elev.m: -200}
                    # BEGIN OPTIONAL locations elements
                    water_level.m: 200  # if water surface is not at sea level
                    # END OPTIONAL locations elements
            instrumentation:  # or instrumentations (list)  
                base: {$ref: "instrumentation_bases/EXAMPLE.instrumentation_base.yaml"}  # `obsinfo template instrumentation_base` for details
                # BEGIN OPTIONAL instrumentation elements
                configuration: "SN01_2012+"  # instrumentation configuration
                modifications:
                    # BEGIN OPTIONAL modifications elements (ALL are optional)
                    equipment:  {model: "MOD_MODEL"}    # shortcut for base: {equipment:}
                    channels:       # replace channel definitions in the instrumentation_base
                        "2":  # do something to channel 2 only 
                            sensor: {base: {$ref: 'sensor_bases/EXAMPLE_BBSeismometer.sensor_base.yaml'}}  # replace the sensor on all channels
                    # END OPTIONAL modifications elements
                channel_modifications:  # All possible attributes under channel, in hierarchical order, except selecting response stages>
                    "1-*":      # {componentcode}-{locationcode} (either can be '*'), or {componentcode}, or "SEISMIC", or "PRESSURE"
                        # BEGIN OPTIONAL channel_modifications elements (ANY channel element is allowed, none is required)
                        orientation: {azimuth.deg: {value: 30, uncertainty: 5, measurement_method: 'P-pol'}}
                        replace_preamplifier: {base: {$ref: "preamplifier_bases/EXAMPLE_DPG.preamplifier_base.yaml"}}
                        comments: ["This is a channel-level comment"]
                        source_id: "FDSN:XX_STA1_D_H_Z"     # should this be "generate_source_id" boolean?
                        start_date:  "2022-02-01T02:00:00"  # Set a channel start_date that is different from the station start_date
                        end_date:    "2022-05-01T00:00:00"  # Set a channel end_date that is different from the station end_date
                        # END OPTIONAL channel_modifications elements
                notes:
                    - "This is a note.  It doesn't get written to the StationXML file"
                serial_number: "A14"  # shortcut for modifications: {equipment: {serial_number: "A14"}}
                datalogger_configuration: '500sps'  # shortcut for channel_modifications: {"*": {datalogger: {configuration: }}}
                datalogger_serial_number: '11'  # shortcut for channel_modifications: {"*": {datalogger: {equipment: {serial_number: }}}}
                seismic_sensor_serial_number: 'T1341'  # shortcut for channel_modifications: {"SEISMIC": {sensor: {equipment: {serial_number: }}}}
                pressure_sensor_serial_number: 'SIO0056'  # shortcut for channel_modifications: {"PRESSURE": {sensor: {equipment: {serial_number: }}}}
                seismic_sensor_configuration: 'Sphere02'  # shortcut for channel_modifications: {"SEISMIC": {sensor: {configuration: }}}
                pressure_sensor_configuration: '5018'  # shortcut for channel_modifications: {"PRESSURE": {sensor: {configuration: }}}
                # END OPTIONAL instrumentation elements
            # BEGIN OPTIONAL station elements
            site: "West volcano flank"  # Something specific about this station's position
            location_code: "00"  # Only needed if there is more than one location
            operators: # if not specified, will copy from subnetwork operators
                - {$ref: "operators/EXAMPLE.operator.yaml"}
            processing:
                - clock_correction:
                        drift:
                            base: {$ref: "timing_bases/EXAMPLE.timing_base.yaml"} # timing_base element
                            type: "piecewise_linear"  # or "cubic_spline", or "polynomial {a0} {a1} {a2}..."
                            syncs_instrument_reference:  # Specify datetimes as yyyy-mm-22Thh:mm:ss.mmmmZ
                                - ['2022-01-01T00:00:00Z', '2022-01-01T00:00:00Z']
                                - ['2022-07-01T03:00:00Z', '2022-07-01T03:00:00.345Z']
                        # BEGIN OPTIONAL clock_correction element
                        leapsecond_applied_corrections:
                            # BEGIN OPTIONAL leapsecond_applied_corrections elements
                            not_clock_corrected_miniseed: True  # does not-clock-corrected miniseed have leapsecond corrected? (False)
                            syncs_instrument: True              # Are the instrument syncs corrected for the leapsecond(s)?
                            # END OPTIONAL leapsecond_applied_corrections elements
                        # END OPTIONAL clock_correction element
            comments: 
                - "This is a station-level comment"
            extras: {whatever: "anything"}  # Free-form entry, saved in a station-level Comment
            notes: ["This is a note.  It doesn't get written to the StationXML file"]
            source_id: "FDSN:XX_STA1"      # should this be "generate_source_id" boolean? (or have run-time option?)
            # external_references:  # Commented out because obspy does not implement (as of 1.4.0)
            #     - uri: "http://usgs.gov"
            #       description: "USGS website"
            identifiers:
                - "DOI:10.7915/SN/XX"
            description: "Station description"
            restricted_status: "open" # "open", "closed" or "partial"
            # END OPTIONAL station elements
    # BEGIN OPTIONAL subnetwork elements
    leapseconds: # Leapseconds occuring during the data collection campaign
        list_file_entries:
            - line_text: "3692217600      37      # 1 Jan 2017"
              leap_type: '+'
        default_applied_corrections:
            not_clock_corrected_miniseed: False  # does not-clock-corrected miniseed have leapsecond corrected? (False)
            syncs_instrument: True               # Are the instrument syncs corrected for the leapsecond(s)?
    comments: 
       - "This is a simple network-level comment"
       -    value: "This is a full network-level comment"
            # OPTIONAL full comment elements
            begin_effective_time: "2022-01-02T00:00:00"
            end_effective_time: "2022-01-03T00:00:00"
            id: 4000    # integer
            subject: "comment subject"
            authors: [{$ref: "persons/EXAMPLE.person.yaml"}]
            # END OPTIONAL full comment elements      
    extras: {example: "an example", example_list: [1,2,3,4,5]}  # Saved to a network-level Comment
    # END OPTIONAL subnetwork elements
# BEGIN OPTIONAL top-level elements
notes: 
    - ""
# END OPTIONAL top-level elements

location_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
location_base:
    depth.m: 0         # Installation depth beneath the seafloor, for channel but not station
    uncertainties.m: {lon: 200, lat: 200, elev: 20} # uncertainties in meters
    # BEGIN OPTIONAL location_base elements
    vault: "seafloor"  # Type of vault
    geology: "unknown" # Type of rock and/or geologic formation at the station 
    measurement_method: "Sea surface release point" # description of measurement method
    water_level.m: 0  # Elevation of the water surface (0 for oceans)
    notes: [""]
    configuration_default: "SEA_SURFACE"
    configurations:
        "SEA_SURFACE":
            configuration_description: "Standard sea-surface deployment"
        "ACOUSTIC_SURVEY":
            uncertainties.m: {lon: 5, lat: 5, elev: 10}
            measurement_method: "Acoustic survey"
    # END OPTIONAL location_base elements
# BEGIN OPTIONAL top-level elements
notes: [""]
# END OPTIONAL top-level elements

network

---
format_version: "1.0"
revision:
    authors:
        - {$ref: "persons/EXAMPLE.person.yaml"} 
    date: "2024-09-30" # yyyy-mm-dd
network:
    code: "XX"
    description: "EXAMPLE NETWORK"
    start_date: "2011-01-01"
    end_date: "2016-12-31"
    # BEGIN OPTIONAL network elements
    comments: 
        - "Simple comment"
        -   value: "A full channel-level comment"
            # BEGIN OPTIONAL full comment elements
            begin_effective_time: "2020-01-01T00:00:00Z"
            end_effective_time:   "2024-09-30T00:00:00Z"
            id: 1                  # integer >= 0
            subject: "My subject"  # Attribute
            authors:
                - {$ref: "persons/EXAMPLE.person.yaml"}
            # END OPTIONAL full comment elements
    operators: # Network-level operators
        - {$ref: "operators/EXAMPLE.operator.yaml"}
    restricted_status: "open"  # "open", "closed" or "partial"
    source_id: "FDSN:XX"    # FDSN:<network>
    identifiers: ["DOI:10.7915/SN/XX"]  # List of identifiers
    # END OPTIONAL network elements
# BEGIN OPTIONAL top-level elements
notes: ["The code XX is reserved for test or transient data"]
# END OPTIONAL top-level elements

operator

---
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
operator:
    agency: "IPGP OBS Park"
    # BEGIN OPTIONAL operator elements
    contacts: 
        - {$ref: "persons/EXAMPLE.person.yaml"}
    website: "http://parc-obs.insu.cnrs.fr"
    # END OPTIONAL operator elements
# BEGIN OPTIONAL top-level elements
notes: 
   - ""
# END OPTIONAL top-level elements

person

---
format_version: "1.0"
person:
        names:
            - 'Albert Einstein'
            - 'Einsteinium'
        # BEGIN OPTIONAL person elements
        agencies:
            - "Princeton Institute for Advanced Studies"
        emails:
            - "albert.einstein@advanced.princeton.edu"
        phones:
            - "+1 609-867-5309"
        # END OPTIONAL person elements
# BEGIN OPTIONAL top-level elements
revision:
    authors:
        - {$ref: "persons/EXAMPLE.person.yaml"} # Reference to a file,
                                                 # or fields of a person element
    date: "2024-09-30" # yyyy-mm-dd
notes: 
   - ""
# END OPTIONAL top-level elements

timing_base

---
format_version: "1.0"
revision:
   authors:
        - {$ref: "persons/EXAMPLE.person.yaml"} # Reference to person file,
                                                 # or fields of a person element
   date: "2024-09-30" # yyyy-mm-dd
timing_base:
    instrument: "MCXO"
    reference: "GNSS"
    # BEGIN OPTIONAL timing_base elements
    instrument_nominal_drift_rate: 1.e-8
    # END OPTIONAL timing_base elements
# BEGIN OPTIONAL top-level elements
notes: 
   - ""
# END OPTIONAL top-level elements

Instrumentation

instrumentation_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
instrumentation_base:
    equipment:
        model: "MY_OBS"
        type: "My Ocean Bottom Seismometer"
        description: "This is my OBS!" 
        manufacturer: "My OBS park"
        # 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
    channels:
        default:
            datalogger:
                base: {$ref: "datalogger_bases/EXAMPLE.datalogger_base.yaml"}
                # BEGIN OPTIONAL datalogger elements
                configuration: "100sps_LINEAR"  # Must be a configuration defined in the datalogger_base
                serial_number: "20"
                notes: ["A note"]
                equipment: # modify elements of the equipment defined in datalogger_base
                    model: "ADS1281"
                    manufacturer: "Texas Instruments"
                    description: "Single Chip High-Resolution Analog-to-Digital Converter"
                    # BEGIN OPTIONAL equipment elements.
                    type: "delta-sigma A/D converter + digital filter"
                    vendor: "various"
                    serial_number: "2014a2"
                    installation_date: "2024-09-30"
                    removal_date: "2025-08-31"
                    resource_id: "IPGP:2004iepw44"
                    calibration_dates: 
                       - "2004-09-22T07:00:00"
                    # END OPTIONAL equipment elements.
                stages:   # replace all 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_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"}}
                stage_modifications: # Modify certain stages
                    "1": {gain: {value: 100}}  # Modifies the "gain" subelement of stage 1
                sample_rate: 125  # Only needed if you replace/modify stages
                correction: 24    # Only needed if you replace/modify stages
                # END OPTIONAL datalogger elements
            sensor:
                base: {$ref: "sensor_bases/EXAMPLE_BBSeismometer.sensor_base.yaml"}
                # BEGIN OPTIONAL sensor elements
                configuration: "something"  # Must be a configuration defined in the sensor_base
                serial_number: "A16"
                notes: ["A note"]
                equipment:
                    # All elements are optional, see datalogger:equipment above
                    model: "Example sensor"
                stages:
                    - {base: {$ref: "sensor_bases/stage_bases/EXAMPLE_DPG.stage_base.yaml"}}
                stage_modifications:
                     "1": {gain: {value: 100}}  # Modifies the "gain" subelement of stage 1
                seed_codes:  # Modify values given in sensor_base
                    # BEGIN OPTIONAL seed_codes elements
                    band: "shortperiod"  # "shortperiod" or "broadband" to
                                         # automatically choose the appropriate
                                         # band code for the sample rate, or
                                         # one of the "non-band" band codes:
                                         # ('A', 'I', 'O', 'L' or 'S')
                    instrument: "H"      # Seed instrument code
                    # END OPTIONAL seed_codes elements                    
                # END OPTIONAL sensor elements
            # BEGIN OPTIONAL default elements
            preamplifier:
                base: {$ref: "preamplifier_bases/EXAMPLE_DPG.preamplifier_base.yaml"}
                # BEGIN OPTIONAL preamplifier elements
                configuration: "16x"  # Must be a configuration defined in the preamplifier_base
                serial_number: "2020_003"
                notes: ["A note"]
                equipment:
                    # All elements are optional, see datalogger:equipment above
                    model: "Example sensor"
                stages:
                    - {base: {$ref: "preamplifier_bases/stage_bases/EXAMPLE_DPG-Card.stage_base.yaml"}}
                stage_modifications:
                     "1": {gain: {value: 100}}   # Modifies the "gain" subelement of stage 1
                # END OPTIONAL preamplifier elements
            location_code: "01"        # If not specified, use station's location code
            restricted_status: "open"  # "open", "closed", or "partial"
            source_id: "FDSN:XX_SS_00_H_H_Z"    # StationXML sourceID: FDSN:<network>_<station>_<location>_<band>_<source>_<subsource>
            identifiers: ["DOI:10.7915/SN/XX"]  # List of identifiers
            external_references:  # List of external references
                -   uri: "http://usgs.gov"
                    description:  "USGS website"
            comments:   # List of comments
                - "A simple channel-level comment"
                -   value: "A full channel-level comment"
                    # OPTIONAL full comment elements
                    begin_effective_time: "2020-01-01T00:00:00Z"
                    end_effective_time:   "2024-09-30T00:00:00Z"
                    id: 1      # integer id
                    subject: "My subject"  # An attribute
                    authors:
                        - {$ref: "persons/EXAMPLE.person.yaml"}
                    # END OPTIONAL full comment elements
            extras: {}  # anything you want, written as an object (put into comments)
            # END OPTIONAL default elements
        "1":   # One element per instrument channel, name is generally the 
               # datalogger's channel #
            orientation:
                code: "Z"   # The SEED orientation (or sub-source) code for this channel
                azimuth.deg:
                    value: 0
                    # BEGIN OPTIONAL azimuth.deg elements
                    uncertainty: 180
                    # END OPTIONAL azimuth.deg elements
                dip.deg:
                    value: -90
                    # BEGIN OPTIONAL dip.deg elements
                    uncertainty: 5
                    # END OPTIONAL dip.deg elements
            # BEGIN OPTIONAL channel elements that MODIFY the specified elements
            sensor: {configuration: "blah"}  # UPDATE default sensor's fields
            datalogger: {configuration: "bleh"}  # UPDATE default datalogger's fields
            preamplifier: {configuration: "bluh"}  # UPDATE default preamplifier's fields
            identifiers:  ["DOI:10.7915/SN/YY"]
            external_references:
                -   uri: "http://ipgp.fr"
                    description:  "IPGP website"
            comments : 
                - "A simple channel-level comment"
            extras:  {}
            # END OPTIONAL channel elements that MODIFY the specified elements
            # BEGIN OPTIONAL channel elements that REPLACE default elements
            location_code: '03'
            restricted_status: "closed"
            source_id: "FDSN:XX_SS_00_H_H_H"
            replace_sensor: 
                base: {$ref: "sensor_bases/EXAMPLE_DPG.sensor_base.yaml"}  
            replace_datalogger: 
                base: {$ref: "datalogger_bases/EXAMPLE.datalogger_base.yaml"}
                # BEGIN OPTIONAL replace_datalogger elements
                configuration: "250sps"
                # END OPTIONAL replace_datalogger elements
            replace_preamplifier:
                base: {$ref: "preamplifier_bases/EXAMPLE_DPG.preamplifier_base.yaml"}
            replace_identifiers:   ["DOI:10.7915/SN/YY"]
            replace_external_references:
                -   uri: "http://ipgp.fr"
                    description:  "IPGP website"
            replace_comments:
                - "A replacement channel-level comment"
            replace_extras: {}
            # END OPTIONAL channel elements that REPLACE default elements
    # BEGIN OPTIONAL instrumentation_base elements
    configuration_default: "CONFIG1"
    configurations:
        "CONFIG1":  # Modifications to the base instrumentation
            channels:
                "default": {replace_datalogger:  {base: {$ref: "datalogger_bases/EXAMPLE.datalogger_base.yaml"}}}
        "CONFIG2":  # Modifications to the base instrumentation
            channels:
                "default":
                    replace_datalogger:  {base: {$ref: "datalogger_bases/EXAMPLE.datalogger_base.yaml"}}
                    replace_preamplifier:
                        base: {$ref: "preamplifier_bases/EXAMPLE_DPG.preamplifier_base.yaml"}
                        configuration: "16x gain"
        "SN01":
            equipment: {serial_number: '01'}
            channels:
                default: {sensor: {configuration: "Sphere01"}}
                "4": {sensor: {configuration: "generic"}}
    # END OPTIONAL instrumentation_base elements
# BEGIN OPTIONAL top-level elements
notes: 
    - ""
# END OPTIONAL top-level elements

Instrument_components and stages

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

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

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

stage_base

---
format_version: "1.0"
revision:
   authors:
        - {$ref: "persons/EXAMPLE.person.yaml"} # Reference to person file,
                                                 # or fields of a person element
   date: "2024-09-30" # yyyy-mm-dd
stage_base:
    input_units:
        name: "V"
        # BEGIN OPTIONAL units elements
        description: "Volts"
        # END OPTIONAL units elements
    output_units:
        name: "V"
        # BEGIN OPTIONAL units elements
        description: "Volts"
        # END OPTIONAL units elements
    gain :
      value: 10     # Gain (output_units/input_units)
      frequency: 10 # Frequency at which gain is given
    filter: {$ref: 'sensor_bases/stage_bases/filters/EXAMPLE_BBSeismometer_SN1-399.filter.yaml'}
    # BEGIN OPTIONAL stage_base elements
    name: "Funky filter"  # Stage/Filter name
    description:  "Oddball offbeat filter"  # Stage/Filter description
    delay: 0  # Value to put in StationXML stage w/o modification.
             # if not specified and this is a digital stage, calculate
             # as filter offset / input_sample_rate
    polarity: "+"  # "+" if the stage does not invert sign from input to output
                  # "-" if it does invert sign
                  # ("+") 
    input_sample_rate: 100  # Only use if fixed input_sample rate
    decimation_factor: 2  # Factor by which this stage decimates data
    calibration_dates:
        - "2004-12-31T00:00:00"
        - "2024-12-31T00:00:00"
    resource_id: "IPGP:2004iepw44" # Unique ID of the filter, typically
                                   # "GENERATOR:Meaningful_ID"
    configuration_default: "10x"
    configurations:
        "1x": {gain:  {value : 1, frequency : 10.}}
        "5x": {gain:  {value : 5, frequency : 10.}}
        "10x": {gain:  {value : 10, frequency : 10.}}
        "20x": {gain:  {value : 20, frequency : 10.}}
    # END OPTIONAL stage_base elements
# BEGIN OPTIONAL top-level elements
notes: 
   - ""
# END OPTIONAL top-level elements

Filters

ADCONVERSION

---
format_version: "1.0"
revision:
   authors:
        - {$ref: "persons/EXAMPLE.person.yaml"} # Reference to person file,
                                                 # or fields of a person element
   date: "2024-09-30" # yyyy-mm-dd
filter:
   type : "ADCONVERSION"
   v_minus: -4.5            # minimum data input voltage
   v_plus:  4.5             # maximum data input voltage
   counts_minus: '0xB00000' # counts corresponding to v_minus.  If string, 
                            # should start with '0x', followed by n_bits/4
                            # hexadecimal characters, where n_bits is the
                            # numeric part of counts_dtype.
                            # If counts_type starts with 'uint', this value is
                            # interpreted as the two's complement
   counts_plus: '0x4FFFFF'  # counts corresponding to v_plus.  If string, see above.
   counts_dtype: 'int24'    # choices: "int16", "int24", "int32", "int64",
                            #          "uint16", "uint24", "uint32", "uint64"
                            # Not required if counts_minus and counts_plus
                            # are decimal numbers
   # BEGIN OPTIONAL filter elements
   delay.samples: 0         # Samples that the conversion delays the data (0)
   # the following elements are used to calculate the stage gain.
   # if it is not the same as the stage:gain, obsinfo will tell you what
   # both values are
   counts_dtype: 'int24'    # choices: "int16", "int24", "int32", "int64",
                            #          "uint16", "uint24", "uint32", "uint64"
   # END OPTIONAL filter elements
# BEGIN OPTIONAL top-level elements
notes: 
    - ""
# END OPTIONAL top-level elements

ANALOG

---
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
filter:
   type : "ANALOG"
   # BEGIN OPTIONAL filter elements
   delay.seconds: 0  # Seconds that the conversion delays the data (default = 0)
   # END OPTIONAL filter elements
# BEGIN OPTIONAL top-level elements
notes: 
    - ""
# END OPTIONAL top-level elements

Coefficients

---
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
filter:
   type: "Coefficients"
   numerator_coefficients:
       - 1
       - 0
   denominator_coefficients:
       - 0.5
       - 0.5
   # BEGIN OPTIONAL filter elements
   delay.samples: 0    # Samples that the conversion delays the data (default=0)
   transfer_function_type: "DIGITAL"  # choices: "ANALOG (RADIANS/SECOND)",
                                      #          "ANALOG (HERTZ)",
                                      #           "DIGITAL"
                                      # (default = "DIGITAL")
   # BEGIN OPTIONAL filter elements
# BEGIN OPTIONAL top-level elements
notes: 
    - ""
# END OPTIONAL top-level elements

DIGITAL

---
format_version: "1.0"
revision:
    authors:
        - {$ref: "persons/EXAMPLE.person.yaml"} # Reference to person file,
                                                 # or fields of a person element
    date: "2024-09-30" # yyyy-mm-dd
filter:
    type : "DIGITAL"
    # BEGIN OPTIONAL filter elements
    delay.samples: 0               # Samples by which the conversion delays
                                   # the data (0)
    # END OPTIONAL filter elements
# BEGIN OPTIONAL top-level elements
notes: 
   - ""
# END OPTIONAL top-level elements

FIR

---
format_version: "1.0"
revision:
   authors:
        - {$ref: "persons/EXAMPLE.person.yaml"} # Reference to person file,
                                                 # or fields of a person element
   date: "2024-09-30" # yyyy-mm-dd
filter:
   type: "FIR"
   symmetry: "NONE" # "EVEN", "ODD" or "NONE"
   coefficients:
       - 1
       - 10
       - -20
       - 30
       - -20
       - 10
       - 1
   delay.samples: 3   # used to calculate stage-level delay, should be at/before max peak
   # BEGIN OPTIONAL filter elements
   coefficient_divisor: 12  # number to divide all coefficients by for unity gain (1)
   # END OPTIONAL filter elements
# BEGIN OPTIONAL top-level elements
notes: 
   - ""
# END OPTIONAL top-level elements

PolesZeros

---
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
filter:
   type: "PolesZeros"
   zeros :
       - "0 + 0j"
       - "0 _ 0j"
   poles :
       - "1 + 1j"
       - "1 - 1j"
       - "4000 + 0j"
   # BEGIN OPTIONAL filter elements (default in parentheses)
   delay.seconds: 0  # used to calculate stage-level delay
   transfer_function_type: "LAPLACE (HERTZ)"  # "LAPLACE (RADIANS/SECOND)"
                                              # or "LAPLACE (HERTZ)"
                                              # or "DIGITAL (Z-TRANSFORM)"
                                              # ("LAPLACE (RADIANS/SECOND)")
   normalization_frequency: 10  # (gain:frequency)
   normalization_factor: 1.33   # (calculated from normalization frequency
                                #  and poles and zeros)
   # END OPTIONAL filter elements
# BEGIN OPTIONAL top-level elements
notes: 
   - ""
# END OPTIONAL top-level elements

Polynomial

Note: Polynomial filters don’t work yet in obsinfo, because they don’t exist in obspy!

---
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
# WARNING!  OBSPY 1.4.0 does not handle Polynomial filters
filter:
   type: "Polynomial"
   coefficients :
       - value: 10     # Simple expression
       -        # Full expression
            value: 20
            # BEGIN OPTIONAL coefficient elements
            plus_error: 1.
            minus_error: 1.
            measurement_method: "johnson a2 microcalipers"
            number: 2      # 0 or positive integer
            # END OPTIONAL coefficient elements
   frequency_lower_bound: 
        value: 0.001
        # BEGIN OPTIONAL frequency_bound elements
        unit: "HERTZ"   # ("HERTZ"), no other value is allowed!
        plus_error: 0.001
        minus_error: 0.001
        measurement_method: "oscilloscope"
        # END OPTIONAL frequency_bound elements
   frequency_upper_bound:
        value: 0.1
        # BEGIN OPTIONAL frequency_bound elements
        unit: "HERTZ"   # ("HERTZ"), no other value is allowed!
        plus_error: 0.1
        minus_error: 0.1
        measurement_method: "oscilloscope"
        # END OPTIONAL frequency_bound elements
   approximation_lower_bound: 3.    # Lower bound of the approximation range
   approximation_upper_bound: 5.    # Upper bound of the approximation range
   maximum_error: 0.2               # Maximum error of the approximatiion
   # BEGIN OPTIONAL filter elements
   approximation_type: "MACLAURIN"  # ("MACLAURIN"), no other value allowed!
   # END OPTIONAL filter elements
# BEGIN OPTIONAL top-level elements
notes: 
   - ""
# END OPTIONAL top-level elements

ResponseList

---
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
filter:
   type : "ResponseList"
   elements :  # Frequency (Hz), amplitude, phase (deg)
       - [0.001, 0.01, -90]  
       - [  0.1, 0.1,  -45] 
       - [   10, 0.9,   -5] 
       - [ 1000, 1.0,    0]
   # BEGIN OPTIONAL filter elements
   delay.seconds: 0    # Seconds that the filter delays the data (0)
   # BEGIN OPTIONAL filter elements
# BEGIN OPTIONAL top-level elements
notes: 
   - ""
# END OPTIONAL top-level elements