Releases: sunkmechie/AMSA
Releases · sunkmechie/AMSA
AMSA v0.2.3 : PGA/VGA support to classification print, CGA motor exp/log, Naive dual autodiff
AMSA v0.2.3 : PGA/VGA support to classification print, CGA motor exp/log, Naive dual autodiff
Latest
What's Changed
- Extend
.classify()to PGA and VGA by @sunkmechie in #55 - Add
motor_logandmotor_expto CGA - Add Naive dual based
autodiffmodule [incomplete] - Extend the experimental Robotics module by @sunkmechie in #57
- Robotics by @sunkmechie in #60
- Robo module made into it's own repo @sunkmechie
Full Changelog: v0.2.2...v0.2.3
AMSA v0.2.2 — CGA support, geometric classification, and examples
What's in 0.2.2
CGA geometry
Point, sphere, plane, translator, line, and circle constructors available as Algebra methods
alg = Algebra.cga3d()
p = alg.point([1.0, 2.0, 3.0])
s = alg.sphere([0.0, 0.0, 0.0], 5.0)
T = alg.translate([3.0, 0.0, 0.0])Extraction utilities recover Euclidean parameters from CGA multivectors, extract_point normalizes automatically so it works after versor actions:
coords = alg.extract_point(reflected)
center, radius = alg.extract_sphere(s)
normal, distance = alg.extract_plane(plane)Geometric classification
alg.classify(mv) returns an EntityInfo dataclass with structured geometric interpretation: kind, grades, nullity, normalization, invariants, geometric data, storage metadata, and warnings.
Recognizes 12 CGA entity types:
- normalized conformal point
- conformal point
- point at infinity
- dual sphere
- dual plane
- direct line
- direct circle
- translator candidate
- even versor
- generic blade
- zero multivector
- unknown multivector
Examples
4 new examples in examples/cga/:
- cga_primitives.py — all CGA primitives in cga3d and cga2d
- cga_point_distance_batch.py — batched pairwise distance via inner product
- cga_classify_overview.py — every primitive through classify()
- cga_versor_actions.py — translate and reflect with classify before/after
Documentation
- New docs/cga.rst covering constructors, extraction, and classification
- Main README overhauled with VGA/PGA/CGA quick start snippets and Supported Algebras table
- Added examples/inspection/README.md
- Fixed examples/robotics/README.md
- 3-pass CGA operations roadmap in plans.md
Verification
uv run ruff check
uv run mypy
Install
uv pip install amsa-ga
AMSA v0.1.0 — Reference backend, PGA support, and first docs
What's in 0.1.0
Core algebra
- Matrix-free Clifford algebra engine based on bit-pattern blade identifiers
AlgebraSpecwith signatures, blade naming, lazy basis-product tables, and Cayley tables- Presets:
vga2d,vga3d,pga2d,pga3d
Layouts & storage
MVLayoutsupporting dense, grade-packed, and sparse-pattern layoutsDenseStorageandCSRStoragebackends behind a sharedMVStorageprotocol- Explicit backend selection:
backend="auto" | "dense" | "csr"
Operators
- Binary products: geometric, outer, inner, scalar, left/right contraction, regressive
- Involutions: reverse, involute, conjugate
- Duality: metric
dual()/undual()and metric-freepoincare_dual()/poincare_undual() - Reverse-based
norm(),normalize(), and restrictedinverse() - PGA helpers:
bulk()/weight()splits,bulk_dual()/weight_dual(),bulk_normalize()/unitize()
Execution
- Cached
OpPlansupport-driven planning - Reference backend consuming dense or CSR inputs with dense output materialization
Documentation & tooling
- Sphinx documentation under
docs/ - Introductory notebooks:
01_vga_rotors.ipynband02_pga_rigid_body.ipynb - External visual debugger probe:
probes/amsa_lab.py(interactive HTML plan tracing)
Verification
pytest,ruff, andmypyall pass- Full test coverage for dense and CSR backends
Install from source
amsa is not yet on PyPI. Install the tagged release directly from GitHub:
pip install git+https://github.com/sunkmechie/AMSA.git@v0.1.0Or clone and install locally (I recommend using uv):
git clone https://github.com/sunkmechie/AMSA.git
cd AMSA
uv sync --extra dev