Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
HelixPairing.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/HelixPairing.hh
10 /// @brief header file of HelixPairing.cc
11 /// @author Nobuyasu Koga ( nobuyasu@u.washington.edu )
12 
13 #ifndef INCLUDED_protocols_fldsgn_topology_HelixPairing_hh
14 #define INCLUDED_protocols_fldsgn_topology_HelixPairing_hh
15 
16 // Unit headers
18 
19 // Project headers
20 #include <core/types.hh>
22 
23 // Utility headers
24 #include <utility/pointer/ReferenceCount.hh>
25 
26 #include <utility/vector1.hh>
27 #include <string>
28 
29 
30 namespace protocols {
31 namespace fldsgn {
32 namespace topology {
33 
35 public:
36 
38  typedef core::Size Size;
39  typedef core::Real Real;
42 
43 public:// construct/destruct
44 
45 
46  /// @brief default constructor
47  HelixPairing();
48 
49  /// @brief value constructor
51  Size const h1,
52  Size const h2,
53  char const o
54  );
55 
56 
57  /// @brief copy constructor
58  HelixPairing( String const & hp );
59 
60  /// @brief copy constructor
61  HelixPairing( HelixPairing const & hp );
62 
63  /// @brief default destructor
64  virtual ~HelixPairing();
65 
66  /// @brief clone this object
68 
69  /// @brief return strand pairing
70  friend
71  std::ostream & operator<<(std::ostream & out, const HelixPairing &hp);
72 
73 
74 public: //accessors
75 
76 
77  /// @brief the strand number of the 1st strand in strand pairing
78  inline Size h1() const { return h1_; }
79 
80  /// @brief the strand number of the 2nd strand in strand pairing
81  inline Size h2() const { return h2_; }
82 
83  /// @brief orientation, parallel or anti-parallel, of helix pairing
84  inline char orient() const { return orient_; }
85 
86  /// @brief HelixPairing is descripbed as s1()-s2().orient()
87  /// For example, 2-3.A means 2nd and 3rd helices make anti-parallel helix_pairing
88  inline String name() const { return name_; }
89 
90  /// @brief
91  inline Real dist() const { return dist_; }
92 
93  /// @brief
94  inline Real cross_angle() const { return cross_angle_; }
95 
96  /// @brief helix angle projected on sheet helices belongs to
97  inline Real align_angle() const { return align_angle_; }
98 
99  /// @brief is parallel
100  bool is_parallel() const;
101 
102 
103 public:
104 
105  /// @brief
106  void calc_geometry( SS_Info2_COP const ss_info );
107 
108 
109  //private: // initialize
110 
111 
112  void initialize();
113 
114 
115 private: // data
116 
117 
118  /// @brief Helix number of first strand in the strand pair
120 
121  /// @brief Helix number of second strand in the strand pair
123 
124  /// @brief two helices make a pair by parallel, "P", anti parallel, "A", and if not defined, "N"
125  char orient_;
126 
127  /// @brief helix_pairing as in the style: h1_-h2_.orient_
129 
130  /// @brief
132 
133  /// @brief
135 
136  /// @brief
138 
139  /// @brief
141 
142 
143 };
144 
145 
146 ////////////////////////////////////////////////////////////////////////////////////////////////////////////
148 public: // typedef
149 
150 
152  typedef core::Size Size;
154 
155 public:// construct/destruct
156 
157 
158  /// @brief default constructor
159  HelixPairingSet();
160 
161  /// @brief value constructor
163 
164  /// @brief value constructor
166 
167  /// @brief copy constructor
168  HelixPairingSet( HelixPairingSet const & s );
169 
170  /// @brief default destructor
171  virtual ~HelixPairingSet();
172 
173  /// @brief clone this object
174  HelixPairingSetOP clone() const;
175 
176  /// @brief return strand pairing
177  friend std::ostream & operator<<( std::ostream & out, const HelixPairingSet &s );
178 
179 
180 public: // mutators
181 
182 
183  /// @brief add HelixPairingOP to StrandPairingSet
184  void push_back( HelixPairingOP const hop );
185 
186  /// @brief clear data of this HelixPairingSet
187  void clear();
188 
189 
190 public: // accessors
191 
192 
193  /// @brief return one of the strand_pairings given a number
194  HelixPairingOP helix_pairing( Size const s ) const;
195 
196  /// @brief return the pointer of the helix pairing, given the two helix numbers of h1, and h2
197  /// if h1 and h2 does not make pairing, return 0
198  HelixPairingOP helix_pairing( Size const h1, Size const h2 );
199 
200  /// @brief return all helix pairings
201  HelixPairings const & helix_pairings() const;
202 
203  /// @brief return the size of helix_pairings_
204  Size size() const;
205 
206 
207 public:
208 
209 
210  /// @brief calc geomtry of helix pairing
211  void calc_geometry( SS_Info2_COP ss_info );
212 
213  /// @brief the name of HelixPairingSet is expressed by the combination of helix pairings
214  String name() const;
215 
216 
217 
218 private:
219 
220 
221  /// @brief create map _strand_pairings_
223 
224 
225 private:// data
226 
227 
228  /// @brief vector1 including owning pointers of HelixPairing
230 
231  /// @brief the name of HelixPairingSet is expressed by the combination of helix pairings
233 
234  /// @brief the total number of strands included in HelixPairingSet
236 
237  /// @brief whether the map_helix_pairings_ is initialized or not
239 
240  /// @brief 2D table of the pointer of helix pairing, which is sorted by the helix number
242 
243 
244 }; // HelixPairingSet
245 
246 } // namespace topology
247 } // namespace fldsgn
248 } // namespace protocols
249 
250 #endif