00001
00002
00003
00004
00005
00006
00007 #ifndef BALL_NMR_HBONDSHIFTPROCESSOR_H
00008 #define BALL_NMR_HBONDSHIFTPROCESSOR_H
00009
00010 #ifndef BALL_KERNEL_PTE_H
00011 # include <BALL/KERNEL/PTE.h>
00012 #endif
00013
00014 #ifndef BALL_KERNEL_BOND_H
00015 # include <BALL/KERNEL/bond.h>
00016 #endif
00017
00018 #ifndef BALL_KERNEL_ATOM_H
00019 # include <BALL/KERNEL/atom.h>
00020 #endif
00021
00022 #ifndef BALL_NMR_SHIFT_MODULE_H
00023 # include <BALL/NMR/shiftModule.h>
00024 #endif
00025
00026 #ifndef BALL_FORMAT_PARAMETERSECTION_H
00027 # include <BALL/FORMAT/parameterSection.h>
00028 #endif
00029
00030 #include <map>
00031
00032 namespace BALL
00033 {
00037 class BALL_EXPORT HBondShiftProcessor
00038 : public ShiftModule
00039 {
00040 public:
00041 BALL_CREATE(HBondShiftProcessor)
00042
00043
00046
00047 static const char* PROPERTY__HBOND_SHIFT;
00048
00050
00053
00056 HBondShiftProcessor()
00057 ;
00058
00061 HBondShiftProcessor(const HBondShiftProcessor& processor)
00062 ;
00063
00066 virtual ~HBondShiftProcessor()
00067 ;
00068
00070
00073
00113 virtual void init();
00114
00116
00119
00123 virtual bool start();
00124
00129 virtual Processor::Result operator () (Composite& composite);
00130
00131
00165 virtual bool finish();
00166
00168
00169 protected:
00170
00171
00172
00173 std::vector<String> acceptor_types_;
00174
00175
00176
00177 std::vector<Atom*> donors_;
00178
00179
00180
00181 std::vector<Atom*> acceptors_;
00182
00183
00184
00185 bool amide_protons_are_targets_;
00186
00187
00188
00189 float amide_proton_factor_ ;
00190
00191
00192
00193 float amide_proton_subtrahend_;
00194
00195
00196
00197 float amide_proton_oxygen_hydrogen_separation_distance_;
00198
00199
00200
00201 float alpha_proton_oxygen_hydrogen_separation_distance_;
00202
00203
00204
00205
00206 bool exclude_selfinteraction_;
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218 bool ShiftXwise_hydrogen_bonds_computation_;
00219
00220 private:
00221 void printParameters_();
00222 void printEffectors_();
00223 void printTargets_();
00224 Atom* getDonor_(Atom* a);
00225 void postprocessing_();
00226
00227
00228
00229 std::multimap<float, std::pair<Atom*, Atom*> > hbonds_;
00230 std::map<Atom*, bool> donor_occupied_;
00231 std::map<Atom*, bool> acceptor_occupied_;
00232 };
00233 }
00234
00235 #endif