argamak/axis
Types
The elements that comprise a Space
.
Except for Infer
, every Axis
has a size
corresponding to the number of
values that fit along that Axis
when a Tensor
is put into a Space
containing that Axis
.
An Axis
can be given a unique name
using the Axis
or Infer
constructors. Single-letter constructors are also provided for convenience.
The special Infer
constructor can be used once per Space
. It will be
replaced and have its size
computed when a Tensor
is put into that
Space
.
pub type Axis {
Axis(name: String, size: Int)
Infer(name: String)
A(size: Int)
B(size: Int)
C(size: Int)
D(size: Int)
E(size: Int)
F(size: Int)
G(size: Int)
H(size: Int)
I(size: Int)
J(size: Int)
K(size: Int)
L(size: Int)
M(size: Int)
N(size: Int)
O(size: Int)
P(size: Int)
Q(size: Int)
R(size: Int)
S(size: Int)
T(size: Int)
U(size: Int)
V(size: Int)
W(size: Int)
X(size: Int)
Y(size: Int)
Z(size: Int)
}
Constructors
-
Axis(name: String, size: Int)
-
Infer(name: String)
-
A(size: Int)
-
B(size: Int)
-
C(size: Int)
-
D(size: Int)
-
E(size: Int)
-
F(size: Int)
-
G(size: Int)
-
H(size: Int)
-
I(size: Int)
-
J(size: Int)
-
K(size: Int)
-
L(size: Int)
-
M(size: Int)
-
N(size: Int)
-
O(size: Int)
-
P(size: Int)
-
Q(size: Int)
-
R(size: Int)
-
S(size: Int)
-
T(size: Int)
-
U(size: Int)
-
V(size: Int)
-
W(size: Int)
-
X(size: Int)
-
Y(size: Int)
-
Z(size: Int)
Functions
pub fn name(x: Axis) -> String
Returns the name of a given Axis
.
Examples
> name(A(1))
"A"
> name(Axis(name: "Sparkle", size: 99))
"Sparkle"
> name(Infer("Silver"))
"Silver"
pub fn rename(x: Axis, name: String) -> Axis
Renames the given Axis
, retaining its size
.
If an Axis
is renamed to a single capital letter (from "A"
to "Z"
inclusive), the single-letter convenience constructor will be used for the
new Axis
.
Examples
> let x = A(1)
> rename(x, "B")
B(1)
> let x = Axis("Thing", 3)
> rename(x, "Y")
Y(3)
> let x = Axis(name: "Sparkle", size: 99)
> rename(x, "Shine")
Axis("Shine", 99)
> let x = Infer("Silver")
> rename(x, "Gold")
Infer("Gold")
pub fn resize(x: Axis, size: Int) -> Axis
Changes the size
of the given Axis
.
Resizing an Infer
returns an Axis
record that will no longer have its
size
automatically computed.
Examples
> let x = A(1)
> resize(x, 3)
A(3)
> let x = Axis("Y", 2)
> resize(x, 3)
Y(3)
> let x = Axis(name: "Sparkle", size: 99)
> resize(x, 42)
Axis("Sparkle", 42)
> let x = Infer("A")
> resize(x, 1)
A(1)