def test_get_simbench_net(sb_codes=None, n=8, scenarios=None, input_path=None):
    """ Test nets exctracted from csv (shortened) folder. 'shortened' and 'test' must be set
        properly in extract_simbench_grids_from_csv.py
        If sb_codes is None, randomn simbench codes are tested in the number of n.
        If in input_path is None, no input_path will be given to get_simbench_net()
    """
    shortened = input_path is not None and "shortened" in input_path
    scenarios = scenarios if scenarios is not None else [0, 1, 2]
    if not sb_codes:
        sb_codes = []
        for scenario in scenarios:
            sb_codes += sb.collect_all_simbench_codes(scenario=scenario,
                                                      shortened=shortened)
        first = 2  # always test the first 2 (complete_data and complete_grid)
        np.random.seed(int(time.time()))
        sb_codes = [
            sb_codes[i] for i in np.append(
                np.random.randint(first,
                                  len(sb_codes) - first, n), range(first))
        ]
    else:
        sb_codes = sb.ensure_iterability(sb_codes)

    for sb_code_info in sb_codes:
        sb_code, sb_code_params = sb.get_simbench_code_and_parameters(
            sb_code_info)
        logger.info("Get SimBench net '%s'" % sb_code)
        net = sb.get_simbench_net(sb_code, input_path=input_path)
        logger.info("Now test validity...")
        _test_net_validity(net,
                           sb_code_params,
                           shortened,
                           input_path=input_path)
def test_simbench_code_occurance():
    all_ = sb.collect_all_simbench_codes()

    _occurance_test(all_, "1-complete_data-mixed-all-1-sw")
    _occurance_test(all_, "1-EHVHVMVLV-mixed-all-2-sw")
    _occurance_test(all_, "1-HVMV-mixed-all-0-sw")
    _occurance_test(all_, "1-MVLV-urban-5.303-1-no_sw")
    _occurance_test(all_, "1-HV-mixed--0-sw")
    _occurance_test(all_, "1-MV-semiurb--0-sw")
    _occurance_test(all_, "1-LV-rural1--2-sw")
    _occurance_test(all_, "1-EHVHV-mixed-1-0-no_sw")
    _occurance_test(all_, "1-HV-urban--2-sw")
def test_collect_all_simbench_codes_on_a_sample_basis():

    all_codes = sb.collect_all_simbench_codes()
    assert len(all_codes) == 246
    _occurance_test(all_codes, '1-MVLV-rural-all-0-sw')

    single_zone_codes = sb.collect_all_simbench_codes(lv_level="",
                                                      all_data=False)
    assert len(single_zone_codes) == 78
    _occurance_test(single_zone_codes, '1-MV-comm--1-no_sw')

    all_data_codes = sb.collect_all_simbench_codes(hv_level="")
    assert len(all_data_codes) == 6
    _occurance_test(all_data_codes, '1-complete_data-mixed-all-2-sw')

    mv_grids_without_switch_and_lv = sb.collect_all_simbench_codes(
        hv_level="MV", lv_level="", breaker_rep="no_sw", all_data=False)
    assert len(mv_grids_without_switch_and_lv) == 12
    _occurance_test(mv_grids_without_switch_and_lv, '1-MV-semiurb--1-no_sw')

    urban_hv_grid_scenario1_codes = sb.collect_all_simbench_codes(
        hv_level="HV", hv_type="urban", scenario=1, all_data=False)
    assert len(urban_hv_grid_scenario1_codes) == 10
    _occurance_test(urban_hv_grid_scenario1_codes,
                    '1-HVMV-urban-4.201-1-no_sw')

    rural_and_urban_mv_grid_scenario1_codes = sb.collect_all_simbench_codes(
        hv_level="MV",
        lv_level="",
        hv_type=["rural", "urban"],
        scenario=1,
        all_data=False)
    assert len(rural_and_urban_mv_grid_scenario1_codes) == 4
    _occurance_test(rural_and_urban_mv_grid_scenario1_codes,
                    '1-MV-rural--1-sw')
示例#4
0
    all_branch_nodes = pd.concat([lA, lB, tA, tB], ignore_index=True)
    dupl_branch_nodes = set(
        all_branch_nodes.loc[all_branch_nodes.duplicated()])
    aux_nodes = csv_data["Node"]["id"].loc[csv_data["Node"]["type"] ==
                                           "auxiliary"]

    return sorted(dupl_branch_nodes & set(aux_nodes))


def test_aux_nodes_without_multiple_connected_branches():
    """ Test csv_data if there are auxiliary nodes with more than one connected branch element. """
    for scenario in range(3):
        csv_data = sb.read_csv_data(sb.complete_data_path(scenario), sep=";")
        annwdb = aux_node_names_with_dupl_branches(csv_data)
        assert not len(annwdb)


if __name__ == '__main__':
    if 0:
        pytest.main([__file__, "-xs"])
    else:
        #        test_get_bus_bus_switch_indices_from_csv()
        #        test_get_relevant_subnets()
        #        test_get_extracted_csv_data_from_dict(print_instead=True)
        #        test_generate_no_sw_variant()
        #        test_get_simbench_net()
        test_get_simbench_net(sb_codes=sb.collect_all_simbench_codes(
            scenario=0)[::-1])
        #        test_aux_nodes_without_multiple_connected_branches()

        pass
def test_simbench_code_conversion():
    all_ = sb.collect_all_simbench_codes()
    for input_code in all_:
        sb_code_parameters = sb.get_parameters_from_simbench_code(input_code)
        output_code = sb.get_simbench_code_from_parameters(sb_code_parameters)
        assert input_code == output_code