Loupe to NetCDF

import matplotlib.pyplot as plt
from os.path import join
import numpy as np
import gspy

Convert the Loupe csv data to NetCDF

Initialize the Survey

# Path to example files
data_path = '../data_files/loupe'

# Survey metadata file
metadata = join(data_path, "data//LoupeEM_survey_md.yml")

# Establish the Survey
survey = gspy.Survey.from_dict(metadata)

data_container = survey.gs.add_container('data')

data = join(data_path, 'data//Kankakee.dat')
metadata = join(data_path, 'data//Loupe_data_metadata.yml')
data_container.gs.add(key='raw_data', data_filename=data, metadata_file=metadata, file_type='loupe')
<xarray.DataTree 'raw_data'>
Group: /survey/data/raw_data
│   Dimensions:       (index: 2474, gate_times: 23)
│   Coordinates:
│     * index         (index) int32 10kB 0 1 2 3 4 5 ... 2469 2470 2471 2472 2473
│     * gate_times    (gate_times) float64 184B 1.297e-05 1.495e-05 ... 0.002183
│       spatial_ref   float64 8B 0.0
│       x             (index) float64 20kB 5.248e+05 5.248e+05 ... 5.246e+05
│       y             (index) float64 20kB 4.583e+06 4.583e+06 ... 4.583e+06
│       z             (index) float64 20kB 211.5 211.5 211.5 ... 211.0 211.1 211.1
│   Data variables: (12/45)
│       fid           (index) object 20kB '1' '2' '3' '4' ... '2961' '2962' '2963'
│       acq           (index) float64 20kB 1.0 1.0 1.0 1.0 1.0 ... 6.0 6.0 6.0 6.0
│       acq_rdg       (index) float64 20kB 0.0 1.0 2.0 3.0 ... 424.0 425.0 426.0
│       acq_time      (index) object 20kB '20230808T175252.504075397Z' ... '20230...
│       time          (index) object 20kB '20230808T175253.000000000Z' ... '20230...
│       ts            (index) float64 20kB 1.692e+09 1.692e+09 ... 1.692e+09
│       ...            ...
│       y_powerphase  (index) float64 20kB 1.006 1.07 1.008 ... -2.718 -2.558 -2.693
│       z_powerphase  (index) float64 20kB 1.663 1.679 1.748 ... 1.081 0.9304 0.8736
│       X_CH          (index, gate_times) float64 455kB 491.5 357.4 ... 0.001494
│       Y_CH          (index, gate_times) float64 455kB -6.219 6.26 ... -0.0268
│       Z_CH          (index, gate_times) float64 455kB 499.8 434.7 ... 0.01253
│       line          (index) int64 20kB 1 1 1 1 1 1 1 1 1 1 ... 6 6 6 6 6 6 6 6 6 6
│   Attributes:
│       uuid:        fcf8ea08-1ceb-4a05-a9f9-5110dad67524
│       content:     raw data
│       comment:     This dataset includes minimally processed (raw) AEM data
│       type:        data
│       method:      electromagnetic
│       instrument:  loupe
└── Group: /survey/data/raw_data/loupe_system
        Dimensions:                              (gate_times: 23, nv: 2,
                                                  n_loop_vertices: 8, xyz: 3,
                                                  n_transmitter: 1, waveform_time: 4,
                                                  n_receiver: 3, n_component: 3)
        Coordinates:
          * nv                                   (nv) int64 16B 0 1
          * n_loop_vertices                      (n_loop_vertices) int64 64B 0 1 ... 6 7
          * xyz                                  (xyz) int64 24B 0 1 2
          * n_transmitter                        (n_transmitter) int64 8B 0
          * waveform_time                        (waveform_time) <U32 512B '-0.002777...
          * n_receiver                           (n_receiver) int64 24B 0 1 2
          * n_component                          (n_component) int64 24B 0 1 2
        Data variables: (12/35)
            gate_times_bnds                      (gate_times, nv) float64 368B -9.238...
            n_loop_vertices_bnds                 (n_loop_vertices, nv) float64 128B -...
            xyz_bnds                             (xyz, nv) float64 48B -0.5 0.5 ... 2.5
            transmitter_label                    (n_transmitter) <U1 4B 'z'
            transmitter_number_of_turns          (n_transmitter) int64 8B 13
            transmitter_coordinates              (n_transmitter, n_loop_vertices, xyz) float64 192B ...
            ...                                   ...
            component_txrx_dx                    (n_component) float64 24B -10.0 ... ...
            component_txrx_dy                    (n_component) float64 24B 0.0 0.0 0.0
            component_txrx_dz                    (n_component) float64 24B -0.75 ... ...
            component_data_type                  (n_component) <U4 48B 'dBdt' ... 'dBdt'
            component_gate_times                 (n_component) <U10 120B 'gate_times'...
            sample_rate                          object 8B None
        Attributes: (12/13)
            type:                    system
            mode:                    ground
            method:                  electromagnetic
            submethod:               time domain
            instrument:              loupe
            uuid:                    e456af4b-196a-4483-a615-f078c18cbf87
            ...                      ...
            data_normalized:         True
            reference_frame:         right-handed positive down
            sample_rate:             0.1
            digitization_frequency:  504000.0
            stacks:                  360
            powerline_frequency:     60.0


Save to NetCDF file

