IMP Reference Guide
develop.63b38c487d,2024/12/21
The Integrative Modeling Platform
|
The topology of a complete CHARMM model. More...
#include <IMP/atom/charmm_segment_topology.h>
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 75 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 codes and/or names) 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 CHARMMParameters * | get_parameters () |
virtual std::string | get_type_name () const override |
virtual ::IMP::VersionInfo | get_version_info () const override |
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. | |
list | segments |
A Python list of CHARMMSegmentTopologies More... | |
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 () |
CHARMMSegmentTopology * | get_segment (unsigned int i) const |
CHARMMSegmentTopologies | get_segments () const |
void | erase_segment (unsigned int i) |
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 () |
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. A warning will be printed for any atoms that cannot be found in the topology (and no CHARMM atom type will be assigned). Any atoms that already have a CHARMM atom type and that are present in the topology will have that type reassigned.
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.
void IMP::atom::CHARMMTopology::add_charges | ( | Hierarchy | hierarchy | ) | const |
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.
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.
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.
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.
void IMP::atom::CHARMMTopology::add_sequence | ( | std::string | sequence | ) |
Add a sequence (as a string of codes and/or names) to the topology.
The sequence can contain amino-acid one-letter codes, full residue names in parentheses (e.g. (ALA), (DADE)), and '/' characters to denote the start of a new segment. The empty string simply adds a new segment that contains no residues. For example, 'ACG/(ADE)(CYT)(GUA)/(DADE)(DGUA)' adds three segments, the first containing three amino acids, the second three RNA bases, and the third two DNA bases.
ValueException | if an invalid residue code or name is passed. |
IndexException | if a name in parentheses is not terminated. |
void IMP::atom::CHARMMTopology::apply_default_patches | ( | ) |
Call CHARMMSegmentTopology::apply_default_patches() for all segments.
Definition at line 108 of file charmm_segment_topology.h.
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. If more than 26 chains are present, two-letter chain IDs are then used: 'AA' through 'AZ', then 'BA' through 'BZ', through to 'ZZ'. This continues with longer chain IDs as necessary. Residues are numbered sequentially starting from 1 within each chain.
|
overridevirtual |
Get information about the module and version of the object.
Reimplemented from IMP::Object.
Definition at line 255 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.
list IMP::atom::CHARMMTopology::segments |
A Python list of CHARMMSegmentTopologies
Definition at line 252 of file charmm_segment_topology.h.