OSOceanAcoustics / echopype

Enabling interoperability and scalability in ocean sonar data analysis
https://echopype.readthedocs.io/
Apache License 2.0
94 stars 73 forks source link

Remove `beam` dimension in EK80 angle-related calibration parameters #978

Closed emiliom closed 1 year ago

emiliom commented 1 year ago

This is a a subset of #684 that would be very helpful to address in milestone 0.7.0.

EK80 has >1 length in the beam dimension, but these beams are actually within the same transducer (channel). This extra beam dimension added to ensure compliance to the convention is adding confusion to the code and likely runtime memory needs.

See below for calibration parameters for EK80: https://github.com/OSOceanAcoustics/echopype/blob/f8082cac32bfbee2b21c62d266507491d221182d/echopype/calibrate/cal_params.py#L18-L31 Note that these stored values in the Beam_groupX or Vendor-specific group (if exist, some may not) are transducer-specific and therefore do not vary with beam or ping_time.

leewujung commented 1 year ago

@emiliom : I've updated the description above. Let me know if you have questions.

emiliom commented 1 year ago

EK80 has >1 length in the beam dimension, but these beams are actually within the same transducer (channel).

Note that these stored values in the Beam_groupX or Vendor-specific group (if exist, some may not) are transducer-specific and therefore do not vary with beam or ping_time.

@leewujung I'm trying to see if I understand. You're saying there are multiple beams within each transducer (channel), but the values of the variables you've listed are constant across beam (and ping_time), within each channel, right?

Do other EK80 variables that currently have a beam dimension vary across the beam dimension? The main such variables are backscatter_r and backscatter_i, but these also occur:

beam_direction_x
beam_direction_y
beam_direction_z
angle_alongship
angle_athwartship
frequency_start
frequency_end
emiliom commented 1 year ago

For reference: the addition of the beam dimension was originally discussed in #520

leewujung commented 1 year ago

@leewujung I'm trying to see if I understand. You're saying there are multiple beams within each transducer (channel), but the values of the variables you've listed are constant across beam (and ping_time), within each channel, right?

Yes, they are constant across beam and ping_time, within each channel.

Do other EK80 variables that currently have a beam dimension vary across the beam dimension? The main such variables are backscatter_r and backscatter_i, but these also occur:

beam_direction_x
beam_direction_y
beam_direction_z
angle_alongship
angle_athwartship
frequency_start
frequency_end

For EK80 complex samples (both backscatter_r and backscatter_i exist):

For EK80 power/angle samples (only backscatter_r exists)

leewujung commented 1 year ago

Addressed in #1056.