Loading...
Searching...
No Matches
aromaticityProcessor.h
Go to the documentation of this file.
// -*- Mode: C++; tab-width: 2; -*-
// vi: set ts=2:
//
//
#ifndef BALL_QSAR_AROMATICITYPROCESSOR_H
#define BALL_QSAR_AROMATICITYPROCESSOR_H
#ifndef BALL_KERNEL_ATOMCONTAINER_H
# include <BALL/KERNEL/atomContainer.h>
#endif
#ifndef BALL_DATATYPE_OPTIONS_H
#include <BALL/DATATYPE/options.h>
#endif
namespace BALL
{
class BALL_EXPORT AromaticityProcessor
: public UnaryProcessor<AtomContainer>
{
public:
struct BALL_EXPORT Option
{
static const char* OVERWRITE_BOND_ORDERS;
};
struct BALL_EXPORT Default
{
static const bool OVERWRITE_BOND_ORDERS;
};
BALL_CREATE(AromaticityProcessor)
//@{
AromaticityProcessor();
AromaticityProcessor(const AromaticityProcessor& aro);
virtual ~AromaticityProcessor();
AromaticityProcessor& operator = (const AromaticityProcessor& aro);
Options options;
void setDefaultOptions();
void aromatize(const vector<vector<Atom*> >& sssr, AtomContainer& ac);
void aromatizeSimple(vector<vector<Atom*> >& sssr);
Processor::Result operator () (AtomContainer& ac);
virtual bool start();
protected:
bool isValid_(const AtomContainer& ac);
private:
/*_ simple criterion if a ring can be aromatic
*/
bool simpleCanBeAromatic_(const HashSet<Atom*>& ring);
/*_ simple criterion if a ring can be aromatic, with weaker condition
double bonds not need to be alternating inside the ring
*/
bool simpleCanBeAromaticWeaker_(const HashSet<Atom*>& ring);
/*_ Tries to extend an aromatic system. Main method that tries to extend
the aromaticity to intersecting rings.
@param SSSR ring set as vector<HashSet<Atom*> >, (vector of rings in HashSet<Atom*>)
@param ring as HashSet<Atom*>, the ring to extended
*/
void extendAromaticSystem_(vector<HashSet<Atom*> >& sssr, HashSet<Atom*> ring);
/*_ Predicate that return true if the ring has conjugated double bonds. The criterion
is very weak, beacuse the predicate only considers carbon atoms, no hetero atoms
are counted.
@param ring as HashSet<Atom*>, to be tested
*/
bool hasConjugatedDoubleBonds_(HashSet<Atom*> ring);
/*_ This mthod return the number of pi electrons in the ring (aromatic system)
@param ring as HashSet<Atom*>, from which the number of pi electrons to count
*/
Size countPiElectrons_(HashSet<Atom*>& ring);
bool overwrite_bond_orders_;
};
} // namespace BALL
#endif // BALL_QSAR_AROMATICITYPROCESSOR_H
BALL_EXPORT
#define BALL_EXPORT
Definition COMMON/global.h:50
atomContainer.h
BALL::AromaticityProcessor::start
virtual bool start()
BALL::AromaticityProcessor::options
Options options
options
Definition aromaticityProcessor.h:83
BALL::AromaticityProcessor::AromaticityProcessor
AromaticityProcessor()
BALL::AromaticityProcessor::aromatize
void aromatize(const vector< vector< Atom * > > &sssr, AtomContainer &ac)
BALL::AromaticityProcessor::setDefaultOptions
void setDefaultOptions()
BALL::AromaticityProcessor::aromatizeSimple
void aromatizeSimple(vector< vector< Atom * > > &sssr)
BALL::AromaticityProcessor::isValid_
bool isValid_(const AtomContainer &ac)
BALL::AtomContainer
Definition atomContainer.h:32
BALL::Atom
Definition atom.h:90
BALL::HashSet
Definition hashSet.h:46
BALL::Options
Definition options.h:48
BALL::Processor
Definition processor.h:32
BALL::Result
Definition result.h:22
BALL::UnaryProcessor< AtomContainer >::UnaryProcessor
UnaryProcessor()
Definition processor.h:69
BALL_CREATE
#define BALL_CREATE(name)
Definition create.h:62
BALL
Definition constants.h:13
BALL::Size
BALL_SIZE_TYPE Size
Definition COMMON/global.h:114
options.h
BALL::AromaticityProcessor::Default
Default values for options.
Definition aromaticityProcessor.h:46
BALL::AromaticityProcessor::Default::OVERWRITE_BOND_ORDERS
static const bool OVERWRITE_BOND_ORDERS
Definition aromaticityProcessor.h:47
BALL::AromaticityProcessor::Option
Option names.
Definition aromaticityProcessor.h:38
BALL::AromaticityProcessor::Option::OVERWRITE_BOND_ORDERS
static const char * OVERWRITE_BOND_ORDERS
Definition aromaticityProcessor.h:41