Skip to content

scalar

scalar #

Absolute difference between two numbers.

ScalarDistanceFunction #

Bases: DistanceFunction[float]

Absolute numeric difference, normalized by sigma.

Source code in capturegraph-lib/capturegraph/scheduling/distance/scalar.py
class ScalarDistanceFunction(DistanceFunction[float]):
    """Absolute numeric difference, normalized by ``sigma``."""

    def __init__(self, sigma: float = 1.0) -> None:
        """Normalize the absolute difference by ``sigma``."""
        self.sigma = sigma

    def extract(self, values: cg.Array) -> np.ndarray:
        """Each value as a single feature column."""
        return numeric(values)

    def pairwise(self, features_a: np.ndarray, features_b: np.ndarray) -> np.ndarray:
        """The absolute differences between two sets of values."""
        return np.abs(features_a[:, 0][:, None] - features_b[:, 0][None, :]) / self.sigma

__init__(sigma=1.0) #

Normalize the absolute difference by sigma.

Source code in capturegraph-lib/capturegraph/scheduling/distance/scalar.py
def __init__(self, sigma: float = 1.0) -> None:
    """Normalize the absolute difference by ``sigma``."""
    self.sigma = sigma

extract(values) #

Each value as a single feature column.

Source code in capturegraph-lib/capturegraph/scheduling/distance/scalar.py
def extract(self, values: cg.Array) -> np.ndarray:
    """Each value as a single feature column."""
    return numeric(values)

pairwise(features_a, features_b) #

The absolute differences between two sets of values.

Source code in capturegraph-lib/capturegraph/scheduling/distance/scalar.py
def pairwise(self, features_a: np.ndarray, features_b: np.ndarray) -> np.ndarray:
    """The absolute differences between two sets of values."""
    return np.abs(features_a[:, 0][:, None] - features_b[:, 0][None, :]) / self.sigma

scalar(sigma=1.0) #

Create a simple scalar distance function.

Parameters:

Name Type Description Default
sigma float

Normalization factor. Values within sigma of each other have distance < 1.0. Default is 1.0.

1.0

Returns:

Type Description
ScalarDistanceFunction

A distance function (value_a, value_b) -> float.

Example
import capturegraph.scheduling as cgsh

combined = cgsh.distance.combine(
    temperature=cgsh.distance.scalar(sigma=5.0),
    humidity=cgsh.distance.scalar(sigma=0.2),
)
Source code in capturegraph-lib/capturegraph/scheduling/distance/scalar.py
def scalar(sigma: float = 1.0) -> ScalarDistanceFunction:
    """Create a simple scalar distance function.

    Args:
        sigma: Normalization factor. Values within `sigma` of each other
            have distance < 1.0. Default is 1.0.

    Returns:
        A distance function `(value_a, value_b) -> float`.

    Example:
        ```python
        import capturegraph.scheduling as cgsh

        combined = cgsh.distance.combine(
            temperature=cgsh.distance.scalar(sigma=5.0),
            humidity=cgsh.distance.scalar(sigma=0.2),
        )
        ```
    """
    return ScalarDistanceFunction(sigma)