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
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)

    def test_will_compute_rotation_if_parent_has(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]])
        self.residue.infer_hydrogens()
        assert hasattr(self.residue, 'rotation_matrix')
        residue = self.residue.transform(trans)
        assert hasattr(residue, 'rotation_matrix')

    def test_will_not_compute_rotation_if_parent_has_none(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]])
        assert not hasattr(self.residue, 'rotation_matrix')
        residue = self.residue.transform(trans)
        assert not hasattr(residue, 'rotation_matrix')
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()
nt80_9.infer_hydrogens()
nt102_9.infer_hydrogens()
nt103_9.infer_hydrogens()
nt104_9.infer_hydrogens()

nt212_0 = Component([Atom(type='N', name='N9',x=58.751356,y=92.340716,z=38.943981),Atom(type='C', name='C4',x=59.260008,y=93.619943,z=38.914245),Atom(type='N', name='N3',x=58.991965,y=94.645752,z=39.734921),Atom(type='N', name='N1',x=60.562640,y=95.885002,z=38.359341),Atom(type='C', name='C6',x=60.801480,y=94.834175,z=37.563304),Atom(type='N', name='N6',x=61.672842,y=94.967001,z=36.537508),Atom(type='C', name='C8',x=59.326662,y=91.658121,z=37.901935),Atom(type='C', name='C5',x=60.133993,y=93.617049,z=37.820900),Atom(type='C', name='C2',x=59.688510,y=95.730101,z=39.378142),Atom(type='N', name='N7',x=60.172546,y=92.390142,z=37.191723),Atom(type='H', name='H2',x=59.534790,y=96.615662,z=39.989566),Atom(type='H', name='H8',x=59.091852,y=90.620695,z=37.704032),Atom(type='H', name='H9',x=58.082536,y=91.988529,z=39.612838),Atom(type='1', name='1H6',x=62.124039,y=95.853691,z=36.393669),Atom(type='2', name='2H6',x=61.860749,y=94.186424,z=35.933086),Atom(type='C', name='C1*',x=57.809000,y=91.839000,z=39.948000),Atom(type='C', name='C2*',x=56.346000,y=91.795000,z=39.530000),Atom(type='O', name='O2*',x=55.767000,y=93.072000,z=39.640000),Atom(type='C', name='C3*',x=55.799000,y=90.811000,z=40.557000),Atom(type='O', name='O3*',x=55.745000,y=91.496000,z=41.793000),Atom(type='C', name='C4*',x=56.927000,y=89.785000,z=40.651000),Atom(type='O', name='O4*',x=58.135000,y=90.501000,z=40.263000),Atom(type='C', name='C5*',x=56.782000,y=88.564000,z=39.780000),Atom(type='O', name='O5*',x=56.636000,y=88.957000,z=38.404000),Atom(type='P', name='P',x=57.373000,y=88.162000,z=37.236000),Atom(type='O', name='O1P',x=58.767000,y=88.656000,z=37.106000),Atom(type='O', name='O2P',x=57.134000,y=86.713000,z=37.449000)],type='rna', pdb='1S72', sequence='A', chain='0', number='212')
nt213_0 = Component([Atom(type='N', name='N9',x=59.143393,y=94.351828,z=45.495535),Atom(type='C', name='C4',x=59.971274,y=95.212343,z=44.825953),Atom(type='N', name='N3',x=60.663010,y=94.919511,z=43.689124),Atom(type='N', name='N1',x=61.406479,y=97.156635,z=43.923380),Atom(type='C', name='C6',x=60.704090,y=97.523587,z=45.117435),Atom(type='O', name='O6',x=60.832177,y=98.641611,z=45.575822),Atom(type='C', name='C8',x=58.646485,y=95.034973,z=46.581951),Atom(type='C', name='C5',x=59.924217,y=96.394659,z=45.566558),Atom(type='C', name='C2',x=61.371138,y=95.943613,z=43.280766),Atom(type='N', name='N7',x=59.095925,y=96.275773,z=46.659893),Atom(type='N', name='N2',x=62.127810,y=95.825466,z=42.152582),Atom(type='H', name='H1',x=61.977137,y=97.906040,z=43.550996),Atom(type='H', name='H8',x=57.961096,y=94.574357,z=47.279960),Atom(type='H', name='H9',x=58.949560,y=93.399119,z=45.223647),Atom(type='1', name='1H2',x=62.109704,y=94.942500,z=41.674138),Atom(type='2', name='2H2',x=62.688814,y=96.575424,z=41.794046),Atom(type='C', name='C1*',x=58.872000,y=92.959000,z=45.145000),Atom(type='C', name='C2*',x=58.648000,y=91.983000,z=46.292000),Atom(type='O', name='O2*',x=59.851000,y=91.676000,z=46.954000),Atom(type='C', name='C3*',x=58.028000,y=90.820000,z=45.529000),Atom(type='O', name='O3*',x=59.027000,y=90.160000,z=44.764000),Atom(type='C', name='C4*',x=57.104000,y=91.542000,z=44.549000),Atom(type='O', name='O4*',x=57.680000,y=92.877000,z=44.385000),Atom(type='C', name='C5*',x=55.659000,y=91.639000,z=44.988000),Atom(type='O', name='O5*',x=54.860000,y=92.288000,z=43.973000),Atom(type='P', name='P',x=54.404000,y=91.502000,z=42.661000),Atom(type='O', name='O1P',x=54.099000,y=90.089000,z=43.004000),Atom(type='O', name='O2P',x=53.385000,y=92.330000,z=41.976000)],type='rna', pdb='1S72', sequence='G', chain='0', number='213')
nt214_0 = Component([Atom(type='N', name='N1',x=61.017198,y=89.645111,z=40.615739),Atom(type='C', name='C2',x=61.907892,y=90.055244,z=39.628827),Atom(type='O', name='O2',x=62.318020,y=89.319343,z=38.755741),Atom(type='N', name='N3',x=62.265379,y=91.387928,z=39.761533),Atom(type='C', name='C4',x=61.852234,y=92.324707,z=40.729532),Atom(type='O', name='O4',x=62.264856,y=93.469729,z=40.704695),Atom(type='C', name='C6',x=60.544142,y=90.467691,z=41.610910),Atom(type='C', name='C5',x=60.919280,y=91.764248,z=41.704024),Atom(type='H', name='H5',x=60.544811,y=92.407494,z=42.488218),Atom(type='H', name='H1',x=60.729561,y=88.679796,z=40.557393),Atom(type='H', name='H3',x=62.914023,y=91.729505,z=39.062239),Atom(type='H', name='H6',x=59.854721,y=90.006013,z=42.309514),Atom(type='C', name='C1*',x=60.448000,y=88.264000,z=40.487000),Atom(type='C', name='C2*',x=61.499000,y=87.157000,z=40.574000),Atom(type='O', name='O2*',x=61.167000,y=86.131000,z=39.664000),Atom(type='C', name='C3*',x=61.402000,y=86.769000,z=42.043000),Atom(type='O', name='O3*',x=61.880000,y=85.466000,z=42.322000),Atom(type='C', name='C4*',x=59.921000,y=86.923000,z=42.342000),Atom(type='O', name='O4*',x=59.503000,y=88.045000,z=41.525000),Atom(type='C', name='C5*',x=59.597000,y=87.210000,z=43.793000),Atom(type='O', name='O5*',x=60.528000,y=88.189000,z=44.331000),Atom(type='P', name='P',x=60.099000,y=89.210000,z=45.483000),Atom(type='O', name='O1P',x=59.432000,y=88.459000,z=46.588000),Atom(type='O', name='O2P',x=61.287000,y=90.041000,z=45.784000)],type='rna', pdb='1S72', sequence='U', chain='0', number='214')
nt215_0 = Component([Atom(type='N', name='N9',x=65.975257,y=88.831997,z=40.136012),Atom(type='C', name='C4',x=66.702401,y=89.994667,z=40.011532),Atom(type='N', name='N3',x=67.766022,y=90.236385,z=39.231838),Atom(type='N', name='N1',x=67.704136,y=92.464071,z=40.195458),Atom(type='C', name='C6',x=66.639983,y=92.179942,z=40.958219),Atom(type='N', name='N6',x=66.133569,y=93.137006,z=41.768617),Atom(type='C', name='C8',x=64.985309,y=89.076727,z=41.054098),Atom(type='C', name='C5',x=66.078611,y=90.886197,z=40.892056),Atom(type='C', name='C2',x=68.193729,y=91.493083,z=39.393252),Atom(type='N', name='N7',x=65.006984,y=90.308925,z=41.540918),Atom(type='H', name='H2',x=69.056711,y=91.781118,z=38.798286),Atom(type='H', name='H8',x=64.269285,y=88.315386,z=41.333782),Atom(type='H', name='H9',x=66.150984,y=87.971623,z=39.638415),Atom(type='1', name='1H6',x=66.567469,y=94.043677,z=41.781538),Atom(type='2', name='2H6',x=65.335635,y=92.936669,z=42.345765),Atom(type='C', name='C1*',x=66.286000,y=87.590000,z=39.403000),Atom(type='C', name='C2*',x=67.575000,y=86.923000,z=39.881000),Atom(type='O', name='O2*',x=68.212000,y=86.301000,z=38.782000),Atom(type='C', name='C3*',x=67.028000,y=85.921000,z=40.884000),Atom(type='O', name='O3*',x=67.958000,y=84.881000,z=41.131000),Atom(type='C', name='C4*',x=65.765000,y=85.442000,z=40.193000),Atom(type='O', name='O4*',x=65.232000,y=86.663000,z=39.605000),Atom(type='C', name='C5*',x=64.716000,y=84.797000,z=41.070000),Atom(type='O', name='O5*',x=64.389000,y=85.659000,z=42.173000),Atom(type='P', name='P',x=63.217000,y=85.290000,z=43.188000),Atom(type='O', name='O1P',x=63.363000,y=83.869000,z=43.563000),Atom(type='O', name='O2P',x=63.166000,y=86.324000,z=44.249000)],type='rna', pdb='1S72', sequence='A', chain='0', number='215')
nt225_0 = Component([Atom(type='N', name='N9',x=64.973309,y=95.554258,z=44.998782),Atom(type='C', name='C4',x=64.222165,y=94.411777,z=45.067586),Atom(type='N', name='N3',x=64.319832,y=93.349543,z=44.219795),Atom(type='N', name='N1',x=62.595628,y=92.479323,z=45.591723),Atom(type='C', name='C6',x=62.446561,y=93.565320,z=46.514849),Atom(type='O', name='O6',x=61.624378,y=93.493326,z=47.406664),Atom(type='C', name='C8',x=64.564254,y=96.367605,z=46.030792),Atom(type='C', name='C5',x=63.382314,y=94.607688,z=46.165243),Atom(type='C', name='C2',x=63.470858,y=92.402965,z=44.536371),Atom(type='N', name='N7',x=63.601925,y=95.829672,z=46.760315),Atom(type='N', name='N2',x=63.432775,y=91.262522,z=43.789879),Atom(type='H', name='H1',x=61.965864,y=91.708433,z=45.778946),Atom(type='H', name='H8',x=65.005631,y=97.340231,z=46.199104),Atom(type='H', name='H9',x=65.687662,y=95.741836,z=44.310550),Atom(type='1', name='1H2',x=64.068623,y=91.195584,z=43.015231),Atom(type='2', name='2H2',x=62.804179,y=90.506080,z=43.985773),Atom(type='C', name='C1*',x=66.026000,y=95.871000,z=44.046000),Atom(type='C', name='C2*',x=65.442000,y=96.416000,z=42.741000),Atom(type='O', name='O2*',x=66.334000,y=96.123000,z=41.693000),Atom(type='C', name='C3*',x=65.415000,y=97.901000,z=43.039000),Atom(type='O', name='O3*',x=65.348000,y=98.700000,z=41.870000),Atom(type='C', name='C4*',x=66.727000,y=98.089000,z=43.780000),Atom(type='O', name='O4*',x=66.846000,y=96.890000,z=44.590000),Atom(type='C', name='C5*',x=66.771000,y=99.292000,z=44.674000),Atom(type='O', name='O5*',x=65.617000,y=99.306000,z=45.509000),Atom(type='P', name='P',x=65.394000,y=100.458000,z=46.574000),Atom(type='O', name='O1P',x=65.777000,y=101.748000,z=45.951000),Atom(type='O', name='O2P',x=64.023000,y=100.283000,z=47.124000)],type='rna', pdb='1S72', sequence='G', chain='0', number='225')
nt226_0 = Component([Atom(type='N', name='N9',x=65.880362,y=94.198442,z=37.934382),Atom(type='C', name='C4',x=66.375930,y=93.140274,z=37.205873),Atom(type='N', name='N3',x=67.499303,y=93.080371,z=36.476432),Atom(type='N', name='N1',x=66.821651,y=90.797613,z=36.002323),Atom(type='C', name='C6',x=65.709266,y=90.900675,z=36.741874),Atom(type='N', name='N6',x=64.881566,y=89.835765,z=36.842128),Atom(type='C', name='C8',x=64.706509,y=93.775168,z=38.505067),Atom(type='C', name='C5',x=65.434873,y=92.121605,z=37.395579),Atom(type='C', name='C2',x=67.634344,y=91.873772,z=35.915932),Atom(type='N', name='N7',x=64.394196,y=92.522316,z=38.207411),Atom(type='H', name='H2',x=68.520703,y=91.731431,z=35.302912),Atom(type='H', name='H8',x=64.113760,y=94.425993,z=39.134058),Atom(type='H', name='H9',x=66.311862,y=95.106724,z=38.021319),Atom(type='1', name='1H6',x=65.119136,y=88.987226,z=36.358360),Atom(type='2', name='2H6',x=64.043995,y=89.900080,z=37.393736),Atom(type='C', name='C1*',x=66.526000,y=95.519000,z=38.040000),Atom(type='C', name='C2*',x=66.466000,y=96.286000,z=36.721000),Atom(type='O', name='O2*',x=67.518000,y=97.228000,z=36.692000),Atom(type='C', name='C3*',x=65.103000,y=96.944000,z=36.841000),Atom(type='O', name='O3*',x=64.971000,y=98.074000,z=36.005000),Atom(type='C', name='C4*',x=65.073000,y=97.340000,z=38.307000),Atom(type='O', name='O4*',x=65.795000,y=96.285000,z=38.987000),Atom(type='C', name='C5*',x=63.693000,y=97.480000,z=38.895000),Atom(type='O', name='O5*',x=63.769000,y=97.518000,z=40.327000),Atom(type='P', name='P',x=63.941000,y=98.895000,z=41.117000),Atom(type='O', name='O1P',x=64.171000,y=99.992000,z=40.157000),Atom(type='O', name='O2P',x=62.830000,y=99.000000,z=42.086000)],type='rna', pdb='1S72', sequence='A', chain='0', number='226')
nt227_0 = Component([Atom(type='N', name='N9',x=65.035461,y=93.135744,z=33.682613),Atom(type='C', name='C4',x=64.560951,y=91.844209,z=33.629590),Atom(type='N', name='N3',x=65.091504,y=90.783374,z=33.004465),Atom(type='N', name='N1',x=63.178934,y=89.572320,z=33.882192),Atom(type='C', name='C6',x=62.683614,y=90.657697,z=34.491758),Atom(type='N', name='N6',x=61.531054,y=90.554059,z=35.191784),Atom(type='C', name='C8',x=64.147393,y=93.856420,z=34.440724),Atom(type='C', name='C5',x=63.382460,y=91.879703,z=34.384018),Atom(type='C', name='C2',x=64.331583,y=89.698470,z=33.188260),Atom(type='N', name='N7',x=63.128045,y=93.138005,z=34.888595),Atom(type='H', name='H2',x=64.684902,y=88.785562,z=32.715554),Atom(type='H', name='H8',x=64.292700,y=94.910441,z=34.636887),Atom(type='H', name='H9',x=65.878826,y=93.471638,z=33.241437),Atom(type='1', name='1H6',x=61.069212,y=89.662509,z=35.240042),Atom(type='2', name='2H6',x=61.148979,y=91.360690,z=35.653625),Atom(type='C', name='C1*',x=66.303000,y=93.579000,z=33.097000),Atom(type='C', name='C2*',x=66.180000,y=93.833000,z=31.594000),Atom(type='O', name='O2*',x=67.431000,y=93.577000,z=30.994000),Atom(type='C', name='C3*',x=65.793000,y=95.306000,z=31.575000),Atom(type='O', name='O3*',x=66.110000,y=95.932000,z=30.334000),Atom(type='C', name='C4*',x=66.623000,y=95.872000,z=32.721000),Atom(type='O', name='O4*',x=66.654000,y=94.810000,z=33.709000),Atom(type='C', name='C5*',x=66.105000,y=97.137000,z=33.365000),Atom(type='O', name='O5*',x=64.732000,y=96.969000,z=33.751000),Atom(type='P', name='P',x=64.020000,y=98.007000,z=34.724000),Atom(type='O', name='O1P',x=64.074000,y=99.353000,z=34.125000),Atom(type='O', name='O2P',x=62.715000,y=97.433000,z=35.131000)],type='rna', pdb='1S72', sequence='A', chain='0', number='227')
    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')

