Esempio n. 1
0
    def test_residues(self):
        topology = Topology()
        topology.resize(6)

        residue = Residue('foo', 4)
        residue.atoms.append(3)
        residue.atoms.append(4)
        topology.residues.append(residue)

        residue = Residue('bar', 67)
        residue.atoms.append(1)
        residue.atoms.append(2)
        topology.residues.append(residue)

        self.assertEqual(topology.residue_for_atom(5), None)

        first = topology.residues[0]
        self.assertEqual(first.name, 'foo')

        second = topology.residues[1]
        self.assertEqual(second.name, 'bar')

        self.assertFalse(topology.residues_linked(first, second))

        topology.add_bond(2, 3)
        self.assertTrue(topology.residues_linked(first, second))
Esempio n. 2
0
    def test_angles(self):
        topology = Topology()
        topology.resize(4)
        self.assertEqual(topology.angles_count(), 0)

        topology.add_bond(0, 1)
        topology.add_bond(1, 2)
        topology.add_bond(2, 3)

        self.assertEqual(topology.angles_count(), 2)
        self.assertEqual(
            topology.angles.all(),
            np.array([[0, 1, 2], [1, 2, 3]]).all()
        )
Esempio n. 3
0
    def test_impropers(self):
        topology = Topology()
        topology.resize(4)
        self.assertEqual(topology.impropers_count(), 0)

        topology.add_bond(1, 0)
        topology.add_bond(1, 2)
        topology.add_bond(1, 3)

        self.assertEqual(topology.impropers_count(), 1)
        self.assertEqual(
            topology.impropers.all(),
            np.array([[0, 1, 2, 3]]).all()
        )
Esempio n. 4
0
    def test_dihedrals(self):
        topology = Topology()
        topology.resize(4)
        self.assertEqual(topology.dihedrals_count(), 0)

        topology.add_bond(0, 1)
        topology.add_bond(1, 2)
        topology.add_bond(2, 3)

        self.assertEqual(topology.dihedrals_count(), 1)
        self.assertEqual(
            topology.dihedrals.all(),
            np.array([[0, 1, 2, 3]]).all()
        )
Esempio n. 5
0
    def test_iter(self):
        topology = Topology()
        topology.resize(6)

        for i, atom in enumerate(topology.atoms):
            self.assertEqual(atom.name, "")
        self.assertEqual(i, 5)

        topology.residues.append(Residue("foo"))
        topology.residues.append(Residue("foo"))
        topology.residues.append(Residue("foo"))

        for i, residue in enumerate(topology.residues):
            self.assertEqual(residue.name, "foo")
        self.assertEqual(i, 2)
Esempio n. 6
0
    def test_size(self):
        topology = Topology()

        self.assertEqual(len(topology.atoms), 0)

        topology.atoms.append(Atom("H"))
        topology.atoms.append(Atom("O"))
        topology.atoms.append(Atom("O"))
        topology.atoms.append(Atom("H"))

        self.assertEqual(len(topology.atoms), 4)
        topology.resize(8)
        self.assertEqual(len(topology.atoms), 8)

        topology.atoms.remove(3)
        self.assertEqual(len(topology.atoms), 7)

        del topology.atoms[4]
        self.assertEqual(len(topology.atoms), 6)
Esempio n. 7
0
    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")
Esempio n. 8
0
    def test_copy(self):
        topology = Topology()
        topology.resize(4)
        cloned = copy.copy(topology)

        self.assertEqual(len(topology.atoms), 4)
        self.assertEqual(len(cloned.atoms), 4)

        topology.resize(8)
        self.assertEqual(len(topology.atoms), 8)
        self.assertEqual(len(cloned.atoms), 4)
Esempio n. 9
0
    def test_repr(self):
        topology = Topology()
        self.assertEqual(topology.__repr__(), "Topology with 0 atoms")
        topology.resize(4)
        self.assertEqual(topology.__repr__(), "Topology with 4 atoms")

        self.assertEqual(topology.atoms.__repr__(), "[Atom(''), Atom(''), Atom(''), Atom('')]")

        topology.residues.append(Residue("ALA"))
        topology.residues.append(Residue("ARG"))
        self.assertEqual(topology.residues.__repr__(), "[Residue('ALA') with 0 atoms, Residue('ARG') with 0 atoms]")
