29 #include <numeric/conversions.hh>
38 #include <ObjexxFCL/format.hh>
93 etable_energy_( etable_energy_in),
127 Size const at1hbegin,
129 Size const at2hbegin,
138 Atom const & atom1( res1.
atom( atomno1 ) );
139 Atom const & atom2( res2.
atom( atomno2 ) );
143 for (
Size i = at2hbegin; i<= at2hend; ++i )
152 for (
Size i = at1hbegin; i<= at1hend; ++i )
160 for (
Size j = at2hbegin; j<= at2hend; ++j ) {
180 if(rsd.
is_RNA()==
false)
return;
186 Real const weight=1.0;
201 for (
Size i=1; i <= rsdnheavyatoms; ++i ) {
203 for (
Size j=i+1; j <= rsdnheavyatoms; ++j ) {
206 bool base_phosphate_atom_pair=
false;
211 if(base_phosphate_atom_pair==
false)
continue;
214 std::cout <<
"rsd.name3()=" << rsd.
name3() <<
" rsd.seqpos() = " << rsd.
seqpos() << std::endl;
215 std::cout <<
"i= " << i <<
" j=" << j << std::endl;
216 std::cout <<
"rsd.atom_name(i)= " << rsd.
atom_name(i) <<
" rsd.atom_name(j)=" << rsd.
atom_name(j) << std::endl;
217 std::cout <<
"rsd.path_distance( i, j )=" << rsd.
path_distance( i, j ) << std::endl;
219 std::cout <<
"rsdnheavyatoms= " << rsdnheavyatoms << std::endl;
221 for (
Size atomno=1; atomno <= rsdnheavyatoms; ++atomno ) {
222 std::cout <<
"rsd.atom_name(" << atomno <<
" )= " << rsd.
atom_name(atomno) << std::endl;
225 std::cout <<
"rsd.nchi()=" << rsd.
nchi() << std::endl;
231 for(
Size chi_id=1; chi_id<=chi_atoms_list.size(); chi_id++){
232 std::cout << std::endl;
233 std::cout <<
"chi_atoms_list[" << chi_id<<
"].size()=" << chi_atoms_list[chi_id].size() << std::endl;
234 for(
Size n=1; n<=chi_atoms_list[chi_id].size(); n++){
235 Size const atomno=chi_atoms_list[chi_id][n];
236 std::cout <<
"rsd.atom_name(" << atomno <<
" )= " << rsd.
atom_name(atomno) << std::endl;
240 for(
Size chi_id=1; chi_id<=chi_atoms_list.size(); chi_id++){
241 std::cout << std::endl;
242 std::cout <<
"all_chi_atoms_list[" << chi_id<<
"].size()=" << all_chi_atoms_list[chi_id].size() << std::endl;
243 for(
Size n=1; n<=all_chi_atoms_list[chi_id].size(); n++){
244 Size const atomno=all_chi_atoms_list[chi_id][n];
245 std::cout <<
"rsd.atom_name(" << atomno <<
" )= " << rsd.
atom_name(atomno) << std::endl;
250 utility_exit_with_message(
"rsd.path_distance( i, j ) < 4");
262 if(diff_fa_atr_E>0.001 || diff_fa_atr_E<-0.001){
263 std::cout <<
"At least one of the atoms in the pair " << i <<
"," << j <<
" | res= " << rsd.
seqpos() <<
" is virtual";
264 std::cout <<
" but diff_fa_atr_E= " << diff_fa_atr_E <<
" is non-zero!" <<std::endl;
265 utility_exit_with_message(
"at least one of the atom in the pair is virtual BUT diff_fa_atr_E>0.001 || diff_fa_atr_E<-0.001");
270 if(diff_fa_rep_E>0.001 || diff_fa_rep_E<-0.001){
271 std::cout <<
"At least one of the atoms in the pair " << i <<
"," << j <<
" | res= " << rsd.
seqpos() <<
" is virtual";
272 std::cout <<
" but diff_fa_rep_E= " << diff_fa_rep_E <<
" is non-zero!" <<std::endl;
273 utility_exit_with_message(
"at least one of the atom in the pair is virtual BUT diff_fa_rep_E>0.001 || diff_fa_rep_E<-0.001");
277 if ( dsq < Hydrogen_interaction_cutoff2 ) {
323 utility_exit_with_message(
"weights[ fa_intra_RNA_base_phos_sol ] != 0.0, but this term is not yet implemented!");
326 Size const seq_num =
id.rsd();
334 Real const cp_weight=1.0;
340 for (
Size nbr_atomno=1; nbr_atomno<=rsd.
natoms(); nbr_atomno++ ) {
345 bool base_phosphate_atom_pair=
false;
350 if(base_phosphate_atom_pair==
false)
continue;
352 if(rsd.
path_distance( nbr_atomno,
id.atomno() ) < 4) utility_exit_with_message(
"rsd.path_distance( nbr_atomno, id.atomno() ) < 4");
358 if ( dE_dR_over_r != 0.0 ) {
359 F1 += dE_dR_over_r * cp_weight * f1;
360 F2 += dE_dR_over_r * cp_weight * f2;
377 utility_exit_with_message(
"Illegal attempt to score with non-identical atom set between pose and etable " );
391 utility_exit_with_message(
"Illegal attempt to score with non-identical atom set between pose and etable " );