{"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/doob-s-lagrangian-a-sample-efficient","title":"Doob's Lagrangian: A Sample-Efficient Variational Approach to Transition Path Sampling","arxiv_id":"2410.07974","date":"2024-10-10","proceeding":null,"authors":["Yuanqi Du","Michael Plainer","Rob Brekelmans","Chenru Duan","Frank Noé","Carla P. Gomes","Alán Aspuru-Guzik","Kirill Neklyudov"],"abstract":"Rare event sampling in dynamical systems is a fundamental problem arising in the natural sciences, which poses significant computational challenges due to an exponentially large space of trajectories. For settings where the dynamical system of interest follows a Brownian motion with known drift, the question of conditioning the process to reach a given endpoint or desired rare event is definitively answered by Doob's h-transform. However, the naive estimation of this transform is infeasible, as it requires simulating sufficiently many forward trajectories to estimate rare event probabilities. In this work, we propose a variational formulation of Doob's h-transform as an optimization problem over trajectories between a given initial point and the desired ending point. To solve this optimization, we propose a simulation-free training objective with a model parameterization that imposes the desired boundary conditions by design. Our approach significantly reduces the search space over trajectories and avoids expensive trajectory simulation and inefficient importance sampling estimators which are required in existing methods. We demonstrate the ability of our method to find feasible transition paths on real-world molecular simulation and protein folding tasks.","url_abs":"https://arxiv.org/abs/2410.07974v4","url_pdf":"https://arxiv.org/pdf/2410.07974v4.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":"doob-s-lagrangian-a-sample-efficient","repo_url":"https://github.com/plainerman/variational-doob","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"jax","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"protein-folding","task_name":"Protein Folding"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2410.07974","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2410.07974"}},"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/plainerman/variational-doob","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":12,"unverified":1},"by_repo_kind":{"official":{"samples":13,"ran":12,"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":"b5c718f1aa14ec63","entry":"U_double_well","repo":"plainerman/variational-doob","repo_kind":"official","path":"potentials.py","file_url":"https://github.com/plainerman/variational-doob/blob/HEAD/potentials.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b5c718f1aa14ec63"}},{"code_sha256_prefix":"8baa6fbffc8ae462","entry":"U_double_well_dual_channel","repo":"plainerman/variational-doob","repo_kind":"official","path":"potentials.py","file_url":"https://github.com/plainerman/variational-doob/blob/HEAD/potentials.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8baa6fbffc8ae462"}},{"code_sha256_prefix":"fba185b286872592","entry":"U_double_well_hard","repo":"plainerman/variational-doob","repo_kind":"official","path":"potentials.py","file_url":"https://github.com/plainerman/variational-doob/blob/HEAD/potentials.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fba185b286872592"}},{"code_sha256_prefix":"e15e209ec043ecb5","entry":"interpolate","repo":"plainerman/variational-doob","repo_kind":"official","path":"tps_baseline_mueller.py","file_url":"https://github.com/plainerman/variational-doob/blob/HEAD/tps_baseline_mueller.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e15e209ec043ecb5"}},{"code_sha256_prefix":"53f10abe63ad7724","entry":"is_within","repo":"plainerman/variational-doob","repo_kind":"official","path":"tps_baseline.py","file_url":"https://github.com/plainerman/variational-doob/blob/HEAD/tps_baseline.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"53f10abe63ad7724"}},{"code_sha256_prefix":"77675113fedd2bb9","entry":"load","repo":"plainerman/variational-doob","repo_kind":"official","path":"eval/evaluate_mueller.py","file_url":"https://github.com/plainerman/variational-doob/blob/HEAD/eval/evaluate_mueller.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"77675113fedd2bb9"}},{"code_sha256_prefix":"a60329e7a81e48fe","entry":"mcmc_shooting","repo":"plainerman/variational-doob","repo_kind":"official","path":"tps/first_order.py","file_url":"https://github.com/plainerman/variational-doob/blob/HEAD/tps/first_order.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a60329e7a81e48fe"}},{"code_sha256_prefix":"585c37179b5aba1c","entry":"one_way_shooting","repo":"plainerman/variational-doob","repo_kind":"official","path":"tps/first_order.py","file_url":"https://github.com/plainerman/variational-doob/blob/HEAD/tps/first_order.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"585c37179b5aba1c"}},{"code_sha256_prefix":"ce65dad4f367f7f9","entry":"plot_iterative_min_max_energy","repo":"plainerman/variational-doob","repo_kind":"official","path":"eval/path_metrics.py","file_url":"https://github.com/plainerman/variational-doob/blob/HEAD/eval/path_metrics.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ce65dad4f367f7f9"}},{"code_sha256_prefix":"f3b550629c7127d4","entry":"plot_path_energy","repo":"plainerman/variational-doob","repo_kind":"official","path":"eval/path_metrics.py","file_url":"https://github.com/plainerman/variational-doob/blob/HEAD/eval/path_metrics.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f3b550629c7127d4"}},{"code_sha256_prefix":"b1c11cc844c6637e","entry":"step_n","repo":"plainerman/variational-doob","repo_kind":"official","path":"tps_baseline.py","file_url":"https://github.com/plainerman/variational-doob/blob/HEAD/tps_baseline.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b1c11cc844c6637e"}},{"code_sha256_prefix":"2f18c8a3ab7cf955","entry":"two_way_shooting","repo":"plainerman/variational-doob","repo_kind":"official","path":"tps/first_order.py","file_url":"https://github.com/plainerman/variational-doob/blob/HEAD/tps/first_order.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2f18c8a3ab7cf955"}},{"code_sha256_prefix":"f1acf61f58cd67a5","entry":"decorrelated","repo":"plainerman/variational-doob","repo_kind":"official","path":"tps/paths.py","file_url":"https://github.com/plainerman/variational-doob/blob/HEAD/tps/paths.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":"f1acf61f58cd67a5"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}