1212"""
1313
1414import math
15- import unittest
1615
1716import numpy as np
17+ import pytest
1818
1919from ..gravity import Attraction , BaseGravity , Doubly , Gravity , Production
2020
2121
22- class TestGravity ( unittest . TestCase ) :
22+ class TestGravity :
2323 """Tests for gravity-type models"""
2424
25- def setUp (self ):
25+ def setup_method (self ):
2626 self .f = np .array (
2727 [
2828 1131 ,
@@ -490,11 +490,11 @@ def test_BaseGravity_exp(self):
490490 dij = np .array (self .dij ).reshape ((- 1 , 1 ))
491491 model = BaseGravity (f , dij , "exp" , constant = False )
492492 np .testing .assert_allclose (model .params , [0.01641585 ], atol = 0.0001 )
493- self . assertAlmostEqual (model .AIC , 957622.28429746185 , delta = 0.0001 )
493+ assert pytest . approx (model .AIC , rel = 0.0001 ) == 957622.28429746185
494494 np .testing .assert_allclose (model .cov_params , [[1.92096665e-10 ]])
495- self . assertAlmostEqual (model .deviance , 1087408.9707170483 , delta = 0.0001 )
496- self . assertAlmostEqual (model .llf , - 478810.14214873099 , delta = 0.0001 )
497- self . assertAlmostEqual (model .llnull , - 88037.0499629 , delta = 0.0001 )
495+ assert pytest . approx (model .deviance , rel = 0.0001 ) == 1087408.9707170483
496+ assert pytest . approx (model .llf , rel = 0.0001 ) == - 478810.14214873099
497+ assert pytest . approx (model .llnull , rel = 0.0001 ) == - 88037.0499629
498498 np .testing .assert_allclose (model .pvalues , [0.0 ])
499499 np .testing .assert_allclose (model .std_err , [1.38598941e-05 ])
500500 np .testing .assert_allclose (model .tvalues , [1184.41355888 ])
@@ -581,11 +581,11 @@ def test_BaseGravity_pow(self):
581581 dij = np .array (self .dij ).reshape ((- 1 , 1 ))
582582 model = BaseGravity (f , dij , "pow" , constant = False )
583583 np .testing .assert_allclose (model .params , [1.27223738 ], atol = 0.0001 )
584- self . assertAlmostEqual (model .AIC , 377298.04716333596 , delta = 0.0001 )
584+ assert pytest . approx (model .AIC , rel = 0.0001 ) == 377298.04716333596
585585 np .testing .assert_allclose (model .cov_params , [[4.31955426e-07 ]])
586- self . assertAlmostEqual (model .deviance , 409811.34329065739 , delta = 0.0001 )
587- self . assertAlmostEqual (model .llf , - 188648.02358166798 , delta = 0.0001 )
588- self . assertAlmostEqual (model .llnull , - 88037.0499629 , delta = 0.0001 )
586+ assert pytest . approx (model .deviance , rel = 0.0001 ) == 409811.34329065739
587+ assert pytest . approx (model .llf , rel = 0.0001 ) == - 188648.02358166798
588+ assert pytest . approx (model .llnull , rel = 0.0001 ) == - 88037.0499629
589589 np .testing .assert_allclose (model .pvalues , [0.0 ])
590590 np .testing .assert_allclose (model .std_err , [0.00065723 ], atol = 0.000001 )
591591 np .testing .assert_allclose (model .tvalues , [1935.74740017 ])
@@ -672,11 +672,11 @@ def test_QuasiPoisson(self):
672672 dij = np .array (self .dij ).reshape ((- 1 , 1 ))
673673 model = BaseGravity (f , dij , "exp" , constant = False , Quasi = True )
674674 np .testing .assert_allclose (model .params , [0.01641585 ], atol = 0.0001 )
675- self . assertTrue ( math .isnan (model .AIC ) )
675+ assert math .isnan (model .AIC )
676676 np .testing .assert_allclose (model .cov_params , [[0.00079749 ]], atol = 1.0e-8 )
677- self . assertAlmostEqual (model .deviance , 1087408.9707170483 , delta = 0.0001 )
678- self . assertTrue ( np .isnan (model .llf ) )
679- self . assertTrue ( np .isnan (model .llnull ) )
677+ assert pytest . approx (model .deviance , rel = 0.0001 ) == 1087408.9707170483
678+ assert np .isnan (model .llf )
679+ assert np .isnan (model .llnull )
680680 np .testing .assert_allclose (model .pvalues , [0.56103881 ])
681681 np .testing .assert_allclose (model .std_err , [0.02823993 ], atol = 1.0e-8 )
682682 np .testing .assert_allclose (model .tvalues , [0.58129922 ])
@@ -764,7 +764,7 @@ def test_Gravity(self):
764764 model .params ,
765765 [- 7.95447436e00 , 8.63867812e-01 , 8.80474585e-01 , - 6.20544765e-03 ],
766766 )
767- self . assertAlmostEqual (model .AIC , 20395.085388908723 , delta = 0.0001 )
767+ assert pytest . approx (model .AIC , rel = 0.0001 ) == 20395.085388908723
768768 np .testing .assert_allclose (
769769 model .cov_params ,
770770 [
@@ -774,9 +774,9 @@ def test_Gravity(self):
774774 [- 2.40317578e-06 , 1.16544737e-07 , 9.94368232e-08 , 2.68830005e-09 ],
775775 ],
776776 )
777- self . assertAlmostEqual (model .deviance , 19806.408696637576 , delta = 0.0001 )
778- self . assertAlmostEqual (model .llf , - 10193.542694454361 , delta = 0.0001 )
779- self . assertAlmostEqual (model .llnull , - 88037.0499629 , delta = 0.0001 )
777+ assert pytest . approx (model .deviance , rel = 0.0001 ) == 19806.408696637576
778+ assert pytest . approx (model .llf , rel = 0.0001 ) == - 10193.542694454361
779+ assert pytest . approx (model .llnull , rel = 0.0001 ) == - 88037.0499629
780780 np .testing .assert_allclose (model .pvalues , [0.0 , 0.0 , 0.0 , 0.0 ])
781781 np .testing .assert_allclose (
782782 model .std_err ,
@@ -862,19 +862,19 @@ def test_Gravity(self):
862862 199.99352826 ,
863863 ],
864864 )
865- self . assertAlmostEqual (model .D2 , 0.88713874099960177 )
866- self . assertAlmostEqual (model .adj_D2 , 0.88215956780840776 )
867- self . assertAlmostEqual (model .SSI , 0.72706171189789603 )
868- self . assertAlmostEqual (model .pseudoR2 , 0.88421303645743465 )
869- self . assertAlmostEqual (model .adj_pseudoR2 , 0.88416760104130376 )
870- self . assertAlmostEqual (model .SRMSE , 0.62063116008447083 )
865+ assert pytest . approx (model .D2 ) == 0.88713874099960177
866+ assert pytest . approx (model .adj_D2 ) == 0.88215956780840776
867+ assert pytest . approx (model .SSI ) == 0.72706171189789603
868+ assert pytest . approx (model .pseudoR2 ) == 0.88421303645743465
869+ assert pytest . approx (model .adj_pseudoR2 ) == 0.88416760104130376
870+ assert pytest . approx (model .SRMSE ) == 0.62063116008447083
871871
872872 def test_local_Gravity (self ):
873873 model = Gravity (self .f , self .o_var , self .d_var , self .dij , "exp" )
874874 local = model .local (loc_index = self .o , locs = np .unique (self .o ))
875- self . assertEqual (
876- list (local .keys ()).sort (),
877- [
875+ assert (
876+ list (local .keys ()).sort ()
877+ == [
878878 "stde0" ,
879879 "stde1" ,
880880 "stde2" ,
@@ -895,7 +895,7 @@ def test_local_Gravity(self):
895895 "D2" ,
896896 "pseudoR2" ,
897897 "param2" ,
898- ].sort (),
898+ ].sort ()
899899 )
900900
901901 def test_Production (self ):
@@ -917,7 +917,7 @@ def test_Production(self):
917917 ],
918918 atol = 0.0001 ,
919919 )
920- self . assertAlmostEqual (model .AIC , 15882.651018068489 , delta = 0.0001 )
920+ assert pytest . approx (model .AIC , rel = 0.0001 ) == 15882.651018068489
921921 np .testing .assert_allclose (
922922 model .cov_params ,
923923 [
@@ -1066,9 +1066,9 @@ def test_Production(self):
10661066 ],
10671067 ],
10681068 )
1069- self . assertAlmostEqual (model .deviance , 15279.974241770311 , delta = 0.0001 )
1070- self . assertAlmostEqual (model .llf , - 7930.3255090342445 , delta = 0.0001 )
1071- self . assertAlmostEqual (model .llnull , - 88037.0499629 , delta = 0.0001 )
1069+ assert pytest . approx (model .deviance , rel = 0.0001 ) == 15279.974241770311
1070+ assert pytest . approx (model .llf , rel = 0.0001 ) == - 7930.3255090342445
1071+ assert pytest . approx (model .llnull , rel = 0.0001 ) == - 88037.0499629
10721072 np .testing .assert_allclose (
10731073 model .pvalues ,
10741074 [
@@ -1194,19 +1194,19 @@ def test_Production(self):
11941194 6.40968342e02 ,
11951195 ],
11961196 )
1197- self . assertAlmostEqual (model .D2 , 0.912931356874 )
1198- self . assertAlmostEqual (model .adj_D2 , 0.89865780882 )
1199- self . assertAlmostEqual (model .SSI , 0.740619203383 )
1200- self . assertAlmostEqual (model .pseudoR2 , 0.909920590111 )
1201- self . assertAlmostEqual (model .adj_pseudoR2 , 0.909795642717 )
1202- self . assertAlmostEqual (model .SRMSE , 0.46622685091043831 )
1197+ assert pytest . approx (model .D2 ) == 0.912931356874
1198+ assert pytest . approx (model .adj_D2 ) == 0.89865780882
1199+ assert pytest . approx (model .SSI ) == 0.740619203383
1200+ assert pytest . approx (model .pseudoR2 ) == 0.909920590111
1201+ assert pytest . approx (model .adj_pseudoR2 ) == 0.909795642717
1202+ assert pytest . approx (model .SRMSE ) == 0.46622685091043831
12031203
12041204 def test_local_Production (self ):
12051205 model = Production (self .f , self .o , self .d_var , self .dij , "exp" )
12061206 local = model .local (locs = np .unique (self .o ))
1207- self . assertEqual (
1208- list (local .keys ()).sort (),
1209- [
1207+ assert (
1208+ list (local .keys ()).sort ()
1209+ == [
12101210 "stde0" ,
12111211 "stde1" ,
12121212 "stde2" ,
@@ -1227,7 +1227,7 @@ def test_local_Production(self):
12271227 "D2" ,
12281228 "pseudoR2" ,
12291229 "param2" ,
1230- ].sort (),
1230+ ].sort ()
12311231 )
12321232
12331233 def test_Attraction (self ):
@@ -1249,7 +1249,7 @@ def test_Attraction(self):
12491249 ],
12501250 atol = 0.001 ,
12511251 )
1252- self . assertAlmostEqual (model .AIC , 16275.899321893821 , delta = 0.0001 )
1252+ assert pytest . approx (model .AIC , rel = 0.0001 ) == 16275.899321893821
12531253 np .testing .assert_allclose (
12541254 model .cov_params ,
12551255 [
@@ -1398,9 +1398,9 @@ def test_Attraction(self):
13981398 ],
13991399 ],
14001400 )
1401- self . assertAlmostEqual (model .deviance , 15673.222613627502 , delta = 0.0001 )
1402- self . assertAlmostEqual (model .llf , - 8126.9496609469106 , delta = 0.0001 )
1403- self . assertAlmostEqual (model .llnull , - 88037.0499629 , delta = 0.0001 )
1401+ assert pytest . approx (model .deviance , rel = 0.0001 ) == 15673.222613627502
1402+ assert pytest . approx (model .llf , rel = 0.0001 ) == - 8126.9496609469106
1403+ assert pytest . approx (model .llnull , rel = 0.0001 ) == - 88037.0499629
14041404 np .testing .assert_allclose (
14051405 model .pvalues ,
14061406 [
@@ -1526,19 +1526,19 @@ def test_Attraction(self):
15261526 3.66824277e02 ,
15271527 ],
15281528 )
1529- self . assertAlmostEqual (model .D2 , 0.910690541438 )
1530- self . assertAlmostEqual (model .adj_D2 , 0.896049646592 )
1531- self . assertAlmostEqual (model .SSI , 0.750634498293 )
1532- self . assertAlmostEqual (model .pseudoR2 , 0.90768716507 )
1533- self . assertAlmostEqual (model .adj_pseudoR2 , 0.907562217676 )
1534- self . assertAlmostEqual (model .SRMSE , 0.59478477816884223 )
1529+ assert pytest . approx (model .D2 ) == 0.910690541438
1530+ assert pytest . approx (model .adj_D2 ) == 0.896049646592
1531+ assert pytest . approx (model .SSI ) == 0.750634498293
1532+ assert pytest . approx (model .pseudoR2 ) == 0.90768716507
1533+ assert pytest . approx (model .adj_pseudoR2 ) == 0.907562217676
1534+ assert pytest . approx (model .SRMSE ) == 0.59478477816884223
15351535
15361536 def test_local_Attraction (self ):
15371537 model = Attraction (self .f , self .d , self .o_var , self .dij , "exp" )
15381538 local = model .local (locs = np .unique (self .d ))
1539- self . assertEqual (
1540- list (local .keys ()).sort (),
1541- [
1539+ assert (
1540+ list (local .keys ()).sort ()
1541+ == [
15421542 "stde0" ,
15431543 "stde1" ,
15441544 "stde2" ,
@@ -1559,7 +1559,7 @@ def test_local_Attraction(self):
15591559 "D2" ,
15601560 "pseudoR2" ,
15611561 "param2" ,
1562- ].sort (),
1562+ ].sort ()
15631563 )
15641564
15651565 def test_Doubly (self ):
@@ -1953,9 +1953,9 @@ def test_Doubly(self):
19531953 ],
19541954 ],
19551955 )
1956- self . assertAlmostEqual (model .deviance , 9360.482092561484 , delta = 0.0001 )
1957- self . assertAlmostEqual (model .llf , - 4970.5795707251054 , delta = 0.0001 )
1958- self . assertAlmostEqual (model .llnull , - 88037.0499629 , delta = 0.0001 )
1956+ assert pytest . approx (model .deviance , rel = 0.0001 ) == 9360.482092561484
1957+ assert pytest . approx (model .llf , rel = 0.0001 ) == - 4970.5795707251054
1958+ assert pytest . approx (model .llnull , rel = 0.0001 ) == - 88037.0499629
19591959 np .testing .assert_allclose (
19601960 model .pvalues ,
19611961 [
@@ -2102,13 +2102,9 @@ def test_Doubly(self):
21022102 1.04848355e03 ,
21032103 ],
21042104 )
2105- self .assertAlmostEqual (model .D2 , 0.946661920897 )
2106- self .assertAlmostEqual (model .adj_D2 , 0.929870303401 )
2107- self .assertAlmostEqual (model .SSI , 0.811852110904 )
2108- self .assertAlmostEqual (model .pseudoR2 , 0.943539912198 )
2109- self .assertAlmostEqual (model .adj_pseudoR2 , 0.943335452826 )
2110- self .assertAlmostEqual (model .SRMSE , 0.37925654532618808 )
2111-
2112-
2113- if __name__ == "__main__" :
2114- unittest .main ()
2105+ assert pytest .approx (model .D2 ) == 0.946661920897
2106+ assert pytest .approx (model .adj_D2 ) == 0.929870303401
2107+ assert pytest .approx (model .SSI ) == 0.811852110904
2108+ assert pytest .approx (model .pseudoR2 ) == 0.943539912198
2109+ assert pytest .approx (model .adj_pseudoR2 ) == 0.943335452826
2110+ assert pytest .approx (model .SRMSE ) == 0.37925654532618808
0 commit comments