- why check the version again?
echopype/echopype/convert/parse_ad2cp.py
Lines 589 to 593 in 16a574d
echopype/echopype/convert/parse_ad2cp.py
Lines 630 to 634 in 16a574d
- Safety check to make sure the version is correct
- Maybe there are multiple versions in 1 file?
- Default is to interpret as version 3, maybe the version is 2?
- Move
AHRS_COORDS
def toparse_ad2cp
?echopype/echopype/convert/set_groups_ad2cp.py
Lines 10 to 14 in 16a574d
- Chose to keep coordinate value logic in set_groups
- the
beam
coordinate is missing inrawtest.090.00015.nc
?- Beam is currently not included because no variables in the beam group are indexed by beam
- It should be included anyway
- Double check all raw to actual units conversion
- Move the sequence of variable handling to following the sequence of the data specification, for easier reference
- For all variables, put
long_name
: Field in spec sheetcomment
: Description in spec sheetunits
: following spec sheet and the units convention in CF convention- for those that are already converted to the actual units, put "but already converted to actual units here."
- for example: for the field
Temperature
, put{ "long_name": "Field "Temperature" in the data specification. " "comment": ( "Reading from the temperature sensor. " "Raw data given as 0.01 °C " "but already converted to actual units here." ) "units": "degree_C" }
- following SONAR-netCDF4 and our implementation of EK80 groups, we will use the following sequence when determining where data from each mode goes in
Beam_groupX
:- average:
"descr": ( "contains echo intensity, velocity and correlation data " "as well as other configuration parameters from the Average mode." )
- burst
"descr": ( "contains echo intensity, velocity and correlation data " "as well as other configuration parameters from the Burst mode." )
- echosounder
"descr": ( "contains backscatter echo intensity and other configuration parameters from the Echosounder mode. " "Data can be pulse compressed or raw intensity." )
- echosounder raw samples
"descr": ( "contains complex backscatter raw samples and other configuration parameters from the Echosounder mode, " "including complex data from the transmit pulse." )
- we need a trickier implementation than what's used for EK80, since for EK80 the max number group is 2, and depending on if complex or power data exist, where they show up may be different:
- if complex data exists, it is always stored in
Beam_group1
- if ONLY power data exists, it is stored in
Beam_group1
- if BOTH complex and power data exist, complex data in
Beam_group1
and power data inBeam_group2
- if complex data exists, it is always stored in
- average:
- examples:
- example 1: file with average and burst mode:
Beam_group1
: averageBeam_group2
: burst
- example 2: files with burst and echosounder mode:
Beam_group1
: burstBeam_group2
: echosounder
- example 3: files with echosounder mode and raw echosounder data:
Beam_group1
: echosounderBeam_group2
: echosounder raw samples
- example 1: file with average and burst mode:
- for echosounder raw samples
- the first ping is the raw transmit signal
- the rest of pings are the receive raw echoes
Coordinates:
ping_time
- use the original
ping_time_average
,ping_time_burst
andping_time_echosounder
in each of their ownBeam_groupX
but with the same nameping_time
- use the original
range_sample
- use the original
range_sample_average
,range_sample_burst
andrange_sample_echosounder
in each of their ownBeam_groupX
but with the same namerange_sample
- use the original
beam
:- the actual physical beam activated in the setting (1, 2, 3, 4, 5): @imranmaj please double check this
- parsed from the data variable
data_set_description
usingparse_ad2cp._postprocess_beams
for the following packets:BURST_AVERAGE_VERSION3_DATA_RECORD_FORMAT
BURST_AVERAGE_VERSION2_DATA_RECORD_FORMAT
BOTTOM_TRACK_DATA_RECORD_FORMAT
Data variables:
number_of_beams
coordinate_system
number_of_cells
blanking
cell_size
- this is conceptually equivalent to
sample_interval
for the other echosounders, just thatsample_interval
is defined in time (second) andcell_size
is defined in space (meter)
- this is conceptually equivalent to
velocity_range
echosounder_frequency
- the parsed values seem wrong: right now it shows as either 0 (these are probably for pings from other modes and not echosounder -- please verify) or 10000, but should be 1000000 (1 MHz) @imranmaj
ambiguity_velocity
data_set_description
transmit_energy
velocity_scaling
velocity
- separate
velocity_burst
andvelocity_average
into differentBeam_groupX
and use the namevelocity
- separate
amplitude
- separate
amplitude_burst
,amplitude_average
andamplitude_echosounder
into differentBeam_groupX
and use the namebackscatter_r
(since this "amplitude" is equivalent to what we have from EK60, AZFP and EK80 power data)
- separate
correlation
- separate
correlation_burst
,correlation_average
andcorrelation_echosounder
into differentBeam_groupX
and use the namecorrelation
- separate
Attributes:
pulse_compressed
- this should be a variable in the
Beam_groupX
that stores echosounder mode data - can have a max length of 3 since there can be 3 echograms in the echosounder mode (aligned with
beam
) - @imranmaj: now sure what the current status of this is?
- this should be a variable in the
figure_of_merit
: for bottom trackingaltimeter_distance
altimeter_quality
altimeter_spare
altimeter_raw_data_num_samples
altimeter_raw_data_sample_distance
altimeter_raw_data_samples
ast_distance
ast_quality
ast_offset_100us
ast_pressure
pulse_compressed
: this already is/will be inBeam_group3
(echosounder mode data)
- Questions:
- flag for whether these data will be collected?
- when collected, what their expected dimensions are?
ahrs_rotation_matrix_mij
ahrs_quaternions_wxyz
ahrs_gyro_xyz
std_dev_pitch
std_dev_roll
std_dev_heading
std_dev_pressure
compass_sensor_valid
tilt_sensor_valid
- Coordinate
time1
:- this will be the combined
ping_time
from all modes
- this will be the combined
temperature_of_pressure_sensor
: rename totemperature_pressure_sensor
magnetometer_temperature
: rename totemperature_magnetometer
real_ping_time_clock_temperature
: rename totemperature_real_ping_time_clock
pressure_sensor_valid
temperature_sensor_valid
data_record_version
error
status
: need additional parsing @imranmajstatus0
: need additional parsing @imranmajpower_level
nominal_correlation
percentage_good_data
battery_voltage
ensemble_counter
Coordinates:
ping_time
for that group (not the combined one)sample
: rename torange_sample
; this is sample number along range for raw echosounder datasample_transmit
: rename totransmit_sample
(following the proposed new variable in PR#714)
Data variables:
echosounder_raw_samples_i
: rename tobackscatter_r
echosounder_raw_samples_q
: rename tobackscatter_i
echosounder_raw_transmit_samples_i
: rename totransmit_pulse_r
(following the proposed new variable in PR#714)echosounder_raw_transmit_samples_q
: rename totransmit_pulse_i
(following the proposed new variable in PR#714)echosounder_raw_beam
: not sure what this corresponds to, but couldn't find a variable that correpsonds tobeam
which is the physical beam used in transmission @imranmajechosounder_raw_echogram
: not sure what this corresponds to @imranmaj
Coordinates:
time1
: this will be the combined ping_time from all modes
Data variables:
sound_speed_indicative
temperature
pressure
Coordinates
time1
: this will be the combined ping_time from all modes
Data variables:
heading
pitch
roll
tilt
: is there such a field defined in the spec sheet? I didn't see any in the example files @imranmaj
Coordinates:
time1
: this will be the combined ping_time from all modesxyz
: coordinate formagnetometer_raw
Data variable:
magnetometer_raw