Loading...
Searching...
No Matches
CIPMol.h
Go to the documentation of this file.
//
//
// Copyright (C) 2020 Schrödinger, 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.
//
#pragma once
#include <memory>
#include <GraphMol/RDKitBase.h>
#include "Descriptor.h"
#include "Mancude.h"
namespace RDKit {
namespace CIPLabeler {
template <typename T, typename U>
class CIPMolSpan {
public:
class CIPMolIter {
public:
CIPMolIter() = delete;
CIPMolIter(ROMol &mol, U pos) : d_mol{mol}, d_pos{std::move(pos)} {}
T &operator*() {
d_current = d_mol[*d_pos];
return d_current;
}
CIPMolIter &operator++() {
++d_pos;
return *this;
}
bool operator!=(const CIPMolIter &it) const { return d_pos != it.d_pos; }
private:
ROMol &d_mol;
U d_pos;
T d_current = nullptr;
};
public:
CIPMolSpan() = delete;
CIPMolSpan(ROMol &mol, std::pair<U, U> &&itr)
: d_mol{mol},
d_istart{std::move(itr.first)},
d_iend{std::move(itr.second)} {}
CIPMolIter begin() { return {d_mol, d_istart}; }
CIPMolIter end() { return {d_mol, d_iend}; }
private:
ROMol &d_mol;
const U d_istart;
const U d_iend;
};
class CIPMol {
public:
CIPMol() = delete;
explicit CIPMol(ROMol &mol);
// Average atomic number with other atoms that are in an
// aromatic ring with this one.
boost::rational<int> getFractionalAtomicNum(Atom *atom) const;
unsigned getNumAtoms() const;
unsigned getNumBonds() const;
Atom *getAtom(int idx) const;
CXXAtomIterator<MolGraph, Atom *> atoms() const;
Bond *getBond(int idx) const;
CIPMolSpan<Bond *, ROMol::OEDGE_ITER> getBonds(Atom *atom) const;
CIPMolSpan<Atom *, ROMol::ADJ_ITER> getNeighbors(Atom *atom) const;
bool isInRing(Bond *bond) const;
// Integer bond order of a kekulized molecule
// Dative bonds get bond order 0.
int getBondOrder(Bond *bond) const;
private:
ROMol &d_mol;
std::unique_ptr<RWMol> dp_kekulized_mol = nullptr;
std::vector<boost::rational<int>> d_atomnums;
};
} // namespace CIPLabeler
} // namespace RDKit
Descriptor.h
Mancude.h
RDKitBase.h
pulls in the core RDKit functionality
RDKit::Atom
The class for representing atoms.
Definition Atom.h:68
RDKit::Bond
class for representing a bond
Definition Bond.h:47
RDKit::CIPLabeler::CIPMolSpan::CIPMolIter
Definition CIPMol.h:27
RDKit::CIPLabeler::CIPMolSpan::CIPMolIter::operator++
CIPMolIter & operator++()
Definition CIPMol.h:37
RDKit::CIPLabeler::CIPMolSpan::CIPMolIter::operator!=
bool operator!=(const CIPMolIter &it) const
Definition CIPMol.h:42
RDKit::CIPLabeler::CIPMolSpan::CIPMolIter::CIPMolIter
CIPMolIter()=delete
RDKit::CIPLabeler::CIPMolSpan::CIPMolIter::operator*
T & operator*()
Definition CIPMol.h:32
RDKit::CIPLabeler::CIPMolSpan::CIPMolIter::CIPMolIter
CIPMolIter(ROMol &mol, U pos)
Definition CIPMol.h:30
RDKit::CIPLabeler::CIPMolSpan
Definition CIPMol.h:25
RDKit::CIPLabeler::CIPMolSpan::CIPMolSpan
CIPMolSpan(ROMol &mol, std::pair< U, U > &&itr)
Definition CIPMol.h:52
RDKit::CIPLabeler::CIPMolSpan::begin
CIPMolIter begin()
Definition CIPMol.h:57
RDKit::CIPLabeler::CIPMolSpan::CIPMolSpan
CIPMolSpan()=delete
RDKit::CIPLabeler::CIPMolSpan::end
CIPMolIter end()
Definition CIPMol.h:58
RDKit::CIPLabeler::CIPMol
Definition CIPMol.h:66
RDKit::CIPLabeler::CIPMol::CIPMol
CIPMol(ROMol &mol)
RDKit::CIPLabeler::CIPMol::getBondOrder
int getBondOrder(Bond *bond) const
RDKit::CIPLabeler::CIPMol::isInRing
bool isInRing(Bond *bond) const
RDKit::CIPLabeler::CIPMol::getNeighbors
CIPMolSpan< Atom *, ROMol::ADJ_ITER > getNeighbors(Atom *atom) const
RDKit::CIPLabeler::CIPMol::CIPMol
CIPMol()=delete
RDKit::CIPLabeler::CIPMol::atoms
CXXAtomIterator< MolGraph, Atom * > atoms() const
RDKit::CIPLabeler::CIPMol::getFractionalAtomicNum
boost::rational< int > getFractionalAtomicNum(Atom *atom) const
RDKit::CIPLabeler::CIPMol::getBonds
CIPMolSpan< Bond *, ROMol::OEDGE_ITER > getBonds(Atom *atom) const
RDKit::CIPLabeler::CIPMol::getNumBonds
unsigned getNumBonds() const
RDKit::CIPLabeler::CIPMol::getBond
Bond * getBond(int idx) const
RDKit::CIPLabeler::CIPMol::getNumAtoms
unsigned getNumAtoms() const
RDKit::CIPLabeler::CIPMol::getAtom
Atom * getAtom(int idx) const
RDKit::ROMol
Definition ROMol.h:199
RDKit
Std stuff.
Definition Abbreviations.h:19
RDKit::rdvalue_is
bool rdvalue_is(const RDValue_cast_t)
Definition RDValue-doublemagic.h:372
RDKit::CXXAtomIterator
Definition ROMol.h:115