Structural Bioinformatics Library
Template C++ / Python API for developping structural bioinformatics applications.
redesign

######### NEW ##########

Goal: make the following functions generic

template <class ParticleTraits, class MolecularCovalentStructure, class ConformationType> typename T_Polypeptide_chain_representation<ParticleTraits, MolecularCovalentStructure, ConformationType>:: FT T_Polypeptide_chain_representation<ParticleTraits, MolecularCovalentStructure, ConformationType>:: get_phi_angle(const Residue& res) const

get_psi_angle(const Residue& res) const T_Polypeptide_chain_representation<ParticleTraits, MolecularCovalentStructure, ConformationType>:: get_omega_angle_Cter(const Residue& res) const

How:

in Linear_polymer_representation:

add function FT get_backbone_torsion_angle(int offset_starting_atom) then BB_trace[ (s+o) mod s] is the name of the 1st atom of the 4-tuple

In Proteins: get_omega_angle_Nter() : get_backbone_torsion_angle(-2) -> return omega_Nter ie [CA, C, N, CA] get_phi_angle() : get_backbone_torsion_angle(-1) -> returns phi ie [C, N, CA, C] get_psi_angle() : get_backbone_torsion_angle(0) -> return psi ie [N, CA, C, N] get_omega_angle_Cter(): get_backbone_torsion_angle(1) -> return omega_Cter ie [CA, C, N, CA]

######### OLD ##########

class T_Linear_polymer_representation

  • defines a static data member static Dihedral_angles_map_type s_da_map; that is initialized in the constructor of derived classes
  • (GC) Atoms iterators now return const references, as one should not be able to modify atoms from Molecular_system.
  • (GC) Residue_atoms_iterator sanity checks that atoms are present in the covalent structure by fetching their corresponding nodes using their serial atom number
  • (GC) Getting atoms using atom names through get_atom() and get_incident_atom() now returns a <bool, Atom *> pair to cover the case where the atom is not found

class Dihedral_angle:

  • uses the map s_da_map and supports a query has_type(DA_map::key_value) to check whether it is of a certain type

T_Polypeptide_chain_representation

  • The constructor of T_Polypeptide_chain_representation defines the backbone trace and also the map mapping the dihedral angle names to the corresponding 4-tupes
  • The functions Is_phi() Is_psi() Is_omega() are just calling the has_type() function from Dihedral_angle
  • (GC) Chi_angles_iterator is initialized with the N-CA-CB-x atom with x depending on the residue type. When incrementing, the next incident atom in the sidechain is found and the atoms in the Dihedral angle are consequently swapped. Knowledge on which atoms should be on the sidechain depending on the a.a type is stored in the SIDE_CHAIN_ATOMS_REFERENCE_TABLE static map. End on the sidechain is detected by keeping a count of the number of chi angles with an integer. For ALA and GLY, iterator end is set to begin and the dihedral angle attribute is set to null.
  • (GC) is_residue_heavy_atoms_embedded works by counting the number of heavy atoms using Is_Heavy predicate and Residue_atoms_iterator, and checking the value depending on the residue type. Information on the number of heavy atoms per a.a type is stored in the RESIDUE_HEAVY_ATOM_SIZE_REFERENCE_TABLE static map.

T_Molecular_covalent_structure

  • added a <int, Particle_rep> map attribute atomSerialNumber_to_particleRep and a corresponding get_atom_serial_number_particle to be able to locate a corresponding covalent structure node from a Molecular_system::Atom. The other way around was already possible as each covalent structure node is shipped with a pointer to a Molecular_system::Atom. get_sub_structure() is also modified to construct the atomSerialNumber_to_particleRep map of the substructure's particle rep to the molecular system.

T_Molecular_covalent_structure_loader

  • make_covalent_structure_conformation_mapping() now adds entries to atomSerialNumber_to_particleRep for each atom in the molecular system