예제 #1
0
def retrieve_clp_typecheck(
    model: type[Model],
    parameters: ParameterGroup,
    clp_labels: dict[str, list[str] | list[list[str]]],
    reduced_clp_labels: dict[str, list[str] | list[list[str]]],
    reduced_clps: dict[str, list[np.ndarray]],
    data: dict[str, xr.Dataset],
) -> dict[str, list[np.ndarray]]:
    assert isinstance(parameters, ParameterGroup)

    assert isinstance(reduced_clps, dict)
    assert all(
        isinstance(dataset_clps, list)
        for dataset_clps in reduced_clps.values())

    assert all(
        [isinstance(index_clps, np.ndarray) for index_clps in dataset_clps]
        for dataset_clps in reduced_clps.values())

    assert isinstance(data, dict)
    assert all(isinstance(label, str) for label in data)
    assert all(isinstance(dataset, xr.Dataset) for dataset in data.values())

    assert isinstance(clp_labels, dict)
    assert isinstance(reduced_clp_labels, dict)
    assert all(
        isinstance(dataset_clp_labels, list)
        for dataset_clp_labels in reduced_clp_labels.values())
    assert all([[isinstance(label, str) for label in index_labels]
                for index_labels in dataset_clp_labels]
               for dataset_clp_labels in reduced_clp_labels.values())
    if model.index_dependent():
        for dataset_clp_labels in clp_labels.values():
            assert all(
                isinstance(index_label, list)
                for index_label in dataset_clp_labels)
            assert all([isinstance(label, str) for label in index_label]
                       for index_label in dataset_clp_labels)
        assert all([
            isinstance(index_labels, list)
            for index_labels in dataset_clp_labels
        ] for dataset_clp_labels in reduced_clp_labels.values())

    else:
        for dataset_clp_labels in clp_labels.values():
            assert all(isinstance(label, str) for label in dataset_clp_labels)

    model.retrieve_clp_function_called = True

    return reduced_clps
예제 #2
0
def additional_penalty_typecheck(
    model: type[Model],
    parameters: ParameterGroup,
    clp_labels: dict[str, list[str] | list[list[str]]],
    clps: dict[str, list[np.ndarray]],
    matrices: dict[str, np.ndarray | list[np.ndarray]],
    data: dict[str, xr.Dataset],
    group_tolerance: float,
) -> np.ndarray:
    assert isinstance(parameters, ParameterGroup)
    assert isinstance(group_tolerance, float)

    assert isinstance(clps, dict)
    assert all(
        isinstance(dataset_clps, list) for dataset_clps in clps.values())
    assert all(
        [isinstance(index_clps, np.ndarray) for index_clps in dataset_clps]
        for dataset_clps in clps.values())

    assert isinstance(data, dict)
    assert all(isinstance(label, str) for label in data)
    assert all(isinstance(dataset, xr.Dataset) for dataset in data.values())

    assert isinstance(clp_labels, dict)
    assert isinstance(matrices, dict)
    if model.index_dependent():
        for dataset_clp_labels in clp_labels.values():
            assert all(
                isinstance(index_label, list)
                for index_label in dataset_clp_labels)
            assert all([isinstance(label, str) for label in index_label]
                       for index_label in dataset_clp_labels)

        for matrix in matrices.values():
            assert isinstance(matrix, list)
            assert all(
                isinstance(index_matrix, np.ndarray)
                for index_matrix in matrix)
    else:
        for dataset_clp_labels in clp_labels.values():
            assert all(isinstance(label, str) for label in dataset_clp_labels)
        for matrix in matrices.values():
            assert isinstance(matrix, np.ndarray)

    model.additional_penalty_function_called = True

    return np.asarray([0.1])
예제 #3
0
def constrain_matrix_function_typecheck(
    model: type[Model],
    label: str,
    parameters: ParameterGroup,
    clp_labels: list[str],
    matrix: np.ndarray,
    index: float,
):
    assert isinstance(label, str)
    assert isinstance(parameters, ParameterGroup)
    assert isinstance(clp_labels, list)
    assert all(isinstance(clp_label, str) for clp_label in clp_labels)
    assert isinstance(matrix, np.ndarray)

    if model.index_dependent():
        assert isinstance(index, float)
    else:
        assert index is None

    model.constrain_matrix_function_called = True

    return (clp_labels, matrix)