{"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/differentiability-and-optimization-of","title":"Differentiability and Optimization of Multiparameter Persistent Homology","arxiv_id":"2406.07224","date":"2024-06-11","proceeding":null,"authors":["Luis Scoccola","Siddharth Setlur","David Loiseaux","Mathieu Carrière","Steve Oudot"],"abstract":"Real-valued functions on geometric data -- such as node attributes on a graph -- can be optimized using descriptors from persistent homology, allowing the user to incorporate topological terms in the loss function. When optimizing a single real-valued function (the one-parameter setting), there is a canonical choice of descriptor for persistent homology: the barcode. The operation mapping a real-valued function to its barcode is differentiable almost everywhere, and the convergence of gradient descent for losses using barcodes is relatively well understood. When optimizing a vector-valued function (the multiparameter setting), there is no unique choice of descriptor for multiparameter persistent homology, and many distinct descriptors have been proposed. This calls for the development of a general framework for differentiability and optimization that applies to a wide range of multiparameter homological descriptors. In this article, we develop such a framework and show that it encompasses well-known descriptors of different flavors, such as signed barcodes and the multiparameter persistence landscape. We complement the theory with numerical experiments supporting the idea that optimizing multiparameter homological descriptors can lead to improved performances compared to optimizing one-parameter descriptors, even when using the simplest and most efficiently computable multiparameter descriptors.","url_abs":"https://arxiv.org/abs/2406.07224v2","url_pdf":"https://arxiv.org/pdf/2406.07224v2.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":"links_only","authors_date_abstract":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license), from the Kaggle arXiv metadata snapshot of 2026-09-12"},"code_links":[{"paper_slug":"differentiability-and-optimization-of","repo_url":"https://github.com/davidlapous/multipers","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"GPL-3.0"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2406.07224","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2406.07224"}},"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/davidlapous/multipers","reach":{"status":"ok","spdx":"GPL-3.0"}}],"summary":{"ran":3,"unverified":3},"by_repo_kind":{"official":{"samples":6,"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":6,"samples":[{"code_sha256_prefix":"b2c1364f27530595","entry":"DTM","repo":"davidlapous/multipers","repo_kind":"official","path":"multipers_old.py","file_url":"https://github.com/davidlapous/multipers/blob/HEAD/multipers_old.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"b2c1364f27530595"}},{"code_sha256_prefix":"64afa60ed5ffd823","entry":"threshold_slice","repo":"davidlapous/multipers","repo_kind":"official","path":"multipers/grids.py","file_url":"https://github.com/davidlapous/multipers/blob/HEAD/multipers/grids.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"64afa60ed5ffd823"}},{"code_sha256_prefix":"c8cb57a3fc12f264","entry":"timings","repo":"davidlapous/multipers","repo_kind":"official","path":"multipers/logs.py","file_url":"https://github.com/davidlapous/multipers/blob/HEAD/multipers/logs.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"c8cb57a3fc12f264"}},{"code_sha256_prefix":"19f3d61edd33ba95","entry":"ext_log_enabled","repo":"davidlapous/multipers","repo_kind":"official","path":"multipers/logs.py","file_url":"https://github.com/davidlapous/multipers/blob/HEAD/multipers/logs.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"19f3d61edd33ba95"}},{"code_sha256_prefix":"84dd95923f13473b","entry":"function_rips_signed_measure","repo":"davidlapous/multipers","repo_kind":"official","path":"multipers/function_rips.py","file_url":"https://github.com/davidlapous/multipers/blob/HEAD/multipers/function_rips.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"84dd95923f13473b"}},{"code_sha256_prefix":"ea237d3dfa137bd2","entry":"function_rips_surface","repo":"davidlapous/multipers","repo_kind":"official","path":"multipers/function_rips.py","file_url":"https://github.com/davidlapous/multipers/blob/HEAD/multipers/function_rips.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"ea237d3dfa137bd2"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}