The proto-Nucleic-Acid Builder (pNAB)
Containers.h
Go to the documentation of this file.
1 
5 #ifndef PNAB_CONTAINERS_H
6 #define PNAB_CONTAINERS_H
7 
8 #include <string>
9 #include <random>
10 #include <array>
11 #include <openbabel/mol.h>
12 #include <openbabel/atom.h>
13 #include <openbabel/bond.h>
14 #include <openbabel/obconversion.h>
15 #include <openbabel/math/matrix3x3.h>
16 
17 #ifndef M_PI
18 #define M_PI 3.14159265358979323846
19 #endif
20 
21 #ifndef DEG_TO_RAD
22 #define DEG_TO_RAD (M_PI/180.0)
23 #endif
24 
26 namespace PNAB {
36 
37  public:
45  mutation_rate(0.75), crossover_rate(0.75), population_size(1000), strand{}, is_hexad(false),
46  build_strand(std::vector<bool> {true, false, false, false, false, false}), num_candidates(10),
47  strand_orientation(std::vector<bool> {true, true, true, true, true, true}){};
48 
49  // Thresholds
50  std::vector<double> energy_filter;
62  double max_distance;
73  // Force Field Parameter
74  std::string ff_type;
79  // Algorithm parameters
80  std::string search_algorithm;
93  std::size_t num_steps;
100  unsigned int seed; /*< @brief The seed for the random number generator. Use the same value to get reproducible
101  * results.
102  *
103  * @sa ConformationSearch::MonteCarloSearch
104  * @sa ConformationSearch::RandomSearch
105  * @sa ConformationSearch::GeneticAlgorithmSearch
106  */
107 
108  double dihedral_step;
126  double mutation_rate;
131  double crossover_rate;
141  //Strand parameters
142  std::vector<std::string> strand;
143  std::vector<bool> build_strand;
147  std::vector<bool> strand_orientation;
152  bool is_hexad;
153  // Glycosidic bond
155  unsigned int num_candidates;
156  };
157 
172 
173  public:
180  shift{0}, slide{0}, rise{0}, tilt{0}, roll{0}, twist{0},
181  buckle{0}, propeller{0}, opening{0}, shear{0}, stretch{0}, stagger{0}, is_helical{true} {};
182 
183  //Helical parameters
184  double inclination,
185  tip,
202  bool is_helical;
203 
212 
225  OpenBabel::vector3 getGlobalTranslationVec(bool is_base_pair=false, bool is_second_strand=false);
226 
240  OpenBabel::vector3 getStepTranslationVec(unsigned n = 0, bool is_base_pair=false, bool is_second_strand=false);
241 
257  // Lu, X. J., El Hassan, M. A., & Hunter, C. A. (1997). Structure and conformation of helical nucleic acids:
258  // rebuilding program (SCHNArP). Journal of molecular biology, 273(3), 681-691.
259  OpenBabel::matrix3x3 getGlobalRotationMatrix(bool is_base_pair=false, bool is_second_strand=false);
260 
274  OpenBabel::matrix3x3 getStepRotationMatrix(unsigned n = 0, bool is_base_pair=false, bool is_second_strand=false);
275 
276  private:
287  OpenBabel::matrix3x3 rodrigues_formula(OpenBabel::vector3 axis_vector, double theta);
288 
302  std::vector<OpenBabel::vector3> StepParametersToReferenceFrame();
303 
319  void ReferenceFrameToHelicalParameters(OpenBabel::vector3 origin2, OpenBabel::vector3 x2, OpenBabel::vector3 y2, OpenBabel::vector3 z2);
320 
321  };
322 
333  class Backbone {
334  public:
335 
342 
351  Backbone(std::string file_path, std::array<unsigned, 2> interconnects, std::array<unsigned,2> linker, std::vector<std::vector<unsigned>> fixed_bonds = {});
352 
357  OpenBabel::OBAtom* getHead() {
358  return backbone.GetAtom(interconnects[0]);
359  }
360 
365  OpenBabel::OBAtom* getTail() {
366  return backbone.GetAtom(interconnects[1]);
367  }
368 
373  OpenBabel::OBAtom* getLinker() {
374  return backbone.GetAtom(linker[0]);
375  }
376 
381  OpenBabel::OBAtom* getVector() {
382  if (!vector_atom_deleted)
383  return backbone.GetAtom(linker[1]);
384  else {
385  std::cerr << "Called getVector() for backbone with no vector atom." << std::endl;
386  return nullptr;
387  }
388  }
389 
393  void center() {
394  backbone.Center();
395  }
396 
401  void rotate(double* rot) {
402  backbone.Rotate(rot);
403  }
404 
409  void translate(OpenBabel::vector3 vec) {
410  backbone.Translate(vec);
411  }
412 
417  OpenBabel::OBMol getMolecule() {
418  return backbone;
419  }
420 
424  void deleteVectorAtom();
425 
426  std::array<unsigned , 2> interconnects,
428  std::vector<std::vector<unsigned>> fixed_bonds;
429  OpenBabel::OBMol backbone;
430  std::string file_path;
431 
432  private:
437  void validate();
438 
440  };
441 
452  class Base {
453 
454  public:
455 
462 
472  Base(std::string name, std::string code, std::string file_path, std::array<std::size_t, 2> linker,
473  std::string pair_name = "");
474 
479  OpenBabel::OBAtom* getLinker() {
480  return base.GetAtom(static_cast<unsigned>(linker[0]));
481  }
482 
488  OpenBabel::OBAtom* getVector() {
489  if (!vector_atom_deleted)
490  return base.GetAtom(static_cast<unsigned>(linker[1]));
491  else
492  return nullptr;
493  }
494 
499  OpenBabel::OBMol getMolecule() {
500  return base;
501  }
502 
507  std::string getCode() {
508  return code;
509  }
510 
515  std::string getName() {
516  return name;
517  }
518 
523  if (!vector_atom_deleted) {
524  size_t id = getLinker()->GetId();
525  base.DeleteAtom(getVector());
526  linker = {base.GetAtomById(id)->GetIdx(), 0};
527  vector_atom_deleted = true;
528  }
529  }
530 
535  std::string getBasePairName() {
536  return pair_name;
537  }
538 
539  std::string name,
543  OpenBabel::OBMol base;
544  std::array<std::size_t, 2 > linker;
545 
546  private:
551  void validate();
552 
554  };
555 
562  class Bases {
563  public:
572  Bases(std::vector<Base> input_bases);
573 
577  Bases() {};
578 
586  PNAB::Base getBaseFromName(std::string name) {
587  for (auto v : bases) {
588  if (v.getName().find(name) != std::string::npos)
589  return v;
590  }
591  std::cerr << "Base \"" << name << "\" does not exists in list of bases. Please check input file."
592  << std::endl;
593  throw 1;
594  }
595 
605  std::vector<Base> getBasesFromStrand(std::vector<std::string> strand);
606 
616  std::vector<Base> getComplimentBasesFromStrand(std::vector<std::string> strand);
617 
618  private:
619  std::vector<Base> bases;
621  std::map<std::string, PNAB::Base> name_base_map;
622  };
623 
632  class BaseUnit {
633  public:
641  BaseUnit(Base b, Backbone backbone, double glycosidic_bond_distance = 0.0);
642 
646  BaseUnit() {};
647 
653  const OpenBabel::OBMol getMol() {
654  return unit;
655  }
656 
662  const std::array< std::size_t, 2 > getBaseIndexRange() {
663  return base_index_range;
664  };
665 
671  const std::array< std::size_t, 2 > getBackboneIndexRange() {
672  return backbone_index_range;
673  };
674 
680  const std::array< std::size_t, 2 > getBackboneLinkers() {
681  return backbone_interconnects;
682  };
683 
689  std::size_t getBaseConnectIndex() {
690  return base_connect_index;
691  }
692 
698  std::vector<std::vector<unsigned>> getFixedBonds() {
699  return fixed_bonds;
700  }
701 
702  private:
703  OpenBabel::OBMol unit;
704  std::array< std::size_t, 2 > base_index_range,
706  std::size_t base_connect_index;
707  std::array< std::size_t, 2 > backbone_interconnects;
708  std::vector<std::vector<unsigned>> fixed_bonds;
709  };
710 
725  struct ConformerData {
726  OpenBabel::OBMol molecule;
727  double *monomer_coord,
735  std::size_t index;
736  bool accepted;
737  std::vector<double> dihedral_angles;
738 
744  bool operator<(const ConformerData &cd) const {
745  return (total_energy < cd.total_energy);
746  }
747  };
748 
749 }
750 
751 #endif //PNAB_CONTAINERS_H
PNAB::HelicalParameters::getStepRotationMatrix
OpenBabel::matrix3x3 getStepRotationMatrix(unsigned n=0, bool is_base_pair=false, bool is_second_strand=false)
Get the step rotation matrix.
Definition: Containers.cpp:62
jupyter_widgets.backbone
def backbone(param)
Main backbone widget for use in Jupyter notebook.
Definition: jupyter_widgets.py:264
PNAB::BaseUnit::backbone_interconnects
std::array< std::size_t, 2 > backbone_interconnects
Atom indices defining where backbone connects.
Definition: Containers.h:707
PNAB::Backbone::getLinker
OpenBabel::OBAtom * getLinker()
Get the first Backbone::linker atom pointer.
Definition: Containers.h:373
PNAB::RuntimeParameters::strand_orientation
std::vector< bool > strand_orientation
Defines strand orientation for each strand in the hexad.
Definition: Containers.h:147
PNAB::RuntimeParameters::crossover_rate
double crossover_rate
The crossover rate in the genetic algorithm search.
Definition: Containers.h:131
PNAB::Backbone
Class for holding backbone information.
Definition: Containers.h:333
PNAB::HelicalParameters::inclination
double inclination
Inclination.
Definition: Containers.h:181
PNAB::Bases::getComplimentBasesFromStrand
std::vector< Base > getComplimentBasesFromStrand(std::vector< std::string > strand)
Returns the complimentary vector of the instances of Base given the names of the bases in the strand.
Definition: Containers.cpp:453
PNAB::ConformerData::rmsd
double rmsd
Root-mean square distance relative to lowest energy conformer.
Definition: Containers.h:734
PNAB::ConformerData::distance
double distance
distance between interconnects in Backbone for adjacent BaseUnit
Definition: Containers.h:728
PNAB::Bases
A class that contains a vector of all the defined bases and a funtion to return a base and the compli...
Definition: Containers.h:562
PNAB::BaseUnit::getMol
const OpenBabel::OBMol getMol()
Returns the nucleotide molecule, BaseUnit::unit.
Definition: Containers.h:653
PNAB::Base::Base
Base()
Empty constructor.
Definition: Containers.h:461
PNAB::Backbone::center
void center()
Centers the molecule. Basically just an alias of the Center() function from OpenBabel.
Definition: Containers.h:393
PNAB::Backbone::backbone
OpenBabel::OBMol backbone
The molecule for the backbone.
Definition: Containers.h:429
PNAB::Backbone::validate
void validate()
Does some basic sanity checks (such as whether or not the indices of the atom are within the range of...
Definition: Containers.cpp:295
PNAB::Backbone::getHead
OpenBabel::OBAtom * getHead()
Gives the pointer to an atom that is the head from Backbone::interconnects{head, tail}.
Definition: Containers.h:357
PNAB::Backbone::linker
std::array< unsigned, 2 > linker
The atom indices used to align and connect backbone to base in the nucleotide.
Definition: Containers.h:427
PNAB::HelicalParameters::is_helical
bool is_helical
Are the base parameters helical or step parameters.
Definition: Containers.h:202
PNAB::Bases::Bases
Bases()
Empty constructor.
Definition: Containers.h:577
PNAB::Bases::all_bases_pair
bool all_bases_pair
Whether all the bases in the strand have complimentary bases.
Definition: Containers.h:620
PNAB::RuntimeParameters::weighting_temperature
double weighting_temperature
The temperature used to compute the weighted probability for weighted Monte Carlo and weighted random...
Definition: Containers.h:115
PNAB::RuntimeParameters
A class for holding necessary and optional runtime parameters for conformational searches.
Definition: Containers.h:35
PNAB::HelicalParameters::getStepTranslationVec
OpenBabel::vector3 getStepTranslationVec(unsigned n=0, bool is_base_pair=false, bool is_second_strand=false)
Get the step translation vector.
Definition: Containers.cpp:30
PNAB::RuntimeParameters::is_hexad
bool is_hexad
Defines whether the 60 degrees rotation for hexads is performed.
Definition: Containers.h:152
PNAB::RuntimeParameters::strand
std::vector< std::string > strand
The names of each base used in the strand.
Definition: Containers.h:142
PNAB::BaseUnit::getBaseIndexRange
const std::array< std::size_t, 2 > getBaseIndexRange()
Returns the indices for the begining and end of the nucleobase atom indices, BaseUnit::base_index_ran...
Definition: Containers.h:662
PNAB::Backbone::getTail
OpenBabel::OBAtom * getTail()
Gives the pointer to an atom that is the tail from Backbone::interconnects{head, tail}.
Definition: Containers.h:365
PNAB::BaseUnit::getFixedBonds
std::vector< std::vector< unsigned > > getFixedBonds()
Returns a vector of the pair of indices for fixed rotatable dihedrals in the backbone,...
Definition: Containers.h:698
PNAB::Backbone::Backbone
Backbone()
Empty constructor.
Definition: Containers.h:341
PNAB::Base::vector_atom_deleted
bool vector_atom_deleted
Whether or not the getVector() atom was deleted.
Definition: Containers.h:553
PNAB::Base::getLinker
OpenBabel::OBAtom * getLinker()
Gives the atom of the base that connects directly to the backbone, Base::linker[0].
Definition: Containers.h:479
PNAB::HelicalParameters::h_twist
double h_twist
Helical twist.
Definition: Containers.h:186
PNAB::Base::file_path
std::string file_path
Path to a file containing the base.
Definition: Containers.h:542
PNAB::RuntimeParameters::num_steps
std::size_t num_steps
The number of points sampled in Monte Carlo and random searches and the number of generations in the ...
Definition: Containers.h:93
PNAB::HelicalParameters::tilt
double tilt
Tilt.
Definition: Containers.h:193
PNAB::ConformerData::bondE
double bondE
Energy of newly formed bonds in the backbone divided by the length of the strand -1.
Definition: Containers.h:729
PNAB::HelicalParameters::opening
double opening
Opening.
Definition: Containers.h:198
PNAB::RuntimeParameters::mutation_rate
double mutation_rate
The mutation rate in the genetic algorithm search.
Definition: Containers.h:126
PNAB::Base::code
std::string code
Three character code to define base ("Adenine": "ADE")
Definition: Containers.h:540
PNAB::BaseUnit::base_connect_index
std::size_t base_connect_index
Atom index where backbone connects to base (the base atom)
Definition: Containers.h:706
PNAB::RuntimeParameters::search_algorithm
std::string search_algorithm
The search algorithm.
Definition: Containers.h:80
PNAB::BaseUnit::fixed_bonds
std::vector< std::vector< unsigned > > fixed_bonds
Indices of fixed bonds in dihedral search.
Definition: Containers.h:708
PNAB::HelicalParameters::slide
double slide
Slide.
Definition: Containers.h:191
PNAB::HelicalParameters::StepParametersToReferenceFrame
std::vector< OpenBabel::vector3 > StepParametersToReferenceFrame()
Computes the origin and direction vectors given a set of step parameters.
Definition: Containers.cpp:99
PNAB::ConformerData::dihedral_angles
std::vector< double > dihedral_angles
The values of the rotatable dihedral angles in the conformer in degrees.
Definition: Containers.h:737
PNAB::ConformerData::angleE
double angleE
Energy of newly formed angles in the backbone divided by the length of the strand -1.
Definition: Containers.h:730
PNAB::Base::getCode
std::string getCode()
Gives the three-letter code of the base, Base::code.
Definition: Containers.h:507
PNAB::Base
Class to fully define bases (i.e. Adenine, Cytosine)
Definition: Containers.h:452
PNAB::Backbone::interconnects
std::array< unsigned, 2 > interconnects
The atom indices that define the periodic conditions between backbones { head, tail }.
Definition: Containers.h:426
PNAB::HelicalParameters::shear
double shear
Shear.
Definition: Containers.h:199
PNAB::HelicalParameters::rise
double rise
Rise.
Definition: Containers.h:192
PNAB::RuntimeParameters::RuntimeParameters
RuntimeParameters()
Empty constructor.
Definition: Containers.h:43
PNAB::HelicalParameters
A class for holding values for all helical parameters.
Definition: Containers.h:171
PNAB::Bases::getBasesFromStrand
std::vector< Base > getBasesFromStrand(std::vector< std::string > strand)
Returns the vector of the instances of Base given the names of the bases in the strand.
Definition: Containers.cpp:443
PNAB::Backbone::fixed_bonds
std::vector< std::vector< unsigned > > fixed_bonds
A vector containing pairs of indices defining fixed rotatable bonds during dihedral search.
Definition: Containers.h:428
PNAB::Backbone::vector_atom_deleted
bool vector_atom_deleted
Whether or not the atom from getVector() has been deleted.
Definition: Containers.h:439
PNAB::RuntimeParameters::num_candidates
unsigned int num_candidates
Quit after finding the specified number of accepted candidates.
Definition: Containers.h:155
PNAB::HelicalParameters::getGlobalRotationMatrix
OpenBabel::matrix3x3 getGlobalRotationMatrix(bool is_base_pair=false, bool is_second_strand=false)
Get the global rotation matrix.
Definition: Containers.cpp:40
PNAB::HelicalParameters::shift
double shift
Shift.
Definition: Containers.h:190
PNAB::Base::getBasePairName
std::string getBasePairName()
Get the name of the pair base, Base::pair_name.
Definition: Containers.h:535
PNAB::ConformerData::monomer_coord
double * monomer_coord
Pointer to array containing coordinates of a single monomer.
Definition: Containers.h:727
PNAB::HelicalParameters::stagger
double stagger
Stagger.
Definition: Containers.h:201
PNAB::HelicalParameters::buckle
double buckle
Buckle.
Definition: Containers.h:196
PNAB::HelicalParameters::HelicalParameters
HelicalParameters()
Empty constructor.
Definition: Containers.h:179
PNAB::ConformerData::torsionE
double torsionE
Energy of all rotatable torsions divided by the length of the strand.
Definition: Containers.h:731
PNAB::Backbone::translate
void translate(OpenBabel::vector3 vec)
Translates the molecule by a vector. Basically just an alias of the Translate() function from OpenBab...
Definition: Containers.h:409
PNAB::HelicalParameters::roll
double roll
Roll.
Definition: Containers.h:194
PNAB::RuntimeParameters::energy_filter
std::vector< double > energy_filter
[max bond E, max angle E, max torsion E, max VDW E, max total E]
Definition: Containers.h:47
PNAB::Base::deleteVectorAtom
void deleteVectorAtom()
Deletes the atom from getVector() safely. If the atom is already deleted, nothing happens.
Definition: Containers.h:522
PNAB::Base::base
OpenBabel::OBMol base
The OBMol defining the base.
Definition: Containers.h:543
PNAB::ConformerData::VDWE
double VDWE
Total van Der Wals Energy divided by the length of the strand.
Definition: Containers.h:732
PNAB::BaseUnit::getBackboneLinkers
const std::array< std::size_t, 2 > getBackboneLinkers()
Returns the indices for atoms where the backbone connects, BaseUnit::backbone_interconnects.
Definition: Containers.h:680
PNAB::Bases::bases
std::vector< Base > bases
The vector of bases.
Definition: Containers.h:619
PNAB::RuntimeParameters::dihedral_step
double dihedral_step
The dihedral step size for systematic search (degrees)
Definition: Containers.h:108
PNAB::HelicalParameters::y_displacement
double y_displacement
Y-Displacement.
Definition: Containers.h:188
PNAB::HelicalParameters::rodrigues_formula
OpenBabel::matrix3x3 rodrigues_formula(OpenBabel::vector3 axis_vector, double theta)
Rodrigues rotation formula for rotating a vector in space.
Definition: Containers.cpp:78
PNAB::BaseUnit::BaseUnit
BaseUnit()
Empty constructor.
Definition: Containers.h:646
PNAB::HelicalParameters::x_displacement
double x_displacement
X-Displacement.
Definition: Containers.h:187
PNAB::BaseUnit::getBaseConnectIndex
std::size_t getBaseConnectIndex()
Returns the index of the atom where the nucleobase connects to the backbone, BaseUnit::base_connect_i...
Definition: Containers.h:689
PNAB::Backbone::getVector
OpenBabel::OBAtom * getVector()
Get the second Backbone::linker atom pointer (which is probably a hydrogen)
Definition: Containers.h:381
PNAB::BaseUnit::unit
OpenBabel::OBMol unit
Holds molecule containing base with backbone attached.
Definition: Containers.h:703
PNAB::ConformerData::index
std::size_t index
The index of the conformer.
Definition: Containers.h:735
PNAB::HelicalParameters::stretch
double stretch
Stretch.
Definition: Containers.h:200
PNAB::Backbone::deleteVectorAtom
void deleteVectorAtom()
Deletes the atom from getVector() safely. If the atom is already deleted, nothing happens.
Definition: Containers.cpp:252
PNAB
The PNAB name space contains all the C++ classes and functions for the proto-Nucleic Acid Builder.
Definition: binder.cpp:14
PNAB::ConformerData
Class to contain important information for an individual conformer.
Definition: Containers.h:725
PNAB::ConformerData::accepted
bool accepted
Is the energy of the conformer less than the thresholds.
Definition: Containers.h:736
PNAB::ConformerData::total_energy
double total_energy
Total energy of the conformation divided by divided by the length of the strand.
Definition: Containers.h:733
PNAB::Backbone::getMolecule
OpenBabel::OBMol getMolecule()
Gives a copy of the molecule in the backbone, Backbone::backbone.
Definition: Containers.h:417
PNAB::ConformerData::operator<
bool operator<(const ConformerData &cd) const
Used for simple sorting based on total energy of the conformer.
Definition: Containers.h:744
PNAB::BaseUnit::base_index_range
std::array< std::size_t, 2 > base_index_range
Range of indices of the unit that are a part of the base, [start, stop].
Definition: Containers.h:704
PNAB::Base::pair_name
std::string pair_name
Name of the pair base.
Definition: Containers.h:541
PNAB::BaseUnit
Class to hold bases with backbones attached (nucleotides), along with associated necessary informatio...
Definition: Containers.h:632
PNAB::RuntimeParameters::glycosidic_bond_distance
double glycosidic_bond_distance
Set a user-defined glycosidic bond distance (in Angstroms). If zero (default), sets the distance base...
Definition: Containers.h:154
PNAB::Base::validate
void validate()
Does some basic sanity checks (such as whether or not the indices of the atom are within the range of...
Definition: Containers.cpp:372
PNAB::Base::getName
std::string getName()
Gives the full name of the base, Base::name.
Definition: Containers.h:515
PNAB::Base::name
std::string name
Full name of base (i.e. "Adenine" or just "A")
Definition: Containers.h:539
PNAB::Backbone::file_path
std::string file_path
The path to the file containing the molecule.
Definition: Containers.h:430
PNAB::HelicalParameters::getGlobalTranslationVec
OpenBabel::vector3 getGlobalTranslationVec(bool is_base_pair=false, bool is_second_strand=false)
Get the global translation vector.
Definition: Containers.cpp:21
PNAB::RuntimeParameters::max_distance
double max_distance
Maximum accepted distance (Angstrom) between head and tail of successive nucleotides.
Definition: Containers.h:62
PNAB::Bases::name_base_map
std::map< std::string, PNAB::Base > name_base_map
A map of the names of the bases and the complimentary bases.
Definition: Containers.h:621
PNAB::HelicalParameters::propeller
double propeller
Propeller twist.
Definition: Containers.h:197
PNAB::HelicalParameters::h_rise
double h_rise
Helical rise.
Definition: Containers.h:189
PNAB::BaseUnit::getBackboneIndexRange
const std::array< std::size_t, 2 > getBackboneIndexRange()
Returns the indices for the begining and end of the backbone atom indices, BaseUnit::backbone_index_r...
Definition: Containers.h:671
PNAB::Backbone::rotate
void rotate(double *rot)
Rotates the molecule by a matrix. Basically just an alias of the Rotate() function from OpenBabel.
Definition: Containers.h:401
PNAB::HelicalParameters::tip
double tip
Tip.
Definition: Containers.h:185
PNAB::RuntimeParameters::population_size
int population_size
The population size in the genetic algorithm search.
Definition: Containers.h:136
PNAB::HelicalParameters::computeHelicalParameters
void computeHelicalParameters()
A function to compute the helical parameters. This should be called when the the step parameters are ...
Definition: Containers.cpp:12
PNAB::Base::getVector
OpenBabel::OBAtom * getVector()
Gives the (most likely hydrogen) atom of the base connected to the atom from getLinker() which define...
Definition: Containers.h:488
PNAB::RuntimeParameters::monte_carlo_temperature
double monte_carlo_temperature
The temperature used in the Monte Carlo acceptance and rejection procedure.
Definition: Containers.h:121
PNAB::HelicalParameters::ReferenceFrameToHelicalParameters
void ReferenceFrameToHelicalParameters(OpenBabel::vector3 origin2, OpenBabel::vector3 x2, OpenBabel::vector3 y2, OpenBabel::vector3 z2)
Computes the helical parameters given the origin and direction vectors of the second base.
Definition: Containers.cpp:148
PNAB::Base::linker
std::array< std::size_t, 2 > linker
Holds indices for atoms forming a vector to connect to backbone {linker, hydrogen}.
Definition: Containers.h:544
PNAB::Base::getMolecule
OpenBabel::OBMol getMolecule()
Returns a copy of the base molecule, Base::base.
Definition: Containers.h:499
PNAB::ConformerData::molecule
OpenBabel::OBMol molecule
The openbabel OBMol object for the conformer.
Definition: Containers.h:726
PNAB::Bases::getBaseFromName
PNAB::Base getBaseFromName(std::string name)
Returns the Base instance given the name of the base.
Definition: Containers.h:586
PNAB::RuntimeParameters::build_strand
std::vector< bool > build_strand
Defines whether to build a given strand.
Definition: Containers.h:143
PNAB::RuntimeParameters::ff_type
std::string ff_type
The type of the forcefield such as "GAFF" or "MMFF94"; available through Openbabel.
Definition: Containers.h:74
PNAB::HelicalParameters::twist
double twist
Twist.
Definition: Containers.h:195
PNAB::RuntimeParameters::seed
unsigned int seed
Definition: Containers.h:100
PNAB::BaseUnit::backbone_index_range
std::array< std::size_t, 2 > backbone_index_range
Range of indices of the unit that are a part of the backbone, [start, stop].
Definition: Containers.h:705