Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
CDRH3Modeler.hh
Go to the documentation of this file.
1 // -*- mode:c++;tab-width:2;indent-tabs-mode:t;show-trailing-whitespace:t;rm-trailing-spaces:t -*-
2 // vi: set ts=2 noet:
3 //
4 // (c) Copyright Rosetta Commons Member Institutions.
5 // (c) This file is part of the Rosetta software suite and is made available
6 // (c) under license. The Rosetta software is developed by the contributing
7 // (c) members of the Rosetta Commons. For more information, see
8 // (c) http://www.rosettacommons.org. Questions about this can be addressed to
9 // (c) University of Washington UW TechTransfer,email:license@u.washington.edu.
10 
11 /// @file protocols/antibody/CDRH3Modeler.hh
12 /// @brief
13 /// @author Aroop Sircar (aroopsircar@yahoo.com)
14 
15 
16 #ifndef INCLUDED_protocols_antibody_CDRH3Modeler_hh
17 #define INCLUDED_protocols_antibody_CDRH3Modeler_hh
18 
19 
20 // Rosetta headers
23 #ifdef WIN32
24  #include <core/fragment/FragData.hh> // WIN32 INCLUDE
25  #include <core/fragment/FragSet.hh>
26 #endif
28 #include <core/pose/Pose.hh>
30 
33 #include <protocols/moves/Mover.hh>
34 
35 
36 // ObjexxFCL Headers
37 
38 // C++ Headers
39 
40 // Utility Headers
41 #include <utility/vector1.fwd.hh>
42 
43 #include <utility/vector1.hh>
44 
45 
46 namespace protocols {
47 namespace antibody {
48 
52 
53 //////////////////////////////////////////////////////////////////////////
54 /// @brief Ab initio modeling of CDR H3 loop
55 /// @details
56 class CDRH3Modeler : public moves::Mover {
57 public:
58  /// @brief default constructor
60 
61  /// @brief default destructor
62  ~CDRH3Modeler();
63 
64  /// @brief enable CDR H3 loop building
65  inline void model_h3( bool setting ) {
66  do_h3_modeling_ = setting;
67  }
68 
69  /// @brief enable benchmark mode
70  inline void enable_benchmark_mode( bool setting ) {
71  benchmark_ = setting;
72  }
73 
74  /// @brief enable camelid modeling mode
75  inline void set_camelid( bool setting ) {
76  is_camelid_ = setting;
77 
78  if( is_camelid_ ) {
79  H3_filter_ = false;
80  snug_fit_ = false;
81  docking_local_refine_ = false;
82  }
83  }
84 
85  /// @brief set centroid mode loop building
86  inline void set_centroid_loop_building( bool setting ) {
87  apply_centroid_mode_ = setting;
88  }
89 
90  /// @brief set fullatom mode loop building
91  inline void set_fullatom_loop_building( bool setting ) {
92  apply_fullatom_mode_ = setting;
93  };
94 
95  void set_default();
96  virtual void apply( core::pose::Pose & pose_in );
97  virtual std::string get_name() const;
98 
99  /// @brief Build centroid mode CDR H3 loop
100  void build_centroid_loop();
101 
102  /// @brief Build fullatom mode CDR H3 loop
103  void build_fullatom_loop();
104 
105  /////////////////////////////////////////////////////////////////////////
106  /// @brief set scorefunction for low resolution of CDR H3 modeling
107  /// @details
109  core::scoring::ScoreFunctionOP lowres_scorefxn );
110 
111  /////////////////////////////////////////////////////////////////////////
112  /// @brief set scorefunction for high resolution of CDR H3 modeling
113  /// @details
115  core::scoring::ScoreFunctionOP highres_scorefxn
116  );
117 
118  /// @brief insert C-terminal fragments
120 
121  /// @brief store CDR H3 C-terminal fragments
124  );
125 
126  /// @brief return false if any cdr cutpoint is broken
127  bool cutpoints_separation();
128 
129  // Compute the separation at the cutpoint. The N-C distance of the
130  // peptide bond which should be formed at the cutpoint. A closed loop is
131  // assumed to have a gap < 1.9 Ang
133  core::pose::Pose & pose_in,
134  Size cutpoint
135  );
136 
137  void scored_frag_close(
138  core::pose::Pose & pose_in,
139  loops::Loop const trimmed_cdr_h3
140  );
141 
142  bool CDR_H3_filter(
143  const core::pose::Pose & pose_in,
144  core::Size const loop_begin,
145  core::Size const size,
146  char const light_chain = 'L' );
147 
148  void loop_fa_relax(
149  core::pose::Pose & pose_in,
150  core::Size const loop_begin,
151  core::Size const loop_end
152  );
153 
154  void loop_centroid_relax(
155  core::pose::Pose & pose_in,
156  core::Size const loop_begin,
157  core::Size const loop_end );
158 
159  void setup_packer_task( core::pose::Pose & pose_in );
160 
161  // CDR H3 C-terminal fragments
163 
164 private:
167  /// @brief Number of ADDITIONAL residues modeled from H3_CTERM
168  /// These residues range from H:n-2,n-1,n,n+1 of H3
171  // constraints
174  // true if command line option "model_h3" is set
175  // enables modeling of CDR H3 loop
178 
180 
181  // score functions
184 
185  /// @brief benchmark flag
187  /// @brief Centroid mode loop building
189  /// @brief Fullatom mode loop building
191  /// @brief flag indicating that current loop being modeled is CDR H3
193  /// @brief actually enables H3 filter for H3 operations
195  /// @brief build H3 only
197  /// @brief refine H3 only
199  /// @brief lower amplitude during base relaxation
201  /// @brief use random cutpoints for h3 modeling
203  /// @brief cutpoint whose separation is computed in scorefile
205  /// @brief enable docking local refine of LH chains & simultaneous H3 min
206  bool snug_fit_;
207  /// @brief loop_building in docking
210  /// @brief insert fragment in docking
211  bool dle_flag_;
212  /// @brief just refine input loop
214  /// @brief number of flanking residues:default 5
216  /// @brief relax flanking regions of h3
218  /// @brief freeze h3 during all cdr relax and local refine
220  /// @brief is camelid antibody without light chain
222  /// @brief size of loop above which 9mer frags are used
223  core::Size cutoff_9_; // default 16
224  /// @brief size of loop above which 3mer frags are used
225  core::Size cutoff_3_; // default 6
226 
228 
229  //packer task
232 
233 }; // class CDRH3Modeler
234 
235 // read CDR H3 C-terminal fragments (size: 4)
237  antibody::Antibody & antibody_in,
239  bool is_camelid
240 );
241 
243  core::pose::Pose & pose,
244  loops::Loop const & loop
245 );
246 
247 void simple_fold_tree(
248  core::pose::Pose & pose_in,
249  core::Size jumppoint1,
250  core::Size cutpoint,
251  core::Size jumppoint2
252 );
253 
254 } // moves
255 } // protocols
256 
257 
258 #endif