SFI.bases.linear module

SFI.bases.linear.V(dim, *, label=None)[source]

Identity in v with an explicit feature axis.

Input : v ∈ R^dim (provided via keyword v=…) Output: Y ∈ R^{dim×1}

Parameters:
  • dim (int)

  • label (str | None)

Return type:

Basis

SFI.bases.linear.X(dim, *, label=None)[source]

Identity in x with an explicit feature axis.

Input : x ∈ R^dim Output: Y ∈ R^{dim×1}

Parameters:
  • dim (int)

  • label (str | None)

Return type:

Basis

SFI.bases.linear.frame(dim, *, velocity=False, x_labels=None, v_labels=None, e_labels=None)[source]

Default compositional frame: constant 1 + coordinate scalars + unit axes.

Overdamped (velocity=False):

one, *x_components(dim), *unit_axes(dim)

Underdamped (velocity=True):

one, *x_components(dim), *v_components(dim), *unit_axes(dim)

Examples

>>> one, x, y, z, ex, ey, ez = frame(3)
>>> one, x, y, z, vx, vy, vz, ex, ey, ez = frame(3, velocity=True)

Custom labels (useful for dim > 4):

>>> bundle = frame(5, x_labels=["q0","q1","q2","q3","q4"])
Parameters:
  • dim (int)

  • velocity (bool)

  • x_labels (Sequence[str] | None)

  • v_labels (Sequence[str] | None)

  • e_labels (Sequence[str] | None)

Return type:

tuple[Basis, …]

SFI.bases.linear.linear_basis(dim, *, include_x=True, include_v=False)[source]

Degree-1 monomial basis in (x, v).

Parameters:
  • dim (int) – Spatial dimension.

  • include_x (bool) – Include linear x terms.

  • include_v (bool) – Include linear v terms.

Returns:

Rank-1 (vector) basis concatenating requested degree-1 monomials.

Return type:

Basis

SFI.bases.linear.unit_axes(dim, *, labels=None)[source]

Unpack unit-vector bases (one per spatial axis).

>>> ex, ey, ez = unit_axes(3)

Each returned basis is rank-1 with a single feature carrying the unit vector along that axis. Labels default to ("ex", "ey", "ez", "ew") for dim <= 4 and ("e0", "e1", ...) otherwise.

Parameters:
  • dim (int)

  • labels (Sequence[str] | None)

Return type:

tuple[Basis, …]

SFI.bases.linear.v_components(dim, *, labels=None)[source]

Unpack scalar v-coordinate bases, one per axis.

>>> vx, vy, vz = v_components(3)
Parameters:
  • dim (int)

  • labels (Sequence[str] | None)

Return type:

tuple[Basis, …]

SFI.bases.linear.v_coordinate(index, *, dim, label=None)[source]

Single v-coordinate as a scalar feature.

Input : v ∈ R^dim (provided via keyword v=…) Return: scalar (); BasisLeaf will auto-insert feature axis → (1,)

Parameters:
  • index (int)

  • dim (int)

  • label (str | None)

Return type:

Basis

SFI.bases.linear.v_coordinates(indices, *, dim, labels=None)[source]

Multiple v-coordinates as scalar features.

Input : v ∈ R^dim (provided via keyword v=…) Output: y ∈ R^{k} with k=len(indices)

Parameters:
  • indices (Sequence[int])

  • dim (int)

  • labels (Sequence[str] | None)

Return type:

Basis

SFI.bases.linear.x_components(dim, *, labels=None)[source]

Unpack scalar x-coordinate bases, one per axis.

>>> x, y, z = x_components(3)

Each returned basis is rank-0 with one feature. Labels default to ("x", "y", "z", "w") for dim <= 4 and ("x0", "x1", ...) otherwise.

Parameters:
  • dim (int)

  • labels (Sequence[str] | None)

Return type:

tuple[Basis, …]

SFI.bases.linear.x_coordinate(index, *, dim, label=None)[source]

Single x-coordinate as a scalar feature.

Input : x ∈ R^dim Return: scalar (); BasisLeaf will auto-insert feature axis → (1,)

Parameters:
  • index (int)

  • dim (int)

  • label (str | None)

Return type:

Basis

SFI.bases.linear.x_coordinates(indices, *, dim, labels=None)[source]

Multiple x-coordinates as scalar features.

Input : x ∈ R^dim Output: y ∈ R^{k} with k=len(indices)

Parameters:
  • indices (Sequence[int])

  • dim (int)

  • labels (Sequence[str] | None)

Return type:

Basis