31 #include <ObjexxFCL/format.hh>
39 #include <basic/Tracer.hh>
50 #include <utility/vector1.hh>
54 static basic::Tracer
tr(
"protocols.noesy_assign.resonances");
58 using namespace basic;
63 namespace noesy_assign {
65 Resonance::Resonance() {}
73 intensity_( intensity )
75 is_proton_ = (
id.atom()[ 0 ]==
'Q' ||
id.atom().find(
"H") != std::string::npos );
82 return _pmatch( peakfreq, error, folder );
86 return std::abs( folder(
freq() ) - peakfreq ) / std::max( error,
tolerance() );
90 os << ObjexxFCL::fmt::RJ( 10,
label_ ) <<
" ";
91 os << ObjexxFCL::fmt::F( 10, 3,
freq_ ) <<
" " << ObjexxFCL::fmt::F( 10, 3,
error_ ) <<
" ";
92 os << ObjexxFCL::fmt::RJ( 5,
atom_.
atom() ) <<
" " << ObjexxFCL::fmt::RJ( 8,
atom_.
rsd() );
108 bool single_char (
name().
size() == 3 );
110 Size str_cmp_length( 1 );
113 if (
name().substr(0,1)==
"C" ) pseudo_letter =
"C";
114 if (
name().substr(0,1)==
"Q" ) pseudo_letter =
"QQ";
120 bool double_methyl( last_resonances.size() == (6 - (drain ? 1 : 0)) );
124 combine_name=pseudo_letter+
name().substr(1,1);
125 }
else if ( double_methyl ) {
126 combine_name=pseudo_letter+pseudo_letter+
name().substr(1,1);
128 combine_name=pseudo_letter+
name().substr(1,2);
133 Size limit( drain ? 0 : 1 );
134 while( last_resonances.size() > limit ) {
135 if (
name().substr( 1, str_cmp_length ) == last_resonances.front()->name().substr( 1, str_cmp_length ) ) {
136 intensity_sum+=last_resonances.front()->intensity();
137 last_resonances.pop_front();
139 combine_name =
name();