2010-01-23 5 views
37

में यूनिट रूपांतरण मैं एक ऐसे प्रोजेक्ट पर काम कर रहा हूं जो उपयोगकर्ताओं को समय के साथ विभिन्न डेटा प्रकारों को ट्रैक करने देता है। मूल विचार का एक हिस्सा यह है कि उपयोगकर्ता किसी भी इकाई का उपयोग करके डेटा दर्ज करने में सक्षम होना चाहिए। मैं दोनों इकाइयों को देखकर किया गया है:पायथन

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

और मात्रा:

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

हालांकि मुझे यकीन है कि जाने के लिए सबसे अच्छा तरीका नहीं है। जो मैं बता सकता हूं, मात्रा अधिक जटिल है, लेकिन इसमें इकाइयों की एक बेहतर प्रारंभिक सूची शामिल है।

+3

मुझे लगता है कि वैध जवाब प्राप्त करने के लिए आपको अपने प्रश्न के बारे में अधिक विशिष्टता की आवश्यकता है। –

+0

मुझे लगता है कि आप एसआई इकाइयों को सामान्यीकृत डेटा संग्रहीत करेंगे, इसलिए वास्तव में यह इनपुट पर एक पार्सिंग समस्या है, और संभवतः आउटपुट पर एक रूपांतरण समस्या है। किसी भी लाइब्रेरी का सर्वोत्तम पार्सिंग/रूपांतरण का उपयोग करें - आप अलग-अलग तरीकों से अंदर और बाहर उपयोग कर सकते हैं। –

+0

दुर्भाग्य से, पाइथन में इसके लिए बहुत सारे समाधान हैं। http://pint.readthedocs.org/en/latest/faq.html#you-mention-other-similar-python- पुस्तकालय-can-you-point-me-to-those – endolith

उत्तर

1

मुझे लगता है कि आपको मात्रा का उपयोग करना चाहिए, क्योंकि मात्रा में इसके साथ कुछ इकाइयां जुड़ी हैं।

दबाव, उदाहरण के लिए, एक मात्रा होगी जो दर्ज की जा सकती है और विभिन्न इकाइयों (Pa, psi, atm, आदि) में परिवर्तित की जा सकती है। शायद आप अपने आवेदन के लिए नई मात्रा विनिर्देश बना सकते हैं।

24

मैं वैज्ञानिक कंप्यूटिंग अनुप्रयोगों में स्पष्ट इकाइयों का उपयोग करने की सराहना करता हूं। स्पष्ट इकाइयों का उपयोग करना आपके दांतों को समान रूप से ब्रश करना है। यह कुछ टेडियम को सामने जोड़ता है, लेकिन आपके द्वारा प्राप्त की जाने वाली सुरक्षा सुरक्षा लंबे समय तक बहुत सारी परेशानी बचा सकती है। जैसे, not crashing $125 million orbiters into planets कहें।

तुम भी शायद इन दो अन्य अजगर इकाई/मात्रा संकुल की जांच करनी चाहिए:

Unum

Scientific.Physics.PhysicalQuantity

मैं एक बार Scientific.Physics.PhysicalQuantity की जांच की। यह मेरी जरूरतों को पूरा नहीं करता था, लेकिन आपकी संतुष्टि को पूरा कर सकता है। यह बताना मुश्किल है कि आपको अपने संक्षिप्त विवरण से कौन सी विशेषताओं की आवश्यकता है।

मैंने इकाई रूपांतरण और आयामी विश्लेषण के लिए अपना खुद का पायथन पैकेज लिखना समाप्त कर दिया, लेकिन इसे अभी तक रिलीज के लिए उचित रूप से पैक नहीं किया गया है। हम जीपीयू त्वरित आणविक यांत्रिकी के लिए हमारे ओपनएमएम सिस्टम के लिए पाइथन बाइंडिंग में मेरी यूनिट सिस्टम का उपयोग कर रहे हैं। आपको कम से मेरी अजगर इकाइयों कोड की SVN भंडार ब्राउज़ कर सकते हैं:

SimTK python units

अंततः मैं वितरण के लिए पैकेज करना चाहते हैं। यदि आपको यह दिलचस्प लगता है, तो कृपया मुझे बताएं। इससे मुझे इसे जल्द से जल्द पैकेज करने के लिए प्रेरित किया जा सकता है। जब मैं सिमटीके पायथन इकाइयों के सिस्टम को डिजाइन कर रहा था, तो मुझे निम्नलिखित विशेषताएं शामिल थीं:

  1. यूनिट आंतरिक रूप से एसआई इकाइयों के मामले में आवश्यक रूप से संग्रहीत नहीं हैं। यह मेरे लिए बहुत महत्वपूर्ण है, क्योंकि हमारे लिए एक महत्वपूर्ण आवेदन क्षेत्र आण्विक पैमाने पर है। आंतरिक रूप से एसआई इकाइयों का उपयोग आमतौर पर प्रयुक्त आणविक बल गणनाओं में एक्सपोनेंट ओवरफ्लो का कारण बन सकता है। आंतरिक रूप से, सभी यूनिट सिस्टम सिमटीके में समान रूप से मौलिक हैं।
  2. मैं सी ++ में Boost.Units सिस्टम के लिए समान शक्ति और लचीलापन चाहता था। दोनों क्योंकि मैं उस प्रणाली से परिचित हूं, और क्योंकि इसे शानदार इंजीनियरों के एक बड़े समूह की जांच के तहत डिजाइन किया गया था। Boost.Units एक अच्छी तरह से तैयार दूसरी पीढ़ी आयामी विश्लेषण प्रणाली है। इस प्रकार मैं तर्क दे सकता हूं कि सिमटीके इकाइयां सिस्टम तीसरी पीढ़ी प्रणाली है :)। ध्यान रखें कि Boost.Units एक "शून्य ओवरहेड" प्रणाली है, जिसमें कोई रनटाइम लागत नहीं है, सिमटीके इकाइयों समेत सभी पायथन मात्रा कार्यान्वयन, शायद रनटाइम लागत सटीक हैं।
  3. मुझे आयामी मात्राएं चाहिए जो numpy arrays के साथ संगत हैं, लेकिन जरूरी नहीं कि पाइथन numpy पैकेज की आवश्यकता हो। दूसरे शब्दों में, मात्राएं या तो numpy arrays या पायथन प्रकारों में निर्मित पर आधारित हो सकती हैं।

