00001
00002
00003
00004
00005
00006 #ifndef BALL_QSAR_DESCRIPTOR_H
00007 #define BALL_QSAR_DESCRIPTOR_H
00008
00009 #ifndef BALL_CONCEPT_PROCESSOR_H
00010 # include <BALL/CONCEPT/processor.h>
00011 #endif
00012
00013 #ifndef BALL_KERNEL_ATOMCONTAINER_H
00014 #include <BALL/KERNEL/atomContainer.h>
00015 #endif
00016
00017 namespace BALL
00018 {
00019
00020 template <typename Key, typename Value> class HashMap;
00021
00025 class BALL_EXPORT Descriptor
00026 : public UnaryProcessor<AtomContainer>
00027 {
00028 public:
00029
00030 BALL_CREATE(Descriptor)
00031
00032
00037 Descriptor();
00038
00041 Descriptor(const Descriptor& descriptor);
00042
00045 Descriptor(const String& name);
00046
00049 Descriptor(const String& name, const String& unit);
00050
00053 virtual ~Descriptor();
00055
00061 Descriptor& operator = (const Descriptor& descriptor);
00063
00067 Processor::Result operator () (AtomContainer& ac);
00069
00073
00074
00075
00076 const String& getName() const;
00077
00078
00079
00080
00081 void setName(const String& name);
00082
00083
00084
00085
00086 void setUnit(const String& name);
00087
00088
00089
00090
00091 const String& getUnit() const;
00092
00093
00094
00095 virtual double compute(AtomContainer& ac);
00097
00098
00099 protected:
00100
00101
00102
00103 virtual void calculate_(AtomContainer& ac);
00104
00108
00109
00110
00111 virtual bool isValid_(AtomContainer& ac);
00113
00114
00115 private:
00116
00117
00118
00119
00120
00121 String name_;
00122
00123
00124
00125
00126 String unit_;
00127 };
00128 }
00129
00130 #endif // BALL_QSAR_DESCRIPTOR_H
00131