impulse_query_engine.model.series.points_in_time_series
PointsInTimeSeries class implementation
PointsInTimeSeries
class PointsInTimeSeries()
__init__
def __init__(tstarts: Sized,
values: Sized,
value_type: SeriesValueType = SeriesValueType.DOUBLE)
Initialize the PointsInTimeSeries object.
A PointsInTimeSeries associates a value to each timestamp. Unlike a SampleSeries, a value is only defined at its timestamp and is not considered valid in between consecutive timestamps.
Arguments:
tstarts(Sized): Array-like of time points.values(Sized): Array-like of values, one per time point.value_type(SeriesValueType): The value data type (defaultDOUBLE). Validated against values for a non-empty series; carried explicitly so an empty series stays typed correctly (there are no values to infer from).STRINGseries support only sampling and equality — see the@_numeric_onlymethods.
value_type
def value_type() -> SeriesValueType
This series' value data type (numeric DOUBLE or STRING).
is_string
def is_string() -> bool
Whether this series carries string (rather than numeric) values.
dtype
def dtype() -> T.DataType
Returns the Spark data type for PointsInTimeSeries.
For numeric values the element is a homogeneous [tstart, value] double
pair (ArrayType(ArrayType(DoubleType))). String-valued series cannot use
that homogeneous nested array, so their element is a (tstart, value)
struct with a double timestamp and a string value.
Returns:
pyspark.sql.types.ArrayType: Spark ArrayType matching get_data's shape for this series' value type.
get_data
def get_data() -> list
Returns the series as a list of [tstart, value] pairs.
For numeric values this is a list of two-element double lists. For string
values, column_stack would coerce the timestamps to strings, so the
pairs are built explicitly as [float(tstart), str(value)] — matching the
struct element type declared by :meth:dtype.
Returns:
list: List of [tstart, value] pairs.
__len__
def __len__() -> int
Returns the number of points in the series.
Returns:
int: Number of points.
start_time
def start_time() -> FloatOrNaN
Returns the time of the first point.
Returns:
float: Start time or NaN if empty.
end_time
def end_time() -> FloatOrNaN
Returns the time of the last point.
Returns:
float: End time or NaN if empty.
to_points_in_time
def to_points_in_time() -> PointsInTime
Returns the timestamps of this series as a PointsInTime object (dropping the values).
Returns:
PointsInTime: Points in time with this series' timestamps.
plane_sweep
def plane_sweep(
points, other: SampleSeries | Intervals | PointsInTime | PointsInTimeSeries
) -> list[tuple[int, int]]
Find overlaps between a point-like series and another series/interval object.
Arguments:
points(PointsInTimeSeries or PointsInTime): Point-like object exposing atstartsattribute.other(SampleSeries, Intervals, PointsInTime, or PointsInTimeSeries): Object to find overlaps with. Interval-like objects (SampleSeries, Intervals) match points contained in their half-open intervals; point-like objects (PointsInTime, PointsInTimeSeries) match points with equal timestamps.
Raises:
NotImplementedError: Ifotheris not one of the supported types.
Returns:
list of tuple: (points_idx, other_idx) index pairs indicating overlaps.
synchronized
def synchronized(
other: SampleSeries | PointsInTimeSeries
) -> tuple[PointsInTimeSeries, PointsInTimeSeries]
Synchronize this point series with a value-carrying series.
The result grid is the subset of this series' timestamps that overlap other: points
contained in one of other's intervals (when other is a SampleSeries) or points with
a matching timestamp (when other is a PointsInTimeSeries). Out-of-overlap points are
dropped. Both returned series share the same timestamps.
Arguments:
other(SampleSeries or PointsInTimeSeries): Value-carrying series to synchronize with.
Raises:
NotImplementedError: Ifotherdoes not carry values (Intervals, PointsInTime).
Returns:
tuple of PointsInTimeSeries: Synchronized (this series, other series).
synchronized_all
def synchronized_all(
others: list[SampleSeries | PointsInTimeSeries]
) -> tuple[PointsInTimeSeries, ...]
Synchronize this point series with multiple value-carrying series.
The common grid is narrowed against each operand in turn; all previously synchronized series are re-aligned to the narrowed grid.
Arguments:
others(list of SampleSeries or PointsInTimeSeries): Series to synchronize with.
Raises:
NotImplementedError: If any operand does not carry values (Intervals, PointsInTime).
Returns:
tuple of PointsInTimeSeries: Synchronized series, one per input series (this series first).
__add__
def __add__(
other: float | SampleSeries | PointsInTimeSeries
) -> PointsInTimeSeries
Add another series or scalar to this series.
__radd__
def __radd__(
other: float | SampleSeries | PointsInTimeSeries
) -> PointsInTimeSeries
Add this series to another series or scalar (reversed operands).
__sub__
def __sub__(
other: float | SampleSeries | PointsInTimeSeries
) -> PointsInTimeSeries
Subtract another series or scalar from this series.
__rsub__
def __rsub__(
other: float | SampleSeries | PointsInTimeSeries
) -> PointsInTimeSeries
Subtract this series from another series or scalar (reversed operands).
__mul__
def __mul__(
other: float | SampleSeries | PointsInTimeSeries
) -> PointsInTimeSeries
Multiply this series by another series or scalar.
__rmul__
def __rmul__(
other: float | SampleSeries | PointsInTimeSeries
) -> PointsInTimeSeries
Multiply another series or scalar by this series (reversed operands).
__truediv__
def __truediv__(
other: float | SampleSeries | PointsInTimeSeries
) -> PointsInTimeSeries
Divide this series by another series or scalar.
__rtruediv__
def __rtruediv__(
other: float | SampleSeries | PointsInTimeSeries
) -> PointsInTimeSeries
Divide another series or scalar by this series (reversed operands).
__gt__
def __gt__(other: float | SampleSeries | PointsInTimeSeries) -> PointsInTime
Return points where this series is greater than another.
__ge__
def __ge__(other: float | SampleSeries | PointsInTimeSeries) -> PointsInTime
Return points where this series is greater than or equal to another.
__lt__
def __lt__(other: float | SampleSeries | PointsInTimeSeries) -> PointsInTime
Return points where this series is less than another.
__le__
def __le__(other: float | SampleSeries | PointsInTimeSeries) -> PointsInTime
Return points where this series is less than or equal to another.
__eq__
def __eq__(other: float | SampleSeries | PointsInTimeSeries) -> PointsInTime
Return points where this series is equal to another.
__ne__
def __ne__(other: float | SampleSeries | PointsInTimeSeries) -> PointsInTime
Return points where this series is not equal to another.
count
def count() -> int
Returns the number of points in the series.
Returns:
int: Number of points.
sum
def sum() -> FloatOrNaN
Returns the sum of the values.
Returns:
float: Sum of values, or NaN if empty.
mean
def mean() -> FloatOrNaN
Returns the mean of the values.
Returns:
float: Mean of values, or NaN if empty.
min
def min() -> FloatOrNaN
Returns the minimum value.
Returns:
float: Minimum value, or NaN if empty.
max
def max() -> FloatOrNaN
Returns the maximum value.
Returns:
float: Maximum value, or NaN if empty.
__str__
def __str__() -> str
Returns a string representation of the PointsInTimeSeries.
Returns:
str: String representation.
__repr__
def __repr__() -> str
Returns a string representation for debugging.
Returns:
str: String representation.
empty
def empty(
value_type: SeriesValueType = SeriesValueType.DOUBLE
) -> PointsInTimeSeries
Returns an empty PointsInTimeSeries of the given value type.
Arguments:
value_type(SeriesValueType): The value data type of the empty series (defaultDOUBLE).
Returns:
PointsInTimeSeries: Empty PointsInTimeSeries of value_type.