bpp-phyl  2.2.0
NNISearchable.h
Go to the documentation of this file.
1 //
2 // File: NNISearchable.h
3 // Created by: Julien Dutheil
4 // Vincent Ranwez
5 // Created on: Thu Jul 28 16:32 2005
6 //
7 
8 /*
9 Copyright or © or Copr. CNRS, (November 16, 2004)
10 
11 This software is a computer program whose purpose is to provide classes
12 for phylogenetic data analysis.
13 
14 This software is governed by the CeCILL license under French law and
15 abiding by the rules of distribution of free software. You can use,
16 modify and/ or redistribute the software under the terms of the CeCILL
17 license as circulated by CEA, CNRS and INRIA at the following URL
18 "http://www.cecill.info".
19 
20 As a counterpart to the access to the source code and rights to copy,
21 modify and redistribute granted by the license, users are provided only
22 with a limited warranty and the software's author, the holder of the
23 economic rights, and the successive licensors have only limited
24 liability.
25 
26 In this respect, the user's attention is drawn to the risks associated
27 with loading, using, modifying and/or developing or reproducing the
28 software by the user in light of its specific status of free software,
29 that may mean that it is complicated to manipulate, and that also
30 therefore means that it is reserved for developers and experienced
31 professionals having in-depth computer knowledge. Users are therefore
32 encouraged to load and test the software's suitability as regards their
33 requirements in conditions enabling the security of their systems and/or
34 data to be ensured and, more generally, to use and operate it in the
35 same conditions as regards security.
36 
37 The fact that you are presently reading this means that you have had
38 knowledge of the CeCILL license and that you accept its terms.
39 */
40 
41 #ifndef _NNISEARCHABLE_H_
42 #define _NNISEARCHABLE_H_
43 
44 #include "Node.h"
45 #include "TreeTemplate.h"
46 #include "TopologySearch.h"
47 
48 namespace bpp
49 {
50 
97  public TopologyListener,
98  public virtual Clonable
99 {
100  public:
102  virtual ~NNISearchable() {}
103 
104 #ifndef NO_VIRTUAL_COV
105  virtual NNISearchable* clone() const = 0;
106 #endif
107 
108  public:
109 
122  virtual double testNNI(int nodeId) const throw (NodeException) = 0;
123 
130  virtual void doNNI(int nodeId) throw (NodeException) = 0;
131 
137  virtual const Tree& getTopology() const = 0;
138 
144  virtual double getTopologyValue() const throw (Exception) = 0;
145 
146 };
147 
148 } //end of namespace bpp.
149 
150 #endif //_NNISEARCHABLE_H_
151 
Interface for Nearest Neighbor Interchanges algorithms.
Definition: NNISearchable.h:96
Interface for phylogenetic tree objects.
Definition: Tree.h:148
virtual NNISearchable * clone() const =0
virtual void doNNI(int nodeId)=0
Perform a NNI movement.
virtual ~NNISearchable()
Implement this interface to be notified when the topology of a tree has changed during topology searc...
virtual double testNNI(int nodeId) const =0
Send the score of a NNI movement, without performing it.
General exception thrown when something is wrong with a particular node.
virtual const Tree & getTopology() const =0
Get the tree associated to this NNISearchable object.
virtual double getTopologyValue() const =0
Get the current score of this NNISearchable object.