metrolopy 0.6.5__py3-none-any.whl → 1.0.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- metrolopy/__init__.py +5 -4
- metrolopy/budget.py +61 -50
- metrolopy/builtin_constants.py +903 -0
- metrolopy/constant.py +108 -104
- metrolopy/constcom.py +84 -83
- metrolopy/distributions.py +120 -39
- metrolopy/exceptions.py +7 -9
- metrolopy/fit.py +3 -3
- metrolopy/functions.py +4 -4
- metrolopy/gummy.py +571 -530
- metrolopy/indexed.py +69 -20
- metrolopy/logunit.py +1 -1
- metrolopy/mean.py +8 -9
- metrolopy/miscunits.py +21 -6
- metrolopy/nummy.py +224 -180
- metrolopy/offsetunit.py +2 -3
- metrolopy/prefixedunit.py +24 -23
- metrolopy/relunits.py +1 -2
- metrolopy/siunits.py +7 -5
- metrolopy/tests/__init__.py +6 -6
- metrolopy/tests/test_complex.py +22 -0
- metrolopy/tests/test_create.py +10 -6
- metrolopy/tests/test_gummy.py +93 -43
- metrolopy/tests/test_misc.py +4 -1
- metrolopy/tests/test_operations.py +58 -2
- metrolopy/tests/test_ubreakdown.py +6 -2
- metrolopy/ummy.py +890 -898
- metrolopy/unit.py +287 -182
- metrolopy/unitparser.py +40 -42
- metrolopy/unitutils.py +183 -159
- metrolopy/usunits.py +14 -13
- metrolopy/version.py +1 -1
- {metrolopy-0.6.5.dist-info → metrolopy-1.0.1.dist-info}/METADATA +23 -5
- metrolopy-1.0.1.dist-info/RECORD +45 -0
- metrolopy-0.6.5.dist-info/RECORD +0 -44
- {metrolopy-0.6.5.dist-info → metrolopy-1.0.1.dist-info}/WHEEL +0 -0
- {metrolopy-0.6.5.dist-info → metrolopy-1.0.1.dist-info}/licenses/LICENSE +0 -0
- {metrolopy-0.6.5.dist-info → metrolopy-1.0.1.dist-info}/top_level.txt +0 -0
- {metrolopy-0.6.5.dist-info → metrolopy-1.0.1.dist-info}/zip-safe +0 -0
metrolopy/prefixedunit.py
CHANGED
|
@@ -25,6 +25,7 @@ Classes to automatically generate prefixed units from a base unit.
|
|
|
25
25
|
"""
|
|
26
26
|
|
|
27
27
|
from .unit import Unit,Conversion
|
|
28
|
+
from .ummy import MFraction
|
|
28
29
|
|
|
29
30
|
class PrefixedUnit(Unit):
|
|
30
31
|
"""PrefixedUnit(name,symbol,conversion=None,short_name=None,
|
|
@@ -40,26 +41,26 @@ class PrefixedUnit(Unit):
|
|
|
40
41
|
will be generated.
|
|
41
42
|
"""
|
|
42
43
|
prefix_definitions = {
|
|
43
|
-
'yocto':[1e-24,'y',None,None,None],
|
|
44
|
-
'zepto':[1e-21,'z',None,None,None],
|
|
45
|
-
'atto':[1e-18,'a',None,None,None],
|
|
46
|
-
'femto':[1e-15,'f',None,None,None],
|
|
47
|
-
'pico':[1e-12,'p',None,None,None],
|
|
48
|
-
'nano':[1e-9,'n',None,None,None],
|
|
49
|
-
'micro':[1e-6,'\u03BC','μ',None,'u'],
|
|
50
|
-
'milli':[0.001,'m',None,None,None],
|
|
51
|
-
'centi':[0.01,'c',None,None,None],
|
|
52
|
-
'deci':[0.1,'d',None,None,None],
|
|
44
|
+
'yocto':[MFraction('1e-24'),'y',None,None,None],
|
|
45
|
+
'zepto':[MFraction('1e-21'),'z',None,None,None],
|
|
46
|
+
'atto':[MFraction('1e-18'),'a',None,None,None],
|
|
47
|
+
'femto':[MFraction('1e-15'),'f',None,None,None],
|
|
48
|
+
'pico':[MFraction('1e-12'),'p',None,None,None],
|
|
49
|
+
'nano':[MFraction('1e-9'),'n',None,None,None],
|
|
50
|
+
'micro':[MFraction('1e-6'),'\u03BC','μ',None,'u'],
|
|
51
|
+
'milli':[MFraction('0.001'),'m',None,None,None],
|
|
52
|
+
'centi':[MFraction('0.01'),'c',None,None,None],
|
|
53
|
+
'deci':[MFraction('0.1'),'d',None,None,None],
|
|
53
54
|
'deca':[10,'da',None,None,None],
|
|
54
55
|
'hecto':[100,'h',None,None,None],
|
|
55
56
|
'kilo':[1000,'k',None,None,None],
|
|
56
57
|
'mega':[1000000,'M',None,None,None],
|
|
57
|
-
'giga':[
|
|
58
|
-
'tera':[
|
|
59
|
-
'peta':[
|
|
60
|
-
'exa':[
|
|
61
|
-
'zetta':[1e21,'Z',None,None,None],
|
|
62
|
-
'yotta':[1e24,'Y',None,None,None],
|
|
58
|
+
'giga':[1000000000,'G',None,None,None],
|
|
59
|
+
'tera':[1000000000000,'T',None,None,None],
|
|
60
|
+
'peta':[1000000000000000,'P',None,None,None],
|
|
61
|
+
'exa': [1000000000000000000,'E',None,None,None],
|
|
62
|
+
'zetta':[MFraction('1e21'),'Z',None,None,None],
|
|
63
|
+
'yotta':[MFraction('1e24'),'Y',None,None,None],
|
|
63
64
|
}
|
|
64
65
|
|
|
65
66
|
@staticmethod
|
|
@@ -223,13 +224,13 @@ class BinaryPrefixedUnit(PrefixedUnit):
|
|
|
223
224
|
"""
|
|
224
225
|
prefix_definitions = {
|
|
225
226
|
'kilo':[1000,'k',None,None,None],
|
|
226
|
-
'mega':[
|
|
227
|
-
'giga':[
|
|
228
|
-
'tera':[
|
|
229
|
-
'peta':[
|
|
230
|
-
'exa':[
|
|
231
|
-
'zetta':[1e21,'Z',None,None,None],
|
|
232
|
-
'yotta':[1e24,'Y',None,None,None],
|
|
227
|
+
'mega':[1000000,'M',None,None,None],
|
|
228
|
+
'giga':[1000000000,'G',None,None,None],
|
|
229
|
+
'tera':[1000000000000,'T',None,None,None],
|
|
230
|
+
'peta':[1000000000000000,'P',None,None,None],
|
|
231
|
+
'exa':[1000000000000000000,'E',None,None,None],
|
|
232
|
+
'zetta':[MFraction('1e21'),'Z',None,None,None],
|
|
233
|
+
'yotta':[MFraction('1e24'),'Y',None,None,None],
|
|
233
234
|
'kibi':[1024,'Ki',None,None,None],
|
|
234
235
|
'mebi':[1024**2,'Mi',None,None,None],
|
|
235
236
|
'gibi':[1024**3,'Gi',None,None,None],
|
metrolopy/relunits.py
CHANGED
|
@@ -24,8 +24,7 @@
|
|
|
24
24
|
This module is loaded by the gummy.units module and is not intended be be
|
|
25
25
|
imported directly. Dimensionless units are defined here.
|
|
26
26
|
"""
|
|
27
|
-
from .unit import Unit,Conversion,one
|
|
28
|
-
from .ummy import MFraction
|
|
27
|
+
from .unit import Unit,Conversion,one,MFraction
|
|
29
28
|
|
|
30
29
|
class RatioUnit(Unit):
|
|
31
30
|
"""RatioUnit is used for dimensionless units like % where powers, e.g. %**2,
|
metrolopy/siunits.py
CHANGED
|
@@ -28,8 +28,8 @@ The most of the units here are from the SI Brochure, 9th edition.
|
|
|
28
28
|
"""
|
|
29
29
|
|
|
30
30
|
from numpy import pi
|
|
31
|
-
from .ummy import ummy
|
|
32
|
-
from .unit import Conversion,Unit
|
|
31
|
+
from .ummy import ummy
|
|
32
|
+
from .unit import Conversion,Unit,MFraction
|
|
33
33
|
from .prefixedunit import PrefixedUnit
|
|
34
34
|
from .offsetunit import OffsetUnit,OffsetConversion
|
|
35
35
|
|
|
@@ -112,8 +112,9 @@ with Unit._builtin():
|
|
|
112
112
|
_degC = OffsetUnit('degree Celsius','\u00B0C',OffsetConversion(_K,273.15),
|
|
113
113
|
latex_symbol='^{\\circ}C',ascii_symbol = 'degC',add_symbol=True,order=0,
|
|
114
114
|
description='unit of temperature')
|
|
115
|
-
Unit.alias('
|
|
116
|
-
Unit.alias('
|
|
115
|
+
Unit.alias('degreeC',_degC)
|
|
116
|
+
Unit.alias('degree-C',_degC)
|
|
117
|
+
Unit.alias('deg-C',_degC)
|
|
117
118
|
|
|
118
119
|
_lm = PrefixedUnit('lumen','lm',Conversion(_cd*_sr,1),add_symbol=True,order=0,
|
|
119
120
|
description='SI derived unit for luminous flux')
|
|
@@ -151,4 +152,5 @@ with Unit._builtin():
|
|
|
151
152
|
prefixes=['centi','deci','deca','hecto','kilo','mega',
|
|
152
153
|
'giga','tera','peta','exa','zetta','yotta'],
|
|
153
154
|
description='unit of mass')
|
|
154
|
-
Unit.alias('metric ton',_tonne)
|
|
155
|
+
Unit.alias('metric ton',_tonne)
|
|
156
|
+
Unit.alias('metric-ton',_tonne)
|
metrolopy/tests/__init__.py
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
|
|
3
|
-
from .test_create import
|
|
4
|
-
from .test_operations import
|
|
5
|
-
from .test_ubreakdown import
|
|
6
|
-
from .test_complex import
|
|
7
|
-
from .test_misc import
|
|
8
|
-
from .test_gummy import
|
|
3
|
+
from .test_create import TestCreate
|
|
4
|
+
from .test_operations import TestOperations
|
|
5
|
+
from .test_ubreakdown import TestUbreakdown
|
|
6
|
+
from .test_complex import TestComplex
|
|
7
|
+
from .test_misc import TestMisc
|
|
8
|
+
from .test_gummy import TestGummy
|
metrolopy/tests/test_complex.py
CHANGED
|
@@ -78,6 +78,10 @@ def make_immy(prnt=False):
|
|
|
78
78
|
|
|
79
79
|
|
|
80
80
|
class TestComplex(unittest.TestCase):
|
|
81
|
+
"""
|
|
82
|
+
Tests for the `immy` and `jummy` classes. Basic operations and
|
|
83
|
+
instance creation are tested using random values.
|
|
84
|
+
"""
|
|
81
85
|
def assert_ummy_close(self,u1,u2):
|
|
82
86
|
self.assertTrue(abs(u1.correlation(u2)) > 1 - 1e-4)
|
|
83
87
|
u1x = max(u1.x,u1.u,u2.x,u2.u)
|
|
@@ -94,6 +98,9 @@ class TestComplex(unittest.TestCase):
|
|
|
94
98
|
self.assert_ummy_close(i1.imag,i2.imag)
|
|
95
99
|
|
|
96
100
|
def test_immy_init(self,n=1000,prnt=False):
|
|
101
|
+
"""
|
|
102
|
+
Test immy creation using the real,imag,r and phi keywords.
|
|
103
|
+
"""
|
|
97
104
|
for m in range(n):
|
|
98
105
|
x,xr,xi = make_immy(prnt=prnt)
|
|
99
106
|
|
|
@@ -175,6 +182,9 @@ class TestComplex(unittest.TestCase):
|
|
|
175
182
|
self.assert_immy_close(c,cn)
|
|
176
183
|
|
|
177
184
|
def test_immy_add(self,n=1000,prnt=False):
|
|
185
|
+
"""
|
|
186
|
+
Test immy addition.
|
|
187
|
+
"""
|
|
178
188
|
self._test_immy_bop(lambda a,b: a + b,np.add,n,prnt)
|
|
179
189
|
|
|
180
190
|
for m in range(10):
|
|
@@ -183,6 +193,9 @@ class TestComplex(unittest.TestCase):
|
|
|
183
193
|
self.assertTrue(0 + i == i)
|
|
184
194
|
|
|
185
195
|
def test_immy_sub(self,n=1000,prnt=False):
|
|
196
|
+
"""
|
|
197
|
+
Test immy subtraction.
|
|
198
|
+
"""
|
|
186
199
|
self._test_immy_bop(lambda a,b: a - b,np.subtract,n,prnt)
|
|
187
200
|
|
|
188
201
|
for m in range(10):
|
|
@@ -191,6 +204,9 @@ class TestComplex(unittest.TestCase):
|
|
|
191
204
|
self.assertTrue(0 - i == -i)
|
|
192
205
|
|
|
193
206
|
def test_immy_mul(self,n=1000,prnt=False):
|
|
207
|
+
"""
|
|
208
|
+
Test immy multiplication.
|
|
209
|
+
"""
|
|
194
210
|
self._test_immy_bop(lambda a,b: a*b,np.multiply,n,prnt)
|
|
195
211
|
|
|
196
212
|
for m in range(10):
|
|
@@ -203,6 +219,9 @@ class TestComplex(unittest.TestCase):
|
|
|
203
219
|
self.assertTrue(immy(1)*i == i)
|
|
204
220
|
|
|
205
221
|
def test_immy_div(self,n=1000,prnt=False):
|
|
222
|
+
"""
|
|
223
|
+
Test immy division.
|
|
224
|
+
"""
|
|
206
225
|
self._test_immy_bop(lambda a,b: a/b,np.divide,n,prnt,allow_small=False)
|
|
207
226
|
|
|
208
227
|
for m in range(10):
|
|
@@ -210,6 +229,9 @@ class TestComplex(unittest.TestCase):
|
|
|
210
229
|
self.assertTrue(i/1 == i)
|
|
211
230
|
|
|
212
231
|
def test_immy_pow(self,n=1000,prnt=False):
|
|
232
|
+
"""
|
|
233
|
+
Test immy exponentiation.
|
|
234
|
+
"""
|
|
213
235
|
#_test_immy_bop(lambda a,b: a**b,np.power,n,prnt,allow_small=False)
|
|
214
236
|
|
|
215
237
|
for m in range(10):
|
metrolopy/tests/test_create.py
CHANGED
|
@@ -9,6 +9,9 @@ from metrolopy.tests.common import rand,display
|
|
|
9
9
|
|
|
10
10
|
class TestCreate(unittest.TestCase):
|
|
11
11
|
def test_gummy_init(self,n=None,exception_on_warning=True,prnt=False,plot=False):
|
|
12
|
+
"""
|
|
13
|
+
Test gummy creation.
|
|
14
|
+
"""
|
|
12
15
|
try:
|
|
13
16
|
from scipy.stats import norm, t
|
|
14
17
|
|
|
@@ -161,8 +164,8 @@ class TestCreate(unittest.TestCase):
|
|
|
161
164
|
|
|
162
165
|
if rand.randint(10) == 0:
|
|
163
166
|
n = rand.randint(12)
|
|
164
|
-
if bayesian and n > 0:
|
|
165
|
-
|
|
167
|
+
#if bayesian and n > 0:
|
|
168
|
+
# dof = float('inf')
|
|
166
169
|
if n == 0:
|
|
167
170
|
nm = g.name
|
|
168
171
|
g = uc.gummy(g)
|
|
@@ -292,10 +295,11 @@ class TestCreate(unittest.TestCase):
|
|
|
292
295
|
|
|
293
296
|
self.assertTrue((g.x - x)/u < 1e-6)
|
|
294
297
|
|
|
295
|
-
if
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
298
|
+
if not uc.gummy.bayesian:
|
|
299
|
+
if dof == float('inf'):
|
|
300
|
+
self.assertTrue(g.dof == float('inf'))
|
|
301
|
+
else:
|
|
302
|
+
self.assertTrue((g.dof - dof)/dof < 1e-6)
|
|
299
303
|
|
|
300
304
|
if uunit is not None and uunit != unit:
|
|
301
305
|
self.assertTrue(g.uunit is uc.Unit.unit(uunit))
|
metrolopy/tests/test_gummy.py
CHANGED
|
@@ -28,6 +28,9 @@ import numpy as np
|
|
|
28
28
|
import unittest
|
|
29
29
|
|
|
30
30
|
class TestGummy(unittest.TestCase):
|
|
31
|
+
"""
|
|
32
|
+
Various unit tests of gummy properties and methods.
|
|
33
|
+
"""
|
|
31
34
|
def test_ku(self):
|
|
32
35
|
from metrolopy.gummy import _ku
|
|
33
36
|
from decimal import Decimal
|
|
@@ -35,19 +38,11 @@ class TestGummy(unittest.TestCase):
|
|
|
35
38
|
self.assertTrue(_ku(2.1,3.3) == 2.1*3.3)
|
|
36
39
|
self.assertTrue(_ku(2.1,Decimal(3.3)) == Decimal(float(2.1))*Decimal(3.3))
|
|
37
40
|
|
|
38
|
-
def test_lg10(self):
|
|
39
|
-
from metrolopy.gummy import _lg10
|
|
40
|
-
from mpmath import mpf,log10
|
|
41
|
-
from decimal import Decimal
|
|
42
|
-
from fractions import Fraction
|
|
43
|
-
import math
|
|
44
|
-
|
|
45
|
-
self.assertTrue(_lg10(mpf(2.2)) == log10(mpf(2.2)))
|
|
46
|
-
self.assertTrue(_lg10(Decimal(2.2)) == Decimal(2.2).log10())
|
|
47
|
-
self.assertTrue(_lg10(2.2) == np.log10(2.2))
|
|
48
|
-
self.assertTrue(_lg10(Fraction(2,3)) == math.log10(float(Fraction(2,3))))
|
|
49
|
-
|
|
50
41
|
def test_meta_properties(self):
|
|
42
|
+
"""
|
|
43
|
+
Test class properties.
|
|
44
|
+
|
|
45
|
+
"""
|
|
51
46
|
a = uc.gummy.cimethod
|
|
52
47
|
self.assertTrue(isinstance(a,str))
|
|
53
48
|
uc.gummy.cimethod = 'symmetric'
|
|
@@ -135,6 +130,9 @@ class TestGummy(unittest.TestCase):
|
|
|
135
130
|
uc.gummy.thousand_spaces = ts
|
|
136
131
|
|
|
137
132
|
def test_init(self):
|
|
133
|
+
"""
|
|
134
|
+
Test gummy creation
|
|
135
|
+
"""
|
|
138
136
|
g = uc.gummy(1.2,3.4)
|
|
139
137
|
self.assertTrue(g.x == 1.2)
|
|
140
138
|
self.assertTrue(g.u == 3.4)
|
|
@@ -217,7 +215,7 @@ class TestGummy(unittest.TestCase):
|
|
|
217
215
|
try:
|
|
218
216
|
uc.gummy(3.3,1.3,unit='%',uunit='m')
|
|
219
217
|
self.assertTrue(False)
|
|
220
|
-
except uc.
|
|
218
|
+
except uc.IncompatibleUnitsError:
|
|
221
219
|
pass
|
|
222
220
|
|
|
223
221
|
gg = uc.gummy(3.3,1.4,unit='%',uunit=uc.one)
|
|
@@ -235,6 +233,9 @@ class TestGummy(unittest.TestCase):
|
|
|
235
233
|
self.assertTrue(gg.name == 'def')
|
|
236
234
|
|
|
237
235
|
def test_U(self):
|
|
236
|
+
"""
|
|
237
|
+
Test expanded uncertainty.
|
|
238
|
+
"""
|
|
238
239
|
a = uc.gummy(1.1,2.2)
|
|
239
240
|
self.assertTrue(a.U == 2.2)
|
|
240
241
|
b = uc.gummy(3,4.4)
|
|
@@ -252,7 +253,10 @@ class TestGummy(unittest.TestCase):
|
|
|
252
253
|
self.assertTrue(abs(c.U[1] - 4.4*1.1/3**2) < 1e-12)
|
|
253
254
|
|
|
254
255
|
def test_set_U(self):
|
|
255
|
-
|
|
256
|
+
"""
|
|
257
|
+
Additional tests for expanded uncertainty.
|
|
258
|
+
"""
|
|
259
|
+
g = uc.gummy(1.0,1.0,k=2,unit='cm',uunit='mm')
|
|
256
260
|
self.assertTrue(g.U == 1)
|
|
257
261
|
self.assertTrue(g.uunit is uc.unit('mm'))
|
|
258
262
|
g.unit = 'm'
|
|
@@ -266,6 +270,9 @@ class TestGummy(unittest.TestCase):
|
|
|
266
270
|
self.assertTrue(c.U[1] == 4.4)
|
|
267
271
|
|
|
268
272
|
def test_iset_U(self):
|
|
273
|
+
"""
|
|
274
|
+
Additional tests for expanded uncertainty.
|
|
275
|
+
"""
|
|
269
276
|
g = uc.gummy(1)
|
|
270
277
|
self.assertTrue(g._iset_U() == 0)
|
|
271
278
|
self.assertTrue(g._iset_U(unit='m').unit is uc.unit('m'))
|
|
@@ -285,7 +292,7 @@ class TestGummy(unittest.TestCase):
|
|
|
285
292
|
try:
|
|
286
293
|
self.assertTrue(g._iset_U(unit='kg'))
|
|
287
294
|
self.assertTrue(False)
|
|
288
|
-
except uc.
|
|
295
|
+
except uc.IncompatibleUnitsError:
|
|
289
296
|
pass
|
|
290
297
|
|
|
291
298
|
g = uc.gummy(0,1,unit='m')
|
|
@@ -296,6 +303,9 @@ class TestGummy(unittest.TestCase):
|
|
|
296
303
|
self.assertTrue(g._iset_U(k=2) == 2)
|
|
297
304
|
|
|
298
305
|
def test_Usim(self):
|
|
306
|
+
"""
|
|
307
|
+
Test the gummy.Usim property
|
|
308
|
+
"""
|
|
299
309
|
g = uc.gummy(-8.5,1,unit='m')
|
|
300
310
|
g.sim()
|
|
301
311
|
self.assertTrue(abs(g.Usim[0] - 1) < 0.5)
|
|
@@ -364,16 +374,25 @@ class TestGummy(unittest.TestCase):
|
|
|
364
374
|
self.assertTrue(g.simsorted[i+1] >= g.simsorted[i])
|
|
365
375
|
|
|
366
376
|
def test_distribution(self):
|
|
377
|
+
"""
|
|
378
|
+
Test gummy.distribution
|
|
379
|
+
"""
|
|
367
380
|
g = uc.gummy(1,1)
|
|
368
381
|
self.assertTrue(isinstance(g.distribution,uc.Distribution))
|
|
369
382
|
|
|
370
383
|
def test_ksim(self):
|
|
384
|
+
"""
|
|
385
|
+
Test gummy.ksim
|
|
386
|
+
"""
|
|
371
387
|
g = uc.gummy(1,1)
|
|
372
388
|
g.p = 0.9545
|
|
373
389
|
g.sim()
|
|
374
390
|
self.assertTrue(abs(g.ksim - 2) < 0.1)
|
|
375
391
|
|
|
376
392
|
def test_independent(self):
|
|
393
|
+
"""
|
|
394
|
+
Test gummy.independant
|
|
395
|
+
"""
|
|
377
396
|
a = uc.gummy(1,1)
|
|
378
397
|
b = uc.gummy(-2,2)
|
|
379
398
|
c = a + b
|
|
@@ -383,6 +402,9 @@ class TestGummy(unittest.TestCase):
|
|
|
383
402
|
self.assertTrue(not d.independent)
|
|
384
403
|
|
|
385
404
|
def test_name(self):
|
|
405
|
+
"""
|
|
406
|
+
Test setting and getting gummy.name
|
|
407
|
+
"""
|
|
386
408
|
g = uc.gummy(1,1)
|
|
387
409
|
self.assertTrue(g.name is None)
|
|
388
410
|
g.name = 'abc'
|
|
@@ -427,6 +449,9 @@ class TestGummy(unittest.TestCase):
|
|
|
427
449
|
pass
|
|
428
450
|
|
|
429
451
|
def test_unit(self):
|
|
452
|
+
"""
|
|
453
|
+
Test setting and getting gummy.unit
|
|
454
|
+
"""
|
|
430
455
|
g = uc.gummy(1,1,unit='m')
|
|
431
456
|
self.assertTrue(g.unit is uc.unit('m'))
|
|
432
457
|
self.assertTrue(str(g.unit) == 'm')
|
|
@@ -440,6 +465,9 @@ class TestGummy(unittest.TestCase):
|
|
|
440
465
|
self.assertTrue(g.u == 1000)
|
|
441
466
|
|
|
442
467
|
def test_uunit(self):
|
|
468
|
+
"""
|
|
469
|
+
Test setting and getting gummy.uunit
|
|
470
|
+
"""
|
|
443
471
|
g = uc.gummy(1,1)
|
|
444
472
|
self.assertTrue(g.uunit is None)
|
|
445
473
|
g = uc.gummy(1,1,unit='m',uunit='cm')
|
|
@@ -458,6 +486,9 @@ class TestGummy(unittest.TestCase):
|
|
|
458
486
|
self.assertTrue(g.uunit is None)
|
|
459
487
|
|
|
460
488
|
def test_uunit_is_rel(self):
|
|
489
|
+
"""
|
|
490
|
+
Test gummy.uunit_is_rel
|
|
491
|
+
"""
|
|
461
492
|
g = uc.gummy(1,1)
|
|
462
493
|
self.assertTrue(not g.uunit_is_rel)
|
|
463
494
|
g.uunit='%'
|
|
@@ -471,6 +502,9 @@ class TestGummy(unittest.TestCase):
|
|
|
471
502
|
self.assertTrue(g.uunit_is_rel)
|
|
472
503
|
|
|
473
504
|
def test_k(self):
|
|
505
|
+
"""
|
|
506
|
+
Test setting and getting gummy.k
|
|
507
|
+
"""
|
|
474
508
|
g = uc.gummy(1)
|
|
475
509
|
self.assertTrue(g.k is None)
|
|
476
510
|
|
|
@@ -491,6 +525,9 @@ class TestGummy(unittest.TestCase):
|
|
|
491
525
|
self.assertTrue(abs(g.k - 1.96) < 0.01)
|
|
492
526
|
|
|
493
527
|
def test_p(self):
|
|
528
|
+
"""
|
|
529
|
+
Test setting and getting gummy.p
|
|
530
|
+
"""
|
|
494
531
|
uc.gummy.p_method = None
|
|
495
532
|
g = uc.gummy(1,1)
|
|
496
533
|
g.p = 0.95
|
|
@@ -510,6 +547,9 @@ class TestGummy(unittest.TestCase):
|
|
|
510
547
|
pass
|
|
511
548
|
|
|
512
549
|
def test_correlation(self):
|
|
550
|
+
"""
|
|
551
|
+
Test gummy.correlation
|
|
552
|
+
"""
|
|
513
553
|
a = uc.gummy(1,1)
|
|
514
554
|
b = uc.gummy(1,2)
|
|
515
555
|
c = a + b
|
|
@@ -522,6 +562,9 @@ class TestGummy(unittest.TestCase):
|
|
|
522
562
|
self.assertTrue(a.correlation(a) == 1)
|
|
523
563
|
|
|
524
564
|
def test_covariance(self):
|
|
565
|
+
"""
|
|
566
|
+
Test gummy.covariance
|
|
567
|
+
"""
|
|
525
568
|
a = uc.gummy(1,1)
|
|
526
569
|
b = uc.gummy(1,2)
|
|
527
570
|
c = a + b
|
|
@@ -534,33 +577,10 @@ class TestGummy(unittest.TestCase):
|
|
|
534
577
|
self.assertTrue(a.covariance(a) == 1)
|
|
535
578
|
self.assertTrue(b.covariance(b) == 4)
|
|
536
579
|
|
|
537
|
-
def test_correlation_matrix(self):
|
|
538
|
-
a = uc.gummy(1,1)
|
|
539
|
-
b = uc.gummy(1,2)
|
|
540
|
-
c = a + b
|
|
541
|
-
m = uc.gummy.correlation_matrix([a,b,c])
|
|
542
|
-
self.assertTrue(m[0][0] == m[1][1] == m[2,2] == 1)
|
|
543
|
-
self.assertTrue(m[0][1] == m[1][0] == 0)
|
|
544
|
-
self.assertTrue(abs(m[2][0] - 1/c.u) < 1e-4)
|
|
545
|
-
self.assertTrue(abs(m[0][2] - 1/c.u) < 1e-4)
|
|
546
|
-
self.assertTrue(abs(m[2][1] - 2/c.u) < 1e-4)
|
|
547
|
-
self.assertTrue(abs(m[1][2] - 2/c.u) < 1e-4)
|
|
548
|
-
|
|
549
|
-
def test_covariance_matrix(self):
|
|
550
|
-
a = uc.gummy(1,1)
|
|
551
|
-
b = uc.gummy(1,2)
|
|
552
|
-
c = a + b
|
|
553
|
-
m = uc.gummy.covariance_matrix([a,b,c])
|
|
554
|
-
self.assertTrue(m[0][0] == 1)
|
|
555
|
-
self.assertTrue(m[1][1] == 4)
|
|
556
|
-
self.assertTrue(abs(m[2][2] - 5) < 1e-4)
|
|
557
|
-
self.assertTrue(m[0][1] == m[1][0] == 0)
|
|
558
|
-
self.assertTrue(abs(m[2][0] - 1) < 1e-4)
|
|
559
|
-
self.assertTrue(abs(m[0][2] - 1) < 1e-4)
|
|
560
|
-
self.assertTrue(abs(m[2][1] - 4) < 1e-4)
|
|
561
|
-
self.assertTrue(abs(m[1][2] - 4) < 1e-4)
|
|
562
|
-
|
|
563
580
|
def test_correlation_sim(self):
|
|
581
|
+
"""
|
|
582
|
+
Test gummy.correlation_sim
|
|
583
|
+
"""
|
|
564
584
|
a = uc.gummy(1,1)
|
|
565
585
|
b = uc.gummy(1,2)
|
|
566
586
|
c = a + b
|
|
@@ -573,6 +593,9 @@ class TestGummy(unittest.TestCase):
|
|
|
573
593
|
self.assertTrue(abs(a.correlation_sim(a) - 1) < 1e-6)
|
|
574
594
|
|
|
575
595
|
def test_covariance_sim(self):
|
|
596
|
+
"""
|
|
597
|
+
Test gummy.covariance_sim
|
|
598
|
+
"""
|
|
576
599
|
a = uc.gummy(1,1)
|
|
577
600
|
b = uc.gummy(1,2)
|
|
578
601
|
c = a + b
|
|
@@ -586,6 +609,9 @@ class TestGummy(unittest.TestCase):
|
|
|
586
609
|
self.assertTrue(abs(b.covariance_sim(b) - 4) < 1e-1)
|
|
587
610
|
|
|
588
611
|
def test_correlation_matrix(self):
|
|
612
|
+
"""
|
|
613
|
+
Test gummy.correlation_matrix
|
|
614
|
+
"""
|
|
589
615
|
a = uc.gummy(1,1)
|
|
590
616
|
b = uc.gummy(1,2)
|
|
591
617
|
c = a + b
|
|
@@ -602,6 +628,9 @@ class TestGummy(unittest.TestCase):
|
|
|
602
628
|
self.assertTrue((m[1][2] - 2/c.u) < 1e-1)
|
|
603
629
|
|
|
604
630
|
def test_covariance_matrix(self):
|
|
631
|
+
"""
|
|
632
|
+
Test gummy.covariance_matrix
|
|
633
|
+
"""
|
|
605
634
|
a = uc.gummy(1,1)
|
|
606
635
|
b = uc.gummy(1,2)
|
|
607
636
|
c = a + b
|
|
@@ -618,10 +647,16 @@ class TestGummy(unittest.TestCase):
|
|
|
618
647
|
self.assertTrue((m[1][2] - 4) < 1e-1)
|
|
619
648
|
|
|
620
649
|
def test_finfo(self):
|
|
650
|
+
"""
|
|
651
|
+
Test gummy.finfo
|
|
652
|
+
"""
|
|
621
653
|
a = uc.gummy(1,1)
|
|
622
654
|
self.assertTrue(a.finfo.rel_u == 0)
|
|
623
655
|
|
|
624
656
|
def test_real(self):
|
|
657
|
+
"""
|
|
658
|
+
Test gummy.real
|
|
659
|
+
"""
|
|
625
660
|
a = uc.gummy(1.1,0.3)
|
|
626
661
|
b = a.real
|
|
627
662
|
self.assertTrue(not a is b)
|
|
@@ -630,6 +665,9 @@ class TestGummy(unittest.TestCase):
|
|
|
630
665
|
self.assertTrue(a.correlation(b) == 1)
|
|
631
666
|
|
|
632
667
|
def test_conjugate(self):
|
|
668
|
+
"""
|
|
669
|
+
Test gummy.conjugate
|
|
670
|
+
"""
|
|
633
671
|
a = uc.gummy(1.1,0.3)
|
|
634
672
|
b = a.conjugate()
|
|
635
673
|
self.assertTrue(not a is b)
|
|
@@ -638,26 +676,38 @@ class TestGummy(unittest.TestCase):
|
|
|
638
676
|
self.assertTrue(a.correlation(b) == 1)
|
|
639
677
|
|
|
640
678
|
def test_angle(self):
|
|
679
|
+
"""
|
|
680
|
+
Test gummy.angle
|
|
681
|
+
"""
|
|
641
682
|
self.assertTrue(uc.gummy(1.1,0.3).angle() == 0)
|
|
642
683
|
self.assertTrue(abs(abs(uc.gummy(-1.1,0.3).angle()) - np.pi) < 1e-10)
|
|
643
684
|
|
|
644
685
|
def test_utype(self):
|
|
686
|
+
"""
|
|
687
|
+
Test gummy.utype
|
|
688
|
+
"""
|
|
645
689
|
a = uc.gummy(1.2,1,1,utype='A')
|
|
646
690
|
self.assertTrue(a.utype == 'A')
|
|
647
691
|
b = uc.gummy(1.2,1,1,utype='xyz')
|
|
648
692
|
self.assertTrue(b.utype == 'xyz')
|
|
649
693
|
|
|
650
694
|
def test_ufrom(self):
|
|
695
|
+
"""
|
|
696
|
+
Test gummy.ufrom
|
|
697
|
+
"""
|
|
651
698
|
a = uc.gummy(1.2,0.2,utype='A')
|
|
652
699
|
b = uc.gummy(3.2,0.5,utype='A')
|
|
653
700
|
c = uc.gummy(0.9,0.2,utype='B')
|
|
654
701
|
d = a + b + c
|
|
655
702
|
self.assertTrue(abs(d.ufrom('A') - np.sqrt(0.2**2+0.5**2)) < 1e-8)
|
|
656
|
-
uc.gummy.simulate([d,
|
|
657
|
-
self.assertTrue(abs(d.
|
|
703
|
+
uc.gummy.simulate([d,b])
|
|
704
|
+
self.assertTrue(abs(d.ufromsim('A') - np.sqrt(0.2**2+0.5**2)) < 1e-2)
|
|
658
705
|
self.assertTrue(d.ufrom(c) == 0.2)
|
|
659
706
|
|
|
660
707
|
def test_dof_from(self):
|
|
708
|
+
"""
|
|
709
|
+
Test gummy.doffrom
|
|
710
|
+
"""
|
|
661
711
|
a = uc.gummy(1.2,0.2,dof=5,utype='A')
|
|
662
712
|
b = uc.gummy(3.2,0.5,dof=7,utype='A')
|
|
663
713
|
c = uc.gummy(0.9,0.2,utype='B')
|
metrolopy/tests/test_misc.py
CHANGED
|
@@ -29,7 +29,9 @@ import unittest
|
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
class TestMisc(unittest.TestCase):
|
|
32
|
-
|
|
32
|
+
"""
|
|
33
|
+
Miscellaneaus tests.
|
|
34
|
+
"""
|
|
33
35
|
def test_reduce(self):
|
|
34
36
|
a = uc.gummy(12.367,0.22,unit='mm/m')
|
|
35
37
|
a.reduce_unit()
|
|
@@ -103,6 +105,7 @@ class TestMisc(unittest.TestCase):
|
|
|
103
105
|
return t.ppf(1-(1-con)/2, len(x)-1)*x.std(ddof=1)/np.sqrt(len(x))
|
|
104
106
|
|
|
105
107
|
x = np.random.rand(5)
|
|
108
|
+
uc.gummy.bayesian = False
|
|
106
109
|
g = uc.mean(x)
|
|
107
110
|
g.p = 'ssd'
|
|
108
111
|
self.assertTrue(abs(con-g.p) < 1e-6)
|