RDKit
Open-source cheminformatics and machine learning.
Loading...
Searching...
No Matches
Flippers.h
Go to the documentation of this file.
1//
2// Copyright (C) David Cosgrove 2025.
3//
4// @@ All Rights Reserved @@
5// This file is part of the RDKit.
6// The contents are covered by the terms of the BSD license
7// which is included in the file license.txt, found at the root
8// of the RDKit source tree.
9//
10
11#ifndef FLIPPERS_H
12#define FLIPPERS_H
13
14#include <RDGeneral/export.h>
15#include <GraphMol/Atom.h>
16#include <GraphMol/Bond.h>
17#include <GraphMol/Chirality.h>
19
20namespace RDKit {
21namespace EnumerateStereoisomers {
22namespace details {
23// The classes are called Flipper because that's what they were
24// called in the Python, but in fact they set a particular
25// stereochemistry at a centre according to whether a bool is
26// true or not. Setters would be a more accurate name.
28 public:
29 Flipper() = default;
30 Flipper(const Flipper &other) = delete;
31 Flipper(Flipper &&other) = delete;
32 Flipper &operator=(const Flipper &other) = delete;
33 Flipper &operator=(Flipper &&other) = delete;
34 virtual ~Flipper() = default;
35
36 // Sets the stereo at the centre, one way if flag is true,
37 // the other way if it is false.
38 virtual void flip(bool flag) = 0;
39};
40
42 public:
43 AtomFlipper() = delete;
45 AtomFlipper(const AtomFlipper &other) = delete;
46 AtomFlipper(AtomFlipper &&other) = delete;
47 AtomFlipper &operator=(const AtomFlipper &other) = delete;
48 AtomFlipper &operator=(AtomFlipper &&other) = delete;
49 ~AtomFlipper() override = default;
50
51 void flip(bool flag) override;
52
53 Atom *dp_atom{nullptr};
54};
55
57 public:
58 BondFlipper() = delete;
59 // This c'tor may leave dp_bond as a nullptr if the bond
60 // is not appropriate.
62 BondFlipper(const BondFlipper &other) = delete;
63 BondFlipper(BondFlipper &&other) = delete;
64 BondFlipper &operator=(const BondFlipper &other) = delete;
65 BondFlipper &operator=(BondFlipper &&other) = delete;
66 ~BondFlipper() override = default;
67
68 void flip(bool flag) override;
69
70 Bond *dp_bond{nullptr};
71};
72
74 public:
77 StereoGroupFlipper(const StereoGroupFlipper &other) = delete;
81 ~StereoGroupFlipper() override = default;
82
83 void flip(bool flag) override;
84
85 std::vector<std::pair<Atom *, Atom::ChiralType>> d_original_parities;
86};
87
89 public:
92 AtropisomerFlipper(const AtropisomerFlipper &other) = delete;
96 ~AtropisomerFlipper() override = default;
97
98 void flip(bool flag) override;
99
100 Bond *dp_bond{nullptr};
101 std::vector<unsigned int> d_ctrlAtoms;
102};
103
104} // namespace details
105} // namespace EnumerateStereoisomers
106} // namespace RDKit
107
108#endif // FLIPPERS_H
Defines the Atom class and associated typedefs.
Defines the class StereoGroup which stores relationships between the absolute configurations of atoms...
The class for representing atoms.
Definition Atom.h:74
class for representing a bond
Definition Bond.h:46
RWMol is a molecule class that is intended to be edited.
Definition RWMol.h:32
#define RDKIT_ENUMERATESTEREOISOMERS_EXPORT
Definition export.h:161
Std stuff.
AtomFlipper & operator=(const AtomFlipper &other)=delete
AtomFlipper & operator=(AtomFlipper &&other)=delete
AtomFlipper(const AtomFlipper &other)=delete
AtomFlipper(RWMol &mol, const Chirality::StereoInfo &si)
AtropisomerFlipper(RWMol &mol, const Chirality::StereoInfo &si)
AtropisomerFlipper(const AtropisomerFlipper &other)=delete
AtropisomerFlipper(AtropisomerFlipper &&other)=delete
AtropisomerFlipper & operator=(AtropisomerFlipper &&other)=delete
AtropisomerFlipper & operator=(const AtropisomerFlipper &other)=delete
BondFlipper & operator=(BondFlipper &&other)=delete
BondFlipper & operator=(const BondFlipper &other)=delete
BondFlipper(const BondFlipper &other)=delete
BondFlipper(RWMol &mol, const Chirality::StereoInfo &si)
Flipper & operator=(const Flipper &other)=delete
Flipper & operator=(Flipper &&other)=delete
std::vector< std::pair< Atom *, Atom::ChiralType > > d_original_parities
Definition Flippers.h:85
StereoGroupFlipper & operator=(StereoGroupFlipper &&other)=delete
StereoGroupFlipper & operator=(const StereoGroupFlipper &other)=delete
StereoGroupFlipper(StereoGroupFlipper &&other)=delete
StereoGroupFlipper(const StereoGroupFlipper &other)=delete