def as_unit(self, unit_id):
        """Turn a unit id into a Unit.

        :param str unit_id: The unit id.
        """

        parts = fuid.decode(unit_id)
        del parts['component_id']
        del parts['atom_name']
        return Unit(**parts)
    def as_unit(self, unit_id):
        """Turn a unit id into a Unit.

        :param str unit_id: The unit id.
        """

        parts = fuid.decode(unit_id)
        del parts['component_id']
        del parts['atom_name']
        return Unit(**parts)
Beispiel #3
0
 def test_decodes_full_atom_id(self):
     val = decode("2AVY|1|A|C|50|C1'|A|c|6_555")
     ans = {
         'pdb': '2AVY',
         'model': 1,
         'chain': 'A',
         'component_id': 'C',
         'component_number': 50,
         'atom_name': "C1'",
         'alt_id': 'A',
         'insertion_code': 'c',
         'symmetry': '6_555'
     }
     self.assertEqual(val, ans)
Beispiel #4
0
 def test_decodes_short_with_default_data(self):
     val = decode('2AVY|1|A|C|50')
     ans = {
         'pdb': '2AVY',
         'model': 1,
         'chain': 'A',
         'component_id': 'C',
         'component_number': 50,
         'atom_name': None,
         'alt_id': None,
         'insertion_code': None,
         'symmetry': '1_555'
     }
     self.assertEqual(val, ans)
Beispiel #5
0
 def test_decodes_full_atom_id(self):
     val = decode("2AVY|1|A|C|50|C1'|A|c|6_555")
     ans = {
         'pdb': '2AVY',
         'model': 1,
         'chain': 'A',
         'component_id': 'C',
         'component_number': 50,
         'atom_name': "C1'",
         'alt_id': 'A',
         'insertion_code': 'c',
         'symmetry': '6_555'
     }
     self.assertEqual(val, ans)
Beispiel #6
0
 def test_decodes_a_full_residue_id(self):
     val = decode('2AVY|1|A|C|50||||1_555')
     ans = {
         'pdb': '2AVY',
         'model': 1,
         'chain': 'A',
         'component_id': 'C',
         'component_number': 50,
         'atom_name': None,
         'alt_id': None,
         'insertion_code': None,
         'symmetry': '1_555'
     }
     self.assertEquals(val, ans)
Beispiel #7
0
 def test_decodes_a_full_residue_id(self):
     val = decode('2AVY|1|A|C|50||||1_555')
     ans = {
         'pdb': '2AVY',
         'model': 1,
         'chain': 'A',
         'component_id': 'C',
         'component_number': 50,
         'atom_name': None,
         'alt_id': None,
         'insertion_code': None,
         'symmetry': '1_555'
     }
     self.assertEquals(val, ans)
Beispiel #8
0
 def test_decodes_short_with_default_data(self):
     val = decode('2AVY|1|A|C|50')
     ans = {
         'pdb': '2AVY',
         'model': 1,
         'chain': 'A',
         'component_id': 'C',
         'component_number': 50,
         'atom_name': None,
         'alt_id': None,
         'insertion_code': None,
         'symmetry': '1_555'
     }
     self.assertEqual(val, ans)
Beispiel #9
0
    def too_many_sym_ops(self, loop):
        """Detect if we have only 1 symmetry operator in this loop. This is
        an invalid loop.

        :param dict loop: The loop to examine.
        :returns: Bool, true if there is more symmetry operator.
        """

        ops = set()
        for unit in loop['nts']:
            parts = decode(unit)
            ops.add(parts['symmetry'])
        if loop['type'] == 'HL':
            return len(ops) != 1
        if loop['type'] == 'IL':
            return len(ops) > 2
        if loop['type'] == 'J3':
            return len(ops) > 3
    def too_many_sym_ops(self, loop):
        """Detect if we have only 1 symmetry operator in this loop. This is
        an invalid loop.

        :param dict loop: The loop to examine.
        :returns: Bool, true if there is more symmetry operator.
        """

        ops = set()
        for unit in loop['nts']:
            parts = decode(unit)
            ops.add(parts['symmetry'])
        if loop['type'] == 'HL':
            return len(ops) != 1
        if loop['type'] == 'IL':
            return len(ops) > 2
        if loop['type'] == 'J3':
            return len(ops) > 3
Beispiel #11
0
 def compatabile_units(self, unit_id1, unit_id2):
     unit1 = decode(unit_id1)
     unit2 = decode(unit_id2)
     return unit1['model'] == unit2['model'] and \
         unit1['symmetry'] == unit2['symmetry']
 def test_resets_the_index(self):
     chain_of = lambda d: decode(d['unit_id'])['chain']
     chain_a = [d['index'] for d in self.data if chain_of(d) == 'A']
     chain_b = [d['index'] for d in self.data if chain_of(d) == 'B']
     assert chain_a == range(0, 158)
     assert chain_b == range(0, 158)
 def test_can_get_for_both_chains(self):
     ans = set('AB')
     assert set(decode(d['unit_id'])['chain'] for d in self.data) == ans
     assert set(d['seq_id'].split('|')[2] for d in self.data) == ans
 def chain_of(self, uid):
     return decode(uid)['chain']
Beispiel #15
0
 def test_can_generate_mappings(self):
     mapping = self.cif.experimental_sequence_mapping('1')
     val = decode(next(mapping)[2])
     self.assertEquals('P_1', val['symmetry'])
Beispiel #16
0
 def test_round_trips_an_id(self):
     ans = '2AVY|1|A|C|50'
     val = encode(decode(ans))
     self.assertEqual(val, ans)
 def test_maps_both_symmetry_operators(self):
     ops = set(decode(d['unit_id'])['symmetry'] for d in self.data)
     assert ops == set(['P_P', 'P_1'])
Beispiel #18
0
 def test_can_generate_mapping_to_model_0(self):
     mapping = self.cif.experimental_sequence_mapping('B')
     val = decode(next(mapping)[2])
     self.assertEquals(0, val['model'])
Beispiel #19
0
 def test_round_trips_an_id(self):
     ans = '2AVY|1|A|C|50'
     val = encode(decode(ans))
     self.assertEqual(val, ans)
Beispiel #20
0
 def test_can_generate_mappings(self):
     mapping = self.cif.experimental_sequence_mapping('1')
     val = decode(next(mapping)[2])
     self.assertEquals('P_1', val['symmetry'])
Beispiel #21
0
 def test_can_generate_mapping_to_model_0(self):
     mapping = self.cif.experimental_sequence_mapping('B')
     val = decode(next(mapping)[2])
     self.assertEquals(0, val['model'])
 def test_it_uses_a_single_symmetry_operator(self):
     units = [pos.unit_id for pos in self.positions]
     sym_ops = set(decode(uid)['symmetry'] for uid in units)
     assert sym_ops == set(['1_555'])