Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
SheetFoldTypeManager.cc
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/SheetFoldTypeManager.cc
10 /// @brief
11 /// @author Nobuyasu Koga ( nobuyasu@u.washington.edu )
12 
13 // unit headers
15 
16 // project headers
17 // AUTO-REMOVED #include <core/types.hh>
18 
19 // utility headers
20 #include <utility/exit.hh>
21 // AUTO-REMOVED #include <utility/vector1.hh>
22 
23 // C++ headers
24 #include <iostream>
25 
26 namespace protocols {
27 namespace fldsgn {
28 namespace topology {
29 
31  initialized_( false )
32 {
33  initialize();
34 }
35 
36 void
38 {
41  initialized_ = true;
42 }
43 
44 /// @brief initialize the SheetFoldType name vector and map
45 void
47 {
48  /// 2strands
49  name2foldtype_[ "BAB" ] = BABx1;
50 
51  /// 3strands
52  // parallel
53  name2foldtype_[ "RosI" ] = RosI;
54  name2foldtype_[ "RosO" ] = RosO;
55  name2foldtype_[ "BABx2" ] =BABx2;
56 
57  // mixture
58  name2foldtype_[ "Thio" ] = Thio;
59  name2foldtype_[ "BFr" ] = BFr;
60  name2foldtype_[ "EFr" ] = EFr;
61 
62  // anti-parallel
63  name2foldtype_[ "CFr" ] = CFr;
64  name2foldtype_[ "DFr" ] = DFr;
65 
66  // 4strands
67  // parallel
68  name2foldtype_[ "Rsmn2x2" ] = Rsmn2x2;
69  name2foldtype_[ "Rsmn3x3_Half" ] = Rsmn3x3_Half;
70  name2foldtype_[ "BABx3" ] =BABx3;
71 
72  // mixture
73  name2foldtype_[ "PG_like" ] = PG_like;
74  name2foldtype_[ "Thioredoxin" ] = Thioredoxin;
75  name2foldtype_[ "BAB_CFr" ] = BAB_CFr;
76  name2foldtype_[ "DFr_BAB" ] = DFr_BAB;
77  name2foldtype_[ "BEFr" ] = BEFr;
78 
79  // anti-parallel
80  name2foldtype_[ "Fd_like" ] = Fd_like;
81  name2foldtype_[ "RFd_like" ] = RFd_like;
82  name2foldtype_[ "CDFr" ] = CDFr;
83  name2foldtype_[ "HPN_CFr" ] = HPN_CFr;
84  name2foldtype_[ "DFr_HPN" ] = DFr_HPN;
85 
86  // 5strands
87  // parallel
88  name2foldtype_[ "Flavodoxin" ] = Flavodoxin;
89  name2foldtype_[ "Ploop2x3" ] = Ploop2x3;
90 
91  // mixture
92  name2foldtype_[ "RNAseH" ] = RNAseH;
93 
94  // anti-parallel
95  name2foldtype_[ "Top7" ] = Top7;
96 
97  // 6strands
98  name2foldtype_[ "Rsmn3x3" ] = Rsmn3x3;
99  name2foldtype_[ "Ploop3x3" ] = Ploop3x3;
100 
101  ///
102  name2foldtype_[ "UNFOLD" ] = UNFOLD;
103 
104  ///
105  name2foldtype_[ "NO_STRANDS" ] = NO_STRANDS;
106 
107  ///
108  name2foldtype_[ "UNKNOWN" ] = UNKNOWN;
109 
110  assert( name2foldtype_.size() == n_fold_types );
111 
112  foldtype2name_.resize( n_fold_types );
113 
114  for ( std::map< String, SheetFoldType >::const_iterator iter = name2foldtype_.begin(),
115  iter_end = name2foldtype_.end(); iter != iter_end; ++iter ) {
116  foldtype2name_[ iter->second ] = iter->first;
117  }
118 
119 }
120 
121 /// @brief give a string name of SheetFoldType and return its enum type
124 {
125  if( ! initialized_ ) initialize();
126  std::map< String, SheetFoldType >::const_iterator iter( name2foldtype_.find( name ) );
127  if ( iter == name2foldtype_.end() ) {
128  utility_exit_with_message("unrecognized foldtype type "+name);
129  }
130  return iter->second;
131 }
132 
133 /// @brief give a SheetFoldType and return its string name
136 {
137  if( ! initialized_ ) initialize();
138  return foldtype2name_[ foldtype ];
139 }
140 
141 /// @brief check whether the string name of strand pairings is in SheetFoldType or not
142 bool
144 {
145  if( ! initialized_ ) initialize();
146  std::map< String, SheetFoldType >::const_iterator iter( name2foldtype_.find( name ) );
147  return iter != name2foldtype_.end();
148 }
149 
150 /// @brief initialize the map of strand pairings and SheetFoldType
151 void
153 {
154  // 2strands
155  spairs2foldtype_[ "1-2.P" ] = BABx1;
156 
157  /// 3strands
158  spairs2foldtype_[ "1-2.P;1-3.P" ] = RosI;
159  spairs2foldtype_[ "1-3.P;2-3.P" ] = RosO;
160  spairs2foldtype_[ "1-2.P;2-3.P" ] = BABx2;
161 
162  spairs2foldtype_[ "1-2.P;1-3.A" ] = Thio;
163  spairs2foldtype_[ "1-2.P;2-3.A" ] = BFr;
164  spairs2foldtype_[ "1-2.A;2-3.P" ] = EFr;
165 
166  spairs2foldtype_[ "1-3.A;2-3.A" ] = CFr;
167  spairs2foldtype_[ "1-2.A;1-3.A" ] = DFr;
168 
169  // 4strands
170  spairs2foldtype_[ "1-2.P;1-3.P;3-4.P" ] = Rsmn2x2;
171  spairs2foldtype_[ "1-2.P;1-4.P;2-3.P" ] = Rsmn3x3_Half;
172  spairs2foldtype_[ "1-2.P;2-3.P;3-4.P" ] = BABx3;
173 
174  spairs2foldtype_[ "1-2.A;1-4.P;3-4.A" ] = PG_like;
175  spairs2foldtype_[ "1-2.P;1-3.A;3-4.A" ] = Thioredoxin;
176  //spairs2foldtype_[ "1-2.P;1-3.A;3-4.A" ] = L30E_like;
177  spairs2foldtype_[ "1-2.P;2-4.A;3-4.A" ] = BAB_CFr;
178  spairs2foldtype_[ "1-2.A;1-3.A;3-4.P" ] = DFr_BAB;
179  spairs2foldtype_[ "1-2.A;2-3.P;3-4.A" ] = BEFr;
180 
181  spairs2foldtype_[ "1-3.A;1-4.A;2-3.A" ] = Fd_like;
182  spairs2foldtype_[ "1-4.A;2-3.A;2-4.A" ] = RFd_like;
183  spairs2foldtype_[ "1-3.A;2-3.A;2-4.A" ] = CDFr;
184  spairs2foldtype_[ "1-2.A;2-4.A;3-4.A" ] = HPN_CFr;
185  spairs2foldtype_[ "1-2.A;1-3.A;3-4.A" ] = DFr_HPN;
186 
187  // 5strands
188  spairs2foldtype_[ "1-2.P;1-3.P;3-4.P;4-5.P" ] = Flavodoxin;
189  spairs2foldtype_[ "1-3.P;1-4.P;2-3.P;4-5.P" ] = Ploop2x3;
190 
191  spairs2foldtype_[ "1-2.A;2-3.A;1-4.P;4-5.P" ] = RNAseH;
192 
193  spairs2foldtype_[ "1-2.A;2-4.P;3-5.A;4-5.A" ] = Top7;
194 
195  // 6strands
196  spairs2foldtype_[ "1-2.P;1-4.P;2-3.P;4-5.P;5-6.P" ] = Rsmn3x3;
197  spairs2foldtype_[ "1-4.P;1-5.P;2-3.P;2-4.P;5-6.P" ] = Ploop3x3;
198 
199  ///
200  spairs2foldtype_[ "UNFOLD" ] = UNFOLD;
201 
202  ///
204 
205  ///
206  spairs2foldtype_[ "UNKNOWN" ] = UNKNOWN;
207 
208  assert( spairs2foldtype_.size() == n_fold_types );
209 
210  foldtype2spairs_.resize( n_fold_types );
211 
212  for ( std::map< String, SheetFoldType >::const_iterator iter = spairs2foldtype_.begin(),
213  iter_end = spairs2foldtype_.end(); iter != iter_end; ++iter ) {
214  foldtype2spairs_[ iter->second ] = iter->first;
215 
216  }
217 
218 }
219 
220 /// @brief give a string of strand_pairings and return its enum type
223 {
224  if( ! initialized_ ) initialize();
225  std::map< String, SheetFoldType >::const_iterator iter( spairs2foldtype_.find( spairs ) );
226  if ( iter == spairs2foldtype_.end() ) {
227  return UNKNOWN;
228  //utility_exit_with_message("unrecognized foldtype type "+spairs);
229  }
230  return iter->second;
231 }
232 
233 /// @brief give a SheetFoldType and return its string of strand_pairings
234 
237 {
238  if( ! initialized_ ) initialize();
239  return foldtype2spairs_[ foldtype ];
240 }
241 
242 /// @brief check whether the string spairs of strand_pairings is in SheetFoldType or not
243 bool
245 {
246  if( ! initialized_ ) initialize();
247  std::map< String, SheetFoldType >::const_iterator iter( spairs2foldtype_.find( spairs ) );
248  return iter != spairs2foldtype_.end();
249 }
250 
251 } // namespace topology
252 } // namespace fldsgn
253 } // namespace protocols