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:
63  typedef std::shared_ptr<BemisMurckoAnalyzer> SharedPointer;
64 
69 
74  void stripHydrogens(bool strip);
75 
80  bool hydrogensStripped() const;
81 
90  void analyze(const MolecularGraph& molgraph);
91 
96  const FragmentList& getRingSystems() const;
97 
102  const FragmentList& getSideChains() const;
103 
108  const FragmentList& getLinkers() const;
109 
114  const FragmentList& getFrameworks() const;
115 
116  private:
117  void extractSideChains(const MolecularGraph& molgraph);
118  void extractFrameworks(const MolecularGraph& molgraph);
119  void splitFrameworks();
120 
121  typedef std::vector<std::size_t> BondCountArray;
122 
123  bool hDeplete;
124  BondCountArray bondCounts;
125  Fragment workingFrag;
126  FragmentList ringSystems;
127  FragmentList sideChains;
128  FragmentList linkers;
129  FragmentList frameworks;
130  ComponentSet compSet;
131  };
132  } // namespace Chem
133 } // namespace CDPL
134 
135 #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:63
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 structure 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.