| [bc069f] | 1 | /* | 
|---|
|  | 2 | * BindingModel.hpp | 
|---|
|  | 3 | * | 
|---|
|  | 4 | *  Created on: Oct 5, 2016 | 
|---|
|  | 5 | *      Author: heber | 
|---|
|  | 6 | */ | 
|---|
|  | 7 |  | 
|---|
|  | 8 |  | 
|---|
|  | 9 | #ifndef POTENTIALS_BINDINGMODEL_HPP_ | 
|---|
|  | 10 | #define POTENTIALS_BINDINGMODEL_HPP_ | 
|---|
|  | 11 |  | 
|---|
|  | 12 | // include config.h | 
|---|
|  | 13 | #ifdef HAVE_CONFIG_H | 
|---|
|  | 14 | #include <config.h> | 
|---|
|  | 15 | #endif | 
|---|
|  | 16 |  | 
|---|
|  | 17 | #include <vector> | 
|---|
|  | 18 |  | 
|---|
|  | 19 | #include "Fragmentation/Homology/FragmentNode.hpp" | 
|---|
|  | 20 | #include "Fragmentation/Homology/HomologyGraph.hpp" | 
|---|
|  | 21 |  | 
|---|
|  | 22 | /** This class extends HomologyGraph by an additional vector of FragmentNode's | 
|---|
|  | 23 | * because their ordering is important (which is lost upon insertion into | 
|---|
|  | 24 | * HomologyGraph::nodes_t) | 
|---|
|  | 25 | * | 
|---|
|  | 26 | * The sequence is important because it determines how the sequence of pair-wise | 
|---|
|  | 27 | * distance arguments needs to be, see FunctionApproximation | 
|---|
|  | 28 | */ | 
|---|
|  | 29 | struct BindingModel | 
|---|
|  | 30 | { | 
|---|
|  | 31 | typedef std::vector<FragmentNode> vector_nodes_t; | 
|---|
|  | 32 |  | 
|---|
|  | 33 | /** Default cstor for class BindingModel. | 
|---|
|  | 34 | * | 
|---|
|  | 35 | */ | 
|---|
|  | 36 | BindingModel() {} | 
|---|
|  | 37 |  | 
|---|
|  | 38 | /** Cstor for class BindingModel. | 
|---|
|  | 39 | * | 
|---|
|  | 40 | * \param _nodes, vector of nodes, converted to map and passed on | 
|---|
|  | 41 | * \param _edges map of edges, passed on to HomologyGraph | 
|---|
|  | 42 | */ | 
|---|
|  | 43 | BindingModel(const vector_nodes_t &_nodes, const HomologyGraph::edges_t &_edges); | 
|---|
|  | 44 |  | 
|---|
|  | 45 | /** Const getter for the internal homology graph. | 
|---|
|  | 46 | * | 
|---|
|  | 47 | * \return const ref to graph | 
|---|
|  | 48 | */ | 
|---|
|  | 49 | const HomologyGraph& getGraph() const { return graph; } | 
|---|
|  | 50 |  | 
|---|
|  | 51 | /** Const getter to the sequence of nodes. | 
|---|
|  | 52 | * | 
|---|
|  | 53 | * \return const ref to vector of FragmentNodes | 
|---|
|  | 54 | */ | 
|---|
|  | 55 | const vector_nodes_t& getNodes() const { return nodes; } | 
|---|
|  | 56 |  | 
|---|
| [c4afdf3] | 57 | // comparators (allows sorting and hence quicker finding in STL containers) | 
|---|
|  | 58 | bool operator<(const BindingModel &model) const; | 
|---|
|  | 59 | bool operator>(const BindingModel &model) const; | 
|---|
|  | 60 | bool operator==(const BindingModel &model) const; | 
|---|
|  | 61 | bool operator!=(const BindingModel &model) const { | 
|---|
|  | 62 | return (!(*this == model)); | 
|---|
|  | 63 | } | 
|---|
|  | 64 |  | 
|---|
| [bc069f] | 65 | private: | 
|---|
|  | 66 | //!> the homology graph of this binding model | 
|---|
|  | 67 | const HomologyGraph graph; | 
|---|
|  | 68 |  | 
|---|
|  | 69 | //!> vector of nodes | 
|---|
|  | 70 | const vector_nodes_t nodes; | 
|---|
|  | 71 | }; | 
|---|
|  | 72 |  | 
|---|
|  | 73 | #endif /* POTENTIALS_BINDINGMODEL_HPP_ */ | 
|---|