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();
84 get_phi_joint(r)->set_angle(angle);
85 kf_->update_all_external_coordinates();
89 get_psi_joint(r)->set_angle(angle);
90 kf_->update_all_external_coordinates();
96 enum ProteinAngleType {
107 void build_topology_graph();
109 void mark_rotatable_angles(
110 const std::vector<IMP::atom::Atoms>& dihedral_angles);
112 void build_rigid_bodies();
114 void add_dihedral_joints(
115 const std::vector<IMP::atom::Atoms>& dihedral_angles);
117 void add_dihedral_joints(
118 const std::vector<IMP::atom::Residue>& residues,
119 ProteinAngleType angle_type,
120 const std::vector<IMP::atom::Atoms>& dihedral_angles);
123 ProteinAngleType angle_type,
139 class AngleToJointMap {
143 ProteinAngleType angle_type)
const;
152 typedef std::vector<Joint*> ResidueJoints;
154 boost::unordered_map<IMP::kernel::ParticleIndex, ResidueJoints>
157 #endif // IMP_DOXYGEN
170 boost::unordered_map<IMP::kernel::ParticleIndex, int>
171 particle_index_to_node_map_;
183 AngleToJointMap joint_map_;
186 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...