00001 // $id$ 00002 00003 // THIS IS PRELIMINARY AND UNTESTED CODE! Use at your own risk. 00004 00005 #ifndef BALL_SCORING_COMPONENTS_AROMATIC_RING_STACKING_H 00006 #define BALL_SCORING_COMPONENTS_AROMATIC_RING_STACKING_H 00007 00008 #include <BALL/SCORING/COMMON/scoringComponent.h> 00009 #include <BALL/SCORING/COMMON/scoringFunction.h> 00010 #include <BALL/DATATYPE/options.h> 00011 00012 #include <BALL/SCORING/COMPONENTS/CHPI.h> 00013 00014 namespace BALL 00015 { 00016 00020 class AromaticRingStacking 00021 : public ScoringComponent 00022 { 00023 00024 public: 00025 00026 struct Option 00027 { 00028 static const String VERBOSITY; 00029 00030 static const String F2F_PLANE_DISTANCE_LOWER; 00031 static const String F2F_PLANE_DISTANCE_UPPER; 00032 static const String F2F_LATERAL_DISPLACEMENT_LOWER; 00033 static const String F2F_LATERAL_DISPLACEMENT_UPPER; 00034 00035 static const String F2E_CENTER_DISTANCE_LOWER; 00036 static const String F2E_CENTER_DISTANCE_UPPER; 00037 00038 static const String SCORING_TOLERANCE; 00039 }; 00040 00041 struct Default 00042 { 00043 static const Size VERBOSITY; 00044 00045 static const float F2F_PLANE_DISTANCE_LOWER; 00046 static const float F2F_PLANE_DISTANCE_UPPER; 00047 static const float F2F_LATERAL_DISPLACEMENT_LOWER; 00048 static const float F2F_LATERAL_DISPLACEMENT_UPPER; 00049 00050 static const float F2E_CENTER_DISTANCE_LOWER; 00051 static const float F2E_CENTER_DISTANCE_UPPER; 00052 00053 static const float SCORING_TOLERANCE; 00054 }; 00055 00056 00057 AromaticRingStacking() 00058 ; 00059 00060 AromaticRingStacking(ScoringFunction& sf) 00061 ; 00062 00063 AromaticRingStacking(const AromaticRingStacking& ars) 00064 ; 00065 00066 ~AromaticRingStacking() 00067 ; 00068 00069 virtual bool setup() 00070 ; 00071 00072 virtual double calculateScore() 00073 ; 00074 00075 private: 00076 00077 std::vector< std::pair<const CHPI::AromaticRing*, const CHPI::AromaticRing*> > possible_interactions_; 00078 00079 std::vector<CHPI::AromaticRing> receptor_rings_; 00080 00081 std::vector<CHPI::AromaticRing> ligand_rings_; 00082 00083 float f2f_plane_distance_lower_; 00084 float f2f_plane_distance_upper_; 00085 float f2f_lateral_displacemant_lower_; 00086 float f2f_lateral_displacemant_upper_; 00087 00088 float f2e_center_distance_lower_; 00089 float f2e_center_distance_upper_; 00090 00091 //_ The tolerance for judging angles to be "equal" 00092 float angle_tolerance_; 00093 00094 //_ The tolerance area for creating scores instead of simply counted 00095 //_ interactions. 00096 float scoring_tolerance_; 00097 00098 }; 00099 00100 } 00101 00102 00103 #endif // BALL_MOLMEC_SLICK_SLICK_AROMATIC_RING_STACKING_H