nt77_9.infer_hydrogens()
nt78_9.infer_hydrogens()
nt79_9.infer_hydrogens()
nt80_9.infer_hydrogens()
nt102_9.infer_hydrogens()
nt103_9.infer_hydrogens()
nt104_9.infer_hydrogens()

#print nt77_9.rotation_matrix

nt212_0 = Component([
    Atom(type='N', name='N9', x=58.751356, y=92.340716, z=38.943981),
    Atom(type='C', name='C4', x=59.260008, y=93.619943, z=38.914245),
    Atom(type='N', name='N3', x=58.991965, y=94.645752, z=39.734921),
    Atom(type='N', name='N1', x=60.562640, y=95.885002, z=38.359341),
    Atom(type='C', name='C6', x=60.801480, y=94.834175, z=37.563304),
Пример #5
0
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()
Пример #6
0
    Atom(type='O', name='O3*', x=16.783000, y=148.262000, z=76.179000),
    Atom(type='C', name='C4*', x=15.694000, y=147.440000, z=78.209000),
    Atom(type='O', name='O4*', x=16.105000, y=147.396000, z=79.603000),
    Atom(type='C', name='C5*', x=14.990000, y=146.159000, z=77.826000),
    Atom(type='O', name='O5*', x=15.901000, y=145.048000, z=77.860000),
    Atom(type='P', name='P', x=15.390000, y=143.568000, z=77.576000),
    Atom(type='O', name='O1P', x=14.377000, y=143.628000, z=76.498000),
    Atom(type='O', name='O2P', x=16.560000, y=142.674000, z=77.416000)
],
                   type='rna',
                   pdb='1S72',
                   sequence='U',
                   chain='0',
                   number='19')

