Skip to content

Commit 35a6c9d

Browse files
adapt to changed worldbank data (#841)
* test_finance: update wealth account number to current values from worldbank * test_engine: adapt to changed input data from worldbank * test_finance: update total wealth value India 1985 _after_ updating data files in climada/data/ * test_finance: rename variables * changelog #841
1 parent 5f55a17 commit 35a6c9d

File tree

3 files changed

+56
-51
lines changed

3 files changed

+56
-51
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ Code freeze date: YYYY-MM-DD
2929
- Fix the dist_approx util function when used with method="geosphere" and log=True and points that are very close. [#792](https://github.com/CLIMADA-project/climada_python/pull/792)
3030
- `climada.util.yearsets.sample_from_poisson`: fix a bug ([#819](https://github.com/CLIMADA-project/climada_python/issues/819)) and inconsistency that occurs when lambda events per year (`lam`) are set to 1. [[#823](https://github.com/CLIMADA-project/climada_python/pull/823)]
3131
- In the TropCyclone class in the Holland model 2008 and 2010 implementation, a doublecounting of translational velocity is removed [#833](https://github.com/CLIMADA-project/climada_python/pull/833)
32+
- `climada.util.test.test_finance` and `climada.test.test_engine` updated to recent input data from worldbank [#841](https://github.com/CLIMADA-project/climada_python/pull/841)
3233

3334
### Deprecated
3435

climada/test/test_engine.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ def test_scale_impact2refyear(self):
173173
)
174174
# scaled impact value might change if worldbank input data changes,
175175
# check magnitude and adjust if test fails in the following line:
176-
self.assertListEqual(impact_scaled, [28, 137, 1000, 165, 304])
176+
self.assertListEqual(impact_scaled, [28, 137, 999, 163, 304])
177177

178178

179179
class TestEmdatToImpact(unittest.TestCase):

climada/util/test/test_finance.py

Lines changed: 54 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -45,164 +45,168 @@ class TestWBData(unittest.TestCase):
4545
def test_ne_income_grp_aia_pass(self):
4646
"""Test nat_earth_adm0 function Anguilla."""
4747
ref_year = 2012
48-
res_year, res_val = nat_earth_adm0('AIA', 'INCOME_GRP',
49-
shp_file=SHP_FILE)
48+
ne_year, ne_val = nat_earth_adm0('AIA', 'INCOME_GRP',
49+
shp_file=SHP_FILE)
5050

5151
ref_year = 0
5252
ref_val = 3
53-
self.assertEqual(res_year, ref_year)
54-
self.assertEqual(res_val, ref_val)
53+
self.assertEqual(ne_year, ref_year)
54+
self.assertEqual(ne_val, ref_val)
5555

5656
def test_wb_income_grp_sxm_pass(self):
5757
"""Test world_bank function Sint Maarten."""
5858
ref_year = 2012
59-
res_year, res_val = world_bank('SXM', ref_year, 'INC_GRP')
59+
wb_year, wb_val = world_bank('SXM', ref_year, 'INC_GRP')
6060

6161
ref_year = 2012
6262
ref_val = 4
63-
self.assertEqual(res_year, ref_year)
64-
self.assertEqual(res_val, ref_val)
63+
self.assertEqual(wb_year, ref_year)
64+
self.assertEqual(wb_val, ref_val)
6565

6666
def test_income_grp_sxm_1999_pass(self):
6767
"""Test income_group function Sint Maarten."""
6868
ref_year = 1999
6969
with self.assertLogs('climada.util.finance', level='INFO') as cm:
70-
res_year, res_val = income_group('SXM', ref_year, SHP_FILE)
70+
ig_year, ig_val = income_group('SXM', ref_year, SHP_FILE)
7171

7272
ref_year = 2010
7373
ref_val = 4
7474
self.assertIn('Income group SXM 2010: 4.', cm.output[0])
75-
self.assertEqual(res_year, ref_year)
76-
self.assertEqual(res_val, ref_val)
75+
self.assertEqual(ig_year, ref_year)
76+
self.assertEqual(ig_val, ref_val)
7777

7878
def test_ne_gdp_aia_2012_pass(self):
7979
"""Test nat_earth_adm0 function Anguilla."""
8080
ref_year = 2012
81-
res_year, res_val = nat_earth_adm0('AIA', 'GDP_MD',
82-
'GDP_YEAR', SHP_FILE)
81+
ne_year, ne_val = nat_earth_adm0('AIA', 'GDP_MD',
82+
'GDP_YEAR', SHP_FILE)
8383

8484
ref_year = 2009
8585
ref_val = 1.75e+08
86-
self.assertEqual(res_year, ref_year)
87-
self.assertEqual(res_val, ref_val)
86+
self.assertEqual(ne_year, ref_year)
87+
self.assertEqual(ne_val, ref_val)
8888

8989
def test_gdp_sxm_2010_pass(self):
9090
"""Test gdp function Sint Maarten."""
9191
# If World Bank input data changes, make sure to set ref_year to a year where
9292
# no data is available so that the next available data point has to be selected.
9393
ref_year = 2010
9494
with self.assertLogs('climada.util.finance', level='INFO') as cm:
95-
res_year, res_val = gdp('SXM', ref_year)
95+
gdp_year, gdp_val = gdp('SXM', ref_year)
9696

9797
ref_val = 936089385.47486 # reference GDP value
9898
ref_year = 2011 # nearest year with data available (might change)
9999
# GDP and years with data available might change if worldbank input
100100
# data changes, check magnitude and adjust ref_val and/or ref_year
101101
# if test fails:
102102
self.assertIn('GDP SXM %i: %1.3e' % (ref_year, ref_val), cm.output[0])
103-
self.assertEqual(res_year, ref_year)
104-
self.assertAlmostEqual(res_val, ref_val, places=0)
103+
self.assertEqual(gdp_year, ref_year)
104+
self.assertAlmostEqual(gdp_val, ref_val, places=0)
105105

106106
def test_gdp_twn_2012_pass(self):
107107
"""Test gdp function TWN."""
108108
ref_year = 2014
109-
res_year, res_val = gdp('TWN', ref_year)
110-
_, res_val_direct = _gdp_twn(ref_year)
109+
gdp_year, gdp_val = gdp('TWN', ref_year)
110+
_, gdp_val_direct = _gdp_twn(ref_year)
111111
ref_val = 530515000000.0
112112
ref_year = 2014
113-
self.assertEqual(res_year, ref_year)
114-
self.assertEqual(res_val, ref_val)
115-
self.assertEqual(res_val_direct, ref_val)
113+
self.assertEqual(gdp_year, ref_year)
114+
self.assertEqual(gdp_val, ref_val)
115+
self.assertEqual(gdp_val_direct, ref_val)
116116

117117

118118
def test_wb_esp_1950_pass(self):
119119
"""Test world_bank function Sint Maarten."""
120120
ref_year = 1950
121-
res_year, res_val = world_bank('ESP', ref_year, 'NY.GDP.MKTP.CD')
121+
wb_year, wb_val = world_bank('ESP', ref_year, 'NY.GDP.MKTP.CD')
122122

123123
ref_year = 1960
124124
ref_val = 12072126075.397
125-
self.assertEqual(res_year, ref_year)
126-
self.assertEqual(res_val, ref_val)
125+
self.assertEqual(wb_year, ref_year)
126+
self.assertEqual(wb_val, ref_val)
127127

128128
class TestWealth2GDP(unittest.TestCase):
129129
"""Test Wealth to GDP factor extraction"""
130130
def test_nfw_SUR_pass(self):
131131
"""Test non-financial wealth-to-gdp factor with Suriname."""
132-
res_year, res_val = wealth2gdp('SUR')
132+
w2g_year, w2g_val = wealth2gdp('SUR')
133133

134134
ref_year = 2016
135135
ref_val = 0.73656
136-
self.assertEqual(res_year, ref_year)
137-
self.assertEqual(res_val, ref_val)
136+
self.assertEqual(w2g_year, ref_year)
137+
self.assertEqual(w2g_val, ref_val)
138138

139139
def test_nfw_BEL_pass(self):
140140
"""Test total wealth-to-gdp factor with Belgium."""
141-
res_year, res_val = wealth2gdp('BEL', False)
141+
w2g_year, w2g_val = wealth2gdp('BEL', False)
142142

143143
ref_year = 2016
144144
ref_val = 4.88758
145-
self.assertEqual(res_year, ref_year)
146-
self.assertEqual(res_val, ref_val)
145+
self.assertEqual(w2g_year, ref_year)
146+
self.assertEqual(w2g_val, ref_val)
147147

148148
def test_nfw_LBY_pass(self):
149149
"""Test missing factor with Libya."""
150-
_, res_val = wealth2gdp('LBY')
150+
_, w2g_val = wealth2gdp('LBY')
151151

152-
self.assertTrue(np.isnan(res_val))
152+
self.assertTrue(np.isnan(w2g_val))
153153

154154
class TestWBWealthAccount(unittest.TestCase):
155155
"""Test Wealth Indicator extraction from World Bank provided CSV"""
156156
def test_pca_DEU_2010_pass(self):
157157
"""Test Processed Capital value Germany 2010."""
158158
ref_year = 2010
159159
cntry_iso = 'DEU'
160-
res_year, res_val, q = world_bank_wealth_account(cntry_iso, ref_year, no_land=0)
161-
res_year_noland, res_val_noland, q = world_bank_wealth_account(cntry_iso, ref_year,
160+
wb_year, wb_val, q = world_bank_wealth_account(cntry_iso, ref_year, no_land=0)
161+
wb_year_noland, wb_val_noland, q = world_bank_wealth_account(cntry_iso, ref_year,
162162
no_land=1)
163163
ref_val = [17675048450284.9, 19767982562092.2] # second value as updated by worldbank on
164164
# October 27 2021
165165
ref_val_noland = [14254071330874.9, 15941921421042.1] # dito
166-
self.assertEqual(res_year, ref_year)
166+
self.assertEqual(wb_year, ref_year)
167167
self.assertEqual(q, 1)
168-
self.assertIn(res_val, ref_val)
169-
self.assertEqual(res_year_noland, ref_year)
170-
self.assertIn(res_val_noland, ref_val_noland)
168+
self.assertIn(wb_val, ref_val)
169+
self.assertEqual(wb_year_noland, ref_year)
170+
self.assertIn(wb_val_noland, ref_val_noland)
171171

172172
def test_pca_CHE_2008_pass(self):
173173
"""Test Prcoessed Capital per capita Switzerland 2008 (interp.)."""
174174
ref_year = 2008
175175
cntry_iso = 'CHE'
176176
var_name = 'NW.PCA.PC'
177-
res_year, res_val, _ = world_bank_wealth_account(cntry_iso, ref_year,
177+
wb_year, wb_val, _ = world_bank_wealth_account(cntry_iso, ref_year,
178178
variable_name=var_name, no_land=0)
179179
ref_val = [328398.7, # values sporadically updated by worldbank
180180
369081.0] # <- October 27 2021
181-
self.assertEqual(res_year, ref_year)
182-
self.assertIn(res_val, ref_val)
181+
self.assertEqual(wb_year, ref_year)
182+
self.assertIn(wb_val, ref_val)
183183

184184
def test_tow_IND_1985_pass(self):
185185
"""Test Total Wealth value India 1985 (outside year range)."""
186186
ref_year = 1985
187187
cntry_iso = 'IND'
188188
var_name = 'NW.TOW.TO'
189-
res_year, res_val, _ = world_bank_wealth_account(cntry_iso, ref_year,
189+
wb_year, wb_val, _ = world_bank_wealth_account(cntry_iso, ref_year,
190190
variable_name=var_name)
191191
ref_val = [5415188681934.5, # values sporadically updated by worldbank
192192
5861193808779.6, # <- October 27 2021
193-
5861186556152.8] # <- June 29 2023
194-
self.assertEqual(res_year, ref_year)
195-
self.assertIn(res_val, ref_val)
193+
5861186556152.8, # <- June 29 2023
194+
5861186367245.2, # <- December 20 2023
195+
]
196+
self.assertEqual(wb_year, ref_year)
197+
self.assertIn(wb_val, ref_val)
196198

197199
def test_pca_CUB_2015_pass(self):
198200
"""Test Processed Capital value Cuba 2015 (missing value)."""
199201
ref_year = 2015
200202
cntry_iso = 'CUB'
201-
res_year, res_val, q = world_bank_wealth_account(cntry_iso, ref_year, no_land=1)
202-
ref_val = 108675762920.0
203+
wb_year, wb_val, q = world_bank_wealth_account(cntry_iso, ref_year, no_land=1)
204+
ref_val = [108675762920.0, # values sporadically updated by worldbank
205+
108675513472.0, # <- Dezember 20 2023
206+
]
203207
self.assertEqual(q, 0)
204-
self.assertEqual(res_year, ref_year)
205-
self.assertEqual(res_val, ref_val)
208+
self.assertEqual(wb_year, ref_year)
209+
self.assertIn(wb_val, ref_val)
206210

207211
# Execute Tests
208212
if __name__ == "__main__":

0 commit comments

Comments
 (0)