def METHOD_NAME(
    interchange: Interchange,
    round_positions: Optional[int] = None,
) -> dict[str, unit.Quantity]:
    lmp = _find_lammps_executable(raise_exception=True)
    if round_positions is not None:
        interchange.positions = numpy.round(interchange.positions, round_positions)
    interchange.to_lammps("out.lmp")
    mdconfig = MDConfig.from_interchange(interchange)
    mdconfig.write_lammps_input(
        input_file="tmp.in",
    )
    run_cmd = f"{lmp} -i tmp.in"
    proc = subprocess.Popen(
        run_cmd,
        shell=True,
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
        universal_newlines=True,
    )
    _, err = proc.communicate()
    if proc.returncode:
        raise LAMMPSRunError(err)
    # thermo_style custom ebond eangle edihed eimp epair evdwl ecoul elong etail pe
    parsed_energies = unit.kilocalorie_per_mole * _parse_lammps_log("log.lammps")
    return {
        "Bond": parsed_energies[0],
        "Angle": parsed_energies[1],
        "ProperTorsion": parsed_energies[2],
        "ImproperTorsion": parsed_energies[3],
        "vdW": parsed_energies[5],
        "DispersionCorrection": parsed_energies[8],
        "ElectrostaticsShort": parsed_energies[6],
        "ElectrostaticsLong": parsed_energies[7],
    }