Esempio n. 1
0
 def test_bond_breaking_needs_other_atom(self, mock_bonds):
     atom1 = Atom("C", 2, 3, 5)
     bond = Mock(Bond)
     bond.atoms.return_value = set([atom1, Mock()])
     mock_bonds.return_value = set([bond])
     with self.assertRaises(ValueError):
         atom1.unbond_from(atom1)
Esempio n. 2
0
 def test_can_rotate_in_degrees(self, mock_trim, mock_loc, mock_matrix):
     matrix = Mock()
     mock_matrix.return_value = matrix
     matrix.dot.return_value = [10, 20, 30]
     atom = Atom("C", 1, 1, 1)
     atom.rotate(90, "x", degrees=True)
     mock_matrix.assert_called_with(math.pi / 2, "x")
Esempio n. 3
0
 def test_can_translate_atoms_with_iterable(self, mock_trim):
     atom = Atom("C", 20, 30, 50)
     atom.translate((5, -4, 12))
     self.assertEqual(atom._x, 25)
     self.assertEqual(atom._y, 26)
     self.assertEqual(atom._z, 62)
     mock_trim.assert_called_with(12)
Esempio n. 4
0
 def test_can_rotate_no_trim(self, mock_trim, mock_loc, mock_matrix):
     matrix = Mock()
     mock_matrix.return_value = matrix
     matrix.dot.return_value = [10, 20, 30]
     atom = Atom("C", 1, 1, 1)
     atom.rotate(9, "x", trim=None)
     mock_trim.assert_called_with(None)
Esempio n. 5
0
 def test_can_generate_rotation_matrix_z(self):
     atom = Atom("C")
     matrix = atom.generate_rotation_matrix(math.pi / 2, "z")
     self.assertEqual([[round(val, 12) for val in row] for row in matrix],
                      [[0, -1, 0], [1, 0, 0], [0, 0, 1]])
     matrix = atom.generate_rotation_matrix(math.pi / -36, "z")
     self.assertEqual([[round(val, 3) for val in row] for row in matrix],
                      [[0.996, 0.087, 0], [-0.087, 0.996, 0], [0, 0, 1]])
Esempio n. 6
0
 def test_can_generate_rotation_matrix_y(self):
     atom = Atom("C")
     matrix = atom.generate_rotation_matrix(math.pi / 2, "y")
     self.assertEqual([[round(val, 12) for val in row] for row in matrix],
                      [[0, 0, 1], [0, 1, 0], [-1, 0, 0]])
     matrix = atom.generate_rotation_matrix(math.pi / 18, "y")
     self.assertEqual([[round(val, 3) for val in row] for row in matrix],
                      [[0.985, 0, 0.174], [0, 1, 0], [-0.174, 0, 0.985]])
Esempio n. 7
0
 def test_can_generate_rotation_matrix_x(self):
     atom = Atom("C")
     matrix = atom.generate_rotation_matrix(math.pi / 2, "x")
     self.assertEqual([[round(val, 12) for val in row] for row in matrix],
                      [[1, 0, 0], [0, 0, -1], [0, 1, 0]])
     matrix = atom.generate_rotation_matrix(math.pi / -4, "x")
     self.assertEqual([[round(val, 3) for val in row] for row in matrix],
                      [[1, 0, 0], [0, 0.707, 0.707], [0, -0.707, 0.707]])
Esempio n. 8
0
 def test_can_get_nearby_atoms(self, mock_loc):
     model = Mock()
     mock_loc.return_value = (1, 2, 3)
     atom = Atom("C", 4, 8, 3)
     atom._model = model
     model.atoms_in_sphere.return_value = [1, 2, atom, 4]
     atoms = atom.nearby_atoms(4, a=1, b=2)
     model.atoms_in_sphere.assert_called_with(1, 2, 3, 4, a=1, b=2)
     self.assertEqual(atoms, [1, 2, 4])
Esempio n. 9
0
 def test_bond_unbreaking_needs_actual_bond(self, mock_bonds):
     atom1 = Atom("C", 2, 3, 5)
     atom2 = Mock(Atom)
     bond = Mock(Bond)
     bond.atoms.return_value = set([atom1, Mock(Atom)])
     mock_bonds.return_value = set([bond])
     atom2.bonds.return_value = set([bond])
     with self.assertRaises(ValueError):
         atom1.unbond_from(atom2)
