Chemical Data Processing Library C++ API - Version 1.4.0
BemisMurckoAnalyzer.hpp
Go to the documentation of this file.
1 /*
2  * BemisMurckoAnalyzer.hpp
3  *
4  * This file is part of the Chemical Data Processing Toolkit
5  *
6  * Copyright (C) 2003 Thomas Seidel <thomas.seidel@univie.ac.at>
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public License
19  * along with this library; see the file COPYING. If not, write to
20  * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21  * Boston, MA 02111-1307, USA.
22  */
23 
29 #ifndef CDPL_CHEM_BEMISMURCKOANALYZER_HPP
30 #define CDPL_CHEM_BEMISMURCKOANALYZER_HPP
31 
32 #include <memory>
33 #include <vector>
34 
35 #include "CDPL/Chem/APIPrefix.hpp"
37 
38 
39 namespace CDPL
40 {
41 
42  namespace Chem
43  {
44 
57  {
58 
59  public:
61  typedef std::shared_ptr<BemisMurckoAnalyzer> SharedPointer;
62 
67 
72  void stripHydrogens(bool strip);
73 
78  bool hydrogensStripped() const;
79 
88  void analyze(const MolecularGraph& molgraph);
89 
94  const FragmentList& getRingSystems() const;
95 
100  const FragmentList& getSideChains() const;
101 
106  const FragmentList& getLinkers() const;
107 
112  const FragmentList& getFrameworks() const;
113 
114  private:
115  void extractSideChains(const MolecularGraph& molgraph);
116  void extractFrameworks(const MolecularGraph& molgraph);
117  void splitFrameworks();
118 
119  typedef std::vector<std::size_t> BondCountArray;
120 
121  bool hDeplete;
122  BondCountArray bondCounts;
123  Fragment workingFrag;
124  FragmentList ringSystems;
125  FragmentList sideChains;
126  FragmentList linkers;
127  FragmentList frameworks;
128  ComponentSet compSet;
129  };
130  } // namespace Chem
131 } // namespace CDPL
132 
133 #endif // CDPL_CHEM_BEMISMURCKOANALYZER_HPP
Definition of the preprocessor macro CDPL_CHEM_API.
#define CDPL_CHEM_API
Tells the compiler/linker which classes, functions and variables are part of the library API.
Definition of class CDPL::Chem::ComponentSet.
Decomposes a molecular graph into its Bemis-Murcko framework, ring systems, linkers and side chains.
Definition: BemisMurckoAnalyzer.hpp:57
const FragmentList & getLinkers() const
Returns the linker fragments connecting different ring systems of the input molecular graph.
void analyze(const MolecularGraph &molgraph)
Performs the Bemis-Murcko decomposition of the molecular graph molgraph.
void stripHydrogens(bool strip)
Specifies whether hydrogen atoms shall be stripped from the input before the decomposition.
BemisMurckoAnalyzer()
Constructs the BemisMurckoAnalyzer instance.
const FragmentList & getRingSystems() const
Returns the perceived ring systems of the input molecular graph.
const FragmentList & getSideChains() const
Returns the side chains (acyclic substituents) of the input molecular graph.
std::shared_ptr< BemisMurckoAnalyzer > SharedPointer
A reference-counted smart pointer [SHPTR] for dynamically allocated BemisMurckoAnalyzer instances.
Definition: BemisMurckoAnalyzer.hpp:61
const FragmentList & getFrameworks() const
Returns the Bemis-Murcko frameworks of the input molecular graph (union of ring systems and linkers).
bool hydrogensStripped() const
Tells whether hydrogen atoms are stripped from the input before the decomposition.
Implements the perception of molecular graph components.
Definition: ComponentSet.hpp:49
Data type for the storage of Chem::Fragment objects.
Definition: FragmentList.hpp:49
Concrete Chem::MolecularGraph implementation that stores references to a selectable subset of atoms a...
Definition: Fragment.hpp:57
Abstract base class for representations of a chemical structure as a graph of bonded atoms.
Definition: MolecularGraph.hpp:57
The namespace of the Chemical Data Processing Library.