|
| 1 | +"""Loaders for GraphUniverse [1] datasets. |
| 2 | +
|
| 3 | +[1] "GraphUniverse: Enabling Systematic Evaluation of Inductive Generalization" by Louis Van Langendonck and Guillermo Bernardez and Nina Miolane and Pere Barlet-Ros |
| 4 | +Accepted at The Fourteenth International Conference on Learning Representations, 2026}, |
| 5 | +https://openreview.net/forum?id=jRWxvQnqUt |
| 6 | +""" |
| 7 | + |
| 8 | +from graph_universe import GraphUniverseDataset |
| 9 | +from omegaconf import DictConfig |
| 10 | +from torch_geometric.data import Data, Dataset |
| 11 | + |
| 12 | +from topobench.data.loaders.base import AbstractLoader |
| 13 | + |
| 14 | + |
| 15 | +class GraphUniverseDatasetLoader(AbstractLoader): |
| 16 | + """Load Graph Universe datasets. |
| 17 | +
|
| 18 | + Parameters |
| 19 | + ---------- |
| 20 | + parameters : DictConfig |
| 21 | + Configuration parameters containing: |
| 22 | + - data_dir: Root directory for data |
| 23 | + - data_name: Name of the dataset |
| 24 | + - data_type: Type of the dataset (e.g., "graph_classification") |
| 25 | + """ |
| 26 | + |
| 27 | + def __init__(self, parameters: DictConfig) -> None: |
| 28 | + super().__init__(parameters) |
| 29 | + |
| 30 | + def load_dataset(self) -> Dataset: |
| 31 | + """Load Graph Universe dataset. |
| 32 | +
|
| 33 | + Returns |
| 34 | + ------- |
| 35 | + Dataset |
| 36 | + The loaded Graph Universe dataset. |
| 37 | +
|
| 38 | + Raises |
| 39 | + ------ |
| 40 | + RuntimeError |
| 41 | + If dataset loading fails. |
| 42 | + """ |
| 43 | + |
| 44 | + dataset = GraphUniverseDataset( |
| 45 | + root=str(self.root_data_dir), |
| 46 | + parameters=self.parameters["generation_parameters"] |
| 47 | + ) |
| 48 | + |
| 49 | + return dataset |
| 50 | + |
| 51 | + def load(self, **kwargs) -> tuple[Data, str]: |
| 52 | + """Load data. |
| 53 | +
|
| 54 | + Parameters |
| 55 | + ---------- |
| 56 | + **kwargs : dict |
| 57 | + Additional keyword arguments. |
| 58 | +
|
| 59 | + Returns |
| 60 | + ------- |
| 61 | + tuple[torch_geometric.data.Data, str] |
| 62 | + Tuple containing the loaded data and the data directory. |
| 63 | + """ |
| 64 | + dataset = self.load_dataset(**kwargs) |
| 65 | + data_dir = dataset.raw_dir |
| 66 | + |
| 67 | + return dataset, data_dir |
0 commit comments