def test_export_list_reader__names(): data = {"names": ["bus1", "bus2"], "property": "puVmagAngle"} export_prop = ExportListProperty("Buses", data) assert export_prop.should_store_name("bus1") assert export_prop.should_store_name("bus2") assert not export_prop.should_store_name("bus3") with pytest.raises(InvalidConfiguration): ExportListProperty("Buses", {"names": "bus1", "property": "puVmagAngle"})
def test_export_list_reader__window_size(): prop = ExportListProperty( "Buses", {"property": "puVmagAngle", "store_values_type": "moving_average"}, ) assert prop.window_size == 100 prop = ExportListProperty( "Buses", { "property": "puVmagAngle", "store_values_type": "moving_average", "window_size": 75, }, ) assert prop.window_size == 75
def test_export_overloads(mocked_func, simulation_settings): data1 = { "property": "ExportLoadingsMetric", "store_values_type": "all", "opendss_classes": ["Lines", "Transformers"], } prop1 = ExportListProperty("CktElement", data1) data2 = { "property": "ExportLoadingsMetric", "store_values_type": "max", "opendss_classes": ["Lines", "Transformers"], } prop2 = ExportListProperty("CktElement", data2) num_time_steps = NUM_LOADINGS_FILES metric = ExportLoadingsMetric(prop1, OBJS, simulation_settings) metric.add_property(prop2) with h5py.File(STORE_FILENAME, mode="w", driver="core") as hdf_store: metric.initialize_data_store(hdf_store, "", num_time_steps) global overloads_file_id for i in range(num_time_steps): metric.append_values(i) overloads_file_id += 1 metric.close() dataset1 = hdf_store[ "CktElement/ElementProperties/ExportLoadingsMetric"] assert dataset1.attrs["length"] == num_time_steps assert dataset1.attrs["type"] == "per_time_point" df = DatasetBuffer.to_dataframe(dataset1) assert isinstance(df, pd.DataFrame) assert [x for x in df["Line.one__Loading"].values] == LINE_1_VALUES assert [x for x in df["Line.two__Loading"].values] == LINE_2_VALUES assert [x for x in df["Transformer.one__Loading"].values ] == TRANSFORMER_1_VALUES assert [x for x in df["Transformer.two__Loading"].values ] == TRANSFORMER_2_VALUES dataset2 = hdf_store[ "CktElement/ElementProperties/ExportLoadingsMetricMax"] assert dataset2.attrs["length"] == 1 assert dataset2.attrs["type"] == "value" assert dataset2[0][0] == max(LINE_1_VALUES) assert dataset2[0][1] == max(LINE_2_VALUES) assert dataset2[0][2] == max(TRANSFORMER_1_VALUES) assert dataset2[0][3] == max(TRANSFORMER_2_VALUES)
def test_export_list_reader__limits(): data = {"property": "puVmagAngle", "limits": [-1.0, 1.0], "limits_filter": LimitsFilter.OUTSIDE} export_prop = ExportListProperty("Buses", data) assert export_prop.limits.min == -1.0 assert export_prop.limits.max == 1.0 assert export_prop.should_store_value(-2.0) assert export_prop.should_store_value(2.0) assert not export_prop.should_store_value(-0.5) assert not export_prop.should_store_value(0.5) data = {"property": "puVmagAngle", "limits": [-1.0, 1.0], "limits_filter": LimitsFilter.INSIDE} export_prop = ExportListProperty("Buses", data) assert export_prop.limits.min == -1.0 assert export_prop.limits.max == 1.0 assert not export_prop.should_store_value(-2.0) assert not export_prop.should_store_value(2.0) assert export_prop.should_store_value(-0.5,) assert export_prop.should_store_value(0.5) with pytest.raises(InvalidConfiguration): ExportListProperty("Buses", {"property": "puVmagAngle", "limits": [1.0]}) with pytest.raises(InvalidConfiguration): ExportListProperty("Buses", {"property": "puVmagAngle", "limits": 1.0})
def test_export_list_reader__name_and_name_regexes(): data = {"property": "puVmagAngle", "names": ["bus1"], "name_regexes": [r"busFoo\d+"]} with pytest.raises(InvalidConfiguration): export_prop = ExportListProperty("Buses", data)
def test_export_list_reader__name_regexes(): data = {"property": "puVmagAngle", "name_regexes": [r"busFoo\d+", r"busBar\d+"]} export_prop = ExportListProperty("Buses", data) assert not export_prop.should_store_name("bus1") assert export_prop.should_store_name("busFoo23") assert export_prop.should_store_name("busBar8")
def test_export_powers(mocked_func, simulation_settings): data1 = { "property": "ExportPowersMetric", "store_values_type": "all", "opendss_classes": ["Lines", "Loads", "PVSystems", "Transformers"], } prop1 = ExportListProperty("CktElement", data1) data2 = { "property": "ExportPowersMetric", "store_values_type": "max", "opendss_classes": ["Lines", "Loads", "PVSystems", "Transformers"], } prop2 = ExportListProperty("CktElement", data2) data3 = { "property": "ExportPowersMetric", "store_values_type": "sum", "opendss_classes": ["Lines", "Loads", "PVSystems", "Transformers"], } prop3 = ExportListProperty("CktElement", data3) num_time_steps = NUM_POWERS_FILES metric = ExportPowersMetric(prop1, OBJS, simulation_settings) metric.add_property(prop2) metric.add_property(prop3) with h5py.File(STORE_FILENAME, mode="w", driver="core") as hdf_store: metric.initialize_data_store(hdf_store, "", num_time_steps) global powers_file_id for i in range(num_time_steps): metric.append_values(i) powers_file_id += 1 metric.close() dataset1 = hdf_store["CktElement/ElementProperties/ExportPowersMetric"] assert dataset1.attrs["length"] == num_time_steps assert dataset1.attrs["type"] == "per_time_point" df = DatasetBuffer.to_dataframe(dataset1) assert isinstance(df, pd.DataFrame) assert [x for x in df["Load.one__Powers"].values] == LOAD_1_VALUES assert [x for x in df["Load.two__Powers"].values] == LOAD_2_VALUES assert [x for x in df["PVSystem.one__Powers"].values ] == PV_SYSTEM_1_VALUES assert [x for x in df["PVSystem.two__Powers"].values ] == PV_SYSTEM_2_VALUES dataset2 = hdf_store[ "CktElement/ElementProperties/ExportPowersMetricMax"] assert dataset2.attrs["length"] == 1 assert dataset2.attrs["type"] == "value" # Loads are at the index 2, PVSystems at 4 assert dataset2[0][2] == max(LOAD_1_VALUES) assert dataset2[0][3] == max(LOAD_2_VALUES) assert dataset2[0][4] == max(PV_SYSTEM_1_VALUES) assert dataset2[0][5] == max(PV_SYSTEM_2_VALUES) dataset3 = hdf_store[ "CktElement/ElementProperties/ExportPowersMetricSum"] assert dataset3.attrs["length"] == 1 assert dataset3.attrs["type"] == "value" assert dataset3[0][2] == sum(LOAD_1_VALUES) assert dataset3[0][3] == sum(LOAD_2_VALUES) assert dataset3[0][4] == sum(PV_SYSTEM_1_VALUES) assert dataset3[0][5] == sum(PV_SYSTEM_2_VALUES)