Ejemplo n.º 1
0
def test_dataloader():
    x = torch.Tensor([[1], [1], [1]])
    edge_index = torch.tensor([[0, 1, 1, 2], [1, 0, 2, 1]])
    face = torch.tensor([[0], [1], [2]])
    y = 2.
    z = torch.tensor(0.)
    name = 'data'

    data = Data(x=x, edge_index=edge_index, y=y, z=z, name=name)
    assert data.__repr__() == (
        'Data(edge_index=[2, 4], name="data", x=[3, 1], y=2.0, z=0.0)')
    data.face = face

    loader = DataLoader([data, data], batch_size=2, shuffle=False)

    for batch in loader:
        assert len(batch) == 8
        assert batch.batch.tolist() == [0, 0, 0, 1, 1, 1]
        assert batch.ptr.tolist() == [0, 3, 6]
        assert batch.x.tolist() == [[1], [1], [1], [1], [1], [1]]
        assert batch.edge_index.tolist() == [[0, 1, 1, 2, 3, 4, 4, 5],
                                             [1, 0, 2, 1, 4, 3, 5, 4]]
        assert batch.y.tolist() == [2.0, 2.0]
        assert batch.z.tolist() == [0.0, 0.0]
        assert batch.name == ['data', 'data']
        assert batch.face.tolist() == [[0, 3], [1, 4], [2, 5]]

    loader = DataLoader([data, data],
                        batch_size=2,
                        shuffle=False,
                        follow_batch=['edge_index'])

    for batch in loader:
        assert len(batch) == 9
        assert batch.edge_index_batch.tolist() == [0, 0, 0, 0, 1, 1, 1, 1]
Ejemplo n.º 2
0
def test_dataloader():
    x = torch.Tensor([[1], [1], [1]])
    edge_index = torch.tensor([[0, 1, 1, 2], [1, 0, 2, 1]])
    face = torch.tensor([[0], [1], [2]])

    data = Data(x=x, edge_index=edge_index, y=2)
    assert data.__repr__() == 'Data(edge_index=[2, 4], x=[3, 1], y=2)'
    data.face = face

    loader = DataLoader([data, data], batch_size=2, shuffle=False)

    for batch in loader:
        assert len(batch) == 5
        assert batch.batch.tolist() == [0, 0, 0, 1, 1, 1]
        assert batch.x.tolist() == [[1], [1], [1], [1], [1], [1]]
        assert batch.edge_index.tolist() == [[0, 1, 1, 2, 3, 4, 4, 5],
                                             [1, 0, 2, 1, 4, 3, 5, 4]]
        assert batch.y.tolist() == [2, 2]
        assert batch.face.tolist() == [[0, 3], [1, 4], [2, 5]]

    loader = DataLoader([data, data],
                        batch_size=2,
                        shuffle=False,
                        follow_batch=['edge_index'])

    for batch in loader:
        assert len(batch) == 6
        assert batch.edge_index_batch.tolist() == [0, 0, 0, 0, 1, 1, 1, 1]
