收集Body Labs开发的与数学相关的实用工具
项目描述
Body Labs开发的与数学相关的实用工具集合。
这是一个正在维护的遗留库。目标是
保持库在当前版本的Python和其他工具中正常工作。
修复错误。
提供API稳定性和与上游版本的向后兼容性。
主要目标是过渡此库(及其依赖的代码,如lace)的功能到新库,包括vg和polliwog。通常,新功能应添加到新库中。根据需要,可以在lace org中添加更多库。
安装
安装依赖项
在macOS上
brew install homebrew/science/suite-sparse brew install homebrew/science/opencv --without-numpy
在Linux上
sudo apt-get install python-opencv libsuitesparse-dev
安装库
pip install blmath
并像上游库一样导入它
from blmath.numerics import vx
BodyLabs代码中许多部分使用的与数学相关的实用工具集合。
blmath.numerics
用于操作数值数组、数字和线性代数的函数。
这些中最常用的是直接导入到 blmath.numerics。
blmath.numerics.vx 是一个包含常用线性代数操作的命名空间。这些操作在 numpy 中易于表达,但为了可读性而进行了抽象。
blmath.numerics.coercion 包含一个验证函数 as_numeric_array,它会在输入错误时立即提供有用的错误信息,而不是像“无法广播...”这样的晦涩信息。
blmath.numerics.operations 包含基本数值运算,例如 zero_safe_divide。
blmath.numerics.predicates 包含函数,如 isnumeric。
blmath.numerics.rounding 包含包括“四舍五入到最接近”和 roundedlist 等函数。
blmath.numerics.numpy_ext 包含 numpy 工具函数。
blmath.numerics.matlab 包含一些没有 numpy 等价的 matlab 短路。在 MPI 中,拟合代码最初是用 Matlab 编写的,后来被移植到 Python。
blmath.numerics.linalg 包含线性代数操作。
blmath.numerics.linalg.sparse_cg 包含一个针对稀疏雅可比矩阵优化的更快矩阵求解器。
blmath.numerics.linalg.lchol 包含 Cholesky 分解的 Cython 实现。
blmath.numerics.linalg.isomorphism 计算两个基之间的同构。
blmath.numerics.linalg.gram_schmidt 提供了一个正交化的函数。
blmath.geometry
二维和三维中的几何操作、变换和原语。
这些中最常用的是直接导入到 blmath.geometry。
blmath.geometry.Box 表示一个对齐的立方体。
blmath.geometry.Plane 表示三维空间中的一个二维平面(不是超平面)。
blmath.geometry.Polyline 表示三维空间中未约束的多边形链。
blmath.geometry.transform 包含 3D 变换的代码。
blmath.geometry.transform.CompositeTransform 使用齐次坐标表示一个组合变换。(感谢 avd!)
blmath.geometry.transform.CoordinateManager 为变换堆栈中的命名参考系提供了一个方便的接口,并可以将点从一个参考系投影到另一个参考系。
blmath.geometry.transform.find_rigid_transform 找到一个旋转和平移,将一个点集紧密地变换到另一个点集。它的亲戚 find_rigid_rotation 做同样的事情,但只允许旋转,不允许平移。
blmath.geometry.transform.rotation.rotation_from_up_and_look 生成一个旋转矩阵,从“向上”和“查看”向量将网格变换到规范参考框架。
其他模块
blmath.geometry.apex 提供了查找最极端点的函数。
blmath.geometry.barycentric 提供了一个使用重心坐标将点投影到三角形的函数。
blmath.geometry.convexify 提供了一个从主要平面曲线生成凸包的函数。
blmath.geometry.segment 提供了在 n 维空间中处理线段的函数。
blmath.value
用于包装和操作 value/units 对的类。
blmath.units
TODO 在这里写些东西
blmath.console
blmath.console.input_float 从控制台读取并返回一个浮点数。
blmath.console.input_value 将单位与控制台中的浮点数输入结合,并返回 Value 对象。
开发
pip install -r requirements_dev.txt
pip install -e . # builds the native extension
rake unittest
rake lint
测试配置为在本地通过 tox 运行 Python 2.7 和 3.6,以及在 CircleCI 上。要在多个 Python 版本中运行测试,请运行 tox
pip install -r requirements_dev.txt
tox
您需要确保 python2.7 和 python3.6 是有效的命令;这可以通过在 pyenv 中执行 pyenv global 3.6.5 2.7.15 来完成
贡献
欢迎提交拉取请求!
支持
如果您遇到问题,请告诉我们。
致谢
该集合在 Body Labs 开发,包括 Body Labs 开发的代码组合,以及由 Eric Rachlin、Alex Weiss 和 Paul Melnikow 开发的大量新代码。它从 Body Labs 代码库中提取并由 Alex Weiss 开源。2018 年,Paul Melnikow 进行了 fork 并发布为 metablmath。感谢 Body Labs 提供的存储库和包迁移,fork 已经合并回原始版本。
许可证
本项目受两条款 BSD 许可证的许可。
项目详情
blmath-1.6.3.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3aa03ddd49c1772ec6249273bd9be8b62c79715d13bf631c0612140d1ed5b11b |
|
MD5 | 7f3c4783fc68ee4065722587b20c0ba6 |
|
BLAKE2b-256 | c88305ea664c1ec90072e65ce7cba7451b411bd87c4736f0050b556ff08ed0b7 |