BALL  1.4.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Classes | Protected Member Functions | Protected Attributes | Friends
BALL::AssignBondOrderProcessor Class Reference

Assignment of bond orders from topology information. More...

#include <BALL/STRUCTURE/assignBondOrderProcessor.h>

Inheritance diagram for BALL::AssignBondOrderProcessor:
BALL::UnaryProcessor< AtomContainer > BALL::UnaryFunctor< AtomContainer, Processor::Result >

List of all members.

Classes

struct  Algorithm
struct  Default
 Default values for options. More...
struct  Option
 Option names. More...

Public Member Functions

Constructors and Destructors
 AssignBondOrderProcessor ()
 Default Constructor.
virtual ~AssignBondOrderProcessor ()
 Destructor.
Processor-related methods
virtual bool start ()
 Processor method which is called before the operator()-call.
void clear ()
virtual Processor::Result operator() (AtomContainer &ac)
virtual bool finish ()
 Processor method which is called after the operator()-call.
Accessors
Size getNumberOfAddedHydrogens (Position i)
Size getNumberOfComputedSolutions ()
AtomContainergetAtomContainer ()
AtomContainer const * getAtomContainer () const
const SystemgetSolution (Position i) throw (Exception::IndexOverflow)
float getTotalCharge (Position i)
float getTotalPenalty (Position i=0)
int getNumberOfNodeExpansions (Position i)
int getQueueSize (Position i)
bool apply (Position i)
void resetBondOrders ()
bool computeNextSolution (bool apply_solution=true)
void setDefaultOptions ()
bool hasValidOptions ()
float evaluatePenalty (AtomContainer *ac)

Public Attributes

Public Attributes
Options options
 the processor's options

Protected Member Functions

bool readOptions_ ()
bool readAtomPenalties_ () throw (Exception::FileNotFound())
bool preassignPenaltyClasses_ ()
int getPenaltyClass_ (Atom *atom)
bool precomputeBondLengthPenalties_ ()
float computeVirtualHydrogens_ (Atom *atom)
bool apply_ (BondOrderAssignment &solution)
void storeOriginalConfiguration_ ()
int getQueueSize_ (const BondOrderAssignment &sol)
float getTotalCharge_ (const BondOrderAssignment &sol)
float getTotalPenalty_ (const BondOrderAssignment &sol)
int getNumberOfNodeExpansions_ (const BondOrderAssignment &sol)
 AssignBondOrderProcessor (const AssignBondOrderProcessor &abop)
AssignBondOrderProcessoroperator= (const AssignBondOrderProcessor &abop)

Protected Attributes

bool valid_
 Processor is in a useable valid state.
bool evaluation_mode_
 Processor is in an evaluation mode. Default is false.
std::map< Bond *, short > bond_fixed_
std::vector< Bond * > free_bonds_
HashMap< Bond *, Indexbond_to_index_
std::vector< Bond * > index_to_bond_
HashMap< Atom *, int > number_of_virtual_hydrogens_
std::vector< int > virtual_bond_index_to_number_of_virtual_hydrogens_
Size num_of_virtual_bonds_
vector< Atom * > virtual_bond_index_to_atom_
HashMap< Atom *, int > atom_to_virtual_bond_index_
Bondvirtual_bond_
Position total_num_of_bonds_
int num_of_free_bonds_
std::vector< Positionfixed_val_
vector< BondOrderAssignmentsolutions_
vector< BondOrderAssignmentstarting_configuration_
float atom_type_normalization_factor_
float bond_length_normalization_factor_
int last_applied_solution_
AtomContainerac_
int max_bond_order_
float alpha_
int max_number_of_solutions_
bool compute_also_non_optimal_solutions_
bool add_missing_hydrogens_
bool compute_also_connectivity_
bool use_fine_penalty_
vector< int > penalties_
vector< Positionblock_to_start_idx_
vector< Sizeblock_to_length_
vector< int > block_to_start_valence_
vector< std::pair< String,
String > > 
block_definition_
vector< vector< int > > atom_to_block_
HashMap< Bond *, vector< float > > bond_lengths_penalties_
Timer timer_
StringHashMap
< boost::shared_ptr
< BondOrderAssignmentStrategy > > 
strategies_

Friends

class PartialBondOrderAssignment
class BondOrderAssignment
class PQ_Entry_
class BondOrderAssignmentStrategy
class AStarBondOrderStrategy
class BranchAndBoundBondOrderStrategy
class FPTBondOrderStrategy
class ILPBondOrderStrategy
class KGreedyBondOrderStrategy

Detailed Description

Assignment of bond orders from topology information.

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.

