{"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/normalizing-diffusion-kernels-with-optimal","title":"Normalizing Diffusion Kernels with Optimal Transport","arxiv_id":"2507.06161","date":"2025-07-08","proceeding":null,"authors":["Nathan Kessler","Robin Magnet","Jean Feydy"],"abstract":"Smoothing a signal based on local neighborhoods is a core operation in machine learning and geometry processing. On well-structured domains such as vector spaces and manifolds, the Laplace operator derived from differential geometry offers a principled approach to smoothing via heat diffusion, with strong theoretical guarantees. However, constructing such Laplacians requires a carefully defined domain structure, which is not always available. Most practitioners thus rely on simple convolution kernels and message-passing layers, which are biased against the boundaries of the domain. We bridge this gap by introducing a broad class of smoothing operators, derived from general similarity or adjacency matrices, and demonstrate that they can be normalized into diffusion-like operators that inherit desirable properties from Laplacians. Our approach relies on a symmetric variant of the Sinkhorn algorithm, which rescales positive smoothing operators to match the structural behavior of heat diffusion. This construction enables Laplacian-like smoothing and processing of irregular data such as point clouds, sparse voxel grids or mixture of Gaussians. We show that the resulting operators not only approximate heat diffusion but also retain spectral information from the Laplacian itself, with applications to shape analysis and matching.","url_abs":"https://arxiv.org/abs/2507.06161v1","url_pdf":"https://arxiv.org/pdf/2507.06161v1.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":[],"tasks":[],"methods":[{"method_slug":"convolution","method_name":"Convolution"},{"method_slug":"diffusion","method_name":"Diffusion"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2507.06161","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2507.06161"}},"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":"deterministic:regex_extraction","url":"https://github.com/RobinMagnet/SinkhornKernels","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":26},"by_repo_kind":{"found_in_text":{"samples":26,"ran":0,"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":"bb8bc52d56933dea","entry":"apply_gaussian","repo":"RobinMagnet/SinkhornKernels","repo_kind":"found_in_text","path":"sinkhornkernels/torch/diffusion.py","file_url":"https://github.com/RobinMagnet/SinkhornKernels/blob/HEAD/sinkhornkernels/torch/diffusion.py","link_basis":"first_harvest_node","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":"bb8bc52d56933dea"}},{"code_sha256_prefix":"bb52d3e06f0aa535","entry":"apply_gaussian_dense","repo":"RobinMagnet/SinkhornKernels","repo_kind":"found_in_text","path":"sinkhornkernels/torch/diffusion.py","file_url":"https://github.com/RobinMagnet/SinkhornKernels/blob/HEAD/sinkhornkernels/torch/diffusion.py","link_basis":"first_harvest_node","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":"bb52d3e06f0aa535"}},{"code_sha256_prefix":"fef0168a4fd77933","entry":"apply_gaussian_keops","repo":"RobinMagnet/SinkhornKernels","repo_kind":"found_in_text","path":"sinkhornkernels/torch/diffusion.py","file_url":"https://github.com/RobinMagnet/SinkhornKernels/blob/HEAD/sinkhornkernels/torch/diffusion.py","link_basis":"first_harvest_node","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":"fef0168a4fd77933"}},{"code_sha256_prefix":"c6e121a7cc18e83d","entry":"boundary_mask","repo":"RobinMagnet/SinkhornKernels","repo_kind":"found_in_text","path":"sinkhornkernels/grid.py","file_url":"https://github.com/RobinMagnet/SinkhornKernels/blob/HEAD/sinkhornkernels/grid.py","link_basis":"first_harvest_node","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":"c6e121a7cc18e83d"}},{"code_sha256_prefix":"86ea67e604b3833d","entry":"diffusion_eigsh","repo":"RobinMagnet/SinkhornKernels","repo_kind":"found_in_text","path":"sinkhornkernels/spectral.py","file_url":"https://github.com/RobinMagnet/SinkhornKernels/blob/HEAD/sinkhornkernels/spectral.py","link_basis":"first_harvest_node","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":"86ea67e604b3833d"}},{"code_sha256_prefix":"5006a11c61f6318f","entry":"exponential_diffusion","repo":"RobinMagnet/SinkhornKernels","repo_kind":"found_in_text","path":"sinkhornkernels/operators.py","file_url":"https://github.com/RobinMagnet/SinkhornKernels/blob/HEAD/sinkhornkernels/operators.py","link_basis":"first_harvest_node","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":"5006a11c61f6318f"}},{"code_sha256_prefix":"a4ab8b9eac9773fd","entry":"face_areas","repo":"RobinMagnet/SinkhornKernels","repo_kind":"found_in_text","path":"sinkhornkernels/mesh.py","file_url":"https://github.com/RobinMagnet/SinkhornKernels/blob/HEAD/sinkhornkernels/mesh.py","link_basis":"first_harvest_node","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":"a4ab8b9eac9773fd"}},{"code_sha256_prefix":"88bcffe545b25c00","entry":"from_basis","repo":"RobinMagnet/SinkhornKernels","repo_kind":"found_in_text","path":"sinkhornkernels/torch/nn.py","file_url":"https://github.com/RobinMagnet/SinkhornKernels/blob/HEAD/sinkhornkernels/torch/nn.py","link_basis":"first_harvest_node","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":"88bcffe545b25c00"}},{"code_sha256_prefix":"d2086bb4b74cb9e3","entry":"gaussian_diffusion","repo":"RobinMagnet/SinkhornKernels","repo_kind":"found_in_text","path":"sinkhornkernels/operators.py","file_url":"https://github.com/RobinMagnet/SinkhornKernels/blob/HEAD/sinkhornkernels/operators.py","link_basis":"first_harvest_node","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":"d2086bb4b74cb9e3"}},{"code_sha256_prefix":"ca1dbb9dd33ed73d","entry":"gaussian_kernel","repo":"RobinMagnet/SinkhornKernels","repo_kind":"found_in_text","path":"sinkhornkernels/kernels.py","file_url":"https://github.com/RobinMagnet/SinkhornKernels/blob/HEAD/sinkhornkernels/kernels.py","link_basis":"first_harvest_node","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":"ca1dbb9dd33ed73d"}},{"code_sha256_prefix":"467f00ca09629fea","entry":"gaussian_kernel_from_sqdist","repo":"RobinMagnet/SinkhornKernels","repo_kind":"found_in_text","path":"sinkhornkernels/kernels.py","file_url":"https://github.com/RobinMagnet/SinkhornKernels/blob/HEAD/sinkhornkernels/kernels.py","link_basis":"first_harvest_node","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":"467f00ca09629fea"}},{"code_sha256_prefix":"ded0837330fa6f0b","entry":"gmm_diffusion","repo":"RobinMagnet/SinkhornKernels","repo_kind":"found_in_text","path":"sinkhornkernels/operators.py","file_url":"https://github.com/RobinMagnet/SinkhornKernels/blob/HEAD/sinkhornkernels/operators.py","link_basis":"first_harvest_node","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":"ded0837330fa6f0b"}},{"code_sha256_prefix":"91f23c983a47701d","entry":"gmm_effective_sigma2","repo":"RobinMagnet/SinkhornKernels","repo_kind":"found_in_text","path":"sinkhornkernels/spectral.py","file_url":"https://github.com/RobinMagnet/SinkhornKernels/blob/HEAD/sinkhornkernels/spectral.py","link_basis":"first_harvest_node","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":"91f23c983a47701d"}},{"code_sha256_prefix":"29e4deed4b3fc73e","entry":"grid_coordinates","repo":"RobinMagnet/SinkhornKernels","repo_kind":"found_in_text","path":"sinkhornkernels/grid.py","file_url":"https://github.com/RobinMagnet/SinkhornKernels/blob/HEAD/sinkhornkernels/grid.py","link_basis":"first_harvest_node","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":"29e4deed4b3fc73e"}},{"code_sha256_prefix":"83a52b7c9f043dd7","entry":"kde_masses","repo":"RobinMagnet/SinkhornKernels","repo_kind":"found_in_text","path":"sinkhornkernels/grid.py","file_url":"https://github.com/RobinMagnet/SinkhornKernels/blob/HEAD/sinkhornkernels/grid.py","link_basis":"first_harvest_node","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":"83a52b7c9f043dd7"}},{"code_sha256_prefix":"dda4d69535593cdb","entry":"laplacian_eigenvalues","repo":"RobinMagnet/SinkhornKernels","repo_kind":"found_in_text","path":"sinkhornkernels/spectral.py","file_url":"https://github.com/RobinMagnet/SinkhornKernels/blob/HEAD/sinkhornkernels/spectral.py","link_basis":"first_harvest_node","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":"dda4d69535593cdb"}},{"code_sha256_prefix":"d01a9669173bb787","entry":"load_obj","repo":"RobinMagnet/SinkhornKernels","repo_kind":"found_in_text","path":"sinkhornkernels/mesh.py","file_url":"https://github.com/RobinMagnet/SinkhornKernels/blob/HEAD/sinkhornkernels/mesh.py","link_basis":"first_harvest_node","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":"d01a9669173bb787"}},{"code_sha256_prefix":"92fd00512f9bcbd3","entry":"sample_surface","repo":"RobinMagnet/SinkhornKernels","repo_kind":"found_in_text","path":"sinkhornkernels/mesh.py","file_url":"https://github.com/RobinMagnet/SinkhornKernels/blob/HEAD/sinkhornkernels/mesh.py","link_basis":"first_harvest_node","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":"92fd00512f9bcbd3"}},{"code_sha256_prefix":"b9ddc0ef26fea246","entry":"sinkhorn_log","repo":"RobinMagnet/SinkhornKernels","repo_kind":"found_in_text","path":"sinkhornkernels/sinkhorn.py","file_url":"https://github.com/RobinMagnet/SinkhornKernels/blob/HEAD/sinkhornkernels/sinkhorn.py","link_basis":"first_harvest_node","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":"b9ddc0ef26fea246"}},{"code_sha256_prefix":"51ff764c6a0dc428","entry":"sinkhorn_log","repo":"RobinMagnet/SinkhornKernels","repo_kind":"found_in_text","path":"sinkhornkernels/torch/sinkhorn.py","file_url":"https://github.com/RobinMagnet/SinkhornKernels/blob/HEAD/sinkhornkernels/torch/sinkhorn.py","link_basis":"first_harvest_node","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":"51ff764c6a0dc428"}},{"code_sha256_prefix":"21fbaffa2f3d7fda","entry":"sinkhorn_log_dense","repo":"RobinMagnet/SinkhornKernels","repo_kind":"found_in_text","path":"sinkhornkernels/torch/sinkhorn.py","file_url":"https://github.com/RobinMagnet/SinkhornKernels/blob/HEAD/sinkhornkernels/torch/sinkhorn.py","link_basis":"first_harvest_node","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":"21fbaffa2f3d7fda"}},{"code_sha256_prefix":"5459f1845a9f1e43","entry":"sinkhorn_log_dense_from_sqdist","repo":"RobinMagnet/SinkhornKernels","repo_kind":"found_in_text","path":"sinkhornkernels/torch/sinkhorn.py","file_url":"https://github.com/RobinMagnet/SinkhornKernels/blob/HEAD/sinkhornkernels/torch/sinkhorn.py","link_basis":"first_harvest_node","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":"5459f1845a9f1e43"}},{"code_sha256_prefix":"d73846c1a434f89b","entry":"sinkhorn_log_kernel","repo":"RobinMagnet/SinkhornKernels","repo_kind":"found_in_text","path":"sinkhornkernels/sinkhorn.py","file_url":"https://github.com/RobinMagnet/SinkhornKernels/blob/HEAD/sinkhornkernels/sinkhorn.py","link_basis":"first_harvest_node","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":"d73846c1a434f89b"}},{"code_sha256_prefix":"052ac7d02d5349d1","entry":"sinkhorn_log_sparse","repo":"RobinMagnet/SinkhornKernels","repo_kind":"found_in_text","path":"sinkhornkernels/sinkhorn.py","file_url":"https://github.com/RobinMagnet/SinkhornKernels/blob/HEAD/sinkhornkernels/sinkhorn.py","link_basis":"first_harvest_node","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":"052ac7d02d5349d1"}},{"code_sha256_prefix":"243a2cb1ed6e0e73","entry":"squared_distances","repo":"RobinMagnet/SinkhornKernels","repo_kind":"found_in_text","path":"sinkhornkernels/kernels.py","file_url":"https://github.com/RobinMagnet/SinkhornKernels/blob/HEAD/sinkhornkernels/kernels.py","link_basis":"first_harvest_node","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":"243a2cb1ed6e0e73"}},{"code_sha256_prefix":"b5a20f4d0584bdc0","entry":"to_basis","repo":"RobinMagnet/SinkhornKernels","repo_kind":"found_in_text","path":"sinkhornkernels/torch/nn.py","file_url":"https://github.com/RobinMagnet/SinkhornKernels/blob/HEAD/sinkhornkernels/torch/nn.py","link_basis":"first_harvest_node","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":"b5a20f4d0584bdc0"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}