コード例 #1
0
ファイル: test_export_list_reader.py プロジェクト: NREL/PyDSS
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"})
コード例 #2
0
ファイル: test_export_list_reader.py プロジェクト: NREL/PyDSS
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
コード例 #3
0
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)
コード例 #4
0
ファイル: test_export_list_reader.py プロジェクト: NREL/PyDSS
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})
コード例 #5
0
ファイル: test_export_list_reader.py プロジェクト: NREL/PyDSS
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)
コード例 #6
0
ファイル: test_export_list_reader.py プロジェクト: NREL/PyDSS
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")
コード例 #7
0
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)