Assignment of bond orders from topology information. More...
#include <BALL/STRUCTURE/assignBondOrderProcessor.h>
Assignment of bond orders from topology information.
Bond Order Assignment Processor Called with default options the processor computes up to Default::MAX_NUMBER_OF_SOLUTIONS many possible bond orders with optimal value and applies the first solution found to the given AtomContainer ac_.
AssignBondOrderProcessor bop; bop.options.setBool(AssignBondOrderProcessor::Option::COMPUTE_ALSO_NON_OPTIMAL_SOLUTIONS, true); ... sys.apply(bop); i = bop.getNumberOfComputedSolutions(); bop.apply(i-1); ... while (bop.computeNextSolution()) { i++; bop.apply(i); }
Definition at line 85 of file assignBondOrderProcessor.h.
enum BALL::AssignBondOrderProcessor::HEURISTIC_INDEX [protected] |
Definition at line 840 of file assignBondOrderProcessor.h.
BALL::AssignBondOrderProcessor::AssignBondOrderProcessor | ( | ) |
Default Constructor.
virtual BALL::AssignBondOrderProcessor::~AssignBondOrderProcessor | ( | ) | [virtual] |
Destructor.
BALL::AssignBondOrderProcessor::AssignBondOrderProcessor | ( | const AssignBondOrderProcessor & | abop | ) | [protected] |
Applies the i-th precomputed bond order combination.
Set the AtomContainer ac_'s bond orders to the ones found in the (already computed!) i-th solution, start counting in 0!
i | index of the solution, whose bond orders should be assigned. |
Applies the given solution.
void BALL::AssignBondOrderProcessor::clear | ( | ) |
Clears the datastructures. NOTE: The options remain! Use setDefaultOptions() to clear the options.
Computes and applies one of the next best solutions.
Ignores the options MAX_NUMBER_OF_SOLUTIONS and COMPUTE_ALSO_NON_OPTIMAL_SOLUTIONS .
Adds missing hydrogens as virtual hydrogens to the given Atom, determines the possible penalty blocks, and returns the maximal possible atom type penalty.
"virtual" means that NO atoms and bonds are added to the AtomContainer.
atom | the atom, to which the virtual hydrogens should be added. |
float BALL::AssignBondOrderProcessor::estimateAtomTypePenalty_ | ( | Atom * | atom, | |
Index | atom_index, | |||
int | fixed_valence, | |||
int | fixed_virtual_order, | |||
int | num_free_bonds, | |||
PQ_Entry_ & | entry | |||
) | [protected] |
Estimates the atom type penalty for a given unclosed atom.
float BALL::AssignBondOrderProcessor::estimateBondLengthPenalty_ | ( | Index | atom_index, | |
const vector< Bond * > & | free_bonds, | |||
int | fixed_virtual_order, | |||
int | fixed_valence, | |||
int | num_free_bonds | |||
) | [protected] |
Estimates the bond length penalty for a given unclosed atom.
bool BALL::AssignBondOrderProcessor::estimatePenalty_ | ( | PQ_Entry_ & | entry, | |
bool | include_heuristic_term = true | |||
) | [protected] |
Estimates the objective function f = g* + h* of the ASTAR - algorithm, if include_heuristic_term == true, otherwise compute only f = g*. The result is stored in the PQ_Entry_ entry's member estimated_atom_type_penalty.
bool | - true, if the entry is still valid. | |
bool | - false otherwise. |
float BALL::AssignBondOrderProcessor::evaluatePenalty | ( | AtomContainer * | ac | ) |
Evaluates the AtomContainer ac's bond orders as specified in the Options and returns the computed penalty.
ac | AtomContainer, whose bond orders should be evalated. |
virtual bool BALL::AssignBondOrderProcessor::finish | ( | ) | [virtual] |
Processor method which is called after the operator()-call.
Reimplemented from BALL::UnaryProcessor< AtomContainer >.
AtomContainer const* BALL::AssignBondOrderProcessor::getAtomContainer | ( | ) | const [inline] |
Returns a nonmutable pointer to the original Molecule as AtomContainer.
Definition at line 344 of file assignBondOrderProcessor.h.
AtomContainer* BALL::AssignBondOrderProcessor::getAtomContainer | ( | ) | [inline] |
Returns a pointer to the original Molecule as AtomContainer.
Definition at line 340 of file assignBondOrderProcessor.h.
Returns the number of added hydrogens in Solution i.
Definition at line 311 of file assignBondOrderProcessor.h.
Size BALL::AssignBondOrderProcessor::getNumberOfComputedSolutions | ( | ) | [inline] |
Returns the number of already computed solutions.
NOTE: Having applied the operator with option ALGORITHM::ASTAR this method returns the number of optimal solutions+1!
Definition at line 335 of file assignBondOrderProcessor.h.
int BALL::AssignBondOrderProcessor::getNumberOfNodeExpansions | ( | Position | i | ) | [inline] |
Definition at line 397 of file assignBondOrderProcessor.h.
int BALL::AssignBondOrderProcessor::getNumberOfNodeExpansions_ | ( | const Solution_ & | sol | ) | [inline, protected] |
Definition at line 717 of file assignBondOrderProcessor.h.
int BALL::AssignBondOrderProcessor::getPenaltyClass_ | ( | Atom * | atom | ) | [protected] |
Finds the first matching SMARTS-expression in the penalty-vector and returns its index.
int | - -1 if there is no matching expression |
int BALL::AssignBondOrderProcessor::getQueueSize | ( | Position | i | ) | [inline] |
Definition at line 414 of file assignBondOrderProcessor.h.
int BALL::AssignBondOrderProcessor::getQueueSize_ | ( | const Solution_ & | sol | ) | [inline, protected] |
Definition at line 671 of file assignBondOrderProcessor.h.
const System& BALL::AssignBondOrderProcessor::getSolution | ( | Position | i | ) | throw (Exception::IndexOverflow) |
Returns a reference to the original system to which solution i was applied.
NOTE: This method has the same effect as calling apply(i)!
i | index of the solution, whose bond order assignment should be applied. |
Returns the total charge of solution i.
i | index of the solution, whose charge should be computed. |
Definition at line 361 of file assignBondOrderProcessor.h.
Returns the total charge of a solution.
sol | solution, whose charge should be computed. |
Definition at line 679 of file assignBondOrderProcessor.h.
Returns the total penalty of solution i.
i | index of the solution, whose penalty should be returned. |
Definition at line 380 of file assignBondOrderProcessor.h.
float BALL::AssignBondOrderProcessor::getTotalPenalty_ | ( | const Solution_ & | sol | ) | [inline, protected] |
Returns the total penalty of the given solution.
sol | solution, whose penalty should be returned. |
Definition at line 697 of file assignBondOrderProcessor.h.
virtual Processor::Result BALL::AssignBondOrderProcessor::operator() | ( | AtomContainer & | ac | ) | [virtual] |
Operator () for the processor
Called with Default-options the processor computes all possible bond orders with optimal value and applies the first solution to the given AtomContainer ac_.
ac | the AtomContainer to which the processor is applied. |
Reimplemented from BALL::UnaryProcessor< AtomContainer >.
AssignBondOrderProcessor& BALL::AssignBondOrderProcessor::operator= | ( | const AssignBondOrderProcessor & | abop | ) | [protected] |
bool BALL::AssignBondOrderProcessor::performAStarStep_ | ( | ) | [protected] |
Computes a next solution in the ASTAR - algorithm.
bool BALL::AssignBondOrderProcessor::performBranchAndBound_ | ( | ) | [protected] |
vector<PQ_Entry_> BALL::AssignBondOrderProcessor::performGreedy_ | ( | PQ_Entry_ & | entry, | |
Size | greedy_k = 10 | |||
) | [protected] |
bool BALL::AssignBondOrderProcessor::preassignPenaltyClasses_ | ( | ) | [protected] |
Assigns every atom of the AtomContainer to which the processor is applied to a block of possible valences and the corresponding penalties.
bool | - false if the AtomContainer to which the processor is applied to has an atom with no matching penalty block. | |
bool | - true otherwise |
bool BALL::AssignBondOrderProcessor::precomputeBondLengthPenalties_ | ( | ) | [protected] |
Precomputes for every bond of the AtomContainer, to which the processor is applied to, the possible bond length penalties resulting from deviation of the actual bond length to a standard length for bonds with same atom types and the chosen bond order.
bool | - false if the AtomContainer is invalid or the processor is in an invalid state | |
bool | - true otherwise |
bool BALL::AssignBondOrderProcessor::readAtomPenalties_ | ( | ) | throw (Exception::FileNotFound()) [protected] |
Reads and stores the penalty-INIFile (for example BondOrder.ini).
bool BALL::AssignBondOrderProcessor::readOptions_ | ( | ) | [protected] |
Reads, checks and stores the options.
void BALL::AssignBondOrderProcessor::resetBondOrders | ( | ) |
Reset all bond orders and assigned hydrogens.
Resets the AtomContainer we are operating on to the bond order configuration it had before applying the AssignBondOrderProcessor.
void BALL::AssignBondOrderProcessor::setDefaultOptions | ( | ) |
Resets the options to default values.
virtual bool BALL::AssignBondOrderProcessor::start | ( | ) | [virtual] |
Processor method which is called before the operator()-call.
Reimplemented from BALL::UnaryProcessor< AtomContainer >.
void BALL::AssignBondOrderProcessor::storeOriginalConfiguration_ | ( | ) | [protected] |
Stores the original configuration of the atom container.
friend class PQ_Entry_ [friend] |
Definition at line 91 of file assignBondOrderProcessor.h.
friend class Solution [friend] |
Definition at line 89 of file assignBondOrderProcessor.h.
AtomContainer* BALL::AssignBondOrderProcessor::ac_ [protected] |
Definition at line 816 of file assignBondOrderProcessor.h.
Definition at line 831 of file assignBondOrderProcessor.h.
float BALL::AssignBondOrderProcessor::alpha_ [protected] |
Definition at line 822 of file assignBondOrderProcessor.h.
vector< vector<int> > BALL::AssignBondOrderProcessor::atom_to_block_ [protected] |
Definition at line 910 of file assignBondOrderProcessor.h.
HashMap<Atom*, int> BALL::AssignBondOrderProcessor::atom_to_virtual_bond_index_ [protected] |
Definition at line 767 of file assignBondOrderProcessor.h.
Definition at line 806 of file assignBondOrderProcessor.h.
vector<std::pair<String, String> > BALL::AssignBondOrderProcessor::block_definition_ [protected] |
Definition at line 903 of file assignBondOrderProcessor.h.
vector<Size> BALL::AssignBondOrderProcessor::block_to_length_ [protected] |
Definition at line 900 of file assignBondOrderProcessor.h.
vector<Position> BALL::AssignBondOrderProcessor::block_to_start_idx_ [protected] |
Definition at line 899 of file assignBondOrderProcessor.h.
vector<int> BALL::AssignBondOrderProcessor::block_to_start_valence_ [protected] |
Definition at line 901 of file assignBondOrderProcessor.h.
std::map<Bond*, short> BALL::AssignBondOrderProcessor::bond_fixed_ [protected] |
Definition at line 738 of file assignBondOrderProcessor.h.
Definition at line 809 of file assignBondOrderProcessor.h.
HashMap<Bond*, vector<float> > BALL::AssignBondOrderProcessor::bond_lengths_penalties_ [protected] |
Definition at line 913 of file assignBondOrderProcessor.h.
HashMap<Bond*, Index> BALL::AssignBondOrderProcessor::bond_to_index_ [protected] |
Definition at line 744 of file assignBondOrderProcessor.h.
Definition at line 834 of file assignBondOrderProcessor.h.
Definition at line 828 of file assignBondOrderProcessor.h.
bool BALL::AssignBondOrderProcessor::evaluation_mode_ [protected] |
Processor is in an evaluation mode. Default is false.
Definition at line 734 of file assignBondOrderProcessor.h.
std::vector<Position> BALL::AssignBondOrderProcessor::fixed_val_ [protected] |
Definition at line 796 of file assignBondOrderProcessor.h.
std::vector<Bond*> BALL::AssignBondOrderProcessor::free_bonds_ [protected] |
Definition at line 741 of file assignBondOrderProcessor.h.
Definition at line 851 of file assignBondOrderProcessor.h.
Definition at line 852 of file assignBondOrderProcessor.h.
int BALL::AssignBondOrderProcessor::greedy_node_expansions_ [protected] |
Definition at line 856 of file assignBondOrderProcessor.h.
Definition at line 847 of file assignBondOrderProcessor.h.
Definition at line 785 of file assignBondOrderProcessor.h.
std::vector<Bond*> BALL::AssignBondOrderProcessor::ilp_index_to_free_bond_ [protected] |
Definition at line 779 of file assignBondOrderProcessor.h.
Definition at line 782 of file assignBondOrderProcessor.h.
std::vector<Bond*> BALL::AssignBondOrderProcessor::index_to_bond_ [protected] |
Definition at line 747 of file assignBondOrderProcessor.h.
int BALL::AssignBondOrderProcessor::last_applied_solution_ [protected] |
Definition at line 813 of file assignBondOrderProcessor.h.
int BALL::AssignBondOrderProcessor::max_bond_order_ [protected] |
Definition at line 819 of file assignBondOrderProcessor.h.
int BALL::AssignBondOrderProcessor::max_number_of_solutions_ [protected] |
Definition at line 825 of file assignBondOrderProcessor.h.
int BALL::AssignBondOrderProcessor::num_of_free_bonds_ [protected] |
Definition at line 793 of file assignBondOrderProcessor.h.
Definition at line 763 of file assignBondOrderProcessor.h.
HashMap<Atom*, int> BALL::AssignBondOrderProcessor::number_of_virtual_hydrogens_ [protected] |
Definition at line 757 of file assignBondOrderProcessor.h.
options
Definition at line 472 of file assignBondOrderProcessor.h.
vector<int> BALL::AssignBondOrderProcessor::penalties_ [protected] |
Definition at line 898 of file assignBondOrderProcessor.h.
std::priority_queue<PQ_Entry_> BALL::AssignBondOrderProcessor::queue_ [protected] |
The priority queue.
Definition at line 866 of file assignBondOrderProcessor.h.
vector<Solution_> BALL::AssignBondOrderProcessor::solutions_ [protected] |
Definition at line 799 of file assignBondOrderProcessor.h.
vector<Solution_> BALL::AssignBondOrderProcessor::starting_configuration_ [protected] |
Definition at line 803 of file assignBondOrderProcessor.h.
int BALL::AssignBondOrderProcessor::step_ [protected] |
Definition at line 917 of file assignBondOrderProcessor.h.
Timer BALL::AssignBondOrderProcessor::timer_ [protected] |
Definition at line 919 of file assignBondOrderProcessor.h.
Definition at line 790 of file assignBondOrderProcessor.h.
Definition at line 837 of file assignBondOrderProcessor.h.
bool BALL::AssignBondOrderProcessor::valid_ [protected] |
Processor is in a useable valid state.
Definition at line 731 of file assignBondOrderProcessor.h.
Bond* BALL::AssignBondOrderProcessor::virtual_bond_ [protected] |
Definition at line 771 of file assignBondOrderProcessor.h.
vector<Atom*> BALL::AssignBondOrderProcessor::virtual_bond_index_to_atom_ [protected] |
Definition at line 766 of file assignBondOrderProcessor.h.
std::vector<int> BALL::AssignBondOrderProcessor::virtual_bond_index_to_number_of_virtual_hydrogens_ [protected] |
Definition at line 760 of file assignBondOrderProcessor.h.