10 #ifndef IMPKINEMATICS_PROTEIN_KINEMATICS_H
11 #define IMPKINEMATICS_PROTEIN_KINEMATICS_H
13 #include "kinematics_config.h"
21 #include <boost/unordered_map.hpp>
26 #include <boost/graph/adjacency_list.hpp>
27 #include <boost/graph/undirected_dfs.hpp>
29 IMPKINEMATICS_BEGIN_NAMESPACE
31 typedef boost::adjacency_list<
32 boost::vecS, boost::vecS, boost::undirectedS, boost::no_property,
33 boost::property<boost::edge_color_t, boost::default_color_type> > Graph;
45 bool flexible_side_chains =
false);
50 const std::vector<IMP::atom::Atoms>& dihedral_angles,
51 bool flexible_backbone =
true,
52 bool flexible_side_chains =
false);
58 const std::vector<IMP::atom::Atoms>& dihedral_angles,
59 bool flexible_backbone,
bool flexible_side_chains);
65 return get_phi_joint(r)->get_angle();
69 return get_psi_joint(r)->get_angle();
76 IMP_FOREACH(
Joint *j, kf_->get_ordered_joints() ){
77 ret.push_back(dynamic_cast<DihedralAngleRevoluteJoint*>(j));
92 get_phi_joint(r)->set_angle(angle);
93 kf_->update_all_external_coordinates();
97 get_psi_joint(r)->set_angle(angle);
98 kf_->update_all_external_coordinates();
104 enum ProteinAngleType {
115 void build_topology_graph();
117 void mark_rotatable_angles(
118 const std::vector<IMP::atom::Atoms>& dihedral_angles);
120 void build_rigid_bodies();
122 void add_dihedral_joints(
123 const std::vector<IMP::atom::Atoms>& dihedral_angles);
125 void add_dihedral_joints(
126 const std::vector<IMP::atom::Residue>& residues,
127 ProteinAngleType angle_type,
128 const std::vector<IMP::atom::Atoms>& dihedral_angles);
131 ProteinAngleType angle_type,
147 class AngleToJointMap {
151 ProteinAngleType angle_type)
const;
160 typedef std::vector<Joint*> ResidueJoints;
162 boost::unordered_map<IMP::kernel::ParticleIndex, ResidueJoints>
165 #endif // IMP_DOXYGEN
178 boost::unordered_map<IMP::kernel::ParticleIndex, int>
179 particle_index_to_node_map_;
191 AngleToJointMap joint_map_;
194 IMPKINEMATICS_END_NAMESPACE
A smart pointer to a reference counted object.
The standard decorator for manipulating molecular structures.
functionality for defining rigid bodies
A class for storing lists of IMP items.
A decorator for a residue.
Wrapper class for a kinematic forest (collection of trees) made of KinematicNode objects, interconnected by joints. This data structure allows for kinematic control of the tree and interconversion between internal and external coordinates.
functionality for defining various revolute kinematic joints between rigid bodies as part of a kinema...