Esempio n. 10
0
    def test_read(self):
        trajectory = Trajectory(get_data_path("water.xyz"))

        self.assertEqual(trajectory.nsteps, 100)
        self.assertEqual(trajectory.path, get_data_path("water.xyz"))

        frame = trajectory.read()
        self.assertEqual(len(frame.atoms), 297)

        self.assertEqual(frame.positions[0].all(),
                         np.array([0.417219, 8.303366, 11.737172]).all())
        self.assertEqual(frame.positions[124].all(),
                         np.array([5.099554, -0.045104, 14.153846]).all())

        self.assertEqual(len(frame.atoms), 297)
        self.assertEqual(frame.atoms[0].name, "O")
        self.assertEqual(frame.atoms[1].name, "H")

        trajectory.set_cell(UnitCell(30, 30, 30))
        frame = trajectory.read_step(41)
        self.assertEqual(frame.cell.lengths, (30.0, 30.0, 30.0))

        self.assertEqual(frame.positions[0].all(),
                         np.array([0.761277, 8.106125, 10.622949]).all())
        self.assertEqual(frame.positions[124].all(),
                         np.array([5.13242, 0.079862, 14.194161]).all())

        self.assertEqual(len(frame.atoms), 297)
        self.assertEqual(frame.topology.bonds_count(), 0)

        frame.guess_bonds()
        self.assertEqual(frame.topology.bonds_count(), 181)
        self.assertEqual(frame.topology.angles_count(), 87)

        topology = Topology()
        for i in range(297):
            topology.atoms.append(Atom("Cs"))

        trajectory.set_topology(topology)
        frame = trajectory.read_step(10)
        self.assertEqual(frame.atoms[10].name, "Cs")

        trajectory.set_topology(get_data_path("topology.xyz"), "XYZ")
        frame = trajectory.read()
        self.assertEqual(frame.atoms[100].name, "Rd")
Esempio n. 11
0
    def test_out_of_bounds(self):
        topology = Topology()
        topology.resize(4)

        residue = Residue("")
        residue.atoms.append(1)
        topology.residues.append(residue)

        _ = topology.atoms[2]
        _ = topology.residues[0]
        _ = topology.residue_for_atom(1)

        with self.assertRaises(IndexError):
            _ = topology.atoms[6]

        with self.assertRaises(IndexError):
            _ = topology.residues[6]

        with self.assertRaises(IndexError):
            _ = topology.residue_for_atom(6)
Esempio n. 12
0
# This file is an example for the chemfiles library
# 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))
Esempio n. 13
0
# This file is an example for the chemfiles library
# 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)
Esempio n. 14
0
    def test_bonds(self):
        topology = Topology()
        topology.resize(4)
        self.assertEqual(topology.bonds_count(), 0)

        topology.add_bond(0, 1)
        topology.add_bond(1, 2)
        topology.add_bond(2, 3)

        self.assertEqual(topology.bonds_count(), 3)
        self.assertEqual(
            topology.bonds.all(),
            np.array([[2, 3], [1, 2], [0, 1]]).all()
        )

        topology.remove_bond(2, 3)
        self.assertEqual(topology.bonds_count(), 2)

        self.assertEqual(topology.bonds_order(0, 1), BondOrder.Unknown)
        self.assertEqual(topology.bonds_order(1, 2), BondOrder.Unknown)

        with remove_warnings:
            with self.assertRaises(ChemfilesError):
                _ = topology.bonds_order(1, 3)

        topology.add_bond(2, 3, BondOrder.Aromatic)
        self.assertEqual(topology.bonds_order(2, 3), BondOrder.Aromatic)
        self.assertEqual(
            topology.bonds_orders,
            [BondOrder.Unknown, BondOrder.Unknown, BondOrder.Aromatic]
        )