Ejemplo n.º 3
0
def test_data():
    x = torch.tensor([[1, 3, 5], [2, 4, 6]], dtype=torch.float).t()
    edge_index = torch.tensor([[0, 0, 1, 1, 2], [1, 1, 0, 2, 1]])
    data = Data(x=x, edge_index=edge_index).to(torch.device('cpu'))

    N = data.num_nodes

    assert data.x.tolist() == x.tolist()
    assert data['x'].tolist() == x.tolist()

    assert sorted(data.keys) == ['edge_index', 'x']
    assert len(data) == 2
    assert 'x' in data and 'edge_index' in data and 'pos' not in data

    assert data.__cat_dim__('x', data.x) == 0
    assert data.__cat_dim__('edge_index', data.edge_index) == -1
    assert data.__cumsum__('x', data.x) is False
    assert data.__cumsum__('edge_index', data.edge_index) is True

    assert not data.x.is_contiguous()
    data.contiguous()
    assert data.x.is_contiguous()

    assert not data.is_coalesced()
    data.edge_index, _ = coalesce(data.edge_index, None, N, N)
    assert data.is_coalesced()

    clone = data.clone()
    assert clone != data
    assert len(clone) == len(data)
    assert clone.x.tolist() == data.x.tolist()
    assert clone.edge_index.tolist() == data.edge_index.tolist()

    data['x'] = x + 1
    assert data.x.tolist() == (x + 1).tolist()

    assert data.__repr__() == 'Data(edge_index=[2, 4], x=[3, 2])'

    dictionary = {'x': data.x, 'edge_index': data.edge_index}
    data = Data.from_dict(dictionary)
    assert sorted(data.keys) == ['edge_index', 'x']

    assert not data.contains_isolated_nodes()
    assert not data.contains_self_loops()
    assert data.is_undirected()
    assert not data.is_directed()

    assert data.num_nodes == 3
    assert data.num_edges == 4
    assert data.num_features == 2

    data.x = None
    assert data.num_nodes == 3

    data.edge_index = None
    assert data.num_nodes is None
    assert data.num_edges is None
    def test_geometric(self):
        x = torch.tensor([[1, 3, 5], [2, 4, 6]],
                         dtype=torch.float).t().to(device)
        edge_index = torch.tensor([[0, 0, 1, 1, 2], [1, 1, 0, 2,
                                                     1]]).to(device)
        data = Data(x=x, edge_index=edge_index).to(torch.device('cpu'))

        N = data.num_nodes

        self.assertCountEqual(data.x.tolist(), x.tolist())
        self.assertCountEqual(data['x'].tolist(), x.tolist())

        self.assertEqual(['edge_index', 'x'], sorted(data.keys))
        self.assertEqual(2, len(data))
        self.assertIn('x', data)
        self.assertIn('edge_index', data)
        self.assertNotIn('pos', data)
        self.assertEqual(0, data.__cat_dim__('x', data.x))
        self.assertEqual(-1, data.__cat_dim__('edge_index', data.edge_index))
        self.assertEqual(0, data.__inc__('x', data.x))
        self.assertEqual(data.num_nodes,
                         data.__inc__('edge_index', data.edge_index))
        data.contiguous()
        self.assertTrue(data.x.is_contiguous())

        data.edge_index, _ = coalesce(data.edge_index, None, N, N)
        data = data.coalesce()
        self.assertTrue(data.is_coalesced())

        clone = data.clone()
        self.assertNotEqual(clone, data)
        self.assertEqual(len(clone), len(data))
        self.assertCountEqual(clone.x.tolist(), data.x.tolist())
        self.assertCountEqual(clone.edge_index.tolist(),
                              data.edge_index.tolist())

        data['x'] = x + 1
        self.assertCountEqual(data.x.tolist(), (x + 1).tolist())

        self.assertEqual('Data(edge_index=[2, 4], x=[3, 2])', data.__repr__())

        dictionary = {'x': data.x, 'edge_index': data.edge_index}
        data = Data.from_dict(dictionary)
        self.assertEqual(['edge_index', 'x'], sorted(data.keys))

        self.assertTrue(data.is_undirected())

        self.assertEqual(3, data.num_nodes)
        self.assertEqual(4, data.num_edges)
        self.assertIsNone(data.num_faces)
        self.assertEqual(2, data.num_node_features)
        self.assertEqual(2, data.num_features)
    def test_geometric(self):
        x = torch.tensor([[1, 3, 5], [2, 4, 6]], dtype=torch.float).t()
        edge_index = torch.tensor([[0, 0, 1, 1, 2], [1, 1, 0, 2, 1]])
        data = Data(x=x, edge_index=edge_index).to(torch.device('cpu'))

        N = data.num_nodes

        self.assertTrue(data.x.tolist() == x.tolist())
        self.assertTrue(data['x'].tolist() == x.tolist())

        self.assertTrue(sorted(data.keys) == ['edge_index', 'x'])
        self.assertTrue(len(data) == 2)
        self.assertTrue('x' in data and 'edge_index' in data and 'pos' not in data)
        self.assertTrue(data.__cat_dim__('x', data.x) == 0)
        self.assertTrue(data.__cat_dim__('edge_index', data.edge_index) == -1)
        self.assertTrue(data.__inc__('x', data.x) == 0)
        self.assertTrue(data.__inc__('edge_index', data.edge_index) == data.num_nodes)
        data.contiguous()
        self.assertTrue(data.x.is_contiguous())

        data.edge_index, _ = coalesce(data.edge_index, None, N, N)
        data = data.coalesce()
        self.assertTrue(data.is_coalesced())

        clone = data.clone()
        self.assertTrue(clone != data)
        self.assertTrue(len(clone) == len(data))
        self.assertTrue(clone.x.tolist() == data.x.tolist())
        self.assertTrue(clone.edge_index.tolist() == data.edge_index.tolist())

        data['x'] = x + 1
        self.assertTrue(data.x.tolist() == (x + 1).tolist())

        self.assertTrue(data.__repr__() == 'Data(edge_index=[2, 4], x=[3, 2])')

        dictionary = {'x': data.x, 'edge_index': data.edge_index}
        data = Data.from_dict(dictionary)
        self.assertTrue(sorted(data.keys) == ['edge_index', 'x'])

        self.assertTrue(data.is_undirected())

        self.assertTrue(data.num_nodes == 3)
        self.assertTrue(data.num_edges == 4)
        self.assertTrue(data.num_faces is None)
        self.assertTrue(data.num_node_features == 2)
        self.assertTrue(data.num_features == 2)
