00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 // $Id: haighMallionShiftProcessor.h,v 1.16.10.6 2007-04-12 13:53:54 anne Exp $ 00005 // 00006 00007 #ifndef BALL_COMMON_H 00008 # include <BALL/common.h> 00009 #endif 00010 00011 #ifndef BALL_CONCEPT_PROCESSOR_H 00012 # include <BALL/CONCEPT/processor.h> 00013 #endif 00014 00015 #ifndef BALL_NMR_SHIFTMODULE_H 00016 # include<BALL/NMR/shiftModule.h> 00017 #endif 00018 00019 #ifndef BALL_DATATYPE_STRINGHASHMAP_H 00020 # include <BALL/DATATYPE/stringHashMap.h> 00021 #endif 00022 00023 #include <list> 00024 00025 namespace BALL 00026 { 00030 class BALL_EXPORT HaighMallionShiftProcessor 00031 : public ShiftModule 00032 { 00033 public: 00034 00035 BALL_CREATE(HaighMallionShiftProcessor) 00036 00037 00040 00044 static const char* PROPERTY__RING_CURRENT_SHIFT; 00045 00047 00050 00053 HaighMallionShiftProcessor(); 00054 00057 HaighMallionShiftProcessor(const HaighMallionShiftProcessor& processor); 00058 00061 virtual ~HaighMallionShiftProcessor(); 00062 00063 00065 00068 00085 virtual void init(); 00086 00088 00089 00091 00094 00100 virtual bool start(); 00101 00102 00108 virtual Processor::Result operator () (Composite& atom); 00109 00110 00123 virtual bool finish(); 00124 00125 00127 00128 00129 protected: 00130 00131 /*_ A flag indicating whether Hydrogens are effected by all effectors or 00132 just by effectors of the same residue. 00133 Set this flag by specifying the option {\tt H_influenced_by_all_effectors = true} in 00134 the HaighMallionRingCurrent section of the parameter file. 00135 Default is false. 00136 */ 00137 bool H_influenced_by_all_effectors_; 00138 00139 /*_ A flag indicating whether HA Hydrogens are effected by all effectors or 00140 just by effectors of the same residue. 00141 Set this flag by specifying the option {\tt HA_influenced_by_all_effectors = true} in 00142 the HaighMallionRingCurrent section of the parameter file. 00143 Default is false. 00144 */ 00145 bool HA_influenced_by_all_effectors_; 00146 00147 /*_ A flag indicating whether a cutoff for the ring current effect is used. 00148 Set this flag by specifying the option {\tt use_cut_off = true} in 00149 the HaighMallionRingCurrent section of the parameter file. 00150 Default is false. 00151 */ 00152 bool use_cut_off_; 00153 00154 00155 /*_ A cut off value for the ring current effect computation via Haigh Mallion. 00156 Set this flag by specifying the option {\tt cut_off = 15.} in 00157 the HaighMallionRingCurrent section of the parameter file. 00158 Default is 15.*15. 00159 */ 00160 float cut_off2_; 00161 00162 /*_ A flag indicating whether all hydrogens are targets. 00163 Set this flag by specifying the option {\tt all_hydrogen_are_targets = true} in 00164 the HaighMallionRingCurrent section of the parameter file. 00165 Default is false. 00166 */ 00167 bool all_hydrogen_are_targets_; 00168 00173 bool correct_CA_shifts_; 00174 00175 /*_ A flag indicating whether for the computation of the ring current effect 00176 the target has to be projected onto the effector ring plane or not. 00177 Set this flag by specifying the option {\tt project_target_to_ring_plane = true} in 00178 the HaighMallionRingCurrent section of the parameter file. 00179 Default is false. 00180 */ 00181 bool project_target_to_ring_plane_; 00182 00183 /*_ The values of the target nucleus factors F. 00184 */ 00185 StringHashMap<float> target_nucleus_factors_; 00186 00187 /*_ The default value of the target nucleus factors F for hydrogen atoms. 00188 */ 00189 float default_hydrogen_target_nucleus_factor_; 00190 00191 /*_ The default factor of negative ring current factors 00192 */ 00193 float negative_ringcurrent_factor_ ; 00194 00195 /*_ The effector residues stored as a vector of atoms the collected by {\tt operator ()}. 00196 */ 00197 std::vector< std::vector<Atom*> > effectors_; 00198 00199 /*_ The effector residue types stored as a vector of strings collected by {\tt operator ()}. 00200 This is necessary to allow, e.g., TRP1 and TRP2 as two different kinds of rings. 00201 */ 00202 std::vector<String> effector_types_; 00203 00204 /*_ The effector names collected from the ini-file by {\tt init ()}. 00205 */ 00206 std::vector<BALL::String> effector_names_; 00207 00208 /*_ The intensities of the effecting residues collected from the ini-file by {\tt init ()}. 00209 */ 00210 StringHashMap<float> intensity_factors_; 00211 00212 /*_ The ring atom names of the effecting residues collected from the ini-file by {\tt init ()}. 00213 */ 00214 std::vector< std::vector<BALL::String> > ring_atoms_; 00215 00216 /*_ The targeted atom names collected by {\tt init ()}. 00217 */ 00218 std::vector< BALL::String> target_names_; 00219 00220 /*_ The targeted atoms collected by {\tt operator ()}. 00221 */ 00222 std::vector<Atom* > targets_; 00223 00224 private: 00225 00226 void printParameters_(); 00227 void printEffectors_(); 00228 void printTargets_(); 00229 void postprocessing_(); 00230 00231 }; 00232 00233 } // namespace BALL 00234