我赞赏在科学计算应用中使用显式单位。使用显式单位是类似于刷牙。它增加了一些繁琐的前面,但你所得到的类型安全可以节省很多的麻烦,从长远来看。喜欢,比如说,
not crashing $125 million orbiters into planets。
你也应该检查出这两个其他python单位/数量包:
我曾经调查Scientific.Physics.PhysicalQuantity。它不完全满足我的需要,但可能满足你的。很难从你的简短描述中告诉你需要什么功能。
我最后写了我自己的python包单位转换和维度分析,但它没有正确打包发布。我们使用我的单位系统在python绑定为我们的OpenMM系统的GPU加速分子力学。你可以浏览我的python单位代码的svn仓库:
最终我打算将其打包发布。如果你觉得有趣,请让我知道。这可能激励我更快地打包。我在设计SimTK python单位系统时寻找的功能包括:
>单位不一定按内部SI单位存储。这对我来说非常重要,因为我们的一个重要应用领域是在分子水平上。在内部使用SI单位可能导致在常用分子力计算中的指数溢出。在内部,所有单元系统在SimTK中同样重要。
>我想要类似的功能和灵活性的Boost.Units系统在C。两者都是因为我熟悉这个系统,而且它是在一大群聪明的工程师的监督下设计的。 Boost.Units是一个精心设计的第二代尺寸分析系统。因此我可能会认为SimTK单位系统是第三代系统:)。请注意,虽然Boost.Units是一个“零开销”系统,没有运行时成本,但所有python数量实现,包括SimTK单位,可能精确的运行时成本。
>我想要的数量与numpy数组兼容,但不一定需要python numpy包。换句话说,量可以基于numpy数组或基于python类型构建。
什么功能对您很重要?