|
|
|
|
| """Constants associated with side chains.""" |
|
|
| from collections.abc import Mapping, Sequence |
| import itertools |
|
|
| |
| |
| |
| CHI_ANGLES_ATOMS: Mapping[str, Sequence[tuple[str, ...]]] = { |
| 'ALA': [], |
| |
| 'ARG': [ |
| ('N', 'CA', 'CB', 'CG'), |
| ('CA', 'CB', 'CG', 'CD'), |
| ('CB', 'CG', 'CD', 'NE'), |
| ('CG', 'CD', 'NE', 'CZ'), |
| ], |
| 'ASN': [('N', 'CA', 'CB', 'CG'), ('CA', 'CB', 'CG', 'OD1')], |
| 'ASP': [('N', 'CA', 'CB', 'CG'), ('CA', 'CB', 'CG', 'OD1')], |
| 'CYS': [('N', 'CA', 'CB', 'SG')], |
| 'GLN': [ |
| ('N', 'CA', 'CB', 'CG'), |
| ('CA', 'CB', 'CG', 'CD'), |
| ('CB', 'CG', 'CD', 'OE1'), |
| ], |
| 'GLU': [ |
| ('N', 'CA', 'CB', 'CG'), |
| ('CA', 'CB', 'CG', 'CD'), |
| ('CB', 'CG', 'CD', 'OE1'), |
| ], |
| 'GLY': [], |
| 'HIS': [('N', 'CA', 'CB', 'CG'), ('CA', 'CB', 'CG', 'ND1')], |
| 'ILE': [('N', 'CA', 'CB', 'CG1'), ('CA', 'CB', 'CG1', 'CD1')], |
| 'LEU': [('N', 'CA', 'CB', 'CG'), ('CA', 'CB', 'CG', 'CD1')], |
| 'LYS': [ |
| ('N', 'CA', 'CB', 'CG'), |
| ('CA', 'CB', 'CG', 'CD'), |
| ('CB', 'CG', 'CD', 'CE'), |
| ('CG', 'CD', 'CE', 'NZ'), |
| ], |
| 'MET': [ |
| ('N', 'CA', 'CB', 'CG'), |
| ('CA', 'CB', 'CG', 'SD'), |
| ('CB', 'CG', 'SD', 'CE'), |
| ], |
| 'PHE': [('N', 'CA', 'CB', 'CG'), ('CA', 'CB', 'CG', 'CD1')], |
| 'PRO': [('N', 'CA', 'CB', 'CG'), ('CA', 'CB', 'CG', 'CD')], |
| 'SER': [('N', 'CA', 'CB', 'OG')], |
| 'THR': [('N', 'CA', 'CB', 'OG1')], |
| 'TRP': [('N', 'CA', 'CB', 'CG'), ('CA', 'CB', 'CG', 'CD1')], |
| 'TYR': [('N', 'CA', 'CB', 'CG'), ('CA', 'CB', 'CG', 'CD1')], |
| 'VAL': [('N', 'CA', 'CB', 'CG1')], |
| } |
|
|
| CHI_GROUPS_FOR_ATOM = {} |
| for res_name, chi_angle_atoms_for_res in CHI_ANGLES_ATOMS.items(): |
| for chi_group_i, chi_group in enumerate(chi_angle_atoms_for_res): |
| for atom_i, atom in enumerate(chi_group): |
| CHI_GROUPS_FOR_ATOM.setdefault((res_name, atom), []).append( |
| (chi_group_i, atom_i) |
| ) |
|
|
| |
| |
| CHI_GROUPS_FOR_ATOM: Mapping[tuple[str, str], Sequence[tuple[int, int]]] = ( |
| CHI_GROUPS_FOR_ATOM |
| ) |
|
|
| MAX_NUM_CHI_ANGLES: int = 4 |
| ATOMS_PER_CHI_ANGLE: int = 4 |
|
|
| |
| CHI_ATOM_SETS: Mapping[str, set[str]] = { |
| residue_name: set(itertools.chain(*atoms)) |
| for residue_name, atoms in CHI_ANGLES_ATOMS.items() |
| } |
|
|
| |
| |
| CHI_ANGLES_MASK: Sequence[Sequence[float]] = ( |
| (0.0, 0.0, 0.0, 0.0), |
| (1.0, 1.0, 1.0, 1.0), |
| (1.0, 1.0, 0.0, 0.0), |
| (1.0, 1.0, 0.0, 0.0), |
| (1.0, 0.0, 0.0, 0.0), |
| (1.0, 1.0, 1.0, 0.0), |
| (1.0, 1.0, 1.0, 0.0), |
| (0.0, 0.0, 0.0, 0.0), |
| (1.0, 1.0, 0.0, 0.0), |
| (1.0, 1.0, 0.0, 0.0), |
| (1.0, 1.0, 0.0, 0.0), |
| (1.0, 1.0, 1.0, 1.0), |
| (1.0, 1.0, 1.0, 0.0), |
| (1.0, 1.0, 0.0, 0.0), |
| (1.0, 1.0, 0.0, 0.0), |
| (1.0, 0.0, 0.0, 0.0), |
| (1.0, 0.0, 0.0, 0.0), |
| (1.0, 1.0, 0.0, 0.0), |
| (1.0, 1.0, 0.0, 0.0), |
| (1.0, 0.0, 0.0, 0.0), |
| ) |
|
|