{"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/robust-angular-synchronization-via-directed","title":"Robust Angular Synchronization via Directed Graph Neural Networks","arxiv_id":"2310.05842","date":"2023-10-09","proceeding":null,"authors":["Yixuan He","Gesine Reinert","David Wipf","Mihai Cucuringu"],"abstract":"The angular synchronization problem aims to accurately estimate (up to a constant additive phase) a set of unknown angles $\\theta_1, \\dots, \\theta_n\\in[0, 2\\pi)$ from $m$ noisy measurements of their offsets $\\theta_i-\\theta_j \\;\\mbox{mod} \\; 2\\pi.$ Applications include, for example, sensor network localization, phase retrieval, and distributed clock synchronization. An extension of the problem to the heterogeneous setting (dubbed $k$-synchronization) is to estimate $k$ groups of angles simultaneously, given noisy observations (with unknown group assignment) from each group. Existing methods for angular synchronization usually perform poorly in high-noise regimes, which are common in applications. In this paper, we leverage neural networks for the angular synchronization problem, and its heterogeneous extension, by proposing GNNSync, a theoretically-grounded end-to-end trainable framework using directed graph neural networks. In addition, new loss functions are devised to encode synchronization objectives. Experimental results on extensive data sets demonstrate that GNNSync attains competitive, and often superior, performance against a comprehensive set of baselines for the angular synchronization problem and its extension, validating the robustness of GNNSync even at high noise levels.","url_abs":"https://arxiv.org/abs/2310.05842v2","url_pdf":"https://arxiv.org/pdf/2310.05842v2.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":"robust-angular-synchronization-via-directed","repo_url":"https://github.com/sherylhyx/gnn_sync","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"retrieval","task_name":"Retrieval"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2310.05842","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2310.05842"}},"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/sherylhyx/gnn_sync","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":9,"unverified":1},"by_repo_kind":{"official":{"samples":10,"ran":9,"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":"153d9086c8e2e583","entry":"Outliers_Model","repo":"sherylhyx/gnn_sync","repo_kind":"official","path":"src/utils.py","file_url":"https://github.com/sherylhyx/gnn_sync/blob/HEAD/src/utils.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":"153d9086c8e2e583"}},{"code_sha256_prefix":"f16e9d43c200590a","entry":"calculate_upsets","repo":"sherylhyx/gnn_sync","repo_kind":"official","path":"src/metrics.py","file_url":"https://github.com/sherylhyx/gnn_sync/blob/HEAD/src/metrics.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":"f16e9d43c200590a"}},{"code_sha256_prefix":"35b41325b2370310","entry":"calculate_upsets_and_confidence","repo":"sherylhyx/gnn_sync","repo_kind":"official","path":"src/metrics.py","file_url":"https://github.com/sherylhyx/gnn_sync/blob/HEAD/src/metrics.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":"35b41325b2370310"}},{"code_sha256_prefix":"947b6f5413f65c2b","entry":"compErrorViaMatrices","repo":"sherylhyx/gnn_sync","repo_kind":"official","path":"src/metrics.py","file_url":"https://github.com/sherylhyx/gnn_sync/blob/HEAD/src/metrics.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":"947b6f5413f65c2b"}},{"code_sha256_prefix":"004382a85cba550f","entry":"get_rotation_matrix","repo":"sherylhyx/gnn_sync","repo_kind":"official","path":"src/snl_train.py","file_url":"https://github.com/sherylhyx/gnn_sync/blob/HEAD/src/snl_train.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":"004382a85cba550f"}},{"code_sha256_prefix":"deddc4458686cd82","entry":"load_data_from_memory","repo":"sherylhyx/gnn_sync","repo_kind":"official","path":"src/preprocess.py","file_url":"https://github.com/sherylhyx/gnn_sync/blob/HEAD/src/preprocess.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":"deddc4458686cd82"}},{"code_sha256_prefix":"3a4d82215d427f7a","entry":"spectral_baseline","repo":"sherylhyx/gnn_sync","repo_kind":"official","path":"src/angular_baseline.py","file_url":"https://github.com/sherylhyx/gnn_sync/blob/HEAD/src/angular_baseline.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":"3a4d82215d427f7a"}},{"code_sha256_prefix":"e7211a3ed4246d60","entry":"tangent_trim_avg","repo":"sherylhyx/gnn_sync","repo_kind":"official","path":"src/angular_baseline.py","file_url":"https://github.com/sherylhyx/gnn_sync/blob/HEAD/src/angular_baseline.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":"e7211a3ed4246d60"}},{"code_sha256_prefix":"54a74c1af06b1397","entry":"trimmed_averaging_synchronization","repo":"sherylhyx/gnn_sync","repo_kind":"official","path":"src/angular_baseline.py","file_url":"https://github.com/sherylhyx/gnn_sync/blob/HEAD/src/angular_baseline.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":"54a74c1af06b1397"}},{"code_sha256_prefix":"912c6286c5572bc8","entry":"get_rotation","repo":"sherylhyx/gnn_sync","repo_kind":"official","path":"src/utils.py","file_url":"https://github.com/sherylhyx/gnn_sync/blob/HEAD/src/utils.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":"912c6286c5572bc8"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}