source: trunk/GDE/PHYML20130708/phyml/src/optimiz.h

Last change on this file was 10307, checked in by aboeckma, 11 years ago

added most recent version of phyml

File size: 8.1 KB
Line 
1/*
2
3PHYML :  a program that  computes maximum likelihood  phylogenies from
4DNA or AA homologous sequences
5
6Copyright (C) Stephane Guindon. Oct 2003 onward
7
8All parts of  the source except where indicated  are distributed under
9the GNU public licence.  See http://www.opensource.org for details.
10
11*/
12
13#include <config.h>
14
15#ifndef OPTIMIZ_H
16#define OPTIMIZ_H
17
18#include "utilities.h"
19#include "lk.h"
20#include "free.h"
21#include "models.h"
22#include "mg.h"
23#include "tiporder.h"
24
25
26void      Optimiz_Ext_Br(t_tree *tree);
27void      Optimize_Param_Parall(t_tree *tree);
28phydbl    Optimize_Branch_Quad(t_tree *tree, calign *cdata, t_edge *b_fcus);
29void      Optimize_After_Hide(t_tree *tree, calign *cdata, t_node *h);
30void      Round_Optimize(t_tree *tree, calign *data, int n_round_max);
31int       Dist_Seq_Brak(phydbl *ax, phydbl *bx, phydbl *cx, 
32                        phydbl *fa, phydbl *fb, phydbl *fc, 
33                        calign *data, int num1, int num2, t_mod *mod);
34phydbl    Dist_Seq_Brent(phydbl ax, phydbl bx, phydbl cx, phydbl tol, 
35                         phydbl *xmin, calign *data, 
36                         int num1, int num2, t_mod *mod);
37phydbl    Kappa_Golden(phydbl ax, phydbl bx, phydbl cx, phydbl tol, 
38                       phydbl *xmin, t_tree *tree, calign *cdata);
39phydbl    Lambda_Golden(phydbl ax, phydbl bx, phydbl cx, phydbl tol, 
40                        phydbl *xmin, t_tree *tree, calign *cdata);
41phydbl    Alpha_Golden_Br_Opt(phydbl ax, phydbl bx, phydbl cx, phydbl tol, 
42                              phydbl *xmin, t_tree *tree, calign *cdata, 
43                              int n_opt, phydbl *init_l);
44phydbl    Alpha_Golden(phydbl ax, phydbl bx, phydbl cx, phydbl tol,phydbl *xmin, 
45                       t_tree *tree, calign *cdata);
46phydbl    Br_Len_Golden(phydbl ax, phydbl bx, phydbl cx, phydbl tol, 
47                        phydbl *xmin, t_edge *b_fcus, t_tree *tree);
48phydbl Br_Len_Brent(phydbl prop_min, phydbl prop_max, t_edge *b_fcus, t_tree *tree);
49int       Br_Len_Brak(phydbl *ax, phydbl *bx, phydbl *cx, 
50                      phydbl *fa, phydbl *fb, phydbl *fc, 
51                      t_edge *b_fcus, t_tree *tree);
52phydbl    Optimize_Path_Length(t_mod *mod, calign *cdata, t_edge *a, 
53                               int lra, t_edge *b, int lrb, phydbl i_len);
54void      Optimize_Param_Serie(t_node *a, t_node *d, t_edge *b_fcus, t_tree *tree, 
55                               calign *cdata, int n_passes);
56phydbl    Optimize_Dist(t_mod *mod, phydbl init, calign *twoseqs);
57phydbl    Pinvar_Golden(phydbl ax, phydbl bx, phydbl cx, phydbl tol, 
58                        phydbl *xmin, t_tree *tree, calign *cdata, int n_iter_max);
59void      Optimize_Pinvar(t_tree *tree);
60int       Lambda_Brak(phydbl *ax, phydbl *bx, phydbl *cx, 
61                      phydbl *fa, phydbl *fb, phydbl *fc, 
62                      t_tree *tree);
63int       Kappa_Brak(phydbl *ax, phydbl *bx, phydbl *cx, 
64                      phydbl *fa, phydbl *fb, phydbl *fc, 
65                      t_tree *tree);
66int       Alpha_Brak(phydbl *ax, phydbl *bx, phydbl *cx, 
67                      phydbl *fa, phydbl *fb, phydbl *fc, 
68                      t_tree *tree);
69int       Pinvar_Brak(phydbl *ax, phydbl *bx, phydbl *cx, 
70                      phydbl *fa, phydbl *fb, phydbl *fc, 
71                      t_tree *tree);
72void Optimiz_All_Free_Param(t_tree *tree, int verbose);
73void      Optimiz_RRparam_GTR(t_tree *tree, int num_param);
74phydbl    RRparam_GTR_Golden(phydbl ax, phydbl bx, phydbl cx, phydbl tol, 
75                             phydbl *xmin, t_tree *tree, calign *cdata, phydbl *param, int n_iter_max);
76
77int Powell_GTR_Param(t_tree *tree, phydbl *p, int n, phydbl ftol);
78phydbl Linmin_GTR_Param(t_tree *tree,phydbl *p, phydbl *xi, int n);
79phydbl F1dim(t_tree *tree, phydbl x, phydbl *p, phydbl *xi, phydbl n);
80int Mnbrak_1dim(phydbl *ax, phydbl *bx, phydbl *cx, 
81                phydbl *fa, phydbl *fb, phydbl *fc,
82                t_tree *tree,
83                phydbl *p,  phydbl *xi, phydbl n);
84phydbl Brent_1dim(phydbl ax, phydbl bx, phydbl cx, 
85                  phydbl tol, phydbl *xmin,
86                  t_tree *tree,
87                  phydbl *p, phydbl *xi, phydbl n);
88
89int Min_With_Derivatives(t_tree *tree, phydbl *p, int n, phydbl ftol, phydbl step_size, 
90                         phydbl (*func) (), void (*dfunc)(), phydbl (*linmin)());
91void BFGS(t_tree *tree, 
92          phydbl *p, 
93          int n, 
94          phydbl gtol, 
95          phydbl difff,
96          phydbl step_size,
97          int logt,
98          int is_positive,
99          phydbl(*func)(t_tree *tree), 
100          int(*dfunc)(t_tree *tree,phydbl *param,int n_param,phydbl stepsize,int logt,phydbl(*func)(t_tree *tree),phydbl *derivatives, int is_positive), 
101          int(*lnsrch)(t_tree *tree, int n, phydbl *xold, phydbl fold,phydbl *g, phydbl *p, phydbl *x,phydbl *f, phydbl stpmax, int *check, int logt, int is_positive),
102          int *failed);
103
104void BFGS_Nonaligned(t_tree *tree, 
105                     phydbl **p, 
106                     int n, 
107                     phydbl gtol, 
108                     phydbl difff,
109                     phydbl step_size,
110                     int logt,
111                     int is_positive,
112                     phydbl(*func)(t_tree *tree), 
113                     int(*dfunc_nonaligned)(t_tree *tree,phydbl **param,int n_param,phydbl stepsize,int logt,phydbl(*func)(t_tree *tree),phydbl *derivatives, int is_positive), 
114                     int(*lnsrch_nonaligned)(t_tree *tree, int n, phydbl **xold, phydbl fold,phydbl *g, phydbl *p, phydbl *x,phydbl *f, phydbl stpmax, int *check, int logt, int is_positive),
115                     int *failed);
116
117
118void Optimize_Single_Param_Generic(t_tree *tree, phydbl *param, phydbl lim_inf, phydbl lim_sup, phydbl tol, int n_max_iter, int quickdirty);
119int Generic_Brak(phydbl *param,
120                 phydbl *ax, phydbl *bx, phydbl *cx, 
121                 phydbl *fa, phydbl *fb, phydbl *fc,
122                 phydbl lim_inf, phydbl lim_sup,
123                 t_tree *tree);
124phydbl Generic_Brent(phydbl ax, phydbl bx, phydbl cx, phydbl tol, 
125                     phydbl *xmin, t_tree *tree, int n_iter_max,int quickdirty);
126void Optimize_Br_Len_Serie(t_tree *tree);
127void Optimize_Br_Len_Serie_Post(t_node *a, t_node *d, t_edge *b_fcus, t_tree *tree);
128void Optimize_Global_Rate(t_tree *tree);
129phydbl Br_Len_Brent_Default(t_edge *b_fcus, t_tree *tree);
130
131void EM_Dist(t_mod *mod, calign *data);
132phydbl Dist_F_Brent(phydbl ax, phydbl bx, phydbl cx, phydbl tol, int n_iter_max, 
133                    phydbl *param, phydbl *F, t_mod *mod);
134int Dist_F_Brak(phydbl *ax, phydbl *bx, phydbl *cx, phydbl *F, phydbl *param, t_mod *mod);
135void Opt_Dist_F(phydbl *dist, phydbl *F, t_mod *mod);
136phydbl Missing_Dist_Brent(phydbl ax, phydbl bx, phydbl cx, phydbl tol, int n_iter_max, 
137                          int x, int y, matrix *mat);
138int Missing_Dist_Brak(phydbl *ax, phydbl *bx, phydbl *cx, int x, int y, matrix *mat);
139void Opt_Missing_Dist(int x, int y, matrix *mat);
140int Optimiz_Alpha_And_Pinv(t_tree *tree, int verbose);
141phydbl Node_Time_Brent(phydbl ax, phydbl bx, phydbl cx, phydbl tol,
142                       t_node *anc, t_node *des, t_tree *tree, int n_iter_max);
143phydbl Time_Stamps_Mult_Brent(phydbl ax, phydbl bx, phydbl cx, phydbl tol,
144                              t_tree *tree, int n_iter_max);
145phydbl Branch_Rate_Shape_Brent(phydbl ax, phydbl bx, phydbl cx, phydbl tol, 
146                               phydbl *xmin, t_tree *tree, int n_iter_max);
147phydbl Node_Time_Brent_Fixed_Br_Len(phydbl ax, phydbl bx, phydbl cx, phydbl tol,
148                                    t_node *n, t_tree *tree, int n_iter_max);
149
150phydbl Generic_Brent_Lk(phydbl *param, phydbl ax, phydbl cx, phydbl tol, 
151                        int n_iter_max, int quickdirty,
152                        phydbl (*obj_func)(t_edge *,t_tree *,supert_tree *), 
153                        t_edge *branch, t_tree *tree, supert_tree *stree, int logt);
154void Round_Optimize_Node_Heights(t_tree *tree);
155void Opt_Node_Heights_Recurr_Pre(t_node *a, t_node *d, t_tree *tree);
156void Opt_Node_Heights_Recurr(t_tree *tree);
157
158int Lnsrch(t_tree *tree, int n, phydbl *xold, phydbl fold, phydbl *g, phydbl *p, phydbl *x,
159           phydbl *f, phydbl stpmax, int *check, int logt, int is_positive);
160
161int Lnsrch_Nonaligned(t_tree *tree, int n, phydbl **xold, phydbl fold, phydbl *g, phydbl *p, phydbl *x,
162                      phydbl *f, phydbl stpmax, int *check, int logt, int is_positive);
163
164void Optimize_RR_Params(t_tree *mixt_tree, int verbose);
165void Optimize_TsTv(t_tree *mixt_tree, int verbose);
166void Optimize_Lambda(t_tree *mixt_tree, int verbose);
167void Optimize_Alpha(t_tree *mixt_tree, int verbose);
168void Optimize_Pinv(t_tree *mixt_tree, int verbose);
169void Optimize_State_Freqs(t_tree *mixt_tree, int verbose);
170void Optimize_Rmat_Weights(t_tree *mixt_tree, int verbose);
171void Optimize_Efrq_Weights(t_tree *mixt_tree, int verbose);
172void Optimize_Free_Rate(t_tree *mixt_tree, int verbose);
173void Optimize_Free_Rate_Weights(t_tree *tree, int fast, int verbose);
174void Optimize_Free_Rate_Rr(t_tree *tree, int fast, int verbose);
175
176#endif
177
Note: See TracBrowser for help on using the repository browser.