Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ddG.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 under license.
6 // (c) The Rosetta software is developed by the contributing members of the Rosetta Commons.
7 // (c) For more information, see http://www.rosettacommons.org. Questions about this can be
8 // (c) addressed to University of Washington UW TechTransfer, email: license@u.washington.edu.
9 
10 /// @file protocols/protein_interface_design/movers/ddG.hh
11 /// @brief calculate interface ddg
12 /// @author Sarel Fleishman
13 
14 
15 #ifndef INCLUDED_protocols_simple_moves_ddG_hh
16 #define INCLUDED_protocols_simple_moves_ddG_hh
17 
18 // Package headers
19 #include <core/pose/Pose.fwd.hh>
21 #include <basic/datacache/CacheableData.hh>
23 
25 #include <core/types.hh>
27 #include <string>
28 
29 #include <utility/vector1.hh>
31 
32 //Auto Headers
34 
35 #include <vector>
36 
37 namespace protocols {
38 namespace simple_moves {
39 
41 {
42 public:
43 
44  typedef core::Real Real;
47 
48  /// Distance in A to separate the molecules away from bound-state.
49  /// NOTES by Sachko Honda: This value used to be hard coded to 1000 for unbound poses,
50  /// whereas the default 100 was used for bounded.
51  /// The choice of value 1000 was arbitrary by the original author.
52  /// The value is now reduced to 100 in order to help the PDE solver (APBS)
53  /// from blowing up, by default, but can be a user-defined value via RosettaScript option
54  /// or command-line option.
56 
57 public :
58  ddG();
59  ddG( core::scoring::ScoreFunctionCOP scorefxn_in, core::Size const jump=1, bool const symmetry=false );
60  ddG( core::scoring::ScoreFunctionCOP scorefxn_in, core::Size const jump/*=1*/, utility::vector1<core::Size> const & chain_ids, bool const symmetry /*=false*/ );
61  virtual void apply (Pose & pose);
62  void calculate( Pose const & pose_in );
63  void symm_ddG( core::pose::Pose & pose_in );
64  void no_repack_ddG(core::pose::Pose & pose_in);
65  void report_ddG( std::ostream & out ) const;
66  Real sum_ddG() const;
67  core::Size rb_jump() const { return rb_jump_; }
68  void rb_jump( core::Size j ) { rb_jump_ = j; }
69  core::Size repeats() const { return repeats_; }
71  virtual ~ddG();
75 
76  virtual std::string get_name() const;
79 
82  void use_custom_task( bool uct ) { use_custom_task_ = uct; }
83  bool use_custom_task() const { return use_custom_task_; }
84  void repack_bound( bool rpb ) { repack_bound_ = rpb; }
85  bool repack_bound() const { return repack_bound_; }
86  void relax_bound( bool rlb ) { relax_bound_ = rlb; }
87  bool relax_bound() const { return relax_bound_; }
88 
89 private :
90  std::map< ScoreType, Real > bound_energies_;
91  std::map< ScoreType, Real > unbound_energies_;
92 
93  std::map< Size, Real > bound_per_residue_energies_;
94  std::map< Size, Real > unbound_per_residue_energies_;
95 
100  void fill_energy_vector( Pose const & pose, std::map<ScoreType, Real > & energy_map );
101  void fill_per_residue_energy_vector(Pose const & pose, std::map<Size,Real> & energy_map);
104  bool symmetry_;
106  bool repack_;
107  protocols::moves::MoverOP relax_mover_; //dflt NULL; in the unbound state, relax before taking the energy
108 
113 
114  /// info carrier for poisson-boltzmann potential energy computation
116 
117  /// true when PB potential is part of scorefxn
119 
120  /// distance in A to separate moledules
122 };
123 
124 } // movers
125 } // protocols
126 #endif /*INCLUDED_protocols_protein_interface_design_movers_ddG_HH*/
127