{"id":31640197,"url":"https://github.com/craabreu/ufedmm","last_synced_at":"2025-10-07T02:20:51.808Z","repository":{"id":41524751,"uuid":"254670552","full_name":"craabreu/ufedmm","owner":"craabreu","description":"Unified Free Energy Dynamics (UFED) simulations with OpenMM","archived":false,"fork":false,"pushed_at":"2024-03-09T22:46:15.000Z","size":2181,"stargazers_count":21,"open_issues_count":1,"forks_count":9,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-03-10T04:35:23.888Z","etag":null,"topics":["collective-variables","enhanced-sampling","free-energy","metadynamics","molecular-dynamics","openmm"],"latest_commit_sha":null,"homepage":"https://craabreu.github.io/ufedmm/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/craabreu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2020-04-10T15:33:48.000Z","updated_at":"2023-12-19T09:44:11.000Z","dependencies_parsed_at":"2024-03-07T04:31:46.083Z","dependency_job_id":null,"html_url":"https://github.com/craabreu/ufedmm","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/craabreu/ufedmm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/craabreu%2Fufedmm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/craabreu%2Fufedmm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/craabreu%2Fufedmm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/craabreu%2Fufedmm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/craabreu","download_url":"https://codeload.github.com/craabreu/ufedmm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/craabreu%2Fufedmm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278708020,"owners_count":26031934,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-07T02:00:06.786Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["collective-variables","enhanced-sampling","free-energy","metadynamics","molecular-dynamics","openmm"],"created_at":"2025-10-07T02:20:48.255Z","updated_at":"2025-10-07T02:20:51.802Z","avatar_url":"https://github.com/craabreu.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Unified Free Energy Dynamics with OpenMM\n========================================\n\n[//]: # (Badges)\n[![GitHub Actions Build Status](https://github.com/craabreu/ufedmm/workflows/Linux/badge.svg)](https://github.com/craabreu/ufedmm/actions?query=workflow%3ALinux)\n[![GitHub Actions Build Status](https://github.com/craabreu/ufedmm/workflows/MacOS/badge.svg)](https://github.com/craabreu/ufedmm/actions?query=workflow%3AMacOS)\n[![GitHub Actions Build Status](https://github.com/craabreu/ufedmm/workflows/Windows/badge.svg)](https://github.com/craabreu/ufedmm/actions?query=workflow%3AWindows)\n[![GitHub Actions Build Status](https://github.com/craabreu/ufedmm/workflows/Docs/badge.svg)](https://craabreu.github.io/ufedmm/)\n[![Coverage](https://craabreu.github.io/ufedmm/coverage/coverage.svg)](https://craabreu.github.io/ufedmm/coverage/)\n[![License](https://img.shields.io/badge/License-MIT-yellowgreen.svg?style=flat)](https://github.com/craabreu/ufedmm/blob/main/LICENSE.md)\n\n[![Conda ufedmm version](https://img.shields.io/conda/v/mdtools/ufedmm.svg)](https://anaconda.org/mdtools/ufedmm)\n[![Conda ufedmm platforms](https://img.shields.io/conda/pn/mdtools/ufedmm.svg)](https://anaconda.org/mdtools/ufedmm)\n[![Conda ufedmm downloads](https://img.shields.io/conda/dn/mdtools/ufedmm.svg)](https://anaconda.org/mdtools/ufedmm)\n\nUFEDMM extends [OpenMM's Python API] so that the user can easily run\nefficient simulations in extended phase spaces, perform enhanced sampling\nof systems with barriers and rare events, and compute accurate free-energy\nsurfaces for collective variables or reaction coordinates.\n\n#### Extended Phase-Space Dynamics\n\nThe concept of extended phase space is a powerful tool in Molecular\nDynamics. It consists of treating arbitrary variables as coordinates of\nfictitious particles, assigning masses to these particles, and solving\nequations of motion that encode their interactions with the system\nmolecules. Differently from _collective variables_, which are functions\nof atomic coordinates, these _extra dynamical variables_ are independent\nones. Together with their conjugate momenta, they add new dimensions to\nthe system's phase space.\n\n#### Free Energy Calculations\n\nFree energy is an important thermodynamic property that quantifies the\nrelative likelihood of different states of a system. UFEDMM uses\nextended phase-space dynamics to facilitate the calculation of free\nenergy as a function of extra dynamical variables. Under certain\nassumptions, this is a suitable approximation for the free energy as\na function of collective variables, also known as the potential of mean\nforce (PMF).\n\n#### Enhanced Sampling of Rare Events\n\nUFEDMM combines two methods to efficiently overcome free-energy barriers.\nThe [TAMD]/[d-AFED] method heats the extended variables to a higher\ntemperature than the one specified for the molecules. The [Metadynamics]\nmethod floods free-energy basins with potential energy so that barriers\nare eventually smoothed out. This is the Unified Free Energy Dynamics\n([UFED]) method: heating and flooding, all at once.\n\n## Methods and Algorithms\n\nInteraction between a fictitious particle and the actual molecules is\nenacted by adding, to the total potential energy of the system, a new\nterm that depends both on the corresponding dynamical variable and at\nleast one collective variable. With OpenMM's [CustomCVForce] class,\nadding such a term is as simple as writing down a mathematical expression.\nAll the low-level coding and compilation take place automatically in the\nbackground.\n\nUFEDMM builds on the customization capability of OpenMM to enable efficient\n[UFED] simulations in GPUs and other parallel computation platforms. It\nis efficient because it makes OpenMM treat extra dynamical variables like\nnormal atomic coordinates, thus avoiding the computational overhead of\ndealing with [Context] parameters.\n\n[TAMD]/[d-AFED] is optionally enabled by assigning distinct temperatures\nto the molecules and the extra dynamical variables. For this, UFEDMM\nprovides special [CustomIntegrator] subclasses, given that the intrinsic\nOpenMM integrators cannot handle multiple temperatures. Extended-space\n[Metadynamics] is enabled by explicitly defining the height and widths of\nGaussian hills to be deposited over time, as well as the deposition period.\n\nFor the post-processing of [UFED] simulations, a free energy analysis tool\nis provided, which is based on mean-force estimation and radial basis set\nreconstruction of free energy (hyper)surfaces.\n\n## Collective Variable Package (cvpack)\n\nIn OpenMM, a collective variable (CV) involved in a [CustomCVForce] is\nnothing but an instance of some `Force` subclass. The user is free to define any\nCV for a [UFED] simulation. For convenience, though, UFEDMM provides access to\nan external library of useful collective variables named\n[CVPack](https://cvpack.readthedocs.io/en/latest/). It can be accessed via\nthe `ufedmm.cvpack` module.\n\n### Installation and Usage\n\nUFEDMM is available as a conda package installable from the\n[mdtools](https://anaconda.org/mdtools) conda channel.\nTo install it, either run:\n\n```bash\n    conda install -c conda-forge -c mdtools ufedmm\n```\n\nOr:\n\n```bash\n    mamba install -c mdtools ufedmm\n```\n\nTo use UFEDMM in your own Python script or Jupyter notebook, import it as follows:\n\n```python\n    import ufedmm\n```\n\n## Documentation\n\nhttps://craabreu.github.io/ufedmm/\n\n#### Copyright\n\nThis is an open-source (MIT licensed) project. Contribution is welcome.\n\n#### Acknowledgements\n\nProject structure based on the\n[Computational Molecular Science Python Cookiecutter](https://github.com/molssi/cookiecutter-cms) version 1.0.\n\n[OpenMM's Python API]: http://docs.openmm.org/latest/api-python/index.html\n[TAMD]: http://doi.org/10.1016/j.cplett.2006.05.062\n[d-AFED]: http://doi.org/10.1021/jp805039u\n[Metadynamics]: http://doi.org/10.1021/jp045424k\n[UFED]: http://doi.org/10.1063/1.4733389\n[Context]: http://docs.openmm.org/latest/api-python/generated/openmm.openmm.Context.html\n[CustomCVForce]: http://docs.openmm.org/latest/api-python/generated/openmm.openmm.CustomCVForce.html\n[CustomIntegrator]: http://docs.openmm.org/latest/api-python/generated/openmm.openmm.CustomIntegrator.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcraabreu%2Fufedmm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcraabreu%2Fufedmm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcraabreu%2Fufedmm/lists"}