ʻOhana
Population structure, admixture history, and selection using learning methods.
jade.controller_factory.hpp
1 /* -------------------------------------------------------------------------
2  Ohana
3  Copyright (c) 2015-2020 Jade Cheng (\___/)
4  Jade Cheng <info@jade-cheng.com> (='.'=)
5  ------------------------------------------------------------------------- */
6 
7 #ifndef JADE_CONTROLLER_FACTORY_HPP__
8 #define JADE_CONTROLLER_FACTORY_HPP__
9 
10 #include "jade.agi_controller.hpp"
11 #include "jade.tree_controller.hpp"
12 #include "jade.treeless_controller.hpp"
13 
14 namespace jade
15 {
16  ///
17  /// A template for a class that creates controllers that use or do not use
18  /// Newick trees specified on the command line.
19  ///
20  template <typename TValue>
22  {
23  public:
24  /// The value type.
25  typedef TValue value_type;
26 
27  /// The settings type.
29 
30  /// The controller type.
32 
33  /// The options type.
35 
36  /// The AGI controller type.
38 
39  /// The tree controller type.
41 
42  /// The treeless controller type.
44 
45  ///
46  /// \return A new controller.
47  ///
49  const settings_type & settings) ///< The program settings.
50  {
51  const auto & opts = settings.get_options();
52  if (opts.is_tin_specified())
53  return new tree_controller_type(settings);
54  if (opts.is_ain_specified())
55  return new agi_controller_type(settings);
56  else
57  return new treeless_controller_type(settings);
58  }
59  };
60 }
61 
62 #endif // JADE_CONTROLLER_FACTORY_HPP__
jade::basic_controller
A template for a class that performs the Nelder-Mead optimization. This class implements shared featu...
Definition: jade.controller.hpp:24
jade::basic_options< value_type >
jade::basic_controller_factory::agi_controller_type
basic_agi_controller< value_type > agi_controller_type
The AGI controller type.
Definition: jade.controller_factory.hpp:37
jade::basic_controller_factory::options_type
basic_options< value_type > options_type
The options type.
Definition: jade.controller_factory.hpp:34
jade::basic_settings::get_options
const options_type & get_options() const
Definition: cpax/jade.settings.hpp:174
jade::basic_controller_factory::create
static controller_type * create(const settings_type &settings)
Definition: jade.controller_factory.hpp:48
jade::basic_controller_factory::treeless_controller_type
basic_treeless_controller< value_type > treeless_controller_type
The treeless controller type.
Definition: jade.controller_factory.hpp:43
jade::basic_treeless_controller
A template for a class that encodes and decodes parameters for the Nelder-Mead algorithm....
Definition: jade.treeless_controller.hpp:22
jade::basic_controller_factory::settings_type
basic_settings< value_type > settings_type
The settings type.
Definition: jade.controller_factory.hpp:28
jade::basic_settings
A template for a class encapsulating the settings provided to the optimizer.
Definition: cpax/jade.settings.hpp:22
jade::basic_agi_controller
A template for a class that encodes and decodes parameters for the Nelder-Mead algorithm....
Definition: jade.agi_controller.hpp:21
jade::basic_controller_factory::value_type
TValue value_type
The value type.
Definition: jade.controller_factory.hpp:25
jade::basic_tree_controller
A template for a class that encodes and decodes parameters for the Nelder-Mead algorithm....
Definition: jade.tree_controller.hpp:22
jade::basic_controller_factory
A template for a class that creates controllers that use or do not use Newick trees specified on the ...
Definition: jade.controller_factory.hpp:22
jade::basic_controller_factory::controller_type
basic_controller< value_type > controller_type
The controller type.
Definition: jade.controller_factory.hpp:31
jade::basic_controller_factory::tree_controller_type
basic_tree_controller< value_type > tree_controller_type
The tree controller type.
Definition: jade.controller_factory.hpp:40