{"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/praga-prototype-aware-graph-adaptive","title":"PRAGA: Prototype-aware Graph Adaptive Aggregation for Spatial Multi-modal Omics Analysis","arxiv_id":"2409.12728","date":"2024-09-19","proceeding":null,"authors":["Xinlei Huang","Zhiqi Ma","Dian Meng","Yanran Liu","Shiwei Ruan","Qingqiang Sun","Xubin Zheng","Ziyue Qiao"],"abstract":"Spatial multi-modal omics technology, highlighted by Nature Methods as an advanced biological technique in 2023, plays a critical role in resolving biological regulatory processes with spatial context. Recently, graph neural networks based on K-nearest neighbor (KNN) graphs have gained prominence in spatial multi-modal omics methods due to their ability to model semantic relations between sequencing spots. However, the fixed KNN graph fails to capture the latent semantic relations hidden by the inevitable data perturbations during the biological sequencing process, resulting in the loss of semantic information. In addition, the common lack of spot annotation and class number priors in practice further hinders the optimization of spatial multi-modal omics models. Here, we propose a novel spatial multi-modal omics resolved framework, termed PRototype-Aware Graph Adaptative Aggregation for Spatial Multi-modal Omics Analysis (PRAGA). PRAGA constructs a dynamic graph to capture latent semantic relations and comprehensively integrate spatial information and feature semantics. The learnable graph structure can also denoise perturbations by learning cross-modal knowledge. Moreover, a dynamic prototype contrastive learning is proposed based on the dynamic adaptability of Bayesian Gaussian Mixture Models to optimize the multi-modal omics representations for unknown biological priors. Quantitative and qualitative experiments on simulated and real datasets with 7 competing methods demonstrate the superior performance of PRAGA. Code is available at https://github.com/Xubin-s-Lab/PRAGA.","url_abs":"https://arxiv.org/abs/2409.12728v5","url_pdf":"https://arxiv.org/pdf/2409.12728v5.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":"praga-prototype-aware-graph-adaptive","repo_url":"https://github.com/xubin-s-lab/praga","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"AGPL-3.0"}}],"tasks":[{"task_slug":"contrastive-learning","task_name":"Contrastive Learning"}],"methods":[{"method_slug":"contrastive-learning","method_name":"Contrastive Learning"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2409.12728","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2409.12728"}},"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/xubin-s-lab/praga","reach":{"status":"ok","spdx":"AGPL-3.0"}}],"summary":{"ran":8,"unverified":3},"by_repo_kind":{"official":{"samples":11,"ran":8,"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":11,"samples":[{"code_sha256_prefix":"26c85baaa84ab990","entry":"clr_normalize_each_cell","repo":"xubin-s-lab/praga","repo_kind":"official","path":"PRAGA/preprocess.py","file_url":"https://github.com/xubin-s-lab/praga/blob/HEAD/PRAGA/preprocess.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"AGPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"26c85baaa84ab990"}},{"code_sha256_prefix":"b00496f9ea926325","entry":"construct_neighbor_graph","repo":"xubin-s-lab/praga","repo_kind":"official","path":"PRAGA/preprocess.py","file_url":"https://github.com/xubin-s-lab/praga/blob/HEAD/PRAGA/preprocess.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"AGPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"b00496f9ea926325"}},{"code_sha256_prefix":"02117d09b11d48b5","entry":"get_rs","repo":"xubin-s-lab/praga","repo_kind":"official","path":"metric.py","file_url":"https://github.com/xubin-s-lab/praga/blob/HEAD/metric.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"AGPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"02117d09b11d48b5"}},{"code_sha256_prefix":"dff3b6e32dbd1fd5","entry":"get_sub_assign_with_one_cluster","repo":"xubin-s-lab/praga","repo_kind":"official","path":"clustering_utils.py","file_url":"https://github.com/xubin-s-lab/praga/blob/HEAD/clustering_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"AGPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"dff3b6e32dbd1fd5"}},{"code_sha256_prefix":"9557c1988e29c353","entry":"mean_average_precision","repo":"xubin-s-lab/praga","repo_kind":"official","path":"metric.py","file_url":"https://github.com/xubin-s-lab/praga/blob/HEAD/metric.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"AGPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"9557c1988e29c353"}},{"code_sha256_prefix":"c28231e92b528a79","entry":"pairwise_distance","repo":"xubin-s-lab/praga","repo_kind":"official","path":"clustering_utils.py","file_url":"https://github.com/xubin-s-lab/praga/blob/HEAD/clustering_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"AGPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"c28231e92b528a79"}},{"code_sha256_prefix":"434c64e6c74854b9","entry":"pca","repo":"xubin-s-lab/praga","repo_kind":"official","path":"PRAGA/preprocess.py","file_url":"https://github.com/xubin-s-lab/praga/blob/HEAD/PRAGA/preprocess.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"AGPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"434c64e6c74854b9"}},{"code_sha256_prefix":"5b67b0cdfe63acf3","entry":"read_list_from_file","repo":"xubin-s-lab/praga","repo_kind":"official","path":"cal_matrics.py","file_url":"https://github.com/xubin-s-lab/praga/blob/HEAD/cal_matrics.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"AGPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"5b67b0cdfe63acf3"}},{"code_sha256_prefix":"b6de204a76f878fe","entry":"cluster_acc","repo":"xubin-s-lab/praga","repo_kind":"official","path":"clustering_utils.py","file_url":"https://github.com/xubin-s-lab/praga/blob/HEAD/clustering_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"AGPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"b6de204a76f878fe"}},{"code_sha256_prefix":"9dd543809c490470","entry":"construct_neighbor_graph","repo":"xubin-s-lab/praga","repo_kind":"official","path":"PRAGA/preprocess_3M.py","file_url":"https://github.com/xubin-s-lab/praga/blob/HEAD/PRAGA/preprocess_3M.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"AGPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"9dd543809c490470"}},{"code_sha256_prefix":"b1af9bb9030ff289","entry":"mclust_R","repo":"xubin-s-lab/praga","repo_kind":"official","path":"PRAGA/utils.py","file_url":"https://github.com/xubin-s-lab/praga/blob/HEAD/PRAGA/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"AGPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"b1af9bb9030ff289"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}