BALL  1.5.0
DNAMutator.h
Go to the documentation of this file.
1 /*
2  * File: BALL/STRUCTURE/DNAMutator.h
3  * Created: 23.10.2008
4  *
5  * Author: Daniel Stoeckel
6  */
7 
8 #ifndef DNAMUTATOR_H
9 #define DNAMUTATOR_H
10 
11 #include <BALL/COMMON/exception.h>
12 #include <BALL/MATHS/vector3.h>
13 #include <BALL/STRUCTURE/mutator.h>
15 
16 #include <deque>
17 #include <map>
18 
19 namespace BALL
20 {
21  class Chain;
22  class Residue;
23  class FragmentDB;
24  class EnergyMinimizer;
25  class ForceField;
26  class Fragment;
27  class AtomContainer;
28  class Atom;
29 
31  : public Mutator
32  {
33  public:
37  {
42  MATCH_TORSION
43  };
64  DNAMutator(EnergyMinimizer* mini = NULL, ForceField* ff = NULL, FragmentDB* frag = NULL);
65 
71 
80  virtual void setup();
81 
87 
95 
101 
108 
115  bool optimize();
116 
123  void setStrands(Chain* s1, Chain* s2);
124 
132 
140 
145 
156  void addMutation(Index i, const String& new_frag_name);
157 
162 
168 
169  protected:
170  virtual void mutate_impl_(MutatorOptions opt);
171 
172  private:
173  typedef std::map<Residue*, String> Mutations;
174  typedef Mutations::iterator MutIterator;
175 
176  bool keep_ff_;
177 
178  ForceField* ff_;
179  EnergyMinimizer* minimizer_;
180 
181  Size num_steps_;
182  Property prop_;
183 
184  Chain* first_strand_;
185  Chain* second_strand_;
186 
187  NucleotideMapping mapping_;
188  MatchingMode matching_mode_;
189 
190  void mutateSingleBase_(Residue* res, const String& basename) const;
191 
192  void freeFF_();
193 
194  void mark_(AtomContainer* atoms) const;
195  void unmark_(AtomContainer* atoms) const;
196 
202  bool optimize_(Fragment* frag);
203 
208  Atom* getAttachmentAtom(AtomContainer* res) const;
209 
214  Atom* markBaseAtoms_(AtomContainer* res) const;
215 
216  void alignBases_(AtomContainer* from, const Vector3& from_connection, const Vector3& to_connection, Atom* from_at) const;
217 
218  Atom* getTorsionDefiningAtom_(Atom* atom) const;
219  const Atom* getTorsionDefiningAtom_(const Atom* atom) const;
220 
221  void rotateBasesMatchTorsion_(AtomContainer* from, const Atom* to_connection_at, Atom* from_at, const Atom* to_at) const;
222  void rotateBasesMinAngle_ (AtomContainer* from, const Vector3& to_connection, Atom* from_at, const Atom* to_at) const;
223  void rotateSameBases_(AtomContainer* from, AtomContainer* to) const;
224 
225  Vector3 getNormalVector_(const Atom* at) const;
226  Atom* getConnectionAtom_(Atom* at) const;
227 
228  String canonizeName_(const String& frag_name) const;
229 
235  bool isPurine_(const Atom& baseNitrogen) const;
236  bool isPyrimidine_(const Atom& baseNitrogen) const;
237 
238  static const char* bases_[];
239  static const Size default_num_steps_;
240 
241  String getComplement_(const String& s) const;
242 
243  std::map<Residue*, String> mutations_;
244  std::deque<Atom*> to_optimize_;
245  };
246 }
247 
248 #endif
249 
BALL::DNAMutator::addMutation
void addMutation(Index i, const String &new_frag_name)
BALL_EXPORT
#define BALL_EXPORT
Definition: COMMON/global.h:50
BALL::DNAMutator::setNucleotideMapping
void setNucleotideMapping(const NucleotideMapping &bij)
BALL::atoms
BALL_EXPORT AtomList atoms(const AtomContainer &fragment, const String &expression=String())
BALL::Chain
Definition: chain.h:32
BALL::AtomContainer
Definition: atomContainer.h:32
BALL::DNAMutator::MatchingMode
MatchingMode
Definition: DNAMutator.h:37
BALL::Mutator::MutatorOptions
MutatorOptions
Definition: mutator.h:20
vector3.h
BALL::DNAMutator::setSecondStrand
void setSecondStrand(Chain *s2)
BALL::Atom
Definition: atom.h:90
BALL::DNAMutator::~DNAMutator
~DNAMutator()
BALL::Residue
Definition: residue.h:38
BALL::DNAMutator::optimize
bool optimize()
BALL::DNAMutator::clearMutations
void clearMutations()
BALL::DNAMutator::setFirstStrand
void setFirstStrand(Chain *s1)
BALL::String
Definition: string.h:57
BALL::DNAMutator::DNAMutator
DNAMutator(EnergyMinimizer *mini=NULL, ForceField *ff=NULL, FragmentDB *frag=NULL)
BALL
Definition: constants.h:13
BALL::DNAMutator::setup
virtual void setup()
BALL::DNAMutator::setMaxOptimizationSteps
void setMaxOptimizationSteps(Size steps)
BALL::PDB::Atom
char Atom[5]
Definition: PDBdefs.h:257
BALL::DNAMutator::setStrands
void setStrands(Chain *s1, Chain *s2)
BALL::Mutator
Definition: mutator.h:13
BALL_INDEX_TYPE
BALL::DNAMutator::MINIMUM_ANGLE
@ MINIMUM_ANGLE
Use a minimum angle criterion and try out which conformation fits best.
Definition: DNAMutator.h:39
BALL_SIZE_TYPE
BALL::TVector3< float >
BALL::DNAMutator::setMatchingMode
void setMatchingMode(MatchingMode mmode)
BALL::FragmentDB
Definition: fragmentDB.h:45
BALL::DNAMutator::setMinimizer
void setMinimizer(EnergyMinimizer *mini)
BALL::Fragment
Definition: fragment.h:22
exception.h
BALL::DNAMutator::setForceField
void setForceField(ForceField *ff)
BALL::DNAMutator::mutate_impl_
virtual void mutate_impl_(MutatorOptions opt)
BALL::EnergyMinimizer
Definition: energyMinimizer.h:30
mutator.h
BALL::DNAMutator::setUsedProperty
void setUsedProperty(Property p)
BALL::DNAMutator
Definition: DNAMutator.h:32
BALL::ForceField
Definition: forceField.h:86
BALL::NucleotideMapping
Definition: nucleotideMapping.h:22
nucleotideMapping.h