Tôi hoan nghênh việc sử dụng đơn vị rõ ràng trong các ứng dụng máy tính khoa học. Sử dụng đơn vị rõ ràng là tương tự đánh răng của bạn. Nó cho biết thêm một số tedium lên phía trước, nhưng loại an toàn bạn nhận được có thể tiết kiệm rất nhiều rắc rối trong thời gian dài. Ví dụ: not crashing $125 million orbiters into planets.
Bạn cũng nên có lẽ hãy kiểm tra các đơn vị hai gói/lượng python khác:
Unum
Scientific.Physics.PhysicalQuantity
Tôi đã từng điều tra Scientific.Physics.PhysicalQuantity. Nó đã không hoàn toàn đáp ứng nhu cầu của tôi, nhưng có thể đáp ứng của bạn. Thật khó để nói những tính năng bạn cần từ mô tả ngắn gọn của bạn.
Tôi đã kết thúc viết gói python của riêng mình để chuyển đổi đơn vị và phân tích chiều, nhưng nó chưa được đóng gói đúng cách để phát hành. Chúng tôi đang sử dụng hệ thống đơn vị của tôi trong các ràng buộc python cho hệ thống OpenMM của chúng tôi cho GPU tăng tốc cơ học phân tử. Bạn có thể duyệt kho svn mã đơn vị python của tôi tại địa chỉ:
SimTK python units
Cuối cùng tôi dự định sẽ gói nó để phân phối. Nếu bạn thấy nó thú vị, xin vui lòng cho tôi biết. Điều đó có thể thúc đẩy tôi đóng gói nó sớm hơn. Các tính năng tôi đang tìm kiếm khi tôi thiết kế hệ thống đơn vị python của SimTK bao gồm:
- Đơn vị không nhất thiết phải được lưu trữ theo đơn vị SI trong nội bộ. Điều này rất quan trọng đối với tôi, bởi vì một lĩnh vực ứng dụng quan trọng đối với chúng tôi là ở quy mô phân tử. Sử dụng đơn vị SI trong nội bộ có thể dẫn đến tràn số mũ trong các phép tính lực phân tử thường được sử dụng. Bên trong, tất cả các hệ thống đơn vị đều có cơ sở như nhau trong SimTK.
- Tôi muốn có quyền lực và tính linh hoạt tương tự với hệ thống Boost.Units trong C++. Cả hai vì tôi quen thuộc với hệ thống đó, và bởi vì nó được thiết kế dưới sự giám sát của một nhóm lớn các kỹ sư xuất sắc. Boost.Units là hệ thống phân tích chiều thế hệ thứ hai được chế tạo tốt. Vì vậy, tôi có thể lập luận rằng hệ thống đơn vị SimTK là một hệ thống thế hệ thứ ba :). Hãy nhận biết rằng trong khi Boost.Units là một hệ thống "zero overhead" không có chi phí thời gian chạy, tất cả các triển khai số lượng python, bao gồm các đơn vị SimTK, có thể chính xác là chi phí thời gian chạy.
- Tôi muốn số lượng có kích thước tương thích với các mảng có nhiều mảng, nhưng không nhất thiết yêu cầu gói gọn gàng. Nói cách khác, số lượng có thể được dựa trên một trong hai mảng numpy hoặc trên xây dựng trong các loại python.
Tính năng nào quan trọng đối với bạn?
Nguồn
2010-02-05 17:49:50
Tôi nghĩ bạn cần cụ thể hơn về câu hỏi của bạn là gì, để nhận câu trả lời hợp lệ. –
Tôi cho rằng bạn sẽ lưu trữ dữ liệu được chuẩn hóa cho các đơn vị SI, vì vậy đây thực sự là vấn đề phân tích cú pháp trên đầu vào và có thể là sự cố chuyển đổi trên đầu ra. Sử dụng thư viện nào có phân tích/chuyển đổi tốt nhất - bạn có thể sử dụng các thư viện khác nhau trên đường vào và ra. –
Có rất nhiều giải pháp cho điều này trong python, thật không may. http://pint.readthedocs.org/en/latest/faq.html#you-mention-other-similar-python-libraries-can-you-point-me-to-those – endolith