aGrUM  0.20.3
a C++ library for (probabilistic) graphical models
structuralComparator_tpl.h
Go to the documentation of this file.
1 /**
2  *
3  * Copyright (c) 2005-2021 by Pierre-Henri WUILLEMIN(@LIP6) & Christophe GONZALES(@AMU)
4  * info_at_agrum_dot_org
5  *
6  * This library is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU Lesser General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with this library. If not, see <http://www.gnu.org/licenses/>.
18  *
19  */
20 
21 
22 #ifndef DOXYGEN_SHOULD_SKIP_THIS
23 
24 # include <agrum/BN/algorithms/essentialGraph.h>
25 # include <agrum/tools/graphs/mixedGraph.h>
26 
27 namespace gum {
28 
29  template < typename GS1, typename GS2 >
30  void StructuralComparator::compare(const BayesNet< GS1 >& ref, const BayesNet< GS2 >& test) {
31  if (ref.size() != test.size()) { GUM_ERROR(OperationNotAllowed, "Graphs of different sizes") }
32  for (const NodeId node: ref.dag().asNodeSet()) {
33  if (!test.dag().existsNode(node)) {
34  GUM_ERROR(InvalidNode, "Test doesn't contain node " << node << " from ref")
35  }
36  }
37 
40 
41  this->compare(ref_eg, test_eg);
42  }
43 
44  template < typename GUM_SCALAR >
47  this->compare(ref_eg, test);
48  }
49 
50  template < typename GUM_SCALAR >
53 
54  this->compare(ref, test_eg);
55  }
56 } /* namespace gum */
57 
58 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
INLINE void emplace(Args &&... args)
Definition: set_tpl.h:643