Exemple #1
0
def test_structural_hamming_distance(adjacency_matrix_1, adjacency_matrix_2,
                                     expected_shd):

    graph_1 = Graph(adjacency_matrix=adjacency_matrix_1)
    graph_2 = Graph(adjacency_matrix=adjacency_matrix_2)

    actual_shd = graph_1.structural_hamming_distance(graph_2)

    assert expected_shd == actual_shd
Exemple #2
0
def test_adjacency_lists_to_adjacency_matrix(adjacency_lists,
                                             expected_adjacency_matrix):

    actual_adjacency_matrix = Graph.adjacency_lists_to_adjacency_matrix(
        adjacency_lists=adjacency_lists)

    assert np.all(actual_adjacency_matrix == expected_adjacency_matrix)
Exemple #3
0
    def validate_directed_graph_adjacency_matrix(matrix):
        """
        Checks that a matrix is a valid adjacency matrix for a directed graph.

        Parameters
        ----------
        matrix : array_like
            The matrix to check.

        Returns
        -------
        bool
            Whether the matrix to check is a valid adjacency matrix for a
            directed graph.
        """
        if not Graph.validate_binary_matrix(matrix):
            return False

        # Check that there are no self-loops
        no_self_loops = np.asarray(
            [matrix[i, i] == 0 for i in range(matrix.shape[0])])
        if not np.all(no_self_loops):
            return False

        # Check that there are no undirected edges
        for i in range(matrix.shape[0]):
            for j in range(i):
                if matrix[i, j] == 1 and matrix[j, i] == 1:
                    return False

        return True
Exemple #4
0
def test_adjacency_matrix_to_adjacency_lists(adjacency_matrix,
                                             expected_adjacency_lists):

    actual_adjacency_lists = Graph.adjacency_matrix_to_adjacency_lists(
        adjacency_matrix=adjacency_matrix)

    adjacency_lists_equal = []
    for l1, l2 in zip(actual_adjacency_lists, expected_adjacency_lists):
        adjacency_lists_equal.append(set(l1) == set(l2))

    assert all(adjacency_lists_equal)
Exemple #5
0
def test_crash_compute_edge_types():

    with pytest.raises(ImpossibleEdgeConfiguration):

        Graph.compute_edge_type(-1, 1)
Exemple #6
0
def test_compute_edge_types(m_ij, m_ji, expected_typed_edge):

    actual_typed_edge = Graph.compute_edge_type(m_ij=m_ij, m_ji=m_ji)

    assert actual_typed_edge == expected_typed_edge
Exemple #7
0
def test_validate_adjacency_matrix(matrix, expected):

    assert Graph.validate_binary_matrix(matrix) == expected
Exemple #8
0
def test_adjacency_list_to_edges(adjacency_lists, expected_typed_edges):

    actual_typed_edges = Graph.adjacency_lists_to_edges(adjacency_lists)

    assert actual_typed_edges == expected_typed_edges
Exemple #9
0
def test_edges_to_adjacency_matrix(edges, expected_adjacency_matrix):

    actual_adjacency_matrix = Graph.edges_to_adjacency_matrix(edges)

    assert np.all(actual_adjacency_matrix == expected_adjacency_matrix)
Exemple #10
0
def test_edges_to_adjacency_lists(edges, expected_adjacency_lists):

    actual_adjacency_lists = Graph.edges_to_adjacency_lists(edges)

    assert actual_adjacency_lists == expected_adjacency_lists
Exemple #11
0
def test_adjacency_matrix_to_edges(adjacency_matrix, expected_typed_edges):

    actual_edge_types = Graph.adjacency_matrix_to_edges(adjacency_matrix)

    assert actual_edge_types == expected_typed_edges