26 #include <numeric/angle.functions.hh>
27 #include <numeric/interpolation/periodic_range/half/interpolation.hh>
28 #include <numeric/random/random.hh>
29 #include <numeric/conversions.hh>
32 #include <utility/pointer/ReferenceCount.hh>
33 #include <utility/io/izstream.hh>
36 #include <ObjexxFCL/FArray1D.hh>
37 #include <ObjexxFCL/FArray2D.hh>
38 #include <ObjexxFCL/FArray4D.hh>
39 #include <ObjexxFCL/string.functions.hh>
41 #include <basic/basic.hh>
42 #include <basic/Tracer.hh>
44 static basic::Tracer
tr(
"core.scoring.dna.DNABFormPotential" );
46 using namespace ObjexxFCL;
55 TorsionFourierComponent::compute(
Real const torsion_angle,
Real & return_deriv )
const
57 using numeric::conversions::radians;
62 Real const trig_term( radians( ( periodicity()*torsion_angle ) - phase() ) );
64 score = factor()*( 1.0 + cos( trig_term ) );
65 return_deriv = -1.0*factor()*periodicity()*sin( trig_term );
73 DNABFormPotential::DNABFormPotential()
76 init_dna_bform_data();
83 DNABFormPotential::init_dna_bform_data()
117 bb_fourier_data.push_back( alpha_components );
118 bb_fourier_data.push_back( beta_components );
119 bb_fourier_data.push_back( gamma_components );
120 bb_fourier_data.push_back( delta_components );
121 bb_fourier_data.push_back( epsilon_components );
122 bb_fourier_data.push_back( zeta_components );
129 DNABFormPotential::eval_dna_bform_bb_torsion_score_residue(
133 Size const torsion_id
136 using namespace numeric;
144 Real total_deriv( 0.0 );
147 for(
Size icomp( 1 ) ; icomp <= this_data.size() ; ++icomp ) {
148 Real this_deriv( 0.0 );
149 total_score += (this_data[icomp])->compute( rsd.
mainchain_torsion( torsion_id ), this_deriv );
150 total_deriv += this_deriv;
154 dscore_dchi = total_deriv;
161 DNABFormPotential::eval_dna_bform_chi_torsion_score_residue(
167 using namespace numeric;
171 Real chi = basic::unsigned_periodic_range( (rsd.
chi())[1], 360.0 );
179 if( chi > 0.0 && chi < 90.0 ) {
189 Real pot_depth( 1.0 );
210 score = (pot_depth*( chi - pot_min )*( chi - pot_min ))/( pot_width * pot_width );
211 dscore_dchi = -1.0*(pot_depth/(pot_width*pot_width))*( chi - pot_min );