Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
RNA_SilentStruct.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 // :noTabs=false:tabSize=4:indentSize=4:
4 //
5 // (c) Copyright Rosetta Commons Member Institutions.
6 // (c) This file is part of the Rosetta software suite and is made available under license.
7 // (c) The Rosetta software is developed by the contributing members of the Rosetta Commons.
8 // (c) For more information, see http://www.rosettacommons.org. Questions about this can be
9 // (c) addressed to University of Washington UW TechTransfer, email: license@u.washington.edu.
10 
11 /// @file core/io/silent/RNA_SilentStruct.hh
12 ///
13 /// @brief Representation of rosetta++ RNA silent-file structures.
14 /// @author James Thompson
15 /// @author Rhiju Das
16 
17 #ifndef INCLUDED_core_io_silent_RNA_SilentStruct_hh
18 #define INCLUDED_core_io_silent_RNA_SilentStruct_hh
19 
20 // mini headers
21 #include <core/types.hh>
22 #include <core/pose/Pose.fwd.hh>
23 
24 // AUTO-REMOVED #include <core/conformation/Residue.fwd.hh>
25 
28 #include <core/kinematics/Jump.hh>
29 
31 
32 
33 // AUTO-REMOVED #include <basic/OStream.fwd.hh>
34 
35 // AUTO-REMOVED #include <utility/vector1.hh>
36 #include <utility/pointer/ReferenceCount.hh>
37 
38 
39 // C++ Headers
40 #include <cstdlib>
41 #include <iostream>
42 #include <cassert>
43 #include <vector>
44 #include <string>
45 #include <map>
46 #include <algorithm>
47 
48 #include <utility/vector1.hh>
49 
50 
51 /////////////////////////////////////////////////////////////////////////
52 // Following should be easy to generalize for protein, RNA, DNA.
53 // This may eventually be critical as we start to look at mixed systems.
54 // For now, just for safety and (perhaps) to avoid confusion,
55 // we'll go ahead and make this a separate class.
56 // -- Rhiju, April 2008
57 /////////////////////////////////////////////////////////////////////////
58 
59 namespace core {
60 namespace io {
61 namespace silent {
62 
64 
65 public:
66 
67  /// @brief Constructors.
68  RNA_SilentStruct( Size const nres_in )
69  {
70  nres( nres_in );
71  fullatom_ = true;
73  resize( nres_in );
74  }
75 
76  // RNA_SilentStruct( RNA_SilentStruct const & src );
77 
79  {
80  nres( 0 );
81  fullatom_ = true;
83  decoy_tag( "empty" );
84  }
85 
87  core::pose::Pose const & pose,
88  std::string tag = "empty_tag",
89  bool fa = true
90  );
91 
92  /// @brief Re-dimension the storage capacity of this RNA_SilentStruct to the given number of residues.
93  void resize(
94  Size const nres_in
95  );
96 
97  virtual SilentStructOP clone() const {
98  return new RNA_SilentStruct( *this );
99  };
100 
101  // destructor
103 
104  /// @brief Test if this RNA_SilentStruct is equal to the given RNA_SilentStruct in terms of conformation.
105  /// Doesn't check energies.
107  RNA_SilentStruct const & src
108  );
109 
110  /// @brief Tells this RNA_SilentStruct object to initialize itself from the given set of lines. Lines should
111  /// be of the format
112  virtual bool init_from_lines(
113  utility::vector1< std::string > const & lines,
114  SilentFileData & container
115  );
116 
117  /// @brief Configure the conformation of the given Pose with the conformational data within this RNA_SilentStruct.
118  /// Calls pose.clear() and rebuilds Pose from scratch using FA_STANDARD residue types.
119  virtual void fill_pose(
120  core::pose::Pose & pose
121  ) const;
122 
123  /// @brief Configure the conformation of the given Pose with the conformational data within
124  /// this RNA_SilentStruct. Calls pose.clear() and rebuilds Pose from scratch using the
125  /// user-specified residue types.
126  virtual void fill_pose(
127  core::pose::Pose & pose,
128  core::chemical::ResidueTypeSet const & residue_set
129  ) const;
130 
131  //virtual void fill_pose(
132  // core::pose::Pose & pose,
133  // core::chemical::ResidueTypeSet const & residue_set,
134  // bool const use_input_pose
135  //) const;
136 
137  /// @brief opposite of fill_pose
138  virtual void fill_struct( core::pose::Pose const & pose, std::string tag );
139 
140  /// @brief print header information
141  virtual void print_header( std::ostream& out ) const;
142 
143  /// @brief Prints the conformation information within this RNA_SilentStruct to the given std::ostream.
144  virtual void print_conformation( std::ostream & output ) const;
145 
146  /// @brief data getters/setters
147  bool fullatom() const {
148  return fullatom_;
149  }
150 
151  void fullatom( bool fullatom ) {
153  }
154 
155  char secstruct( Size seqpos ) const {
156  return secstruct_[seqpos];
157  }
158 
160  return mainchain_torsions_[ seqpos ];
161  }
162 
164  return chi_torsions_[ seqpos ];
165  }
166 
167  Real mainchain_torsion( Size const & seqpos, Size const & torsion_num ) const {
168  return mainchain_torsions_[ seqpos ][ torsion_num ];
169  }
170 
171  Real chi( Size const & seqpos, Size const & torsion_num ) const {
172  return chi_torsions_[ seqpos ][ torsion_num ];
173  }
174 
175  Vector coords( Size seqpos ) const {
176  return coords_[seqpos];
177  }
178 
180  return coords_;
181  }
182 
183  void set_secstruct( Size const & seqpos, char const & ss ) {
184  secstruct_[seqpos] = ss;
185  }
186 
187  void set_mainchain_torsions( Size const & seqpos, utility::vector1< Real > & torsions ) {
188  mainchain_torsions_[seqpos] = torsions;
189  }
190 
191  void set_chi_torsions( Size const & seqpos, utility::vector1< Real > & torsions ) {
192  chi_torsions_[seqpos] = torsions;
193  }
194 
195  void set_coords( Size const & seqpos, Vector const & coords ) {
196  coords_[seqpos] = coords;
197  }
198 
199  void set_non_main_chain_sugar_coords( Size const & seqpos, utility::vector1< Vector > const & vecs ) {
201  non_main_chain_sugar_coords_[seqpos] = vecs;
202  }
203 
205  fold_tree_ = f;
206  }
207 
208  kinematics::FoldTree const& fold_tree( ) const {
209  return fold_tree_;
210  }
211 
212  void add_jump( kinematics::Jump const & jump ) {
213  jumps_.push_back( jump );
214  }
215 
216  kinematics::Jump const & jump( Size const & jump_num ) const {
217  return jumps_[ jump_num ];
218  }
219 
220 
221  /// @brief returns the positions of the CA atoms in this RNA_SilentStruct.
222  /// Useful for RMS calculations.
223  virtual ObjexxFCL::FArray2D< Real > get_CA_xyz() const;
224 
225  // model quality-related methods.
226  virtual Real CA_rmsd( RNA_SilentStruct other_pss );
227 
228  /// @brief calculates the RMSD between the C-alpha atoms of a Pose built from the torsions in this
229  /// RNA_SilentStruct and the C-alpha atoms from this RNA_SilentStruct.
230  virtual Real get_debug_rmsd();
231 
232 protected:
233  bool fullatom_;
235 
242 
244 
245 }; // class RNA_SilentStruct
246 
247 } // namespace silent
248 } // namespace io
249 } // namespace core
250 
251 #endif