{"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/differentiable-mapper-for-topological","title":"Differentiable Mapper For Topological Optimization Of Data Representation","arxiv_id":"2402.12854","date":"2024-02-20","proceeding":null,"authors":["Ziyad Oulhaj","Mathieu Carrière","Bertrand Michel"],"abstract":"Unsupervised data representation and visualization using tools from topology is an active and growing field of Topological Data Analysis (TDA) and data science. Its most prominent line of work is based on the so-called Mapper graph, which is a combinatorial graph whose topological structures (connected components, branches, loops) are in correspondence with those of the data itself. While highly generic and applicable, its use has been hampered so far by the manual tuning of its many parameters-among these, a crucial one is the so-called filter: it is a continuous function whose variations on the data set are the main ingredient for both building the Mapper representation and assessing the presence and sizes of its topological structures. However, while a few parameter tuning methods have already been investigated for the other Mapper parameters (i.e., resolution, gain, clustering), there is currently no method for tuning the filter itself. In this work, we build on a recently proposed optimization framework incorporating topology to provide the first filter optimization scheme for Mapper graphs. In order to achieve this, we propose a relaxed and more general version of the Mapper graph, whose convergence properties are investigated. Finally, we demonstrate the usefulness of our approach by optimizing Mapper graph representations on several datasets, and showcasing the superiority of the optimized representation over arbitrary ones.","url_abs":"https://arxiv.org/abs/2402.12854v1","url_pdf":"https://arxiv.org/pdf/2402.12854v1.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":"differentiable-mapper-for-topological","repo_url":"https://github.com/ziyadoulhaj/mapper-optimization","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"tf","reach":{"status":"ok"}}],"tasks":[{"task_slug":"topological-data-analysis","task_name":"Topological Data Analysis"}],"methods":[{"method_slug":"set","method_name":"SET"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2402.12854","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2402.12854"}},"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/ziyadoulhaj/mapper-optimization","reach":{"status":"ok"}}],"summary":{"ran":5},"by_repo_kind":{"official":{"samples":5,"ran":5,"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":5,"samples":[{"code_sha256_prefix":"5fe6287e103d1e38","entry":"cluster_patch","repo":"ziyadoulhaj/mapper-optimization","repo_kind":"official","path":"SoftMapper.py","file_url":"https://github.com/ziyadoulhaj/mapper-optimization/blob/HEAD/SoftMapper.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":"5fe6287e103d1e38"}},{"code_sha256_prefix":"d2baecb066ce5054","entry":"get_adj_from_faces","repo":"ziyadoulhaj/mapper-optimization","repo_kind":"official","path":"3d_shapes.py","file_url":"https://github.com/ziyadoulhaj/mapper-optimization/blob/HEAD/3d_shapes.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":"d2baecb066ce5054"}},{"code_sha256_prefix":"47c95317bca877a0","entry":"off2numpy","repo":"ziyadoulhaj/mapper-optimization","repo_kind":"official","path":"3d_shapes.py","file_url":"https://github.com/ziyadoulhaj/mapper-optimization/blob/HEAD/3d_shapes.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":"47c95317bca877a0"}},{"code_sha256_prefix":"7ebb6ccf4f6b1b0f","entry":"smooth_scheme","repo":"ziyadoulhaj/mapper-optimization","repo_kind":"official","path":"SoftMapper.py","file_url":"https://github.com/ziyadoulhaj/mapper-optimization/blob/HEAD/SoftMapper.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":"7ebb6ccf4f6b1b0f"}},{"code_sha256_prefix":"47617d93c1b9f028","entry":"to_hex","repo":"ziyadoulhaj/mapper-optimization","repo_kind":"official","path":"mapper.py","file_url":"https://github.com/ziyadoulhaj/mapper-optimization/blob/HEAD/mapper.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":"47617d93c1b9f028"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}