{"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/equivariant-and-stable-positional-encoding-1","title":"Equivariant and Stable Positional Encoding for More Powerful Graph Neural Networks","arxiv_id":"2203.00199","date":"2022-03-01","proceeding":"ICLR 2022 4","authors":["Haorui Wang","Haoteng Yin","Muhan Zhang","Pan Li"],"abstract":"Graph neural networks (GNN) have shown great advantages in many graph-based learning tasks but often fail to predict accurately for a task-based on sets of nodes such as link/motif prediction and so on. Many works have recently proposed to address this problem by using random node features or node distance features. However, they suffer from either slow convergence, inaccurate prediction, or high complexity. In this work, we revisit GNNs that allow using positional features of nodes given by positional encoding (PE) techniques such as Laplacian Eigenmap, Deepwalk, etc. GNNs with PE often get criticized because they are not generalizable to unseen graphs (inductive) or stable. Here, we study these issues in a principled way and propose a provable solution, a class of GNN layers termed PEG with rigorous mathematical analysis. PEG uses separate channels to update the original node features and positional features. PEG imposes permutation equivariance w.r.t. the original node features and imposes $O(p)$ (orthogonal group) equivariance w.r.t. the positional features simultaneously, where $p$ is the dimension of used positional features. Extensive link prediction experiments over 8 real-world networks demonstrate the advantages of PEG in generalization and scalability.","url_abs":"https://arxiv.org/abs/2203.00199v5","url_pdf":"https://arxiv.org/pdf/2203.00199v5.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":"equivariant-and-stable-positional-encoding-1","repo_url":"https://github.com/graph-com/peg","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"link-prediction","task_name":"Link Prediction"},{"task_slug":"prediction","task_name":"Prediction"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2203.00199","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2203.00199"}},"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/graph-com/peg","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":1,"ran_honours":2,"ran_fixture":2,"ran_violates":1,"unverified":11},"by_repo_kind":{"official":{"samples":17,"ran":6,"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":"5a75781caceb9236","entry":"alias_sample","repo":"graph-com/peg","repo_kind":"official","path":"Graph_embedding/alias.py","file_url":"https://github.com/graph-com/peg/blob/HEAD/Graph_embedding/alias.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":"5a75781caceb9236"}},{"code_sha256_prefix":"a6eedf26f48f5c81","entry":"cost","repo":"graph-com/peg","repo_kind":"official","path":"Graph_embedding/models/struc2vec.py","file_url":"https://github.com/graph-com/peg/blob/HEAD/Graph_embedding/models/struc2vec.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a6eedf26f48f5c81"}},{"code_sha256_prefix":"5eb1d5a79598bd42","entry":"cost_max","repo":"graph-com/peg","repo_kind":"official","path":"Graph_embedding/models/struc2vec.py","file_url":"https://github.com/graph-com/peg/blob/HEAD/Graph_embedding/models/struc2vec.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5eb1d5a79598bd42"}},{"code_sha256_prefix":"a1ff0654e5599f61","entry":"cost_min","repo":"graph-com/peg","repo_kind":"official","path":"Graph_embedding/models/struc2vec.py","file_url":"https://github.com/graph-com/peg/blob/HEAD/Graph_embedding/models/struc2vec.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a1ff0654e5599f61"}},{"code_sha256_prefix":"c1d6392f89c5e495","entry":"parse_index_file","repo":"graph-com/peg","repo_kind":"official","path":"utils.py","file_url":"https://github.com/graph-com/peg/blob/HEAD/utils.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":"c1d6392f89c5e495"}},{"code_sha256_prefix":"b32fd748b4bbe3bf","entry":"sample_mask","repo":"graph-com/peg","repo_kind":"official","path":"utils.py","file_url":"https://github.com/graph-com/peg/blob/HEAD/utils.py","link_basis":"harvester_set","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b32fd748b4bbe3bf"}},{"code_sha256_prefix":"224a71670140505b","entry":"create_alias_table","repo":"graph-com/peg","repo_kind":"official","path":"Graph_embedding/alias.py","file_url":"https://github.com/graph-com/peg/blob/HEAD/Graph_embedding/alias.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":"224a71670140505b"}},{"code_sha256_prefix":"5a9ac6dd51d8b1f9","entry":"create_model","repo":"graph-com/peg","repo_kind":"official","path":"Graph_embedding/models/line.py","file_url":"https://github.com/graph-com/peg/blob/HEAD/Graph_embedding/models/line.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":"5a9ac6dd51d8b1f9"}},{"code_sha256_prefix":"af7d837b0dda7c1b","entry":"create_model","repo":"graph-com/peg","repo_kind":"official","path":"Graph_embedding/models/sdne.py","file_url":"https://github.com/graph-com/peg/blob/HEAD/Graph_embedding/models/sdne.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":"af7d837b0dda7c1b"}},{"code_sha256_prefix":"815d0f1c14d3864b","entry":"l_1st","repo":"graph-com/peg","repo_kind":"official","path":"Graph_embedding/models/sdne.py","file_url":"https://github.com/graph-com/peg/blob/HEAD/Graph_embedding/models/sdne.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":"815d0f1c14d3864b"}},{"code_sha256_prefix":"3f71c0839d0bd13f","entry":"l_2nd","repo":"graph-com/peg","repo_kind":"official","path":"Graph_embedding/models/sdne.py","file_url":"https://github.com/graph-com/peg/blob/HEAD/Graph_embedding/models/sdne.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":"3f71c0839d0bd13f"}},{"code_sha256_prefix":"7727998a95f239e7","entry":"line_loss","repo":"graph-com/peg","repo_kind":"official","path":"Graph_embedding/models/line.py","file_url":"https://github.com/graph-com/peg/blob/HEAD/Graph_embedding/models/line.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":"7727998a95f239e7"}},{"code_sha256_prefix":"c398ee2319ebe0b4","entry":"load_data_citation","repo":"graph-com/peg","repo_kind":"official","path":"utils.py","file_url":"https://github.com/graph-com/peg/blob/HEAD/utils.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":"c398ee2319ebe0b4"}},{"code_sha256_prefix":"692e690385a18390","entry":"partition_dict","repo":"graph-com/peg","repo_kind":"official","path":"Graph_embedding/utils.py","file_url":"https://github.com/graph-com/peg/blob/HEAD/Graph_embedding/utils.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":"692e690385a18390"}},{"code_sha256_prefix":"c69743db3e867e4f","entry":"partition_list","repo":"graph-com/peg","repo_kind":"official","path":"Graph_embedding/utils.py","file_url":"https://github.com/graph-com/peg/blob/HEAD/Graph_embedding/utils.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":"c69743db3e867e4f"}},{"code_sha256_prefix":"f4a5415424bc8143","entry":"preprocess_nxgraph","repo":"graph-com/peg","repo_kind":"official","path":"Graph_embedding/utils.py","file_url":"https://github.com/graph-com/peg/blob/HEAD/Graph_embedding/utils.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":"f4a5415424bc8143"}},{"code_sha256_prefix":"513a08782a76482f","entry":"read_node_label","repo":"graph-com/peg","repo_kind":"official","path":"Graph_embedding/classify.py","file_url":"https://github.com/graph-com/peg/blob/HEAD/Graph_embedding/classify.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":"513a08782a76482f"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}