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