RDKit
Open-source cheminformatics and machine learning.
FreeChemicalFeature.h
Go to the documentation of this file.
1 //
2 // Copyright (C) 2004-2008 Greg Landrum and Rational Discovery LLC
3 //
4 // @@ All Rights Reserved @@
5 // This file is part of the RDKit.
6 // The contents are covered by the terms of the BSD license
7 // which is included in the file license.txt, found at the root
8 // of the RDKit source tree.
9 //
10 #include <RDGeneral/export.h>
11 #ifndef __FREECHEMICALFEATURE_H_13012005_1023__
12 #define __FREECHEMICALFEATURE_H_13012005_1023__
13 
14 #include <utility>
15 
16 #include <Geometry/point.h>
18 
19 namespace ChemicalFeatures {
20 
21 //------------------------------------------------------
22 //! Class for chemical features that do not originate from molecules
23 /// e.g. pharmacophores, site-maps etc.
25  : public ChemicalFeature {
26  public:
27  //! start with everything specified
28  FreeChemicalFeature(std::string family, std::string type,
29  const RDGeom::Point3D &loc, int id = -1)
30  : d_id(id),
31  d_family(std::move(family)),
32  d_type(std::move(type)),
33  d_position(loc) {}
34 
35  //! start with family and location specified, leave the type blank
36  FreeChemicalFeature(std::string family, const RDGeom::Point3D &loc)
37  : d_id(-1), d_family(std::move(family)), d_type(""), d_position(loc) {}
38 
39  //! start with everything blank
41  : d_family(""), d_type(""), d_position(RDGeom::Point3D(0.0, 0.0, 0.0)) {}
42 
43  explicit FreeChemicalFeature(const std::string &pickle) {
44  this->initFromString(pickle);
45  }
46 
48  : d_id(other.getId()),
49  d_family(other.getFamily()),
50  d_type(other.getType()),
51  d_position(other.getPos()) {}
52 
53  ~FreeChemicalFeature() override = default;
54 
55  //! return our id
56  int getId() const override { return d_id; }
57 
58  //! return our family
59  const std::string &getFamily() const override { return d_family; }
60 
61  //! return our type
62  const std::string &getType() const override { return d_type; }
63 
64  //! return our position
65  RDGeom::Point3D getPos() const override { return d_position; }
66 
67  //! set our id
68  void setId(const int id) { d_id = id; }
69 
70  //! set our family
71  void setFamily(const std::string &family) { d_family = family; }
72 
73  //! set our type
74  void setType(const std::string &type) { d_type = type; }
75 
76  //! set our position
77  void setPos(const RDGeom::Point3D &loc) {
78  // std::cout << loc.x << " " << loc.y << " " << loc.z << "\n";
79  d_position = loc;
80  // std::cout << d_position.x << " " << d_position.y << " " << d_position.z
81  // << "\n";
82  }
83 
84  //! returns a serialized form of the feature (a pickle)
85  std::string toString() const;
86  //! initialize from a pickle string
87  void initFromString(const std::string &pickle);
88 
89  private:
90  int d_id{-1};
91  std::string d_family;
92  std::string d_type;
93  RDGeom::Point3D d_position;
94 };
95 } // namespace ChemicalFeatures
96 
97 #endif
abstract base class for chemical feature
FreeChemicalFeature(std::string family, const RDGeom::Point3D &loc)
start with family and location specified, leave the type blank
const std::string & getType() const override
return our type
FreeChemicalFeature()
start with everything blank
int getId() const override
return our id
void initFromString(const std::string &pickle)
initialize from a pickle string
RDGeom::Point3D getPos() const override
return our position
std::string toString() const
returns a serialized form of the feature (a pickle)
FreeChemicalFeature(std::string family, std::string type, const RDGeom::Point3D &loc, int id=-1)
start with everything specified
FreeChemicalFeature(const FreeChemicalFeature &other)
void setId(const int id)
set our id
void setType(const std::string &type)
set our type
FreeChemicalFeature(const std::string &pickle)
const std::string & getFamily() const override
return our family
void setPos(const RDGeom::Point3D &loc)
set our position
void setFamily(const std::string &family)
set our family
#define RDKIT_CHEMICALFEATURES_EXPORT
Definition: export.h:65
RDKIT_CHEMREACTIONS_EXPORT void pickle(const boost::shared_ptr< EnumerationStrategyBase > &enumerator, std::ostream &ss)
pickles a EnumerationStrategy and adds the results to a stream ss