Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
InterfaceInfo.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 core/scoring/methods/InterchainEnergy.cc
11 /// @brief Statistically derived rotamer pair potentials
12 /// @detailed For docking (or between chains) only those residues at the interface
13 /// and between the two interfaces need to be evaluated
14 /// @author Monica Berrondo
15 
16 #ifndef INCLUDED_protocols_scoring_InterfaceInfo_hh
17 #define INCLUDED_protocols_scoring_InterfaceInfo_hh
18 
19 #include <core/types.hh>
20 
21 // Unit headers
22 // AUTO-REMOVED #include <core/scoring/AtomVDW.fwd.hh>
24 
25 // Package headers
28 
29 #include <basic/datacache/CacheableData.hh>
30 
31 #include <ObjexxFCL/FArray1D.hh>
32 // AUTO-REMOVED #include <ObjexxFCL/FArray2D.hh>
33 // AUTO-REMOVED #include <ObjexxFCL/FArray3D.hh>
34 
35 #include <utility/vector1.hh>
36 
37 
38 namespace protocols {
39 namespace scoring {
40 
41 ////////////////////////////////////////////////////////////////////////////////////////////////////
42 /// @brief Keep track of the interface information
43 
44 class InterfaceInfo : public basic::datacache::CacheableData {
45 public:
46 
47  ///@brief Default constructor with rb jump = 1
49  {
50  rb_jump_.push_back( 1 );
51  distance_ = 6.0; //default
52  initialize();
53  }
54 
55  ///@brief Constructor with arguments for non-default rb jump
56  InterfaceInfo( core::Size rb_jump_in ): calculated_(false), distance_ (6.0)
57  {
58  rb_jump_.push_back( rb_jump_in );
59  distance_ = 6.0; //default
60  initialize();
61  }
62 
63  ///@brief Constructor with arguments for multiple jumps
64  InterfaceInfo( utility::vector1_size rb_jump_in ): calculated_(false)
65  {
66  rb_jump_ = rb_jump_in;
67  distance_ = 6.0; //default
68  initialize();
69  }
70 
71  InterfaceInfo( InterfaceInfo const & src );
72 
73  basic::datacache::CacheableDataOP
74  clone() const
75  {
76  return new InterfaceInfo( *this );
77  }
78 
79  ///@brief Removes all jumps from the interface calculation
80  void clear_jumps(){ rb_jump_.clear(); }
81 
82  ///@brief Adds another jump to the interface calculation, for example
83  ///for multi-body docking
84  void add_jump( core::Size jump_in ){ rb_jump_.push_back( jump_in ); }
85 
86  ///@brief Sets the distance cutoff for interface calculations
87  void distance( core::Real distance_in ){ distance_ = distance_in; }
88 
89  ///@brief Returns if interface calculation is up to date
90  bool calculated() const { return calculated_; }
91 
92  ///@brief Returns if interface calculation is up to date
93  bool & calculated() { return calculated_; }
94 
95  ///@brief Returns the number of jumps that are being used
96  /// in interface calculations
97  core::Size num_jump() const { return num_jump_; }
98 
99  ///@brief Sets up InterfaceInfo members such as interface_list_
100  ///based on variables from construction
101  void
102  initialize();
103 
104  ///@brief Returns whether a residue is at any of the interfaces
105  bool
107 
108  ///@brief Returns whether the two residues are considered a
109  ///residue pair at any of the interfaces
110  bool
111  is_pair(
114  ) const;
115 
116  ///@brief Returns the number of resides at the interface defined
117  ///by jump_num
118  core::Size
119  interface_nres( core::Size jump_num ) const;
120 
121  ///@brief Calculates the interface for all jumps specified in
122  ///rb_jump_
123  void
124  calculate( core::pose::Pose const & pose);
125 
126  core::Size
127  closest_interface_residue( core::pose::Pose const & pose, core::Size src_rsd, core::Real & distance ) const;
128 
129  InterfaceCOP interface( core::Size interface_num ) const;
130 
131 private:
135 
136  utility::vector1_size rb_jump_;
137 
139 };
140 
141 } // ns scoring
142 } // ns protocols
143 
144 #endif