10 #ifndef IMPKINEMATICS_PROTEIN_KINEMATICS_H
11 #define IMPKINEMATICS_PROTEIN_KINEMATICS_H
13 #include "kinematics_config.h"
27 #include <boost/graph/adjacency_list.hpp>
28 #include <boost/graph/undirected_dfs.hpp>
30 IMPKINEMATICS_BEGIN_NAMESPACE
32 typedef boost::adjacency_list <boost::vecS,
36 boost::property<boost::edge_color_t, boost::default_color_type> > Graph;
48 bool flexible_backbone =
true,
49 bool flexible_side_chains =
false);
54 const std::vector<IMP::atom::Atoms>& dihedral_angles,
55 bool flexible_backbone =
true,
56 bool flexible_side_chains =
false);
63 const std::vector<IMP::atom::Atoms>& dihedral_angles,
64 bool flexible_backbone,
65 bool flexible_side_chains) ;
73 return get_phi_joint(r)->get_angle();
77 return get_psi_joint(r)->get_angle();
93 get_phi_joint(r)->set_angle(angle);
94 kf_->update_all_external_coordinates();
98 get_psi_joint(r)->set_angle(angle);
99 kf_->update_all_external_coordinates();
107 enum ProteinAngleType { PHI, PSI, CHI1, CHI2, CHI3, CHI4, OTHER, TOTAL };
109 void build_topology_graph();
111 void mark_rotatable_angles(
112 const std::vector<IMP::atom::Atoms>& dihedral_angles);
114 void build_rigid_bodies();
116 void add_dihedral_joints(
117 const std::vector<IMP::atom::Atoms>& dihedral_angles);
119 void add_dihedral_joints(
const std::vector<IMP::atom::Residue>& residues,
120 ProteinAngleType angle_type,
121 const std::vector<IMP::atom::Atoms>& dihedral_angles);
124 ProteinAngleType angle_type,
140 class AngleToJointMap {
144 ProteinAngleType angle_type)
const;
148 ProteinAngleType angle_type,
154 typedef std::vector<Joint*> ResidueJoints;
157 ResidueJoints> residue_to_joints_;
159 #endif // IMP_DOXYGEN
184 AngleToJointMap joint_map_;
187 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.
base::Index< ParticleIndexTag > ParticleIndex
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...
Declare an efficient stl-compatible map.