Source code for citylearn.tests.test_weather

import unittest
import numpy as np

from citylearn.data import Weather

[docs] class TestWeatherStochasticity(unittest.TestCase):
[docs] def setUp(self): self.length = 10 self.base_data = { 'outdoor_dry_bulb_temperature': [20.0]*self.length, 'outdoor_relative_humidity': [50.0]*self.length, 'diffuse_solar_irradiance': [200.0]*self.length, 'direct_solar_irradiance': [800.0]*self.length, 'outdoor_dry_bulb_temperature_predicted_1': [21.0]*self.length, 'outdoor_dry_bulb_temperature_predicted_2': [22.0]*self.length, 'outdoor_dry_bulb_temperature_predicted_3': [23.0]*self.length, 'outdoor_relative_humidity_predicted_1': [55.0]*self.length, 'outdoor_relative_humidity_predicted_2': [56.0]*self.length, 'outdoor_relative_humidity_predicted_3': [57.0]*self.length, 'diffuse_solar_irradiance_predicted_1': [210.0]*self.length, 'diffuse_solar_irradiance_predicted_2': [220.0]*self.length, 'diffuse_solar_irradiance_predicted_3': [230.0]*self.length, 'direct_solar_irradiance_predicted_1': [810.0]*self.length, 'direct_solar_irradiance_predicted_2': [820.0]*self.length, 'direct_solar_irradiance_predicted_3': [830.0]*self.length, }
[docs] def test_no_noise_returns_identical_values(self): weather = Weather(**self.base_data, noise_std=0.0) for key in self.base_data: original = np.array(self.base_data[key], dtype='float32') actual = getattr(weather, key) np.testing.assert_array_equal(original, actual, err_msg=f"{key} should be unchanged with noise_std=0.0")
[docs] def test_noise_introduces_variation(self): weather = Weather(**self.base_data, noise_std=1.0) changes = [] for key in self.base_data: original = np.array(self.base_data[key], dtype='float32') actual = getattr(weather, key) diff = np.abs(original - actual) changes.append(np.any(diff > 0.001)) self.assertTrue(any(changes), "At least one array should differ when noise is applied.")
[docs] def test_shapes_remain_consistent(self): weather = Weather(**self.base_data, noise_std=1.0) for key in self.base_data: expected_len = len(self.base_data[key]) actual = getattr(weather, key) self.assertEqual(len(actual), expected_len, f"{key} should have same length as input.")
if __name__ == '__main__': unittest.main()