17 #include <core/scoring/methods/ResidualDipolarCouplingEnergyRigidSegmentsCreator.hh>
30 #include <numeric/numeric.functions.hh>
32 #include <numeric/xyzVector.hh>
38 #include <utility/vector1.hh>
39 #include <utility/exit.hh>
40 #include <basic/Tracer.hh>
43 #include <ObjexxFCL/char.functions.hh>
44 #include <ObjexxFCL/string.functions.hh>
47 #include <utility/io/ozstream.hh>
49 #include <basic/options/option.hh>
50 #include <basic/options/keys/rdc.OptionKeys.gen.hh>
57 #include <utility/string_util.hh>
58 #include <ObjexxFCL/format.hh>
61 static basic::Tracer
tr(
"core.scoring.ResidualDipolarCoupling");
67 using namespace ObjexxFCL::fmt;
72 ResidualDipolarCouplingEnergyRigidSegmentsCreator::create_energy_method(
79 ResidualDipolarCouplingEnergyRigidSegmentsCreator::score_types_for_method()
const {
91 parent( new ResidualDipolarCouplingEnergyRigidSegmentsCreator )
132 residual_dipolar_coupling::RDC_lines::const_iterator it;
134 for( it = All_RDC_lines.begin(); it != All_RDC_lines.end(); ++it) {
137 tr.Trace <<
"insert in atom-map " << atom1 <<
" " << atom2 << std::endl;
163 rdc_info =
new ResidualDipolarCouplingRigidSegments;
182 if ( basic::options::option[ basic::options::OptionKeys::rdc::iterate_weights ].user() ) {
183 Real const sigma2( basic::options::option[ basic::options::OptionKeys::rdc::iterate_weights ] );
184 Real const tol( basic::options::option[ basic::options::OptionKeys::rdc::iterate_tol ] );
185 bool const reset( basic::options::option[ basic::options::OptionKeys::rdc::iterate_reset ] );
188 if ( basic::options::option[ basic::options::OptionKeys::rdc::dump_weight_trajectory ].user() ) {
189 std::string const filename( basic::options::option[ basic::options::OptionKeys::rdc::dump_weight_trajectory ]() );
190 utility::io::ozstream out( filename , std::ios_base::out | std::ios_base::app );
192 for ( it = All_RDC_lines.begin(); it != All_RDC_lines.end(); ++it) {
193 out << RJ( 4, it->weight()) <<
" ";
223 runtime_assert( rdc_nr <= All_RDC_lines.size() );
224 RDC const& rdc_data( All_RDC_lines[ rdc_nr ] );
228 if ( aid.rsd() == rdc_data.res1() && utility::trimmed_compare( rsd1.
atom_name( aid.atomno() ), rdc_data.atom1() ) ) {
229 fij = rdc_data.fij();
230 }
else if ( aid.rsd() == rdc_data.res2() && utility::trimmed_compare( rsd2.
atom_name( aid.atomno() ), rdc_data.atom2() ) ){
231 fij = -rdc_data.fij();
241 F1 += score_weights[
rdc ] * f1;
242 F2 += score_weights[
rdc ] * f2;