Source code for openff.interchange.interop.openmm._positions
"""
Helper functions for exporting positions to OpenMM.
"""
from typing import TYPE_CHECKING
from openff.interchange.exceptions import MissingVirtualSitesError
if TYPE_CHECKING:
import openmm.unit
from openff.interchange import Interchange
[docs]def to_openmm_positions(
interchange: "Interchange",
include_virtual_sites: bool = True,
) -> "openmm.unit.Quantity":
"""Generate an array of positions of all particles, optionally including virtual sites."""
if include_virtual_sites:
from openff.interchange.interop._virtual_sites import (
get_positions_with_virtual_sites,
)
try:
return get_positions_with_virtual_sites(
interchange,
use_zeros=False,
).to_openmm()
except MissingVirtualSitesError:
return interchange.positions.to_openmm()
else:
return interchange.positions.to_openmm()