d_out = join(data_path, 'Loupe.nc')
survey.gs.to_netcdf(d_out)
uuid
title
institution
source
history
references
comment
summary
content
created_by
conventions
type
_FillValue
survey_type
survey_area_name
state
country
acquisition_start
acquisition_end
survey_attributes_units
coordinates
_FillValue
electromagnetic_system
serial_number
receiver_software_version
receiver_calibration
electromagnetic_installation
vlf_stations
vlf_frequency
vlf_coordinates
coordinates
_FillValue
crs_wkt
semi_major_axis
semi_minor_axis
inverse_flattening
reference_ellipsoid_name
longitude_of_prime_meridian
prime_meridian_name
geographic_crs_name
horizontal_datum_name
projected_crs_name
grid_mapping_name
latitude_of_projection_origin
longitude_of_central_meridian
false_easting
false_northing
scale_factor_at_central_meridian
authority
wkid
type
_FillValue
crs_wkt
semi_major_axis
semi_minor_axis
inverse_flattening
reference_ellipsoid_name
longitude_of_prime_meridian
prime_meridian_name
geographic_crs_name
horizontal_datum_name
projected_crs_name
grid_mapping_name
latitude_of_projection_origin
longitude_of_central_meridian
false_easting
false_northing
scale_factor_at_central_meridian
authority
wkid
uuid
content
comment
type
method
instrument
standard_name
long_name
null_value
units
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
standard_name
long_name
null_value
units
grid_mapping
coordinates
standard_name
long_name
null_value
units
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
axis
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
axis
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
axis
positive
datum
valid_range
grid_mapping
coordinates
standard_name
long_name
null_value
units
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
standard_name
long_name
null_value
units
grid_mapping
coordinates
standard_name
long_name
null_value
units
grid_mapping
coordinates
standard_name
long_name
null_value
units
grid_mapping
coordinates
standard_name
long_name
null_value
units
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
standard_name
long_name
null_value
units
valid_range
grid_mapping
coordinates
_FillValue
crs_wkt
semi_major_axis
semi_minor_axis
inverse_flattening
reference_ellipsoid_name
longitude_of_prime_meridian
prime_meridian_name
geographic_crs_name
horizontal_datum_name
projected_crs_name
grid_mapping_name
latitude_of_projection_origin
longitude_of_central_meridian
false_easting
false_northing
scale_factor_at_central_meridian
authority
wkid
standard_name
long_name
units
null_value
valid_range
grid_mapping
_FillValue
standard_name
long_name
null_value
units
axis
valid_range
grid_mapping
_FillValue
standard_name
long_name
null_value
units
axis
valid_range
grid_mapping
_FillValue
standard_name
long_name
null_value
units
axis
positive
datum
valid_range
grid_mapping
_FillValue
standard_name
long_name
units
null_value
valid_range
grid_mapping
bounds
type
mode
method
submethod
instrument
uuid
name
data_normalized
reference_frame
sample_rate
digitization_frequency
stacks
powerline_frequency
_FillValue
standard_name
long_name
units
null_value
valid_range
grid_mapping
_FillValue
standard_name
long_name
null_value
valid_range
grid_mapping
_FillValue
standard_name
long_name
null_value
valid_range
grid_mapping
grid_mapping
valid_range
grid_mapping
_FillValue
valid_range
grid_mapping
units
grid_mapping
grid_mapping
_FillValue
valid_range
grid_mapping
_FillValue
valid_range
grid_mapping
_FillValue
valid_range
grid_mapping
_FillValue
valid_range
grid_mapping
_FillValue
valid_range
grid_mapping
_FillValue
valid_range
grid_mapping
_FillValue
valid_range
grid_mapping
grid_mapping
_FillValue
valid_range
grid_mapping
grid_mapping
grid_mapping
_FillValue
valid_range
grid_mapping
_FillValue
valid_range
grid_mapping
_FillValue
valid_range
grid_mapping
_FillValue
valid_range
grid_mapping
_FillValue
valid_range
grid_mapping
valid_range
grid_mapping
grid_mapping
grid_mapping
grid_mapping
_FillValue
valid_range
grid_mapping
_FillValue
valid_range
grid_mapping
_FillValue
valid_range
grid_mapping
_FillValue
valid_range
grid_mapping
grid_mapping
grid_mapping
units
grid_mapping
standard_name
long_name
units
null_value
valid_range
grid_mapping
standard_name
long_name
units
null_value
valid_range
grid_mapping
bounds
standard_name
long_name
units
null_value
valid_range
grid_mapping
bounds
standard_name
long_name
units
null_value
valid_range
grid_mapping
label
prefix
long_name
null_value
units
standard_name
valid_range
grid_mapping
standard_name
long_name
units
null_value
valid_range
grid_mapping
standard_name
long_name
units
null_value
valid_range
grid_mapping

Reading back in

new_survey = gspy.open_datatree(d_out)['survey']

Plotting

plt.figure()
new_survey['data/raw_data']['height'].plot(label='height')
new_survey['data/raw_data']['tx_height'].plot(label='tx_height')
new_survey['data/raw_data']['rx_height'].plot(label='rx_height')
plt.tight_layout()
plt.legend()

plt.show()
spatial_ref = 0.0

Total running time of the script: (0 minutes 0.310 seconds)

Gallery generated by Sphinx-Gallery