28 #include <basic/Tracer.hh>
34 #include <utility/vector1.hh>
37 static basic::Tracer
tr(
"protocols.noesy_assign.crosspeaks");
41 using namespace basic;
52 namespace noesy_assign {
55 PeakCalibratorMap::~PeakCalibratorMap() {}
58 PeakCalibrator::~PeakCalibrator() {}
63 std::pair< CalibratorMap::iterator, bool > last_insert;
64 last_insert = calibrators_.insert( std::make_pair( (*it)->filename(), fresh_calibrator ) );
65 if ( last_insert.second ) {
66 fresh_calibrator = calibrator_template->fresh_instance();
68 (last_insert.first->second)->add_peak( *it );
70 for ( CalibratorMap::iterator it=calibrators_.begin(); it!=calibrators_.end(); ++it ) {
71 it->second->init_calibrator();
75 void PeakCalibratorMap::set_new_upper_bounds() {
76 for ( CalibratorMap::iterator it=calibrators_.begin(); it!=calibrators_.end(); ++it ) {
77 it->second->set_new_upper_bounds();
81 void PeakCalibratorMap::do_calibration() {
82 for ( CalibratorMap::iterator it=calibrators_.begin(); it!=calibrators_.end(); ++it ) {
83 tr.Info <<
"Calibrate " << it->first <<
"..." << std::endl;
84 it->second->do_calibration();
89 for ( CalibratorMap::iterator it=calibrators_.begin(); it!=calibrators_.end(); ++it ) {
90 it->second->set_target_and_tolerance( target, tolerance );
94 void PeakCalibratorMap::eliminate_violated_constraints() {
95 for ( CalibratorMap::iterator it=calibrators_.begin(); it!=calibrators_.end(); ++it ) {
96 it->second->eliminate_violated_constraints();
100 PeakCalibrator::PeakCalibrator(
int target_sign )
102 target_sign_( target_sign )
131 bool finished =
true;
144 average_target = median;
148 if ( _isnan(average_target) || !_finite( average_target))
continue;
150 if ( std::isnan(average_target) || std::isinf( average_target))
continue;
178 if ( types.test( type ) ) {
203 bool finished =
false;
204 Size max_cycles = 50;
208 tr.Info <<
"Calibration .... for " <<
peaks_.size() <<
" crosspeaks " << std::endl;
211 tr.Info <<
"value target ";
215 tr.Info << std::endl;
216 while ( !finished && max_cycles ) {
226 }
else tr.Info <<
" -1 ";
229 tr.Info << std::endl;
249 (*it)->calibrate( *
this, types );
252 if ( dist == 0 )
continue;
259 using namespace core::chemical;
263 if ( name ==
"HA" || name ==
"H" || name ==
"1H" || name ==
"2H" || name ==
"QA" || name ==
"1HA" || name==
"2HA" ) {
266 if ( name.find(
"B") != std::string::npos ) {
270 if ( name.find(
"G") != std::string::npos ) {
273 if ( name.find(
"G2") != std::string::npos && aa==
aa_ile ) {
276 if ( name.find(
"D") != std::string::npos && ( aa==
aa_leu || aa==
aa_ile ) ) {
279 if ( name.find(
"E") != std::string::npos && ( aa==
aa_met ) ) {