Я приветствую использование явных единиц в научных вычислительных приложениях. Использование явных единиц аналогично чистке зубов. Это добавляет немного усталости, но безопасность типов, которую вы получаете, может сэкономить много проблем в долгосрочной перспективе. Как, скажем, не врезать орбитальные спутники в 125 миллионов долларов в планеты .
Вы также, вероятно, должны проверить эти два других пакета единиц / количества Python:
Unum
Scientific.Physics.PhysicalQuantity
Однажды я исследовал Scientific.Physics.PhysicalQuantity. Это не совсем соответствовало моим потребностям, но могло бы удовлетворить ваши. Трудно сказать, какие функции вам нужны из вашего краткого описания.
В итоге я написал свой собственный пакет Python для преобразования единиц измерения и анализа размеров, но он еще не упакован должным образом для выпуска. Мы используем мою систему единиц в привязках python для нашей системы OpenMM для ускоренной молекулярной механики на GPU. Вы можете просмотреть svn-репозиторий моего кода модулей Python по адресу:
Единицы SimTK Python
В конце концов я собираюсь упаковать его для распространения. Если вам интересно, пожалуйста, дайте мне знать. Это может побудить меня собрать вещи раньше. Функции, которые я искал при разработке системы модулей Python SimTK, включали следующее:
- Единицы НЕ обязательно хранятся в единицах СИ внутри. Это очень важно для меня, потому что одна важная область применения для нас находится на молекулярном уровне. Внутреннее использование единиц СИ может привести к переполнению показателя в обычно используемых расчетах молекулярной силы. Внутри все системы единиц одинаково фундаментальны в SimTK.
- Мне хотелось, чтобы мощность и гибкость были такими же, как у Boost.Units в C ++. И потому, что я знаком с этой системой, и потому, что она была разработана под пристальным вниманием большой группы блестящих инженеров. Boost.Units - это хорошо продуманная система анализа измерений второго поколения. Таким образом, я могу утверждать, что система единиц SimTK - это система третьего поколения :). Имейте в виду, что, хотя Boost.Units является системой с «нулевыми накладными расходами» и не требует затрат времени выполнения, все реализации количества питонов, включая модули SimTK, вероятно, требуют затрат времени выполнения.
- Мне нужны размерные количества, которые совместимы с массивами numpy, но не обязательно требуют пакет с питоном python. Другими словами, количества могут быть основаны либо на массивах numpy, либо на встроенных типах python.
Какие функции важны для вас?