Skip to content

Track: Track1; Team name: LangDiff; Model: MTGCN - #400

Open
Mullerio wants to merge 1 commit into
geometric-intelligence:mainfrom
Mullerio:mtgcn
Open

Track: Track1; Team name: LangDiff; Model: MTGCN#400
Mullerio wants to merge 1 commit into
geometric-intelligence:mainfrom
Mullerio:mtgcn

Conversation

@Mullerio

@Mullerio Mullerio commented Jul 26, 2026

Copy link
Copy Markdown

Checklist

  • My pull request has a clear and explanatory title.
  • My pull request passes the Linting test.
  • I added appropriate unit tests and made sure the code passes all unit tests.
  • My PR follows PEP 8 guidelines.
  • My code is properly documented using numpy documentation conventions, and I made sure the documentation renders properly.

Description

This PR adds MTGCN, based on the Multi-Track Message Passing framework from , Hongbin Pei et al. ICML (2024) https://proceedings.mlr.press/v235/pei24a.html as a graph backbone. It is partially based on the official implemenation
https://github.com/XJTU-Graph-Intelligence-Lab/Multi-Track-Message-Passing.

The original MTGCN code obtains semantic relations through task specific training. Since the TopoBench backbone cannot depend on the task and or labels, this implementation learns track affiliations from the node features. In particular, the implemenation supports:

  • configurable propagation depth
  • multiple semantic tracks and assignment heads
  • feature-based, graph-based, or hybrid track affiliations
  • optional affiliation sharpening
  • initial-track and output residual connections
  • row or symmetric graph normalization
  • optional graph symmetrization and self-loops
  • scalar edge weights
  • sparse propagation over disjoint PyG graph batches (this is similar to our other submission Track: Track1; Team name: LangDiff; Model: AdvDIFFormer #399)

Tests

The unit tests cover:

  • TopoBench wrapper and configuration compatibility, expected output shapes etc.
  • support for scalar weights supplied through either edge_weight or one-dimensional edge_attr
  • equivalent propagation for undirected graphs represented as one-way or bidirectional edge lists
  • no cross-graph message passing when processing disjoint PyG batches
  • head-specific track probabilities that sum to one for every node
  • affiliation inputs from raw features, graph-derived features, or their combination
  • use of each head’s own weights before combining attention heads
  • unchanged affiliations in direct mode, sharp mode tracks preferences that still sum to 1
  • correct addition of the optional projected input residual

The testing was run locally using:
uv run --no-sync ruff check topobench/nn/backbones/graph/mtgcn.py test/nn/backbones/graph/test_mtgcn.py test/pipeline/test_pipeline.py

uv run --no-sync pytest test/nn/backbones/graph/test_mtgcn.py -q

uv run --no-sync pytest test/pipeline/test_pipeline.py -q

Benchmarking

We ran the benchmarking from the challenge notebook, without tuning the hyperparameters, we have
grafik

@gbg141 gbg141 added the track-1-gnn 2026 Topological Deep Learning Challenge -- Track 1 GNNs label Jul 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

track-1-gnn 2026 Topological Deep Learning Challenge -- Track 1 GNNs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants