{"id":26278502,"url":"https://github.com/geometric-intelligence/topobench","last_synced_at":"2025-04-06T06:09:56.754Z","repository":{"id":242609388,"uuid":"725558542","full_name":"geometric-intelligence/TopoBench","owner":"geometric-intelligence","description":"TopoBench is a Python library designed to standardize benchmarking and accelerate research in Topological Deep Learning","archived":false,"fork":false,"pushed_at":"2025-04-04T20:48:30.000Z","size":23103,"stargazers_count":113,"open_issues_count":4,"forks_count":17,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-04-04T21:37:09.223Z","etag":null,"topics":["cell-complex-neural-networks","cell-complexes","hypergraph-neural-networks","simplicial-complex","simplicial-neural-networks","topological-data-bechmark","topological-deep-learning","topological-learning","topological-neural-networks"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/geometric-intelligence.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing/index.rst","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-30T11:56:03.000Z","updated_at":"2025-04-04T07:13:24.000Z","dependencies_parsed_at":"2024-09-12T06:54:17.306Z","dependency_job_id":"65d60eca-be1a-4507-b2cf-1e9bc7492134","html_url":"https://github.com/geometric-intelligence/TopoBench","commit_stats":{"total_commits":882,"total_committers":10,"mean_commits":88.2,"dds":0.6258503401360545,"last_synced_commit":"04f9665cbc9a95e87dbf551b08ab0f8dee0a6001"},"previous_names":["pyt-team/topobenchmarkx","geometric-intelligence/topobenchmark","geometric-intelligence/topobench"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geometric-intelligence%2FTopoBench","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geometric-intelligence%2FTopoBench/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geometric-intelligence%2FTopoBench/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geometric-intelligence%2FTopoBench/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/geometric-intelligence","download_url":"https://codeload.github.com/geometric-intelligence/TopoBench/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247441053,"owners_count":20939239,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cell-complex-neural-networks","cell-complexes","hypergraph-neural-networks","simplicial-complex","simplicial-neural-networks","topological-data-bechmark","topological-deep-learning","topological-learning","topological-neural-networks"],"created_at":"2025-03-14T13:08:29.031Z","updated_at":"2025-04-06T06:09:56.718Z","avatar_url":"https://github.com/geometric-intelligence.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch2 align=\"center\"\u003e\n  \u003cimg src=\"resources/logo.jpg\" width=\"800\"\u003e\n\u003c/h2\u003e\n\n\u003ch3 align=\"center\"\u003e\n    A Comprehensive Benchmark Suite for Topological Deep Learning\n\u003c/h3\u003e\n\n\u003cp align=\"center\"\u003e\nAssess how your model compares against state-of-the-art topological neural networks.\n\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![Lint](https://github.com/geometric-intelligence/TopoBench/actions/workflows/lint.yml/badge.svg)](https://github.com/geometric-intelligence/TopoBench/actions/workflows/lint.yml)\n[![Test](https://github.com/geometric-intelligence/TopoBench/actions/workflows/test.yml/badge.svg)](https://github.com/geometric-intelligence/TopoBench/actions/workflows/test.yml)\n[![Codecov](https://codecov.io/gh/geometric-intelligence/TopoBench/branch/main/graph/badge.svg)](https://app.codecov.io/gh/geometric-intelligence/TopoBench)\n[![Docs](https://img.shields.io/badge/docs-website-brightgreen)](https://geometric-intelligence.github.io/topobench/index.html)\n[![Python](https://img.shields.io/badge/python-3.10+-blue?logo=python)](https://www.python.org/)\n[![license](https://badgen.net/github/license/geometric-intelligence/TopoBench?color=green)](https://github.com/geometric-intelligence/TopoBench/blob/main/LICENSE)\n[![slack](https://img.shields.io/badge/chat-on%20slack-purple?logo=slack)](https://join.slack.com/t/geometric-intelligenceworkspace/shared_invite/zt-2k63sv99s-jbFMLtwzUCc8nt3sIRWjEw)\n\n\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#pushpin-overview\"\u003eOverview\u003c/a\u003e •\n  \u003ca href=\"#jigsaw-get-started\"\u003eGet Started\u003c/a\u003e •\n  \u003ca href=\"#anchor-tutorials\"\u003eTutorials\u003c/a\u003e •\n  \u003ca href=\"#gear-neural-networks\"\u003eNeural Networks\u003c/a\u003e •\n  \u003ca href=\"#rocket-liftings\"\u003eLiftings\u003c/a\u003e •\n  \u003ca href=\"#books-datasets\"\u003eDatasets\u003c/a\u003e •\n  \u003ca href=\"#mag-references\"\u003eReferences\u003c/a\u003e \n\u003c/p\u003e\n\n\n\n## :pushpin: Overview\n\n`TopoBench` (TB) is a modular Python library designed to standardize benchmarking and accelerate research in Topological Deep Learning (TDL). In particular, TB allows to train and compare the performances of all sorts of Topological Neural Networks (TNNs) across the different topological domains, where by _topological domain_ we refer to a graph, a simplicial complex, a cellular complex, or a hypergraph. For detailed information, please refer to the [`TopoBench: A Framework for Benchmarking Topological Deep Learning`](https://arxiv.org/pdf/2406.06642) paper.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"resources/workflow.jpg\" width=\"700\"\u003e\n\u003c/p\u003e\n\nThe main pipeline trains and evaluates a wide range of state-of-the-art TNNs and Graph Neural Networks (GNNs) (see \u003ca href=\"#gear-neural-networks\"\u003e:gear: Neural Networks\u003c/a\u003e) on numerous and varied datasets and benchmark tasks (see \u003ca href=\"#books-datasets\"\u003e:books: Datasets\u003c/a\u003e ). Additionally, the library offers the ability to transform, i.e. _lift_, each dataset from one topological domain to another (see \u003ca href=\"#rocket-liftings\"\u003e:rocket: Liftings\u003c/a\u003e), enabling for the first time an exhaustive inter-domain comparison of TNNs.\n\n## :jigsaw: Get Started\n\n### Create Environment\n\nFirst, ensure `conda` is installed:  \n```bash\nconda --version\n```\nIf not, we recommend intalling Miniconda [following the official command line instructions](https://www.anaconda.com/docs/getting-started/miniconda/install).\n\nThen, clone and navigate to the `TopoBench` repository  \n```bash\ngit clone git@github.com:geometric-intelligence/topobench.git\ncd TopoBench\n```\n\nNext, set up and activate a conda environment `tb` with Python 3.11.3:\n```bash\nconda create -n tb python=3.11.3\nconda activate tb\n```\n\nIf working with GPUs, check the CUDA version of your machine:\n```bash\nwhich nvcc \u0026\u0026 nvcc --version\n```\nand ensure that it matches the CUDA version specified in the `env_setup.sh` file (`CUDA=cpu` by default for a broader compatibility). If it does not match, update `env_setup.sh` accordingly by changing both the `CUDA` and `TORCH` environment variables to compatible values as specified on [this website](https://github.com/pyg-team/pyg-lib).\n\nNext, set up the environment with the following command.\n```bash\nsource env_setup.sh\n```\nThis command installs the `TopoBench` library and its dependencies. \n\n### Run Training Pipeline\n\nOnce the setup is completed, train and evaluate a neural network by running the following command:\n\n```bash\npython -m topobench \n```\n\n---\n\n### Customizing Experiment Configuration\nThanks to `hydra` implementation, one can easily override the default experiment configuration through the command line. For instance, the model and dataset can be selected as:\n\n```\npython -m topobench model=cell/cwn dataset=graph/MUTAG\n```\n**Remark:** By default, our pipeline identifies the source and destination topological domains, and applies a default lifting between them if required.\n\n\nTransforms allow you to modify your data before processing. There are two main ways to configure transforms: individual transforms and transform groups.\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eConfiguring Individual Transforms\u003c/strong\u003e\u003c/summary\u003e\n\nWhen configuring a single transform, follow these steps:\n\n1. Choose a desired transform (e.g., a lifting transform).\n2. Identify the relative path to the transform configuration.\n\nThe folder structure for transforms is as follows:\n\n```\n├── configs\n│ ├── data_manipulations\n│ ├── transforms\n│ │ └── liftings\n│ │   ├── graph2cell\n│ │   ├── graph2hypergraph\n│ │   └── graph2simplicial\n```\n\nTo override the default transform, use the following command structure:\n\n```bash\npython -m topobench model=\u003cmodel_type\u003e/\u003cmodel_name\u003e dataset=\u003cdata_type\u003e/\u003cdataset_name\u003e transforms=[\u003ctransform_path\u003e/\u003ctransform_name\u003e]\n```\n\nFor example, to use the `discrete_configuration_complex` lifting with the `cell/cwn` model:\n\n```bash\npython -m topobench model=cell/cwn dataset=graph/MUTAG transforms=[liftings/graph2cell/discrete_configuration_complex]\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eConfiguring Transform Groups\u003c/strong\u003e\u003c/summary\u003e\n\nFor more complex scenarios, such as combining multiple data manipulations, use transform groups:\n\n1. Create a new configuration file in the `configs/transforms` directory (e.g., `custom_example.yaml`).\n2. Define the transform group in the YAML file:\n\n```yaml\ndefaults:\n- data_manipulations@data_transform_1: identity\n- data_manipulations@data_transform_2: node_degrees\n- data_manipulations@data_transform_3: one_hot_node_degree_features\n- liftings/graph2cell@graph2cell_lifting: cycle\n```\n\n**Important:** When composing multiple data manipulations, use the `@` operator to assign unique names to each transform.\n\n3. Run the experiment with the custom transform group:\n\n```bash\npython -m topobench model=cell/cwn dataset=graph/ZINC transforms=custom_example\n```\n\nThis approach allows you to create complex transform pipelines, including multiple data manipulations and liftings, in a single configuration file.\n\n\u003c/details\u003e\nBy mastering these configuration options, you can easily customize your experiments to suit your specific needs, from simple model and dataset selections to complex data transformation pipelines.\n---\n\n### Additional Notes\n\n- **Automatic Lifting:** By default, our pipeline identifies the source and destination topological domains and applies a default lifting between them if required.  \n- **Fine-Grained Configuration:** The same CLI override mechanism applies when modifying finer configurations within a `CONFIG GROUP`.  \n  Please refer to the official [`hydra` documentation](https://hydra.cc/docs/intro/) for further details.\n\n\n\n\n## :bike: Experiments Reproducibility\nTo reproduce Table 1 from the [`TopoBench: A Framework for Benchmarking Topological Deep Learning`](https://arxiv.org/pdf/2406.06642) paper, please run the following command:\n\n```bash\nbash scripts/reproduce.sh\n```\n**Remark:** We have additionally provided a public [W\u0026B (Weights \u0026 Biases) project](https://wandb.ai/telyatnikov_sap/TopoBenchmark_main?nw=nwusertelyatnikov_sap) with logs for the corresponding runs (updated on June 11, 2024).\n\n\n## :anchor: Tutorials\n\nExplore our [tutorials](https://github.com/geometric-intelligence/TopoBench/tree/main/tutorials) for further details on how to add new datasets, transforms/liftings, and benchmark tasks. \n\n## :gear: Neural Networks\n\nWe list the neural networks trained and evaluated by `TopoBench`, organized by the topological domain over which they operate: graph, simplicial complex, cellular complex or hypergraph. Many of these neural networks were originally implemented in [`TopoModelX`](https://github.com/pyt-team/TopoModelX).\n\n\n### Graphs\n| Model | Reference |\n| --- | --- |\n| GAT | [Graph Attention Networks](https://openreview.net/pdf?id=rJXMpikCZ) |\n| GIN | [How Powerful are Graph Neural Networks?](https://openreview.net/pdf?id=ryGs6iA5Km) |\n| GCN | [Semi-Supervised Classification with Graph Convolutional Networks](https://arxiv.org/pdf/1609.02907v4) |\n| GraphMLP | [Graph-MLP: Node Classification without Message Passing in Graph](https://arxiv.org/pdf/2106.04051) |\n\n### Simplicial complexes\n| Model | Reference |\n| --- | --- |\n| SAN | [Simplicial Attention Neural Networks](https://arxiv.org/pdf/2203.07485) |\n| SCCN | [Efficient Representation Learning for Higher-Order Data with Simplicial Complexes](https://openreview.net/pdf?id=nGqJY4DODN) |\n| SCCNN | [Convolutional Learning on Simplicial Complexes](https://arxiv.org/pdf/2301.11163) |\n| SCN | [Simplicial Complex Neural Networks](https://ieeexplore.ieee.org/document/10285604) |\n\n### Cellular complexes\n| Model | Reference |\n| --- | --- |\n| CAN | [Cell Attention Network](https://arxiv.org/pdf/2209.08179) |\n| CCCN | Inspired by [A learning algorithm for computational connected cellular network](https://ieeexplore.ieee.org/document/1202221), implementation adapted from [Generalized Simplicial Attention Neural Networks](https://arxiv.org/abs/2309.02138)|\n| CXN | [Cell Complex Neural Networks](https://openreview.net/pdf?id=6Tq18ySFpGU) |\n| CWN | [Weisfeiler and Lehman Go Cellular: CW Networks](https://arxiv.org/pdf/2106.12575) |\n\n### Hypergraphs\n| Model | Reference |\n| --- | --- |\n| AllDeepSet | [You are AllSet: A Multiset Function Framework for Hypergraph Neural Networks](https://openreview.net/pdf?id=hpBTIv2uy_E) |\n| AllSetTransformer | [You are AllSet: A Multiset Function Framework for Hypergraph Neural Networks](https://openreview.net/pdf?id=hpBTIv2uy_E) |\n| EDGNN | [Equivariant Hypergraph Diffusion Neural Operators](https://arxiv.org/pdf/2207.06680) |\n| UniGNN | [UniGNN: a Unified Framework for Graph and Hypergraph Neural Networks](https://arxiv.org/pdf/2105.00956) |\n| UniGNN2 | [UniGNN: a Unified Framework for Graph and Hypergraph Neural Networks](https://arxiv.org/pdf/2105.00956) |\n\n### Combinatorial complexes\n| Model | Reference |\n| --- | --- |\n| GCCN | [TopoTune: A Framework for Generalized Combinatorial Complex Neural Networks](https://arxiv.org/pdf/2410.06530) |\n\n**Remark:** TopoBench includes [TopoTune](https://arxiv.org/pdf/2410.06530), a comprehensive framework for easily designing new, general TDL models on any domain using any (graph) neural network as a backbone. Please check out the extended [TopoTune wiki page](https://github.com/geometric-intelligence/TopoBench/wiki/TopoTune) for further details on how to leverage this framework to define and train customized topological neural network architectures.\n\n\n## :rocket: Liftings \u0026 Transforms\n\nWe list the liftings used in `TopoBench` to transform datasets. Here, a _lifting_ refers to a function that transforms a dataset defined on a topological domain (_e.g._, on a graph) into the same dataset but supported on a different topological domain (_e.g._, on a simplicial complex). \n\n### \u003ca name=\"structural_liftings\"\u003e\u003c/a\u003e Structural Liftings\n\nThe structural lifting is responsible for the transformation of the underlying relationships or elements of the data. For instance, it might determine how nodes and edges in a graph are mapped into triangles and tetrahedra in a simplicial complex. This structural transformation can be further categorized into connectivity-based, where the mapping relies solely on the existing connections within the data, and feature-based, where the data's inherent properties or features guide the new structure.\n\nWe enumerate below the structural liftings currently implemented in `TopoBench`; please check out the provided description links for further details. \n\n**Remark:**: Most of these liftings are adaptations of winner submissions of the ICML TDL Challenge 2024 ([paper](https://proceedings.mlr.press/v251/bernardez24a.html) | [repo](https://github.com/pyt-team/challenge-icml-2024)); see the [Structural Liftings wiki](https://github.com/geometric-intelligence/TopoBench/wiki/Structural-Liftings) for a complete list of compatible liftings.\n\n#### Graph to Simplicial Complex\n| Name | Type | Description |\n| --- | --- | --- |\n|   DnD Lifting  |   Feature-based  |  [Wiki page](https://github.com/geometric-intelligence/TopoBench/wiki/DnD-Lifting-(Graph-to-Simplicial))   |\n|  Random Latent Clique Lifting   |   Connectivity-based  |   [Wiki page](https://github.com/geometric-intelligence/TopoBench/wiki/Random-Latent-Clique-Lifting-(Graph-to-Simplicial))  |\n|  Line Lifting   |   Connectivity-based  |  [Wiki page](https://github.com/geometric-intelligence/TopoBench/wiki/Line-Lifting-(Graph-to-Simplicial))   |\n|  Neighbourhood Complex Lifting   |   Connectivity-based  |   [Wiki page](https://github.com/geometric-intelligence/TopoBench/wiki/Neighbourhood-Complex-Lifting-(Graph-to-Simplicial))  |\n|  Graph Induced Lifting   |   Connectivity-based  |  [Wiki page](https://github.com/geometric-intelligence/TopoBench/wiki/Graph-Induced-Lifting-(Graph-to-Simplicial))   |\n|  Eccentricity Lifting  |  Connectivity-based  |  [Wiki page](https://github.com/geometric-intelligence/TopoBench/wiki/Eccentricity-Lifting-(Graph-to-Simplicial))  |\n| Feature‐Based Rips Complex  | Both connectivity and feature-based  |  [Wiki page](https://github.com/geometric-intelligence/TopoBench/wiki/Feature%E2%80%90Based-Rips-Complex-(Graph-to-Simplicial)) |\n| Clique Lifting | Connectivity-based | [Wiki page](https://github.com/geometric-intelligence/TopoBench/wiki/Clique-Lifting-(Graph-to-Simplicial)) |\n| K-hop Lifting | Connectivity-based | [Wiki page](https://github.com/geometric-intelligence/TopoBench/wiki/KHop-Lifting-(Graph-to-Simplicial)) |\n\n#### Graph to Cell Complex\n| Name | Type | Description |\n| --- | --- | --- |\n|  Discrete Configuration Complex  | Connectivity-based  |  [Wiki page](https://github.com/geometric-intelligence/TopoBench/wiki/Discrete-Configuration-Complex-(Graph-to-Cell))  |\n|  Cycle Lifting  | Connectivity-based  |  [Wiki page](https://github.com/geometric-intelligence/TopoBench/wiki/Cycle-Lifting-(Graph-to-Cell))  |\n\n\n#### Graph to Hypergraph\n| Name | Type | Description |\n| --- | --- | --- |\n|  Expander Hypergraph Lifting  | Connectivity-based  |  [Wiki page](https://github.com/geometric-intelligence/TopoBench/wiki/Expander-Hypergraph-Lifting-(Graph-to-Hypergraph))  |\n|  Kernel Lifting  | Both connectivity and feature-based  |  [Wiki page](https://github.com/geometric-intelligence/TopoBench/wiki/Kernel-Lifting-(Graph-to-Hypergraph))  |\n|  Mapper Lifting  | Connectivity-based  |  [Wiki page](https://github.com/geometric-intelligence/TopoBench/wiki/Mapper-Lifting-(Graph-to-Hypergraph))  |\n|  Forman‐Ricci Curvature Coarse Geometry Lifting  |  Connectivity-based |  [Wiki page](https://github.com/geometric-intelligence/TopoBench/wiki/Forman%E2%80%90Ricci-Curvature-Coarse-Geometry-Lifting-(Graph-to-Hypergraph))  |\n|  KNN Lifting  | Feature-based  |  [Wiki page](https://github.com/geometric-intelligence/TopoBench/wiki/KNN-Lifting-(Graph-to-Hypergraph))  |\n|  K-hop Lifting  |  Connectivity-based |  [Wiki page](https://github.com/geometric-intelligence/TopoBench/wiki/KHop-Lifting-(Graph-to-Hypergraph))  |\n\n\n#### Pointcloud to Simplicial\n| Name | Type | Description |\n| --- | --- | --- |\n|  Delaunay Lifting  | Feature-based  |  [Wiki page](https://github.com/geometric-intelligence/TopoBench/wiki/Delaunay-Lifting-(Pointcloud-to-Simplicial))  |\n|  Random Flag Complex  |  Feature-based |  [Wiki page](https://github.com/geometric-intelligence/TopoBench/wiki/Random-Flag-Complex-(Pointcloud-to-Simplicial))  |\n\n\n#### Pointcloud to Hypergraph\n| Name | Type | Description |\n| --- | --- | --- |\n|  Mixture of Gaussians MST lifting  |  Feature-based |  [Wiki page](https://github.com/geometric-intelligence/TopoBench/wiki/Mixture-of-Gaussians---MST-lifting-(Pointcloud-to-Hypergraph))  |\n|  PointNet Lifting  | Feature-based  |  [Wiki page](https://github.com/geometric-intelligence/TopoBench/wiki/PointNet--Lifting-(Pointcloud-to-Hypergraph))  |\n|  Voronoi Lifting  | Feature-based  |  [Wiki page](https://github.com/geometric-intelligence/TopoBench/wiki/Voronoi-Lifting-(Pointcloud-to-Hypergraph))  |\n\n#### Simplicial to Combinatorial\n| Name | Type | Description |\n| --- | --- | --- |\n| Coface Lifting | Connectivity-based | [Wiki page](https://github.com/geometric-intelligence/TopoBench/wiki/Coface-Lifting-(Simplicial-to-Combinatorial)) |\n\n#### Hypergraph to Combinatorial\n| Name | Type | Description |\n| --- | --- | --- |\n|  Universal Strict Lifting  | Connectivity-based  |  [Wiki page](https://github.com/geometric-intelligence/TopoBench/wiki/Universal-Strict-Lifting-(Hypergraph-to-Combinatorial))  |\n\n### Feature Liftings\n\nFeature liftings address the transfer of data attributes or features during mapping, ensuring that the properties associated with the data elements are consistently preserved in the new representation.\n\n| Name                | Description                                                                 | Supported Domains |\n|---------------------|-----------------------------------------------------------------------------|-------------------|\n| ProjectionSum       | Projects r-cell features of a graph to r+1-cell structures utilizing incidence matrices \\(B_{r}\\). | All  |\n| ConcatenationLifting | Concatenate r-cell features to obtain r+1-cell features.                   | Simplicial        |\n\n### Data Transformations \n\nSpecially useful in pre-processing steps, these are the general data manipulations currently implemented in `TopoBench`:\n\n| Transform | Description | \n| --- | --- |\n| OneHotDegreeFeatures | Adds the node degree as one hot encodings to the node features. |\n|NodeFeaturesToFloat |Converts the node features of the input graph to float. |\n| NodeDegrees | Calculates the node degrees of the input graph.|\n| NodeDegrees | Keeps only the selected fields of the input data. |\n| KeepOnlyConnectedComponent | Keep only the largest connected components of the input graph. |\n| InfereRadiusConnectivity | Generates the radius connectivity of the input point cloud. |\n| InfereKNNConnectivity | Generates the k-nearest neighbor connectivity of the input point cloud. |\n| IdentityTransform | An identity transform that does nothing to the input data. |\n|  EqualGausFeatures | Generates equal Gaussian features for all nodes. |\n|  CalculateSimplicialCurvature |  Calculates the simplicial curvature of the input graph.  |\n\n\u003c/details\u003e\n\n## :books: Datasets\n\n### Graph\n| Dataset | Task | Description | Reference |\n| --- | --- | --- | --- |\n| Cora | Classification | Cocitation dataset. | [Source](https://link.springer.com/article/10.1023/A:1009953814988) |\n| Citeseer | Classification | Cocitation dataset. | [Source](https://dl.acm.org/doi/10.1145/276675.276685) |\n| Pubmed | Classification | Cocitation dataset. | [Source](https://ojs.aaai.org/aimagazine/index.php/aimagazine/article/view/2157) |\n| MUTAG | Classification | Graph-level classification. | [Source](https://pubs.acs.org/doi/abs/10.1021/jm00106a046) |\n| PROTEINS | Classification | Graph-level classification. | [Source](https://academic.oup.com/bioinformatics/article/21/suppl_1/i47/202991) |\n| NCI1 | Classification | Graph-level classification. | [Source](https://ieeexplore.ieee.org/document/4053093) |\n| NCI109 | Classification | Graph-level classification. | [Source](https://arxiv.org/pdf/2007.08663) |\n| IMDB-BIN | Classification | Graph-level classification. | [Source](https://dl.acm.org/doi/10.1145/2783258.2783417) |\n| IMDB-MUL | Classification | Graph-level classification. | [Source](https://dl.acm.org/doi/10.1145/2783258.2783417) |\n| REDDIT | Classification | Graph-level classification. | [Source](https://proceedings.neurips.cc/paper_files/paper/2017/file/5dd9db5e033da9c6fb5ba83c7a7ebea9-Paper.pdf) |\n| Amazon | Classification | Heterophilic dataset. | [Source](https://arxiv.org/pdf/1205.6233) |\n| Minesweeper | Classification | Heterophilic dataset. | [Source](https://arxiv.org/pdf/2302.11640) |\n| Empire | Classification | Heterophilic dataset. | [Source](https://arxiv.org/pdf/2302.11640) |\n| Tolokers | Classification | Heterophilic dataset. | [Source](https://arxiv.org/pdf/2302.11640) |\n| US-county-demos | Regression | In turn each node attribute is used as the target label. | [Source](https://arxiv.org/pdf/2002.08274) |\n| ZINC | Regression | Graph-level regression. | [Source](https://pubs.acs.org/doi/10.1021/ci3001277) |\n\n\n### Simplicial\n| Dataset | Task | Description | Reference |\n| --- | --- | --- | --- |\n| Mantra |  Classification, Multi-label Classification  |  Predict topological attributes of manifold triangulations |  [Source](https://github.com/aidos-lab/MANTRA)  |\n\n### Hypergraph\n| Dataset | Task | Description | Reference |\n| --- | --- | --- | --- |\n| Cora-Cocitation | Classification | Cocitation dataset. | [Source](https://proceedings.neurips.cc/paper_files/paper/2019/file/1efa39bcaec6f3900149160693694536-Paper.pdf) |\n| Citeseer-Cocitation | Classification | Cocitation dataset. | [Source](https://proceedings.neurips.cc/paper_files/paper/2019/file/1efa39bcaec6f3900149160693694536-Paper.pdf) |\n| PubMed-Cocitation | Classification | Cocitation dataset. | [Source](https://proceedings.neurips.cc/paper_files/paper/2019/file/1efa39bcaec6f3900149160693694536-Paper.pdf) |\n| Cora-Coauthorship | Classification | Cocitation dataset. | [Source](https://proceedings.neurips.cc/paper_files/paper/2019/file/1efa39bcaec6f3900149160693694536-Paper.pdf) |\n| DBLP-Coauthorship | Classification | Cocitation dataset. | [Source](https://proceedings.neurips.cc/paper_files/paper/2019/file/1efa39bcaec6f3900149160693694536-Paper.pdf) |\n\n\n\n## :mag: References ##\n\nTo learn more about `TopoBench`, we invite you to read the paper:\n\n```\n@article{telyatnikov2024topobench,\n      title={TopoBench: A Framework for Benchmarking Topological Deep Learning}, \n      author={Lev Telyatnikov and Guillermo Bernardez and Marco Montagna and Pavlo Vasylenko and Ghada Zamzmi and Mustafa Hajij and Michael T Schaub and Nina Miolane and Simone Scardapane and Theodore Papamarkou},\n      year={2024},\n      eprint={2406.06642},\n      archivePrefix={arXiv},\n      primaryClass={cs.LG},\n      url={https://arxiv.org/abs/2406.06642}, \n}\n```\nIf you find `TopoBench` useful, we would appreciate if you cite us!\n\n\n\n## :mouse: Additional Details\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eHierarchy of configuration files\u003c/b\u003e\u003c/summary\u003e\n\n```\n├── configs                   \u003c- Hydra configs\n│   ├── callbacks                \u003c- Callbacks configs\n│   ├── dataset                  \u003c- Dataset configs\n│   │   ├── graph                    \u003c- Graph dataset configs\n│   │   ├── hypergraph               \u003c- Hypergraph dataset configs\n│   │   └── simplicial               \u003c- Simplicial dataset configs\n│   ├── debug                    \u003c- Debugging configs\n│   ├── evaluator                \u003c- Evaluator configs\n│   ├── experiment               \u003c- Experiment configs\n│   ├── extras                   \u003c- Extra utilities configs\n│   ├── hparams_search           \u003c- Hyperparameter search configs\n│   ├── hydra                    \u003c- Hydra configs\n│   ├── local                    \u003c- Local configs\n│   ├── logger                   \u003c- Logger configs\n│   ├── loss                     \u003c- Loss function configs\n│   ├── model                    \u003c- Model configs\n│   │   ├── cell                     \u003c- Cell model configs\n│   │   ├── graph                    \u003c- Graph model configs\n│   │   ├── hypergraph               \u003c- Hypergraph model configs\n│   │   └── simplicial               \u003c- Simplicial model configs\n│   ├── optimizer                \u003c- Optimizer configs\n│   ├── paths                    \u003c- Project paths configs\n│   ├── scheduler                \u003c- Scheduler configs\n│   ├── trainer                  \u003c- Trainer configs\n│   ├── transforms               \u003c- Data transformation configs\n│   │   ├── data_manipulations       \u003c- Data manipulation transforms\n│   │   ├── dataset_defaults         \u003c- Default dataset transforms\n│   │   ├── feature_liftings         \u003c- Feature lifting transforms\n│   │   └── liftings                 \u003c- Lifting transforms\n│   │       ├── graph2cell               \u003c- Graph to cell lifting transforms\n│   │       ├── graph2hypergraph         \u003c- Graph to hypergraph lifting transforms\n│   │       ├── graph2simplicial         \u003c- Graph to simplicial lifting transforms\n│   │       ├── graph2cell_default.yaml  \u003c- Default graph to cell lifting config\n│   │       ├── graph2hypergraph_default.yaml \u003c- Default graph to hypergraph lifting config\n│   │       ├── graph2simplicial_default.yaml \u003c- Default graph to simplicial lifting config\n│   │       ├── no_lifting.yaml           \u003c- No lifting config\n│   │       ├── custom_example.yaml       \u003c- Custom example transform config\n│   │       └── no_transform.yaml         \u003c- No transform config\n│   ├── wandb_sweep              \u003c- Weights \u0026 Biases sweep configs\n│   │\n│   ├── __init__.py              \u003c- Init file for configs module\n│   └── run.yaml               \u003c- Main config for training\n```\n\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e More information regarding Topological Deep Learning \u003c/b\u003e\u003c/summary\u003e\n  \n  [Topological Graph Signal Compression](https://arxiv.org/pdf/2308.11068)\n  \n  [Architectures of Topological Deep Learning: A Survey on Topological Neural Networks](https://par.nsf.gov/servlets/purl/10477141)\n  \n  [TopoX: a suite of Python packages for machine learning on topological domains](https://arxiv.org/pdf/2402.02441)\t\n\u003c/details\u003e\n\n---\n\n### 📢 Get in Touch!\n\nWe are always open to collaborations and discussions on TDL research.  \nFeel free to reach out via email if you want to collaborate, do your thesis with our team, or open a discussion for various opportunities.  \n\n📧 **Contact Email:** [topological.intelligence@gmail.com](mailto:topological.intelligence@gmail.com)  \n▶️ **YouTube Channel:** [Topological Intelligence](https://www.youtube.com/@TopologicalIntelligence)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeometric-intelligence%2Ftopobench","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgeometric-intelligence%2Ftopobench","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeometric-intelligence%2Ftopobench/lists"}