क्या सुविधाओं आपके लिए महत्वपूर्ण हैं?

4

यह एक और पैकेज की तरह दिखता है और साथ ही ऐसा करने के लिए बाहर आ गया है, web2py प्रसिद्धि के मास्सिमो DiPierro ने लिखा है, Buckingham कहा जाता है।

नोट के अलावा, Brian कुछ समय के लिए कुछ इस तरह किया गया है।

+0

बकिंघम अधूरा लगता है और परिवर्तित नहीं कर सकता उदाहरण के लिए पाउंड ग्राम से: '>>> (संख्या (100, = 'ग्राम') धुंधली हो जाती है) में परिवर्तित ('पौंड') मूल्य ' 'RuntimeError में परिणाम:।। असंगत Dimensions' –

+1

डैनियल, विशेष रूप से त्रुटि तुम उल्लेख ऐसा इसलिए है क्योंकि पाउंड की आंतरिक परिभाषा द्रव्यमान की बजाय बल की इकाई के रूप में होती है। इसके अतिरिक्त, यह निश्चित रूप से समर्थित इकाइयों की एक विस्तृत सूची नहीं है। –

+0

अहह जो समझ में आएगा, पाउंड मास समर्थन जोड़ने के लिए '' एलबी 'जोड़ें: (453.592,0,0,1,0,0,0), # एलबी'' यूनिट्स 'सूची में। –

6

नोट quantities तापमान के लिए बहुत बुरा समर्थन हासिल है कि:

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

0 डिग्री सेल्सियस 0 डिग्री फेरनहाइट नहीं है। उनका ढांचा किसी भी तरह के रूपांतरण का समर्थन नहीं करता है जो सिर्फ एक कारक से गुणा नहीं कर रहा है।

+0

तापमान मुश्किल है क्योंकि दो प्रकार हैं - पूर्ण/थर्मोडायनामिक तापमान और सापेक्ष/तापमान अंतर। पूर्ण रूप से, हर कोई 0 डिग्री फ़ारेनहाइट जानता है! = 0 डिग्री सेल्सियस। तापमान अंतर (ΔT), 0 डिग्री फ़ारेनहाइट == 0 डिग्री सेल्सियस के बारे में बात करते समय। –

15

Pint हाल ही में मैदान पर आया है। कोई भी अपने अनुभव साझा करने की देखभाल करता है? अछा लगता है। एफवाईआई: यह निकट भविष्य में Pint will be integrated with Uncertainties जैसा दिखता है।

+3

पिंट भयानक है! – canesin

+2

मैं इसे लिखने पर पिंट का मूल्यांकन कर रहा हूं और एक बड़ा * + 1 * यह है कि यह दशमलव का उपयोग करने में सक्षम है जिसका मतलब है कि कोई फंकी फ्लोट राउंडिंग त्रुटियां नहीं हैं - उल्लिखित सभी उल्लिखित लिबरियां केवल फ्लोट प्रकार में काम करती हैं - http: // अजगर-इन-द-lab.blogspot।सीए/2013/01/कितने-पिन-डू-आप-चाहते-इकाइयों-इन.html –

+0

अब मैं पिंट के लिए बड़ा +1 नहीं हूं - पिछले दो दिनों में मैंने अब तक दो बग फिक्स सबमिट किए हैं - I अगर मुझे वास्तव में अतिरिक्त कार्यक्षमता/जटिलता की ज़रूरत है तो मैं बहस कर रहा हूं और इसके बजाय बस कुछ सीधे आगे बढ़ सकता हूं जैसे कि http://code.activestate.com/recipes/577652-unit-conversions-using-decimal/ –

3

आप natu नामक एक नए पैकेज को देखने के लिए चाहते हो सकता है। यह तीन मुद्दों को संबोधित करता है जो @ क्रिस्टोफर ब्रंस सूचीबद्ध हैं। यह PyPI में उपलब्ध है।

मैं उस पैकेज के लेखक हूं, और मैं किसी भी टिप्पणी या सुझाव की सराहना करता हूं।

2

मुझे आश्चर्य है कि किसी ने अभी तक सिम्पी का उल्लेख नहीं किया है। SymPy पाइथन के लिए एक परिपक्व और अच्छी तरह से बनाए रखा प्रतीकात्मक गणित पुस्तकालय है जो NumFOCUS-sponsored प्रोजेक्ट के अलावा है।

यह "भौतिकी में समस्याओं को हल करने के लिए" कई उपयोगी वर्गों और कार्यों के साथ एक Physics मॉड्यूल है। आपके लिए सबसे प्रासंगिक, इसमें Unit सब-मॉड्यूल है जिसमें आपको जो भी चाहिए, वह मुझे लगता है; बस उत्कृष्ट दस्तावेज पढ़ें।