IMP logo
IMP Reference Guide  develop.d97d4ead1f,2024/11/21
The Integrative Modeling Platform
FibrilSampler.h
Go to the documentation of this file.
1 /**
2  \file IMP/kinematics/FibrilSampler.h
3  \brief A class for simultaneous sampling of diheral angles and fibril symmetry operations
4 
5  \authors Daniel Saltzberg
6  Copyright 2007-2018 IMP Inventors. All rights reserved.
7  */
8 
9 #ifndef IMPKINEMATICS_FIBRIL_SAMPLER_H
10 #define IMPKINEMATICS_FIBRIL_SAMPLER_H
11 
12 #include <IMP/kinematics/kinematics_config.h>
13 #include "DOFsSampler.h"
14 #include "revolute_joints.h"
15 #include "TransformationJoint.h"
16 #include <boost/random/uniform_real_distribution.hpp>
17 #include <IMP/algebra/Vector3D.h>
18 #include <IMP/algebra/Rotation3D.h>
20 //#include <IMP/algebra/ReferenceFrame3D.h>
21 
22 IMPKINEMATICS_BEGIN_NAMESPACE
23 
24 //! Simultaneous sampling of diheral angles and fibril symmetry operations
25 class IMPKINEMATICSEXPORT FibrilSampler : public DOFsSampler {
26  public:
27  /**
28  Construct a sampler that samples uniformly a set of backbone (and chi)
29  dihedrals as well as
30  @param trans_joint A TransformationJoint that contains the XYZ position of the fibril root node
31  as well as the pitch/roll/yaw of the fibril principal vectors wrs: Y-axis
32  @param dihedral_joints the dihedral joints over which to sample uniformly
33  @param dofs corresponding list of dofs for each joint in trans_joint + dihedral_joints
34  respectively, with information about minimal /
35  maximal dof values, etc.
36  */
37  FibrilSampler(TransformationJoints trans_joint, DihedralAngleRevoluteJoints dihedral_joints, DOFs dofs);
38 
39  virtual void apply(const DOFValues& values) override;
40  virtual void apply_floats(const Floats& values);
41  DihedralAngleRevoluteJoints get_dihedral_joints() { return dihedral_joints_; }
42 
43  TransformationJoints get_transformation_joint() { return trans_joint_; }
44 
45  protected:
46  virtual DOFValues do_get_sample() const override;
47 
48  private:
49  // boost::mt19937 rng_; // init random number generator
50  mutable std::vector<boost::random::uniform_real_distribution<> > u_rand_;
51  DihedralAngleRevoluteJoints dihedral_joints_;
52  TransformationJoints trans_joint_;
53 };
54 
56 
57 IMPKINEMATICS_END_NAMESPACE
58 
59 #endif /* IMPKINEMATICS_FIBRIL_SAMPLER_H */
Copyright 2007-2022 IMP Inventors. All rights reserved.
a kinematic joints between rigid bodies that allows any transformation
Base class for sampling certain combinations of degrees of freedom.
Definition: DOFsSampler.h:17
A class that holds DOF values for DOFs.
Definition: DOFValues.h:23
Simultaneous sampling of diheral angles and fibril symmetry operations.
Definition: FibrilSampler.h:25
Simple 3D rotation class.
Simple 3D transformation class.
#define IMP_OBJECTS(Name, PluralName)
Define the types for storing lists of object pointers.
Definition: object_macros.h:44
Simple 3D vector class.
virtual void apply(const DOFValues &values)=0
functionality for defining various revolute kinematic joints between rigid bodies as part of a kinema...