All further optimal solutions can be applied by calling the method apply() . Additional solutions can be computed by calling the method computeNextSolution() (except when using the FPT strategy which currently does not support this behaviour).


Example code:
    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 92 of file assignBondOrderProcessor.h.


Constructor & Destructor Documentation

Default Constructor.

Destructor.


Member Function Documentation

Applies the i-th precomputed bond order assignment.

Sets the AtomContainer's bond orders to the ones found in the (already computed!) i-th solution, start counting at 0!

NOTE: All virtual hydrogens added to the processed AtomContainer by a previous call of apply will be deleted by the current call!
Parameters:
iindex of the solution whose bond orders should be assigned.
Returns:
bool - true if the i-th solution is valid, false otherwise.

Applies the given solution.

Clears the data structures.

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 .

Returns:
bool - false if no further solution can be found.

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 original AtomContainer.

Parameters:
atomthe atom, to which the virtual hydrogens should be added.
Returns:
float - the max possible penalty the atom can get, if hydrogen(s) are added.
See also:
Option::ADD_HYDROGENS

Evaluates the AtomContainer's bond orders as specified in the Options and returns the computed penalty.

Parameters:
acAtomContainer, whose bond orders should be evaluated.
Returns:
float - computed penalty, -1 if current assignment is not valid or includes aromatic bonds.

Processor method which is called after the operator()-call.

Reimplemented from BALL::UnaryProcessor< AtomContainer >.

Returns a pointer to the original Molecule as AtomContainer.

Definition at line 376 of file assignBondOrderProcessor.h.

Returns a nonmutable pointer to the original Molecule as AtomContainer.

Definition at line 380 of file assignBondOrderProcessor.h.

Returns the number of added hydrogens in solution i.

NOTE: Hydrogens can only be added using the Option::ADD_HYDROGENS-option.

Returns:
Size - number of hydrogens added in assignment solution i.
See also:
Option::ADD_HYDROGENS

Definition at line 347 of file assignBondOrderProcessor.h.

Returns the number of already computed solutions.

NOTE: Having applied the operator with option Option Algorithm::A_STAR this method returns the number of optimal solutions+1!

Returns:
Size - number of already computed solutions.
See also:
Option::COMPUTE_ALSO_NON_OPTIMAL_SOLUTIONS
Option::MAX_NUMBER_OF_SOLUTIONS

Definition at line 371 of file assignBondOrderProcessor.h.

Definition at line 435 of file assignBondOrderProcessor.h.

Definition at line 634 of file assignBondOrderProcessor.h.

Finds the first matching SMARTS-expression in the penalty-vector and returns its index.

Return values:
int-1 if there is no matching expression

Definition at line 452 of file assignBondOrderProcessor.h.

int BALL::AssignBondOrderProcessor::getQueueSize_ ( const BondOrderAssignment sol) [inline, protected]

Definition at line 598 of file assignBondOrderProcessor.h.

Returns a reference to the original system to which solution i was applied.

NOTE: This method has the same effect as calling apply(i)!

Parameters:
iindex of the solution, whose bond order assignment should be applied.
Returns:
const System& - the original system with bond order assignment of solution i. If i is invalid, an Exception is thrown.

Returns the total charge of solution i.

NOTE: This method is still experimental.

Parameters:
iindex of the solution, whose charge should be computed.
Returns:
float - total charge of solution i.

Definition at line 399 of file assignBondOrderProcessor.h.

Returns the total charge of a solution.

Parameters:
solsolution, whose charge should be computed.
Returns:
float - total charge of the given solution.

Definition at line 606 of file assignBondOrderProcessor.h.

Returns the total penalty of solution i.

Parameters:
iindex of the solution, whose penalty should be returned.
Returns:
float - total penalty of solution i.

Definition at line 418 of file assignBondOrderProcessor.h.

Returns the total penalty of the given solution.

Parameters:
solsolution, whose penalty should be returned.
Returns:
float - total penalty of solution i.
See also:
Option::BOND_LENGTH_WEIGHTING;

Definition at line 624 of file assignBondOrderProcessor.h.

Checks the options.

Definition at line 500 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 order assignments with optimal atomic penalty value and applies the first solution to the given AtomContainer.

NOTE: Having used the Algorithm::A_STAR-option (default) the method getNumberOfComputedSolutions() will return the number of optimal solutions+1!

Parameters:
acthe AtomContainer to which the processor is applied.

Reimplemented from BALL::UnaryProcessor< AtomContainer >.

AssignBondOrderProcessor& BALL::AssignBondOrderProcessor::operator= ( const AssignBondOrderProcessor abop) [protected]

Assigns every atom of the AtomContainer to which the processor is applied to a block of possible valences and the corresponding penalties.

