Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Sheet.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 // This file is part of the Rosetta software suite and is made available under license.
5 // The Rosetta software is developed by the contributing members of the Rosetta Commons consortium.
6 // Copyright in the Rosetta software belongs to the developers and their institutions.
7 // For more information, see www.rosettacommons.org.
8 
9 /// @file ./src/protocols/fldsgn/topology/Sheet.hh
10 /// @brief
11 /// @author Nobuyasu Koga ( nobuyasu@u.washington.edu )
12 
13 #ifndef INCLUDED_protocols_fldsgn_topology_Sheet_hh
14 #define INCLUDED_protocols_fldsgn_topology_Sheet_hh
15 
16 // unit headers
17 #include <core/pose/Pose.fwd.hh>
19 
20 // project headers
21 #include <core/types.hh>
24 
25 // utility headers
26 #include <utility/pointer/ReferenceCount.hh>
27 
28 // C++ headers
29 #include <map>
30 
31 #include <utility/vector1.hh>
32 #include <numeric/xyzVector.hh>
33 
34 
35 namespace protocols {
36 namespace fldsgn {
37 namespace topology {
38 
40 public:
41 
42 
43  typedef core::Size Size;
44  typedef core::Real Real;
51 
52 
53 public:// construct/destruct
54 
55 
56  /// @brief default constructor
57  Sheet();
58 
59  /// @brief value constructor
60  Sheet( VecSize const & order_strands, VecInt const & orient_strands, bool is_barrel );
61 
62  /// @brief copy constructor
63  Sheet( Sheet const & s );
64 
65  /// @brief default destructor
66  virtual ~Sheet();
67 
68  /// @brief clone this object
70  return new Sheet( *this );
71  }
72 
73  /// @brief return strand pairing
74  friend
75  std::ostream & operator<<( std::ostream & out, const Sheet &s );
76 
77 
78 public:
79 
80 
81  /// @brief intialize this class
82  void initialize();
83 
84 
85 public: //accessors
86 
87 
88  /// @brief the number strands inclued in
89  Size num_strands() const { return num_strands_; }
90 
91  /// @brief is this barrel ?
92  bool is_barrel() const { return is_barrel_; }
93 
94  VecSize order_strands() const { return order_strands_; }
95 
96  Size order_strand( Size const s ) const { return order_strands_[ s ]; }
97 
99 
100  int orient_strand( Size const s ) const { return orient_strands_[ s ]; }
101 
102  Size strand_order( Size const s ) { return strand_order_[ s ]; }
103 
104  VecInt ca_cb_orients() const { return ca_cb_orients_; }
105 
106  int ca_cb_orient( Size const s ) const { return ca_cb_orients_[ s ]; }
107 
108 
109 public:
110 
111  /// @brief
112  int
113  which_side( Vector const vec ) const;
114 
115  /// @brief calc surface areas only with beta-sheet
117  calc_sasa_bothsides( Pose const & pose, SS_Info2_COP const ssinfo, Real pore_radius=1.5 );
118 
119  /// @brief calc geometry of sheet, sheet_plane_, sheet_center_, ca_cb_orients_
120  void
121  calc_geometry( SS_Info2_COP const ssinfo );
122 
123 
124 public: //
125 
126  bool is_member( Size const s );
127 
128 private: // data
129 
130  /// @brief
132 
133  /// @brief
135 
136  /// @brief order of strand in sheet -> id of strand
138 
139  /// @brief order of strand in sheet -> id of strand
141 
142  /// @brief id of strand -> order of strand in sheet
143  std::map< Size, Size > strand_order_;
144 
145  /// @brief vector defining sheet plane
147 
148  /// @brief "center" of sheet
150 
152 
153  /// @brief geometries was calculated or not
155 
156 };
157 
158 
160 public:
161  ///@brief Automatically generated virtual destructor for class deriving directly from ReferenceCount
162  virtual ~SheetSet();
163 
164 
165  typedef core::Size Size;
166  typedef core::Real Real;
173 
174 
175 public:// construct/destruct
176 
177 
178  /// @brief default constructor
179  SheetSet();
180 
181  /// @brief value constructor
182  SheetSet( Sheets const & sheets );
183 
184  /// @brief value constructor
185  SheetSet( SS_Info2_COP const ssinfo, StrandPairingSetCOP const spairset );
186 
187  /// @brief copy constructor
188  SheetSet( SheetSet const & s );
189 
190  /// @brief return strand pairing
191  friend
192  std::ostream & operator<<( std::ostream & out, const SheetSet &s );
193 
194 
195 public:
196 
197 
198  void initialize( SS_Info2_COP const ssinfo, StrandPairingSetCOP const spairset );
199 
200 
201 public: // mutators
202 
203 
204  /// @brief
205  void push_back( SheetOP const sop );
206 
207  /// @brief
208  void clear();
209 
210 
211 public: // accessors
212 
213 
214  /// @brief
215  SheetOP sheet( Size const s ) const;
216 
217  /// @brief
218  inline Sheets sheets() const { return sheets_; }
219 
220  /// @brief return number of sheets
221  inline Size num_sheets() const { return sheets_.size(); }
222 
223  /// @brief return number of sheets
224  inline Size size() const { return sheets_.size(); }
225 
226  /// @brief return the id of sheet that a given strand belongs to.
227  Size which_sheet( Size const s ) const;
228 
229  /// @brief return strand pairing set
230  StrandPairingSet spairset() const;
231 
232 public:
233 
234 
235  /// @brief
236  void calc_geometry( SS_Info2_COP const ssinfo );
237 
238 
239 private://
240 
241 
242  /// @brief
243  void set_sheet_number() const;
244 
245 
246 private: // data
247 
248 
249  /// @brief sheet number given a strand
250  mutable std::map< Size, Size > sheet_number_;
251 
252  /// @brief
254 
255  /// @brief
257 
258 
259 };
260 
261 } // namespace topology
262 } // namespace fldsgn
263 } // namespace protocol
264 
265 #endif