23 #include <ObjexxFCL/FArray2D.hh>
24 #include <ObjexxFCL/string.functions.hh>
26 #include <basic/Tracer.hh>
33 using namespace ObjexxFCL;
35 static basic::Tracer
tr(
"core.chemical.rna.RNA_ResidueType");
149 std::cout <<
"residue_type_->atoms_last_controlled_by_chi(1).size()=" <<
residue_type_->atoms_last_controlled_by_chi(1).size() << std::endl;
150 std::cout <<
"base_atom_list_.size()=" <<
base_atom_list_.size() << std::endl;
151 utility_exit_with_message(
"(residue_type_->atoms_last_controlled_by_chi(1).size()+1)!= base_atom_list_.size()" );
169 if(4!=
residue_type_->nchi()) utility_exit_with_message(
"is_RNA_==true but nchi()=" +ObjexxFCL::string_of(
residue_type_->nchi())+
"!=4");
170 if(chi>
residue_type_->nchi()) utility_exit_with_message(
"chi>residue_type_->nchi()");
171 if(chi<1) utility_exit_with_message(
"chi<1");
174 chi_order.push_back(1000);
175 chi_order.push_back(1);
176 chi_order.push_back(100);
177 chi_order.push_back(10);
179 if(last_controlling_chi[ atomno ]!=0){
180 if( chi_order[ last_controlling_chi[ atomno ] ] > chi_order[ chi ] )
return;
186 if( last_controlling_chi[ atomno ] == chi ) utility_exit_with_message(
"last_controlling_chi[ atomno ] == chi");
199 last_controlling_chi[ atomno ] = chi;
202 for (
Size ii = 1; ii <= nbrs.size(); ++ii ) {
220 last_controlling_chi.clear();
221 atoms_last_controlled_by_chi.clear();
229 std::fill( last_controlling_chi.begin(), last_controlling_chi.end(), 0 );
231 for (
Size ii = nchi; ii >= 1; --ii ) {
237 for (
Size jj = 1; jj <= ii_nbrs.size(); ++jj ) {
238 Size const jj_atom = ii_nbrs[ jj ];
239 if (
residue_type_->atom_base( jj_atom ) == iiat3 && iiat3base != jj_atom ) {
250 if ( last_controlling_chi[ ii ] != 0 ) {
251 ++natoms_for_chi[ last_controlling_chi[ ii ] ];
256 atoms_last_controlled_by_chi.resize( nchi );
257 for (
Size ii = 1; ii <= nchi; ++ii ) {
258 atoms_last_controlled_by_chi[ ii ].clear();
259 atoms_last_controlled_by_chi[ ii ].reserve( natoms_for_chi[ ii ] );
264 if ( last_controlling_chi[ ii ] != 0 ) {
265 atoms_last_controlled_by_chi[ last_controlling_chi[ ii ]].push_back( ii );