18 #include <utility/vector1.hh>
43 #include <numeric/xyzVector.hh>
47 #include <basic/Tracer.hh>
53 #include <numeric/random/random.hh>
66 static basic::Tracer
TR(
"protocols.rna.HelixAssembler" ) ;
73 static numeric::random::RandomGenerator
RG(17720);
75 RNA_HelixAssembler::RNA_HelixAssembler():
77 random_perturbation_( false ),
78 minimize_all_( false ),
79 use_phenix_geo_( false ),
80 ideal_jump(
"RT -0.994805 -0.0315594 0.0967856 -0.0422993 0.992919 -0.111004 -0.092597 -0.114522 -0.989096 6.34696 -0.449942 0.334582 " ),
81 rsd_set( core::chemical::
ChemicalManager::get_instance()->residue_type_set( core::chemical::
RNA ) ),
82 ALPHA_A_FORM( -64.11),
86 EPSILON_A_FORM( -150.17),
91 perturb_amplitude_( 10.0 ),
93 model_and_remove_capping_residues_( true )
95 Mover::type(
"RNA_HelixAssembler");
123 return "RNA_HelixAssembler";
145 using namespace core::pose;
146 using namespace core::kinematics;
148 Size seq_length( full_sequence.size() );
149 std::string sequence1( full_sequence.substr( 0, seq_length/2 ) );
150 std::string sequence2( full_sequence.substr( seq_length/2, seq_length ) );
153 sequence1 =
"g" + sequence1 +
"c";
154 sequence2 =
"g" + sequence2 +
"c";
159 std::cout <<
"SEQ1 " << sequence1 << std::endl;
160 std::cout <<
"SEQ2 " << sequence2 << std::endl;
163 Size const numres = sequence1.size();
164 assert( sequence2.size() == numres );
183 if (
verbose_) std::cout << j << std::endl;
187 using namespace core::id;
192 for (
Size n = 2; n <= numres; n++ ) {
193 std::cout <<
"Building on base pair: " << n << std::endl;
216 using namespace core::id;
238 using namespace core::conformation;
239 using namespace core::chemical;
240 using namespace core::id;
311 using namespace core::scoring;
312 using namespace core::optimization;
315 runtime_assert( cst_weight != 0 );
318 float const dummy_tol( 0.0000025);
319 bool const use_nblist(
false );
332 mm.set_jump(
false );
333 for (
Size i = n-1; i <= n+2; i++ ) {
334 mm.set_bb( i,
true );
335 mm.set_chi( i,
true );
340 minimizer.run( pose, mm, *
scorefxn, options );
343 minimizer.run( pose, mm, *
scorefxn, options );
356 pairings.push_back( std::make_pair( n, n+1) );
357 pairings.push_back( std::make_pair( n-1, n+2) );
369 using namespace core::kinematics;
374 f.
new_jump( nres/2-1, nres/2+2, nres/2);