Systems
The GS standard provides a dedicated location and framework for describing geophysical systems. To apply to the wide variety of geophysical methods, techniques, and instruments, the GS standard defines a system as a composition of four elements:
sources or transmitters (TX) - sends energy into the earth
receivers (RX) - record natural or induced signals from the earth
couplets - represent one or more specific transmitter-receiver combinations
channels - represent discrete values recorded by a receiver. Channels typically match a data variable dimension, but are flexible in their composition from sources, receivers, and couplets. For example, a data variable may have channels associated with a single couplet, or channels that result from the combination of multiple couplets.
Systems are passed through metadata files, either with the Survey or Data Leaf metadata files. When included in the Survey file, systems are added directly beneath it temporarily for use in constructing the Data Tree (e.g. systems can be passed directly from the /survey when adding new datasets). However, when writing to netCDF, all systems attached directly to the ‘/survey’ group are dropped and only those at the System Leaflet tier (benath Data Leaves) are retained.
Below is an example of a dual-moment electromagnetic (EM) time-domain system. In this case, the data channel corresponds to the dimensions of high and low moment gate times.
Important
Systems expect the sections “transmitter”, “receiver”, and “couplet” underneath the “variables” header. Any key: value pairs beneath these headers should represent properties and metadata information pertaining to just that element of the system, and will automatically have that header prefixed to the variable names. For example, “area” under “transmitter” will become the variable “transmitter_area”.
The label field beneath each “transmitter” and “receiver” is required and used to define both the dimensions of their variables and the labels of the “couplet”. By default, GSPy generates the variable couplet_label by combining the transmitter and receiver labels: {transmitter_label}_{receiver_label}. Users can override this by explicitly passing a “label” field beneath the “couplet” header. In either case, the system_couplet attributes underneath data variables in the Data Leaf group must match!
1nominal_system:
2 type: system
3 mode: airborne
4 method: electromagnetic, time domain
5 instrument: SkyTEM 304M
6
7 dimensions:
8
9 lm_gate_times:
10 standard_name: lm_gate_times
11 long_name: calibrated low moment gate times
12 units: seconds
13 missing_value: not_defined
14 bounds: [[-1.420000e-06, -8.500000e-07],
15 [-4.200000e-07, 1.150000e-06],
16 [ 1.580000e-06, 3.150000e-06],
17 [ 3.580000e-06, 5.150000e-06],
18 [ 5.580000e-06, 7.150000e-06],
19 [ 7.580000e-06, 9.150000e-06],
20 [ 9.580000e-06, 1.115000e-05],
21 [ 1.158000e-05, 1.415000e-05],
22 [ 1.458000e-05, 1.815000e-05],
23 [ 1.858000e-05, 2.315000e-05],
24 [ 2.358000e-05, 2.915000e-05],
25 [ 2.958000e-05, 3.715000e-05],
26 [ 3.758000e-05, 4.715000e-05],
27 [ 4.758000e-05, 6.015000e-05],
28 [ 6.056500e-05, 7.616500e-05],
29 [ 7.656500e-05, 9.616500e-05],
30 [ 9.656500e-05, 1.211650e-04],
31 [ 1.215650e-04, 1.521650e-04],
32 [ 1.525650e-04, 1.921650e-04],
33 [ 1.925650e-04, 2.431650e-04],
34 [ 2.435650e-04, 3.061650e-04],
35 [ 3.065650e-04, 3.871650e-04],
36 [ 3.875650e-04, 4.881650e-04],
37 [ 4.885650e-04, 6.151650e-04],
38 [ 6.155650e-04, 7.761650e-04],
39 [ 7.765650e-04, 9.781650e-04],
40 [ 9.785650e-04, 1.233165e-03],
41 [ 1.233565e-03, 1.555165e-03]]
42 centers: [-1.135000E-06, 3.650000E-07, 2.365000E-06, 4.365000E-06, 6.365000E-06, 8.365000E-06, 1.036500E-05, 1.286500E-05, 1.636500E-05, 2.086500E-05, 2.636500E-05, 3.336500E-05, 4.236500E-05, 5.386500E-05, 6.836500E-05, 8.636500E-05, 1.088650E-04, 1.368650E-04, 1.723650E-04, 2.178650E-04, 2.748650E-04, 3.468650E-04, 4.378650E-04, 5.518650E-04, 6.958650E-04, 8.773650E-04, 1.105865E-03, 1.394365E-03]
43 hm_gate_times:
44 standard_name: hm_gate_times
45 long_name: calibrated high moment gate times
46 units: seconds
47 missing_value: not_defined
48 bounds: [[2.85800e-05, 2.91500e-05],
49 [2.95800e-05, 3.11500e-05],
50 [3.15800e-05, 3.31500e-05],
51 [3.35800e-05, 3.51500e-05],
52 [3.55800e-05, 3.71500e-05],
53 [3.75800e-05, 3.91500e-05],
54 [3.95800e-05, 4.11500e-05],
55 [4.15800e-05, 4.41500e-05],
56 [4.45800e-05, 4.81500e-05],
57 [4.85800e-05, 5.31500e-05],
58 [5.35800e-05, 5.91500e-05],
59 [5.95800e-05, 6.71500e-05],
60 [6.75800e-05, 7.71500e-05],
61 [7.75800e-05, 9.01500e-05],
62 [9.05800e-05, 1.06150e-04],
63 [1.06580e-04, 1.26150e-04],
64 [1.26580e-04, 1.51150e-04],
65 [1.51580e-04, 1.82150e-04],
66 [1.82580e-04, 2.22150e-04],
67 [2.22580e-04, 2.73150e-04],
68 [2.73580e-04, 3.36150e-04],
69 [3.36580e-04, 4.17150e-04],
70 [4.17580e-04, 5.18150e-04],
71 [5.18580e-04, 6.45150e-04],
72 [6.45580e-04, 8.06150e-04],
73 [8.06580e-04, 1.00815e-03],
74 [1.00858e-03, 1.26315e-03],
75 [1.26358e-03, 1.58515e-03],
76 [1.58558e-03, 1.99115e-03],
77 [1.99158e-03, 2.50215e-03],
78 [2.50258e-03, 3.14815e-03],
79 [3.14858e-03, 3.94015e-03]]
80 centers: [2.886500E-05, 3.036500E-05, 3.236500E-05, 3.436500E-05, 3.636500E-05, 3.836500E-05, 4.036500E-05, 4.286500E-05, 4.636500E-05, 5.086500E-05, 5.636500E-05, 6.336500E-05, 7.236500E-05, 8.386500E-05, 9.836500E-05, 1.163650E-04, 1.388650E-04, 1.668650E-04, 2.023650E-04, 2.478650E-04, 3.048650E-04, 3.768650E-04, 4.678650E-04, 5.818650E-04, 7.258650E-04, 9.073650E-04, 1.135865E-03, 1.424365E-03, 1.788365E-03, 2.246865E-03, 2.825365E-03, 3.544365E-03]
81
82 n_loop_vertices:
83 standard_name: number_of_loop_vertices
84 long_name: number of loop vertices
85 units: not_defined
86 missing_value: not_defined
87 length: 8
88
89 xyz:
90 standard_name: xyz_coordinates
91 long_name: coordinates of the loop vertices
92 units: not_defined
93 missing_value: not_defined
94 length: 3
95
96 variables:
97
98 data_normalized: True
99 skytem_skb_gex_available: True
100 reference_frame: right-handed positive down
101 coil_orientations: X, Z
102
103 transmitter:
104 label: [LM, HM]
105 number_of_turns: [1, 4]
106 coordinates:
107 values: [[[-12.64,-2.10,0.00],[-6.14,-8.58,0.00],[6.14,-8.58,0.00],[11.41,-3.31,0.00],[11.41,3.31,0.00],[6.14,8.58,0.00],[-6.14,8.58,0.00],[-12.64,2.10,0.00]],
108 [[-12.64,-2.10,0.00],[-6.14,-8.58,0.00],[6.14,-8.58,0.00],[11.41,-3.31,0.00],[11.41,3.31,0.00],[6.14,8.58,0.00],[-6.14,8.58,0.00],[-12.64,2.10,0.00]]]
109 dimensions: ['n_transmitter', 'n_loop_vertices', 'xyz']
110 area: [342, 342]
111 waveform_type: [trapezoid, trapezoid]
112 waveform_time:
113 values: [[-3.1810E-003, -3.1019E-003, -2.9844E-003, -2.3810E-003, -2.3781E-003, -2.3779E-003, -2.3776E-003, -2.3763E-003, -8.0000E-004, -7.2093E-004, -6.0345E-004, 0.0000E+000, 3.0000E-008, 7.0000E-008, 2.7200E-006, 2.8000E-006, 2.9000E-006, 3.0100E-006, 3.1300E-006, 3.4100E-006, 4.7400E-006],
114 [-6.9167E-02, -6.9157E-02, -6.9153E-02, -6.9150E-02, -6.9143E-02, -6.9122E-02, -6.9118E-02, -6.9114E-02, -6.9107E-02, -6.9083E-02, -6.8159E-02, -6.6667E-02, -6.6627E-02, -6.6626E-02, -6.6622E-02, -2.5000E-03, -2.4899E-03, -2.4862E-03, -2.4830E-03, -2.4767E-03, -2.4637E-03, -2.4547E-03, -2.4510E-03, -2.4475E-03, -2.4442E-03, -2.4406E-03, -2.4159E-03, -2.2328E-03, -1.4913E-03, 0.0000E+00, 6.4270E-07, 8.9870E-07, 1.4267E-05, 4.0291E-05, 4.1331E-05, 4.4539E-05]]
115 long_name: waveform time
116 missing_value: not_defined
117 units: s
118 waveform_current:
119 values: [[-0.0000E+000, -1.4067E-001, -3.0174E-001, -1.0000E+000, -7.5094E-003, 2.2879E-002, 3.7669E-002, -0.0000E+000, 0.0000E+000, 1.4063E-001, 3.0168E-001, 1.0000E+000, 9.9851E-001, 9.8817E-001, 5.9260E-002, 3.2392E-002, 7.5094E-003, -1.2284E-002, -2.6411E-002, -3.8086E-002, 0.0000E+000],
120 [-0.0000E+00, -3.3580E-02, -6.8755E-02, -1.0992E-01, -2.4885E-01, -7.3516E-01, -8.1234E-01, -8.6553E-01, -9.0296E-01, -9.2188E-01, -9.6364E-01, -1.0000E+00, -8.2124E-03, 7.2510E-03, -0.0000E+00, 0.0000E+00, 3.3780E-02, 6.5400E-02, 1.0996E-01, 2.3303E-01, 5.4048E-01, 7.4152E-01, 8.1301E-01, 8.6142E-01, 8.8900E-01, 9.0249E-01, 9.2195E-01, 9.3742E-01, 9.6367E-01, 1.0000E+00, 9.9562E-01, 9.8391E-01, 6.4740E-01, 9.9177E-04, -1.1094E-02, 0.0000E+00]]
121 dimensions: ['n_transmitter', 'waveform_time']
122 current_scale_factor: 1.0
123 peak_current: [9.0, 110.0]
124 base_frequency: [210.0, 75.0]
125 on_time: [800E-06, 2500e-6]
126 off_time: [1581E-06, 4167e-6]
127 orientation: [z, z]
128
129 receiver:
130 label: [z, x]
131 orientation: [z, x]
132 coil_low_pass_filter: [628000.0, 250000.0]
133 instrument_low_pass_filter: [500000.0, 500000.0]
134 area:
135 values: [105.0, 115.0]
136 units: m^2
137
138 couplet:
139 transmitters: [lm, hm, lm, hm]
140 receivers: [z, z, x, x]
141 txrx_dx: [-13.25, -13.25, -14.65, -14.65]
142 txrx_dy: [0.0, 0.0, 0.0, 0.0]
143 txrx_dz: [-2.0, 0.0, -2.0, 0.0]
144 data_type: [dBdt, dBdt, dBdt, dBdt]
145 gate_times: [LM_gate_times, HM_gate_times, LM_gate_times, HM_gate_times]
Below is an example of a simple scalar magnetometer system. There is no concept of a channel dimension in this case. However this example demonstrates how additional prefixes for categories within the system, like “base_magnetometer”, are passed through the “prefixes” key. Under “variables” that prefix should be a header at the same indent level as “transmitter”, “receiver”, and “couplet”. Any key: value pairs indented beneath it become variables with that prefix in the name.
147magnetic_system:
148 type: system
149 mode: airborne
150 method: magnetic
151 instrument: Geometrics G-822A cesium‑vapor magnetometer
152
153 prefixes: ['base_magnetometer']
154
155 dimensions:
156 base_mag_locations:
157 standard_name: base_mag_locations
158 long_name: Base Magnetometer Location Index Numbers
159 units: not_defined
160 missing_value: not_defined
161 centers: [1, 2]
162 discrete: True
163
164 variables:
165
166 transmitter:
167 label: passive
168 description: No artificial magnetic transmitter was used. The system measures the scalar Larmor precession frequency induced by the Earth's magnetic field.
169
170 receiver:
171 label: scalar_magnetometer
172 sensor_type: cesium-vapor split-beam
173 sensor_model: G-822A
174 sensor_manufacturer: Geometrics
175 description: Scalar cesium-vapor magnetometer mounted in the aircraft tail stinger. Measures total magnetic field through Larmor precession frequency.
176 orientation: Tail-stinger mounted; scalar measurement independent of orientation.
177 coordinates: not_reported
178 lag_correction: Lag was negligible and no lag correction was applied
179 heading_correction: Heading was negligible and no heading correction was applied
180
181 couplet:
182 passive_scalar_pair:
183 transmitters: [passive]
184 receivers: [scalar_magnetometer]
185 description: The magnetic measurement system consists of the Earth's field as a passive transmitter and a single scalar magnetometer mounted in the tail stinger.
186
187 base_magnetometer:
188 label: base_magnetometer
189 description: The base station magnetometer was placed in a location of low magnetic gradient, away from electrical transmission lines and moving metallic objects, such as motor vehicles and aircrafts.
190
191 location_names:
192 values: ["Door County", "Manitowoc"]
193 dimensions: 'base_mag_locations'
194
195 values:
196 values: [54538, 54194.7]
197 units: nT
198 dimensions: 'base_mag_locations'
199
200 latitude:
201 values: [44.849335, 44.127998]
202 long_name: Latitude in WGS84
203 units: decial degrees
204 dimensions: 'base_mag_locations'
205
206 longitude:
207 values: [87.422440, 87.685524]
208 long_name: Longitude in WGS84
209 units: decial degrees
210 dimensions: 'base_mag_locations'
211
212 elevation:
213 values: [178.1, 164.4]
214 long_name: Elevation
215 datum: WGS84
216 units: m
217 dimensions: 'base_mag_locations'
218
219 diurnal_correction: Diurnal signal removed using 3 second Fraser low-pass filter and subtracting base-station magnetometer values.
220 tieline_levelling: No tie line-leveling were applied
221 microlevelling: No micro-levelling were applied
222 igrf_model_date: "2015, 15th generation"
223 igrf_model_location: variable according to GPS WGS84 longitude and latitude
224 igrf_model_height: variable according to magnetic sensor altitude derived from DGPS data
Note
Variables within the System Leaflet groups do NOT require the same variable metadata that Data Leaf variables require (e.g. standard_name and long_name). However attributes such as units can optionally be passed where deemed appropriate, and dimensions may still be needed.