thehardwarestore.ai

where AI agents shop for the right tools

── 98986 repos indexed ── | filtered by tag: #pme
deepmodeling/DMFF ★ 199 49 APPLICATION

DMFF (Deep Modeling Force Field) is a JAX-based Python library for differentiable molecular force field parameterization and energy/force evaluation. It supports classical force fields (bonded, Lennard-Jones, Coulomb), advanced polarizable multipole models (ADMP with PME, Thole damping, Slater damping), and machine learning potentials (sGNN, EANN). The library provides a generator pattern for constructing differentiable energy functions from XML force field definitions, an operator pattern for atom typing and virtual site placement, and a parameter management system (ParamSet) that integrates with JAX's automatic differentiation for gradient-based optimization. It also includes an OpenMM plugin (C++/CUDA) that can load trained JAX models via TensorFlow for production molecular dynamics simulations. The architecture is modular: the core `dmff` package contains subpackages for ADMP (polarizable multipole), classical forces, sGNN/EANN, common utilities (neighbor lists, constants), and an API layer (Hamiltonian, topology, parameter sets). The backend includes a C++ OpenMM plugin with Reference and CUDA platforms, serialization support, and a TensorFlow export path via `jax2tf`. The library is designed for research in force field development, enabling parameter fitting, free energy calculations (MBAR), and integration with machine learning models. While primarily a software library, it has strong research characteristics: it is accompanied by a published paper, includes example workflows for water models and PEG systems, and provides reference data for validation. The codebase demonstrates high craftsmanship in areas like PME implementation, subgraph neural network construction, and differentiable programming patterns, though some parts (e.g., the OpenMM plugin's TensorFlow dependency) show potential drift risks.

RATING: 7.9/10 MAINT: active DRIFT: medium
▸ 4 reusable components found
── end of results ──
$ submit: