Skip to content

feat(backends): AMOEBA polarizable force field support #98

Description

@ericchansen

Summary

Add support for AMOEBA polarizable force field parameterization and optimization in Q2MM.

Motivation

AMOEBA (Atomic Multipole Optimized Energetics for Biomolecular Applications) is a next-generation polarizable force field that includes:

  • Permanent atomic multipoles (charges, dipoles, quadrupoles)
  • Mutual polarization (induced dipoles)
  • Buffered 14-7 van der Waals
  • Valence terms similar to MM3

AMOEBA is natively supported by Tinker (its primary engine) and OpenMM. Q2MM's quantum-guided approach could be valuable for fitting AMOEBA parameters, particularly for:

  • Transition state force fields (our core use case)
  • Coordination complexes with strong polarization effects
  • Systems where fixed-charge models are insufficient

Scope

Phase 1: AMOEBA energy evaluation

  • Extend TinkerEngine to handle AMOEBA parameter files (.prm with multipole/polarize keywords)
  • Extend OpenMMEngine to build AMOEBA systems (OpenMM has AmoebaMultipoleForce, AmoebaVdwForce, etc.)
  • Parse AMOEBA parameter types in ForceField model (multipole, polarize, etc.)

Phase 2: AMOEBA parameter optimization

  • Identify which AMOEBA parameters are suitable for Q2MM optimization (valence terms? multipoles? polarizabilities?)
  • Add AMOEBA parameter types to ForceField.get_param_vector() / set_param_vector()
  • Validate with known AMOEBA parameterization cases

Phase 3: Analytical gradients for AMOEBA

  • OpenMM: Use addEnergyParameterDerivative() on AMOEBA CustomForce terms
  • Tinker: Investigate if analytical dE/d(param) is feasible for multipole/polarization terms
  • JAX: Potentially implement AMOEBA energy functions in JAX (complex but possible)

Relationship to Poltype2

Poltype2 automates AMOEBA parameterization for small molecules from QM data. It handles:

  • Atom typing and multipole assignment
  • Torsion fitting
  • Polarizability assignment

Q2MM could complement Poltype2 by:

  • Providing an alternative optimization engine with analytical gradients
  • Supporting transition state parameterization (which Poltype2 doesn't do)
  • Offering a unified framework that works across AMOEBA, MM3, and OPLSAA

Technical considerations

  • AMOEBA's mutual polarization makes the energy a self-consistent function -- differentiating through the SCF iteration requires implicit differentiation or unrolling
  • Multipole rotation frames add complexity to parameter gradients
  • OpenMM's AMOEBA implementation is well-tested but the parameter derivative API may not cover all AMOEBA force types (needs investigation)

Related issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    backendBackend-specific (OpenMM, Tinker, JAX, etc.)enhancement

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions