00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef BALL_STRUCTURE_SDGENERATOR_H
00012 #define BALL_STRUCTURE_SDGENERATOR_H
00013
00014 #ifndef BALL_DATATYPE_OPTIONS_H
00015 # include <BALL/DATATYPE/options.h>
00016 #endif
00017
00018 #include <BALL/common.h>
00019
00020 #include <vector>
00021
00022 namespace BALL
00023 {
00024 class System;
00025 class Atom;
00026
00030 class BALL_EXPORT SDGenerator
00031 {
00032 private:
00033
00038 void checkAtoms(System& molecule_sys);
00039
00045 std::vector<std::vector<Atom*> > getSSSR(System& molecule_sys);
00046
00047
00048 public:
00049
00053
00054 struct BALL_EXPORT Option
00055 {
00058 static const char* SHOW_HYDROGENS;
00059 };
00060
00062 struct BALL_EXPORT Default
00063 {
00064 static const bool SHOW_HYDROGENS;
00065 };
00066
00068
00069
00074 SDGenerator(bool show_hydrogens = false);
00075
00076
00081 virtual ~SDGenerator();
00082
00086
00087 Options options;
00088
00091 void setDefaultOptions();
00093
00098 void generateSD(System& molecule_sys);
00099
00106 std::pair<Atom*, Atom*> getNeighbours(std::vector<Atom*>& ring, Atom*& atom);
00107
00113 std::vector<std::vector<Atom*> > sequenceRings(std::vector<std::vector<Atom*> >& ringsystem);
00114
00118 enum Property
00119 {
00120 IN_RING,
00121 PRE_CORE_CHAIN,
00122 CORE_CHAIN,
00123 FOUND,
00124 INVALID,
00125 DEPOSITED,
00126 FIRSTNEIGHBOUR,
00127 SEQUENCED,
00128 FXAS,
00129 EDGE,
00130 BUILT_IN_CHAIN,
00131 ASSEMBLED,
00132 SHIFTED,
00133 PRE_ASSEMBLED,
00134 ROTATED,
00135 ZIG,
00136 ZAG,
00137 STRAIGHT
00138 };
00139
00140 };
00141
00142 }
00143
00144 #endif