{"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/spatiotemporal-modeling-of-multivariate","title":"Modeling Multivariate Biosignals With Graph Neural Networks and Structured State Space Models","arxiv_id":"2211.11176","date":"2022-11-21","proceeding":null,"authors":["Siyi Tang","Jared A. Dunnmon","Liangqiong Qu","Khaled K. Saab","Tina Baykaner","Christopher Lee-Messer","Daniel L. Rubin"],"abstract":"Multivariate biosignals are prevalent in many medical domains, such as electroencephalography, polysomnography, and electrocardiography. Modeling spatiotemporal dependencies in multivariate biosignals is challenging due to (1) long-range temporal dependencies and (2) complex spatial correlations between the electrodes. To address these challenges, we propose representing multivariate biosignals as time-dependent graphs and introduce GraphS4mer, a general graph neural network (GNN) architecture that improves performance on biosignal classification tasks by modeling spatiotemporal dependencies in biosignals. Specifically, (1) we leverage the Structured State Space architecture, a state-of-the-art deep sequence model, to capture long-range temporal dependencies in biosignals and (2) we propose a graph structure learning layer in GraphS4mer to learn dynamically evolving graph structures in the data. We evaluate our proposed model on three distinct biosignal classification tasks and show that GraphS4mer consistently improves over existing models, including (1) seizure detection from electroencephalographic signals, outperforming a previous GNN with self-supervised pre-training by 3.1 points in AUROC; (2) sleep staging from polysomnographic signals, a 4.1 points improvement in macro-F1 score compared to existing sleep staging models; and (3) 12-lead electrocardiogram classification, outperforming previous state-of-the-art models by 2.7 points in macro-F1 score.","url_abs":"https://arxiv.org/abs/2211.11176v3","url_pdf":"https://arxiv.org/pdf/2211.11176v3.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":"spatiotemporal-modeling-of-multivariate","repo_url":"https://github.com/tsy935/graphs4mer","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"classification-1","task_name":"Classification"},{"task_slug":"graph-neural-network","task_name":"Graph Neural Network"},{"task_slug":"graph-structure-learning","task_name":"Graph structure learning"},{"task_slug":"seizure-detection","task_name":"Seizure Detection"},{"task_slug":"sleep-staging","task_name":"Sleep Staging"},{"task_slug":"state-space-models","task_name":"State Space Models"}],"methods":[{"method_slug":"graph-neural-network","method_name":"Graph Neural Network"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2211.11176","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2211.11176"}},"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/tsy935/graphs4mer","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_draft_wrong":3,"unverified":9},"by_repo_kind":{"official":{"samples":12,"ran":3,"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":"89b10a8b26bbb7ed","entry":"Activation","repo":"tsy935/graphs4mer","repo_kind":"official","path":"model/s4.py","file_url":"https://github.com/tsy935/graphs4mer/blob/HEAD/model/s4.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"89b10a8b26bbb7ed"}},{"code_sha256_prefix":"400c752a0d8d06f7","entry":"LinearActivation","repo":"tsy935/graphs4mer","repo_kind":"official","path":"model/s4.py","file_url":"https://github.com/tsy935/graphs4mer/blob/HEAD/model/s4.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"400c752a0d8d06f7"}},{"code_sha256_prefix":"61139ec62260b411","entry":"get_logger","repo":"tsy935/graphs4mer","repo_kind":"official","path":"model/s4.py","file_url":"https://github.com/tsy935/graphs4mer/blob/HEAD/model/s4.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"61139ec62260b411"}},{"code_sha256_prefix":"1e0febe289a36b3a","entry":"Constant","repo":"tsy935/graphs4mer","repo_kind":"official","path":"utils/schedulers.py","file_url":"https://github.com/tsy935/graphs4mer/blob/HEAD/utils/schedulers.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":"1e0febe289a36b3a"}},{"code_sha256_prefix":"1c54b8619226bf7e","entry":"InvSqrt","repo":"tsy935/graphs4mer","repo_kind":"official","path":"utils/schedulers.py","file_url":"https://github.com/tsy935/graphs4mer/blob/HEAD/utils/schedulers.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":"1c54b8619226bf7e"}},{"code_sha256_prefix":"751d8cfeff34eb71","entry":"calculate_cosine_decay_weight","repo":"tsy935/graphs4mer","repo_kind":"official","path":"model/graphs4mer.py","file_url":"https://github.com/tsy935/graphs4mer/blob/HEAD/model/graphs4mer.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":"751d8cfeff34eb71"}},{"code_sha256_prefix":"aab13fce6f38406c","entry":"calculate_normalized_laplacian","repo":"tsy935/graphs4mer","repo_kind":"official","path":"model/graphs4mer.py","file_url":"https://github.com/tsy935/graphs4mer/blob/HEAD/model/graphs4mer.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":"aab13fce6f38406c"}},{"code_sha256_prefix":"466fd9ef12df241b","entry":"eval_dict","repo":"tsy935/graphs4mer","repo_kind":"official","path":"utils/utils.py","file_url":"https://github.com/tsy935/graphs4mer/blob/HEAD/utils/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":"466fd9ef12df241b"}},{"code_sha256_prefix":"52d6eda252b11940","entry":"feature_smoothing","repo":"tsy935/graphs4mer","repo_kind":"official","path":"model/graphs4mer.py","file_url":"https://github.com/tsy935/graphs4mer/blob/HEAD/model/graphs4mer.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":"52d6eda252b11940"}},{"code_sha256_prefix":"c1aba344be9c7d80","entry":"get_save_dir","repo":"tsy935/graphs4mer","repo_kind":"official","path":"utils/utils.py","file_url":"https://github.com/tsy935/graphs4mer/blob/HEAD/utils/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":"c1aba344be9c7d80"}},{"code_sha256_prefix":"53f3b296ffe2e5e2","entry":"masked_rmse_np","repo":"tsy935/graphs4mer","repo_kind":"official","path":"utils/utils.py","file_url":"https://github.com/tsy935/graphs4mer/blob/HEAD/utils/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":"53f3b296ffe2e5e2"}},{"code_sha256_prefix":"facb9be7b42eb54b","entry":"str2bool","repo":"tsy935/graphs4mer","repo_kind":"official","path":"args.py","file_url":"https://github.com/tsy935/graphs4mer/blob/HEAD/args.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":"facb9be7b42eb54b"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}