def test_broken(self): lattice=CubicLattice() coords=[[0,0,0], [0,0,1], [0,5,1], [0,5,0]] structure=LatticeStructure(lattice,coords) self.assertTrue(structure.broken_chain())
def test_overlap(self): lattice=CubicLattice() coords=[[0,0,0], [0,0,1], [0,0,0]] structure=LatticeStructure(lattice,coords) structure.make_contact_map() self.assertEqual(0,len(structure.overlap_map)) self.assertEqual(1,structure.num_chains)
def test_free_moves(self): lattice=CubicLattice() coords=[[0,0,0], [0,0,1], [0,1,1], [0,1,0]] structure=LatticeStructure(lattice,coords) structure.make_contact_map() self.assertEqual(4,len(structure.free_moves(0)))
def test_multidomain(self): lattice=CubicLattice() coords=[[0,0,0], [0,0,1], [0,0,2], [0,0,3], [0,1,3], [0,1,2], [0,1,1], [0,1,0]] structure=LatticeStructure(lattice,coords, chain_list=[4,4]) structure.make_contact_map() self.assertEqual(4,len(structure.contact_map)) self.assertEqual(0,len(structure.overlap_map)) self.assertFalse(structure.broken_chain()) self.assertEqual(2,structure.num_chains) self.assertEqual(1,structure.coordination_no[0]) self.assertEqual(1,structure.coordination_no[1])
def to_lattice(structure, lattice): '''Fit an OffLatticeStrucure to a lattice. This only performs a quick fit and is intended to generate the starting point for the pdb2lattice optimiser.''' unit_coords = structure.coords / lattice.angstrom unit_coords -= unit_coords[0] lattice_structure = LatticeStructure(lattice, np.zeros((structure.natoms,3),dtype=int), chainID = structure.chainID) for i in range(1,structure.natoms): next_move = lattice_structure.free_moves(i-1) my_move = closest_move(next_move,unit_coords[i]) lattice_structure.coords[i] = my_move lattice_structure.make_contact_map() lattice_structure.off_latt_coords = unit_coords return lattice_structure