{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/spatio-spectral-graph-neural-networks","title":"Spatio-Spectral Graph Neural Networks","arxiv_id":"2405.19121","date":"2024-05-29","proceeding":null,"authors":["Simon Geisler","Arthur Kosmala","Daniel Herbst","Stephan Günnemann"],"abstract":"Spatial Message Passing Graph Neural Networks (MPGNNs) are widely used for learning on graph-structured data. However, key limitations of l-step MPGNNs are that their \"receptive field\" is typically limited to the l-hop neighborhood of a node and that information exchange between distant nodes is limited by over-squashing. Motivated by these limitations, we propose Spatio-Spectral Graph Neural Networks (S$^2$GNNs) -- a new modeling paradigm for Graph Neural Networks (GNNs) that synergistically combines spatially and spectrally parametrized graph filters. Parameterizing filters partially in the frequency domain enables global yet efficient information propagation. We show that S$^2$GNNs vanquish over-squashing and yield strictly tighter approximation-theoretic error bounds than MPGNNs. Further, rethinking graph convolutions at a fundamental level unlocks new design spaces. For example, S$^2$GNNs allow for free positional encodings that make them strictly more expressive than the 1-Weisfeiler-Lehman (WL) test. Moreover, to obtain general-purpose S$^2$GNNs, we propose spectrally parametrized filters for directed graphs. S$^2$GNNs outperform spatial MPGNNs, graph transformers, and graph rewirings, e.g., on the peptide long-range benchmark tasks, and are competitive with state-of-the-art sequence modeling. On a 40 GB GPU, S$^2$GNNs scale to millions of nodes.","url_abs":"https://arxiv.org/abs/2405.19121v2","url_pdf":"https://arxiv.org/pdf/2405.19121v2.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"spatio-spectral-graph-neural-networks","repo_url":"https://github.com/sigeisler/s2gnn","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":null,"task_name":"GPU"},{"task_slug":"graph-classification","task_name":"Graph Classification"},{"task_slug":"graph-neural-network","task_name":"Graph Neural Network"},{"task_slug":"graph-regression","task_name":"Graph Regression"},{"task_slug":"long-range-modeling","task_name":"Long-range modeling"},{"task_slug":"node-classification","task_name":"Node Classification"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/graph-classification-on-peptides-func","task":"Graph Classification","dataset":"Peptides-func","model":"S²GCN","rank_in_archive_order":5,"of":44,"metrics":{"AP":"0.7311±0.0066"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2405.19121","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2405.19121"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/sigeisler/s2gnn","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_honours":1,"ran":6,"unverified":2},"by_repo_kind":{"official":{"samples":9,"ran":7,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"d7653b0093307e2d","entry":"cheby","repo":"sigeisler/s2gnn","repo_kind":"official","path":"graphgps/layer/chebnet_conv_layer.py","file_url":"https://github.com/sigeisler/s2gnn/blob/HEAD/graphgps/layer/chebnet_conv_layer.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d7653b0093307e2d"}},{"code_sha256_prefix":"9bc9644080fc8b8c","entry":"get_ckpt_epoch","repo":"sigeisler/s2gnn","repo_kind":"official","path":"graphgps/checkpoint.py","file_url":"https://github.com/sigeisler/s2gnn/blob/HEAD/graphgps/checkpoint.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9bc9644080fc8b8c"}},{"code_sha256_prefix":"795006cd02f46c57","entry":"get_ckpt_path","repo":"sigeisler/s2gnn","repo_kind":"official","path":"graphgps/checkpoint.py","file_url":"https://github.com/sigeisler/s2gnn/blob/HEAD/graphgps/checkpoint.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"795006cd02f46c57"}},{"code_sha256_prefix":"1bb331bf70a78136","entry":"get_final_pretrained_ckpt","repo":"sigeisler/s2gnn","repo_kind":"official","path":"graphgps/finetuning.py","file_url":"https://github.com/sigeisler/s2gnn/blob/HEAD/graphgps/finetuning.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1bb331bf70a78136"}},{"code_sha256_prefix":"85a688d6f0fbec00","entry":"load_ckpt","repo":"sigeisler/s2gnn","repo_kind":"official","path":"graphgps/checkpoint.py","file_url":"https://github.com/sigeisler/s2gnn/blob/HEAD/graphgps/checkpoint.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"85a688d6f0fbec00"}},{"code_sha256_prefix":"883f697aaaa033b8","entry":"load_pretrained_model_cfg","repo":"sigeisler/s2gnn","repo_kind":"official","path":"graphgps/finetuning.py","file_url":"https://github.com/sigeisler/s2gnn/blob/HEAD/graphgps/finetuning.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"883f697aaaa033b8"}},{"code_sha256_prefix":"398db63189d345b3","entry":"new_optimizer_config","repo":"sigeisler/s2gnn","repo_kind":"official","path":"main_tpugraphs.py","file_url":"https://github.com/sigeisler/s2gnn/blob/HEAD/main_tpugraphs.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"398db63189d345b3"}},{"code_sha256_prefix":"ae56bcfaae96da3c","entry":"apply_chunking_to_forward","repo":"sigeisler/s2gnn","repo_kind":"official","path":"graphgps/layer/bigbird_layer.py","file_url":"https://github.com/sigeisler/s2gnn/blob/HEAD/graphgps/layer/bigbird_layer.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ae56bcfaae96da3c"}},{"code_sha256_prefix":"897f9d9194e1b336","entry":"init_model_from_pretrained","repo":"sigeisler/s2gnn","repo_kind":"official","path":"graphgps/finetuning.py","file_url":"https://github.com/sigeisler/s2gnn/blob/HEAD/graphgps/finetuning.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"897f9d9194e1b336"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}