📇 Glossary#
Mathematical & Geometric Foundations#
- Point#
An element of a smooth manifold; represents a location in geometric space. Points have affine role semantics: the sum of a point and a displacement yields a point. See spec.md § Points.
- Chart#
A local coordinate system assigning real-number coordinates to points on a manifold. Defines component names, ordering, dimensionality, and the mapping between geometric points and ℝⁿ. Example: Cartesian (x, y, z) or Spherical (r, θ, φ) charts on the same 3D manifold. See spec.md § Charts.
- Position#
Synonym for a point on a manifold when emphasizing its role as a location. Often represented by position vectors in a given chart, e.g.,
CartesianPos3D(x, y, z).- Manifold#
A topological space that locally resembles ℝⁿ; the underlying geometric domain supporting coordinate systems. Most application domains use smooth manifolds (differentiable structure). See spec.md § Manifolds.
- Embedding#
A smooth injection placing one manifold as a submanifold inside another; used for coordinate transformations across different geometric spaces. See spec.md § Embeddings.
- Atlas#
A collection of compatible charts that together cover an entire manifold, enabling global coordinates.
- Transition Map#
A smooth, invertible function relating coordinates in two different charts on the same manifold. Enables smooth transformation between coordinate systems. Also called chart transition function. See spec.md § Coordinate Transitions.
- Representation#
An abstract triple (GeometricKind, Basis, SemanticKind) describing what data means, independent of coordinate system. Different representations can encode the same geometric object. See spec.md § Representations and Conventions § Representation Conversion.
- Geometric Kind#
The category of geometric object (position, velocity, acceleration, etc.); determines time-derivative relationships. Example:
Positionhas time derivativeVelocity.- Basis#
A choice of coordinate axes or reference frame; affects numerical values of components. Example: Cartesian vs Spherical basis on the same manifold.
- Semantic Kind#
The role and interpretation of data independent of coordinates. Examples: position (affine), displacement (tangent), velocity (tangent). See Role concepts.
Semantic Roles & Transformations#
- Vector Transformation#
Changing vector components under a coordinate change while preserving role semantics; implemented via
cconvert. Positions and velocities transform differently due to their different roles. See Conventions § Vector Transformation.- Representation Conversion#
Changing an object’s representation (its form) without changing underlying data; implemented via
cconvert. Example: convertingDistancefrom meters to kilometers, orAnglefrom radians to degrees. See Conventions § Representation Conversion.
JAX Integration & Type System#
- PyTree#
JAX abstraction for nested, tree-structured data; enables tracing through JAX transformations (jit, vmap, grad). All
coordinaxobjects are registered as PyTrees. See Conventions § PyTree Registration.- Quax#
Multiple-dispatch layer enabling custom array-like types to work seamlessly with JAX functions. Coordinates with
ArrayValueprotocol. See Conventions § Quax & ArrayValue.- ArrayValue#
Quax protocol for custom array-like types (e.g.,
Distance,Angle,Point). Enables JIT compilation and JAX operations on custom types. See Conventions § Quax & ArrayValue.- Type-Safe#
Operations preserve and check type information at runtime;
coordinaxuses type hints andbeartypefor runtime validation via Quax dispatch.- JIT Compilation#
JAX transformation converting Python functions to optimized compiled code. Requires static typing information for dispatch; works best with scalar operations. See Conventions § Scalar-First Design.
- vmap#
JAX’s vectorized map transformation; maps scalar functions over batches. Preferred over explicit batching loops in
coordinax. See Conventions § Scalar-First Design.- grad#
JAX’s gradient transformation; computes derivatives for optimization or sensitivity analysis.
- Immutable#
Objects don’t change state after creation; operations return new objects. Required for JAX compatibility. Use
dataclassish.replace()for updates. See Conventions § Immutability & Functional Design.- Static Type#
Type known at JAX trace time; used for Quax dispatch before computation is traced. Contrasts with array values (traced).
Design Patterns & Organization#
- Abstract-Final Pattern#
Design pattern separating interface (abstract classes) from implementation (final concrete classes). Abstract classes use
@abc.abstractmethod; concrete classes use@final. One inheritance level only. Avoids fragile base class problem. See Conventions § Abstract-Final Pattern and Equinox documentation.- Final (Class)#
Class marked with
@finaldecorator indicating it shouldn’t be subclassed further; paired with an abstract base class. Example:@final class CartesianPos3D(AbstractChart).- Concrete Class#
Instantiable class implementing an abstract interface; marked with
@finalto prevent further subclassing. See Abstract-Final Pattern.- Multiple Dispatch#
Programming paradigm where the function/method to call is determined by the runtime types of ALL arguments (not just the first). Enables
coordinaxto seamlessly handle mixed types. See Conventions § Multiple Dispatch and Wikipedia.- Dispatch#
Runtime type-based routing of function calls; core mechanism in
coordinaxvia plum-dispatch. Use.methodsattribute on dispatched functions to discover all registered implementations. See Conventions § Multiple Dispatch.- Functional API#
Primary API design philosophy: pure functions taking arguments and returning new objects without mutations. Examples:
pt_map(chart_from, chart_to, point),cconvert(chart, vector). See Conventions § Functional vs Object-Oriented APIs.- OOP API#
Object-oriented convenience layer wrapping functional APIs; methods call underlying functions. Example:
point.transition_to(chart)wrapspt_map(). See Conventions § Functional vs Object-Oriented APIs.- Scalar-First Design#
Design philosophy where functions operate on scalar (0-dimensional) vectors; users apply
jax.vmapfor batching. Maximizes JIT performance and flexibility. See Conventions § Scalar-First Design.- Module Organization#
coordinaxstructure: user-facing exports inmain, implementation in alphabetic submodules (angles, charts, distances, frames, manifolds, representations, vectors), internals in_src/. See Conventions § Module Organization.- Promotion#
Implicit conversion of simpler types to richer types in binary operations. Example: scalar + Distance = Distance. Handled via multiple dispatch. See Conventions § Promotion Pattern.
- Type Annotation#
Hint indicating expected type for function arguments; used for runtime dispatch via Quax and validation via
beartype.
Domain-Specific: Astronomy & Physics#
- Parallax#
Angular distance proxy in astronomy; inverse of distance in parsecs. Used to measure stellar distances via baseline parallax angles. Parallax of 1 arcsecond → distance of 1 parsec.
- Distance Modulus#
Magnitude-space distance representation (m - M) for astronomical distances; logarithmic scale. Useful for luminosity distance calculations.
API & Implementation Details#
- from_ Constructor#
Flexible constructor method accepting diverse input types. Example:
Distance.from_(10 * u.m),Distance.from_((10, "m")),Distance.from_(parallax_value). More flexible than overloading__init__.- cconvert Function#
API for converting object representation. Usage:
cconvert(target_representation, current_object). Returns semantically equivalent object in new form. See Conventions § Representation Conversion.- Chart Instance#
Lowercase instance of a chart for convenience, e.g.,
cart3d(instance ofCartesian3D),sph3d(instance ofSpherical3D). See Conventions § Pre-Defined Chart Instances.- Chart Class#
Uppercase class defining a coordinate system template, e.g.,
Cartesian3D,Spherical3D. Instantiate to create specific charts.- Type Hint#
Runtime type annotation; used for multiple dispatch and runtime validation. Doesn’t affect performance; aids readability and IDE support.