Skip to content
This repository has been archived by the owner on Feb 3, 2023. It is now read-only.

Commit

Permalink
Add deprecation notice (#21)
Browse files Browse the repository at this point in the history
  • Loading branch information
paulmelnikow authored Feb 3, 2023
1 parent 2d8482a commit 40bc670
Showing 1 changed file with 50 additions and 51 deletions.
101 changes: 50 additions & 51 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,35 @@ blmath
[![version](https://img.shields.io/pypi/v/blmath?style=flat-square)][pypi]
[![license](https://img.shields.io/pypi/l/blmath?style=flat-square)][pypi]
[![python versions](https://img.shields.io/pypi/pyversions/blmath?style=flat-square)][pypi]
[![build status](https://img.shields.io/circleci/project/github/lace/blmath/master.svg?style=flat-square)][circle]

Collection of math-related utilities developed at Body Labs.

This is a legacy library in active maintenance. The goals are:
**This library is deprecated. The following libraries were broken out from this
package and now are maintained on their own:**

- Keep the library working in current versions of Python and other tools.
- Make bug fixes.
- Provide API stability and backward compatibility with the upstream version.
* **[vg][]** is a vector-geometry toolbelt for 3D points and vectors.
* Was `blmath.numerics.vector_shortcuts`
* **[polliwog][]** provides low-level functions for working with 2D and 3D
geometry, optimized for cloud computation.
* Was `blmath.geometry`
* **[ounce][]** is a simple package for manipulating units of measure.
* Was `blmath.units`
* **[entente][]** provides functions for working with meshes and pointclouds
having vertexwise correspondence.
* Includes `blmath.geometry.transform.find_rigid_transform`

The main thrust is to transition the functionality in this library (and the
code which depends on it, such as [lace][]) to new libraries such as [vg][] and
[polliwog][]. In general, new functionality should be added in the new
libraries. As needed, additional libraries can be added to the lace org.
Also related is **[lacecore][]** (the primary successor to [lace][]) which
provides polygonal meshes optimized for cloud computation.

[circle]: https://circleci.com/gh/lace/blmath
Special mention is given to **[hyla][]**, a TypeScript counterpart to
[polliwog][].


[lacecore]: https://github.com/lace/lacecore/
[entente]: https://github.com/lace/entente/
[polliwog]: https://github.com/lace/polliwog/
[hyla]: https://github.com/lace/hyla/
[ounce]: https://github.com/lace/ounce/
[pypi]: https://pypi.org/project/blmath/
[lace]: https://github.com/lace/lace
[vg]: https://github.com/lace/vg
Expand Down Expand Up @@ -60,77 +73,77 @@ blmath.numerics

Functions for manipulating numeric arrays, numbers, and linear algebra.

The [most commonly used of these](__init__.py) are directly imported into
The [most commonly used of these](blmath/numerics/__init__.py) are directly imported into
`blmath.numerics`.

- [blmath.numerics.vx](vector_shortcuts.py) is a namespace of common linear
- [blmath.numerics.vx](blmath/numerics/vector_shortcuts.py) is a namespace of common linear
algebra operations. These are easily expressed in numpy, but abstracted for
readability purposes.
- [blmath.numerics.coercion](coercion.py) contains a validation function
- [blmath.numerics.coercion](blmath/numerics/coercion.py) contains a validation function
`as_numeric_array`, which produces useful error messages up front on bad
inputs, in place of cryptic messages like "cannot broadcast..." later on.
- [blmath.numerics.operations](operations.py) contains basic numerical
- [blmath.numerics.operations](blmath/numerics/operations.py) contains basic numerical
operations such as `zero_safe_divide`.
- [blmath.numerics.predicates](predicates.py) contains functions like
- [blmath.numerics.predicates](blmath/numerics/predicates.py) contains functions like
`isnumeric`.
- [blmath.numerics.rounding](rounding.py) contains functions including
- [blmath.numerics.rounding](blmath/numerics/rounding.py) contains functions including
"round to nearest" and `roundedlist`.
- [blmath.numerics.numpy_ext](numpy_ext.py) contains numpy utility
- [blmath.numerics.numpy_ext](blmath/numerics/numpy_ext.py) contains numpy utility
functions.
- [blmath.numerics.matlab](matlab.py) contains some matlab shortcuts which
- [blmath.numerics.matlab](blmath/numerics/matlab.py) contains some matlab shortcuts which
have no numpy equivalent. At MPI the fitting code was originally written in
Matlab before it was ported to Python.

[blmath.numerics.linalg](linalg) contains linear algebra operations.
[blmath.numerics.linalg](blmath/numerics/linalg) contains linear algebra operations.

- [blmath.numerics.linalg.sparse_cg](linalg/sparse_cg.py) contains a faster
- [blmath.numerics.linalg.sparse_cg](blmath/numerics/linalg/sparse_cg.py) contains a faster
matrix solve optimized for sparse Jacobians.
- [blmath.numerics.linalg.lchol](linalg/lchol.py) contains a Cythonized
- [blmath.numerics.linalg.lchol](blmath/numerics/linalg/lchol.py) contains a Cythonized
implementation of Cholesky factorization.
- [blmath.numerics.linalg.isomorphism](linalg/isomorphism.py) computes the
- [blmath.numerics.linalg.isomorphism](blmath/numerics/linalg/isomorphism.py) computes the
isomorphism between two bases.
- [blmath.numerics.linalg.gram_schmidt](linalg/gram_schmidt.py) provides a
- [blmath.numerics.linalg.gram_schmidt](blmath/numerics/linalg/gram_schmidt.py) provides a
function for orthonormalization.

blmath.geometry
---------------

Geometric operations, transforms, and primitives, in 2D and 3D.

The [most commonly used of these](__init__.py) are directly imported into
The [most commonly used of these](blmath/geometry/__init__.py) are directly imported into
`blmath.geometry`.

- [blmath.geometry.Box](primitives/box.py) represents an axis-aligned
- [blmath.geometry.Box](blmath/geometry/primitives/box.py) represents an axis-aligned
cuboid.
- [blmath.geometry.Plane](primitives/plane.py) represents a 2-D plane in
- [blmath.geometry.Plane](blmath/geometry/primitives/plane.py) represents a 2-D plane in
3-space (not a hyperplane).
- [blmath.geometry.Polyline](primitives/polyline.py) represents an
- [blmath.geometry.Polyline](blmath/geometry/primitives/polyline.py) represents an
unconstrained polygonal chain in 3-space.

`blmath.geometry.transform` includes code for 3D transforms.

- [blmath.geometry.transform.CompositeTransform](transform/composite.py)
- [blmath.geometry.transform.CompositeTransform](blmath/geometry/transform/composite.py)
represents a composite transform using homogeneous coordinates. (Thanks avd!)
- [blmath.geometry.transform.CoordinateManager](transform/coordinate_manager.py)
- [blmath.geometry.transform.CoordinateManager](blmath/geometry/transform/coordinate_manager.py)
provides a convenient interface for named reference frames within a stack of
transforms and projecting points from one reference frame to another.
- [blmath.geometry.transform.find_rigid_transform](transform/rigid_transform.py)
- [blmath.geometry.transform.find_rigid_transform](blmath/geometry/transform/rigid_transform.py)
finds a rotation and translation that closely transforms one set of points to
another. Its cousin `find_rigid_rotation` does the same, but only allows
rotation, not translation.
- [blmath.geometry.transform.rotation.rotation_from_up_and_look](transform/rotation.py)
- [blmath.geometry.transform.rotation.rotation_from_up_and_look](blmath/geometry/transform/rotation.py)
produces a rotation matrix that gets a mesh into the canonical reference frame
from "up" and "look" vectors.

Other modules:

- [blmath.geometry.apex](apex.py) provides functions for finding the most
- [blmath.geometry.apex](blmath/geometry/apex.py) provides functions for finding the most
extreme point.
- [blmath.geometry.barycentric](barycentric.py) provides a function for
- [blmath.geometry.barycentric](blmath/geometry/barycentric.py) provides a function for
projecting a point to a triangle using barycentric coordinates.
- [blmath.geometry.convexify](convexify.py) provides a function for
- [blmath.geometry.convexify](blmath/geometry/convexify.py) provides a function for
producing a convex hull from a mostly-planar curve.
- [blmath.geometry.segment](segment.py) provides functions for working with
- [blmath.geometry.segment](blmath/geometry/segment.py) provides functions for working with
line segments in n-space.

blmath.value
Expand All @@ -143,8 +156,8 @@ TODO write something here

blmath.console
------------
- [blmath.console.input_float](console.py) reads and returns a float from console.
- [blmath.console.input_value](console.py) combines `units` with a float input from console
- [blmath.console.input_float](blmath/console.py) reads and returns a float from console.
- [blmath.console.input_value](blmath/console.py) combines `units` with a float input from console
and returns `Value` object.


Expand All @@ -169,20 +182,6 @@ tox

You need to make sure that `python2.7` and `python3.6` are valid commands; this can be done in pyenv via `pyenv global 3.6.5 2.7.15`

Contribute
----------

- Issue Tracker: https://github.com/lace/blmath/issues
- Source Code: https://github.com/lace/blmath

Pull requests welcome!


Support
-------

If you are having issues, please let us know.


Acknowledgements
----------------
Expand Down

0 comments on commit 40bc670

Please sign in to comment.