43 #include <ObjexxFCL/FArray1D.hh>
44 #include <utility/exit.hh>
48 #include <numeric/xyzVector.hh>
50 #include <utility/vector1.hh>
81 well_depth_burial_( -0.05 ),
82 well_depth_exposed_( 0.01 ),
83 burial_function_( new constraints::
FadeFunc( -10.0 , dist_cutoff_, dist_fade_, 1.0 ) )
100 using namespace core::chemical;
171 if ( !rsd1.
is_RNA() )
return;
172 if ( !rsd2.
is_RNA() )
return;
179 ObjexxFCL::FArray1D <bool>
const & rna_data_backbone_burial( rna_data_info.backbone_burial() );
180 ObjexxFCL::FArray1D <bool>
const & rna_data_backbone_exposed( rna_data_info.backbone_exposed() );
182 if (rna_data_backbone_burial.size() == 0.0 )
return;
184 assert( rna_data_backbone_burial.size() == pose.
total_residue() );
186 if ( rna_data_backbone_burial( rsd1.
seqpos() ) ) {
188 }
else if ( rna_data_backbone_exposed( rsd1.
seqpos() ) ) {
193 if ( rna_data_backbone_burial( rsd2.
seqpos() ) ) {
195 }
else if ( rna_data_backbone_exposed( rsd2.
seqpos() ) ) {
209 bool is_coarse = ( rsd_buried.
is_coarse() );
213 Size const num_sugar_atoms( atom_numbers_sugar.size() );
215 for (
Size j = 1; j <= num_sugar_atoms; j++ ) {
222 Real const dist = ( other_atom - sugar_atom ).length();
225 score += burial_score;
266 if ( ! rsd1.is_RNA() )
return;
268 if ( m > rsd1.nheavyatoms() )
return;
272 ObjexxFCL::FArray1D <bool>
const & rna_data_backbone_burial( rna_data_info.backbone_burial() );
273 ObjexxFCL::FArray1D <bool>
const & rna_data_backbone_exposed( rna_data_info.backbone_exposed() );
275 if (rna_data_backbone_burial.size() == 0.0 )
return;
277 assert( rna_data_backbone_burial.size() == pose.
total_residue() );
279 Vector const heavy_atom_i( rsd1.xyz( m ) );
281 bool const pos1_fixed( domain_map( i ) != 0 );
287 EnergyGraph const & energy_graph( energies.energy_graph() );
290 iter = energy_graph.get_node( i )->const_edge_list_begin(),
292 iter != itere; ++iter ) {
294 Size const j( (*iter)->get_other_ind( i ) );
296 if ( pos1_fixed && domain_map(i) == domain_map(j) )
continue;
300 if ( ! rsd2.is_RNA() )
continue;
305 for (
Size n = 1; n <= rsd2.nheavyatoms(); ++n ) {
306 Vector const heavy_atom_j( rsd2.xyz( n ) );
307 Vector r = heavy_atom_j - heavy_atom_i;
308 Real const dist = r.length();
311 Vector const force_vector_i = deriv * r / dist;
312 Vector const f1 = cross( force_vector_i, heavy_atom_j );
313 Vector const f2 = force_vector_i;
323 for (
Size n = 1; n <= rsd2.nheavyatoms(); ++n ) {
324 Vector const heavy_atom_j( rsd2.xyz( n ) );
325 Vector r = heavy_atom_j - heavy_atom_i;
326 Real const dist = r.length();
329 Vector const force_vector_i = deriv * r / dist;
330 Vector const f1 = cross( force_vector_i, heavy_atom_j );
331 Vector const f2 = force_vector_i;
340 if ( rna_data_backbone_burial( j ) ) {
342 for (
Size n = 1; n <= rsd2.nheavyatoms(); ++n ) {
346 Vector const heavy_atom_j( rsd2.xyz( n ) );
347 Vector r = heavy_atom_j - heavy_atom_i;
348 Real const dist = r.length();
351 Vector const force_vector_j = deriv * (-r) / dist;
352 Vector const f1 = -1.0 * cross( force_vector_j, heavy_atom_i );
353 Vector const f2 = -1.0 * force_vector_j;
361 if ( rna_data_backbone_exposed( j ) ) {
363 for (
Size n = 1; n <= rsd2.nheavyatoms(); ++n ) {
367 Vector const heavy_atom_j( rsd2.xyz( n ) );
368 Vector r = heavy_atom_j - heavy_atom_i;
369 Real const dist = r.length();
372 Vector const force_vector_j = deriv * (-r) / dist;
373 Vector const f1 = -1.0 * cross( force_vector_j, heavy_atom_i );
374 Vector const f2 = -1.0 * force_vector_j;