24 class EnergyMinimizer;
100 void setMaxOptimizationSteps(
Size steps);
131 void setFirstStrand(
Chain* s1);
139 void setSecondStrand(
Chain* s2);
156 void addMutation(
Index i,
const String& new_frag_name);
161 void clearMutations();
167 void setMatchingMode(MatchingMode mmode);
170 virtual void mutate_impl_(MutatorOptions opt);
173 typedef std::map<Residue*, String> Mutations;
174 typedef Mutations::iterator MutIterator;
184 Chain* first_strand_;
185 Chain* second_strand_;
188 MatchingMode matching_mode_;
190 void mutateSingleBase_(
Residue* res,
const String& basename)
const;
218 Atom* getTorsionDefiningAtom_(
Atom* atom)
const;
219 const Atom* getTorsionDefiningAtom_(
const Atom* atom)
const;
221 void rotateBasesMatchTorsion_(
AtomContainer* from,
const Atom* to_connection_at,
Atom* from_at,
const Atom* to_at)
const;
226 Atom* getConnectionAtom_(
Atom* at)
const;
235 bool isPurine_(
const Atom& baseNitrogen)
const;
236 bool isPyrimidine_(
const Atom& baseNitrogen)
const;
238 static const char* bases_[];
239 static const Size default_num_steps_;
243 std::map<Residue*, String> mutations_;
244 std::deque<Atom*> to_optimize_;
BALL_EXPORT AtomList atoms(const AtomContainer &fragment, const String &expression=String())
Use a minimum angle criterion and try out which conformation fits best.