Skip to main content

version python versions build status

Collection of math-related utilities developed at Body Labs.

This is a legacy library in active maintenance. The goals are:

  • 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.

The main thrust is to transition the functionality in this library (and the code which depends on it, such as lace to new libraries include 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.

Installation

Install dependencies

On macOS:

brew install homebrew/science/suite-sparse
brew install homebrew/science/opencv --without-numpy

On Linux:

sudo apt-get install python-opencv libsuitesparse-dev

Install the library

pip install blmath

And import it just like the upstream library:

from blmath.numerics import vx

A collection of math related utilities used by many bits of BodyLabs’ code.

blmath.numerics

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

The most commonly used of these are directly imported into blmath.numerics.

  • blmath.numerics.vx is a namespace of common linear algebra operations. These are easily expressed in numpy, but abstracted for readability purposes.

  • blmath.numerics.coercion 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 contains basic numerical operations such as zero_safe_divide.

  • blmath.numerics.predicates contains functions like isnumeric.

  • blmath.numerics.rounding contains functions including “round to nearest” and roundedlist.

  • blmath.numerics.numpy_ext contains numpy utility functions.

  • blmath.numerics.matlab 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 contains linear algebra operations.

blmath.geometry

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

The most commonly used of these are directly imported into blmath.geometry.

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

Other modules:

blmath.value

Class for wrapping and manipulating value/units pairs.

blmath.units

TODO write something here

blmath.console

Development

pip install -r requirements_dev.txt
pip install -e .  # builds the native extension
rake unittest
rake lint

Tests are configured to run in both python 2.7 and 3.6 locally via tox as well as in CircleCI. To run tests in multiple versions of python, run tox:

pip install -r requirements_dev.txt
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

Pull requests welcome!

Support

If you are having issues, please let us know.

Acknowledgements

This collection was developed at Body Labs and includes a combination of code developed at Body Labs, from legacy code and significant new portions by Eric Rachlin, Alex Weiss, and Paul Melnikow. It was extracted from the Body Labs codebase and open-sourced by Alex Weiss. In 2018 it was forked by Paul Melnikow and published as metablmath. Thanks to a repository and package transfer from Body Labs, the fork has been merged back into the original.

License

The project is licensed under the two-clause BSD license.

Metadata

Release files for blmath 1.6.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for blmath 1.6.3
File Size Uploaded
blmath-1.6.3.tar.gz 57.8 kB Details

Release files / blmath-1.6.3.tar.gz

Download URL blmath-1.6.3.tar.gz
Size 57.8 kB
Tags Source
SHA-256 checksum
How to use checksums
3aa03ddd49c1772ec6249273bd9be8b62c79715d13bf631c0612140d1ed5b11b
BLAKE2b-256 checksum
How to use checksums
c88305ea664c1ec90072e65ce7cba7451b411bd87c4736f0050b556ff08ed0b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.11.0 pkginfo/1.4.2 requests/2.9.1 setuptools/40.8.0 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/2.7.16

Release history Release notifications | RSS feed

This release

1.6.3 This release

1 release file

1.6.2

1 release file

1.2.6

2 release files

1.2.5

1 release file

1.2.4

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.1

2 release files

1.0.3

2 release files

1.0.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page