22 #include <basic/Tracer.hh>
26 #include <utility/vector1.hh>
32 static basic::Tracer
TR(
"protocols.UnfoldedStateEnergyCalculator.UnfoldedStateEnergyCalculatorUtil");
35 namespace unfolded_state_energy_calculator {
41 using namespace core::scoring;
42 using namespace utility;
54 if ( energy_terms[
ScoreType( i ) ] != 0 ) {
58 temp_energies.resize( unweighted_energies.size() );
60 for (
Size j( 1 ); j <= unweighted_energies.size(); ++j ) {
61 temp_energies[ j ] = unweighted_energies[ j ][
ScoreType( i ) ];
65 std::sort( temp_energies.begin(), temp_energies.end() );
77 TR <<
"NUM FRAGMENTS: " << unweighted_energies.size() << std::endl;
78 for (
Size i(1); i <= unweighted_energies.size(); ++i ) {
79 TR <<
"FRAG " << i <<
":\t" << unweighted_energies[ i ].weighted_string_of( energy_terms ) << std::endl;
83 TR <<
"MEAN UNFODLED ENERGIES: " << mean.weighted_string_of( energy_terms ) << std::endl;
84 TR <<
"MEDIAN UNFODLED ENERGIES: " << median.weighted_string_of( energy_terms ) << std::endl;
85 TR <<
"MODE UNFODLED ENERGIES: " << mode.weighted_string_of( energy_terms ) << std::endl;
86 TR <<
"BOLZMANN UNFOLDED ENERGIES: " << boltzmann.weighted_string_of( energy_terms ) << std::endl;
98 for (
Size i( 1 ); i <= data.size(); ++i ) {
103 return sum/data.size();
110 using namespace core;
119 using namespace core;
132 using namespace core;
133 using namespace utility;
136 Real T( 300.00 ),
R( 0.0019872 );
139 Real low_energy( data[ 1 ] );
141 energy_diffs.resize( data.size() );
142 for (
Size i( 1 ); i <= data.size(); ++i ) {
143 energy_diffs[ i ] = data[ i ] - low_energy;
148 bolzmann_factors.resize( energy_diffs.size() );
149 for (
Size i( 1 ); i <= energy_diffs.size(); ++i ) {
150 bolzmann_factors[ i ] = exp( ( -1 * energy_diffs[ i ] ) / ( R *
T ) );
154 Real sum( 0 ), avg( 0 );
155 for (
Size i( 1 ); i <= bolzmann_factors.size(); ++i ) {
156 sum += bolzmann_factors[ i ];
158 avg = sum/bolzmann_factors.size();
161 return (-1 * R *
T * log( avg ) ) + low_energy;