IMP logo
IMP Reference Guide  develop.c9d213c767,2020/05/27
The Integrative Modeling Platform
IMP::atom::CHARMMTopology Class Reference

The topology of a complete CHARMM model. More...

#include <IMP/atom/charmm_segment_topology.h>

+ Inheritance diagram for IMP::atom::CHARMMTopology:

Detailed Description

The topology of a complete CHARMM model.

This defines all of the segments (chains) in the model as CHARMMSegmentTopology objects, which in turn define the list of residues, the atoms in each residue, and their types and the connectivity between them.

A CHARMMTopology object can be created manually, in which case add_segment() can be called to add individual CHARMMSegmentTopology objects. In this way a new topology can be created, e.g. from protein primary sequence.

Alternatively, given an existing Hierarchy, e.g. as returned from read_pdb(), CHARMMParameters::create_topology() can be called to generate a new topology that corresponds to the primary sequence of the Hierarchy.

A new topology can be patched (apply_default_patches() or CHARMMPatch::apply()) to modify the simple chain of residues to account for modified residues, C- or N-termini special cases, disulfide bridges, etc.

Once a topology is created, it can be used to generate new particles which conform to that topology (create_hierarchy()), or to add topology information to an existing Hierarchy (e.g. add_atom_types(), add_bonds(), add_charges()).

Definition at line 74 of file charmm_segment_topology.h.

Public Types

typedef std::map< const
CHARMMResidueTopology
*, Hierarchy
ResMap
 

Public Member Functions

 CHARMMTopology (const CHARMMParameters *force_field, std::string name="CHARMM topology %1%")
 
void add_atom_types (Hierarchy hierarchy) const
 Add CHARMM atom types to the given Hierarchy using this topology. More...
 
Particles add_bonds (Hierarchy hierarchy) const
 Add bonds to the given Hierarchy using this topology, and return them. More...
 
void add_charges (Hierarchy hierarchy) const
 Add CHARMM charges to the given Hierarchy using this topology. More...
 
void add_coordinates (Hierarchy hierarchy) const
 Add atom Cartesian coordinates to the given Hierarchy using this topology. More...
 
Particles add_dihedrals (Hierarchy hierarchy) const
 Add dihedrals to the given Hierarchy using this topology, and return them. More...
 
Particles add_impropers (Hierarchy hierarchy) const
 Add impropers to the given Hierarchy using this topology, and return them. More...
 
void add_missing_atoms (Hierarchy hierarchy) const
 Add any missing atoms to the given Hierarchy using this topology. More...
 
void add_sequence (std::string sequence)
 Add a sequence (as a string of one-letter codes) to the topology. More...
 
void apply_default_patches ()
 Call CHARMMSegmentTopology::apply_default_patches() for all segments. More...
 
Hierarchy create_hierarchy (Model *model) const
 Create a new Hierarchy in the given model using this topology. More...
 
const CHARMMParametersget_parameters ()
 
virtual std::string get_type_name () const
 
virtual ::IMP::VersionInfo get_version_info () const
 Get information about the module and version of the object. More...
 
void setup_hierarchy (Hierarchy hierarchy) const
 Make the Hierarchy conform with this topology. More...
 
- Public Member Functions inherited from IMP::Object
virtual void clear_caches ()
 
CheckLevel get_check_level () const
 
LogLevel get_log_level () const
 
void set_check_level (CheckLevel l)
 
void set_log_level (LogLevel l)
 Set the logging level used in this object. More...
 
void set_was_used (bool tf) const
 
void show (std::ostream &out=std::cout) const
 
const std::string & get_name () const
 
void set_name (std::string name)
 

Segments

The topology contains a list of segments, one for each chain.

void remove_segment (CHARMMSegmentTopology *d)
 
void remove_segments (const CHARMMSegmentTopologies &d)
 
void set_segments (const CHARMMSegmentTopologies &ps)
 
void set_segments_order (const CHARMMSegmentTopologies &objs)
 
unsigned int add_segment (CHARMMSegmentTopology *obj)
 
void add_segments (const CHARMMSegmentTopologies &objs)
 
void clear_segments ()
 
unsigned int get_number_of_segments () const
 
bool get_has_segments ()
 
CHARMMSegmentTopologyget_segment (unsigned int i) const
 
CHARMMSegmentTopologies get_segments () const
 
void reserve_segments (unsigned int sz)
 

Additional Inherited Members

- Protected Member Functions inherited from IMP::Object
 Object (std::string name)
 Construct an object with the given name. More...
 
virtual void do_destroy ()
 

Member Function Documentation

void IMP::atom::CHARMMTopology::add_atom_types ( Hierarchy  hierarchy) const

Add CHARMM atom types to the given Hierarchy using this topology.

The primary sequence of the Hierarchy must match that of the topology.

See Also
CHARMMAtom.
Particles IMP::atom::CHARMMTopology::add_bonds ( Hierarchy  hierarchy) const

Add bonds to the given Hierarchy using this topology, and return them.

The primary sequence of the Hierarchy must match that of the topology. Parameters for the bonds (ideal bond length, force constant) are extracted from the CHARMM parameter file, using the types of each atom (add_atom_types() must be called first, or the particles otherwise manually typed using CHARMMAtom::set_charmm_type()).

