def setUp(self): self.nt1 = Component(atoms=[ Atom(x=0, y=0, z=1, name='C1'), Atom(x=0, y=0, z=0, name='C2'), Atom(x=1, y=0, z=1, name='N'), ], sequence='A', model=1, chain='A', number=1, polymeric=True) self.nt2 = Component(atoms=[ Atom(x=5, y=5, z=5, name='C1'), Atom(x=5, y=5, z=5, name='C2'), Atom(x=5, y=5, z=5, name='N'), ], sequence='U', model=1, chain='A', number=2, polymeric=True) self.nt3 = Component(atoms=[ Atom(x=-5, y=-5, z=-5, name='C1'), Atom(x=-5, y=-5, z=-5, name='C2'), Atom(x=-5, y=-5, z=-5, name='N'), ], sequence='C', model=1, chain='A', number=3, polymeric=True) self.nt4 = Component(atoms=[ Atom(x=0, y=0, z=3, name='C1'), Atom(x=0, y=0, z=3, name='C2'), Atom(x=0, y=0, z=3, name='N'), ], sequence='U', model=1, chain='A', number=4, polymeric=True) self.nt5 = Component(atoms=[ Atom(x=0, y=0, z=8, name='C1'), Atom(x=0, y=0, z=8, name='C2'), Atom(x=0, y=0, z=3, name='N'), ], sequence='G', model=1, chain='A', number=5, polymeric=True) structure = Structure([self.nt1, self.nt2, self.nt3, self.nt4, self.nt5], pdb='0000', model='1') self.pairs = Pairs(structure)
class TransformTest(ut.TestCase): def setUp(self): atoms = [ Atom(name='N9', x=3.0, y=3.0, z=3.0), Atom(name='C4', x=2.0, y=2.0, z=2.0), Atom(name='N3', x=1.0, y=1.0, z=1.0), ] self.residue = Component(atoms, type='rna', pdb='1GID', model=1, chain='A', sequence='C', number=50, symmetry='6_555') def test_can_transform_atoms(self): trans = np.array([[1.0, 0.0, 0.0, 0.0], [0.0, -1.0, 0.0, 97.240], [0.0, 0.0, -1.0, 0.0], [0.0, 0.0, 0.0, 1.0]]) residue = self.residue.transform(trans) val = list(list(residue.atoms())[-1].coordinates()) ans = [1.0, 96.240, -1.0] self.assertEquals(ans, val) def test_preserves_unit_id(self): trans = np.array([[1.0, 0.0, 0.0, 0.0], [0.0, -1.0, 0.0, 97.240], [0.0, 0.0, -1.0, 0.0], [0.0, 0.0, 0.0, 1.0]]) residue = self.residue.transform(trans) val = residue.unit_id() ans = "1GID|1|A|C|50||||6_555" self.assertEquals(ans, val)
class AtomsWithin(ut.TestCase): def setUp(self): self.component1 = Component([ Atom(name='N9', x=3.0, y=3.0, z=3.0), Atom(name='C4', x=2.0, y=2.0, z=2.0), Atom(name='N3', x=1.0, y=1.0, z=1.0), Atom(name='C3', x=0.0, y=0.0, z=0.0), ]) self.component2 = Component([ Atom(name='N1', x=0.0, y=-1.0, z=0.0), Atom(name='N3', x=-10.0, y=0.0, z=-1.0), Atom(name='C2', x=-2.0, y=0.0, z=-3.0) ]) def test_knows_if_an_atom_is_within(self): val = self.component1.atoms_within(self.component2, cutoff=1.0) self.assertTrue(val) def test_works_with_negative_cutoff(self): val = self.component1.atoms_within(self.component2, cutoff=-1.0) self.assertTrue(val) def test_knows_if_no_atoms_within_cutoff(self): val = self.component1.atoms_within(self.component2, cutoff=0.5) self.assertFalse(val) def test_knows_if_no_atoms_within_negative_cutoff(self): val = self.component1.atoms_within(self.component2, cutoff=-0.5) self.assertFalse(val) def test_can_use_given_list_for_first_atoms(self): val = self.component1.atoms_within(self.component2, using=['C3', 'N3'], cutoff=1.0) self.assertTrue(val) def test_knows_if_with_given_list_nothing_is_within(self): val = self.component1.atoms_within(self.component2, using=['C4', 'N3'], cutoff=1.0) self.assertFalse(val) def test_can_use_to_list_to_detect_near(self): val = self.component1.atoms_within(self.component2, to=['N1', 'N3'], cutoff=1.0) self.assertTrue(val) def test_can_use_to_list_to_detect_not_near(self): val = self.component1.atoms_within(self.component2, to=['C2', 'N3'], cutoff=1.0) self.assertFalse(val) def test_can_use_both_to_detect_near(self): val = self.component1.atoms_within(self.component2, to=['N1', 'N3'], using=['C3', 'N3'], cutoff=1.0) self.assertTrue(val) def test_can_use_both_to_detect_not_near(self): val = self.component1.atoms_within(self.component2, to=['N1', 'N3'], using=['C4', 'N3'], cutoff=1.0) self.assertFalse(val)
def setUp(self): self.atoms = [ Atom(name='N9', x=3.0, y=3.0, z=3.0), Atom(name='C4', x=2.0, y=2.0, z=2.0), Atom(name='N3', x=1.0, y=1.0, z=1.0), Atom(name='C3', x=0.0, y=0.0, z=0.0), ] self.component = Component(self.atoms)
def setUp(self): atoms = [ Atom(name='N9', x=3.0, y=3.0, z=3.0), Atom(name='C4', x=2.0, y=2.0, z=2.0), Atom(name='N3', x=1.0, y=1.0, z=1.0), ] self.residue = Component(atoms, type='rna', pdb='1GID', model=1, chain='A', sequence='C', number=50, symmetry='6_555')
def standard_component(self, seq): atoms = [] for name, coord in defs.RNAbasecoordinates[seq].items(): x, y, z = coord atoms.append(Atom(x=x, y=y, z=z, name=name)) component = Component(atoms, sequence=seq) component.infer_hydrogens() assert_array_almost_equal(component.centers['base'], [0, 0, 0]) return component
def setUp(self): self.component1 = Component([ Atom(name='N9', x=3.0, y=3.0, z=3.0), Atom(name='C4', x=2.0, y=2.0, z=2.0), Atom(name='N3', x=1.0, y=1.0, z=1.0), Atom(name='C3', x=0.0, y=0.0, z=0.0), ]) self.component2 = Component([ Atom(name='N1', x=0.0, y=-1.0, z=0.0), Atom(name='N3', x=-10.0, y=0.0, z=-1.0), Atom(name='C2', x=-2.0, y=0.0, z=-3.0) ])
def setUp(self): self.atoms = [ Atom(type='C', name='a1', polymeric='A', component_number=3, x=0.0, y=0.0, z=0.0), Atom(type='C', name='a2', polymeric='B', component_number=2, x=0.0, y=0.0, z=0.0), Atom(type='N', name='b1', polymeric='C', component_number=1, x=0.0, y=0.0, z=0.0), Atom(type='N', name='c2', polymeric='C', component_number=0, x=0.0, y=0.0, z=0.0) ] self.component = Component(self.atoms, type='rna', pdb='1GID', model=1, chain='A', sequence='C', number=50, symmetry='6_555')
def setUp(self): self.atoms = [ Atom(type='C', name='a1', polymeric='A', x=0.0, y=0.0, z=0.0), Atom(type='C', name='a2', polymeric='B', x=0.0, y=0.0, z=0.0), Atom(type='N', name='b1', polymeric='C', x=0.0, y=0.0, z=0.0), Atom(type='N', name='c2', polymeric='C', x=0.0, y=0.0, z=0.0) ] self.component = Component(self.atoms, type='rna', pdb='1GID', model=1, chain='A', sequence='C', symmetry='6_555') self.sub = self.component.select(name=['a1', 'a2'])
def __residues__(self, pdb): mapping = it.groupby( sorted(self.__atoms__(pdb), key=lambda a: a.component_unit_id()), lambda a: a.component_unit_id()) for comp_id, atoms in mapping: atoms = list(atoms) first = atoms[0] type = self._chem.get(first.component_id, {}) type = type.get('type', None) alt_id = first.alt_id if alt_id == '.': alt_id = None yield Component(atoms, pdb=first.pdb, model=first.model, type=type, alt_id=alt_id, chain=first.chain, symmetry=first.symmetry, sequence=first.component_id, number=first.component_number, index=first.component_index, insertion_code=first.insertion_code, polymeric=first.polymeric)
def __residues__(self, pdb): key = op.attrgetter( 'pdb', 'model', 'chain', 'component_id', 'component_number', 'insertion_code', 'symmetry', ) mapping = it.groupby(sorted(self.__atoms__(pdb), key=key), key) for comp_id, all_atoms in mapping: for atoms in self.__group_alt_atoms__(list(all_atoms)): first = atoms[0] type = self._chem.get(first.component_id, {}) type = type.get('type', None) alt_id = first.alt_id if alt_id == '.': alt_id = None yield Component( atoms, pdb=first.pdb, model=first.model, type=type, alt_id=alt_id, chain=first.chain, symmetry=first.symmetry, sequence=first.component_id, number=first.component_number, index=first.component_index, insertion_code=first.insertion_code, polymeric=first.polymeric, )
def setUp(self): atoms = [ Atom(name='N9', x=3.0, y=3.0, z=3.0), Atom(name='C4', x=2.0, y=2.0, z=2.0), Atom(name='N3', x=1.0, y=1.0, z=1.0), ] self.residue = Component(atoms, sequence='A')
class SubComponentTest(ut.TestCase): def setUp(self): self.atoms = [ Atom(type='C', name='a1', polymeric='A', x=0.0, y=0.0, z=0.0), Atom(type='C', name='a2', polymeric='B', x=0.0, y=0.0, z=0.0), Atom(type='N', name='b1', polymeric='C', x=0.0, y=0.0, z=0.0), Atom(type='N', name='c2', polymeric='C', x=0.0, y=0.0, z=0.0) ] self.component = Component(self.atoms, type='rna', pdb='1GID', model=1, chain='A', sequence='C', symmetry='6_555') self.sub = self.component.select(name=['a1', 'a2']) def test_can_create_new_component_with_same_data(self): val = self.sub.symmetry ans = '6_555' self.assertEquals(ans, val) def test_can_create_new_component_with_corrent_atoms(self): val = list(self.sub.atoms()) ans = self.atoms[0:2] self.assertEquals(ans, val)
class AtomTest(ut.TestCase): def setUp(self): self.atoms = [ Atom(name='N9', x=3.0, y=3.0, z=3.0), Atom(name='C4', x=2.0, y=2.0, z=2.0), Atom(name='N3', x=1.0, y=1.0, z=1.0), Atom(name='C3', x=0.0, y=0.0, z=0.0), ] self.component = Component(self.atoms) def test_it_can_get_atoms_by_name(self): val = list(self.component.atoms(name=['N3', 'C4'])) ans = [self.atoms[1], self.atoms[2]] self.assertEquals(ans, val) def test_it_can_get_atoms_by_defined_names(self): self.component.centers.define('example', ['N9', 'C3']) val = list(self.component.atoms(name='example')) ans = [self.atoms[0], self.atoms[-1]] self.assertEquals(ans, val)
class BasicTest(ut.TestCase): def setUp(self): self.atoms = [ Atom(type='C', name='a1', polymeric='A', component_number=3, x=0.0, y=0.0, z=0.0), Atom(type='C', name='a2', polymeric='B', component_number=2, x=0.0, y=0.0, z=0.0), Atom(type='N', name='b1', polymeric='C', component_number=1, x=0.0, y=0.0, z=0.0), Atom(type='N', name='c2', polymeric='C', component_number=0, x=0.0, y=0.0, z=0.0) ] self.component = Component(self.atoms, type='rna', pdb='1GID', model=1, chain='A', sequence='C', number=50, symmetry='6_555') def test_has_item_access(self): val = self.component.type ans = 'rna' self.assertEqual(val, ans) def test_length_is_number_atoms(self): val = len(self.component) ans = 4 self.assertEqual(val, ans) def test_computes_unit_id(self): val = self.component.unit_id() ans = "1GID|1|A|C|50||||6_555" self.assertEquals(val, ans) def test_can_get_filtered_atoms(self): val = list(self.component.atoms(type='C')) ans = self.atoms[0:2] self.assertEquals(val, ans) def test_can_filter_using_a_list(self): val = list(self.component.atoms(polymeric=['A', 'C'])) ans = [self.atoms[0], self.atoms[2], self.atoms[3]] self.assertEquals(val, ans) def test_can_filter_using_a_function(self): val = list(self.component.atoms(polymeric=lambda a: a == 'C')) ans = self.atoms[2:4] self.assertEquals(val, ans) def test_can_filter_by_several_attributes(self): val = list(self.component.atoms(type='C', polymeric='B')) ans = [self.atoms[1]] self.assertEquals(val, ans) def test_can_check_is_complete(self): val = self.component.is_complete(['a1', 'a2', 'b1']) self.assertTrue(val) def test_can_check_is_not_complete(self): val = self.component.is_complete(['a1', 'a2', 'g3']) self.assertFalse(val) def test_can_check_is_complete_using_custom_key(self): val = self.component.is_complete([1, 2], key='component_number') self.assertTrue(val) def test_can_check_is_not_complete_using_custom_key(self): val = self.component.is_complete([1, 2, 10], key='component_number') self.assertFalse(val) def test_knows_is_equal_to_itself(self): self.assertTrue(self.component == self.component) def test_knows_is_equal_to_equivelant_component(self): self.assertTrue(self.component == self.component.select())
def test_gives_none_for_unknown_unit(self): val = self.loader.type(Component([], sequence='GTP')) ans = None self.assertEqual(ans, val)
from fr3d.data import Atom from fr3d.data import Component nt10_0 = Component([Atom(type='N', name='N1',x=19.679762,y=146.510834,z=106.455235), Atom(type='C', name='C2',x=19.459715,y=146.692932,z=107.816836), Atom(type='O', name='O2',x=19.354777,y=147.785831,z=108.333165), Atom(type='N', name='N3',x=19.375964,y=145.491465,z=108.503069), Atom(type='C', name='C4',x=19.482438,y=144.177244,z=108.006327), Atom(type='O', name='O4',x=19.384232,y=143.219519,z=108.751357), Atom(type='C', name='C6',x=19.800699,y=145.278872,z=105.856545), Atom(type='C', name='C5',x=19.712414,y=144.129302,z=106.564466), Atom(type='H', name='H5',x=19.808116,y=143.162711,z=106.089600), Atom(type='H', name='H1',x=19.747568,y=147.360820,z=105.915883), Atom(type='H', name='H3',x=19.215883,y=145.577268,z=109.499783), Atom(type='H', name='H6',x=19.970458,y=145.295294,z=104.785373), Atom(type='C', name='C1*',x=19.841000,y=147.761000,z=105.646000), Atom(type='C', name='C2*',x=20.264000,y=147.625000,z=104.181000), Atom(type='O', name='O2*',x=21.328000,y=148.530000,z=104.003000), Atom(type='C', name='C3*',x=18.978000,y=148.021000,z=103.445000), Atom(type='O', name='O3*',x=19.159000,y=148.571000,z=102.125000), Atom(type='C', name='C4*',x=18.405000,y=149.086000,z=104.371000), Atom(type='O', name='O4*',x=18.630000,y=148.501000,z=105.679000), Atom(type='C', name='C5*',x=16.942000,y=149.450000,z=104.201000), Atom(type='O', name='O5*',x=16.030000,y=148.355000,z=104.290000), Atom(type='P', name='P',x=19.695000,y=146.523000,z=106.436000), Atom(type='O', name='O1P',x=19.695000,y=146.523000,z=106.436000), Atom(type='O', name='O2P',x=19.695000,y=146.523000,z=106.436000)], type='rna', pdb='1S72', sequence='U', chain='0', number='10') nt11_0 = Component([Atom(type='N', name='N9',x=24.987289,y=147.803631,z=104.303074), Atom(type='C', name='C4',x=26.110439,y=147.121416,z=104.714354), Atom(type='N', name='N3',x=27.347788,y=147.594850,z=104.920430),
nt10_0 = Component([ Atom(type='N', name='N1', x=19.679762, y=146.510834, z=106.455235), Atom(type='C', name='C2', x=19.459715, y=146.692932, z=107.816836), Atom(type='O', name='O2', x=19.354777, y=147.785831, z=108.333165), Atom(type='N', name='N3', x=19.375964, y=145.491465, z=108.503069), Atom(type='C', name='C4', x=19.482438, y=144.177244, z=108.006327), Atom(type='O', name='O4', x=19.384232, y=143.219519, z=108.751357), Atom(type='C', name='C6', x=19.800699, y=145.278872, z=105.856545), Atom(type='C', name='C5', x=19.712414, y=144.129302, z=106.564466), Atom(type='H', name='H5', x=19.808116, y=143.162711, z=106.089600), Atom(type='H', name='H1', x=19.747568, y=147.360820, z=105.915883), Atom(type='H', name='H3', x=19.215883, y=145.577268, z=109.499783), Atom(type='H', name='H6', x=19.970458, y=145.295294, z=104.785373), Atom(type='C', name='C1*', x=19.841000, y=147.761000, z=105.646000), Atom(type='C', name='C2*', x=20.264000, y=147.625000, z=104.181000), Atom(type='O', name='O2*', x=21.328000, y=148.530000, z=104.003000), Atom(type='C', name='C3*', x=18.978000, y=148.021000, z=103.445000), Atom(type='O', name='O3*', x=19.159000, y=148.571000, z=102.125000), Atom(type='C', name='C4*', x=18.405000, y=149.086000, z=104.371000), Atom(type='O', name='O4*', x=18.630000, y=148.501000, z=105.679000), Atom(type='C', name='C5*', x=16.942000, y=149.450000, z=104.201000), Atom(type='O', name='O5*', x=16.030000, y=148.355000, z=104.290000), Atom(type='P', name='P', x=19.695000, y=146.523000, z=106.436000), Atom(type='O', name='O1P', x=19.695000, y=146.523000, z=106.436000), Atom(type='O', name='O2P', x=19.695000, y=146.523000, z=106.436000) ], type='rna', pdb='1S72', sequence='U', chain='0', number='10')
def setUp(self): some_atoms = [ Atom(insertion_code='?', component_id='G', name='P', symmetry='1_555', component_number='118', chain='B', y=54.015, x=47.242, model='1', z=51.393, pdb='1GID'), Atom(insertion_code='?', component_id='G', name='OP1', symmetry='1_555', component_number='118', chain='B', y=53.619, x=45.943, model='1', z=50.812, pdb='1GID'), Atom(insertion_code='?', component_id='G', name='OP2', symmetry='1_555', component_number='118', chain='B', y=55.016, x=48.096, model='1', z=50.668, pdb='1GID'), Atom(insertion_code='?', component_id='G', name="O5'", symmetry='1_555', component_number='118', chain='B', y=54.52, x=47.009, model='1', z=52.887, pdb='1GID'), Atom(insertion_code='?', component_id='G', name="C5'", symmetry='1_555', component_number='118', chain='B', y=53.848, x=46.12, model='1', z=53.764, pdb='1GID'), Atom(insertion_code='?', component_id='G', name="C4'", symmetry='1_555', component_number='118', chain='B', y=54.529, x=46.123, model='1', z=55.11, pdb='1GID'), Atom(insertion_code='?', component_id='G', name="O4'", symmetry='1_555', component_number='118', chain='B', y=54.338, x=47.426, model='1', z=55.73, pdb='1GID'), Atom(insertion_code='?', component_id='G', name="C3'", symmetry='1_555', component_number='118', chain='B', y=56.037, x=45.94, model='1', z=55.051, pdb='1GID'), Atom(insertion_code='?', component_id='G', name="O3'", symmetry='1_555', component_number='118', chain='B', y=56.374, x=44.553, model='1', z=54.993, pdb='1GID'), Atom(insertion_code='?', component_id='G', name="C2'", symmetry='1_555', component_number='118', chain='B', y=56.495, x=46.647, model='1', z=56.326, pdb='1GID'), Atom(insertion_code='?', component_id='G', name="O2'", symmetry='1_555', component_number='118', chain='B', y=56.349, x=45.878, model='1', z=57.494, pdb='1GID'), Atom(insertion_code='?', component_id='G', name="C1'", symmetry='1_555', component_number='118', chain='B', y=55.528, x=47.827, model='1', z=56.387, pdb='1GID'), Atom(insertion_code='?', component_id='G', name='N9', symmetry='1_555', component_number='118', chain='B', y=56.026, x=49.033, model='1', z=55.738, pdb='1GID'), Atom(insertion_code='?', component_id='G', name='C8', symmetry='1_555', component_number='118', chain='B', y=55.785, x=49.442, model='1', z=54.455, pdb='1GID'), Atom(insertion_code='?', component_id='G', name='N7', symmetry='1_555', component_number='118', chain='B', y=56.371, x=50.566, model='1', z=54.161, pdb='1GID'), Atom(insertion_code='?', component_id='G', name='C5', symmetry='1_555', component_number='118', chain='B', y=57.031, x=50.913, model='1', z=55.323, pdb='1GID'), Atom(insertion_code='?', component_id='G', name='C6', symmetry='1_555', component_number='118', chain='B', y=57.827, x=52.019, model='1', z=55.608, pdb='1GID'), Atom(insertion_code='?', component_id='G', name='O6', symmetry='1_555', component_number='118', chain='B', y=58.131, x=52.969, model='1', z=54.873, pdb='1GID'), Atom(insertion_code='?', component_id='G', name='N1', symmetry='1_555', component_number='118', chain='B', y=58.301, x=51.975, model='1', z=56.907, pdb='1GID'), Atom(insertion_code='?', component_id='G', name='C2', symmetry='1_555', component_number='118', chain='B', y=58.033, x=50.991, model='1', z=57.814, pdb='1GID'), Atom(insertion_code='?', component_id='G', name='N2', symmetry='1_555', component_number='118', chain='B', y=58.557, x=51.138, model='1', z=59.032, pdb='1GID'), Atom(insertion_code='?', component_id='G', name='N3', symmetry='1_555', component_number='118', chain='B', y=57.299, x=49.949, model='1', z=57.556, pdb='1GID'), Atom(insertion_code='?', component_id='G', name='C4', symmetry='1_555', component_number='118', chain='B', y=56.828, x=49.974, model='1', z=56.301, pdb='1GID') ] self.res = Component(some_atoms, type='rna', pdb='1GID', model=1, chain='A', sequence='G', number=50, symmetry='6_555')
def test_can_determine_is_water(self): component = Component([], sequence='hoh') self.assertEquals('water', units.component_type(component))
class InferHydrogenTest(ut.TestCase): def setUp(self): some_atoms = [ Atom(insertion_code='?', component_id='G', name='P', symmetry='1_555', component_number='118', chain='B', y=54.015, x=47.242, model='1', z=51.393, pdb='1GID'), Atom(insertion_code='?', component_id='G', name='OP1', symmetry='1_555', component_number='118', chain='B', y=53.619, x=45.943, model='1', z=50.812, pdb='1GID'), Atom(insertion_code='?', component_id='G', name='OP2', symmetry='1_555', component_number='118', chain='B', y=55.016, x=48.096, model='1', z=50.668, pdb='1GID'), Atom(insertion_code='?', component_id='G', name="O5'", symmetry='1_555', component_number='118', chain='B', y=54.52, x=47.009, model='1', z=52.887, pdb='1GID'), Atom(insertion_code='?', component_id='G', name="C5'", symmetry='1_555', component_number='118', chain='B', y=53.848, x=46.12, model='1', z=53.764, pdb='1GID'), Atom(insertion_code='?', component_id='G', name="C4'", symmetry='1_555', component_number='118', chain='B', y=54.529, x=46.123, model='1', z=55.11, pdb='1GID'), Atom(insertion_code='?', component_id='G', name="O4'", symmetry='1_555', component_number='118', chain='B', y=54.338, x=47.426, model='1', z=55.73, pdb='1GID'), Atom(insertion_code='?', component_id='G', name="C3'", symmetry='1_555', component_number='118', chain='B', y=56.037, x=45.94, model='1', z=55.051, pdb='1GID'), Atom(insertion_code='?', component_id='G', name="O3'", symmetry='1_555', component_number='118', chain='B', y=56.374, x=44.553, model='1', z=54.993, pdb='1GID'), Atom(insertion_code='?', component_id='G', name="C2'", symmetry='1_555', component_number='118', chain='B', y=56.495, x=46.647, model='1', z=56.326, pdb='1GID'), Atom(insertion_code='?', component_id='G', name="O2'", symmetry='1_555', component_number='118', chain='B', y=56.349, x=45.878, model='1', z=57.494, pdb='1GID'), Atom(insertion_code='?', component_id='G', name="C1'", symmetry='1_555', component_number='118', chain='B', y=55.528, x=47.827, model='1', z=56.387, pdb='1GID'), Atom(insertion_code='?', component_id='G', name='N9', symmetry='1_555', component_number='118', chain='B', y=56.026, x=49.033, model='1', z=55.738, pdb='1GID'), Atom(insertion_code='?', component_id='G', name='C8', symmetry='1_555', component_number='118', chain='B', y=55.785, x=49.442, model='1', z=54.455, pdb='1GID'), Atom(insertion_code='?', component_id='G', name='N7', symmetry='1_555', component_number='118', chain='B', y=56.371, x=50.566, model='1', z=54.161, pdb='1GID'), Atom(insertion_code='?', component_id='G', name='C5', symmetry='1_555', component_number='118', chain='B', y=57.031, x=50.913, model='1', z=55.323, pdb='1GID'), Atom(insertion_code='?', component_id='G', name='C6', symmetry='1_555', component_number='118', chain='B', y=57.827, x=52.019, model='1', z=55.608, pdb='1GID'), Atom(insertion_code='?', component_id='G', name='O6', symmetry='1_555', component_number='118', chain='B', y=58.131, x=52.969, model='1', z=54.873, pdb='1GID'), Atom(insertion_code='?', component_id='G', name='N1', symmetry='1_555', component_number='118', chain='B', y=58.301, x=51.975, model='1', z=56.907, pdb='1GID'), Atom(insertion_code='?', component_id='G', name='C2', symmetry='1_555', component_number='118', chain='B', y=58.033, x=50.991, model='1', z=57.814, pdb='1GID'), Atom(insertion_code='?', component_id='G', name='N2', symmetry='1_555', component_number='118', chain='B', y=58.557, x=51.138, model='1', z=59.032, pdb='1GID'), Atom(insertion_code='?', component_id='G', name='N3', symmetry='1_555', component_number='118', chain='B', y=57.299, x=49.949, model='1', z=57.556, pdb='1GID'), Atom(insertion_code='?', component_id='G', name='C4', symmetry='1_555', component_number='118', chain='B', y=56.828, x=49.974, model='1', z=56.301, pdb='1GID') ] self.res = Component(some_atoms, type='rna', pdb='1GID', model=1, chain='A', sequence='G', number=50, symmetry='6_555') def test_has_no_hydrogens_initially(self): atoms = list(self.res.atoms(name=['H1', 'H8', 'H9', '1H2', '2H2'])) self.assertEqual(len(atoms), 0) def test_hydrogen_infers_on_residue(self): self.res.infer_hydrogens() atoms = list(self.res.atoms(name=['H1', 'H8', 'H9', '1H2', '2H2'])) self.assertEqual(len(atoms), 5) def test_infers_correct_location(self): raise SkipTest()
def test_gives_none_otherwise(self): component = Component([], sequence='gtp') self.assertEquals(None, units.component_type(component))
def test_knows_if_unit_is_water(self): val = self.loader.type(Component([], sequence='HOH')) ans = 'water' self.assertEqual(ans, val)
nt77_9 = Component([ Atom(type='N', name='N9', x=43.063866, y=60.593299, z=122.948693), Atom(type='C', name='C4', x=42.888197, y=59.952482, z=121.742655), Atom(type='N', name='N3', x=41.743000, y=59.665137, z=121.107361), Atom(type='N', name='N1', x=43.174443, y=58.683103, z=119.409845), Atom(type='C', name='C6', x=44.294465, y=58.989433, z=120.078177), Atom(type='N', name='N6', x=45.492460, y=58.648576, z=119.551113), Atom(type='C', name='C8', x=44.415702, y=60.651476, z=123.176564), Atom(type='C', name='C5', x=44.188911, y=59.660647, z=121.315765), Atom(type='C', name='C2', x=41.988409, y=59.033005, z=119.954772), Atom(type='N', name='N7', x=45.139547, y=60.098841, z=122.214056), Atom(type='H', name='H2', x=41.115198, y=58.758914, z=119.368203), Atom(type='H', name='H8', x=44.822196, y=61.111613, z=124.067401), Atom(type='H', name='H9', x=42.326540, y=60.946934, z=123.540317), Atom(type='1', name='1H6', x=45.517242, y=58.171343, z=118.666736), Atom(type='2', name='2H6', x=46.340025, y=58.872608, z=120.042414), Atom(type='C', name='C1*', x=41.945000, y=61.063000, z=123.795000), Atom(type='C', name='C2*', x=41.342000, y=59.980000, z=124.691000), Atom(type='O', name='O2*', x=40.486000, y=59.109000, z=123.980000), Atom(type='C', name='C3*', x=40.625000, y=60.844000, z=125.716000), Atom(type='O', name='O3*', x=39.435000, y=61.360000, z=125.157000), Atom(type='C', name='C4*', x=41.611000, y=61.984000, z=125.929000), Atom(type='O', name='O4*', x=42.402000, y=62.056000, z=124.698000), Atom(type='C', name='C5*', x=42.487000, y=61.728000, z=127.126000), Atom(type='O', name='O5*', x=43.480000, y=62.734000, z=127.249000), Atom(type='P', name='P', x=45.014000, y=62.337000, z=127.402000), Atom(type='O', name='O1P', x=45.546000, y=62.055000, z=126.041000), Atom(type='O', name='O2P', x=45.658000, y=63.379000, z=128.241000) ], type='rna', pdb='1S72', sequence='A', chain='9', number='77')
def test_can_determine_is_rna(self): component = Component([], sequence='A') self.assertEquals('rna', units.component_type(component))
# -*- coding: utf-8 -*- """ Created on Wed Nov 20 12:42:45 2013 @author: zirbel """ from fr3d.data import Atom from fr3d.data import Component from fr3d.data import Structure # nucleotides from 1S72 corresponding to sarcin-ricin motifs nt77_9 = Component([Atom(type='N', name='N9',x=43.063866,y=60.593299,z=122.948693),Atom(type='C', name='C4',x=42.888197,y=59.952482,z=121.742655),Atom(type='N', name='N3',x=41.743000,y=59.665137,z=121.107361),Atom(type='N', name='N1',x=43.174443,y=58.683103,z=119.409845),Atom(type='C', name='C6',x=44.294465,y=58.989433,z=120.078177),Atom(type='N', name='N6',x=45.492460,y=58.648576,z=119.551113),Atom(type='C', name='C8',x=44.415702,y=60.651476,z=123.176564),Atom(type='C', name='C5',x=44.188911,y=59.660647,z=121.315765),Atom(type='C', name='C2',x=41.988409,y=59.033005,z=119.954772),Atom(type='N', name='N7',x=45.139547,y=60.098841,z=122.214056),Atom(type='H', name='H2',x=41.115198,y=58.758914,z=119.368203),Atom(type='H', name='H8',x=44.822196,y=61.111613,z=124.067401),Atom(type='H', name='H9',x=42.326540,y=60.946934,z=123.540317),Atom(type='1', name='1H6',x=45.517242,y=58.171343,z=118.666736),Atom(type='2', name='2H6',x=46.340025,y=58.872608,z=120.042414),Atom(type='C', name='C1*',x=41.945000,y=61.063000,z=123.795000),Atom(type='C', name='C2*',x=41.342000,y=59.980000,z=124.691000),Atom(type='O', name='O2*',x=40.486000,y=59.109000,z=123.980000),Atom(type='C', name='C3*',x=40.625000,y=60.844000,z=125.716000),Atom(type='O', name='O3*',x=39.435000,y=61.360000,z=125.157000),Atom(type='C', name='C4*',x=41.611000,y=61.984000,z=125.929000),Atom(type='O', name='O4*',x=42.402000,y=62.056000,z=124.698000),Atom(type='C', name='C5*',x=42.487000,y=61.728000,z=127.126000),Atom(type='O', name='O5*',x=43.480000,y=62.734000,z=127.249000),Atom(type='P', name='P',x=45.014000,y=62.337000,z=127.402000),Atom(type='O', name='O1P',x=45.546000,y=62.055000,z=126.041000),Atom(type='O', name='O2P',x=45.658000,y=63.379000,z=128.241000)],type='rna', pdb='1S72', sequence='A', chain='9', number='77', polymeric=True) nt78_9 = Component([Atom(type='N', name='N9',x=37.026639,y=62.585170,z=119.953868),Atom(type='C', name='C4',x=37.748501,y=61.918966,z=119.000294),Atom(type='N', name='N3',x=39.108341,y=61.874399,z=118.926277),Atom(type='N', name='N1',x=38.661507,y=60.535032,z=117.023968),Atom(type='C', name='C6',x=37.228669,y=60.545058,z=117.049403),Atom(type='O', name='O6',x=36.603818,y=59.943544,z=116.198377),Atom(type='C', name='C8',x=35.696231,y=62.377912,z=119.669330),Atom(type='C', name='C5',x=36.786713,y=61.333723,z=118.175046),Atom(type='C', name='C2',x=39.510364,y=61.158777,z=117.904881),Atom(type='N', name='N7',x=35.509556,y=61.624711,z=118.599051),Atom(type='N', name='N2',x=40.846662,y=61.007708,z=117.679505),Atom(type='H', name='H1',x=39.042235,y=59.996741,z=116.255061),Atom(type='H', name='H8',x=34.910315,y=62.802023,z=120.278928),Atom(type='H', name='H9',x=37.419429,y=63.121341,z=120.713726),Atom(type='1', name='1H2',x=41.477116,y=61.459612,z=118.317608),Atom(type='2', name='2H2',x=41.211055,y=60.471826,z=116.914156),Atom(type='C', name='C1*',x=37.601000,y=63.341000,z=121.059000),Atom(type='C', name='C2*',x=36.849000,y=64.553000,z=121.595000),Atom(type='O', name='O2*',x=36.888000,y=65.654000,z=120.708000),Atom(type='C', name='C3*',x=37.600000,y=64.751000,z=122.907000),Atom(type='O', name='O3*',x=38.918000,y=65.271000,z=122.675000),Atom(type='C', name='C4*',x=37.772000,y=63.309000,z=123.388000),Atom(type='O', name='O4*',x=37.775000,y=62.495000,z=122.177000),Atom(type='C', name='C5*',x=36.719000,y=62.808000,z=124.362000),Atom(type='O', name='O5*',x=36.974000,y=61.430000,z=124.724000),Atom(type='P', name='P',x=38.030000,y=61.059000,z=125.865000),Atom(type='O', name='O1P',x=37.913000,y=62.028000,z=126.993000),Atom(type='O', name='O2P',x=37.951000,y=59.593000,z=126.136000)],type='rna', pdb='1S72', sequence='G', chain='9', number='78', polymeric=True) nt79_9 = Component([Atom(type='N', name='N1',x=43.327481,y=64.365450,z=122.603540),Atom(type='C', name='C2',x=44.471989,y=63.873809,z=121.983920),Atom(type='O', name='O2',x=45.592434,y=64.066304,z=122.407694),Atom(type='N', name='N3',x=44.181752,y=63.147394,z=120.839569),Atom(type='C', name='C4',x=42.927629,y=62.864946,z=120.262798),Atom(type='O', name='O4',x=42.844960,y=62.204601,z=119.243455),Atom(type='C', name='C6',x=42.051956,y=64.155303,z=122.134860),Atom(type='C', name='C5',x=41.812800,y=63.439191,z=121.012164),Atom(type='H', name='H5',x=40.808173,y=63.276420,z=120.647219),Atom(type='H', name='H1',x=43.492358,y=64.901476,z=123.442269),Atom(type='H', name='H3',x=44.987706,y=62.769927,z=120.355438),Atom(type='H', name='H6',x=41.258629,y=64.601175,z=122.725052),Atom(type='C', name='C1*',x=43.535000,y=65.092000,z=123.893000),Atom(type='C', name='C2*',x=44.324000,y=66.397000,z=123.754000),Atom(type='O', name='O2*',x=45.165000,y=66.565000,z=124.876000),Atom(type='C', name='C3*',x=43.200000,y=67.420000,z=123.675000),Atom(type='O', name='O3*',x=43.584000,y=68.721000,z=124.097000),Atom(type='C', name='C4*',x=42.151000,y=66.846000,z=124.607000),Atom(type='O', name='O4*',x=42.269000,y=65.412000,z=124.445000),Atom(type='C', name='C5*',x=40.753000,y=67.272000,z=124.258000),Atom(type='O', name='O5*',x=40.553000,y=67.155000,z=122.836000),Atom(type='P', name='P',x=39.128000,y=66.803000,z=122.229000),Atom(type='O', name='O1P',x=38.110000,y=67.665000,z=122.894000),Atom(type='O', name='O2P',x=39.253000,y=66.826000,z=120.752000)],type='rna', pdb='1S72', sequence='U', chain='9', number='79', polymeric=True) nt80_9 = Component([Atom(type='N', name='N9',x=46.358129,y=66.556809,z=119.184554),Atom(type='C', name='C4',x=46.392578,y=66.012738,z=117.920104),Atom(type='N', name='N3',x=47.454038,y=65.804784,z=117.127830),Atom(type='N', name='N1',x=45.838733,y=64.913585,z=115.549370),Atom(type='C', name='C6',x=44.806050,y=65.138684,z=116.372688),Atom(type='N', name='N6',x=43.557660,y=64.805679,z=115.972938),Atom(type='C', name='C8',x=45.044684,y=66.561095,z=119.581564),Atom(type='C', name='C5',x=45.053980,y=65.718340,z=117.635946),Atom(type='C', name='C2',x=47.077338,y=65.253949,z=115.968970),Atom(type='N', name='N7',x=44.215809,y=66.062335,z=118.676036),Atom(type='H', name='H2',x=47.874870,y=65.048187,z=115.259540),Atom(type='H', name='H8',x=44.744960,y=66.942297,z=120.548726),Atom(type='H', name='H9',x=47.157417,y=66.885226,z=119.706097),Atom(type='1', name='1H6',x=43.430686,y=64.395241,z=115.064143),Atom(type='2', name='2H6',x=42.774514,y=64.969343,z=116.581074),Atom(type='C', name='C1*',x=47.534000,y=67.074000,z=119.901000),Atom(type='C', name='C2*',x=48.011000,y=68.426000,z=119.363000),Atom(type='O', name='O2*',x=49.415000,y=68.503000,z=119.493000),Atom(type='C', name='C3*',x=47.292000,y=69.388000,z=120.297000),Atom(type='O', name='O3*',x=47.921000,y=70.659000,z=120.354000),Atom(type='C', name='C4*',x=47.388000,y=68.656000,z=121.623000),Atom(type='O', name='O4*',x=47.179000,y=67.267000,z=121.262000),Atom(type='C', name='C5*',x=46.409000,y=69.080000,z=122.691000),Atom(type='O', name='O5*',x=45.083000,y=69.207000,z=122.141000),Atom(type='P', name='P',x=43.901000,y=69.849000,z=123.002000),Atom(type='O', name='O1P',x=44.423000,y=71.037000,z=123.732000),Atom(type='O', name='O2P',x=42.711000,y=69.991000,z=122.129000)],type='rna', pdb='1S72', sequence='A', chain='9', number='80', polymeric=True) nt102_9 = Component([Atom(type='N', name='N9',x=39.738753,y=63.900917,z=114.833070),Atom(type='C', name='C4',x=39.697975,y=64.439757,z=116.090927),Atom(type='N', name='N3',x=40.783725,y=64.784250,z=116.838657),Atom(type='N', name='N1',x=39.126476,y=65.421170,z=118.407160),Atom(type='C', name='C6',x=37.946967,y=65.078646,z=117.668779),Atom(type='O', name='O6',x=36.850659,y=65.264933,z=118.158586),Atom(type='C', name='C8',x=38.435559,y=63.702857,z=114.437646),Atom(type='C', name='C5',x=38.337664,y=64.537790,z=116.388459),Atom(type='C', name='C2',x=40.430043,y=65.275248,z=118.000903),Atom(type='N', name='N7',x=37.557213,y=64.076226,z=115.352391),Atom(type='N', name='N2',x=41.393964,y=65.673207,z=118.879422),Atom(type='H', name='H1',x=38.925440,y=65.808920,z=119.321033),Atom(type='H', name='H8',x=38.190657,y=63.283071,z=113.471755),Atom(type='H', name='H9',x=40.579710,y=63.696255,z=114.313403),Atom(type='1', name='1H2',x=42.351228,y=65.571121,z=118.592907),Atom(type='2', name='2H2',x=41.181686,y=66.055780,z=119.781800),Atom(type='C', name='C1*',x=40.922000,y=63.600000,z=114.034000),Atom(type='C', name='C2*',x=41.595000,y=62.305000,z=114.491000),Atom(type='O', name='O2*',x=42.975000,y=62.372000,z=114.194000),Atom(type='C', name='C3*',x=40.870000,y=61.292000,z=113.620000),Atom(type='O', name='O3*',x=41.546000,y=60.058000,z=113.480000),Atom(type='C', name='C4*',x=40.813000,y=62.026000,z=112.297000),Atom(type='O', name='O4*',x=40.523000,y=63.396000,z=112.687000),Atom(type='C', name='C5*',x=39.771000,y=61.530000,z=111.333000),Atom(type='O', name='O5*',x=38.493000,y=61.461000,z=111.979000),Atom(type='P', name='P',x=37.196000,y=61.032000,z=111.162000),Atom(type='O', name='O1P',x=37.553000,y=59.865000,z=110.309000),Atom(type='O', name='O2P',x=36.061000,y=60.930000,z=112.127000)],type='rna', pdb='1S72', sequence='G', chain='9', number='102', polymeric=True) nt103_9 = Component([Atom(type='N', name='N9',x=46.654607,y=62.038113,z=116.995565),Atom(type='C', name='C4',x=47.798673,y=62.571539,z=117.545658),Atom(type='N', name='N3',x=49.008829,y=62.712068,z=116.985824),Atom(type='N', name='N1',x=49.650317,y=63.686864,z=119.114965),Atom(type='C', name='C6',x=48.426126,y=63.527721,z=119.635528),Atom(type='N', name='N6',x=48.190421,y=63.930934,z=120.904794),Atom(type='C', name='C8',x=45.677435,y=62.113276,z=117.955908),Atom(type='C', name='C5',x=47.417081,y=62.942204,z=118.840361),Atom(type='C', name='C2',x=49.863676,y=63.277000,z=117.845106),Atom(type='N', name='N7',x=46.091834,y=62.654280,z=119.092290),Atom(type='H', name='H2',x=50.874740,y=63.431323,z=117.476839),Atom(type='H', name='H8',x=44.672665,y=61.756188,z=117.772936),Atom(type='H', name='H9',x=46.568637,y=61.666559,z=116.061069),Atom(type='1', name='1H6',x=48.940712,y=64.342585,z=121.432142),Atom(type='2', name='2H6',x=47.276523,y=63.817177,z=121.307016),Atom(type='C', name='C1*',x=46.604000,y=61.506000,z=115.636000),Atom(type='C', name='C2*',x=47.420000,y=60.210000,z=115.497000),Atom(type='O', name='O2*',x=48.021000,y=60.238000,z=114.211000),Atom(type='C', name='C3*',x=46.308000,y=59.172000,z=115.525000),Atom(type='O', name='O3*',x=46.707000,y=57.965000,z=114.912000),Atom(type='C', name='C4*',x=45.352000,y=59.888000,z=114.628000),Atom(type='O', name='O4*',x=45.267000,y=61.155000,z=115.306000),Atom(type='C', name='C5*',x=44.085000,y=59.219000,z=114.220000),Atom(type='O', name='O5*',x=43.093000,y=59.231000,z=115.230000),Atom(type='P', name='P',x=41.611000,y=59.029000,z=114.713000),Atom(type='O', name='O1P',x=41.562000,y=57.698000,z=114.076000),Atom(type='O', name='O2P',x=40.652000,y=59.381000,z=115.767000)],type='rna', pdb='1S72', sequence='A', chain='9', number='103', polymeric=True) nt104_9 = Component([Atom(type='N', name='N9',x=50.257976,y=59.967220,z=118.786849),Atom(type='C', name='C4',x=50.509303,y=60.469523,z=120.044052),Atom(type='N', name='N3',x=51.660755,y=60.944887,z=120.539861),Atom(type='N', name='N1',x=50.389380,y=61.315763,z=122.574814),Atom(type='C', name='C6',x=49.260072,y=60.832643,z=122.039824),Atom(type='N', name='N6',x=48.135828,y=60.796917,z=122.790803),Atom(type='C', name='C8',x=48.933932,y=59.608286,z=118.757803),Atom(type='C', name='C5',x=49.278867,y=60.374429,z=120.704542),Atom(type='C', name='C2',x=51.500842,y=61.342176,z=121.806694),Atom(type='N', name='N7',x=48.298045,y=59.836156,z=119.897759),Atom(type='H', name='H2',x=52.385707,y=61.744209,z=122.293593),Atom(type='H', name='H8',x=48.480387,y=59.181852,z=117.872927),Atom(type='H', name='H9',x=50.931904,y=59.885702,z=118.039920),Atom(type='1', name='1H6',x=48.171427,y=61.134496,z=123.736986),Atom(type='2', name='2H6',x=47.282210,y=60.436918,z=122.401354),Atom(type='C', name='C1*',x=51.266000,y=59.852000,z=117.725000),Atom(type='C', name='C2*',x=52.159000,y=58.633000,z=117.946000),Atom(type='O', name='O2*',x=53.441000,y=58.888000,z=117.421000),Atom(type='C', name='C3*',x=51.391000,y=57.581000,z=117.166000),Atom(type='O', name='O3*',x=52.135000,y=56.421000,z=116.850000),Atom(type='C', name='C4*',x=50.949000,y=58.354000,z=115.941000),Atom(type='O', name='O4*',x=50.591000,y=59.652000,z=116.488000),Atom(type='C', name='C5*',x=49.757000,y=57.754000,z=115.256000),Atom(type='O', name='O5*',x=48.756000,y=57.442000,z=116.230000),Atom(type='P', name='P',x=47.364000,y=56.816000,z=115.803000),Atom(type='O', name='O1P',x=47.618000,y=55.644000,z=114.924000),Atom(type='O', name='O2P',x=46.549000,y=56.657000,z=117.037000)],type='rna', pdb='1S72', sequence='A', chain='9', number='104', polymeric=True) nt77_9.infer_hydrogens() nt78_9.infer_hydrogens() nt79_9.infer_hydrogens()
def test_knows_if_unit_is_aa(self): val = self.loader.type(Component([], sequence='GLU')) ans = 'aa' self.assertEqual(ans, val)