Conversion d'unité en Python

je travaille sur un projet qui permet aux utilisateurs de suivre différents types de données au fil du temps. Une partie de l'idée de base est qu'un utilisateur devrait être en mesure d'entrer des données en utilisant toutes les unités dont il a besoin. J'ai regardé les deux unités:

http://pypi.python.org/pypi/units/

et quantités:

http://pypi.python.org/pypi/quantities/

Cependant, je ne suis pas sûr de la meilleure façon d'aller. De ce que je peux dire, les quantités sont plus complexe, mais comprend une meilleure liste initiale d'unités.

39
demandé sur Jon Seigel 2010-01-24 02:02:21

8 réponses

j'applaudis l'utilisation d'unités explicites dans les applications de calcul scientifique. Utiliser des unités explicites est analogue se brosser les dents. Il ajoute un peu de tedium à l'avant, mais le type de sécurité que vous obtenez peut sauver beaucoup de problèmes à long terme. Comme, disons,pas de plantage de 125 millions de dollars orbiteurs dans des planètes.

vous devriez aussi probablement vérifier ces deux autres unités/quantité de python des paquets:

Unum

Scientifique.Physique.PhysicalQuantity

une fois, j'ai étudié Scientifique.Physique.PhysicalQuantity. Il ne répondait pas tout à fait à mes besoins, mais pourrait satisfaire les vôtres. Il est difficile de déterminer les caractéristiques dont vous avez besoin à partir de votre brève description.

j'ai fini par écrire mon propre paquet python pour la conversion d'unités et l'analyse dimensionnelle, mais il n'est pas encore correctement empaqueté pour la publication. Nous utilisons mon unité système dans les fixations python pour notre système OpenMM pour la mécanique moléculaire accélérée GPU. Vous pouvez parcourir le dépôt svn de mon code d'unités python à:

SimTK Python units

finalement j'ai l'intention de l'emballer pour distribution. Si vous le trouvez intéressant, s'il vous plaît laissez-moi savoir. Qui pourrait me motiver à emballer tôt. Les fonctionnalités que je cherchais lorsque je concevais le système D'unités Python SimTK incluaient suivantes:

  1. les unités ne sont pas nécessairement stockées en termes d'unités SI internes. C'est très important pour moi, parce qu'un domaine d'application important pour nous est à l'échelle moléculaire. L'utilisation interne des unités SI peut conduire à un dépassement de l'exposant dans les calculs de force moléculaire couramment utilisés. En interne, tous les systèmes unitaires sont également fondamentaux dans SimTK.
  2. je voulais similaire de la puissance et de la souplesse à l' coup de pouce.Unités système en C++. À la fois parce que Je connais ce système, et parce qu'il a été conçu sous la surveillance d'un grand groupe d'ingénieurs brillants. Stimuler.Units est un système d'analyse dimensionnelle de deuxième génération bien conçu. Je pourrais donc dire que le système D'unités SimTK est un système de troisième génération :). Soyez conscient que tout Boost.Units est un "zéro overhead" système sans coût d'exécution, toutes les implémentations de quantité de python, y compris les unités SimTK, probablement un coût d'exécution exact.
  3. je veux dimensionné Les quantités qui sont compatibles avec les tableaux numpy, mais qui ne nécessitent pas nécessairement le paquet python numpy. En d'autres termes, les quantités peuvent être basées sur des tableaux numpy ou sur des types Python construits.

Quelles caractéristiques sont importantes pour vous?

24
répondu Christopher Bruns 2010-02-05 18:00:21

Pinte a récemment arrivé sur le champ. Ce soin à personne de partager leurs expériences? Semble bon. FYI: on dirait que Pinte sera intégré avec les Incertitudes dans un avenir proche.

16
répondu Mark Mikofski 2013-12-20 16:59:18

Notez que quantities supporte très mal La température:

>>> (100 * pq.degC).rescale(pq.degF)
array(179.99999999999997) * degF
>>> (0 * pq.degC).rescale(pq.degF)
array(0.0) * degF