5 #ifndef BALL_STRUCTURE_SDGENERATOR_H
6 #define BALL_STRUCTURE_SDGENERATOR_H
8 #ifndef BALL_DATATYPE_OPTIONS_H
12 #ifndef BALL_STRUCTURE_RINGANALYSER_H
16 #ifndef BALL_KERNEL_PDBATOM_H
54 LAST_SDGENERATOR_PROPERTY
109 void setDefaultOptions();
116 void generateSD(
System& molecule_sys);
130 bool operator() (
Atom const* first,
Atom const* second)
const
135 return first_value < second_value;
149 void constructRingSystem_(
Position current_ring_system);
152 Angle getCFS_(
Atom const* atom,
bool hi);
158 void setCFS_(
Atom* atom,
Angle cfs,
bool high);
161 void pushCFS_(
Atom* atom);
164 Angle getBackupCFS_(
Atom const*,
bool hi);
170 Angle computeAngularSeparation_(
Atom* seed);
176 std::vector<Atom*> sequenceSubstituents_(
Atom* seed);
180 void computeShelleyPriorities_();
196 void attachCore_(
Position current_ring, std::vector<RingAnalyser::Ring>& current_system,
float x_start);
203 void attachTemplate_(
Position current_ring, std::vector<RingAnalyser::Ring>& current_system);
210 void attachFused_(
Position current_ring, std::vector<RingAnalyser::Ring>& current_system);
217 void attachBridged_(
Position current_ring, std::vector<RingAnalyser::Ring>& current_system);
224 void attachSpiro_(
Position current_ring, std::vector<RingAnalyser::Ring>& current_system);
227 void computeAdjacencyMatrix_(std::vector<Atom*>& chain, std::vector<bool>& result);
230 static bool compareChains_(
const vector<Atom*>& x,
const vector<Atom*>& y);
238 void smoothCFSAngle_(
Atom* seed);
241 void placeSubstituent_(
Atom* seed,
Atom* head,
Atom* next);
244 void depositPFU_(
Atom* seed_atom,
Atom* next_neighbour);
247 void checkOverlap_(
Atom* atom);
258 void findFloydWarshallPath_(std::vector<int>& path, std::vector<Index>& next,
Size remaining_atoms,
Position i,
Position j, std::list<Index>& output);