nt10_0.infer_hydrogens()
nt11_0.infer_hydrogens()
nt12_0.infer_hydrogens()
nt13_0.infer_hydrogens()
nt14_0.infer_hydrogens()
nt15_0.infer_hydrogens()
nt16_0.infer_hydrogens()
nt17_0.infer_hydrogens()
nt18_0.infer_hydrogens()
nt19_0.infer_hydrogens()

# print nt10_0.rotation_matrix


class DiscrepancyTest(TestCase):
    def test_can_compute_simple_discrepancy(self):
Пример #7
0
                    Atom(type='H', name='H6',x=17.390802,y=145.579349,z=79.501508),
                    Atom(type='C', name='C1*',x=17.292000,y=148.160000,z=79.772000),
                    Atom(type='C', name='C2*',x=17.615000,y=148.777000,z=78.413000),
                    Atom(type='O', name='O2*',x=17.001000,y=150.044000,z=78.323000),
                    Atom(type='C', name='C3*',x=16.988000,y=147.751000,z=77.482000),
                    Atom(type='O', name='O3*',x=16.783000,y=148.262000,z=76.179000),
                    Atom(type='C', name='C4*',x=15.694000,y=147.440000,z=78.209000),
                    Atom(type='O', name='O4*',x=16.105000,y=147.396000,z=79.603000),
                    Atom(type='C', name='C5*',x=14.990000,y=146.159000,z=77.826000),
                    Atom(type='O', name='O5*',x=15.901000,y=145.048000,z=77.860000),
                    Atom(type='P', name='P',x=15.390000,y=143.568000,z=77.576000),
                    Atom(type='O', name='O1P',x=14.377000,y=143.628000,z=76.498000),
                    Atom(type='O', name='O2P',x=16.560000,y=142.674000,z=77.416000)],
                   type='rna', pdb='1S72', sequence='U', chain='0', number='19')

nt10_0.infer_hydrogens()
nt11_0.infer_hydrogens()
nt12_0.infer_hydrogens()
nt13_0.infer_hydrogens()
nt14_0.infer_hydrogens()
nt15_0.infer_hydrogens()
nt16_0.infer_hydrogens()
nt17_0.infer_hydrogens()
nt18_0.infer_hydrogens()
nt19_0.infer_hydrogens()

# print nt10_0.rotation_matrix


class DiscrepancyTest(TestCase):
    def test_can_compute_simple_discrepancy(self):