Aplaudo el uso de unidades explícitas en aplicaciones informáticas científicas. Usar unidades explícitas es cepillarse los dientes de manera análoga. Añade algo de tedio por adelantado, pero el tipo de seguridad que obtienes puede ahorrarte muchos problemas a largo plazo. Como, digamos, not crashing $125 million orbiters into planets.
También debe, probablemente, prueba estos otros dos paquetes de unidad/cantidad de pitón:
Unum
Scientific.Physics.PhysicalQuantity
vez investigué Scientific.Physics.PhysicalQuantity. No satisfizo mis necesidades, pero podría satisfacer las tuyas. Es difícil saber qué características necesita de su breve descripción.
Terminé escribiendo mi propio paquete de python para la conversión de unidades y el análisis dimensional, pero aún no está debidamente empaquetado para la versión. Estamos utilizando mi sistema unitario en las vinculaciones de python para nuestro sistema OpenMM para la mecánica molecular acelerada de GPU. Puede navegar por el repositorio SVN de mi código unidades pitón en:
SimTK python units
Finalmente tengo la intención de empaquetarlo para su distribución. Si lo encuentras interesante, házmelo saber. Eso podría motivarme a empacarlo antes. Las características que estaba buscando cuando estaba diseñando el sistema de unidades Python SimTK incluyen lo siguiente:
- Las unidades NO se almacenan necesariamente en términos de unidades SI internamente. Esto es muy importante para mí, porque un área de aplicación importante para nosotros es a escala molecular. Usar unidades SI internamente puede conducir al desbordamiento del exponente en cálculos de fuerza molecular comúnmente usados. Internamente, todos los sistemas de la unidad son igualmente fundamentales en SimTK.
- Quería potencia y flexibilidad similares al sistema Boost.Units en C++. Tanto porque estoy familiarizado con ese sistema, y porque fue diseñado bajo el escrutinio de un gran grupo de brillantes ingenieros. Boost.Units es un sistema de análisis dimensional de segunda generación bien diseñado. Por lo tanto, podría argumentar que el sistema de unidades SimTK es un sistema de tercera generación :). Tenga en cuenta que, si bien Boost.Units es un sistema de "cero gastos generales" sin costo de tiempo de ejecución, todas las implementaciones de cantidades python, incluidas las unidades SimTK, probablemente exigen un costo en tiempo de ejecución.
- Quiero cantidades dimensionadas que son compatibles con matrices numpy, pero no necesariamente requieren el paquete python numpy. En otras palabras, las cantidades pueden basarse en matrices numpy o en tipos de python incorporados.
¿Qué funciones son importantes para usted?
Creo que necesita más información sobre su pregunta para recibir respuestas válidas. –
Supongo que almacenará los datos normalizados en unidades SI, de modo que realmente se trata de un problema de análisis en la entrada y posiblemente un problema de conversión en la salida. Utilice la biblioteca que tenga el mejor análisis/conversión: puede usar diferentes en el modo de entrada y salida. –
Desafortunadamente, hay muchas soluciones para esto en python. http://pint.readthedocs.org/en/latest/faq.html#you-mention-other-similar-python-libraries-can-you-point-me-to-those – endolith