Skip to content

capturegraph.scheduling.distance.scalar #

Scalar Distance - Simple Numeric Distance#

Measures the absolute difference between two scalar values.

scalar(sigma=1.0) #

Create a simple scalar distance function.

Computes the absolute difference between two values, normalized by sigma.

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
Callable[[float, float], float]

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

Example
import capturegraph.scheduling as cgsh

# Temperature distance (5°C difference is "significant")
dist_fn = cgsh.distance.scalar(sigma=5.0)

# Use with combine for custom attributes
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,
) -> Callable[[float, float], float]:
    """Create a simple scalar distance function.

    Computes the absolute difference between two values, normalized by sigma.

    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

        # Temperature distance (5°C difference is "significant")
        dist_fn = cgsh.distance.scalar(sigma=5.0)

        # Use with combine for custom attributes
        combined = cgsh.distance.combine(
            temperature=cgsh.distance.scalar(sigma=5.0),
            humidity=cgsh.distance.scalar(sigma=0.2),
        )
        ```
    """

    def distance_fn(value_a: float, value_b: float) -> float:
        return np.abs(value_a - value_b) / sigma

    return distance_fn