Example #1
0
    def convert_to_residue(self, modified_residues):
        residue_3_letter = self.ATOMResidueAA
        residue_1_letter = residue_type_3to1_map.get(residue_3_letter) or protonated_residue_type_3to1_map.get(residue_3_letter) or non_canonical_amino_acids.get(residue_3_letter)

        if not residue_1_letter:
            residue_identifier = self.get_pdb_residue_id()
            if modified_residues.get(residue_identifier):
                residue_1_letter = modified_residues[residue_identifier]['original_residue_1']
        if not residue_1_letter:
            '''Too many cases to worry about... we will have to use residue_3_letter to sort those out.'''
            residue_1_letter = 'X'

        pdb_residue = IdentifyingPDBResidue(self.PDBChainID, ("%d%s" % (self.ATOMResidueID, self.ATOMResidueiCode)).rjust(5), residue_1_letter, None, residue_3_letter)
        return pdb_residue, self.SEQRESIndex, residue_1_letter, residue_3_letter
Example #2
0
    def parse_atom_site(t, modified_residues):

        # Only parse ATOM records
        if parse_singular_string(t, 'PDBx:group_PDB') == 'HETATM':
            return None, None, None, None
        assert(parse_singular_string(t, 'PDBx:group_PDB') == 'ATOM')

        # NOTE: x, y, z values are per-ATOM but we do not use them yet
        x, y, z = parse_singular_float(t, "PDBx:Cartn_x"), parse_singular_float(t, "PDBx:Cartn_y"), parse_singular_float(t, "PDBx:Cartn_z")

        PDB_chain_id = parse_singular_alphabetic_character(t, 'PDBx:auth_asym_id')
        ATOM_residue_id = parse_singular_int(t, 'PDBx:auth_seq_id')

        # Parse insertion code. Sometimes this tag exists but is set as nil in its attributes (xsi:nil = "true").
        PDB_insertion_code = " "
        insertion_code_tags = t.getElementsByTagName('PDBx:pdbx_PDB_ins_code')
        if insertion_code_tags:
            assert(len(insertion_code_tags) == 1)
            insertion_code_tag = insertion_code_tags[0]
            if not(insertion_code_tag.hasAttribute('xsi:nil') and insertion_code_tag.getAttribute('xsi:nil') == 'true'):
                PDB_insertion_code = parse_singular_alphabetic_character(t, 'PDBx:pdbx_PDB_ins_code')

        SEQRES_index = parse_singular_int(t, 'PDBx:label_seq_id')

        residue_a = parse_singular_string(t, 'PDBx:auth_comp_id')
        residue_b = parse_singular_string(t, 'PDBx:label_comp_id')
        assert(residue_a == residue_b)
        residue_3_letter = residue_a

        residue_1_letter = residue_type_3to1_map.get(residue_3_letter) or protonated_residue_type_3to1_map.get(residue_3_letter) or non_canonical_amino_acids.get(residue_3_letter)
        if not residue_1_letter:
            residue_identifier = '%s%s%s' % (PDB_chain_id, str(ATOM_residue_id).rjust(4), PDB_insertion_code)
            if modified_residues.get(residue_identifier):
                residue_1_letter = modified_residues[residue_identifier]['original_residue_1']
        if not residue_1_letter:
            '''Too many cases to worry about... we will have to use residue_3_letter to sort those out.'''
            residue_1_letter = 'X'

        r = IdentifyingPDBResidue(PDB_chain_id, ("%d%s" % (ATOM_residue_id, PDB_insertion_code)).rjust(5), residue_1_letter, None, residue_3_letter)
        r.add_position(x, y, z)

        return r, SEQRES_index, residue_1_letter, residue_3_letter
Example #3
0
 def get_amino_acid_code(self):
     return residue_type_3to1_map.get(self.amino_acid) or protonated_residue_type_3to1_map.get(self.amino_acid) or non_canonical_amino_acids.get(self.amino_acid, 'X')