def test_repr(self): frame = Frame() self.assertEqual(frame.__repr__(), "Frame with 0 atoms") frame.resize(4) self.assertEqual(frame.__repr__(), "Frame with 4 atoms") self.assertEqual(frame.atoms.__repr__(), "[Atom(''), Atom(''), Atom(''), Atom('')]")
def test_iter(self): frame = Frame() frame.resize(3) for i, atom in enumerate(frame.atoms): self.assertEqual(atom.name, "") self.assertEqual(i, 2)
def test_atoms_count(self): frame = Frame() self.assertEqual(len(frame.atoms), 0) frame.resize(4) self.assertEqual(len(frame.atoms), 4) frame.remove(2) self.assertEqual(len(frame.atoms), 3)
def test_copy(self): frame = Frame() cloned = copy.copy(frame) self.assertEqual(len(frame.atoms), 0) self.assertEqual(len(cloned.atoms), 0) frame.resize(6) self.assertEqual(len(frame.atoms), 6) self.assertEqual(len(cloned.atoms), 0)
def test_iter(self): frame = Frame() frame.resize(3) for i, atom in enumerate(frame.atoms): self.assertEqual(atom.name, "") self.assertEqual(i, 2) for i, atom in enumerate(frame.topology.atoms): self.assertEqual(atom.name, "") self.assertEqual(i, 2)
def test_topology(self): frame = Frame() frame.resize(2) topology = Topology() topology.atoms.append(Atom("Zn")) topology.atoms.append(Atom("Ar")) frame.topology = topology self.assertEqual(frame.atoms[0].name, "Zn") self.assertEqual(frame.atoms[1].name, "Ar")
def test_topology(self): frame = Frame() frame.resize(2) topology = Topology() topology.atoms.append(Atom("Zn")) topology.atoms.append(Atom("Ar")) frame.topology = topology self.assertEqual(frame.topology.atoms[0].name, "Zn") self.assertEqual(frame.topology.atoms[1].name, "Ar") self.assertEqual(frame.atoms[0].name, "Zn") self.assertEqual(frame.atoms[1].name, "Ar")
def test_positions(self): frame = Frame() frame.resize(4) expected = np.array( [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0], [10.0, 11.0, 12.0]], np.float64, ) np.copyto(frame.positions, expected) self.assertEqual(frame.positions.all(), expected.all()) frame.positions[3, 2] = 42 self.assertEqual(frame.positions[3, 2], 42) # Checking empty frame positions access _ = Frame().positions
def test_velocities(self): frame = Frame() frame.resize(4) self.assertFalse(frame.has_velocities()) frame.add_velocities() self.assertTrue(frame.has_velocities()) expected = np.array( [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0], [10.0, 11.0, 12.0]], np.float64, ) np.copyto(frame.velocities, expected) self.assertEqual(frame.velocities.all(), expected.all()) frame.velocities[3, 2] = 42 self.assertEqual(frame.velocities[3, 2], 42) # Checking empty frame velocities access frame = Frame() frame.add_velocities() _ = frame.velocities
# Any copyright is dedicated to the Public Domain. # http://creativecommons.org/publicdomain/zero/1.0/ #!/usr/bin/env python import numpy as np from chemfiles import Topology, Frame, Atom, UnitCell, Trajectory topology = Topology() topology.add_atom(Atom("H")) topology.add_atom(Atom("O")) topology.add_atom(Atom("H")) topology.add_bond(0, 1) topology.add_bond(2, 1) frame = Frame() frame.resize(3) frame.set_topology(topology) positions = frame.positions() positions[0, :] = np.array([1.0, 0.0, 0.0]) positions[1, :] = np.array([0.0, 0.0, 0.0]) positions[2, :] = np.array([0.0, 1.0, 0.0]) frame.add_atom(Atom("O"), [5.0, 0.0, 0.0]) frame.add_atom(Atom("C"), [6.0, 0.0, 0.0]) frame.add_atom(Atom("O"), [7.0, 0.0, 0.0]) frame.add_bond(3, 4) frame.add_bond(4, 5) frame.set_cell(UnitCell(10, 10, 10))
# Any copyright is dedicated to the Public Domain. # http://creativecommons.org/publicdomain/zero/1.0/ #!/usr/bin/env python import numpy as np from chemfiles import Topology, Frame, Atom, UnitCell, Trajectory topology = Topology() topology.atoms.append(Atom("H")) topology.atoms.append(Atom("O")) topology.atoms.append(Atom("H")) topology.add_bond(0, 1) topology.add_bond(2, 1) frame = Frame() frame.resize(3) frame.topology = topology frame.positions[0, :] = np.array([1.0, 0.0, 0.0]) frame.positions[1, :] = np.array([0.0, 0.0, 0.0]) frame.positions[2, :] = np.array([0.0, 1.0, 0.0]) frame.add_atom(Atom("O"), [5.0, 0.0, 0.0]) frame.add_atom(Atom("C"), [6.0, 0.0, 0.0]) frame.add_atom(Atom("O"), [7.0, 0.0, 0.0]) frame.add_bond(3, 4) frame.add_bond(4, 5) frame.cell = UnitCell(10, 10, 10) with Trajectory("water-co2.pdb", 'w') as trajectory:
def test_out_of_bounds(self): frame = Frame() frame.resize(3) _ = frame.atoms[2] with self.assertRaises(IndexError): _ = frame.atoms[6]