1 /*
2 
3 PhyML:  a program that  computes maximum likelihood phylogenies from
4 DNA or AA homologous sequences.
5 
6 Copyright (C) Stephane Guindon. Oct 2003 onward.
7 
8 All parts of the source except where indicated are distributed under
9 the GNU public licence. See http://www.opensource.org for details.
10 
11 */
12 
13 #include <config.h>
14 
15 #ifndef TIMES_H
16 #define TIMES_H
17 
18 #include "utilities.h"
19 
20 int  TIMES_Main(int argc, char **argv);
21 void TIMES_Bl_From_T_Post(t_node *a, t_node *d, t_edge *b, t_tree *tree);
22 void TIMES_Bl_From_T(t_tree *tree);
23 void TIMES_Optimize_Node_Times_Serie(t_node *a, t_node *d, t_tree *tree);
24 void TIMES_Round_Optimize(t_tree *tree);
25 void TIMES_Print_Node_Times(t_node *a, t_node *d, t_tree *tree);
26 t_edge *TIMES_Find_Best_Root_Position(t_tree *tree);
27 void TIMES_Least_Square_Node_Times(t_edge *e_root, t_tree *tree);
28 void TIMES_Least_Square_Node_Times_Pre(t_node *a, t_node *d, phydbl *A, phydbl *b, int n, t_tree *tree);
29 void TIMES_Mult_Time_Stamps(t_tree *tree);
30 void TIMES_Div_Time_Stamps(t_tree *tree);
31 void TIMES_Optimize_Tree_Height(t_tree *tree);
32 void TIMES_Adjust_Node_Times(t_tree *tree);
33 void TIMES_Adjust_Node_Times_Pre(t_node *a, t_node *d, t_tree *tree);
34 void TIMES_Optimize_Root_Height(t_tree *tree);
35 void TIMES_Estimate_Branch_Rates(t_tree *tree);
36 t_edge *TIMES_Find_Best_Root_Position_Approx(t_tree *tree);
37 void TIMES_Estimate_Branch_Rate_Parameter(t_tree *tree);
38 phydbl TIMES_Classify_Branch_In_Rate_Class(t_tree *tree);
39 void TIMES_Compute_Rates_And_Times_Least_Square_Adjustments(t_tree *tree);
40 void TIMES_Compute_Rates_And_Times_Least_Square_Adjustments_Post(t_node *a, t_node *d, t_edge *b, t_tree *tree);
41 void TIMES_Classify_Branch_Rates(t_tree *tree);
42 int TIMES_Check_MC(t_tree *tree);
43 void TIMES_Set_All_Node_Priors(t_tree *tree);
44 void TIMES_Set_All_Node_Priors_Bottom_Up(t_node *a, t_node *d, t_tree *tree);
45 void TIMES_Set_All_Node_Priors_Top_Down(t_node *a, t_node *d, t_tree *tree);
46 void TIMES_Set_Floor(t_tree *tree);
47 void TIMES_Set_Floor_Post(t_node *a, t_node *d, t_tree *tree);
48 phydbl TIMES_Log_Conditional_Uniform_Density(t_tree *tree);
49 phydbl TIMES_Log_Yule(t_tree *tree);
50 phydbl TIMES_Lk_Times(int verbose, t_tree *tree);
51 void TIMES_Lk_Times_Trav(t_node *a, t_node *d, phydbl lim_inf, phydbl lim_sup, phydbl *logdens, t_tree *tree);
52 phydbl TIMES_Log_Number_Of_Ranked_Labelled_Histories(t_node *root, int per_slice, t_tree *tree);
53 void TIMES_Log_Number_Of_Ranked_Labelled_Histories_Post(t_node *a, t_node *d, int per_slice, phydbl *logn, t_tree *tree);
54 phydbl TIMES_Lk_Uniform_Core(t_tree *tree);
55 void TIMES_Get_Number_Of_Time_Slices(t_tree *tree);
56 void TIMES_Get_Number_Of_Time_Slices_Post(t_node *a, t_node *d, t_tree *tree);
57 void TIMES_Get_N_Slice_Spans(t_tree *tree);
58 void TIMES_Allocate_Vectors_Time_Slice_Combin(t_tree *tree);
59 void TIMES_Allocate_Vectors_Time_Slice_Combin_Post(t_node *a, t_node *d, t_tree *tree);
60 void TIMES_Update_Curr_Slice(t_tree *tree);
61 void TIMES_Lk_Uniform_Post(t_node *a, t_node *d, t_tree *tree);
62 void TIMES_Set_Root_Given_Tip_Dates(t_tree *tree);
63 void Get_Survival_Duration(t_tree *tree);
64 void Get_Survival_Duration_Post(t_node *a, t_node *d, t_tree *tree);
65 phydbl TIMES_Lk_Yule_Root_Marginal(t_tree *tree);
66 phydbl TIMES_Lk_Yule_Joint(t_tree *tree);
67 void TIMES_Update_Node_Ordering(t_tree *tree);
68 phydbl TIMES_Lk_Yule_Order(t_tree *tree);
69 void TIMES_Record_Prior_Times(t_tree *tree);
70 void TIMES_Reset_Prior_Times(t_tree *tree);
71 phydbl TIMES_Lk_Yule_Order_Root_Cond(t_tree *tree);
72 void TIMES_Connect_List_Of_Taxa(t_node **tax_list, int list_size, phydbl t_mrca, phydbl *times, int *nd_num, t_tree *mixt_tree);
73 void TIMES_Randomize_Tree_With_Time_Constraints(t_cal *cal_list, t_tree *tree);
74 phydbl TIMES_Lk_Birth_Death(int verbose, t_tree *tree);
75 int TIMES_Check_Node_Height_Ordering(t_tree *tree);
76 int TIMES_Check_Node_Height_Ordering_Post(t_node *a, t_node *d, t_tree *tree);
77 phydbl TIMES_Lk_Birth_Death_One_Node(phydbl t, phydbl min, phydbl max, t_tree *tree);
78 phydbl TIMES_Least_Square_Criterion(t_tree *tree);
79 void TIMES_Pre_Least_Square_Criterion(t_node *a, t_node *d, t_edge *b, phydbl *score, t_tree *tree);
80 void TIMES_Post_Randomize_Node_Ages(t_node *a, t_node *d, t_tree *tree);
81 void TIMES_Randomize_Node_Ages(t_tree *tree);
82 int TIMES_Calibrations_Apply_To_Tips_Only(t_tree *tree);
83 void TIMES_Randomize_Tip_Times_Given_Calibrations(t_tree *tree);
84 void TIMES_Time_To_Bl(t_tree *tree);
85 void TIMES_Time_To_Bl_Pre(t_node *a, t_node *d, t_edge *b, t_tree *tree);
86 void TIMES_Bl_To_Times_Post(t_node *a, t_node *d, t_edge *b, t_tree *tree);
87 void TIMES_Bl_To_Times(t_tree *tree);
88 phydbl TIMES_Tree_Length(t_tree *tree);
89 void TIMES_Copy_Time_Struct(t_time *from, t_time *to, int n_otu);
90 phydbl TIMES_Lk_Coalescent(t_tree *tree);
91 phydbl TIMES_Wrap_Lk_Coalescent(t_edge *b, t_tree *tree, supert_tree *stree);
92 
93 #endif
94