Esempio n. 10
0
 def test_can_break_bond_between_atoms(self, mock_bonds):
     atom1 = Atom("C", 2, 3, 5)
     atom2 = Mock(Atom)
     bond = Mock(Bond)
     bond.atoms.return_value = set([atom1, atom2])
     mock_bonds.return_value = set([bond])
     atom2.bonds.return_value = set([bond])
     atom1.unbond_from(atom2)
     bond.destroy.assert_called_with()
Esempio n. 11
0
 def test_can_get_bonded_atoms(self, mock_bonds):
     atom = Atom("C", 2, 3, 5)
     bond1, bond2, bond3 = Mock(Bond), Mock(Bond), Mock(Bond)
     atom2, atom3, atom4 = Mock(Atom), Mock(Atom), Mock(Atom)
     bond1.atoms.return_value = set([atom, atom2])
     bond2.atoms.return_value = set([atom, atom3])
     bond3.atoms.return_value = set([atom, atom4])
     mock_bonds.return_value = set([bond1, bond2, bond3])
     self.assertEqual(atom.bonded_atoms(), set([atom2, atom3, atom4]))
Esempio n. 12
0
 def test_atom_mass_case_insensitive(self):
     atom = Atom("he", 2, 3, 5)
     self.assertAlmostEqual(atom.mass, 4, delta=0.1)
     atom = Atom("He", 2, 3, 5)
     self.assertAlmostEqual(atom.mass, 4, delta=0.1)
     atom = Atom("hE", 2, 3, 5)
     self.assertAlmostEqual(atom.mass, 4, delta=0.1)
     atom = Atom("HE", 2, 3, 5)
     self.assertAlmostEqual(atom.mass, 4, delta=0.1)
Esempio n. 13
0
 def test_coordinates_must_be_numeric(self):
     atom = Atom("C", 20, 30, 50)
     with self.assertRaises(TypeError):
         atom.move_to(1, 2, "3")
     with self.assertRaises(TypeError):
         atom.move_to(1, "2", 3)
     with self.assertRaises(TypeError):
         atom.move_to("1", 2, 3)
     atom.move_to(1.1, 2.1, 3.1)
Esempio n. 14
0
 def test_can_rotate(self, mock_trim, mock_loc, mock_matrix):
     matrix = Mock()
     mock_matrix.return_value = matrix
     matrix.dot.return_value = [10, 20, 30]
     mock_loc.return_value = (0.1, 0.2, 0.3)
     atom = Atom("C", 1, 1, 1)
     atom.rotate(9, "x")
     mock_matrix.assert_called_with(9, "x")
     mock_loc.assert_called_with()
     matrix.dot.assert_called_with((0.1, 0.2, 0.3))
     self.assertEqual(atom._x, 10)
     self.assertEqual(atom._y, 20)
     self.assertEqual(atom._z, 30)
     mock_trim.assert_called_with(12)
Esempio n. 15
0
 def test_can_get_bond_with_atom(self, mock_bonds):
     atom1 = Atom("C", 2, 3, 5)
     atom2 = Mock(Atom)
     atom3 = Mock(Atom)
     atom4 = Mock(Atom)
     bonda = Mock(Bond)
     bondb = Mock(Bond)
     bonda.atoms.return_value = set([atom1, atom2])
     bondb.atoms.return_value = set([atom1, atom3])
     mock_bonds.return_value = set([bonda, bondb])
     self.assertIs(atom1.bond_with(atom2), bonda)
     self.assertIs(atom1.bond_with(atom3), bondb)
     self.assertIs(atom1.bond_with(atom4), None)
     self.assertIs(atom1.bond_with(atom1), None)
Esempio n. 16
0
    def setUp(self):
        self.atoms = [
            Atom("C", 2, 3, 5, name="CA", id=15, charge=1),
            Atom("C", 2, 3, 5, name="CA", id=16, charge=1),
            Atom("P", 2, 3, 5, name="PB", id=17, charge=1),
            Atom("H", 2, 3, 5, name="H1", id=18, charge=1),
            Atom("ZN", 2, 3, 5, name="ZN", id=19, charge=1)
        ]
        self.atoms[0]._residue, self.atoms[1]._residue = "H", "H"

        def func(a, b, c=20):
            return self.atoms

        self.func = atom_query(func)
