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]
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]
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)
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
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)