<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: google/cloud/aiplatform/v1/explanation_metadata.proto

namespace Google\Cloud\AIPlatform\V1\ExplanationMetadata\InputMetadata;

use UnexpectedValueException;

/**
 * Defines how a feature is encoded. Defaults to IDENTITY.
 *
 * Protobuf type <code>google.cloud.aiplatform.v1.ExplanationMetadata.InputMetadata.Encoding</code>
 */
class Encoding
{
    /**
     * Default value. This is the same as IDENTITY.
     *
     * Generated from protobuf enum <code>ENCODING_UNSPECIFIED = 0;</code>
     */
    const ENCODING_UNSPECIFIED = 0;
    /**
     * The tensor represents one feature.
     *
     * Generated from protobuf enum <code>IDENTITY = 1;</code>
     */
    const IDENTITY = 1;
    /**
     * The tensor represents a bag of features where each index maps to
     * a feature.
     * [InputMetadata.index_feature_mapping][google.cloud.aiplatform.v1.ExplanationMetadata.InputMetadata.index_feature_mapping]
     * must be provided for this encoding. For example:
     * ```
     * input = [27, 6.0, 150]
     * index_feature_mapping = ["age", "height", "weight"]
     * ```
     *
     * Generated from protobuf enum <code>BAG_OF_FEATURES = 2;</code>
     */
    const BAG_OF_FEATURES = 2;
    /**
     * The tensor represents a bag of features where each index maps to a
     * feature. Zero values in the tensor indicates feature being
     * non-existent.
     * [InputMetadata.index_feature_mapping][google.cloud.aiplatform.v1.ExplanationMetadata.InputMetadata.index_feature_mapping]
     * must be provided for this encoding. For example:
     * ```
     * input = [2, 0, 5, 0, 1]
     * index_feature_mapping = ["a", "b", "c", "d", "e"]
     * ```
     *
     * Generated from protobuf enum <code>BAG_OF_FEATURES_SPARSE = 3;</code>
     */
    const BAG_OF_FEATURES_SPARSE = 3;
    /**
     * The tensor is a list of binaries representing whether a feature exists
     * or not (1 indicates existence).
     * [InputMetadata.index_feature_mapping][google.cloud.aiplatform.v1.ExplanationMetadata.InputMetadata.index_feature_mapping]
     * must be provided for this encoding. For example:
     * ```
     * input = [1, 0, 1, 0, 1]
     * index_feature_mapping = ["a", "b", "c", "d", "e"]
     * ```
     *
     * Generated from protobuf enum <code>INDICATOR = 4;</code>
     */
    const INDICATOR = 4;
    /**
     * The tensor is encoded into a 1-dimensional array represented by an
     * encoded tensor.
     * [InputMetadata.encoded_tensor_name][google.cloud.aiplatform.v1.ExplanationMetadata.InputMetadata.encoded_tensor_name]
     * must be provided for this encoding. For example:
     * ```
     * input = ["This", "is", "a", "test", "."]
     * encoded = [0.1, 0.2, 0.3, 0.4, 0.5]
     * ```
     *
     * Generated from protobuf enum <code>COMBINED_EMBEDDING = 5;</code>
     */
    const COMBINED_EMBEDDING = 5;
    /**
     * Select this encoding when the input tensor is encoded into a
     * 2-dimensional array represented by an encoded tensor.
     * [InputMetadata.encoded_tensor_name][google.cloud.aiplatform.v1.ExplanationMetadata.InputMetadata.encoded_tensor_name]
     * must be provided for this encoding. The first dimension of the encoded
     * tensor's shape is the same as the input tensor's shape. For example:
     * ```
     * input = ["This", "is", "a", "test", "."]
     * encoded = [[0.1, 0.2, 0.3, 0.4, 0.5],
     *            [0.2, 0.1, 0.4, 0.3, 0.5],
     *            [0.5, 0.1, 0.3, 0.5, 0.4],
     *            [0.5, 0.3, 0.1, 0.2, 0.4],
     *            [0.4, 0.3, 0.2, 0.5, 0.1]]
     * ```
     *
     * Generated from protobuf enum <code>CONCAT_EMBEDDING = 6;</code>
     */
    const CONCAT_EMBEDDING = 6;

    private static $valueToName = [
        self::ENCODING_UNSPECIFIED => 'ENCODING_UNSPECIFIED',
        self::IDENTITY => 'IDENTITY',
        self::BAG_OF_FEATURES => 'BAG_OF_FEATURES',
        self::BAG_OF_FEATURES_SPARSE => 'BAG_OF_FEATURES_SPARSE',
        self::INDICATOR => 'INDICATOR',
        self::COMBINED_EMBEDDING => 'COMBINED_EMBEDDING',
        self::CONCAT_EMBEDDING => 'CONCAT_EMBEDDING',
    ];

    public static function name($value)
    {
        if (!isset(self::$valueToName[$value])) {
            throw new UnexpectedValueException(sprintf(
                    'Enum %s has no name defined for value %s', __CLASS__, $value));
        }
        return self::$valueToName[$value];
    }


    public static function value($name)
    {
        $const = __CLASS__ . '::' . strtoupper($name);
        if (!defined($const)) {
            throw new UnexpectedValueException(sprintf(
                    'Enum %s has no value defined for name %s', __CLASS__, $name));
        }
        return constant($const);
    }
}