If no parameters are defined for a given bond, the bond is created with zero stiffness, such that the bond can still be excluded from nonbonded interactions but BondSingletonScore will not score it.

Note that typically CHARMM defines bonds and impropers (see add_impropers()) but angles and dihedrals are auto-generated from the existing bond graph (see CHARMMParameters::create_angles() and CHARMMParameters::create_dihedrals()).

The list of newly-created Bond particles can be passed to a StereochemistryPairFilter to exclude bonded particles from nonbonded interactions, or to a BondSingletonScore to score each bond.

Returns
a list of the generated Bond decorators.
void IMP::atom::CHARMMTopology::add_charges ( Hierarchy  hierarchy) const

Add CHARMM charges to the given Hierarchy using this topology.

The primary sequence of the Hierarchy must match that of the topology.

See Also
Charged.
void IMP::atom::CHARMMTopology::add_coordinates ( Hierarchy  hierarchy) const

Add atom Cartesian coordinates to the given Hierarchy using this topology.

The primary sequence of the Hierarchy must match that of the topology.

This method can be used to add missing coordinates (e.g. of hydrogens or sidechains, such as those added by add_missing_atoms()), or to generate a starting conformation for a new Hierarchy (e.g. generated by create_hierarchy()). On exit, all atoms will have coordinates.

  • Cartesian coordinates for any atoms that are not currently core::XYZ particles are generated using internal coordinates that relate them to particles that do have XYZ coordinates.
  • For each segment (chain), if no atoms have coordinates but a triplet of atoms can be found where their internal distances and angle can be determined from internal coordinates, these three atoms will be placed to seed the generation procedure. For the first segment, the atoms will be placed on the xy plane with the first atom at the origin. For subsequent segments, the first atom is placed offset by (2.,2.,2.) from the last atom in the previous segment.
  • If any atoms cannot be placed using either method, their coordinates are assigned randomly to lie near atoms that are near in sequence or, if no such atoms exist, near the segment origin.
Note
It is valid to specify internal coordinates in a CHARMM topology file that leave the angles or distances unspecified. This function will attempt to fill in this missing information using CHARMM atom types and the parameter file. Thus, better results will be obtained if add_atom_types() is called before this function, and the CHARMMParameters object used contains parameter information.
Particles IMP::atom::CHARMMTopology::add_dihedrals ( Hierarchy  hierarchy) const

Add dihedrals to the given Hierarchy using this topology, and return them.

The primary sequence of the Hierarchy must match that of the topology.

Typically, dihedrals are auto-generated from the existing bond graph (see CHARMMParameters::create_dihedrals()) rather than using this function.

Returns
a list of the generated Dihedral decorators.
See Also
add_bonds().
Particles IMP::atom::CHARMMTopology::add_impropers ( Hierarchy  hierarchy) const

Add impropers to the given Hierarchy using this topology, and return them.

The primary sequence of the Hierarchy must match that of the topology.

The list of newly-created Dihedral particles can be passed to a ImproperSingletonScore to score each improper dihedral.

Returns
a list of the generated Dihedral decorators.
See Also
add_bonds().
void IMP::atom::CHARMMTopology::add_missing_atoms ( Hierarchy  hierarchy) const

Add any missing atoms to the given Hierarchy using this topology.

Missing atoms are defined as those present in the topology but not in the hierarchy. Newly-added atoms are assigned CHARMM types, but no coordinates (use add_coordinates() to add them). The primary sequence of the Hierarchy must match that of the topology.

See Also
CHARMMAtom, remove_charmm_untyped_atoms, add_coordinates.
void IMP::atom::CHARMMTopology::add_sequence ( std::string  sequence)

Add a sequence (as a string of one-letter codes) to the topology.

The sequence can contain amino-acid one-letter codes and '/' characters to denote the start of a new segment. The empty string simply adds a new segment that contains no residues.

Exceptions
ValueExceptionif an invalid one-letter code is passed.
void IMP::atom::CHARMMTopology::apply_default_patches ( )

Call CHARMMSegmentTopology::apply_default_patches() for all segments.

Definition at line 102 of file charmm_segment_topology.h.

+ Here is the call graph for this function:

Hierarchy IMP::atom::CHARMMTopology::create_hierarchy ( Model model) const

Create a new Hierarchy in the given model using this topology.

The hierarchy contains chains, residues and atoms as defined in the topology. Note, however, that none of the generated atoms is given coordinates. Chains are labeled 'A', 'B' etc. Residues are numbered from 1 within each chain.

See Also
add_coordinates.
virtual ::IMP::VersionInfo IMP::atom::CHARMMTopology::get_version_info ( ) const
virtual

Get information about the module and version of the object.

Reimplemented from IMP::Object.

Definition at line 242 of file charmm_segment_topology.h.

void IMP::atom::CHARMMTopology::setup_hierarchy ( Hierarchy  hierarchy) const

Make the Hierarchy conform with this topology.

The hierarchy is modified if necessary so that each residue contains the same set of atoms as defined in the CHARMM topology, and any atoms missing coordinates are assigned them.

This is equivalent to calling add_atom_types(), add_missing_atoms(), remove_charmm_untyped_atoms(), and add_coordinates() in that order.


The documentation for this class was generated from the following file: