Multifrequency backscatter classification

This operator calculates the normal deviate (z-score) for walleye pollock (Theragra chalcogramma) as detailed in De Robertis et al. 2010 from three Sv inputs with the frequencies 38kHz, 120kHz, and 200kHz respectively.

See also: dB difference Z score technique.

List of operands

Operand 1 - Single beam Sv (38 kHz)

Operand 2 - Single beam Sv (120 kHz)

Operand 3 - Single beam Sv (200 kHz)

See also: the Operator.eval method.

Code

"""
Echoview Code Operator source file
========================================================================

Created by Echoview(R) 10.0.218 on Monday, 29 April 2019

See the Echoview help file for Code operator documentation and
examples.

NumPy User Guide: https://docs.scipy.org/doc/numpy/user/
NumPy Reference: https://docs.scipy.org/doc/numpy/Reference/
SciPy Reference Guide: https://docs.scipy.org/doc/scipy/Reference/

Echoview(R) is a registered trademark of Echoview Software Pty Ltd.
"""

# Authorship information
__author__ = "Echoview Software Pty Ltd. 2019."
__disclaimer__ = (
    "This example code is provided AS IS, without warranty of any "
    "kind, express or implied, including but not limited to the "
    "warranties of merchantability, fitness for a particular purpose "
    "and noninfringement. In no event shall Echoview Software Pty Ltd "
    "be liable for any claim, damages or other liability, arising "
    "from, out of or in connection with the use of this example code."
)
__version__ = "1.0"

# System Imports
from typing import List

# Libraries
from echoview import OperatorBase, MeasurementType, OperandInput, Error
import numpy as np


class Operator(OperatorBase):
    """
    Normal derivative (z-score)
    ====================================================================

    Calculates the normal derivative (z-score) for walleye pollock
    (Theragra chalcogramma)

    Operands
    ---------------------

    * Operand 1 - Single beam Sv (38kHz)
    * Operand 2 - Single beam Sv (120kHz)
    * Operand 3 - Single beam Sv (200kHz)

    Note that all operands must have the same ping timings and geometry.
    This can be accomplished using *Match ping times* and
    *Match geometry* virtual variables.

    Notes
    --------------------------

    This operator calculates the normal deviate (z-score) for walleye
    pollock (Theragra chalcogramma) as detailed in De Robertis et al.
    2010 from three Sv inputs with the frequencies 38kHz, 120kHz, and
    200kHz respectively.
    """

    def result_type(self, input_types):
        """Returns single beam magnitude (linear) as the result type."""

        return MeasurementType.SINGLE_BEAM_LINEAR

    def eval(self, inputs):
        """
        Calculates the normal deviate (z-score) for walleye pollock
        for the specified input pings.
        """

        input_0_data = inputs[0].measurement.data
        input_1_data = inputs[1].measurement.data
        input_2_data = inputs[2].measurement.data

        return (np.abs((input_1_data-input_0_data-0.2)/2.6) +
                np.abs((input_2_data-input_1_data-1.2)/1.8) +
                np.abs((input_2_data-input_0_data-1.9)/2.5))/3.0

See also

Code operator
About the Code operator
Using the Code operator