18 #include <basic/Tracer.hh>
20 #include <utility/exit.hh>
26 static basic::Tracer
TR(
"protocols.cluster.APCluster");
63 utility::pointer::ReferenceCount(),
102 runtime_assert( 0 <= lambda && lambda < 1 );
106 bool is_converged =
false;
110 for(
core::Size itr = 1; itr <= maxits; ++itr) {
120 if( net_sim > max_net_sim ) {
122 max_net_sim = net_sim;
126 if( no_change_its >= convits ) {
133 TR.Debug <<
"Iteration " << itr <<
", " <<
get_num_exemplars() <<
" clusters, net_sim " << net_sim <<
", "
134 << changes <<
" changes, stable for " << no_change_its << std::endl;
139 TR <<
"Finished, " <<
get_num_exemplars() <<
" clusters, net_sim " << net_sim << std::endl;
209 pts_[e.
k].candidate_for.push_back(&e);
273 core::Real const max_as = ( max1_k == e.
k ? max2 : max1 );
276 e.
r_ik = (lambda)*e.
r_ik + (1-lambda)*new_r_ik;
286 core::Real const max_as = ( max1_k == i ? max2 : max1 );
289 p.
r_kk = (lambda)*p.
r_kk + (1-lambda)*new_r_kk;
306 runtime_assert( p.
sum >= 0 );
326 runtime_assert( sum >= 0 );
329 if( new_a_ik > 0 ) new_a_ik = 0;
330 e.
a_ik = (lambda)*e.
a_ik + (1-lambda)*new_a_ik;
335 p.
a_kk = (lambda)*p.
a_kk + (1-lambda)*new_a_kk;
393 if( e.
s_ik > max_s ) {
438 template<
typename T>
inline void write1(FILE * f,
T t)
439 {
if (fwrite(&t,
sizeof(
T), 1, f) != 1){ assert(
false); } }
440 template<
typename T>
inline void read1(FILE * f,
T &
t)
441 {
if (fread(&t,
sizeof(
T), 1, f) != 1){ assert(
false); } }
447 FILE* f = fopen( filename.c_str(),
"wb" );
448 if( f == NULL )
return false;
471 FILE* f = fopen( filename.c_str(),
"rb" );
472 if( f == NULL )
return false;