suboptimumg.track.models#

class suboptimumg.track.models.ArcData[source]#

Bases: BaseModel

Data model for arc geometry. Stores parameters needed to render an arc segment of a track.

Fields#

Field

Type

Required

Default

angle

float

Yes

center

tuple[float, float]

Yes

height

float

Yes

n_points

int

Yes

theta1

float

Yes

theta1_original

float

Yes

theta2

float

Yes

theta2_original

float

Yes

width

float

Yes

Parameters:
  • center (tuple[float, float])

  • width (float)

  • height (float)

  • angle (float)

  • theta1 (float)

  • theta2 (float)

  • theta1_original (float)

  • theta2_original (float)

  • n_points (int)

angle: float#
center: tuple[float, float]#
height: float#
n_points: int#
theta1: float#
theta1_original: float#
theta2: float#
theta2_original: float#
width: float#
class suboptimumg.track.models.ContinuousTrackData[source]#

Bases: BaseModel

Serializable data for a continuous (B-spline based) Track.

Fields#

Field

Type

Required

Default

cumulative_dist

NDArray[float64]

Yes

distance_step

float

Yes

dx

NDArray[float64]

Yes

radius

NDArray[float64]

Yes

seed_idx

NDArray[int32]

Yes

tck

tuple[NDArray[float64], list[NDArray[float64]], int]

Yes

x_m

NDArray[float64]

Yes

y_m

NDArray[float64]

Yes

Parameters:
  • dx (NDArray[float64])

  • radius (NDArray[float64])

  • cumulative_dist (NDArray[float64])

  • x_m (NDArray[float64])

  • y_m (NDArray[float64])

  • distance_step (float)

  • tck (tuple[NDArray[float64], list[NDArray[float64]], int])

  • seed_idx (NDArray[int32])

cumulative_dist: NDArray[np.float64]#
distance_step: float#
dx: NDArray[np.float64]#
radius: NDArray[np.float64]#
seed_idx: NDArray[np.int32]#
tck: tuple[NDArray[np.float64], list[NDArray[np.float64]], int]#
x_m: NDArray[np.float64]#
y_m: NDArray[np.float64]#
class suboptimumg.track.models.CornerListInput[source]#

Bases: BaseModel

Strongly-typed class defining a Track based on corners.

Fields#

Field

Type

Required

Default

clean_corners

bool

Yes

corners

list[Annotated[list[float], FieldInfo(annotation=NoneType, required=True, metadata=[MinLen(min_length=2), MaxLen(max_length=2)])]]

Yes

distance_step

float

Yes

ideal_rotation_angle

float

Yes

shorten

float

Yes

Validators#

Validator

Mode

Fields

wrap_single_corner

before

corners

Parameters:
  • corners (list[Annotated[list[float], FieldInfo(annotation=NoneType, required=True, metadata=[MinLen(min_length=2), MaxLen(max_length=2)])]])

  • shorten (float)

  • distance_step (float)

  • clean_corners (bool)

  • ideal_rotation_angle (float)

clean_corners: bool#
corners: list[Annotated[list[float], Field(min_length=2, max_length=2)]]#
distance_step: float#
ideal_rotation_angle: float#
shorten: float#
classmethod wrap_single_corner(v)[source]#

Nest a single unnested corner into a one-element list of corners.

Parameters:

v (object) – Raw input before validation: either one corner [radius, length], or a list of corners.

Returns:

The corners, guaranteed to be a list of [radius, length] pairs.

Return type:

object

class suboptimumg.track.models.DiscreteTrackData[source]#

Bases: BaseModel

Serializable data for a discrete (corner based) Track.

Fields#

Field

Type

Required

Default

arcs

list[ArcData]

Yes

cumulative_dist

NDArray[float64]

Yes

distance_step

float

Yes

dx

NDArray[float64]

Yes

original_corners

list[list[float]]

Yes

radius

NDArray[float64]

Yes

seed_idx

NDArray[int32]

Yes

x_m

NDArray[float64]

Yes

y_m

NDArray[float64]

Yes

Parameters:
  • dx (NDArray[float64])

  • radius (NDArray[float64])

  • cumulative_dist (NDArray[float64])

  • x_m (NDArray[float64])

  • y_m (NDArray[float64])

  • distance_step (float)

  • original_corners (list[list[float]])

  • arcs (list[ArcData])

  • seed_idx (NDArray[int32])

arcs: list[ArcData]#
cumulative_dist: NDArray[np.float64]#
distance_step: float#
dx: NDArray[np.float64]#
original_corners: list[list[float]]#
radius: NDArray[np.float64]#
seed_idx: NDArray[np.int32]#
x_m: NDArray[np.float64]#
y_m: NDArray[np.float64]#
class suboptimumg.track.models.PerdaLogInput[source]#

Bases: BaseModel

Input for building a Track from a PERDA SingleRunData lap segment.

Fields#

Field

Type

Required

Default

Constraints

cutoff_freq_per_meter

float

No

0.18

gt=0.0

data

SingleRunData

Yes

distance_step

float

No

0.1

gt=0.0

filter_order

int

No

4

ge=1

max_radius

float

No

300.0

gt=0.0

Parameters:
  • data (SingleRunData)

  • distance_step (Annotated[float, Gt(gt=0)])

  • cutoff_freq_per_meter (Annotated[float, Gt(gt=0)])

  • max_radius (Annotated[float, Gt(gt=0)])

  • filter_order (Annotated[int, Ge(ge=1)])

cutoff_freq_per_meter: float#
data: SingleRunData#
distance_step: float#
filter_order: int#
max_radius: float#