Subnetwork
Description
An OBS subnetwork is all or part of an FDSN network of stations in a given campaign.
Python class:
SubNetwork
YAML / JSON label:
- subnetwork
Contained in a subnetwork file.
Corresponding StationXML structure
Network
Object Hierarchy
Superclass
None
Subclasses
None
Relationships
Gathers one or more Stations
Is part of a Campaign (not implemented in obsinfo as a class).
Attributes
Name |
Type |
Required |
Default |
Equivalent StationXML |
Remarks |
subnetwork |
Y |
None |
None |
||
operator |
Y |
None |
Not required in StationXML |
||
stations |
Array of Station |
Y |
None |
||
restricted_state |
List of values: “open”, “closed”, “partial”, “unknown” |
N |
None |
None |
JSON schema
https://www.gitlab.com/resif/smm/obsinfo/-/tree/master/obsinfo/data/schemas/subnetwork.schema.json
Example
file: _templates/subnetwork.yaml
---
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