|
500 | 500 | " state = sim.context.getState(getEnergy=True, getPositions=True)\n", |
501 | 501 | " ene = state.getPotentialEnergy()\n", |
502 | 502 | " pos = openmm.unit.Quantity(\n", |
503 | | - " [\n", |
504 | | - " list(xyz)\n", |
505 | | - " for xyz in state.getPositions().value_in_unit(openmm.unit.nanometer)\n", |
506 | | - " ],\n", |
| 503 | + " [list(xyz) for xyz in state.getPositions().value_in_unit(openmm.unit.nanometer)],\n", |
507 | 504 | " openmm.unit.nanometer,\n", |
508 | 505 | " )\n", |
509 | 506 | "\n", |
|
628 | 625 | " # First, get an OpenMM Topology and atom positions with no virtual sites\n", |
629 | 626 | " _topology: openmm.app.Topology = Topology.from_molecules(water).to_openmm()\n", |
630 | 627 | "\n", |
631 | | - " atom_positions_unitless = numpy.vstack(\n", |
632 | | - " [mol.conformers[0].m_as(unit.nanometer) for mol in water]\n", |
633 | | - " )\n", |
634 | | - " atom_positions = openmm.unit.Quantity(\n", |
635 | | - " atom_positions_unitless, openmm.unit.nanometer\n", |
636 | | - " )\n", |
| 628 | + " atom_positions_unitless = numpy.vstack([mol.conformers[0].m_as(unit.nanometer) for mol in water])\n", |
| 629 | + " atom_positions = openmm.unit.Quantity(atom_positions_unitless, openmm.unit.nanometer)\n", |
637 | 630 | "\n", |
638 | 631 | " # Use OpenMM's Modeller to add virtual particles as perscribed by the force field\n", |
639 | 632 | " modeller = openmm.app.Modeller(_topology, atom_positions)\n", |
|
642 | 635 | " # This topology includes virtual particles, so we can use it to create a System\n", |
643 | 636 | " topology = modeller.getTopology()\n", |
644 | 637 | "\n", |
645 | | - " system: openmm.System = openmm_force_field.createSystem(\n", |
646 | | - " topology, nonbondedMethod=openmm.app.NoCutoff\n", |
647 | | - " )\n", |
| 638 | + " system: openmm.System = openmm_force_field.createSystem(topology, nonbondedMethod=openmm.app.NoCutoff)\n", |
648 | 639 | "\n", |
649 | 640 | " # Add positions of virtual particles now that the topology includes them\n", |
650 | 641 | " particle_positions = modeller.getPositions()\n", |
651 | 642 | "\n", |
652 | | - " return _evaluate_positions_and_energy(\n", |
653 | | - " topology, system, particle_positions, minimize=minimize\n", |
654 | | - " )" |
| 643 | + " return _evaluate_positions_and_energy(topology, system, particle_positions, minimize=minimize)" |
655 | 644 | ] |
656 | 645 | }, |
657 | 646 | { |
|
802 | 791 | " f\"{coordinate_difference.m:0.3e}\\n\"\n", |
803 | 792 | ")\n", |
804 | 793 | "\n", |
805 | | - "assert coordinate_difference < Quantity(\n", |
806 | | - " 1e-6, unit.angstrom\n", |
807 | | - "), f\"Coordinates differ by a norm of {coordinate_difference}\"\n", |
808 | | - "assert (\n", |
809 | | - " energy_difference < 1e-4 * openmm.unit.kilojoule_per_mole\n", |
810 | | - "), f\"Energies differ by {energy_difference}\"" |
| 794 | + "assert coordinate_difference < Quantity(1e-6, unit.angstrom), (\n", |
| 795 | + " f\"Coordinates differ by a norm of {coordinate_difference}\"\n", |
| 796 | + ")\n", |
| 797 | + "assert energy_difference < 1e-4 * openmm.unit.kilojoule_per_mole, f\"Energies differ by {energy_difference}\"" |
811 | 798 | ] |
812 | 799 | }, |
813 | 800 | { |
|
0 commit comments