def test_demo_file_pass(self): """Read demo excel file""" # Read demo mat file imp_funcs = ImpactFuncSet() description = 'One single file.' imp_funcs.read_mat(ENT_TEST_MAT, description) # Check results n_funcs = 2 hazard = 'TC' first_id = 1 second_id = 3 self.assertEqual(len(imp_funcs._data), 1) self.assertEqual(len(imp_funcs._data[hazard]), n_funcs) # first function self.assertEqual(imp_funcs._data[hazard][first_id].id, 1) self.assertEqual(imp_funcs._data[hazard][first_id].name, 'Tropical cyclone default') self.assertEqual(imp_funcs._data[hazard][first_id].intensity_unit, 'm/s') self.assertEqual(imp_funcs._data[hazard][first_id].intensity.shape, (9, )) self.assertEqual(imp_funcs._data[hazard][first_id].intensity[0], 0) self.assertEqual(imp_funcs._data[hazard][first_id].intensity[1], 20) self.assertEqual(imp_funcs._data[hazard][first_id].intensity[2], 30) self.assertEqual(imp_funcs._data[hazard][first_id].intensity[3], 40) self.assertEqual(imp_funcs._data[hazard][first_id].intensity[4], 50) self.assertEqual(imp_funcs._data[hazard][first_id].intensity[5], 60) self.assertEqual(imp_funcs._data[hazard][first_id].intensity[6], 70) self.assertEqual(imp_funcs._data[hazard][first_id].intensity[7], 80) self.assertEqual(imp_funcs._data[hazard][first_id].intensity[8], 100) self.assertEqual(imp_funcs._data[hazard][first_id].mdd.shape, (9, )) self.assertEqual(imp_funcs._data[hazard][first_id].mdd[0], 0) self.assertEqual(imp_funcs._data[hazard][first_id].mdd[8], 0.41079600) self.assertEqual(imp_funcs._data[hazard][first_id].paa.shape, (9, )) self.assertEqual(imp_funcs._data[hazard][first_id].paa[0], 0) self.assertEqual(imp_funcs._data[hazard][first_id].paa[8], 1) # second function self.assertEqual(imp_funcs._data[hazard][second_id].id, 3) self.assertEqual(imp_funcs._data[hazard][second_id].name, 'TC Building code') self.assertEqual(imp_funcs._data[hazard][first_id].intensity_unit, 'm/s') self.assertEqual(imp_funcs._data[hazard][second_id].intensity.shape, (9, )) self.assertEqual(imp_funcs._data[hazard][second_id].intensity[0], 0) self.assertEqual(imp_funcs._data[hazard][second_id].intensity[1], 20) self.assertEqual(imp_funcs._data[hazard][second_id].intensity[2], 30) self.assertEqual(imp_funcs._data[hazard][second_id].intensity[3], 40) self.assertEqual(imp_funcs._data[hazard][second_id].intensity[4], 50) self.assertEqual(imp_funcs._data[hazard][second_id].intensity[5], 60) self.assertEqual(imp_funcs._data[hazard][second_id].intensity[6], 70) self.assertEqual(imp_funcs._data[hazard][second_id].intensity[7], 80) self.assertEqual(imp_funcs._data[hazard][second_id].intensity[8], 100) self.assertEqual(imp_funcs._data[hazard][second_id].mdd.shape, (9, )) self.assertEqual(imp_funcs._data[hazard][second_id].mdd[0], 0) self.assertEqual(imp_funcs._data[hazard][second_id].mdd[8], 0.4) self.assertEqual(imp_funcs._data[hazard][second_id].paa.shape, (9, )) self.assertEqual(imp_funcs._data[hazard][second_id].paa[0], 0) self.assertEqual(imp_funcs._data[hazard][second_id].paa[8], 1) # general information self.assertEqual(imp_funcs.tag.file_name, str(ENT_TEST_MAT)) self.assertEqual(imp_funcs.tag.description, description)
def test_filter_exposures_pass(self): """Test _filter_exposures method with -1""" meas = Measure() meas.exp_region_id = 3 meas.haz_type = 'TC' exp = Exposures() exp.read_mat(ENT_TEST_MAT) exp.rename(columns={ 'if_': 'if_TC', 'centr_': 'centr_TC' }, inplace=True) exp['region_id'] = np.ones(exp.shape[0]) exp.region_id.values[:exp.shape[0] // 2] = 3 imp_set = ImpactFuncSet() imp_set.read_mat(ENT_TEST_MAT) haz = Hazard('TC') haz.read_mat(HAZ_TEST_MAT) new_exp = copy.deepcopy(exp) new_exp['value'] *= 3 new_exp['if_TC'].values[:20] = 2 new_exp['if_TC'].values[20:40] = 3 new_exp['if_TC'].values[40:] = 1 new_ifs = copy.deepcopy(imp_set) new_ifs.get_func('TC')[1].intensity += 1 ref_ifs = copy.deepcopy(new_ifs) new_haz = copy.deepcopy(haz) new_haz.intensity *= 4 res_exp, res_ifs, res_haz = meas._filter_exposures( exp, imp_set, haz, new_exp, new_ifs, new_haz) # unchanged exposures self.assertEqual(res_exp.ref_year, exp.ref_year) self.assertEqual(res_exp.value_unit, exp.value_unit) self.assertEqual(res_exp.tag.file_name, exp.tag.file_name) self.assertEqual(res_exp.tag.description, exp.tag.description) self.assertTrue( np.array_equal(res_exp.value.values[exp.shape[0] // 2:], new_exp.value.values[:exp.shape[0] // 2])) self.assertTrue( np.array_equal(res_exp.region_id.values[exp.shape[0] // 2:], np.ones(exp.shape[0] // 2) * 3)) self.assertTrue( np.array_equal(res_exp.if_TC.values[exp.shape[0] // 2:], new_exp.if_TC.values[:exp.shape[0] // 2])) self.assertTrue( np.array_equal(res_exp.latitude.values[exp.shape[0] // 2:], new_exp.latitude.values[:exp.shape[0] // 2])) self.assertTrue( np.array_equal(res_exp.longitude.values[exp.shape[0] // 2:], new_exp.longitude.values[:exp.shape[0] // 2])) # changed exposures self.assertTrue( np.array_equal(res_exp.value.values[:exp.shape[0] // 2], exp.value.values[exp.shape[0] // 2:])) self.assertTrue( np.array_equal(res_exp.region_id.values[:exp.shape[0] // 2], np.ones(exp.shape[0] // 2))) self.assertTrue( np.array_equal(res_exp.if_TC.values[:exp.shape[0] // 2], exp.if_TC.values[exp.shape[0] // 2:])) self.assertTrue( np.array_equal(res_exp.latitude.values[:exp.shape[0] // 2], exp.latitude.values[exp.shape[0] // 2:])) self.assertTrue( np.array_equal(res_exp.longitude.values[:exp.shape[0] // 2], exp.longitude.values[exp.shape[0] // 2:])) # unchanged impact functions self.assertEqual(list(res_ifs.get_func().keys()), [meas.haz_type]) self.assertEqual(res_ifs.get_func()[meas.haz_type][1].id, imp_set.get_func()[meas.haz_type][1].id) self.assertTrue( np.array_equal(res_ifs.get_func()[meas.haz_type][1].intensity, imp_set.get_func()[meas.haz_type][1].intensity)) self.assertEqual(res_ifs.get_func()[meas.haz_type][3].id, imp_set.get_func()[meas.haz_type][3].id) self.assertTrue( np.array_equal(res_ifs.get_func()[meas.haz_type][3].intensity, imp_set.get_func()[meas.haz_type][3].intensity)) # changed impact functions self.assertTrue( np.array_equal( res_ifs.get_func()[meas.haz_type][1 + IF_ID_FACT].intensity, ref_ifs.get_func()[meas.haz_type][1].intensity)) self.assertTrue( np.array_equal( res_ifs.get_func()[meas.haz_type][1 + IF_ID_FACT].paa, ref_ifs.get_func()[meas.haz_type][1].paa)) self.assertTrue( np.array_equal( res_ifs.get_func()[meas.haz_type][1 + IF_ID_FACT].mdd, ref_ifs.get_func()[meas.haz_type][1].mdd)) self.assertTrue( np.array_equal( res_ifs.get_func()[meas.haz_type][3 + IF_ID_FACT].intensity, ref_ifs.get_func()[meas.haz_type][3].intensity)) self.assertTrue( np.array_equal( res_ifs.get_func()[meas.haz_type][3 + IF_ID_FACT].paa, ref_ifs.get_func()[meas.haz_type][3].paa)) self.assertTrue( np.array_equal( res_ifs.get_func()[meas.haz_type][3 + IF_ID_FACT].mdd, ref_ifs.get_func()[meas.haz_type][3].mdd)) # unchanged hazard self.assertTrue( np.array_equal(res_haz.intensity[:, :36].todense(), haz.intensity[:, :36].todense())) self.assertTrue( np.array_equal(res_haz.intensity[:, 37:46].todense(), haz.intensity[:, 37:46].todense())) self.assertTrue( np.array_equal(res_haz.intensity[:, 47:].todense(), haz.intensity[:, 47:].todense())) # changed hazard self.assertTrue( np.array_equal(res_haz.intensity[[36, 46]].todense(), new_haz.intensity[[36, 46]].todense()))