00001
00002
00003
00004
00005
00006 #ifndef __CHEMICALFEATUREDEF_H_02122004_1750__
00007 #define __CHEMICALFEATUREDEF_H_02122004_1750__
00008
00009 #include <string>
00010 #include <vector>
00011 #include <list>
00012
00013 #include <boost/shared_ptr.hpp>
00014 namespace RDKit {
00015 class ROMol;
00016 class MolChemicalFeatureDef;
00017
00018 class MolChemicalFeatureDef {
00019 public:
00020 typedef std::list< boost::shared_ptr<MolChemicalFeatureDef> > CollectionType;
00021
00022 MolChemicalFeatureDef() : d_family(""),d_type(""),d_smarts("") {};
00023 MolChemicalFeatureDef(const std::string &smarts,const std::string &family,
00024 const std::string &type);
00025
00026 unsigned int getNumWeights() const { return d_weights.size(); };
00027 std::vector<double>::iterator beginWeights() { return d_weights.begin();};
00028 std::vector<double>::iterator endWeights() { return d_weights.end();};
00029
00030 std::vector<double>::const_iterator beginWeights() const { return d_weights.begin();};
00031 std::vector<double>::const_iterator endWeights() const { return d_weights.end();};
00032
00033 void setWeights(const std::vector<double> &weights){
00034 d_weights.insert(d_weights.begin(),weights.begin(),weights.end());
00035 }
00036
00037 const std::string &getFamily() const {return d_family;};
00038 const std::string &getType() const {return d_type;};
00039 const std::string &getSmarts() const {return d_smarts;};
00040
00041 void normalizeWeights();
00042
00043 const ROMol *getPattern() const { return dp_pattern.get(); };
00044 private:
00045 std::string d_family;
00046 std::string d_type;
00047 std::string d_smarts;
00048 boost::shared_ptr<ROMol> dp_pattern;
00049 std::vector<double> d_weights;
00050 };
00051
00052 }
00053 #endif