| 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 |  | 
|---|
| 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 |  | 
|---|
| 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 |  | 
|---|
| 74 | std::ostream& operator<<(std::ostream& ost, const BindingModel &model); | 
|---|
| 75 |  | 
|---|
| 76 |  | 
|---|
| 77 | #endif /* POTENTIALS_BINDINGMODEL_HPP_ */ | 
|---|