Return values:
bool- false if the AtomContainer to which the processor is applied to has an atom with no matching penalty block.
bool- true otherwise

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.

If there is no information for certain atom pairs, penalty 0 is assumed. In case of incomplete information, we assume the missing bond orders to be really unlikely and we set a penalty to 2* max_deviation_found (for this bond).
Return values:
bool- false if the AtomContainer is invalid or the processor is in an invalid state
bool- true otherwise

Reads and stores the penalty-INIFile (for example BondOrder.ini).

Returns:
bool - false if the INIFile could not be read correctly.

Reads, checks and stores the options.

Returns:
bool - false if one of the options got an invalid value.
bool - true otherwise

Resets all bond orders and assigned hydrogens.

Assigns the original bond order assignments to the AtomContainer we are operating on.

Resets the options to default values.

Processor method which is called before the operator()-call.

Reimplemented from BALL::UnaryProcessor< AtomContainer >.

Stores the original configuration of the AtomContainer.


Friends And Related Function Documentation

friend class AStarBondOrderStrategy [friend]

Definition at line 104 of file assignBondOrderProcessor.h.

friend class BondOrderAssignment [friend]

Definition at line 97 of file assignBondOrderProcessor.h.

friend class BondOrderAssignmentStrategy [friend]

Definition at line 102 of file assignBondOrderProcessor.h.

friend class BranchAndBoundBondOrderStrategy [friend]

Definition at line 105 of file assignBondOrderProcessor.h.

friend class FPTBondOrderStrategy [friend]

Definition at line 106 of file assignBondOrderProcessor.h.

friend class ILPBondOrderStrategy [friend]

Definition at line 107 of file assignBondOrderProcessor.h.

friend class KGreedyBondOrderStrategy [friend]

Definition at line 108 of file assignBondOrderProcessor.h.

friend class PartialBondOrderAssignment [friend]

Definition at line 96 of file assignBondOrderProcessor.h.

friend class PQ_Entry_ [friend]

Definition at line 99 of file assignBondOrderProcessor.h.


Member Data Documentation

Definition at line 708 of file assignBondOrderProcessor.h.

Definition at line 723 of file assignBondOrderProcessor.h.

Definition at line 714 of file assignBondOrderProcessor.h.

vector< vector<int> > BALL::AssignBondOrderProcessor::atom_to_block_ [protected]

Definition at line 752 of file assignBondOrderProcessor.h.

Definition at line 673 of file assignBondOrderProcessor.h.

Definition at line 698 of file assignBondOrderProcessor.h.

Definition at line 745 of file assignBondOrderProcessor.h.

Definition at line 742 of file assignBondOrderProcessor.h.

Definition at line 741 of file assignBondOrderProcessor.h.

Definition at line 743 of file assignBondOrderProcessor.h.

std::map<Bond*, short> BALL::AssignBondOrderProcessor::bond_fixed_ [protected]

Definition at line 644 of file assignBondOrderProcessor.h.

Definition at line 701 of file assignBondOrderProcessor.h.

Definition at line 755 of file assignBondOrderProcessor.h.

Definition at line 650 of file assignBondOrderProcessor.h.

Definition at line 726 of file assignBondOrderProcessor.h.

Definition at line 720 of file assignBondOrderProcessor.h.

Processor is in an evaluation mode. Default is false.

Definition at line 640 of file assignBondOrderProcessor.h.

Definition at line 688 of file assignBondOrderProcessor.h.

Definition at line 647 of file assignBondOrderProcessor.h.

Definition at line 653 of file assignBondOrderProcessor.h.

Definition at line 705 of file assignBondOrderProcessor.h.

Definition at line 711 of file assignBondOrderProcessor.h.

Definition at line 717 of file assignBondOrderProcessor.h.

Definition at line 685 of file assignBondOrderProcessor.h.

Definition at line 669 of file assignBondOrderProcessor.h.

Definition at line 663 of file assignBondOrderProcessor.h.

the processor's options

Definition at line 515 of file assignBondOrderProcessor.h.

Definition at line 740 of file assignBondOrderProcessor.h.

Definition at line 691 of file assignBondOrderProcessor.h.

Definition at line 695 of file assignBondOrderProcessor.h.

Definition at line 763 of file assignBondOrderProcessor.h.

Definition at line 757 of file assignBondOrderProcessor.h.

Definition at line 682 of file assignBondOrderProcessor.h.

Definition at line 729 of file assignBondOrderProcessor.h.

Processor is in a useable valid state.

Definition at line 637 of file assignBondOrderProcessor.h.

Definition at line 677 of file assignBondOrderProcessor.h.

Definition at line 672 of file assignBondOrderProcessor.h.

Definition at line 666 of file assignBondOrderProcessor.h.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines