stouputils.data_science.range_tuple module#

This module contains the RangeTuple class, which provides a named tuple for range parameters.

This class contains methods for:

  • Iterating over range values

  • Accessing range values by index

  • Slicing range values

  • Converting to string representation

class _RangeTupleBase(mini: float | None, maxi: float | None, step: float | None, default: float | None)[source]#

Bases: NamedTuple

Base class for RangeTuple

mini: float | None#

The minimum value (inclusive) (can be None if default is set)

maxi: float | None#

The maximum value (exclusive) (can be None if default is set)

step: float | None#

The step value between elements (can be None if default is set)

default: float | None#

Optional default value, usually middle of range

_asdict()#

Return a new dict which maps field names to their values.

_field_defaults = {}#
_fields = ('mini', 'maxi', 'step', 'default')#
classmethod _make(iterable)#

Make a new _RangeTupleBase object from a sequence or iterable

_replace(**kwds)#

Return a new _RangeTupleBase object replacing specified fields with new values

class RangeTuple(mini: float | None = None, maxi: float | None = None, step: float | None = 1.0, default: float | None = None)[source]#

Bases: _RangeTupleBase

A named tuple containing range parameters.

mini#

The minimum value (inclusive) (can be None if default is set)

Type:

float

maxi#

The maximum value (exclusive) (can be None if default is set)

Type:

float

step#

The step value between elements (can be None if default is set)

Type:

float

default#

Optional default value, usually middle of range

Type:

float|None

Examples

>>> r = RangeTuple(mini=0.0, maxi=1.0, step=0.3)
>>> print(r)
mini=0.0, maxi=1.0, step=0.3, default=None
>>> [int(x*10) for x in r]
[0, 3, 6, 9]
>>> len(r)
4
>>> r[0]
0.0
>>> r[100], r[99]       # High indexes will bypass the maximum value
(30.0, 29.7)
>>> r[1:3]
[0.3, 0.6]
>>> round(r[-2], 1)
0.6
>>> r = RangeTuple()
Traceback (most recent call last):
        ...
ValueError: RangeTuple parameters must not be None
random() float[source]#

Return a random value from the range. If the range is not initialized, return the default value.

Returns:

Random value from the range

Return type:

float

Examples

>>> r = RangeTuple(mini=0.0, maxi=1.0, step=1.0)
>>> 0.0 <= r.random() <= 1.0
True
>>> r = RangeTuple(default=1.0)
>>> r.random()
1.0