Ejemplo n.º 6
0
def test_data():
    x = torch.tensor([[1, 3, 5], [2, 4, 6]], dtype=torch.float).t()
    edge_index = torch.tensor([[0, 1, 1, 2], [1, 0, 2, 1]])
    data = Data(x=x, edge_index=edge_index)

    assert data.x.tolist() == x.tolist()
    assert data['x'].tolist() == x.tolist()

    assert sorted(data.keys) == ['edge_index', 'x']
    assert len(data) == 2
    assert 'x' in data and 'edge_index' in data and 'pos' not in data

    assert data.cat_dim('x', data.x) == 0
    assert data.cat_dim('edge_index', data.edge_index) == -1

    data.to(torch.device('cpu'))
    assert not data.x.is_contiguous()
    data.contiguous()
    assert data.x.is_contiguous()

    data['x'] = x + 1
    assert data.x.tolist() == (x + 1).tolist()

    assert data.__repr__() == 'Data(edge_index=[2, 4], x=[3, 2])'

    dictionary = {'x': x, 'edge_index': edge_index}
    data = Data.from_dict(dictionary)
    assert sorted(data.keys) == ['edge_index', 'x']

    assert not data.contains_isolated_nodes()
    assert not data.contains_self_loops()
    assert data.is_undirected()
    assert not data.is_directed()

    assert data.num_nodes == 3
    assert data.num_edges == 4

    data.x = None
    assert data.num_nodes == 3

    data.edge_index = None
    assert data.num_nodes is None
    assert data.num_edges is None
Ejemplo n.º 7
0
def test_data():
    torch_geometric.set_debug(True)

    x = torch.tensor([[1, 3, 5], [2, 4, 6]], dtype=torch.float).t()
    edge_index = torch.tensor([[0, 0, 1, 1, 2], [1, 1, 0, 2, 1]])
    data = Data(x=x, edge_index=edge_index).to(torch.device('cpu'))

    N = data.num_nodes

    assert data.x.tolist() == x.tolist()
    assert data['x'].tolist() == x.tolist()

    assert sorted(data.keys) == ['edge_index', 'x']
    assert len(data) == 2
    assert 'x' in data and 'edge_index' in data and 'pos' not in data

    assert data.__cat_dim__('x', data.x) == 0
    assert data.__cat_dim__('edge_index', data.edge_index) == -1
    assert data.__inc__('x', data.x) == 0
    assert data.__inc__('edge_index', data.edge_index) == data.num_nodes

    assert not data.x.is_contiguous()
    data.contiguous()
    assert data.x.is_contiguous()

    assert not data.is_coalesced()
    data.edge_index, _ = coalesce(data.edge_index, None, N, N)
    data = data.coalesce()
    assert data.is_coalesced()

    clone = data.clone()
    assert clone != data
    assert len(clone) == len(data)
    assert clone.x.tolist() == data.x.tolist()
    assert clone.edge_index.tolist() == data.edge_index.tolist()

    data['x'] = x + 1
    assert data.x.tolist() == (x + 1).tolist()

    assert data.__repr__() == 'Data(edge_index=[2, 4], x=[3, 2])'

    dictionary = {'x': data.x, 'edge_index': data.edge_index}
    data = Data.from_dict(dictionary)
    assert sorted(data.keys) == ['edge_index', 'x']

    assert not data.contains_isolated_nodes()
    assert not data.contains_self_loops()
    assert data.is_undirected()
    assert not data.is_directed()

    assert data.num_nodes == 3
    assert data.num_edges == 4
    assert data.num_faces is None
    assert data.num_node_features == 2
    assert data.num_features == 2

    data.edge_attr = torch.randn(data.num_edges, 2)
    assert data.num_edge_features == 2
    data.edge_attr = None

    data.x = None
    assert data.num_nodes == 3

    data.edge_index = None
    assert data.num_nodes is None
    assert data.num_edges is None

    data.num_nodes = 4
    assert data.num_nodes == 4

    data = Data(x=x, attribute=x)
    assert len(data) == 2
    assert data.x.tolist() == x.tolist()
    assert data.attribute.tolist() == x.tolist()

    face = torch.tensor([[0, 1], [1, 2], [2, 3]])
    data = Data(num_nodes=4, face=face)
    assert data.num_faces == 2
    assert data.num_nodes == 4

    data = Data(title="test")
    assert data.__repr__() == 'Data(title="test")'
    assert data.num_node_features == 0
    assert data.num_edge_features == 0

    torch_geometric.set_debug(False)