types.h
Go to the documentation of this file.
//
// Copyright (C) 2001-2016 Greg Landrum and Rational Discovery LLC
//
// @@ All Rights Reserved @@
// This file is part of the RDKit.
// The contents are covered by the terms of the BSD license
// which is included in the file license.txt, found at the root
// of the RDKit source tree.
//
#ifndef RD_TYPES_H
#define RD_TYPES_H
#ifdef WIN32
#define _USE_MATH_DEFINES
#endif
#include <cmath>
#include <RDGeneral/Invariant.h>
#include "Dict.h"
namespace detail {
// used in various places for computed properties
const std::string computedPropName = "__computedProps";
}
#include <vector>
#include <deque>
#include <map>
#include <set>
#include <string>
#include <algorithm>
#include <numeric>
#include <list>
#include <limits>
#include <cstring>
#include <boost/any.hpp>
#include <boost/lexical_cast.hpp>
namespace RDKit {
namespace common_properties {
extern const std::string TWOD;
extern const std::string BalabanJ;
extern const std::string BalanbanJ;
extern const std::string Discrims;
extern const std::string DistanceMatrix_Paths;
extern const std::string MolFileComments;
extern const std::string MolFileInfo;
extern const std::string NullBond;
extern const std::string _2DConf;
extern const std::string _3DConf;
extern const std::string _AtomID;
extern const std::string _BondsPotentialStereo;
extern const std::string _CIPCode;
extern const std::string _CIPRank;
extern const std::string _ChiralityPossible;
extern const std::string _CrippenLogP;
extern const std::string _CrippenMR;
extern const std::string _MMFFSanitized;
extern const std::string _MolFileChiralFlag;
extern const std::string _MolFileRLabel;
extern const std::string _Name;
extern const std::string _NeedsQueryScan;
extern const std::string _QueryFormalCharge;
extern const std::string _QueryHCount;
extern const std::string _QueryIsotope;
extern const std::string _QueryMass;
extern const std::string _ReactionDegreeChanged;
extern const std::string _RingClosures;
extern const std::string _SLN_s;
extern const std::string _SmilesStart;
extern const std::string _StereochemDone;
extern const std::string _TraversalBondIndexOrder;
extern const std::string _TraversalRingClosureBond;
extern const std::string _TriposAtomType;
extern const std::string _Unfinished_SLN_;
extern const std::string _UnknownStereo;
extern const std::string _connectivityHKDeltas;
extern const std::string _connectivityNVals;
extern const std::string _crippenLogP;
extern const std::string _crippenLogPContribs;
extern const std::string _crippenMR;
extern const std::string _crippenMRContribs;
extern const std::string _doIsoSmiles;
extern const std::string _fragSMARTS;
extern const std::string _hasMassQuery;
extern const std::string _labuteASA;
extern const std::string _labuteAtomContribs;
extern const std::string _labuteAtomHContrib;
extern const std::string _protected;
extern const std::string _queryRootAtom;
extern const std::string _ringStereoAtoms;
extern const std::string _ringStereoWarning;
extern const std::string _ringStereochemCand;
extern const std::string _smilesAtomOutputOrder;
extern const std::string _starred;
extern const std::string _supplementalSmilesLabel;
extern const std::string _tpsa;
extern const std::string _tpsaAtomContribs;
extern const std::string _unspecifiedOrder;
extern const std::string _brokenChirality;
extern const std::string _rgroupAtomMaps;
extern const std::string _rgroupBonds;
extern const std::string dummyLabel;
extern const std::string extraRings;
extern const std::string isImplicit;
extern const std::string maxAttachIdx;
extern const std::string molAtomMapNumber;
extern const std::string molFileAlias;
extern const std::string molFileValue;
extern const std::string molInversionFlag;
extern const std::string molParity;
extern const std::string molRxnComponent;
extern const std::string molRxnRole;
extern const std::string molTotValence;
extern const std::string numArom;
extern const std::string origNoImplicit;
extern const std::string ringMembership;
extern const std::string smilesSymbol;
} // end common_properties
#ifndef WIN32
typedef long long int LONGINT;
#else
typedef __int64 LONGINT;
#endif
#ifdef max
#undef max // FUCK I hate this nonsense
#endif
#ifdef min
#undef min // FUCK I hate this nonsense
#endif
extern const double MAX_DOUBLE;
extern const double EPS_DOUBLE;
extern const double SMALL_DOUBLE;
extern const double MAX_INT;
extern const double MAX_LONGINT;
typedef unsigned int UINT;
typedef unsigned short USHORT;
typedef unsigned char UCHAR;
typedef std::vector<int> INT_VECT;
typedef INT_VECT::iterator INT_VECT_I;
typedef INT_VECT::const_iterator INT_VECT_CI;
typedef INT_VECT::reverse_iterator INT_VECT_RI;
typedef INT_VECT::const_reverse_iterator INT_VECT_CRI;
typedef std::list<int> INT_LIST;
typedef INT_LIST::iterator INT_LIST_I;
typedef INT_LIST::const_iterator INT_LIST_CI;
typedef std::list<INT_VECT> LIST_INT_VECT;
typedef LIST_INT_VECT::iterator LIST_INT_VECT_I;
typedef LIST_INT_VECT::const_iterator LIST_INT_VECT_CI;
typedef std::vector<INT_VECT> VECT_INT_VECT;
typedef VECT_INT_VECT::iterator VECT_INT_VECT_I;
typedef VECT_INT_VECT::const_iterator VECT_INT_VECT_CI;
typedef std::vector<UINT>::const_iterator UINT_VECT_CI;
typedef std::vector<UINT> UINT_VECT;
typedef std::vector<std::string>::const_iterator STR_VECT_CI;
typedef std::vector<std::string>::iterator STR_VECT_I;
typedef std::vector<std::string> STR_VECT;
typedef std::vector<double> DOUBLE_VECT;
typedef DOUBLE_VECT::iterator DOUBLE_VECT_I;
typedef DOUBLE_VECT::const_iterator DOUBLE_VECT_CI;
typedef std::vector<DOUBLE_VECT> VECT_DOUBLE_VECT;
typedef VECT_DOUBLE_VECT::iterator VECT_DOUBLE_VECT_I;
typedef VECT_DOUBLE_VECT::const_iterator VECT_DOUBLE_VECT_CI;
typedef std::map<std::string, UINT> STR_UINT_MAP;
typedef std::map<std::string, UINT>::const_iterator STR_UINT_MAP_CI;
typedef std::map<int, INT_VECT> INT_INT_VECT_MAP;
typedef INT_INT_VECT_MAP::const_iterator INT_INT_VECT_MAP_CI;
typedef std::map<int, int> INT_MAP_INT;
typedef INT_MAP_INT::iterator INT_MAP_INT_I;
typedef INT_MAP_INT::const_iterator INT_MAP_INT_CI;
typedef std::deque<int> INT_DEQUE;
typedef INT_DEQUE::iterator INT_DEQUE_I;
typedef INT_DEQUE::const_iterator INT_DEQUE_CI;
typedef std::map<int, INT_DEQUE> INT_INT_DEQ_MAP;
typedef INT_INT_DEQ_MAP::const_iterator INT_INT_DEQ_MAP_CI;
typedef std::set<int> INT_SET;
typedef INT_SET::iterator INT_SET_I;
typedef INT_SET::const_iterator INT_SET_CI;
//! functor to compare two doubles with a tolerance
struct ltDouble {
public:
ltDouble() : _tol(1.0e-8){};
bool operator()(double d1, double d2) const {
if (fabs(d1 - d2) < _tol) {
return false;
} else {
return (d1 < d2);
}
}
private:
double _tol;
};
//! std::map from double to integer.
typedef std::map<double, int, ltDouble> DOUBLE_INT_MAP;
//! functor for returning the larger of two values
template <typename T>
struct larger_of {
T operator()(T arg1, T arg2) { return arg1 > arg2 ? arg1 : arg2; };
};
//! functor for comparing two strings
struct charptr_functor {
bool operator()(const char *s1, const char *s2) const {
// std::cout << s1 << " " << s2 << " " << strcmp(s1, s2) << "\n";
return strcmp(s1, s2) < 0;
};
};
//! \brief calculate the union of two INT_VECTs and put the results in a
//! third vector
void Union(const INT_VECT &r1, const INT_VECT &r2, INT_VECT &res);
//! \brief calculate the intersection of two INT_VECTs and put the results in a
//! third vector
void Intersect(const INT_VECT &r1, const INT_VECT &r2, INT_VECT &res);
//! calculating the union of the INT_VECT's in a VECT_INT_VECT
/*!
\param rings the INT_VECT's to consider
\param res used to return results
\param exclude any values in this optional INT_VECT will be excluded
from the union.
*/
void Union(const VECT_INT_VECT &rings, INT_VECT &res,
const INT_VECT *exclude = NULL);
//! given a current combination of numbers change it to the next possible
// combination
/*!
\param comb the <b>sorted</b> vector to consider
\param tot the maximum number possible in the vector
\return -1 on failure, the index of the last number changed on success.
Example:
for all combinations 3 of numbers between 0 and tot=5
given (0,1,2) the function wil return (0,1,3) etc.
*/
int nextCombination(INT_VECT &comb, int tot);
//! rounds a value to the closest int
double round(double v);
}; // end of namespace
#endif
RDKit::common_properties::_StereochemDone
const std::string _StereochemDone
RDKit::ltDouble::ltDouble
ltDouble()
Definition: types.h:202
RDKit::common_properties::_protected
const std::string _protected
RDKit::INT_LIST
std::list< int > INT_LIST
Definition: types.h:152
RDKit::USHORT
unsigned short USHORT
Definition: types.h:143
RDKit::common_properties::isImplicit
const std::string isImplicit
RDKit::common_properties::origNoImplicit
const std::string origNoImplicit
RDKit::ltDouble::operator()
bool operator()(double d1, double d2) const
Definition: types.h:203
RDKit::VECT_DOUBLE_VECT_I
VECT_DOUBLE_VECT::iterator VECT_DOUBLE_VECT_I
Definition: types.h:175
RDKit::DOUBLE_VECT_CI
DOUBLE_VECT::const_iterator DOUBLE_VECT_CI
Definition: types.h:173
RDKit::common_properties::_labuteAtomHContrib
const std::string _labuteAtomHContrib
RDKit::common_properties::_connectivityNVals
const std::string _connectivityNVals
RDKit::common_properties::_rgroupAtomMaps
const std::string _rgroupAtomMaps
RDKit::VECT_INT_VECT_I
VECT_INT_VECT::iterator VECT_INT_VECT_I
Definition: types.h:161
RDKit::common_properties::_3DConf
const std::string _3DConf
RDKit::common_properties::_RingClosures
const std::string _RingClosures
RDKit::ltDouble
functor to compare two doubles with a tolerance
Definition: types.h:200
RDKit::MAX_INT
const double MAX_INT
RDKit::round
double round(double v)
rounds a value to the closest int
RDKit::common_properties::_labuteASA
const std::string _labuteASA
RDKit::common_properties::_crippenLogP
const std::string _crippenLogP
RDKit::common_properties::_unspecifiedOrder
const std::string _unspecifiedOrder
RDKit::STR_UINT_MAP_CI
std::map< std::string, UINT >::const_iterator STR_UINT_MAP_CI
Definition: types.h:179
RDKit::common_properties::BalabanJ
const std::string BalabanJ
RDKit::UINT_VECT_CI
std::vector< UINT >::const_iterator UINT_VECT_CI
Definition: types.h:164
RDKit::common_properties::_QueryMass
const std::string _QueryMass
RDKit::common_properties::MolFileInfo
const std::string MolFileInfo
RDKit::Union
void Union(const VECT_INT_VECT &rings, INT_VECT &res, const INT_VECT *exclude=NULL)
calculating the union of the INT_VECT&#39;s in a VECT_INT_VECT
RDKit::DOUBLE_VECT
std::vector< double > DOUBLE_VECT
Definition: types.h:171
RDKit::common_properties::_SLN_s
const std::string _SLN_s
RDKit::common_properties::molTotValence
const std::string molTotValence
RDKit::common_properties::_UnknownStereo
const std::string _UnknownStereo
RDKit::common_properties::TWOD
const std::string TWOD
RDKit::INT_MAP_INT_CI
INT_MAP_INT::const_iterator INT_MAP_INT_CI
Definition: types.h:186
Invariant.h
RDKit::common_properties::_ReactionDegreeChanged
const std::string _ReactionDegreeChanged
RDKit::common_properties::_ringStereoWarning
const std::string _ringStereoWarning
RDKit::larger_of::operator()
T operator()(T arg1, T arg2)
Definition: types.h:221
RDKit::INT_SET_I
INT_SET::iterator INT_SET_I
Definition: types.h:196
RDKit::MAX_DOUBLE
const double MAX_DOUBLE
RDKit::common_properties::_Name
const std::string _Name
RDKit::common_properties::molAtomMapNumber
const std::string molAtomMapNumber
RDKit::UCHAR
unsigned char UCHAR
Definition: types.h:144
RDKit::common_properties::molParity
const std::string molParity
RDKit::INT_DEQUE_CI
INT_DEQUE::const_iterator INT_DEQUE_CI
Definition: types.h:190
RDKit::common_properties::NullBond
const std::string NullBond
RDKit::INT_LIST_I
INT_LIST::iterator INT_LIST_I
Definition: types.h:153
RDKit::VECT_DOUBLE_VECT
std::vector< DOUBLE_VECT > VECT_DOUBLE_VECT
Definition: types.h:174
RDKit::VECT_DOUBLE_VECT_CI
VECT_DOUBLE_VECT::const_iterator VECT_DOUBLE_VECT_CI
Definition: types.h:176
RDKit::DOUBLE_VECT_I
DOUBLE_VECT::iterator DOUBLE_VECT_I
Definition: types.h:172
RDKit::INT_INT_DEQ_MAP_CI
INT_INT_DEQ_MAP::const_iterator INT_INT_DEQ_MAP_CI
Definition: types.h:193
RDKit::common_properties::MolFileComments
const std::string MolFileComments
RDKit::common_properties::_2DConf
const std::string _2DConf
RDKit::common_properties::extraRings
const std::string extraRings
Dict.h
Defines the Dict class.
RDKit::common_properties::_Unfinished_SLN_
const std::string _Unfinished_SLN_
RDKit::common_properties::_supplementalSmilesLabel
const std::string _supplementalSmilesLabel
RDKit::common_properties::_crippenMRContribs
const std::string _crippenMRContribs
RDKit::common_properties::maxAttachIdx
const std::string maxAttachIdx
RDKit::INT_SET_CI
INT_SET::const_iterator INT_SET_CI
Definition: types.h:197
RDKit::common_properties::_smilesAtomOutputOrder
const std::string _smilesAtomOutputOrder
RDKit::larger_of
functor for returning the larger of two values
Definition: types.h:220
RDKit::common_properties::_fragSMARTS
const std::string _fragSMARTS
RDKit::INT_MAP_INT_I
INT_MAP_INT::iterator INT_MAP_INT_I
Definition: types.h:185
RDKit::common_properties::_CIPRank
const std::string _CIPRank
RDKit::common_properties::dummyLabel
const std::string dummyLabel
RDKit::common_properties::_labuteAtomContribs
const std::string _labuteAtomContribs
RDKit::INT_VECT_CRI
INT_VECT::const_reverse_iterator INT_VECT_CRI
Definition: types.h:150
RDKit::VECT_INT_VECT
std::vector< INT_VECT > VECT_INT_VECT
Definition: types.h:160
RDKit::common_properties::_tpsa
const std::string _tpsa
RDKit::LONGINT
long long int LONGINT
Definition: types.h:125
detail
Definition: types.h:23
RDKit::common_properties::_TraversalBondIndexOrder
const std::string _TraversalBondIndexOrder
RDKit::charptr_functor
functor for comparing two strings
Definition: types.h:225
RDKit::common_properties::_queryRootAtom
const std::string _queryRootAtom
RDKit::STR_UINT_MAP
std::map< std::string, UINT > STR_UINT_MAP
Definition: types.h:178
RDKit::common_properties::BalanbanJ
const std::string BalanbanJ
RDKit::common_properties::_starred
const std::string _starred
RDKit::INT_VECT
std::vector< int > INT_VECT
Definition: types.h:146
RDKit::common_properties::_MMFFSanitized
const std::string _MMFFSanitized
RDKit::INT_SET
std::set< int > INT_SET
Definition: types.h:195
RDKit::INT_VECT_RI
INT_VECT::reverse_iterator INT_VECT_RI
Definition: types.h:149
RDKit::STR_VECT_CI
std::vector< std::string >::const_iterator STR_VECT_CI
Definition: types.h:167
RDKit::common_properties::_QueryIsotope
const std::string _QueryIsotope
RDKit::charptr_functor::operator()
bool operator()(const char *s1, const char *s2) const
Definition: types.h:226
RDKit::common_properties::molRxnRole
const std::string molRxnRole
RDKit::common_properties::_CIPCode
const std::string _CIPCode
RDKit
Includes a bunch of functionality for handling Atom and Bond queries.
Definition: Atom.h:28
RDKit::UINT
unsigned int UINT
Definition: types.h:142
RDKit::common_properties::molRxnComponent
const std::string molRxnComponent
RDKit::INT_VECT_I
INT_VECT::iterator INT_VECT_I
Definition: types.h:147
RDKit::LIST_INT_VECT_I
LIST_INT_VECT::iterator LIST_INT_VECT_I
Definition: types.h:157
RDKit::common_properties::molInversionFlag
const std::string molInversionFlag
RDKit::INT_VECT_CI
INT_VECT::const_iterator INT_VECT_CI
Definition: types.h:148
RDKit::common_properties::smilesSymbol
const std::string smilesSymbol
detail::computedPropName
const std::string computedPropName
Definition: types.h:25
RDKit::VECT_INT_VECT_CI
VECT_INT_VECT::const_iterator VECT_INT_VECT_CI
Definition: types.h:162
RDKit::common_properties::_QueryHCount
const std::string _QueryHCount
RDKit::common_properties::_NeedsQueryScan
const std::string _NeedsQueryScan
RDKit::DOUBLE_INT_MAP
std::map< double, int, ltDouble > DOUBLE_INT_MAP
std::map from double to integer.
Definition: types.h:216
RDKit::common_properties::numArom
const std::string numArom
RDKit::common_properties::_ringStereoAtoms
const std::string _ringStereoAtoms
RDKit::INT_DEQUE_I
INT_DEQUE::iterator INT_DEQUE_I
Definition: types.h:189
RDKit::common_properties::_rgroupBonds
const std::string _rgroupBonds
RDKit::INT_MAP_INT
std::map< int, int > INT_MAP_INT
Definition: types.h:184
RDKit::common_properties::_BondsPotentialStereo
const std::string _BondsPotentialStereo
RDKit::common_properties::ringMembership
const std::string ringMembership
RDKit::common_properties::_MolFileChiralFlag
const std::string _MolFileChiralFlag
RDKit::LIST_INT_VECT
std::list< INT_VECT > LIST_INT_VECT
Definition: types.h:156
RDKit::common_properties::_AtomID
const std::string _AtomID
RDKit::INT_LIST_CI
INT_LIST::const_iterator INT_LIST_CI
Definition: types.h:154
RDKit::common_properties::_QueryFormalCharge
const std::string _QueryFormalCharge
RDKit::Intersect
void Intersect(const INT_VECT &r1, const INT_VECT &r2, INT_VECT &res)
calculate the intersection of two INT_VECTs and put the results in a third vector ...
RDKit::common_properties::_crippenMR
const std::string _crippenMR
RDKit::common_properties::_MolFileRLabel
const std::string _MolFileRLabel
RDKit::common_properties::molFileValue
const std::string molFileValue
RDKit::common_properties::Discrims
const std::string Discrims
RDKit::INT_INT_DEQ_MAP
std::map< int, INT_DEQUE > INT_INT_DEQ_MAP
Definition: types.h:192
RDKit::INT_INT_VECT_MAP
std::map< int, INT_VECT > INT_INT_VECT_MAP
Definition: types.h:181
RDKit::common_properties::_hasMassQuery
const std::string _hasMassQuery
RDKit::UINT_VECT
std::vector< UINT > UINT_VECT
Definition: types.h:165
RDKit::SMALL_DOUBLE
const double SMALL_DOUBLE
RDKit::common_properties::DistanceMatrix_Paths
const std::string DistanceMatrix_Paths
RDKit::INT_INT_VECT_MAP_CI
INT_INT_VECT_MAP::const_iterator INT_INT_VECT_MAP_CI
Definition: types.h:182
RDKit::INT_DEQUE
std::deque< int > INT_DEQUE
Definition: types.h:188
RDKit::common_properties::_crippenLogPContribs
const std::string _crippenLogPContribs
RDKit::EPS_DOUBLE
const double EPS_DOUBLE
RDKit::common_properties::_TraversalRingClosureBond
const std::string _TraversalRingClosureBond
RDKit::common_properties::_ChiralityPossible
const std::string _ChiralityPossible
RDKit::STR_VECT_I
std::vector< std::string >::iterator STR_VECT_I
Definition: types.h:168
RDKit::common_properties::_ringStereochemCand
const std::string _ringStereochemCand
RDKit::MAX_LONGINT
const double MAX_LONGINT
RDKit::common_properties::_TriposAtomType
const std::string _TriposAtomType
RDKit::LIST_INT_VECT_CI
LIST_INT_VECT::const_iterator LIST_INT_VECT_CI
Definition: types.h:158
RDKit::common_properties::_connectivityHKDeltas
const std::string _connectivityHKDeltas
RDKit::common_properties::_CrippenMR
const std::string _CrippenMR
RDKit::common_properties::_tpsaAtomContribs
const std::string _tpsaAtomContribs
RDKit::nextCombination
int nextCombination(INT_VECT &comb, int tot)
given a current combination of numbers change it to the next possible
RDKit::common_properties::_CrippenLogP
const std::string _CrippenLogP
RDKit::common_properties::_brokenChirality
const std::string _brokenChirality
RDKit::STR_VECT
std::vector< std::string > STR_VECT
Definition: Dict.h:26
RDKit::common_properties::molFileAlias
const std::string molFileAlias
RDKit::common_properties::_SmilesStart
const std::string _SmilesStart
RDKit::common_properties::_doIsoSmiles
const std::string _doIsoSmiles