Esempio n. 17
0
 def test_can_make_atom_copy(self):
     atom = Atom("he", 2, 3, 5, 10, "H1", 0.5, 0.4)
     copy = atom.copy()
     self.assertIsInstance(atom, Atom)
     self.assertIsNot(atom, copy)
     self.assertEqual(copy._element, "he")
     self.assertEqual(copy._x, 2)
     self.assertEqual(copy._y, 3)
     self.assertEqual(copy._z, 5)
     self.assertEqual(copy._id, 10)
     self.assertEqual(copy._name, "H1")
     self.assertEqual(copy._charge, 0.5)
     self.assertEqual(copy._bfactor, 0.4)
     self.assertEqual(copy._bonds, set())
     self.assertEqual(copy._residue, None)
     self.assertEqual(copy._chain, None)
     self.assertEqual(copy._molecule, None)
     self.assertEqual(copy._model, None)
Esempio n. 18
0
 def test_can_create_atom(self):
     atom = Atom("C")
     self.assertEqual(atom._element, "C")
     self.assertEqual(atom._x, 0)
     self.assertEqual(atom._y, 0)
     self.assertEqual(atom._z, 0)
     self.assertEqual(atom._id, 0)
     self.assertEqual(atom._name, None)
     self.assertEqual(atom._charge, 0)
     self.assertEqual(atom._bfactor, 0)
     self.assertEqual(atom._bonds, set())
     self.assertEqual(atom._residue, None)
     self.assertEqual(atom._chain, None)
     self.assertEqual(atom._molecule, None)
     self.assertEqual(atom._model, None)
     self.assertEqual(atom._complex, None)
Esempio n. 19
0
 def test_atom_repr(self):
     atom = Atom("C", 2, 3, 5, id=15)
     self.assertEqual(str(atom), "<C Atom 15 at (2, 3, 5)>")
Esempio n. 20
0
 def test_atom_bfactor_must_be_number(self):
     with self.assertRaises(TypeError):
         Atom("C", 2, 3, 5, bfactor="20.5")
     Atom("C", 2, 3, 5, bfactor=10)
     Atom("C", 2, 3, 5, bfactor=-3)
Esempio n. 21
0
 def test_can_create_atom_with_bfactor(self):
     atom = Atom("C", 2, 3, 5, bfactor=2.5)
     self.assertEqual(atom._bfactor, 2.5)
Esempio n. 22
0
 def test_atom_charge_must_be_number(self):
     with self.assertRaises(TypeError):
         Atom("C", 2, 3, 5, charge="20.5")
     Atom("C", 2, 3, 5, charge=10)
Esempio n. 23
0
 def test_can_create_atom_with_charge(self):
     atom = Atom("C", 2, 3, 5, charge=-2.5)
     self.assertEqual(atom._charge, -2.5)
Esempio n. 24
0
 def test_atom_name_must_be_str(self):
     with self.assertRaises(TypeError):
         Atom("C", 2, 3, 5, name=20.5)
Esempio n. 25
0
 def test_can_create_atom_with_name(self):
     atom = Atom("C", 2, 3, 5, name="CA")
     self.assertEqual(atom._name, "CA")
Esempio n. 26
0
 def test_id_must_be_integer(self):
     with self.assertRaises(TypeError):
         Atom("C", 2, 3, 5, id=20.5)
Esempio n. 27
0
 def test_atom_with_no_model_has_no_nearby_atoms(self):
     atom = Atom("C", 4, 8, 3)
     self.assertEqual(atom.nearby_atoms(cutoff=1), set())
     self.assertEqual(atom.nearby_atoms(cutoff=100), set())
Esempio n. 28
0
 def test_element_property(self):
     atom = Atom("C", 2, 3, 5)
     self.assertIs(atom._element, atom.element)
Esempio n. 29
0
 def test_can_update_element(self):
     atom = Atom("C", 2, 3, 5)
     atom.element = "N"
     self.assertEqual(atom._element, "N")
Esempio n. 30
0
 def test_bond_with_needs_atom(self):
     atom1 = Atom("C", 2, 3, 5)
     with self.assertRaises(TypeError):
         atom1.bond_with("atom2")