def from_excel(cls, file_name, description=''): """Read csv or xls or xlsx file following climada's template. Parameters ---------- file_name : str, optional file name(s) or folder name containing the files to read description : str or list(str), optional one description of the data or a description of each data file Returns ------- ent : climada.entity.Entity The entity from excel file """ exp = Exposures(pd.read_excel(file_name)) exp.tag = Tag() exp.tag.file_name = str(file_name) exp.tag.description = description dr = DiscRates.from_excel(file_name, description) impf_set = ImpactFuncSet.from_excel(file_name, description) meas_set = MeasureSet.from_excel(file_name, description) return cls(exposures=exp, disc_rates=dr, impact_func_set=impf_set, measure_set=meas_set)
def test_write_read_pass(self): """Read demo excel file.""" years = np.arange(1950, 2150) rates = np.ones(years.size) * 0.03 disc_rate = DiscRates(years=years, rates=rates) file_name = CONFIG.disc_rates.test_data.dir().joinpath( 'test_disc.xlsx') disc_rate.write_excel(file_name) disc_read = DiscRates.from_excel(file_name) self.assertTrue(np.array_equal(disc_read.years, disc_rate.years)) self.assertTrue(np.array_equal(disc_read.rates, disc_rate.rates)) self.assertEqual(disc_read.tag.file_name, str(file_name)) self.assertEqual(disc_read.tag.description, '')
def test_template_file_pass(self): """Read demo excel file.""" disc_rate = DiscRates.from_excel(ENT_TEMPLATE_XLS) # Check results n_rates = 102 self.assertIn('int', str(disc_rate.years.dtype)) self.assertEqual(disc_rate.years.shape, (n_rates, )) self.assertEqual(disc_rate.years[0], 2000) self.assertEqual(disc_rate.years[n_rates - 1], 2101) self.assertIn('float', str(disc_rate.rates.dtype)) self.assertEqual(disc_rate.rates.shape, (n_rates, )) self.assertEqual(disc_rate.rates.min(), 0.02) self.assertEqual(disc_rate.rates.max(), 0.02) self.assertEqual(disc_rate.tag.file_name, str(ENT_TEMPLATE_XLS)) self.assertEqual(disc_rate.tag.description, '')
def test_demo_file_pass(self): """Read demo excel file.""" description = 'One single file.' disc_rate = DiscRates.from_excel(ENT_DEMO_TODAY, description) # Check results n_rates = 51 self.assertIn('int', str(disc_rate.years.dtype)) self.assertEqual(disc_rate.years.shape, (n_rates, )) self.assertEqual(disc_rate.years[0], 2000) self.assertEqual(disc_rate.years[n_rates - 1], 2050) self.assertIn('float', str(disc_rate.rates.dtype)) self.assertEqual(disc_rate.rates.shape, (n_rates, )) self.assertEqual(disc_rate.rates.min(), 0.02) self.assertEqual(disc_rate.rates.max(), 0.02) self.assertEqual(disc_rate.tag.file_name, str(ENT_DEMO_TODAY)) self.assertEqual(disc_rate.tag.description, description)