Source code for tgp.datasets.multipartite_graph

import os

import torch
from torch_geometric.data import InMemoryDataset, download_url


[docs] class MultipartiteGraphDataset(InMemoryDataset): """The synthetic dataset for graph classification from the paper `"MaxCutPool: differentiable feature-aware Maxcut for pooling in graph neural networks" <https://arxiv.org/abs/2409.05100>`_ (Abate & Bianchi, ICLR 2025). """ url = "https://zenodo.org/records/11617423/files/Multipartite.pkl?download=1" def __init__( self, root, transform=None, pre_transform=None, pre_filter=None, force_reload=False, ): super(MultipartiteGraphDataset, self).__init__( root=root, transform=transform, pre_transform=pre_transform, pre_filter=pre_filter, force_reload=force_reload, ) self.data, self.slices = torch.load(self.processed_paths[0]) @property def num_classes(self): """Return the number of unique target classes in the dataset.""" return len(torch.unique(self.data.y)) @property def raw_file_names(self): """Return the expected raw pickle filename.""" return ["Multipartite.pkl"] @property def processed_file_names(self): """Return the filename used for the processed dataset.""" return "data.pt"
[docs] def download(self): """Download the multipartite dataset archive into ``raw_dir``.""" download_url(self.url, self.raw_dir)
[docs] def process(self): """Load the raw tensor list, apply transforms, and persist processed data.""" path = os.path.join(self.raw_dir, self.raw_file_names[0]) data_list = torch.load(path) if self.pre_filter is not None: data_list = [data for data in data_list if self.pre_filter(data)] if self.pre_transform is not None: data_list = [self.pre_transform(data) for data in data_list] data, slices = self.collate(data_list) torch.save((data, slices), self.processed_paths[0])