{"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/integrating-gnn-and-neural-odes-for","title":"Integrating GNN and Neural ODEs for Estimating Non-Reciprocal Two-Body Interactions in Mixed-Species Collective Motion","arxiv_id":"2405.16503","date":"2024-05-26","proceeding":null,"authors":["Masahito Uwamichi","Simon K. Schnyder","Tetsuya J. Kobayashi","Satoshi Sawai"],"abstract":"Analyzing the motion of multiple biological agents, be it cells or individual animals, is pivotal for the understanding of complex collective behaviors. With the advent of advanced microscopy, detailed images of complex tissue formations involving multiple cell types have become more accessible in recent years. However, deciphering the underlying rules that govern cell movements is far from trivial. Here, we present a novel deep learning framework for estimating the underlying equations of motion from observed trajectories, a pivotal step in decoding such complex dynamics. Our framework integrates graph neural networks with neural differential equations, enabling effective prediction of two-body interactions based on the states of the interacting entities. We demonstrate the efficacy of our approach through two numerical experiments. First, we used simulated data from a toy model to tune the hyperparameters. Based on the obtained hyperparameters, we then applied this approach to a more complex model with non-reciprocal forces that mimic the collective dynamics of the cells of slime molds. Our results show that the proposed method can accurately estimate the functional forms of two-body interactions -- even when they are nonreciprocal -- thereby precisely replicating both individual and collective behaviors within these systems.","url_abs":"https://arxiv.org/abs/2405.16503v2","url_pdf":"https://arxiv.org/pdf/2405.16503v2.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":"integrating-gnn-and-neural-odes-for","repo_url":"https://github.com/MasahitoUWAMICHI/collectiveMotionNN","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2405.16503","atlas_url":"https://app.syntology.ai/?focus=2405.16503","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2405.16503"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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":"deterministic:regex_extraction","url":"https://github.com/google-research/torchsde","reach":null},{"provenance":"deterministic:regex_extraction","url":"https://github.com/DiffEqML/torchdyn","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/MasahitoUWAMICHI/collectiveMotionNN","reach":{"status":"ok"}}],"summary":{"ran":11,"unverified":7},"by_repo_kind":{"official":{"samples":9,"ran":8,"repositories":1},"found_in_text":{"samples":9,"ran":3,"repositories":2}},"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":9,"samples":[{"code_sha256_prefix":"592f0d4b520196d3","entry":"IDrange2MatrixID","repo":"MasahitoUWAMICHI/collectiveMotionNN","repo_kind":"official","path":"collectiveMotionNN/graph_utils.py","file_url":"https://github.com/MasahitoUWAMICHI/collectiveMotionNN/blob/HEAD/collectiveMotionNN/graph_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"592f0d4b520196d3"}},{"code_sha256_prefix":"77c4bf8419bbed28","entry":"bool2edge","repo":"MasahitoUWAMICHI/collectiveMotionNN","repo_kind":"official","path":"collectiveMotionNN/sample_modules.py","file_url":"https://github.com/MasahitoUWAMICHI/collectiveMotionNN/blob/HEAD/collectiveMotionNN/sample_modules.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"77c4bf8419bbed28"}},{"code_sha256_prefix":"84e196e6ba0d75fe","entry":"flattenInList","repo":"MasahitoUWAMICHI/collectiveMotionNN","repo_kind":"official","path":"collectiveMotionNN/utils.py","file_url":"https://github.com/MasahitoUWAMICHI/collectiveMotionNN/blob/HEAD/collectiveMotionNN/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"84e196e6ba0d75fe"}},{"code_sha256_prefix":"335476af786fa9f6","entry":"hutch_trace","repo":"DiffEqML/torchdyn","repo_kind":"found_in_text","path":"torchdyn/models/cnf.py","file_url":"https://github.com/DiffEqML/torchdyn/blob/HEAD/torchdyn/models/cnf.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"335476af786fa9f6"}},{"code_sha256_prefix":"e3796079b3734f39","entry":"isSelfloop","repo":"MasahitoUWAMICHI/collectiveMotionNN","repo_kind":"official","path":"collectiveMotionNN/graph_utils.py","file_url":"https://github.com/MasahitoUWAMICHI/collectiveMotionNN/blob/HEAD/collectiveMotionNN/graph_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e3796079b3734f39"}},{"code_sha256_prefix":"c0a2918bd6d35bc1","entry":"nodeIDrange_eachBatch","repo":"MasahitoUWAMICHI/collectiveMotionNN","repo_kind":"official","path":"collectiveMotionNN/graph_utils.py","file_url":"https://github.com/MasahitoUWAMICHI/collectiveMotionNN/blob/HEAD/collectiveMotionNN/graph_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"c0a2918bd6d35bc1"}},{"code_sha256_prefix":"df18bfb8f4399ffe","entry":"plot_traj_vf_1D","repo":"DiffEqML/torchdyn","repo_kind":"found_in_text","path":"torchdyn/utils.py","file_url":"https://github.com/DiffEqML/torchdyn/blob/HEAD/torchdyn/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"df18bfb8f4399ffe"}},{"code_sha256_prefix":"47dab2214a92b8be","entry":"radiusGraphEdge_noSelfLoop","repo":"MasahitoUWAMICHI/collectiveMotionNN","repo_kind":"official","path":"collectiveMotionNN/sample_modules.py","file_url":"https://github.com/MasahitoUWAMICHI/collectiveMotionNN/blob/HEAD/collectiveMotionNN/sample_modules.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"47dab2214a92b8be"}},{"code_sha256_prefix":"4f5bf1388156573c","entry":"radiusGraphEdge_selfLoop","repo":"MasahitoUWAMICHI/collectiveMotionNN","repo_kind":"official","path":"collectiveMotionNN/sample_modules.py","file_url":"https://github.com/MasahitoUWAMICHI/collectiveMotionNN/blob/HEAD/collectiveMotionNN/sample_modules.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"4f5bf1388156573c"}},{"code_sha256_prefix":"d51164aedef11ce0","entry":"randnsphere","repo":"DiffEqML/torchdyn","repo_kind":"found_in_text","path":"torchdyn/datasets/static_datasets.py","file_url":"https://github.com/DiffEqML/torchdyn/blob/HEAD/torchdyn/datasets/static_datasets.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"d51164aedef11ce0"}},{"code_sha256_prefix":"f76e0d732f243249","entry":"variableInitializer","repo":"MasahitoUWAMICHI/collectiveMotionNN","repo_kind":"official","path":"collectiveMotionNN/utils.py","file_url":"https://github.com/MasahitoUWAMICHI/collectiveMotionNN/blob/HEAD/collectiveMotionNN/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f76e0d732f243249"}},{"code_sha256_prefix":"499c4942670a6209","entry":"BaseSDE","repo":"google-research/torchsde","repo_kind":"found_in_text","path":"torchsde/_core/base_sde.py","file_url":"https://github.com/google-research/torchsde/blob/HEAD/torchsde/_core/base_sde.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"499c4942670a6209"}},{"code_sha256_prefix":"0197b6cfd09df7c8","entry":"ContainerMeta","repo":"google-research/torchsde","repo_kind":"found_in_text","path":"torchsde/_core/base_sde.py","file_url":"https://github.com/google-research/torchsde/blob/HEAD/torchsde/_core/base_sde.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"0197b6cfd09df7c8"}},{"code_sha256_prefix":"8bc02df1bd8da1e3","entry":"ForwardSDE","repo":"google-research/torchsde","repo_kind":"found_in_text","path":"torchsde/_core/base_sde.py","file_url":"https://github.com/google-research/torchsde/blob/HEAD/torchsde/_core/base_sde.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"8bc02df1bd8da1e3"}},{"code_sha256_prefix":"e5f1a904593cf45a","entry":"NOISE_TYPES","repo":"google-research/torchsde","repo_kind":"found_in_text","path":"torchsde/_core/base_sde.py","file_url":"https://github.com/google-research/torchsde/blob/HEAD/torchsde/_core/base_sde.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"e5f1a904593cf45a"}},{"code_sha256_prefix":"75affb02a032726e","entry":"SDE_TYPES","repo":"google-research/torchsde","repo_kind":"found_in_text","path":"torchsde/_core/base_sde.py","file_url":"https://github.com/google-research/torchsde/blob/HEAD/torchsde/_core/base_sde.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"75affb02a032726e"}},{"code_sha256_prefix":"02867f0536ec719a","entry":"autograd_trace","repo":"DiffEqML/torchdyn","repo_kind":"found_in_text","path":"torchdyn/models/cnf.py","file_url":"https://github.com/DiffEqML/torchdyn/blob/HEAD/torchdyn/models/cnf.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"02867f0536ec719a"}},{"code_sha256_prefix":"4524c435ad380fcf","entry":"extractBrownian","repo":"MasahitoUWAMICHI/collectiveMotionNN","repo_kind":"official","path":"collectiveMotionNN/utils.py","file_url":"https://github.com/MasahitoUWAMICHI/collectiveMotionNN/blob/HEAD/collectiveMotionNN/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"4524c435ad380fcf"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}