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 "init.h"
14 #ifdef BEAGLE
15 #include "beagle_utils.h"
16 #endif
17
Init_Eigen_Struct(eigen * this)18 void Init_Eigen_Struct(eigen *this)
19 {
20 this->next = NULL;
21 this->prev = NULL;
22 }
23
24 //////////////////////////////////////////////////////////////
25 //////////////////////////////////////////////////////////////
26
Init_Scalar_Dbl(scalar_dbl * p)27 void Init_Scalar_Dbl(scalar_dbl *p)
28 {
29 p->v = -1.;
30 p->onoff = ON;
31 p->next = NULL;
32 p->prev = NULL;
33 }
34
35 //////////////////////////////////////////////////////////////
36 //////////////////////////////////////////////////////////////
37
Init_Scalar_Int(scalar_int * p)38 void Init_Scalar_Int(scalar_int *p)
39 {
40 p->v = -1.;
41 p->next = NULL;
42 p->prev = NULL;
43 }
44
45 //////////////////////////////////////////////////////////////
46 //////////////////////////////////////////////////////////////
47
Init_Vect_Dbl(int len,vect_dbl * p)48 void Init_Vect_Dbl(int len, vect_dbl *p)
49 {
50 p->len = len;
51 p->next = NULL;
52 p->prev = NULL;
53 p->v = NULL;
54 }
55
56 //////////////////////////////////////////////////////////////
57 //////////////////////////////////////////////////////////////
58
Init_Vect_Int(int len,vect_int * p)59 void Init_Vect_Int(int len, vect_int *p)
60 {
61 p->len = len;
62 p->next = NULL;
63 p->prev = NULL;
64 p->v = NULL;
65 }
66
67 //////////////////////////////////////////////////////////////
68 //////////////////////////////////////////////////////////////
69
Init_String(t_string * ts)70 void Init_String(t_string *ts)
71 {
72 ts->len = -1.;
73 ts->next = NULL;
74 ts->prev = NULL;
75 }
76
77 //////////////////////////////////////////////////////////////
78 //////////////////////////////////////////////////////////////
79
Init_Efrq(phydbl * b_frq,t_efrq * f)80 void Init_Efrq(phydbl *b_frq, t_efrq *f)
81 {
82 f->user_state_freq = NO;
83 f->empirical_state_freq = NO;
84 f->next = NULL;
85 f->prev = NULL;
86 }
87
88 //////////////////////////////////////////////////////////////
89 //////////////////////////////////////////////////////////////
90
Init_Tree(t_tree * tree,int n_otu)91 void Init_Tree(t_tree *tree, int n_otu)
92 {
93 tree->n_otu = n_otu;
94 tree->mat = NULL;
95 tree->n_root = NULL;
96 tree->e_root = NULL;
97 tree->ps_tree = NULL;
98 tree->short_l = NULL;
99 tree->mutmap = NULL;
100 tree->next = NULL;
101 tree->prev = NULL;
102 tree->next = NULL;
103 tree->prev = NULL;
104 tree->mixt_tree = NULL;
105 tree->geo = NULL;
106 tree->xml_root = NULL;
107 tree->extra_tree = NULL;
108 tree->verbose = VL3;
109 tree->edge_list = NULL;
110 tree->node_list = NULL;
111
112 tree->is_mixt_tree = NO;
113 tree->tree_num = 0;
114 tree->depth_curr_path = 0;
115 tree->has_bip = NO;
116 tree->n_moves = 0;
117 tree->bl_from_node_stamps = 0;
118 tree->lock_topo = NO;
119 tree->ps_page_number = 0;
120 tree->init_lnL = UNLIKELY;
121 tree->best_lnL = UNLIKELY;
122 tree->old_lnL = UNLIKELY;
123 tree->c_lnL = UNLIKELY;
124 tree->sum_min_sum_scale = .0;
125 tree->n_swap = 0;
126 tree->best_pars = 1E+5;
127 tree->n_pattern = -1;
128 tree->n_root_pos = -1.;
129 tree->write_labels = YES;
130 tree->write_br_lens = YES;
131 tree->num_curr_branch_available = 0;
132 tree->tip_order_score = .0;
133 tree->write_tax_names = YES;
134 tree->update_alias_subpatt = NO;
135 tree->bl_ndigits = 8;
136 tree->n_short_l = 100;
137 tree->norm_scale = 0.0;
138 tree->br_len_recorded = NO;
139 tree->apply_lk_scaling = YES;
140 tree->dp = 0;
141 tree->ignore_root = YES;
142 tree->ignore_mixt_info = NO;
143 tree->annealing_temp = 0.;
144 tree->both_sides = NO;
145 tree->json_num = 0;
146 tree->update_eigen_lr = NO;
147 tree->use_eigen_lr = NO;
148 tree->eval_alnL = YES;
149 tree->eval_rlnL = YES;
150 tree->eval_glnL = YES;
151 tree->scaling_method = SCALE_FAST;
152 tree->perform_spr_right_away = YES;
153 tree->tip_root = 0;
154 tree->n_edges_traversed = 0;
155 tree->fully_nni_opt = NO;
156 tree->n_tot_bl_opt = 0;
157 tree->numerical_warning = NO;
158
159 #ifdef BEAGLE
160 tree->b_inst = UNINITIALIZED;
161 #endif
162 }
163
164 //////////////////////////////////////////////////////////////
165 //////////////////////////////////////////////////////////////
166
Init_Edge_Light(t_edge * b,int num)167 void Init_Edge_Light(t_edge *b, int num)
168 {
169 b->num = num;
170 b->bip_score = 0;
171 b->tdist_score = .0;
172 b->dist_btw_edges = .0;
173 b->topo_dist_btw_edges = 0;
174 b->has_zero_br_len = NO;
175 b->n_jumps = 0;
176 b->l_var->v = -1.;
177 b->does_exist = YES;
178 b->l->v = -1.;
179 b->bin_cod_num = -1.;
180 b->l->onoff = ON;
181
182 b->next = NULL;
183 b->prev = NULL;
184 b->next_mixt = NULL;
185 b->prev_mixt = NULL;
186
187 b->p_lk_left = NULL;
188 b->p_lk_rght = NULL;
189 b->p_lk_loc_left = NULL;
190 b->p_lk_loc_rght = NULL;
191 b->Pij_rr = NULL;
192 b->label = NULL;
193
194 b->pars_l = NULL;
195 b->pars_r = NULL;
196 b->ui_l = NULL;
197 b->ui_r = NULL;
198 b->p_pars_l = NULL;
199 b->p_pars_r = NULL;
200 b->n_diff_states_l = NULL;
201 b->n_diff_states_r = NULL;
202
203 b->update_partial_lk_left = YES;
204 b->update_partial_lk_rght = YES;
205
206 #ifdef BEAGLE
207 b->p_lk_left_idx = num;
208 b->p_lk_rght_idx = UNINITIALIZED; //Will be initialized later when the total number of branches is known (i.e. in Make_Tree_From_Scratch())
209 b->Pij_rr_idx = num;
210 b->p_lk_tip_idx = UNINITIALIZED; //Will be initialized later only if this branch is connected to a tip
211 #endif
212
213 }
214
215 //////////////////////////////////////////////////////////////
216 //////////////////////////////////////////////////////////////
217
Init_Node_Light(t_node * n,int num)218 void Init_Node_Light(t_node *n, int num)
219 {
220 n->num = num;
221 n->tax = -1;
222 n->dist_to_root = .0;
223 n->common = 1;
224 n->ext_node = NULL;
225 n->name = NULL;
226 n->ori_name = NULL;
227 n->c_seq = NULL;
228 n->c_seq_anc = NULL;
229 n->y_rank = 0.;
230 n->y_rank_ori = 0.;
231 n->y_rank_max = 0.;
232 n->y_rank_min = 0.;
233 n->anc = NULL;
234 n->rank = 0;
235 n->match_node = NULL;
236 n->id_rank = 0;
237 n->next = NULL;
238 n->prev = NULL;
239 n->n_cal = 0;
240 n->ldsk = NULL;
241 n->rk_next = NULL;
242 n->rk_prev = NULL;
243 n->label = NULL;
244 /* n->next = NULL; */
245 /* n->prev = NULL; */
246 }
247
248 //////////////////////////////////////////////////////////////
249 //////////////////////////////////////////////////////////////
250
Init_NNI(t_nni * a_nni)251 void Init_NNI(t_nni *a_nni)
252 {
253 a_nni->left = NULL;
254 a_nni->rght = NULL;
255 a_nni->b = NULL;
256 a_nni->init_l = NULL;
257 a_nni->init_v = NULL;
258 a_nni->init_lk = .0;
259 a_nni->score = +1.0;
260 a_nni->best_l = NULL;
261 a_nni->best_v = NULL;
262 a_nni->swap_node_v1 = NULL;
263 a_nni->swap_node_v2 = NULL;
264 a_nni->swap_node_v3 = NULL;
265 a_nni->swap_node_v4 = NULL;
266 a_nni->lk0 = UNLIKELY;
267 a_nni->lk1 = UNLIKELY;
268 a_nni->lk2 = UNLIKELY;
269 a_nni->l0 = NULL;
270 a_nni->l1 = NULL;
271 a_nni->l2 = NULL;
272 a_nni->v0 = NULL;
273 a_nni->v1 = NULL;
274 a_nni->v2 = NULL;
275 }
276
277 //////////////////////////////////////////////////////////////
278 //////////////////////////////////////////////////////////////
279
Init_Nexus_Format(nexcom ** com)280 void Init_Nexus_Format(nexcom **com)
281 {
282
283 /*****************************/
284
285 strcpy(com[0]->name,"dimensions");
286 com[0]->nparm = 2;
287 com[0]->nxt_token_t = NEXUS_PARM;
288 com[0]->cur_token_t = NEXUS_COM;
289
290 com[0]->parm[0] = Make_Nexus_Parm();
291 strcpy(com[0]->parm[0]->name,"ntax");
292 com[0]->parm[0]->fp = Read_Nexus_Dimensions;
293 com[0]->parm[0]->com = com[0];
294 com[0]->parm[0]->nxt_token_t = NEXUS_EQUAL;
295 com[0]->parm[0]->cur_token_t = NEXUS_PARM;
296
297 com[0]->parm[1] = Make_Nexus_Parm();
298 strcpy(com[0]->parm[1]->name,"nchar");
299 com[0]->parm[1]->fp = Read_Nexus_Dimensions;
300 com[0]->parm[1]->com = com[0];
301 com[0]->parm[1]->nxt_token_t = NEXUS_EQUAL;
302 com[0]->parm[1]->cur_token_t = NEXUS_PARM;
303
304 /*****************************/
305
306 strcpy(com[1]->name,"format");
307 com[1]->nparm = 11;
308 com[1]->nxt_token_t = NEXUS_PARM;
309 com[1]->cur_token_t = NEXUS_COM;
310
311 com[1]->parm[0] = Make_Nexus_Parm();
312 strcpy(com[1]->parm[0]->name,"datatype");
313 com[1]->parm[0]->fp = Read_Nexus_Format;
314 com[1]->parm[0]->com = com[1];
315 com[1]->parm[0]->nxt_token_t = NEXUS_EQUAL;
316 com[1]->parm[0]->cur_token_t = NEXUS_PARM;
317
318 com[1]->parm[1] = Make_Nexus_Parm();
319 strcpy(com[1]->parm[1]->name,"respectcase");
320 com[1]->parm[1]->fp = Read_Nexus_Format;
321 com[1]->parm[1]->com = com[1];
322 com[1]->parm[1]->nxt_token_t = NEXUS_PARM;
323 com[1]->parm[1]->cur_token_t = NEXUS_VALUE;
324
325 com[1]->parm[2] = Make_Nexus_Parm();
326 strcpy(com[1]->parm[2]->name,"missing");
327 com[1]->parm[2]->fp = Read_Nexus_Format;
328 com[1]->parm[2]->com = com[1];
329 com[1]->parm[2]->nxt_token_t = NEXUS_EQUAL;
330 com[1]->parm[2]->cur_token_t = NEXUS_PARM;
331
332 com[1]->parm[3] = Make_Nexus_Parm();
333 strcpy(com[1]->parm[3]->name,"gap");
334 com[1]->parm[3]->fp = Read_Nexus_Format;
335 com[1]->parm[3]->com = com[1];
336 com[1]->parm[3]->nxt_token_t = NEXUS_EQUAL;
337 com[1]->parm[3]->cur_token_t = NEXUS_PARM;
338
339 com[1]->parm[4] = Make_Nexus_Parm();
340 strcpy(com[1]->parm[4]->name,"symbols");
341 com[1]->parm[4]->fp = Read_Nexus_Format;
342 com[1]->parm[4]->com = com[1];
343 com[1]->parm[4]->nxt_token_t = NEXUS_EQUAL;
344 com[1]->parm[4]->cur_token_t = NEXUS_PARM;
345
346 com[1]->parm[5] = Make_Nexus_Parm();
347 strcpy(com[1]->parm[5]->name,"equate");
348 com[1]->parm[5]->fp = Read_Nexus_Format;
349 com[1]->parm[5]->com = com[1];
350 com[1]->parm[5]->nxt_token_t = NEXUS_EQUAL;
351 com[1]->parm[5]->cur_token_t = NEXUS_PARM;
352
353 com[1]->parm[6] = Make_Nexus_Parm();
354 strcpy(com[1]->parm[6]->name,"matchchar");
355 com[1]->parm[6]->fp = Read_Nexus_Format;
356 com[1]->parm[6]->com = com[1];
357 com[1]->parm[6]->nxt_token_t = NEXUS_EQUAL;
358 com[1]->parm[6]->cur_token_t = NEXUS_PARM;
359
360 com[1]->parm[7] = Make_Nexus_Parm();
361 strcpy(com[1]->parm[7]->name,"transpose");
362 com[1]->parm[7]->fp = Read_Nexus_Format;
363 com[1]->parm[7]->com = com[1];
364 com[1]->parm[7]->nxt_token_t = NEXUS_PARM;
365 com[1]->parm[7]->cur_token_t = NEXUS_VALUE;
366
367 com[1]->parm[8] = Make_Nexus_Parm();
368 strcpy(com[1]->parm[8]->name,"interleave");
369 com[1]->parm[8]->fp = Read_Nexus_Format;
370 com[1]->parm[8]->com = com[1];
371 com[1]->parm[8]->nxt_token_t = NEXUS_PARM;
372 com[1]->parm[8]->cur_token_t = NEXUS_VALUE;
373
374 com[1]->parm[9] = Make_Nexus_Parm();
375 strcpy(com[1]->parm[9]->name,"items");
376 com[1]->parm[9]->fp = Read_Nexus_Format;
377 com[1]->parm[9]->com = com[1];
378 com[1]->parm[9]->nxt_token_t = NEXUS_EQUAL;
379 com[1]->parm[9]->cur_token_t = NEXUS_PARM;
380
381 com[1]->parm[10] = Make_Nexus_Parm();
382 strcpy(com[1]->parm[10]->name,"statesformat");
383 com[1]->parm[10]->fp = Read_Nexus_Format;
384 com[1]->parm[10]->com = com[1];
385 com[1]->parm[10]->nxt_token_t = NEXUS_EQUAL;
386 com[1]->parm[10]->cur_token_t = NEXUS_PARM;
387
388 /*****************************/
389
390 strcpy(com[2]->name,"eliminate");
391 com[2]->nparm = 0;
392 com[2]->nxt_token_t = NEXUS_VALUE;
393 com[2]->cur_token_t = NEXUS_COM;
394
395 /*****************************/
396
397 strcpy(com[3]->name,"taxlabels");
398 com[3]->nparm = 0;
399 com[3]->nxt_token_t = -1;
400 com[3]->cur_token_t = -1;
401
402 /*****************************/
403
404 strcpy(com[4]->name,"charstatelabels");
405 com[4]->nparm = 0;
406 com[4]->nxt_token_t = -1;
407 com[4]->cur_token_t = -1;
408
409 /*****************************/
410
411 strcpy(com[5]->name,"charlabels");
412 com[5]->nparm = 0;
413 com[5]->nxt_token_t = -1;
414 com[5]->cur_token_t = -1;
415
416 /*****************************/
417
418 strcpy(com[6]->name,"statelabels");
419 com[6]->nparm = 0;
420 com[6]->nxt_token_t = -1;
421 com[6]->cur_token_t = -1;
422
423 /*****************************/
424
425 strcpy(com[7]->name,"matrix");
426 com[7]->nparm = 1;
427 com[7]->nxt_token_t = NEXUS_COM;
428 com[7]->cur_token_t = NEXUS_VALUE; /* This will allow us to skip directly
429 to the matrix reading function */
430
431 com[7]->parm[0] = Make_Nexus_Parm();
432 strcpy(com[7]->parm[0]->name,"matrix");
433 com[7]->parm[0]->fp = Read_Nexus_Matrix;
434 com[7]->parm[0]->com = com[7];
435 com[7]->parm[0]->nxt_token_t = NEXUS_COM;
436 com[7]->parm[0]->cur_token_t = -1;
437
438 /*****************************/
439
440 strcpy(com[8]->name,"begin");
441 com[8]->nparm = 3;
442
443 com[8]->nxt_token_t = NEXUS_PARM;
444 com[8]->cur_token_t = NEXUS_COM;
445
446 com[8]->parm[0] = Make_Nexus_Parm();
447 strcpy(com[8]->parm[0]->name,"data");
448 com[8]->parm[0]->fp = Read_Nexus_Begin;
449 com[8]->parm[0]->com = com[8];
450 com[8]->parm[0]->nxt_token_t = NEXUS_COM;
451 com[8]->parm[0]->cur_token_t = NEXUS_PARM;
452
453
454 com[8]->parm[1] = Make_Nexus_Parm();
455 strcpy(com[8]->parm[1]->name,"trees");
456 com[8]->parm[1]->fp = Read_Nexus_Begin;
457 com[8]->parm[1]->com = com[8];
458 com[8]->parm[1]->nxt_token_t = NEXUS_COM;
459 com[8]->parm[1]->cur_token_t = NEXUS_PARM;
460
461
462 com[8]->parm[2] = Make_Nexus_Parm();
463 strcpy(com[8]->parm[2]->name,"taxa");
464 com[8]->parm[2]->fp = Read_Nexus_Taxa;
465 com[8]->parm[2]->com = com[8];
466 com[8]->parm[2]->nxt_token_t = NEXUS_COM;
467 com[8]->parm[2]->cur_token_t = NEXUS_VALUE;
468
469
470 /*****************************/
471
472 strcpy(com[9]->name,"end");
473 com[9]->nparm = 0;
474 com[9]->nxt_token_t = -1;
475 com[9]->cur_token_t = -1;
476
477 /*****************************/
478
479 strcpy(com[10]->name,"translate");
480 com[10]->nparm = 1;
481 com[10]->nxt_token_t = NEXUS_COM;
482 com[10]->cur_token_t = NEXUS_VALUE;
483
484 com[10]->parm[0] = Make_Nexus_Parm();
485 strcpy(com[10]->parm[0]->name,"translate");
486 com[10]->parm[0]->fp = Read_Nexus_Translate;
487 com[10]->parm[0]->com = com[10];
488 com[10]->parm[0]->nxt_token_t = NEXUS_COM;
489 com[10]->parm[0]->cur_token_t = -1;
490
491 /*****************************/
492
493 strcpy(com[11]->name,"tree");
494 com[11]->nparm = 1;
495 com[11]->nxt_token_t = NEXUS_COM;
496 com[11]->cur_token_t = NEXUS_VALUE;
497
498 com[11]->parm[0] = Make_Nexus_Parm();
499 strcpy(com[11]->parm[0]->name,"tree");
500 com[11]->parm[0]->fp = Read_Nexus_Tree;
501 com[11]->parm[0]->com = com[11];
502 com[11]->parm[0]->nxt_token_t = -1;
503 com[11]->parm[0]->cur_token_t = -1;
504
505
506 /*****************************/
507
508 }
509
510 //////////////////////////////////////////////////////////////
511 //////////////////////////////////////////////////////////////
512
Init_Mat(matrix * mat,calign * data)513 void Init_Mat(matrix *mat, calign *data)
514 {
515 int i;
516
517 mat->n_otu = data->n_otu;
518 mat->r = mat->n_otu;
519 mat->curr_int = mat->n_otu;
520 mat->method = 1;
521
522 for(i=0;i<data->n_otu;i++)
523 {
524 strcpy(mat->name[i],data->c_seq[i]->name);
525 mat->on_off[i] = 1;
526 }
527 }
528
529 //////////////////////////////////////////////////////////////
530 //////////////////////////////////////////////////////////////
531
Set_Defaults_Input(option * io)532 void Set_Defaults_Input(option* io)
533 {
534 io->fp_in_align = NULL;
535 io->fp_in_tree = NULL;
536 io->fp_in_constraint_tree = NULL;
537 io->fp_out_tree = NULL;
538 io->fp_out_trees = NULL;
539 io->fp_out_boot_tree = NULL;
540 io->fp_out_boot_stats = NULL;
541 io->fp_out_stats = NULL;
542 io->fp_out_ancestral_seq = NULL;
543 io->fp_out_ancestral_tree = NULL;
544 io->fp_in_coord = NULL;
545 io->fp_out_trace = NULL;
546 io->fp_weight_file = NULL;
547 io->fp_out_json_trace = NULL;
548 io->fp_out_lk = NULL;
549 io->fp_out_trace = NULL;
550 io->long_tax_names = NULL;
551 io->short_tax_names = NULL;
552 io->lon = NULL;
553 io->lat = NULL;
554 io->z_scores = NULL;
555 io->cstr_tree = NULL;
556 io->next = NULL;
557 io->prev = NULL;
558 io->tree = NULL;
559 io->mod = NULL;
560 strcpy(io->nt_or_cd,"nucleotides");
561 io->tbe_bootstrap = NO;
562 io->n_data_sets = 1;
563 io->interleaved = 1;
564 io->in_tree = 0;
565 io->out_tree_file_open_mode = 1;
566 io->out_stats_file_open_mode = 1;
567 io->init_len = -1;
568 io->n_otu = -1;
569 io->n_data_set_asked = -1;
570 io->print_boot_trees = 1;
571 io->n_part = 1;
572 io->ratio_test = ABAYES;
573 io->multigene = 0;
574 io->config_multigene = 0;
575 io->curr_interface = 0;
576 io->r_seed = -1;
577 io->collapse_boot = 0;
578 io->random_boot_seq_order = YES;
579 io->print_trace = NO;
580 io->print_json_trace = NO;
581 io->print_site_lnl = NO;
582 io->m4_model = NO;
583 io->rm_ambigu = NO;
584 io->append_run_ID = NO;
585 io->quiet = NO;
586 io->datatype = NT;
587 io->colalias = YES;
588 io->data_file_format = PHYLIP;
589 io->tree_file_format = PHYLIP;
590 io->boot_prog_every = 20;
591 io->mem_question = YES;
592 io->do_alias_subpatt = NO;
593 io->lk_approx = EXACT;
594 io->codpos = -1;
595 io->mutmap = NO;
596 io->state_len = 1;
597 io->ancestral = NO;
598 io->use_xml = NO;
599 io->has_io_weights = NO;
600 io->do_boot = NO;
601 io->do_alrt = YES;
602 io->do_tbe = NO;
603 io->print_node_num = NO;
604 io->print_support_val = NO;
605 io->n_boot_replicates = 0;
606
607 #ifdef BEAGLE
608 io->beagle_resource = 0;
609 #endif
610 io->precision = 0;
611
612 MCMC_Init_MCMC_Struct(NULL,io,io->mcmc);
613 RATES_Init_Rate_Struct(io->rates,NULL,-1);
614 io->rates->model = LOGNORMAL;
615 TIMES_Init_Time_Struct(io->times,NULL,-1);
616 io->times->model = COALESCENT;
617 }
618
619 //////////////////////////////////////////////////////////////
620 //////////////////////////////////////////////////////////////
621
Init_Rmat(t_rmat * rmat)622 void Init_Rmat(t_rmat *rmat)
623 {
624 rmat->n_diff_rr = 1;
625 }
626
627 //////////////////////////////////////////////////////////////
628 //////////////////////////////////////////////////////////////
629
Set_Defaults_Model(t_mod * mod)630 void Set_Defaults_Model(t_mod *mod)
631 {
632 Set_Defaults_Ras(mod->ras);
633
634 strcpy(mod->modelname->s,"HKY85");
635 strcpy(mod->custom_mod_string->s,"000000");
636 mod->next = NULL;
637 mod->prev = NULL;
638 mod->next_mixt = NULL;
639 mod->prev_mixt = NULL;
640 mod->r_mat = NULL;
641 mod->e_frq = NULL;
642 mod->whichmodel = HKY85;
643 mod->n_mixt_classes = 0;
644 mod->mod_num = 0;
645 mod->update_eigen = NO;
646 mod->is_mixt_mod = NO;
647
648 mod->kappa->v = 4.0;
649 mod->lambda->v = 1.0;
650 mod->l_var_sigma = 1.E-2;
651 mod->e_frq_weight->v = 1.0;
652 mod->r_mat_weight->v = 1.0;
653
654 mod->ns = 4;
655 mod->use_m4mod = NO;
656 mod->ras->gamma_median = NO;
657 mod->m4mod = NULL;
658
659 /* mod->r_mat->n_diff_rr = 0; */
660 /* mod->r_mat->rr = NULL; */
661 /* mod->r_mat->rr_val = NULL; */
662 /* mod->r_mat->n_rr_per_cat = NULL; */
663
664 mod->io = NULL;
665 mod->log_l = NO;
666 mod->gamma_mgf_bl = NO;
667 mod->br_len_mult->v = 1.0;
668
669
670 #if !(defined PHYTIME || defined PHYREX)
671 mod->l_min = 1.E-8;
672 mod->l_max = 100.0;
673 #else
674 mod->l_min = 1.E-8;
675 mod->l_max = 1.E+3;
676 #endif
677
678 mod->l_var_min = mod->l_min;
679 mod->l_var_max = mod->l_max;
680
681 mod->br_len_mult->v = 1.0;
682 mod->br_len_mult_unscaled->v = 1.0;
683 mod->augmented = NO;
684 }
685
686 //////////////////////////////////////////////////////////////
687 //////////////////////////////////////////////////////////////
688
Set_Defaults_Ras(t_ras * ras)689 void Set_Defaults_Ras(t_ras *ras)
690 {
691 ras->n_catg = 4;
692 ras->normalise_rr = YES;
693 ras->pinvar->v = 0.0;
694 ras->alpha->v = 1.0;
695 ras->invar = NO;
696 ras->free_mixt_rates = NO;
697 ras->parent_class_number = 0;
698 ras->init_r_proba = YES;
699 ras->init_rr = YES;
700 ras->sort_rate_classes = NO;
701 }
702
703 //////////////////////////////////////////////////////////////
704 //////////////////////////////////////////////////////////////
705
Set_Defaults_Optimiz(t_opt * s_opt)706 void Set_Defaults_Optimiz(t_opt *s_opt)
707 {
708 s_opt->last_opt = YES;
709 s_opt->opt_subst_param = YES;
710 s_opt->opt_alpha = YES;
711 s_opt->opt_kappa = YES;
712 s_opt->opt_bl = YES;
713 s_opt->opt_lambda = NO;
714 s_opt->opt_pinvar = NO;
715 s_opt->opt_cov_delta = NO;
716 s_opt->opt_cov_alpha = NO;
717 s_opt->opt_cov_free_rates = NO;
718 s_opt->opt_rr = NO;
719 s_opt->init_lk = UNLIKELY;
720 s_opt->n_it_max = 1000;
721 s_opt->opt_topo = YES;
722 s_opt->topo_search = NNI_MOVE;
723 s_opt->random_input_tree = 0;
724 s_opt->n_rand_starts = 5;
725 s_opt->brent_it_max = BRENT_IT_MAX;
726 s_opt->steph_spr = YES;
727 s_opt->opt_br_len_mult = NO;
728 s_opt->min_n_triple_moves = 20;
729 s_opt->max_rank_triple_move = 0;
730 s_opt->n_improvements = 0;
731 s_opt->max_spr_depth = 0;
732 s_opt->opt_clock_r = YES;
733
734 s_opt->min_diff_lk_local = 1.E-03;
735 s_opt->min_diff_lk_global = 1.E-03;
736 s_opt->min_diff_lk_move = 1.E-03;
737
738 s_opt->p_moves_to_examine = 0.15;
739 s_opt->fast_nni = NO;
740 s_opt->greedy = NO;
741 s_opt->general_pars = NO;
742 s_opt->tree_size_mult = 1;
743 s_opt->opt_five_branch = YES;
744 s_opt->nni_br_len_opt = YES;
745
746 s_opt->pars_thresh = 5;
747
748 s_opt->hybrid_thresh = NO;
749 s_opt->quickdirty = NO;
750 s_opt->spr_pars = YES;
751 s_opt->spr_lnL = NO;
752 s_opt->min_depth_path = 0;
753 s_opt->eval_list_regraft = NO;
754
755 s_opt->max_depth_path = 2000;
756 s_opt->deepest_path = 2000;
757 s_opt->max_delta_lnL_spr = 2000000.;
758 s_opt->max_delta_lnL_spr_current = 0.0;
759 s_opt->worst_lnL_spr = BIG;
760
761 s_opt->br_len_in_spr = 10;
762 s_opt->opt_free_mixt_rates = YES;
763 s_opt->constrained_br_len = NO;
764 s_opt->opt_gamma_br_len = NO;
765 s_opt->first_opt_free_mixt_rates = YES;
766
767 s_opt->wim_n_rgrft = -1;
768 s_opt->wim_n_globl = -1;
769 s_opt->wim_max_dist = -1;
770 s_opt->wim_n_optim = -1;
771 s_opt->wim_n_best = -1;
772 s_opt->wim_inside_opt = 0;
773
774 s_opt->opt_rmat_weight = NO;
775 s_opt->opt_efrq_weight = NO;
776
777 s_opt->skip_tree_traversal = NO;
778 s_opt->serial_free_rates = YES;
779
780 s_opt->curr_opt_free_rates = NO;
781 }
782
783 //////////////////////////////////////////////////////////////
784 //////////////////////////////////////////////////////////////
785
XML_Init_Attribute(xml_attr * attr)786 void XML_Init_Attribute(xml_attr *attr)
787 {
788 }
789
790 //////////////////////////////////////////////////////////////
791 //////////////////////////////////////////////////////////////
792
XML_Init_Node(xml_node * parent,xml_node * new_node,char * name)793 void XML_Init_Node(xml_node *parent, xml_node *new_node, char *name)
794 {
795 if(name) strcpy(new_node->name,name);
796
797 new_node->parent = parent ? parent : NULL;
798 new_node->next = NULL;
799 new_node->prev = NULL;
800 new_node->child = NULL;
801 new_node->ds->obj = NULL;
802 new_node->ds->next = NULL;
803
804 if(parent)
805 {
806 if(!parent->child)
807 {
808 parent->child = new_node;
809 }
810 else
811 {
812 xml_node *node = parent->child;
813 while(node->next) node = node->next;
814 node->next = new_node;
815 new_node->prev = node;
816 }
817 }
818
819 new_node->attr = NULL;
820 }
821
822 //////////////////////////////////////////////////////////////
823 //////////////////////////////////////////////////////////////
824
RATES_Init_Rate_Struct(t_rate * rates,t_rate * existing_rates,int n_otu)825 void RATES_Init_Rate_Struct(t_rate *rates, t_rate *existing_rates, int n_otu)
826 {
827 int i;
828
829 if(existing_rates && existing_rates->model != -1)
830 {
831 rates->model = existing_rates->model;
832 }
833 else
834 {
835 rates->model = NONE;
836 }
837
838 rates->met_within_gibbs = NO;
839 rates->c_lnL_rates = UNLIKELY;
840 rates->adjust_rates = 0;
841 rates->use_rates = 1;
842 rates->lexp = 1.E-3;
843 rates->norm_fact = 1.0;
844 rates->inflate_var = 1.0;
845 rates->br_r_recorded = NO;
846
847
848 rates->max_rate = 100.0;
849 rates->min_rate = 0.001;
850
851 rates->clock_r = 1.E-4;
852 rates->min_clock = 1.E-10;
853 rates->max_clock = 1.E+0;
854
855 rates->nu = 1.0E-1;
856 rates->min_nu = 0.0;
857 rates->max_nu = 2.0;
858
859 rates->min_dt = 0.0;
860
861 rates->step_rate = 1.E-4;
862 rates->approx = 1;
863 rates->bl_from_rt = NO;
864
865 rates->update_mean_l = NO;
866 rates->update_cov_l = NO;
867
868 rates->p_max = 0.01;
869
870 if(n_otu > 0)
871 {
872 for(i=0;i<(2*n_otu-2)*(2*n_otu-2);++i) rates->cov_l[i] = 0.0;
873
874 for(i=0;i<2*n_otu-2;++i)
875 {
876 rates->mean_r[i] = 1.0;
877 rates->mean_l[i] = 0.0;
878 rates->cur_l[i] = 0.01;
879 }
880
881 for(i=0;i<2*n_otu-1;++i)
882 {
883 rates->nd_r[i] = 1.0;
884 rates->br_r[i] = 1.0;
885
886
887 rates->br_do_updt[i] = YES;
888 }
889 }
890 }
891
892 //////////////////////////////////////////////////////////////
893 //////////////////////////////////////////////////////////////
894
TIMES_Init_Time_Struct(t_time * times,t_time * existing_times,int n_otu)895 void TIMES_Init_Time_Struct(t_time *times, t_time *existing_times, int n_otu)
896 {
897 if(existing_times && existing_times->model != -1)
898 {
899 times->model = existing_times->model;
900 }
901 else
902 {
903 times->model = NONE;
904 }
905
906 times->scaled_pop_size = 1.0;
907
908 times->c_lnL_times = UNLIKELY;
909 times->c_lnL_times = UNLIKELY;
910 times->c_lnL_jps = UNLIKELY;
911 times->nd_t_recorded = NO;
912
913 times->birth_rate = 1.E-1;
914 times->birth_rate_min = 1.E-6;
915 times->birth_rate_max = 1.E+0;
916 times->birth_rate_pivot = 1.E-1;
917
918 times->death_rate = 1.E-1;
919 times->death_rate_min = 1.E-6;
920 times->death_rate_min = 1.E+0;
921 times->death_rate_pivot = 1.E-1;
922
923 if(n_otu > 0)
924 {
925
926 for(int i=0;i<2*n_otu-2;++i)
927 {
928 times->n_jps[i] = -1;
929 times->t_jps[i] = -1;
930 }
931
932 for(int i=0;i<2*n_otu-1;++i)
933 {
934 times->mean_t[i] = 0.0;
935 times->nd_t[i] = 0.0;
936 times->true_t[i] = 0.0;
937 if(i < n_otu)
938 {
939 times->t_has_prior[i] = YES;
940 times->t_prior_max[i] = 0.0;
941 times->t_prior_min[i] = 0.0;
942 }
943 else
944 {
945 times->t_has_prior[i] = NO;
946 times->t_prior_max[i] = 0.0;
947 times->t_prior_min[i] = -BIG;
948 }
949
950 times->has_survived[i] = NO;
951 times->t_rank[i] = i;
952 }
953 }
954
955 times->update_time_norm_const = NO;
956 times->is_asynchronous = NO;
957 }
958
959 //////////////////////////////////////////////////////////////
960 //////////////////////////////////////////////////////////////
961
Init_One_Spr(t_spr * a_spr)962 void Init_One_Spr(t_spr *a_spr)
963 {
964 a_spr->lnL = UNLIKELY;
965 a_spr->pars = 1E+5;
966 a_spr->depth_path = 0;
967 a_spr->dist = 0;
968 a_spr->init_target_l = NULL;
969 a_spr->init_target_v = NULL;
970 a_spr->l0 = NULL;
971 a_spr->l1 = NULL;
972 a_spr->l2 = NULL;
973 a_spr->v0 = NULL;
974 a_spr->v1 = NULL;
975 a_spr->v2 = NULL;
976 a_spr->n_link = NULL;
977 a_spr->n_opp_to_link = NULL;
978 a_spr->b_opp_to_link = NULL;
979 a_spr->b_target = NULL;
980 a_spr->b_init_target = NULL;
981 a_spr->next = NULL;
982 a_spr->prev = NULL;
983 a_spr->next = NULL;
984 a_spr->prev = NULL;
985 }
986
987 //////////////////////////////////////////////////////////////
988 //////////////////////////////////////////////////////////////
989
Init_Target_Tip(t_clad * clade,t_tree * tree)990 void Init_Target_Tip(t_clad *clade, t_tree *tree)
991 {
992 int i,j;
993
994 for(i=0;i<clade->n_tax;++i)
995 {
996 for(j=0;j<tree->n_otu;++j)
997 {
998 if(!strcmp(tree->a_nodes[j]->name,clade->tax_list[i]))
999 {
1000 clade->tip_list[i] = tree->a_nodes[j];
1001 break;
1002 }
1003 }
1004 assert(j != tree->n_otu);
1005 }
1006 }
1007
1008 //////////////////////////////////////////////////////////////
1009 //////////////////////////////////////////////////////////////
1010
Init_Model(calign * data,t_mod * mod,option * io)1011 void Init_Model(calign *data, t_mod *mod, option *io)
1012 {
1013 int i,j;
1014 phydbl sum,aux;
1015 int result;
1016 phydbl *dr, *di, *space;
1017
1018 assert(data);
1019 assert(mod);
1020 assert(io);
1021
1022 #ifdef BEAGLE
1023 mod->b_inst = UNINITIALIZED; //prevents calling an uninitialized BEAGLE instance (for ex: prevents Update_Eigen(), Update_RAS(), from calling BEAGLE)
1024 mod->optimizing_topology = false;
1025 #endif
1026
1027 mod->ns = io->mod->ns;
1028
1029 if(io->datatype == GENERIC) mod->whichmodel = JC69;
1030
1031 dr = (phydbl *)mCalloc( mod->ns,sizeof(phydbl));
1032 di = (phydbl *)mCalloc( mod->ns,sizeof(phydbl));
1033 space = (phydbl *)mCalloc(2*mod->ns,sizeof(phydbl));
1034
1035 if(mod->log_l == YES)
1036 {
1037 mod->l_min = log(mod->l_min);
1038 mod->l_max = log(mod->l_max);
1039 }
1040
1041 // Init unscaled relative rate frequencies
1042 if(mod->ras->init_r_proba == YES)
1043 {
1044 for(i=0;i<mod->ras->n_catg;i++) mod->ras->gamma_r_proba->v[i] = (phydbl)1./mod->ras->n_catg;
1045 for(i=0;i<mod->ras->n_catg;i++) mod->ras->gamma_r_proba_unscaled->v[i] = (phydbl)(i+1);
1046 }
1047 else
1048 {
1049 mod->ras->gamma_r_proba_unscaled->v[mod->ras->n_catg-1] = 1.0;
1050 for(i=0;i<mod->ras->n_catg;i++)
1051 {
1052 sum = 0.0;
1053 For(j,i+1) sum += mod->ras->gamma_r_proba->v[j];
1054 mod->ras->gamma_r_proba_unscaled->v[i] = sum * mod->ras->gamma_r_proba_unscaled->v[mod->ras->n_catg-1];
1055 }
1056 }
1057
1058 // Init unscaled relative rates
1059 if(mod->ras->init_rr == YES)
1060 {
1061 if(mod->ras->n_catg > 1)
1062 {
1063 for(i=0;i<mod->ras->n_catg;i++) mod->ras->gamma_rr->v[i] = (phydbl)i;
1064 for(i=0;i<mod->ras->n_catg;i++) mod->ras->gamma_rr_unscaled->v[i] = (phydbl)i;
1065 }
1066 else
1067 {
1068 mod->ras->gamma_rr->v[0] = 1.0;
1069 mod->ras->gamma_rr_unscaled->v[0] = 1.0;
1070 }
1071 }
1072 else
1073 {
1074 for(i=0;i<mod->ras->n_catg;i++) mod->ras->gamma_rr_unscaled->v[i] = mod->ras->gamma_rr->v[i];
1075 }
1076
1077 if(io->datatype == NT)
1078 {
1079 /* Set the substitution parameters to their default values
1080 if they are not fixed by the user */
1081
1082 if(mod->s_opt->opt_kappa == YES)
1083 {
1084 mod->kappa->v = 4.0;
1085 mod->lambda->v = 1.0;
1086 }
1087
1088
1089 if(mod->whichmodel == CUSTOM)
1090 {
1091 for(i=0;i<6;i++)
1092 {
1093 mod->r_mat->rr_val->v[i] = 0.0;
1094 mod->r_mat->rr->v[i] = 1.0;
1095 }
1096
1097 /* Condition below is true if custom model corresponds to TN93 or K80 */
1098 if(mod->r_mat->rr_num->v[AC] == mod->r_mat->rr_num->v[AT] &&
1099 mod->r_mat->rr_num->v[AT] == mod->r_mat->rr_num->v[CG] &&
1100 mod->r_mat->rr_num->v[CG] == mod->r_mat->rr_num->v[GT] &&
1101 mod->r_mat->rr_num->v[AG] != mod->r_mat->rr_num->v[AC] &&
1102 mod->r_mat->rr_num->v[CT] != mod->r_mat->rr_num->v[AC])
1103 {
1104 for(i=1;i<mod->r_mat->n_diff_rr;i++)
1105 {
1106 mod->r_mat->rr_val->v[i] = log(2.0);
1107 mod->r_mat->rr->v[i] = 2.0;
1108 }
1109 }
1110 else if(mod->r_mat->n_diff_rr == 6) /* Custom <-> GTR model */
1111 {
1112 mod->r_mat->rr_val->v[AG] = log(2.0);
1113 mod->r_mat->rr_val->v[CT] = log(2.0);
1114
1115 mod->r_mat->rr->v[AG] = 2.0;
1116 mod->r_mat->rr->v[CT] = 2.0;
1117 }
1118 }
1119 else if(mod->whichmodel == GTR)
1120 {
1121 if(mod->s_opt->opt_rr == YES)
1122 {
1123 for(i=0;i<6;i++) mod->r_mat->rr_val->v[i] = 0.0;
1124 for(i=0;i<6;i++) mod->r_mat->rr->v[i] = 1.0;
1125
1126 mod->r_mat->rr_val->v[AG] = log(2.0);
1127 mod->r_mat->rr_val->v[CT] = log(2.0);
1128
1129 mod->r_mat->rr->v[AG] = 2.0;
1130 mod->r_mat->rr->v[CT] = 2.0;
1131 }
1132 }
1133 }
1134
1135 if(mod->s_opt->opt_alpha) mod->ras->alpha->v = 1.0;
1136 if(mod->s_opt->opt_pinvar) mod->ras->pinvar->v = 0.2;
1137
1138 if(io->datatype == NT) /* Nucleotides */
1139 {
1140 /* init for nucleotides */
1141
1142 if(mod->whichmodel == JC69)
1143 {
1144 mod->e_frq->pi->v[0] = mod->e_frq->pi->v[1] = mod->e_frq->pi->v[2] = mod->e_frq->pi->v[3] = .25;
1145 mod->kappa->v = 1.;
1146 mod->s_opt->opt_state_freq = NO;
1147 mod->s_opt->opt_kappa = NO;
1148 mod->s_opt->opt_lambda = NO;
1149 mod->update_eigen = NO;
1150 }
1151
1152 if(mod->whichmodel == K80)
1153 {
1154 mod->e_frq->pi->v[0] = mod->e_frq->pi->v[1] = mod->e_frq->pi->v[2] = mod->e_frq->pi->v[3] = .25;
1155 mod->s_opt->opt_state_freq = NO;
1156 mod->s_opt->opt_lambda = NO;
1157 mod->update_eigen = NO;
1158 }
1159
1160 if(mod->whichmodel == F81)
1161 {
1162 if(mod->e_frq->user_state_freq == NO) Init_Efrqs_Using_Observed_Freqs(mod->e_frq,data->obs_state_frq,mod->ns);
1163 else for(i=0;i<4;i++) mod->e_frq->pi->v[i] = mod->e_frq->user_b_freq->v[i];
1164 for(i=0;i<mod->ns;i++) mod->e_frq->pi_unscaled->v[i] = log(mod->e_frq->pi->v[i]);
1165 mod->kappa->v = 1.;
1166 mod->update_eigen = NO;
1167 }
1168
1169 if(mod->whichmodel == F84)
1170 {
1171 if(mod->e_frq->user_state_freq == NO) Init_Efrqs_Using_Observed_Freqs(mod->e_frq,data->obs_state_frq,mod->ns);
1172 else for(i=0;i<4;i++) mod->e_frq->pi->v[i] = mod->e_frq->user_b_freq->v[i];
1173 for(i=0;i<mod->ns;i++) mod->e_frq->pi_unscaled->v[i] = log(mod->e_frq->pi->v[i]);
1174 aux = ((mod->e_frq->pi->v[0]+mod->e_frq->pi->v[2])-(mod->e_frq->pi->v[1]+mod->e_frq->pi->v[3]))/(2.*mod->kappa->v);
1175 mod->lambda->v = ((mod->e_frq->pi->v[1]+mod->e_frq->pi->v[3]) + aux)/((mod->e_frq->pi->v[0]+mod->e_frq->pi->v[2]) - aux);
1176 mod->update_eigen = NO;
1177 }
1178
1179 if(mod->whichmodel == TN93)
1180 {
1181 if(mod->e_frq->user_state_freq == NO)
1182 Init_Efrqs_Using_Observed_Freqs(mod->e_frq,data->obs_state_frq,mod->ns);
1183 else
1184 for(i=0;i<4;i++)
1185 mod->e_frq->pi->v[i] = mod->e_frq->user_b_freq->v[i];
1186 for(i=0;i<mod->ns;i++)
1187 mod->e_frq->pi_unscaled->v[i] = log(mod->e_frq->pi->v[i]);
1188 mod->update_eigen = NO;
1189 if(io->mod->s_opt->opt_kappa) io->mod->s_opt->opt_lambda = YES;
1190
1191 }
1192
1193 if(mod->whichmodel == HKY85)
1194 {
1195 if(mod->e_frq->user_state_freq == NO)
1196 Init_Efrqs_Using_Observed_Freqs(mod->e_frq,data->obs_state_frq,mod->ns);
1197 else
1198 for(i=0;i<4;i++)
1199 mod->e_frq->pi->v[i] = mod->e_frq->user_b_freq->v[i];
1200 for(i=0;i<mod->ns;i++)
1201 mod->e_frq->pi_unscaled->v[i] = log(mod->e_frq->pi->v[i]);
1202 mod->update_eigen = NO;
1203 }
1204
1205 if(mod->whichmodel == GTR)
1206 {
1207 if (mod->e_frq->user_state_freq == NO)
1208 Init_Efrqs_Using_Observed_Freqs(mod->e_frq,data->obs_state_frq,mod->ns);
1209 else
1210 for(i=0;i<4;i++)
1211 mod->e_frq->pi->v[i] = mod->e_frq->user_b_freq->v[i];
1212 for(i=0;i<mod->ns;i++)
1213 mod->e_frq->pi_unscaled->v[i] = log(mod->e_frq->pi->v[i]);
1214 mod->kappa->v = 1.;
1215 mod->update_eigen = NO;
1216 }
1217
1218 if(mod->whichmodel == CUSTOM)
1219 {
1220 if(mod->e_frq->user_state_freq == NO) Init_Efrqs_Using_Observed_Freqs(mod->e_frq,data->obs_state_frq,mod->ns);
1221 else for(i=0;i<4;i++) mod->e_frq->pi->v[i] = mod->e_frq->user_b_freq->v[i];
1222 for(i=0;i<mod->ns;i++) mod->e_frq->pi_unscaled->v[i] = log(mod->e_frq->pi->v[i]);
1223 mod->kappa->v = 1.;
1224 mod->update_eigen = NO;
1225 }
1226
1227 if(mod->whichmodel == GTR)
1228 {
1229 mod->custom_mod_string->s[0] = '0';
1230 mod->custom_mod_string->s[1] = '1';
1231 mod->custom_mod_string->s[2] = '2';
1232 mod->custom_mod_string->s[3] = '3';
1233 mod->custom_mod_string->s[4] = '4';
1234 mod->custom_mod_string->s[5] = '5';
1235 Translate_Custom_Mod_String(mod);
1236 }
1237 }
1238 else if(mod->io->datatype == AA)
1239 {
1240
1241 /* init for amino-acids */
1242 /* see comments of PMat_Empirical for details */
1243 /* read pi and Q from file */
1244
1245 /* These initialisations are needed when analysing multiple
1246 * data sets
1247 */
1248 For(i,mod->ns*mod->ns) mod->r_mat->qmat->v[i] = .0;
1249 For(i,mod->ns ) mod->e_frq->pi->v[i] = .0;
1250
1251 switch(mod->whichmodel)
1252 {
1253 case DAYHOFF :
1254 {
1255 Init_Qmat_Dayhoff(mod->r_mat->qmat->v,mod->e_frq->pi->v);
1256 if(mod->e_frq->empirical_state_freq == YES) Init_Efrqs_Using_Observed_Freqs(mod->e_frq,data->obs_state_frq,mod->ns);
1257 break;
1258 }
1259 case JTT :
1260 {
1261 Init_Qmat_JTT(mod->r_mat->qmat->v,mod->e_frq->pi->v);
1262 if(mod->e_frq->empirical_state_freq == YES) Init_Efrqs_Using_Observed_Freqs(mod->e_frq,data->obs_state_frq,mod->ns);
1263 break;
1264 }
1265 case MTREV :
1266 {
1267 Init_Qmat_MtREV(mod->r_mat->qmat->v,mod->e_frq->pi->v);
1268 if(mod->e_frq->empirical_state_freq == YES) Init_Efrqs_Using_Observed_Freqs(mod->e_frq,data->obs_state_frq,mod->ns);
1269 break;
1270 }
1271 case LG :
1272 {
1273 Init_Qmat_LG(mod->r_mat->qmat->v,mod->e_frq->pi->v);
1274 if(mod->e_frq->empirical_state_freq == YES) Init_Efrqs_Using_Observed_Freqs(mod->e_frq,data->obs_state_frq,mod->ns);
1275 break;
1276 }
1277 case WAG :
1278 {
1279 Init_Qmat_WAG(mod->r_mat->qmat->v,mod->e_frq->pi->v);
1280 if(mod->e_frq->empirical_state_freq == YES) Init_Efrqs_Using_Observed_Freqs(mod->e_frq,data->obs_state_frq,mod->ns);
1281 break;
1282 }
1283 case DCMUT :
1284 {
1285 Init_Qmat_DCMut(mod->r_mat->qmat->v,mod->e_frq->pi->v);
1286 if(mod->e_frq->empirical_state_freq == YES) Init_Efrqs_Using_Observed_Freqs(mod->e_frq,data->obs_state_frq,mod->ns);
1287 break;
1288 }
1289 case RTREV :
1290 {
1291 Init_Qmat_RtREV(mod->r_mat->qmat->v,mod->e_frq->pi->v);
1292 if(mod->e_frq->empirical_state_freq == YES) Init_Efrqs_Using_Observed_Freqs(mod->e_frq,data->obs_state_frq,mod->ns);
1293 break;
1294 }
1295 case CPREV :
1296 {
1297 Init_Qmat_CpREV(mod->r_mat->qmat->v,mod->e_frq->pi->v);
1298 if(mod->e_frq->empirical_state_freq == YES) Init_Efrqs_Using_Observed_Freqs(mod->e_frq,data->obs_state_frq,mod->ns);
1299 break;
1300 }
1301 case VT :
1302 {
1303 Init_Qmat_VT(mod->r_mat->qmat->v,mod->e_frq->pi->v);
1304 if(mod->e_frq->empirical_state_freq == YES) Init_Efrqs_Using_Observed_Freqs(mod->e_frq,data->obs_state_frq,mod->ns);
1305 break;
1306 }
1307 case BLOSUM62 :
1308 {
1309 Init_Qmat_Blosum62(mod->r_mat->qmat->v,mod->e_frq->pi->v);
1310 if(mod->e_frq->empirical_state_freq == YES) Init_Efrqs_Using_Observed_Freqs(mod->e_frq,data->obs_state_frq,mod->ns);
1311 break;
1312 }
1313 case MTMAM :
1314 {
1315 Init_Qmat_MtMam(mod->r_mat->qmat->v,mod->e_frq->pi->v);
1316 if(mod->e_frq->empirical_state_freq == YES) Init_Efrqs_Using_Observed_Freqs(mod->e_frq,data->obs_state_frq,mod->ns);
1317 break;
1318 }
1319 case MTART :
1320 {
1321 Init_Qmat_MtArt(mod->r_mat->qmat->v,mod->e_frq->pi->v);
1322 if(mod->e_frq->empirical_state_freq == YES) Init_Efrqs_Using_Observed_Freqs(mod->e_frq,data->obs_state_frq,mod->ns);
1323 break;
1324 }
1325 case HIVW :
1326 {
1327 Init_Qmat_HIVw(mod->r_mat->qmat->v,mod->e_frq->pi->v);
1328 if(mod->e_frq->empirical_state_freq == YES) Init_Efrqs_Using_Observed_Freqs(mod->e_frq,data->obs_state_frq,mod->ns);
1329 break;
1330 }
1331 case HIVB :
1332 {
1333 Init_Qmat_HIVb(mod->r_mat->qmat->v,mod->e_frq->pi->v);
1334 if(mod->e_frq->empirical_state_freq == YES) Init_Efrqs_Using_Observed_Freqs(mod->e_frq,data->obs_state_frq,mod->ns);
1335 break;
1336 }
1337 case AB :
1338 {
1339 Init_Qmat_AB(mod->r_mat->qmat->v,mod->e_frq->pi->v);
1340 if(mod->e_frq->empirical_state_freq == YES) Init_Efrqs_Using_Observed_Freqs(mod->e_frq,data->obs_state_frq,mod->ns);
1341 break;
1342 }
1343 case CUSTOMAA :
1344 {
1345 mod->fp_aa_rate_mat = Openfile(mod->aa_rate_mat_file->s,READ);
1346 Read_Qmat(mod->r_mat->qmat->v,mod->e_frq->pi->v,mod->fp_aa_rate_mat);
1347 fclose(mod->fp_aa_rate_mat);
1348 if(mod->e_frq->empirical_state_freq == YES) Init_Efrqs_Using_Observed_Freqs(mod->e_frq,data->obs_state_frq,mod->ns);
1349 break;
1350 }
1351 case FLU :
1352 {
1353 Init_Qmat_FLU(mod->r_mat->qmat->v,mod->e_frq->pi->v);
1354 if(mod->e_frq->empirical_state_freq == YES) Init_Efrqs_Using_Observed_Freqs(mod->e_frq,data->obs_state_frq,mod->ns);
1355 break;
1356 }
1357 default :
1358 {
1359 Init_Qmat_LG(mod->r_mat->qmat->v,mod->e_frq->pi->v);
1360 if(mod->e_frq->empirical_state_freq == YES) Init_Efrqs_Using_Observed_Freqs(mod->e_frq,data->obs_state_frq,mod->ns);
1361 break;
1362 }
1363 }
1364
1365 if(mod->s_opt->opt_state_freq == YES) Init_Efrqs_Using_Observed_Freqs(mod->e_frq,data->obs_state_frq,mod->ns);
1366
1367
1368 // Adjust equilibrium state frequencies if some of them are too close to zero
1369 // in order to avoid numerical precision issues.
1370 int iter = 0;
1371 do
1372 {
1373 for(i=0;i<mod->ns;i++) if(mod->e_frq->pi->v[i] < E_FRQ_MIN) mod->e_frq->pi->v[i] = E_FRQ_MIN;
1374 sum = 0.0;
1375 for(i=0;i<mod->ns;i++) sum += fabs(mod->e_frq->pi->v[i]);
1376 for(i=0;i<mod->ns;i++) mod->e_frq->pi->v[i] /= sum;
1377 iter++;
1378 }
1379 while(iter < 10);
1380
1381 /* multiply the nth col of Q by the nth term of pi/100 just as in PAML */
1382 for(i=0;i<mod->ns;i++) for(j=0;j<mod->ns;j++) mod->r_mat->qmat->v[i*mod->ns+j] *= mod->e_frq->pi->v[j] / 100.0;
1383
1384 /* compute diagonal terms of Q and mean rate mr = l/t */
1385 mod->mr->v= .0;
1386 For (i,mod->ns)
1387 {
1388 sum=.0;
1389 For(j, mod->ns) sum += mod->r_mat->qmat->v[i*mod->ns+j];
1390 mod->r_mat->qmat->v[i*mod->ns+i] = -sum;
1391 mod->mr->v += mod->e_frq->pi->v[i] * sum;
1392 }
1393
1394 /* scale instantaneous rate matrix so that mu=1 */
1395 For (i,mod->ns*mod->ns) mod->r_mat->qmat->v[i] /= mod->mr->v;
1396
1397 /* compute eigenvectors/values */
1398 result = 0;
1399
1400 For(i,mod->ns*mod->ns) mod->r_mat->qmat_buff->v[i] = mod->r_mat->qmat->v[i];
1401
1402 if(!Eigen(1,mod->r_mat->qmat_buff->v,mod->eigen->size,mod->eigen->e_val,
1403 mod->eigen->e_val_im,mod->eigen->r_e_vect,
1404 mod->eigen->r_e_vect_im,mod->eigen->space))
1405 {
1406 /* compute inverse(Vr) into Vi */
1407 For (i,mod->ns*mod->ns) mod->eigen->l_e_vect[i] = mod->eigen->r_e_vect[i];
1408 if(!Matinv(mod->eigen->l_e_vect,mod->eigen->size,mod->eigen->size,YES))
1409 {
1410 PhyML_Fprintf(stderr,"\n. Err in file %s at line %d.",__FILE__,__LINE__);
1411 Exit("\n");
1412 }
1413
1414 /* compute the diagonal terms of exp(D) */
1415 for(i=0;i<mod->ns;i++) mod->eigen->e_val[i] = (phydbl)exp(mod->eigen->e_val[i]);
1416 }
1417 else
1418 {
1419 if (result==-1) PhyML_Printf("\n. Eigenvalues/vectors computation does not converge : computation cancelled");
1420 else if (result==1) PhyML_Printf("\n. Complex eigenvalues/vectors : computation cancelled");
1421 }
1422 }
1423 else if(mod->io->datatype == GENERIC)
1424 {
1425 /* Uniform state frequencies */
1426 for(i=0;i<mod->ns;i++) mod->e_frq->pi->v[i] = 1./(phydbl)mod->ns;
1427 mod->kappa->v = 1;
1428 mod->s_opt->opt_state_freq = NO;
1429 mod->s_opt->opt_kappa = NO;
1430 mod->s_opt->opt_lambda = NO;
1431 mod->update_eigen = NO;
1432 for(i=0;i<mod->ns*(mod->ns-1)/2;i++) mod->r_mat->rr_val->v[i] = 0.0;
1433 for(i=0;i<mod->ns*(mod->ns-1)/2;i++) mod->r_mat->rr->v[i] = 1.0;
1434 }
1435 else
1436 {
1437 PhyML_Fprintf(stderr,"\n. Datatype not recognized.\n");
1438 PhyML_Fprintf(stderr,"\n. Err. in file %s at line %d\n",__FILE__,__LINE__);
1439 Warn_And_Exit("");
1440 }
1441
1442 Init_Eigen_Struct(mod->eigen);
1443
1444 Set_Model_Parameters(mod);
1445
1446 free(dr);
1447 free(di);
1448 free(space);
1449 }
1450
1451 //////////////////////////////////////////////////////////////
1452 //////////////////////////////////////////////////////////////
1453
Init_Efrqs_Using_Observed_Freqs(t_efrq * f,phydbl * o,int ns)1454 void Init_Efrqs_Using_Observed_Freqs(t_efrq *f, phydbl *o, int ns)
1455 {
1456 int i;
1457 phydbl eps,sum;
1458
1459 assert(f);
1460 assert(o);
1461
1462 // To avoid numerical prevision issues
1463 eps = 1.E-50;
1464
1465 for(i=0;i<ns;i++) f->pi->v[i] = MAX(o[i],eps);
1466
1467 sum = 0.0;
1468 for(i=0;i<ns;i++) sum += f->pi->v[i];
1469
1470 for(i=0;i<ns;i++) f->pi->v[i] /= sum;;
1471
1472 }
1473
1474 //////////////////////////////////////////////////////////////
1475 //////////////////////////////////////////////////////////////
1476
Init_Qmat_Dayhoff(phydbl * daa,phydbl * pi)1477 int Init_Qmat_Dayhoff(phydbl *daa, phydbl *pi)
1478 {
1479 /* Dayhoff's model data
1480 * Dayhoff, M.O., Schwartz, R.M., Orcutt, B.C. (1978)
1481 * "A model of evolutionary change in proteins."
1482 * Dayhoff, M.O.(ed.) Atlas of Protein Sequence Structur., Vol5, Suppl3.
1483 * National Biomedical Research Foundation, Washington DC, pp.345-352.
1484 */
1485 int i,j,naa;
1486
1487 naa = 20;
1488
1489 /* PhyML_Printf("\n\n. REMINDER : THIS IS NOT DAYHOFF !!!\n\n"); */
1490
1491 /* daa[1*20 + 0] = 0.538903; */
1492 /* daa[2*20 + 0] = 0.412504; */
1493 /* daa[2*20 + 1] = 0.736081; */
1494 /* daa[3*20 + 0] = 0.586915; */
1495 /* daa[3*20 + 1] = 0.108051; */
1496 /* daa[3*20 + 2] = 5.446642; */
1497 /* daa[4*20 + 0] = 2.189718; */
1498 /* daa[4*20 + 1] = 0.830604; */
1499 /* daa[4*20 + 2] = 0.573426; */
1500 /* daa[4*20 + 3] = 0.077565; */
1501 /* daa[5*20 + 0] = 1.08213; */
1502 /* daa[5*20 + 1] = 2.950693; */
1503 /* daa[5*20 + 2] = 1.739514; */
1504 /* daa[5*20 + 3] = 0.559035; */
1505 /* daa[5*20 + 4] = 0.111314; */
1506 /* daa[6*20 + 0] = 1.386865; */
1507 /* daa[6*20 + 1] = 0.358434; */
1508 /* daa[6*20 + 2] = 0.541447; */
1509 /* daa[6*20 + 3] = 5.406871; */
1510 /* daa[6*20 + 4] = 0.003738; */
1511 /* daa[6*20 + 5] = 4.124043; */
1512 /* daa[7*20 + 0] = 2.085747; */
1513 /* daa[7*20 + 1] = 0.453132; */
1514 /* daa[7*20 + 2] = 1.815844; */
1515 /* daa[7*20 + 3] = 1.08647; */
1516 /* daa[7*20 + 4] = 0.526418; */
1517 /* daa[7*20 + 5] = 0.347693; */
1518 /* daa[7*20 + 6] = 0.438476; */
1519 /* daa[8*20 + 0] = 0.407898; */
1520 /* daa[8*20 + 1] = 2.689322; */
1521 /* daa[8*20 + 2] = 5.386808; */
1522 /* daa[8*20 + 3] = 0.884563; */
1523 /* daa[8*20 + 4] = 0.658583; */
1524 /* daa[8*20 + 5] = 4.588358; */
1525 /* daa[8*20 + 6] = 0.386218; */
1526 /* daa[8*20 + 7] = 0.368668; */
1527 /* daa[9*20 + 0] = 0.10177; */
1528 /* daa[9*20 + 1] = 0.104875; */
1529 /* daa[9*20 + 2] = 0.16239; */
1530 /* daa[9*20 + 3] = 0.011698; */
1531 /* daa[9*20 + 4] = 0.253282; */
1532 /* daa[9*20 + 5] = 0.083872; */
1533 /* daa[9*20 + 6] = 0.041767; */
1534 /* daa[9*20 + 7] = 0.009778; */
1535 /* daa[9*20 + 8] = 0.1042; */
1536 /* daa[10*20 + 0] = 0.248202; */
1537 /* daa[10*20 + 1] = 0.375742; */
1538 /* daa[10*20 + 2] = 0.093863; */
1539 /* daa[10*20 + 3] = 0.019241; */
1540 /* daa[10*20 + 4] = 0.572688; */
1541 /* daa[10*20 + 5] = 0.703538; */
1542 /* daa[10*20 + 6] = 0.071961; */
1543 /* daa[10*20 + 7] = 0.03006; */
1544 /* daa[10*20 + 8] = 0.418222; */
1545 /* daa[10*20 + 9] = 3.702051; */
1546 /* daa[11*20 + 0] = 0.652019; */
1547 /* daa[11*20 + 1] = 5.940478; */
1548 /* daa[11*20 + 2] = 2.352253; */
1549 /* daa[11*20 + 3] = 0.231001; */
1550 /* daa[11*20 + 4] = 0.027995; */
1551 /* daa[11*20 + 5] = 3.646743; */
1552 /* daa[11*20 + 6] = 1.507981; */
1553 /* daa[11*20 + 7] = 0.331175; */
1554 /* daa[11*20 + 8] = 0.698362; */
1555 /* daa[11*20 + 9] = 0.140326; */
1556 /* daa[11*20 + 10] = 0.171396; */
1557 /* daa[12*20 + 0] = 0.694226; */
1558 /* daa[12*20 + 1] = 0.419899; */
1559 /* daa[12*20 + 2] = 0.326927; */
1560 /* daa[12*20 + 3] = 0.039488; */
1561 /* daa[12*20 + 4] = 0.844827; */
1562 /* daa[12*20 + 5] = 1.394214; */
1563 /* daa[12*20 + 6] = 0.133235; */
1564 /* daa[12*20 + 7] = 0.085075; */
1565 /* daa[12*20 + 8] = 0.347092; */
1566 /* daa[12*20 + 9] = 4.051255; */
1567 /* daa[12*20 + 10] = 6.650794; */
1568 /* daa[12*20 + 11] = 0.617549; */
1569 /* daa[13*20 + 0] = 0.155206; */
1570 /* daa[13*20 + 1] = 0.057971; */
1571 /* daa[13*20 + 2] = 0.09816; */
1572 /* daa[13*20 + 3] = 0.020441; */
1573 /* daa[13*20 + 4] = 0.904305; */
1574 /* daa[13*20 + 5] = 0.052719; */
1575 /* daa[13*20 + 6] = 0.0219; */
1576 /* daa[13*20 + 7] = 0.046668; */
1577 /* daa[13*20 + 8] = 0.890005; */
1578 /* daa[13*20 + 9] = 0.844963; */
1579 /* daa[13*20 + 10] = 2.348881; */
1580 /* daa[13*20 + 11] = 0.028372; */
1581 /* daa[13*20 + 12] = 1.671635; */
1582 /* daa[14*20 + 0] = 1.433475; */
1583 /* daa[14*20 + 1] = 0.328393; */
1584 /* daa[14*20 + 2] = 0.173181; */
1585 /* daa[14*20 + 3] = 0.431874; */
1586 /* daa[14*20 + 4] = 0.09902; */
1587 /* daa[14*20 + 5] = 0.592324; */
1588 /* daa[14*20 + 6] = 0.488352; */
1589 /* daa[14*20 + 7] = 0.23865; */
1590 /* daa[14*20 + 8] = 0.462856; */
1591 /* daa[14*20 + 9] = 0.057048; */
1592 /* daa[14*20 + 10] = 0.233532; */
1593 /* daa[14*20 + 11] = 0.387808; */
1594 /* daa[14*20 + 12] = 0.096377; */
1595 /* daa[14*20 + 13] = 0.079912; */
1596 /* daa[15*20 + 0] = 4.887126; */
1597 /* daa[15*20 + 1] = 0.883923; */
1598 /* daa[15*20 + 2] = 4.627163; */
1599 /* daa[15*20 + 3] = 1.122164; */
1600 /* daa[15*20 + 4] = 3.186667; */
1601 /* daa[15*20 + 5] = 1.085947; */
1602 /* daa[15*20 + 6] = 0.569339; */
1603 /* daa[15*20 + 7] = 1.993432; */
1604 /* daa[15*20 + 8] = 0.867972; */
1605 /* daa[15*20 + 9] = 0.070512; */
1606 /* daa[15*20 + 10] = 0.163009; */
1607 /* daa[15*20 + 11] = 0.718913; */
1608 /* daa[15*20 + 12] = 0.301103; */
1609 /* daa[15*20 + 13] = 0.32579; */
1610 /* daa[15*20 + 14] = 1.449582; */
1611 /* daa[16*20 + 0] = 2.030538; */
1612 /* daa[16*20 + 1] = 0.639463; */
1613 /* daa[16*20 + 2] = 2.076294; */
1614 /* daa[16*20 + 3] = 0.377239; */
1615 /* daa[16*20 + 4] = 1.42848; */
1616 /* daa[16*20 + 5] = 0.979403; */
1617 /* daa[16*20 + 6] = 0.647562; */
1618 /* daa[16*20 + 7] = 0.145556; */
1619 /* daa[16*20 + 8] = 0.493329; */
1620 /* daa[16*20 + 9] = 0.973405; */
1621 /* daa[16*20 + 10] = 0.271824; */
1622 /* daa[16*20 + 11] = 1.20033; */
1623 /* daa[16*20 + 12] = 1.659187; */
1624 /* daa[16*20 + 13] = 0.1217; */
1625 /* daa[16*20 + 14] = 0.571399; */
1626 /* daa[16*20 + 15] = 6.641034; */
1627 /* daa[17*20 + 0] = 0.131405; */
1628 /* daa[17*20 + 1] = 0.552911; */
1629 /* daa[17*20 + 2] = 0.079985; */
1630 /* daa[17*20 + 3] = 0.060514; */
1631 /* daa[17*20 + 4] = 0.633662; */
1632 /* daa[17*20 + 5] = 0.21823; */
1633 /* daa[17*20 + 6] = 0.074988; */
1634 /* daa[17*20 + 7] = 0.169114; */
1635 /* daa[17*20 + 8] = 0.847725; */
1636 /* daa[17*20 + 9] = 0.10627; */
1637 /* daa[17*20 + 10] = 0.622044; */
1638 /* daa[17*20 + 11] = 0.060755; */
1639 /* daa[17*20 + 12] = 0.719575; */
1640 /* daa[17*20 + 13] = 3.14824; */
1641 /* daa[17*20 + 14] = 0.077123; */
1642 /* daa[17*20 + 15] = 0.276716; */
1643 /* daa[17*20 + 16] = 0.148883; */
1644 /* daa[18*20 + 0] = 0.165179; */
1645 /* daa[18*20 + 1] = 0.224883; */
1646 /* daa[18*20 + 2] = 0.528334; */
1647 /* daa[18*20 + 3] = 0.121252; */
1648 /* daa[18*20 + 4] = 1.174118; */
1649 /* daa[18*20 + 5] = 0.177062; */
1650 /* daa[18*20 + 6] = 0.074715; */
1651 /* daa[18*20 + 7] = 0.042356; */
1652 /* daa[18*20 + 8] = 5.911187; */
1653 /* daa[18*20 + 9] = 0.192481; */
1654 /* daa[18*20 + 10] = 0.321454; */
1655 /* daa[18*20 + 11] = 0.090556; */
1656 /* daa[18*20 + 12] = 0.406415; */
1657 /* daa[18*20 + 13] = 10.908861; */
1658 /* daa[18*20 + 14] = 0.070752; */
1659 /* daa[18*20 + 15] = 0.328483; */
1660 /* daa[18*20 + 16] = 0.181539; */
1661 /* daa[18*20 + 17] = 3.823886; */
1662 /* daa[19*20 + 0] = 1.78517; */
1663 /* daa[19*20 + 1] = 0.166975; */
1664 /* daa[19*20 + 2] = 0.106482; */
1665 /* daa[19*20 + 3] = 0.041707; */
1666 /* daa[19*20 + 4] = 1.876812; */
1667 /* daa[19*20 + 5] = 0.22421; */
1668 /* daa[19*20 + 6] = 0.247356; */
1669 /* daa[19*20 + 7] = 0.06688; */
1670 /* daa[19*20 + 8] = 0.1436; */
1671 /* daa[19*20 + 9] = 9.60184; */
1672 /* daa[19*20 + 10] = 1.599119; */
1673 /* daa[19*20 + 11] = 0.17319; */
1674 /* daa[19*20 + 12] = 1.645134; */
1675 /* daa[19*20 + 13] = 0.438571; */
1676 /* daa[19*20 + 14] = 0.252486; */
1677 /* daa[19*20 + 15] = 0.105536; */
1678 /* daa[19*20 + 16] = 1.789097; */
1679 /* daa[19*20 + 17] = 0.147951; */
1680 /* daa[19*20 + 18] = 0.200571; */
1681
1682
1683
1684 /* for (i=0; i<naa; i++) for (j=0; j<i; j++) daa[j*naa+i] = daa[i*naa+j]; */
1685
1686
1687 /* pi[0] = 0.093862; */
1688 /* pi[1] = 0.05757; */
1689 /* pi[2] = 0.037017; */
1690 /* pi[3] = 0.060952; */
1691 /* pi[4] = 0.011004; */
1692 /* pi[5] = 0.044631; */
1693 /* pi[6] = 0.083648; */
1694 /* pi[7] = 0.053004; */
1695 /* pi[8] = 0.022528; */
1696 /* pi[9] = 0.060152; */
1697 /* pi[10] = 0.092314; */
1698 /* pi[11] = 0.065886; */
1699 /* pi[12] = 0.021075; */
1700 /* pi[13] = 0.033928; */
1701 /* pi[14] = 0.043333; */
1702 /* pi[15] = 0.052957; */
1703 /* pi[16] = 0.053465; */
1704 /* pi[17] = 0.00928; */
1705 /* pi[18] = 0.030025; */
1706 /* pi[19] = 0.073369; */
1707
1708
1709 daa[ 1*20+ 0] = 27.00; daa[ 2*20+ 0] = 98.00; daa[ 2*20+ 1] = 32.00; daa[ 3*20+ 0] = 120.00;
1710 daa[ 3*20+ 1] = 0.00; daa[ 3*20+ 2] = 905.00; daa[ 4*20+ 0] = 36.00; daa[ 4*20+ 1] = 23.00;
1711 daa[ 4*20+ 2] = 0.00; daa[ 4*20+ 3] = 0.00; daa[ 5*20+ 0] = 89.00; daa[ 5*20+ 1] = 246.00;
1712 daa[ 5*20+ 2] = 103.00; daa[ 5*20+ 3] = 134.00; daa[ 5*20+ 4] = 0.00; daa[ 6*20+ 0] = 198.00;
1713 daa[ 6*20+ 1] = 1.00; daa[ 6*20+ 2] = 148.00; daa[ 6*20+ 3] = 1153.00; daa[ 6*20+ 4] = 0.00;
1714 daa[ 6*20+ 5] = 716.00; daa[ 7*20+ 0] = 240.00; daa[ 7*20+ 1] = 9.00; daa[ 7*20+ 2] = 139.00;
1715 daa[ 7*20+ 3] = 125.00; daa[ 7*20+ 4] = 11.00; daa[ 7*20+ 5] = 28.00; daa[ 7*20+ 6] = 81.00;
1716 daa[ 8*20+ 0] = 23.00; daa[ 8*20+ 1] = 240.00; daa[ 8*20+ 2] = 535.00; daa[ 8*20+ 3] = 86.00;
1717 daa[ 8*20+ 4] = 28.00; daa[ 8*20+ 5] = 606.00; daa[ 8*20+ 6] = 43.00; daa[ 8*20+ 7] = 10.00;
1718 daa[ 9*20+ 0] = 65.00; daa[ 9*20+ 1] = 64.00; daa[ 9*20+ 2] = 77.00; daa[ 9*20+ 3] = 24.00;
1719 daa[ 9*20+ 4] = 44.00; daa[ 9*20+ 5] = 18.00; daa[ 9*20+ 6] = 61.00; daa[ 9*20+ 7] = 0.00;
1720 daa[ 9*20+ 8] = 7.00; daa[10*20+ 0] = 41.00; daa[10*20+ 1] = 15.00; daa[10*20+ 2] = 34.00;
1721 daa[10*20+ 3] = 0.00; daa[10*20+ 4] = 0.00; daa[10*20+ 5] = 73.00; daa[10*20+ 6] = 11.00;
1722 daa[10*20+ 7] = 7.00; daa[10*20+ 8] = 44.00; daa[10*20+ 9] = 257.00; daa[11*20+ 0] = 26.00;
1723 daa[11*20+ 1] = 464.00; daa[11*20+ 2] = 318.00; daa[11*20+ 3] = 71.00; daa[11*20+ 4] = 0.00;
1724 daa[11*20+ 5] = 153.00; daa[11*20+ 6] = 83.00; daa[11*20+ 7] = 27.00; daa[11*20+ 8] = 26.00;
1725 daa[11*20+ 9] = 46.00; daa[11*20+10] = 18.00; daa[12*20+ 0] = 72.00; daa[12*20+ 1] = 90.00;
1726 daa[12*20+ 2] = 1.00; daa[12*20+ 3] = 0.00; daa[12*20+ 4] = 0.00; daa[12*20+ 5] = 114.00;
1727 daa[12*20+ 6] = 30.00; daa[12*20+ 7] = 17.00; daa[12*20+ 8] = 0.00; daa[12*20+ 9] = 336.00;
1728 daa[12*20+10] = 527.00; daa[12*20+11] = 243.00; daa[13*20+ 0] = 18.00; daa[13*20+ 1] = 14.00;
1729 daa[13*20+ 2] = 14.00; daa[13*20+ 3] = 0.00; daa[13*20+ 4] = 0.00; daa[13*20+ 5] = 0.00;
1730 daa[13*20+ 6] = 0.00; daa[13*20+ 7] = 15.00; daa[13*20+ 8] = 48.00; daa[13*20+ 9] = 196.00;
1731 daa[13*20+10] = 157.00; daa[13*20+11] = 0.00; daa[13*20+12] = 92.00; daa[14*20+ 0] = 250.00;
1732 daa[14*20+ 1] = 103.00; daa[14*20+ 2] = 42.00; daa[14*20+ 3] = 13.00; daa[14*20+ 4] = 19.00;
1733 daa[14*20+ 5] = 153.00; daa[14*20+ 6] = 51.00; daa[14*20+ 7] = 34.00; daa[14*20+ 8] = 94.00;
1734 daa[14*20+ 9] = 12.00; daa[14*20+10] = 32.00; daa[14*20+11] = 33.00; daa[14*20+12] = 17.00;
1735 daa[14*20+13] = 11.00; daa[15*20+ 0] = 409.00; daa[15*20+ 1] = 154.00; daa[15*20+ 2] = 495.00;
1736 daa[15*20+ 3] = 95.00; daa[15*20+ 4] = 161.00; daa[15*20+ 5] = 56.00; daa[15*20+ 6] = 79.00;
1737 daa[15*20+ 7] = 234.00; daa[15*20+ 8] = 35.00; daa[15*20+ 9] = 24.00; daa[15*20+10] = 17.00;
1738 daa[15*20+11] = 96.00; daa[15*20+12] = 62.00; daa[15*20+13] = 46.00; daa[15*20+14] = 245.00;
1739 daa[16*20+ 0] = 371.00; daa[16*20+ 1] = 26.00; daa[16*20+ 2] = 229.00; daa[16*20+ 3] = 66.00;
1740 daa[16*20+ 4] = 16.00; daa[16*20+ 5] = 53.00; daa[16*20+ 6] = 34.00; daa[16*20+ 7] = 30.00;
1741 daa[16*20+ 8] = 22.00; daa[16*20+ 9] = 192.00; daa[16*20+10] = 33.00; daa[16*20+11] = 136.00;
1742 daa[16*20+12] = 104.00; daa[16*20+13] = 13.00; daa[16*20+14] = 78.00; daa[16*20+15] = 550.00;
1743 daa[17*20+ 0] = 0.00; daa[17*20+ 1] = 201.00; daa[17*20+ 2] = 23.00; daa[17*20+ 3] = 0.00;
1744 daa[17*20+ 4] = 0.00; daa[17*20+ 5] = 0.00; daa[17*20+ 6] = 0.00; daa[17*20+ 7] = 0.00;
1745 daa[17*20+ 8] = 27.00; daa[17*20+ 9] = 0.00; daa[17*20+10] = 46.00; daa[17*20+11] = 0.00;
1746 daa[17*20+12] = 0.00; daa[17*20+13] = 76.00; daa[17*20+14] = 0.00; daa[17*20+15] = 75.00;
1747 daa[17*20+16] = 0.00; daa[18*20+ 0] = 24.00; daa[18*20+ 1] = 8.00; daa[18*20+ 2] = 95.00;
1748 daa[18*20+ 3] = 0.00; daa[18*20+ 4] = 96.00; daa[18*20+ 5] = 0.00; daa[18*20+ 6] = 22.00;
1749 daa[18*20+ 7] = 0.00; daa[18*20+ 8] = 127.00; daa[18*20+ 9] = 37.00; daa[18*20+10] = 28.00;
1750 daa[18*20+11] = 13.00; daa[18*20+12] = 0.00; daa[18*20+13] = 698.00; daa[18*20+14] = 0.00;
1751 daa[18*20+15] = 34.00; daa[18*20+16] = 42.00; daa[18*20+17] = 61.00; daa[19*20+ 0] = 208.00;
1752 daa[19*20+ 1] = 24.00; daa[19*20+ 2] = 15.00; daa[19*20+ 3] = 18.00; daa[19*20+ 4] = 49.00;
1753 daa[19*20+ 5] = 35.00; daa[19*20+ 6] = 37.00; daa[19*20+ 7] = 54.00; daa[19*20+ 8] = 44.00;
1754 daa[19*20+ 9] = 889.00; daa[19*20+10] = 175.00; daa[19*20+11] = 10.00; daa[19*20+12] = 258.00;
1755 daa[19*20+13] = 12.00; daa[19*20+14] = 48.00; daa[19*20+15] = 30.00; daa[19*20+16] = 157.00;
1756 daa[19*20+17] = 0.00; daa[19*20+18] = 28.00;
1757
1758 for (i=0; i<naa; i++) for (j=0; j<i; j++) daa[j*naa+i] = daa[i*naa+j];
1759
1760 pi[ 0] = 0.087127; pi[ 1] = 0.040904; pi[ 2] = 0.040432; pi[ 3] = 0.046872;
1761 pi[ 4] = 0.033474; pi[ 5] = 0.038255; pi[ 6] = 0.049530; pi[ 7] = 0.088612;
1762 pi[ 8] = 0.033618; pi[ 9] = 0.036886; pi[10] = 0.085357; pi[11] = 0.080482;
1763 pi[12] = 0.014753; pi[13] = 0.039772; pi[14] = 0.050680; pi[15] = 0.069577;
1764 pi[16] = 0.058542; pi[17] = 0.010494; pi[18] = 0.029916; pi[19] = 0.064718;
1765
1766
1767
1768 return 1;
1769 }
1770
1771 //////////////////////////////////////////////////////////////
1772 //////////////////////////////////////////////////////////////
1773
1774
Init_Qmat_DCMut(phydbl * daa,phydbl * pi)1775 int Init_Qmat_DCMut(phydbl *daa, phydbl *pi)
1776 {
1777 /*
1778 DCMut : new implementation based on Dayhoff et al.'s raw data and amino acid mutabilities
1779 C. Kosiol and N. Goldman. (2005),
1780 ``Different versions of the Dayhoff rate matrix'',
1781 Mol. Biol. Evol., 22. 193-199.
1782 */
1783
1784 int i,j,naa;
1785
1786 naa = 20;
1787
1788 daa[ 1*20+ 0] = 26.78280; daa[ 2*20+ 0] = 98.44740; daa[ 2*20+ 1] = 32.70590; daa[ 3*20+ 0] = 119.98050;
1789 daa[ 3*20+ 1] = 0.00000; daa[ 3*20+ 2] = 893.15150; daa[ 4*20+ 0] = 36.00160; daa[ 4*20+ 1] = 23.23740;
1790 daa[ 4*20+ 2] = 0.00000; daa[ 4*20+ 3] = 0.00000; daa[ 5*20+ 0] = 88.77530; daa[ 5*20+ 1] = 243.99390;
1791 daa[ 5*20+ 2] = 102.85090; daa[ 5*20+ 3] = 134.85510; daa[ 5*20+ 4] = 0.00000; daa[ 6*20+ 0] = 196.11670;
1792 daa[ 6*20+ 1] = 0.00000; daa[ 6*20+ 2] = 149.34090; daa[ 6*20+ 3] = 1138.86590; daa[ 6*20+ 4] = 0.00000;
1793 daa[ 6*20+ 5] = 708.60220; daa[ 7*20+ 0] = 238.61110; daa[ 7*20+ 1] = 8.77910; daa[ 7*20+ 2] = 138.53520;
1794 daa[ 7*20+ 3] = 124.09810; daa[ 7*20+ 4] = 10.72780; daa[ 7*20+ 5] = 28.15810; daa[ 7*20+ 6] = 81.19070;
1795 daa[ 8*20+ 0] = 22.81160; daa[ 8*20+ 1] = 238.31480; daa[ 8*20+ 2] = 529.00240; daa[ 8*20+ 3] = 86.82410;
1796 daa[ 8*20+ 4] = 28.27290; daa[ 8*20+ 5] = 601.16130; daa[ 8*20+ 6] = 43.94690; daa[ 8*20+ 7] = 10.68020;
1797 daa[ 9*20+ 0] = 65.34160; daa[ 9*20+ 1] = 63.26290; daa[ 9*20+ 2] = 76.80240; daa[ 9*20+ 3] = 23.92480;
1798 daa[ 9*20+ 4] = 43.80740; daa[ 9*20+ 5] = 18.03930; daa[ 9*20+ 6] = 60.95260; daa[ 9*20+ 7] = 0.00000;
1799 daa[ 9*20+ 8] = 7.69810; daa[10*20+ 0] = 40.64310; daa[10*20+ 1] = 15.49240; daa[10*20+ 2] = 34.11130;
1800 daa[10*20+ 3] = 0.00000; daa[10*20+ 4] = 0.00000; daa[10*20+ 5] = 73.07720; daa[10*20+ 6] = 11.28800;
1801 daa[10*20+ 7] = 7.15140; daa[10*20+ 8] = 44.35040; daa[10*20+ 9] = 255.66850; daa[11*20+ 0] = 25.86350;
1802 daa[11*20+ 1] = 461.01240; daa[11*20+ 2] = 314.83710; daa[11*20+ 3] = 71.69130; daa[11*20+ 4] = 0.00000;
1803 daa[11*20+ 5] = 151.90780; daa[11*20+ 6] = 83.00780; daa[11*20+ 7] = 26.76830; daa[11*20+ 8] = 27.04750;
1804 daa[11*20+ 9] = 46.08570; daa[11*20+10] = 18.06290; daa[12*20+ 0] = 71.78400; daa[12*20+ 1] = 89.63210;
1805 daa[12*20+ 2] = 0.00000; daa[12*20+ 3] = 0.00000; daa[12*20+ 4] = 0.00000; daa[12*20+ 5] = 112.74990;
1806 daa[12*20+ 6] = 30.48030; daa[12*20+ 7] = 17.03720; daa[12*20+ 8] = 0.00000; daa[12*20+ 9] = 333.27320;
1807 daa[12*20+10] = 523.01150; daa[12*20+11] = 241.17390; daa[13*20+ 0] = 18.36410; daa[13*20+ 1] = 13.69060;
1808 daa[13*20+ 2] = 13.85030; daa[13*20+ 3] = 0.00000; daa[13*20+ 4] = 0.00000; daa[13*20+ 5] = 0.00000;
1809 daa[13*20+ 6] = 0.00000; daa[13*20+ 7] = 15.34780; daa[13*20+ 8] = 47.59270; daa[13*20+ 9] = 195.19510;
1810 daa[13*20+10] = 156.51600; daa[13*20+11] = 0.00000; daa[13*20+12] = 92.18600; daa[14*20+ 0] = 248.59200;
1811 daa[14*20+ 1] = 102.83130; daa[14*20+ 2] = 41.92440; daa[14*20+ 3] = 13.39400; daa[14*20+ 4] = 18.75500;
1812 daa[14*20+ 5] = 152.61880; daa[14*20+ 6] = 50.70030; daa[14*20+ 7] = 34.71530; daa[14*20+ 8] = 93.37090;
1813 daa[14*20+ 9] = 11.91520; daa[14*20+10] = 31.62580; daa[14*20+11] = 33.54190; daa[14*20+12] = 17.02050;
1814 daa[14*20+13] = 11.05060; daa[15*20+ 0] = 405.18700; daa[15*20+ 1] = 153.15900; daa[15*20+ 2] = 488.58920;
1815 daa[15*20+ 3] = 95.60970; daa[15*20+ 4] = 159.83560; daa[15*20+ 5] = 56.18280; daa[15*20+ 6] = 79.39990;
1816 daa[15*20+ 7] = 232.22430; daa[15*20+ 8] = 35.36430; daa[15*20+ 9] = 24.79550; daa[15*20+10] = 17.14320;
1817 daa[15*20+11] = 95.45570; daa[15*20+12] = 61.99510; daa[15*20+13] = 45.99010; daa[15*20+14] = 242.72020;
1818 daa[16*20+ 0] = 368.03650; daa[16*20+ 1] = 26.57450; daa[16*20+ 2] = 227.16970; daa[16*20+ 3] = 66.09300;
1819 daa[16*20+ 4] = 16.23660; daa[16*20+ 5] = 52.56510; daa[16*20+ 6] = 34.01560; daa[16*20+ 7] = 30.66620;
1820 daa[16*20+ 8] = 22.63330; daa[16*20+ 9] = 190.07390; daa[16*20+10] = 33.10900; daa[16*20+11] = 135.05990;
1821 daa[16*20+12] = 103.15340; daa[16*20+13] = 13.66550; daa[16*20+14] = 78.28570; daa[16*20+15] = 543.66740;
1822 daa[17*20+ 0] = 0.00000; daa[17*20+ 1] = 200.13750; daa[17*20+ 2] = 22.49680; daa[17*20+ 3] = 0.00000;
1823 daa[17*20+ 4] = 0.00000; daa[17*20+ 5] = 0.00000; daa[17*20+ 6] = 0.00000; daa[17*20+ 7] = 0.00000;
1824 daa[17*20+ 8] = 27.05640; daa[17*20+ 9] = 0.00000; daa[17*20+10] = 46.17760; daa[17*20+11] = 0.00000;
1825 daa[17*20+12] = 0.00000; daa[17*20+13] = 76.23540; daa[17*20+14] = 0.00000; daa[17*20+15] = 74.08190;
1826 daa[17*20+16] = 0.00000; daa[18*20+ 0] = 24.41390; daa[18*20+ 1] = 7.80120; daa[18*20+ 2] = 94.69400;
1827 daa[18*20+ 3] = 0.00000; daa[18*20+ 4] = 95.31640; daa[18*20+ 5] = 0.00000; daa[18*20+ 6] = 21.47170;
1828 daa[18*20+ 7] = 0.00000; daa[18*20+ 8] = 126.54000; daa[18*20+ 9] = 37.48340; daa[18*20+10] = 28.65720;
1829 daa[18*20+11] = 13.21420; daa[18*20+12] = 0.00000; daa[18*20+13] = 695.26290; daa[18*20+14] = 0.00000;
1830 daa[18*20+15] = 33.62890; daa[18*20+16] = 41.78390; daa[18*20+17] = 60.80700; daa[19*20+ 0] = 205.95640;
1831 daa[19*20+ 1] = 24.03680; daa[19*20+ 2] = 15.80670; daa[19*20+ 3] = 17.83160; daa[19*20+ 4] = 48.46780;
1832 daa[19*20+ 5] = 34.69830; daa[19*20+ 6] = 36.72500; daa[19*20+ 7] = 53.81650; daa[19*20+ 8] = 43.87150;
1833 daa[19*20+ 9] = 881.00380; daa[19*20+10] = 174.51560; daa[19*20+11] = 10.38500; daa[19*20+12] = 256.59550;
1834 daa[19*20+13] = 12.36060; daa[19*20+14] = 48.50260; daa[19*20+15] = 30.38360; daa[19*20+16] = 156.19970;
1835 daa[19*20+17] = 0.00000; daa[19*20+18] = 27.93790;
1836
1837 for (i=0; i<naa; i++) for (j=0; j<i; j++) daa[j*naa+i] = daa[i*naa+j];
1838
1839 pi[ 0] = 0.087127; pi[ 1] = 0.040904; pi[ 2] = 0.040432; pi[ 3] = 0.046872;
1840 pi[ 4] = 0.033474; pi[ 5] = 0.038255; pi[ 6] = 0.049530; pi[ 7] = 0.088612;
1841 pi[ 8] = 0.033619; pi[ 9] = 0.036886; pi[10] = 0.085357; pi[11] = 0.080481;
1842 pi[12] = 0.014753; pi[13] = 0.039772; pi[14] = 0.050680; pi[15] = 0.069577;
1843 pi[16] = 0.058542; pi[17] = 0.010494; pi[18] = 0.029916; pi[19] = 0.064718;
1844
1845 return 1;
1846 }
1847
1848 //////////////////////////////////////////////////////////////
1849 //////////////////////////////////////////////////////////////
1850
1851
Init_Qmat_MtArt(phydbl * daa,phydbl * pi)1852 int Init_Qmat_MtArt(phydbl *daa, phydbl *pi) // Added by Federico Abascal
1853 {
1854 /*
1855 Federico Abascal, April 2005 (c).
1856
1857 This model has been derived from 36 artropoda mitochondrial genomes.
1858
1859 Each gene of the given species was aligned individually. Then, alignments of the whole set
1860 of 13 genes where concatenated and passed through GBlocks (Castresana, 2000, in JME) with
1861 parameters and output:
1862
1863 Minimum Number Of Sequences For A Conserved Position: 20
1864 Minimum Number Of Sequences For A Flanking Position: 32
1865 Maximum Number Of Contiguous Nonconserved Positions: 8
1866 Minimum Length Of A Block: 10
1867 Allowed Gap Positions: With Half
1868 Use Similarity Matrices: Yes
1869
1870 Flank positions of the 40 selected block(s)
1871 Flanks: [6 22] [26 44] [61 70] [77 143] [145 185] [208 236] [309 640]
1872 [644 802] [831 941] [956 966] [973 1062] [1085 1339] [1343 1702]
1873 [1754 1831] [1840 1911] [1916 1987] [2011 2038] [2097 2118] [2125 2143]
1874 [2179 2215] [2243 2268] [2277 2288] [2333 2347] [2476 2518] [2539 2558]
1875 [2600 2613] [2637 2672] [2738 2759] [2784 2839] [2882 2924] [2948 3097]
1876 [3113 3123] [3210 3235] [3239 3322] [3348 3392] [3406 3526] [3588 3617]
1877 [3660 3692] [3803 3830] [3909 3928]
1878
1879 New number of positions in MtArt-strict.phy.fasta-gb: <b> 2664 </b> (67% of the original 3933 positions)
1880
1881 The species included in the analysis were:
1882 Harpiosquilla harpax [NCBI_TaxID 287944]
1883 Ixodes uriae [NCBI_TaxID 59655]
1884 Heptathela hangzhouensis [NCBI_TaxID 216259]
1885 Triops longicaudatus [NCBI_TaxID 58777]
1886 Gryllotalpa orientalis [NCBI_TaxID 213494]
1887 lepidopsocid RS-2001 [NCBI_TaxID 159971]
1888 Locusta migratoria [NCBI_TaxID 7004]
1889 Drosophila yakuba [NCBI_TaxID 7245]
1890 Ostrinia furnacalis [NCBI_TaxID 93504]
1891 Megabalanus volcano [NCBI_TaxID 266495]
1892 Periplaneta fuliginosa [NCBI_TaxID 36977]
1893 Thermobia domestica [NCBI_TaxID 89055]
1894 Aleurochiton aceris [NCBI_TaxID 266942]
1895 Schizaphis graminum [NCBI_TaxID 13262]
1896 Pteronarcys princeps [NCBI_TaxID 285953]
1897 Aleurodicus dugesii [NCBI_TaxID 30099]
1898 Pollicipes polymerus [NCBI_TaxID 36137]
1899 Gomphiocephalus hodgsoni [NCBI_TaxID 221270]
1900 Habronattus oregonensis [NCBI_TaxID 130930]
1901 Speleonectes tulumensis [NCBI_TaxID 84346]
1902 Hutchinsoniella macracantha [NCBI_TaxID 84335]
1903 Haemaphysalis flava [NCBI_TaxID 181088]
1904 Scutigera coleoptrata [NCBI_TaxID 29022]
1905 Vargula hilgendorfii [NCBI_TaxID 6674]
1906 Tricholepidion gertschi [NCBI_TaxID 89825]
1907 Varroa destructor [NCBI_TaxID 109461]
1908 Bombyx mandarina [NCBI_TaxID 7092]
1909 Thyropygus sp. [NCBI_TaxID 174155]
1910 Tribolium castaneum [NCBI_TaxID 7070]
1911 Pagurus longicarpus [NCBI_TaxID 111067]
1912 Limulus polyphemus [NCBI_TaxID 6850]
1913 Tetrodontophora bielanensis [NCBI_TaxID 48717]
1914 Penaeus monodon [NCBI_TaxID 6687]
1915 Daphnia pulex [NCBI_TaxID 6669]
1916 Apis mellifera [NCBI_TaxID 7469]
1917 Anopheles gambiae [NCBI_TaxID 7165]
1918
1919 The topology used for inferring the model was:
1920 (((Daph_pulex,Trio_longi),((((((Aleu_aceri,Aleu_duges),Schi_grami),lepi_RS_20),
1921 ((((Ostr_furna,Bomb_manda),(Dros_yakub,Anop_gambi)),Apis_melli),Trib_casta)),
1922 ((Gryl_orien,Locu_migra),(Pter_princ,Peri_fulig))),(Tric_gerts,Ther_domes)),
1923 (Scut_coleo,Thyr_sp),Varg_hilge,Hutc_macra,((((Ixod_uriae,Haem_flava),Varr_destr),
1924 (Habr_orego,Hept_hangz)),Limu_polyp),(Poll_polym,Mega_volca),(Gomp_hodgs,Tetr_biela),
1925 ((Pagu_longi,Pena_monod),Harp_harpa),Spel_tulum));
1926
1927 Note this is not the ML topology but the consensus one (based on morphological data,
1928 phylogenetic reconstruction using nuclear genes, etc). Where relationships are
1929 not clear, a polytomy was introduced (it contains quite a lot of polytomies!).
1930
1931 The model was estimated using (the great and helpful) Ziheng Yang's Paml software package.
1932 A four-categorized gamma distribution was used to account for heterogeneity (alpha
1933 was estimated to be 0.47821). Sites with ambiguity data were taken into account.
1934
1935 If you would like the data related to this matrix, please contact fabascal@uvigo.es.
1936 Federico Abascal (c)2005.
1937 */
1938
1939 int i,j,naa;
1940 naa = 20;
1941 daa[1*20+ 0] = 0.2; daa[2*20+ 0] = 0.2; daa[2*20+ 1] = 0.2; daa[3*20+ 0] = 0.6;
1942 daa[3*20+ 1] = 4.3; daa[3*20+ 2] = 500.2; daa[4*20+ 0] = 253.5; daa[4*20+ 1] = 35.5;
1943 daa[4*20+ 2] = 98.2; daa[4*20+ 3] = 10.6; daa[5*20+ 0] = 0.2; daa[5*20+ 1] = 154.0;
1944 daa[5*20+ 2] = 261.8; daa[5*20+ 3] = 0.2; daa[5*20+ 4] = 0.2; daa[6*20+ 0] = 0.2;
1945 daa[6*20+ 1] = 0.2; daa[6*20+ 2] = 183.0; daa[6*20+ 3] = 861.8; daa[6*20+ 4] = 0.2;
1946 daa[6*20+ 5] = 261.6; daa[7*20+ 0] = 199.8; daa[7*20+ 1] = 0.2; daa[7*20+ 2] = 120.5;
1947 daa[7*20+ 3] = 12.5; daa[7*20+ 4] = 80.5; daa[7*20+ 5] = 2.6; daa[7*20+ 6] = 43.9;
1948 daa[8*20+ 0] = 0.2; daa[8*20+ 1] = 41.3; daa[8*20+ 2] = 179.5; daa[8*20+ 3] = 0.2;
1949 daa[8*20+ 4] = 12.4; daa[8*20+ 5] = 313.5; daa[8*20+ 6] = 15.2; daa[8*20+ 7] = 0.2;
1950 daa[9*20+ 0] = 25.7; daa[9*20+ 1] = 1.8; daa[9*20+ 2] = 21.3; daa[9*20+ 3] = 6.6;
1951 daa[9*20+ 4] = 63.0; daa[9*20+ 5] = 10.5; daa[9*20+ 6] = 6.8; daa[9*20+ 7] = 2.7;
1952 daa[9*20+ 8] = 0.2; daa[10*20+ 0] = 3.7; daa[10*20+ 1] = 1.8; daa[10*20+ 2] = 12.6;
1953 daa[10*20+ 3] = 1.2; daa[10*20+ 4] = 78.7; daa[10*20+ 5] = 16.3; daa[10*20+ 6] = 1.7;
1954 daa[10*20+ 7] = 1.4; daa[10*20+ 8] = 5.5; daa[10*20+ 9] = 514.5; daa[11*20+ 0] = 0.2;
1955 daa[11*20+ 1] = 208.6; daa[11*20+ 2] = 467.3; daa[11*20+ 3] = 1.7; daa[11*20+ 4] = 0.2;
1956 daa[11*20+ 5] = 349.3; daa[11*20+ 6] = 106.3; daa[11*20+ 7] = 0.2; daa[11*20+ 8] = 0.2;
1957 daa[11*20+ 9] = 3.5; daa[11*20+ 10] = 3.8; daa[12*20+ 0] = 120.6; daa[12*20+ 1] = 5.2;
1958 daa[12*20+ 2] = 78.8; daa[12*20+ 3] = 0.2; daa[12*20+ 4] = 312.3; daa[12*20+ 5] = 67.3;
1959 daa[12*20+ 6] = 0.2; daa[12*20+ 7] = 55.7; daa[12*20+ 8] = 0.2; daa[12*20+ 9] = 514.8;
1960 daa[12*20+ 10] = 885.5; daa[12*20+ 11] = 105.6; daa[13*20+ 0] = 13.1; daa[13*20+ 1] = 4.7;
1961 daa[13*20+ 2] = 19.7; daa[13*20+ 3] = 0.2; daa[13*20+ 4] = 184.1; daa[13*20+ 5] = 0.2;
1962 daa[13*20+ 6] = 0.2; daa[13*20+ 7] = 0.8; daa[13*20+ 8] = 13.8; daa[13*20+ 9] = 117.9;
1963 daa[13*20+ 10] = 262.6; daa[13*20+ 11] = 10.7; daa[13*20+ 12] = 321.6; daa[14*20+ 0] = 49.3;
1964 daa[14*20+ 1] = 0.2; daa[14*20+ 2] = 16.5; daa[14*20+ 3] = 0.2; daa[14*20+ 4] = 0.2;
1965 daa[14*20+ 5] = 39.3; daa[14*20+ 6] = 7.9; daa[14*20+ 7] = 0.2; daa[14*20+ 8] = 0.8;
1966 daa[14*20+ 9] = 0.2; daa[14*20+ 10] = 12.2; daa[14*20+ 11] = 16.8; daa[14*20+ 12] = 5.3;
1967 daa[14*20+ 13] = 14.6; daa[15*20+ 0] = 673.0; daa[15*20+ 1] = 2.7; daa[15*20+ 2] = 398.4;
1968 daa[15*20+ 3] = 44.4; daa[15*20+ 4] = 664.2; daa[15*20+ 5] = 52.4; daa[15*20+ 6] = 31.5;
1969 daa[15*20+ 7] = 226.0; daa[15*20+ 8] = 10.6; daa[15*20+ 9] = 7.2; daa[15*20+ 10] = 8.2;
1970 daa[15*20+ 11] = 144.2; daa[15*20+ 12] = 111.7; daa[15*20+ 13] = 36.1; daa[15*20+ 14] = 86.5;
1971 daa[16*20+ 0] = 243.9; daa[16*20+ 1] = 0.2; daa[16*20+ 2] = 165.9; daa[16*20+ 3] = 0.2;
1972 daa[16*20+ 4] = 182.8; daa[16*20+ 5] = 43.7; daa[16*20+ 6] = 43.4; daa[16*20+ 7] = 0.2;
1973 daa[16*20+ 8] = 18.6; daa[16*20+ 9] = 203.7; daa[16*20+ 10] = 47.8; daa[16*20+ 11] = 69.5;
1974 daa[16*20+ 12] = 288.6; daa[16*20+ 13] = 13.5; daa[16*20+ 14] = 46.8; daa[16*20+ 15] = 660.4;
1975 daa[17*20+ 0] = 0.2; daa[17*20+ 1] = 0.2; daa[17*20+ 2] = 7.7; daa[17*20+ 3] = 0.2;
1976 daa[17*20+ 4] = 21.6; daa[17*20+ 5] = 6.7; daa[17*20+ 6] = 11.0; daa[17*20+ 7] = 1.9;
1977 daa[17*20+ 8] = 0.2; daa[17*20+ 9] = 0.2; daa[17*20+ 10] = 21.1; daa[17*20+ 11] = 16.0;
1978 daa[17*20+ 12] = 70.7; daa[17*20+ 13] = 53.7; daa[17*20+ 14] = 0.2; daa[17*20+ 15] = 2.4;
1979 daa[17*20+ 16] = 0.2; daa[18*20+ 0] = 1.2; daa[18*20+ 1] = 3.9; daa[18*20+ 2] = 251.2;
1980 daa[18*20+ 3] = 0.2; daa[18*20+ 4] = 72.0; daa[18*20+ 5] = 86.7; daa[18*20+ 6] = 7.7;
1981 daa[18*20+ 7] = 8.6; daa[18*20+ 8] = 191.4; daa[18*20+ 9] = 12.3; daa[18*20+ 10] = 19.8;
1982 daa[18*20+ 11] = 117.1; daa[18*20+ 12] = 70.9; daa[18*20+ 13] = 791.6; daa[18*20+ 14] = 18.4;
1983 daa[18*20+ 15] = 30.5; daa[18*20+ 16] = 46.0; daa[18*20+ 17] = 37.7; daa[19*20+ 0] = 339.9;
1984 daa[19*20+ 1] = 0.2; daa[19*20+ 2] = 22.6; daa[19*20+ 3] = 0.2; daa[19*20+ 4] = 350.4;
1985 daa[19*20+ 5] = 0.2; daa[19*20+ 6] = 13.6; daa[19*20+ 7] = 2.6; daa[19*20+ 8] = 0.2;
1986 daa[19*20+ 9] = 1854.5; daa[19*20+ 10] = 84.7; daa[19*20+ 11] = 26.1; daa[19*20+ 12] = 281.3;
1987 daa[19*20+ 13] = 51.9; daa[19*20+ 14] = 31.7; daa[19*20+ 15] = 60.6; daa[19*20+ 16] = 544.1;
1988 daa[19*20+ 17] = 0.2; daa[19*20+ 18] = 1.6;
1989
1990 /* MtArt.old: esta es la MtArt que hice con 26 secuencias (2 outgroups) con una topologia incorrecta
1991 daa[1*20+ 0] = 0.2; daa[2*20+ 0] = 0.2; daa[2*20+ 1] = 8.0; daa[3*20+ 0] = 0.2;
1992 daa[3*20+ 1] = 0.2; daa[3*20+ 2] = 441.7; daa[4*20+ 0] = 287.9; daa[4*20+ 1] = 48.4;
1993 daa[4*20+ 2] = 82.4; daa[4*20+ 3] = 0.2; daa[5*20+ 0] = 0.2; daa[5*20+ 1] = 149.9;
1994 daa[5*20+ 2] = 278.6; daa[5*20+ 3] = 0.2; daa[5*20+ 4] = 21.7; daa[6*20+ 0] = 6.6;
1995 daa[6*20+ 1] = 0.2; daa[6*20+ 2] = 213.9; daa[6*20+ 3] = 760.8; daa[6*20+ 4] = 0.2;
1996 daa[6*20+ 5] = 292.9; daa[7*20+ 0] = 228.2; daa[7*20+ 1] = 0.2; daa[7*20+ 2] = 97.1;
1997 daa[7*20+ 3] = 10.4; daa[7*20+ 4] = 98.4; daa[7*20+ 5] = 4.0; daa[7*20+ 6] = 48.7;
1998 daa[8*20+ 0] = 0.2; daa[8*20+ 1] = 56.7; daa[8*20+ 2] = 156.4; daa[8*20+ 3] = 24.5;
1999 daa[8*20+ 4] = 15.5; daa[8*20+ 5] = 328.6; daa[8*20+ 6] = 7.0; daa[8*20+ 7] = 8.4;
2000 daa[9*20+ 0] = 26.4; daa[9*20+ 1] = 1.6; daa[9*20+ 2] = 40.1; daa[9*20+ 3] = 0.2;
2001 daa[9*20+ 4] = 22.1; daa[9*20+ 5] = 13.8; daa[9*20+ 6] = 0.2; daa[9*20+ 7] = 3.6;
2002 daa[9*20+ 8] = 0.2; daa[10*20+ 0] = 3.4; daa[10*20+ 1] = 0.6; daa[10*20+ 2] = 13.8;
2003 daa[10*20+ 3] = 0.7; daa[10*20+ 4] = 76.9; daa[10*20+ 5] = 12.1; daa[10*20+ 6] = 5.4;
2004 daa[10*20+ 7] = 2.5; daa[10*20+ 8] = 2.9; daa[10*20+ 9] = 542.6; daa[11*20+ 0] = 0.2;
2005 daa[11*20+ 1] = 240.2; daa[11*20+ 2] = 602.8; daa[11*20+ 3] = 35.5; daa[11*20+ 4] = 0.2;
2006 daa[11*20+ 5] = 357.6; daa[11*20+ 6] = 62.6; daa[11*20+ 7] = 0.2; daa[11*20+ 8] = 3.3;
2007 daa[11*20+ 9] = 0.2; daa[11*20+ 10] = 17.5; daa[12*20+ 0] = 119.0; daa[12*20+ 1] = 0.2;
2008 daa[12*20+ 2] = 91.4; daa[12*20+ 3] = 6.4; daa[12*20+ 4] = 332.3; daa[12*20+ 5] = 65.4;
2009 daa[12*20+ 6] = 0.2; daa[12*20+ 7] = 60.4; daa[12*20+ 8] = 2.4; daa[12*20+ 9] = 492.5;
2010 daa[12*20+ 10] = 815.8; daa[12*20+ 11] = 67.3; daa[13*20+ 0] = 8.2; daa[13*20+ 1] = 6.4;
2011 daa[13*20+ 2] = 31.5; daa[13*20+ 3] = 3.4; daa[13*20+ 4] = 174.4; daa[13*20+ 5] = 5.7;
2012 daa[13*20+ 6] = 5.7; daa[13*20+ 7] = 2.1; daa[13*20+ 8] = 11.0; daa[13*20+ 9] = 94.4;
2013 daa[13*20+ 10] = 243.3; daa[13*20+ 11] = 12.3; daa[13*20+ 12] = 357.8; daa[14*20+ 0] = 62.5;
2014 daa[14*20+ 1] = 0.4; daa[14*20+ 2] = 17.5; daa[14*20+ 3] = 0.2; daa[14*20+ 4] = 0.2;
2015 daa[14*20+ 5] = 48.6; daa[14*20+ 6] = 17.7; daa[14*20+ 7] = 2.7; daa[14*20+ 8] = 0.2;
2016 daa[14*20+ 9] = 0.2; daa[14*20+ 10] = 11.2; daa[14*20+ 11] = 21.7; daa[14*20+ 12] = 5.2;
2017 daa[14*20+ 13] = 12.6; daa[15*20+ 0] = 659.0; daa[15*20+ 1] = 5.2; daa[15*20+ 2] = 469.8;
2018 daa[15*20+ 3] = 52.3; daa[15*20+ 4] = 570.7; daa[15*20+ 5] = 47.8; daa[15*20+ 6] = 37.3;
2019 daa[15*20+ 7] = 227.8; daa[15*20+ 8] = 12.7; daa[15*20+ 9] = 12.3; daa[15*20+ 10] = 7.4;
2020 daa[15*20+ 11] = 189.0; daa[15*20+ 12] = 155.3; daa[15*20+ 13] = 43.8; daa[15*20+ 14] = 103.4;
2021 daa[16*20+ 0] = 276.4; daa[16*20+ 1] = 1.6; daa[16*20+ 2] = 175.6; daa[16*20+ 3] = 0.2;
2022 daa[16*20+ 4] = 96.2; daa[16*20+ 5] = 71.4; daa[16*20+ 6] = 37.4; daa[16*20+ 7] = 0.2;
2023 daa[16*20+ 8] = 14.2; daa[16*20+ 9] = 212.5; daa[16*20+ 10] = 38.5; daa[16*20+ 11] = 97.4;
2024 daa[16*20+ 12] = 254.7; daa[16*20+ 13] = 2.1; daa[16*20+ 14] = 41.6; daa[16*20+ 15] = 670.6;
2025 daa[17*20+ 0] = 6.2; daa[17*20+ 1] = 0.2; daa[17*20+ 2] = 0.2; daa[17*20+ 3] = 5.6;
2026 daa[17*20+ 4] = 0.2; daa[17*20+ 5] = 0.2; daa[17*20+ 6] = 3.1; daa[17*20+ 7] = 0.4;
2027 daa[17*20+ 8] = 0.2; daa[17*20+ 9] = 15.2; daa[17*20+ 10] = 11.5; daa[17*20+ 11] = 32.6;
2028 daa[17*20+ 12] = 82.4; daa[17*20+ 13] = 81.9; daa[17*20+ 14] = 0.2; daa[17*20+ 15] = 9.7;
2029 daa[17*20+ 16] = 0.2; daa[18*20+ 0] = 1.6; daa[18*20+ 1] = 7.7; daa[18*20+ 2] = 242.5;
2030 daa[18*20+ 3] = 0.2; daa[18*20+ 4] = 88.0; daa[18*20+ 5] = 93.1; daa[18*20+ 6] = 0.2;
2031 daa[18*20+ 7] = 6.0; daa[18*20+ 8] = 113.7; daa[18*20+ 9] = 22.1; daa[18*20+ 10] = 17.2;
2032 daa[18*20+ 11] = 138.5; daa[18*20+ 12] = 37.6; daa[18*20+ 13] = 770.2; daa[18*20+ 14] = 5.3;
2033 daa[18*20+ 15] = 25.0; daa[18*20+ 16] = 55.5; daa[18*20+ 17] = 69.3; daa[19*20+ 0] = 307.8;
2034 daa[19*20+ 1] = 2.2; daa[19*20+ 2] = 6.9; daa[19*20+ 3] = 0.2; daa[19*20+ 4] = 405.7;
2035 daa[19*20+ 5] = 0.8; daa[19*20+ 6] = 20.2; daa[19*20+ 7] = 5.7; daa[19*20+ 8] = 0.2;
2036 daa[19*20+ 9] = 1687.9; daa[19*20+ 10] = 49.4; daa[19*20+ 11] = 23.4; daa[19*20+ 12] = 329.9;
2037 daa[19*20+ 13] = 86.3; daa[19*20+ 14] = 27.3; daa[19*20+ 15] = 95.0; daa[19*20+ 16] = 443.0;
2038 daa[19*20+ 17] = 2.4; daa[19*20+ 18] = 0.2;
2039 3*/
2040 for (i=0; i<naa; i++) for (j=0; j<i; j++) daa[j*naa+i] = daa[i*naa+j];
2041
2042 pi[0] = 0.054116; pi[1] = 0.018227; pi[2] = 0.039903; pi[3] = 0.020160; pi[4] = 0.009709;
2043 pi[5] = 0.018781; pi[6] = 0.024289; pi[7] = 0.068183; pi[8] = 0.024518; pi[9] = 0.092639;
2044 pi[10] = 0.148658; pi[11] = 0.021718; pi[12] = 0.061453; pi[13] = 0.088668; pi[14] = 0.041826;
2045 pi[15] = 0.091030; pi[16] = 0.049194; pi[17] = 0.029786; pi[18] = 0.039443; pi[19] = 0.057701;
2046 /* pi[0] = 0.055505; pi[1] = 0.018320; pi[2] = 0.036614; pi[3] = 0.019517; pi[4] = 0.009878;
2047 pi[5] = 0.018732; pi[6] = 0.021591; pi[7] = 0.068414; pi[8] = 0.023638; pi[9] = 0.092558;
2048 pi[10] = 0.154697; pi[11] = 0.020168; pi[12] = 0.062033; pi[13] = 0.089433; pi[14] = 0.040642;
2049 pi[15] = 0.090298; pi[16] = 0.050134; pi[17] = 0.027693; pi[18] = 0.038448; pi[19] = 0.061687;
2050 */
2051 return 1;
2052 }
2053
2054 //////////////////////////////////////////////////////////////
2055 //////////////////////////////////////////////////////////////
2056
2057
Init_Qmat_HIVb(phydbl * daa,phydbl * pi)2058 int Init_Qmat_HIVb(phydbl *daa, phydbl *pi) //added by FEDE
2059 {
2060 /*
2061 Nickle DC, Heath L, Jensen MA, Gilbert PB, Mullins JI, Kosakovsky Pond SL.
2062 HIV-Specific Probabilistic Models of Protein Evolution.
2063 PLoS ONE. 2007 Jun 6;2:e503.
2064
2065 [thanks to Sergei L. Kosakovsky]
2066
2067 Translated from HYPHY to Phyml format by Federico Abascal.
2068 */
2069
2070 int i,j,naa;
2071 naa = 20;
2072
2073 daa[1*20+0]= 0.307507; daa[2*20+0]= 0.005; daa[2*20+1]= 0.295543; daa[3*20+0]= 1.45504;
2074 daa[3*20+1]= 0.005; daa[3*20+2]= 17.6612; daa[4*20+0]= 0.123758; daa[4*20+1]= 0.351721;
2075 daa[4*20+2]= 0.0860642; daa[4*20+3]= 0.005; daa[5*20+0]= 0.0551128; daa[5*20+1]= 3.4215;
2076 daa[5*20+2]= 0.672052; daa[5*20+3]= 0.005; daa[5*20+4]= 0.005; daa[6*20+0]= 1.48135;
2077 daa[6*20+1]= 0.0749218; daa[6*20+2]= 0.0792633; daa[6*20+3]= 10.5872; daa[6*20+4]= 0.005;
2078 daa[6*20+5]= 2.5602; daa[7*20+0]= 2.13536; daa[7*20+1]= 3.65345; daa[7*20+2]= 0.323401;
2079 daa[7*20+3]= 2.83806; daa[7*20+4]= 0.897871; daa[7*20+5]= 0.0619137; daa[7*20+6]= 3.92775;
2080 daa[8*20+0]= 0.0847613; daa[8*20+1]= 9.04044; daa[8*20+2]= 7.64585; daa[8*20+3]= 1.9169;
2081 daa[8*20+4]= 0.240073; daa[8*20+5]= 7.05545; daa[8*20+6]= 0.11974; daa[8*20+7]= 0.005;
2082 daa[9*20+0]= 0.005; daa[9*20+1]= 0.677289; daa[9*20+2]= 0.680565; daa[9*20+3]= 0.0176792;
2083 daa[9*20+4]= 0.005; daa[9*20+5]= 0.005; daa[9*20+6]= 0.00609079; daa[9*20+7]= 0.005;
2084 daa[9*20+8]= 0.103111; daa[10*20+0]= 0.215256; daa[10*20+1]= 0.701427; daa[10*20+2]= 0.005;
2085 daa[10*20+3]= 0.00876048; daa[10*20+4]= 0.129777; daa[10*20+5]= 1.49456; daa[10*20+6]= 0.005;
2086 daa[10*20+7]= 0.005; daa[10*20+8]= 1.74171; daa[10*20+9]= 5.95879; daa[11*20+0]= 0.005;
2087 daa[11*20+1]= 20.45; daa[11*20+2]= 7.90443; daa[11*20+3]= 0.005; daa[11*20+4]= 0.005;
2088 daa[11*20+5]= 6.54737; daa[11*20+6]= 4.61482; daa[11*20+7]= 0.521705; daa[11*20+8]= 0.005;
2089 daa[11*20+9]= 0.322319; daa[11*20+10]= 0.0814995; daa[12*20+0]= 0.0186643; daa[12*20+1]= 2.51394;
2090 daa[12*20+2]= 0.005; daa[12*20+3]= 0.005; daa[12*20+4]= 0.005; daa[12*20+5]= 0.303676;
2091 daa[12*20+6]= 0.175789; daa[12*20+7]= 0.005; daa[12*20+8]= 0.005; daa[12*20+9]= 11.2065;
2092 daa[12*20+10]= 5.31961; daa[12*20+11]= 1.28246; daa[13*20+0]= 0.0141269; daa[13*20+1]= 0.005;
2093 daa[13*20+2]= 0.005; daa[13*20+3]= 0.005; daa[13*20+4]= 9.29815; daa[13*20+5]= 0.005;
2094 daa[13*20+6]= 0.005; daa[13*20+7]= 0.291561; daa[13*20+8]= 0.145558; daa[13*20+9]= 3.39836;
2095 daa[13*20+10]= 8.52484; daa[13*20+11]= 0.0342658; daa[13*20+12]= 0.188025; daa[14*20+0]= 2.12217;
2096 daa[14*20+1]= 1.28355; daa[14*20+2]= 0.00739578; daa[14*20+3]= 0.0342658; daa[14*20+4]= 0.005;
2097 daa[14*20+5]= 4.47211; daa[14*20+6]= 0.0120226; daa[14*20+7]= 0.005; daa[14*20+8]= 2.45318;
2098 daa[14*20+9]= 0.0410593; daa[14*20+10]= 2.07757; daa[14*20+11]= 0.0313862; daa[14*20+12]= 0.005;
2099 daa[14*20+13]= 0.005; daa[15*20+0]= 2.46633; daa[15*20+1]= 3.4791; daa[15*20+2]= 13.1447;
2100 daa[15*20+3]= 0.52823; daa[15*20+4]= 4.69314; daa[15*20+5]= 0.116311; daa[15*20+6]= 0.005;
2101 daa[15*20+7]= 4.38041; daa[15*20+8]= 0.382747; daa[15*20+9]= 1.21803; daa[15*20+10]= 0.927656;
2102 daa[15*20+11]= 0.504111; daa[15*20+12]= 0.005; daa[15*20+13]= 0.956472; daa[15*20+14]= 5.37762;
2103 daa[16*20+0]= 15.9183; daa[16*20+1]= 2.86868; daa[16*20+2]= 6.88667; daa[16*20+3]= 0.274724;
2104 daa[16*20+4]= 0.739969; daa[16*20+5]= 0.243589; daa[16*20+6]= 0.289774; daa[16*20+7]= 0.369615;
2105 daa[16*20+8]= 0.711594; daa[16*20+9]= 8.61217; daa[16*20+10]= 0.0437673; daa[16*20+11]= 4.67142;
2106 daa[16*20+12]= 4.94026; daa[16*20+13]= 0.0141269; daa[16*20+14]= 2.01417; daa[16*20+15]= 8.93107;
2107 daa[17*20+0]= 0.005; daa[17*20+1]= 0.991338; daa[17*20+2]= 0.005; daa[17*20+3]= 0.005;
2108 daa[17*20+4]= 2.63277; daa[17*20+5]= 0.026656; daa[17*20+6]= 0.005; daa[17*20+7]= 1.21674;
2109 daa[17*20+8]= 0.0695179; daa[17*20+9]= 0.005; daa[17*20+10]= 0.748843; daa[17*20+11]= 0.005;
2110 daa[17*20+12]= 0.089078; daa[17*20+13]= 0.829343; daa[17*20+14]= 0.0444506; daa[17*20+15]= 0.0248728;
2111 daa[17*20+16]= 0.005; daa[18*20+0]= 0.005; daa[18*20+1]= 0.00991826; daa[18*20+2]= 1.76417;
2112 daa[18*20+3]= 0.674653; daa[18*20+4]= 7.57932; daa[18*20+5]= 0.113033; daa[18*20+6]= 0.0792633;
2113 daa[18*20+7]= 0.005; daa[18*20+8]= 18.6943; daa[18*20+9]= 0.148168; daa[18*20+10]= 0.111986;
2114 daa[18*20+11]= 0.005; daa[18*20+12]= 0.005; daa[18*20+13]= 15.34; daa[18*20+14]= 0.0304381;
2115 daa[18*20+15]= 0.648024; daa[18*20+16]= 0.105652; daa[18*20+17]= 1.28022; daa[19*20+0]= 7.61428;
2116 daa[19*20+1]= 0.0812454; daa[19*20+2]= 0.026656; daa[19*20+3]= 1.04793; daa[19*20+4]= 0.420027;
2117 daa[19*20+5]= 0.0209153; daa[19*20+6]= 1.02847; daa[19*20+7]= 0.953155; daa[19*20+8]= 0.005;
2118 daa[19*20+9]= 17.7389; daa[19*20+10]= 1.41036; daa[19*20+11]= 0.265829; daa[19*20+12]= 6.8532;
2119 daa[19*20+13]= 0.723274; daa[19*20+14]= 0.005; daa[19*20+15]= 0.0749218; daa[19*20+16]= 0.709226;
2120 daa[19*20+17]= 0.005; daa[19*20+18]= 0.0410593;
2121 for (i=0; i<naa; i++) for (j=0; j<i; j++) daa[j*naa+i] = daa[i*naa+j];
2122
2123 pi[0]= 0.060490222; pi[1]= 0.066039665; pi[2]= 0.044127815; pi[3]= 0.042109048;
2124 pi[4]= 0.020075899; pi[5]= 0.053606488; pi[6]= 0.071567447; pi[7]= 0.072308239;
2125 pi[8]= 0.022293943; pi[9]= 0.069730629; pi[10]= 0.098851122; pi[11]= 0.056968211;
2126 pi[12]= 0.019768318; pi[13]= 0.028809447; pi[14]= 0.046025282; pi[15]= 0.05060433;
2127 pi[16]= 0.053636813; pi[17]= 0.033011601; pi[18]= 0.028350243; pi[19]= 0.061625237;
2128 return 1;
2129 }
2130
2131 //////////////////////////////////////////////////////////////
2132 //////////////////////////////////////////////////////////////
2133
Init_Qmat_HIVw(phydbl * daa,phydbl * pi)2134 int Init_Qmat_HIVw(phydbl *daa, phydbl *pi)
2135 {
2136 /*
2137 Nickle DC, Heath L, Jensen MA, Gilbert PB, Mullins JI, Kosakovsky Pond SL.
2138 HIV-Specific Probabilistic Models of Protein Evolution.
2139 PLoS ONE. 2007 Jun 6;2:e503.
2140
2141 [thanks to Sergei L. Kosakovsky]
2142
2143 Translated from HYPHY to Phyml format by Federico Abascal.
2144 */
2145
2146 int i,j,naa;
2147 naa = 20;
2148
2149 daa[1*20+0]= 0.0744808; daa[2*20+0]= 0.617509; daa[2*20+1]= 0.16024; daa[3*20+0]= 4.43521;
2150 daa[3*20+1]= 0.0674539; daa[3*20+2]= 29.4087; daa[4*20+0]= 0.167653; daa[4*20+1]= 2.86364;
2151 daa[4*20+2]= 0.0604932; daa[4*20+3]= 0.005; daa[5*20+0]= 0.005; daa[5*20+1]= 10.6746;
2152 daa[5*20+2]= 0.342068; daa[5*20+3]= 0.005; daa[5*20+4]= 0.005; daa[6*20+0]= 5.56325;
2153 daa[6*20+1]= 0.0251632; daa[6*20+2]= 0.201526; daa[6*20+3]= 12.1233; daa[6*20+4]= 0.005;
2154 daa[6*20+5]= 3.20656; daa[7*20+0]= 1.8685; daa[7*20+1]= 13.4379; daa[7*20+2]= 0.0604932;
2155 daa[7*20+3]= 10.3969; daa[7*20+4]= 0.0489798; daa[7*20+5]= 0.0604932; daa[7*20+6]= 14.7801;
2156 daa[8*20+0]= 0.005; daa[8*20+1]= 6.84405; daa[8*20+2]= 8.59876; daa[8*20+3]= 2.31779;
2157 daa[8*20+4]= 0.005; daa[8*20+5]= 18.5465; daa[8*20+6]= 0.005; daa[8*20+7]= 0.005;
2158 daa[9*20+0]= 0.005; daa[9*20+1]= 1.34069; daa[9*20+2]= 0.987028; daa[9*20+3]= 0.145124;
2159 daa[9*20+4]= 0.005; daa[9*20+5]= 0.0342252; daa[9*20+6]= 0.0390512; daa[9*20+7]= 0.005;
2160 daa[9*20+8]= 0.005; daa[10*20+0]= 0.16024; daa[10*20+1]= 0.586757; daa[10*20+2]= 0.005;
2161 daa[10*20+3]= 0.005; daa[10*20+4]= 0.005; daa[10*20+5]= 2.89048; daa[10*20+6]= 0.129839;
2162 daa[10*20+7]= 0.0489798; daa[10*20+8]= 1.76382; daa[10*20+9]= 9.10246; daa[11*20+0]= 0.592784;
2163 daa[11*20+1]= 39.8897; daa[11*20+2]= 10.6655; daa[11*20+3]= 0.894313; daa[11*20+4]= 0.005;
2164 daa[11*20+5]= 13.0705; daa[11*20+6]= 23.9626; daa[11*20+7]= 0.279425; daa[11*20+8]= 0.22406;
2165 daa[11*20+9]= 0.817481; daa[11*20+10]= 0.005; daa[12*20+0]= 0.005; daa[12*20+1]= 3.28652;
2166 daa[12*20+2]= 0.201526; daa[12*20+3]= 0.005; daa[12*20+4]= 0.005; daa[12*20+5]= 0.005;
2167 daa[12*20+6]= 0.005; daa[12*20+7]= 0.0489798; daa[12*20+8]= 0.005; daa[12*20+9]= 17.3064;
2168 daa[12*20+10]= 11.3839; daa[12*20+11]= 4.09564; daa[13*20+0]= 0.597923; daa[13*20+1]= 0.005;
2169 daa[13*20+2]= 0.005; daa[13*20+3]= 0.005; daa[13*20+4]= 0.362959; daa[13*20+5]= 0.005;
2170 daa[13*20+6]= 0.005; daa[13*20+7]= 0.005; daa[13*20+8]= 0.005; daa[13*20+9]= 1.48288;
2171 daa[13*20+10]= 7.48781; daa[13*20+11]= 0.005; daa[13*20+12]= 0.005; daa[14*20+0]= 1.00981;
2172 daa[14*20+1]= 0.404723; daa[14*20+2]= 0.344848; daa[14*20+3]= 0.005; daa[14*20+4]= 0.005;
2173 daa[14*20+5]= 3.04502; daa[14*20+6]= 0.005; daa[14*20+7]= 0.005; daa[14*20+8]= 13.9444;
2174 daa[14*20+9]= 0.005; daa[14*20+10]= 9.83095; daa[14*20+11]= 0.111928; daa[14*20+12]= 0.005;
2175 daa[14*20+13]= 0.0342252; daa[15*20+0]= 8.5942; daa[15*20+1]= 8.35024; daa[15*20+2]= 14.5699;
2176 daa[15*20+3]= 0.427881; daa[15*20+4]= 1.12195; daa[15*20+5]= 0.16024; daa[15*20+6]= 0.005;
2177 daa[15*20+7]= 6.27966; daa[15*20+8]= 0.725157; daa[15*20+9]= 0.740091; daa[15*20+10]= 6.14396;
2178 daa[15*20+11]= 0.005; daa[15*20+12]= 0.392575; daa[15*20+13]= 4.27939; daa[15*20+14]= 14.249;
2179 daa[16*20+0]= 24.1422; daa[16*20+1]= 0.928203; daa[16*20+2]= 4.54206; daa[16*20+3]= 0.630395;
2180 daa[16*20+4]= 0.005; daa[16*20+5]= 0.203091; daa[16*20+6]= 0.458743; daa[16*20+7]= 0.0489798;
2181 daa[16*20+8]= 0.95956; daa[16*20+9]= 9.36345; daa[16*20+10]= 0.005; daa[16*20+11]= 4.04802;
2182 daa[16*20+12]= 7.41313; daa[16*20+13]= 0.114512; daa[16*20+14]= 4.33701; daa[16*20+15]= 6.34079;
2183 daa[17*20+0]= 0.005; daa[17*20+1]= 5.96564; daa[17*20+2]= 0.005; daa[17*20+3]= 0.005;
2184 daa[17*20+4]= 5.49894; daa[17*20+5]= 0.0443298; daa[17*20+6]= 0.005; daa[17*20+7]= 2.8258;
2185 daa[17*20+8]= 0.005; daa[17*20+9]= 0.005; daa[17*20+10]= 1.37031; daa[17*20+11]= 0.005;
2186 daa[17*20+12]= 0.005; daa[17*20+13]= 0.005; daa[17*20+14]= 0.005; daa[17*20+15]= 1.10156;
2187 daa[17*20+16]= 0.005; daa[18*20+0]= 0.005; daa[18*20+1]= 0.005; daa[18*20+2]= 5.06475;
2188 daa[18*20+3]= 2.28154; daa[18*20+4]= 8.34835; daa[18*20+5]= 0.005; daa[18*20+6]= 0.005;
2189 daa[18*20+7]= 0.005; daa[18*20+8]= 47.4889; daa[18*20+9]= 0.114512; daa[18*20+10]= 0.005;
2190 daa[18*20+11]= 0.005; daa[18*20+12]= 0.579198; daa[18*20+13]= 4.12728; daa[18*20+14]= 0.005;
2191 daa[18*20+15]= 0.933142; daa[18*20+16]= 0.490608; daa[18*20+17]= 0.005; daa[19*20+0]= 24.8094;
2192 daa[19*20+1]= 0.279425; daa[19*20+2]= 0.0744808; daa[19*20+3]= 2.91786; daa[19*20+4]= 0.005;
2193 daa[19*20+5]= 0.005; daa[19*20+6]= 2.19952; daa[19*20+7]= 2.79622; daa[19*20+8]= 0.827479;
2194 daa[19*20+9]= 24.8231; daa[19*20+10]= 2.95344; daa[19*20+11]= 0.128065; daa[19*20+12]= 14.7683;
2195 daa[19*20+13]= 2.28; daa[19*20+14]= 0.005; daa[19*20+15]= 0.862637; daa[19*20+16]= 0.005;
2196 daa[19*20+17]= 0.005; daa[19*20+18]= 1.35482;
2197 for (i=0; i<naa; i++) for (j=0; j<i; j++) daa[j*naa+i] = daa[i*naa+j];
2198
2199 pi[0]= 0.0377494; pi[1]= 0.057321; pi[2]= 0.0891129; pi[3]= 0.0342034;
2200 pi[4]= 0.0240105; pi[5]= 0.0437824; pi[6]= 0.0618606; pi[7]= 0.0838496;
2201 pi[8]= 0.0156076; pi[9]= 0.0983641; pi[10]= 0.0577867; pi[11]= 0.0641682;
2202 pi[12]= 0.0158419; pi[13]= 0.0422741; pi[14]= 0.0458601; pi[15]= 0.0550846;
2203 pi[16]= 0.0813774; pi[17]= 0.019597; pi[18]= 0.0205847; pi[19]= 0.0515639;
2204 return 1;
2205 }
2206
2207 //////////////////////////////////////////////////////////////
2208 //////////////////////////////////////////////////////////////
2209
Init_Qmat_JTT(phydbl * daa,phydbl * pi)2210 int Init_Qmat_JTT(phydbl *daa, phydbl *pi)
2211 {
2212 int i,j,naa;
2213
2214 /* JTT's model data
2215 * D.T.Jones, W.R.Taylor and J.M.Thornton
2216 * "The rapid generation of mutation data matrices from protein sequences"
2217 * CABIOS vol.8 no.3 1992 pp275-282
2218 */
2219
2220 naa = 20;
2221
2222 /* PhyML_Printf("\n\n. REMINDER : THIS IS NOT JTT !!!\n\n"); */
2223
2224
2225 /* daa[1*20 + 0] = 0.592439084; */
2226 /* daa[2*20 + 0] = 0.427686326; */
2227 /* daa[2*20 + 1] = 0.795121783; */
2228 /* daa[3*20 + 0] = 0.649119246; */
2229 /* daa[3*20 + 1] = 0.116285502; */
2230 /* daa[3*20 + 2] = 6.004659556; */
2231 /* daa[4*20 + 0] = 2.384113318; */
2232 /* daa[4*20 + 1] = 0.925080814; */
2233 /* daa[4*20 + 2] = 0.648459384; */
2234 /* daa[4*20 + 3] = 0.088632079; */
2235 /* daa[5*20 + 0] = 1.188499461; */
2236 /* daa[5*20 + 1] = 3.230029905; */
2237 /* daa[5*20 + 2] = 1.910660418; */
2238 /* daa[5*20 + 3] = 0.599639374; */
2239 /* daa[5*20 + 4] = 0.123291416; */
2240 /* daa[6*20 + 0] = 1.534092487; */
2241 /* daa[6*20 + 1] = 0.390654981; */
2242 /* daa[6*20 + 2] = 0.566472743; */
2243 /* daa[6*20 + 3] = 5.916482256; */
2244 /* daa[6*20 + 4] = 0.001457992; */
2245 /* daa[6*20 + 5] = 4.564894849; */
2246 /* daa[7*20 + 0] = 2.282012114; */
2247 /* daa[7*20 + 1] = 0.502549742; */
2248 /* daa[7*20 + 2] = 1.97013036; */
2249 /* daa[7*20 + 3] = 1.198016556; */
2250 /* daa[7*20 + 4] = 0.565245125; */
2251 /* daa[7*20 + 5] = 0.382529852; */
2252 /* daa[7*20 + 6] = 0.477515495; */
2253 /* daa[8*20 + 0] = 0.447587408; */
2254 /* daa[8*20 + 1] = 2.948365572; */
2255 /* daa[8*20 + 2] = 5.900694893; */
2256 /* daa[8*20 + 3] = 0.96157692; */
2257 /* daa[8*20 + 4] = 0.757153271; */
2258 /* daa[8*20 + 5] = 5.048587596; */
2259 /* daa[8*20 + 6] = 0.410583482; */
2260 /* daa[8*20 + 7] = 0.406115605; */
2261 /* daa[9*20 + 0] = 0.105337934; */
2262 /* daa[9*20 + 1] = 0.115421183; */
2263 /* daa[9*20 + 2] = 0.178948502; */
2264 /* daa[9*20 + 3] = 0.01319564; */
2265 /* daa[9*20 + 4] = 0.269637325; */
2266 /* daa[9*20 + 5] = 0.087618072; */
2267 /* daa[9*20 + 6] = 0.045232757; */
2268 /* daa[9*20 + 7] = 0.00958642; */
2269 /* daa[9*20 + 8] = 0.116145048; */
2270 /* daa[10*20 + 0] = 0.269460438; */
2271 /* daa[10*20 + 1] = 0.416549984; */
2272 /* daa[10*20 + 2] = 0.100490196; */
2273 /* daa[10*20 + 3] = 0.021637571; */
2274 /* daa[10*20 + 4] = 0.610442865; */
2275 /* daa[10*20 + 5] = 0.782347175; */
2276 /* daa[10*20 + 6] = 0.077565847; */
2277 /* daa[10*20 + 7] = 0.034916545; */
2278 /* daa[10*20 + 8] = 0.456334781; */
2279 /* daa[10*20 + 9] = 4.057302736; */
2280 /* daa[11*20 + 0] = 0.71706921; */
2281 /* daa[11*20 + 1] = 6.469532749; */
2282 /* daa[11*20 + 2] = 2.606469511; */
2283 /* daa[11*20 + 3] = 0.239488567; */
2284 /* daa[11*20 + 4] = 0.020594132; */
2285 /* daa[11*20 + 5] = 3.978479772; */
2286 /* daa[11*20 + 6] = 1.669092348; */
2287 /* daa[11*20 + 7] = 0.368262509; */
2288 /* daa[11*20 + 8] = 0.744835535; */
2289 /* daa[11*20 + 9] = 0.153626461; */
2290 /* daa[11*20 + 10] = 0.186106976; */
2291 /* daa[12*20 + 0] = 0.766271778; */
2292 /* daa[12*20 + 1] = 0.465902609; */
2293 /* daa[12*20 + 2] = 0.352429433; */
2294 /* daa[12*20 + 3] = 0.04670109; */
2295 /* daa[12*20 + 4] = 0.930016402; */
2296 /* daa[12*20 + 5] = 1.529072358; */
2297 /* daa[12*20 + 6] = 0.149497081; */
2298 /* daa[12*20 + 7] = 0.092795029; */
2299 /* daa[12*20 + 8] = 0.367452788; */
2300 /* daa[12*20 + 9] = 4.443975824; */
2301 /* daa[12*20 + 10] = 7.305963709; */
2302 /* daa[12*20 + 11] = 0.691067831; */
2303 /* daa[13*20 + 0] = 0.164314785; */
2304 /* daa[13*20 + 1] = 0.064046051; */
2305 /* daa[13*20 + 2] = 0.108166343; */
2306 /* daa[13*20 + 3] = 0.021096631; */
2307 /* daa[13*20 + 4] = 0.9869692; */
2308 /* daa[13*20 + 5] = 0.054959009; */
2309 /* daa[13*20 + 6] = 0.025919221; */
2310 /* daa[13*20 + 7] = 0.053577857; */
2311 /* daa[13*20 + 8] = 0.933637734; */
2312 /* daa[13*20 + 9] = 0.928915383; */
2313 /* daa[13*20 + 10] = 2.549658015; */
2314 /* daa[13*20 + 11] = 0.032602723; */
2315 /* daa[13*20 + 12] = 1.837397986; */
2316 /* daa[14*20 + 0] = 1.57937466; */
2317 /* daa[14*20 + 1] = 0.360749538; */
2318 /* daa[14*20 + 2] = 0.189183366; */
2319 /* daa[14*20 + 3] = 0.475387263; */
2320 /* daa[14*20 + 4] = 0.108255878; */
2321 /* daa[14*20 + 5] = 0.645294956; */
2322 /* daa[14*20 + 6] = 0.537278362; */
2323 /* daa[14*20 + 7] = 0.264516985; */
2324 /* daa[14*20 + 8] = 0.510062949; */
2325 /* daa[14*20 + 9] = 0.063380048; */
2326 /* daa[14*20 + 10] = 0.25549658; */
2327 /* daa[14*20 + 11] = 0.42259906; */
2328 /* daa[14*20 + 12] = 0.105330979; */
2329 /* daa[14*20 + 13] = 0.092650543; */
2330 /* daa[15*20 + 0] = 5.358849732; */
2331 /* daa[15*20 + 1] = 0.980362668; */
2332 /* daa[15*20 + 2] = 5.114953674; */
2333 /* daa[15*20 + 3] = 1.242898123; */
2334 /* daa[15*20 + 4] = 3.417258976; */
2335 /* daa[15*20 + 5] = 1.199117804; */
2336 /* daa[15*20 + 6] = 0.61024061; */
2337 /* daa[15*20 + 7] = 2.200746452; */
2338 /* daa[15*20 + 8] = 0.928717085; */
2339 /* daa[15*20 + 9] = 0.07737779; */
2340 /* daa[15*20 + 10] = 0.17657022; */
2341 /* daa[15*20 + 11] = 0.768621405; */
2342 /* daa[15*20 + 12] = 0.330215244; */
2343 /* daa[15*20 + 13] = 0.359985962; */
2344 /* daa[15*20 + 14] = 1.559718375; */
2345 /* daa[16*20 + 0] = 2.21115657; */
2346 /* daa[16*20 + 1] = 0.711040813; */
2347 /* daa[16*20 + 2] = 2.273163111; */
2348 /* daa[16*20 + 3] = 0.408851733; */
2349 /* daa[16*20 + 4] = 1.57572444; */
2350 /* daa[16*20 + 5] = 1.074674746; */
2351 /* daa[16*20 + 6] = 0.707096016; */
2352 /* daa[16*20 + 7] = 0.157418108; */
2353 /* daa[16*20 + 8] = 0.543088926; */
2354 /* daa[16*20 + 9] = 1.056024176; */
2355 /* daa[16*20 + 10] = 0.294118282; */
2356 /* daa[16*20 + 11] = 1.325676171; */
2357 /* daa[16*20 + 12] = 1.834248079; */
2358 /* daa[16*20 + 13] = 0.136987103; */
2359 /* daa[16*20 + 14] = 0.63778855; */
2360 /* daa[16*20 + 15] = 7.294506488; */
2361 /* daa[17*20 + 0] = 0.142106331; */
2362 /* daa[17*20 + 1] = 0.600995696; */
2363 /* daa[17*20 + 2] = 0.079481793; */
2364 /* daa[17*20 + 3] = 0.069125482; */
2365 /* daa[17*20 + 4] = 0.701931839; */
2366 /* daa[17*20 + 5] = 0.23881661; */
2367 /* daa[17*20 + 6] = 0.082469159; */
2368 /* daa[17*20 + 7] = 0.185722676; */
2369 /* daa[17*20 + 8] = 0.911694299; */
2370 /* daa[17*20 + 9] = 0.11679729; */
2371 /* daa[17*20 + 10] = 0.688555894; */
2372 /* daa[17*20 + 11] = 0.063328042; */
2373 /* daa[17*20 + 12] = 0.780079225; */
2374 /* daa[17*20 + 13] = 3.432193724; */
2375 /* daa[17*20 + 14] = 0.088827331; */
2376 /* daa[17*20 + 15] = 0.293602516; */
2377 /* daa[17*20 + 16] = 0.158083832; */
2378 /* daa[18*20 + 0] = 0.178618354; */
2379 /* daa[18*20 + 1] = 0.243634289; */
2380 /* daa[18*20 + 2] = 0.567657832; */
2381 /* daa[18*20 + 3] = 0.134890583; */
2382 /* daa[18*20 + 4] = 1.28093676; */
2383 /* daa[18*20 + 5] = 0.180560506; */
2384 /* daa[18*20 + 6] = 0.081426157; */
2385 /* daa[18*20 + 7] = 0.044067219; */
2386 /* daa[18*20 + 8] = 6.464181222; */
2387 /* daa[18*20 + 9] = 0.206728215; */
2388 /* daa[18*20 + 10] = 0.334379787; */
2389 /* daa[18*20 + 11] = 0.102051407; */
2390 /* daa[18*20 + 12] = 0.431775879; */
2391 /* daa[18*20 + 13] = 11.87781125; */
2392 /* daa[18*20 + 14] = 0.078070175; */
2393 /* daa[18*20 + 15] = 0.359969114; */
2394 /* daa[18*20 + 16] = 0.199064371; */
2395 /* daa[18*20 + 17] = 4.185797039; */
2396 /* daa[19*20 + 0] = 1.964727121; */
2397 /* daa[19*20 + 1] = 0.18579405; */
2398 /* daa[19*20 + 2] = 0.113068304; */
2399 /* daa[19*20 + 3] = 0.046258503; */
2400 /* daa[19*20 + 4] = 2.069983598; */
2401 /* daa[19*20 + 5] = 0.247259847; */
2402 /* daa[19*20 + 6] = 0.272991021; */
2403 /* daa[19*20 + 7] = 0.073432734; */
2404 /* daa[19*20 + 8] = 0.158879333; */
2405 /* daa[19*20 + 9] = 10.52590329; */
2406 /* daa[19*20 + 10] = 1.74812825; */
2407 /* daa[19*20 + 11] = 0.188152512; */
2408 /* daa[19*20 + 12] = 1.800124087; */
2409 /* daa[19*20 + 13] = 0.478606732; */
2410 /* daa[19*20 + 14] = 0.277216066; */
2411 /* daa[19*20 + 15] = 0.104728903; */
2412 /* daa[19*20 + 16] = 1.963379491; */
2413 /* daa[19*20 + 17] = 0.16552242; */
2414 /* daa[19*20 + 18] = 0.222040517; */
2415
2416 /* for (i=0; i<naa; i++) for (j=0; j<i; j++) daa[j*naa+i] = daa[i*naa+j]; */
2417
2418 /* pi[0] = 0.093862; */
2419 /* pi[1] = 0.05757; */
2420 /* pi[2] = 0.037017; */
2421 /* pi[3] = 0.060952; */
2422 /* pi[4] = 0.011004; */
2423 /* pi[5] = 0.044631; */
2424 /* pi[6] = 0.083648; */
2425 /* pi[7] = 0.053004; */
2426 /* pi[8] = 0.022528; */
2427 /* pi[9] = 0.060152; */
2428 /* pi[10] = 0.092314; */
2429 /* pi[11] = 0.065886; */
2430 /* pi[12] = 0.021075; */
2431 /* pi[13] = 0.033928; */
2432 /* pi[14] = 0.043333; */
2433 /* pi[15] = 0.052957; */
2434 /* pi[16] = 0.053465; */
2435 /* pi[17] = 0.00928; */
2436 /* pi[18] = 0.030025; */
2437 /* pi[19] = 0.073369; */
2438
2439 daa[ 1*20+ 0] = 58.00; daa[ 2*20+ 0] = 54.00; daa[ 2*20+ 1] = 45.00; daa[ 3*20+ 0] = 81.00;
2440 daa[ 3*20+ 1] = 16.00; daa[ 3*20+ 2] = 528.00; daa[ 4*20+ 0] = 56.00; daa[ 4*20+ 1] = 113.00;
2441 daa[ 4*20+ 2] = 34.00; daa[ 4*20+ 3] = 10.00; daa[ 5*20+ 0] = 57.00; daa[ 5*20+ 1] = 310.00;
2442 daa[ 5*20+ 2] = 86.00; daa[ 5*20+ 3] = 49.00; daa[ 5*20+ 4] = 9.00; daa[ 6*20+ 0] = 105.00;
2443 daa[ 6*20+ 1] = 29.00; daa[ 6*20+ 2] = 58.00; daa[ 6*20+ 3] = 767.00; daa[ 6*20+ 4] = 5.00;
2444 daa[ 6*20+ 5] = 323.00; daa[ 7*20+ 0] = 179.00; daa[ 7*20+ 1] = 137.00; daa[ 7*20+ 2] = 81.00;
2445 daa[ 7*20+ 3] = 130.00; daa[ 7*20+ 4] = 59.00; daa[ 7*20+ 5] = 26.00; daa[ 7*20+ 6] = 119.00;
2446 daa[ 8*20+ 0] = 27.00; daa[ 8*20+ 1] = 328.00; daa[ 8*20+ 2] = 391.00; daa[ 8*20+ 3] = 112.00;
2447 daa[ 8*20+ 4] = 69.00; daa[ 8*20+ 5] = 597.00; daa[ 8*20+ 6] = 26.00; daa[ 8*20+ 7] = 23.00;
2448 daa[ 9*20+ 0] = 36.00; daa[ 9*20+ 1] = 22.00; daa[ 9*20+ 2] = 47.00; daa[ 9*20+ 3] = 11.00;
2449 daa[ 9*20+ 4] = 17.00; daa[ 9*20+ 5] = 9.00; daa[ 9*20+ 6] = 12.00; daa[ 9*20+ 7] = 6.00;
2450 daa[ 9*20+ 8] = 16.00; daa[10*20+ 0] = 30.00; daa[10*20+ 1] = 38.00; daa[10*20+ 2] = 12.00;
2451 daa[10*20+ 3] = 7.00; daa[10*20+ 4] = 23.00; daa[10*20+ 5] = 72.00; daa[10*20+ 6] = 9.00;
2452 daa[10*20+ 7] = 6.00; daa[10*20+ 8] = 56.00; daa[10*20+ 9] = 229.00; daa[11*20+ 0] = 35.00;
2453 daa[11*20+ 1] = 646.00; daa[11*20+ 2] = 263.00; daa[11*20+ 3] = 26.00; daa[11*20+ 4] = 7.00;
2454 daa[11*20+ 5] = 292.00; daa[11*20+ 6] = 181.00; daa[11*20+ 7] = 27.00; daa[11*20+ 8] = 45.00;
2455 daa[11*20+ 9] = 21.00; daa[11*20+10] = 14.00; daa[12*20+ 0] = 54.00; daa[12*20+ 1] = 44.00;
2456 daa[12*20+ 2] = 30.00; daa[12*20+ 3] = 15.00; daa[12*20+ 4] = 31.00; daa[12*20+ 5] = 43.00;
2457 daa[12*20+ 6] = 18.00; daa[12*20+ 7] = 14.00; daa[12*20+ 8] = 33.00; daa[12*20+ 9] = 479.00;
2458 daa[12*20+10] = 388.00; daa[12*20+11] = 65.00; daa[13*20+ 0] = 15.00; daa[13*20+ 1] = 5.00;
2459 daa[13*20+ 2] = 10.00; daa[13*20+ 3] = 4.00; daa[13*20+ 4] = 78.00; daa[13*20+ 5] = 4.00;
2460 daa[13*20+ 6] = 5.00; daa[13*20+ 7] = 5.00; daa[13*20+ 8] = 40.00; daa[13*20+ 9] = 89.00;
2461 daa[13*20+10] = 248.00; daa[13*20+11] = 4.00; daa[13*20+12] = 43.00; daa[14*20+ 0] = 194.00;
2462 daa[14*20+ 1] = 74.00; daa[14*20+ 2] = 15.00; daa[14*20+ 3] = 15.00; daa[14*20+ 4] = 14.00;
2463 daa[14*20+ 5] = 164.00; daa[14*20+ 6] = 18.00; daa[14*20+ 7] = 24.00; daa[14*20+ 8] = 115.00;
2464 daa[14*20+ 9] = 10.00; daa[14*20+10] = 102.00; daa[14*20+11] = 21.00; daa[14*20+12] = 16.00;
2465 daa[14*20+13] = 17.00; daa[15*20+ 0] = 378.00; daa[15*20+ 1] = 101.00; daa[15*20+ 2] = 503.00;
2466 daa[15*20+ 3] = 59.00; daa[15*20+ 4] = 223.00; daa[15*20+ 5] = 53.00; daa[15*20+ 6] = 30.00;
2467 daa[15*20+ 7] = 201.00; daa[15*20+ 8] = 73.00; daa[15*20+ 9] = 40.00; daa[15*20+10] = 59.00;
2468 daa[15*20+11] = 47.00; daa[15*20+12] = 29.00; daa[15*20+13] = 92.00; daa[15*20+14] = 285.00;
2469 daa[16*20+ 0] = 475.00; daa[16*20+ 1] = 64.00; daa[16*20+ 2] = 232.00; daa[16*20+ 3] = 38.00;
2470 daa[16*20+ 4] = 42.00; daa[16*20+ 5] = 51.00; daa[16*20+ 6] = 32.00; daa[16*20+ 7] = 33.00;
2471 daa[16*20+ 8] = 46.00; daa[16*20+ 9] = 245.00; daa[16*20+10] = 25.00; daa[16*20+11] = 103.00;
2472 daa[16*20+12] = 226.00; daa[16*20+13] = 12.00; daa[16*20+14] = 118.00; daa[16*20+15] = 477.00;
2473 daa[17*20+ 0] = 9.00; daa[17*20+ 1] = 126.00; daa[17*20+ 2] = 8.00; daa[17*20+ 3] = 4.00;
2474 daa[17*20+ 4] = 115.00; daa[17*20+ 5] = 18.00; daa[17*20+ 6] = 10.00; daa[17*20+ 7] = 55.00;
2475 daa[17*20+ 8] = 8.00; daa[17*20+ 9] = 9.00; daa[17*20+10] = 52.00; daa[17*20+11] = 10.00;
2476 daa[17*20+12] = 24.00; daa[17*20+13] = 53.00; daa[17*20+14] = 6.00; daa[17*20+15] = 35.00;
2477 daa[17*20+16] = 12.00; daa[18*20+ 0] = 11.00; daa[18*20+ 1] = 20.00; daa[18*20+ 2] = 70.00;
2478 daa[18*20+ 3] = 46.00; daa[18*20+ 4] = 209.00; daa[18*20+ 5] = 24.00; daa[18*20+ 6] = 7.00;
2479 daa[18*20+ 7] = 8.00; daa[18*20+ 8] = 573.00; daa[18*20+ 9] = 32.00; daa[18*20+10] = 24.00;
2480 daa[18*20+11] = 8.00; daa[18*20+12] = 18.00; daa[18*20+13] = 536.00; daa[18*20+14] = 10.00;
2481 daa[18*20+15] = 63.00; daa[18*20+16] = 21.00; daa[18*20+17] = 71.00; daa[19*20+ 0] = 298.00;
2482 daa[19*20+ 1] = 17.00; daa[19*20+ 2] = 16.00; daa[19*20+ 3] = 31.00; daa[19*20+ 4] = 62.00;
2483 daa[19*20+ 5] = 20.00; daa[19*20+ 6] = 45.00; daa[19*20+ 7] = 47.00; daa[19*20+ 8] = 11.00;
2484 daa[19*20+ 9] = 961.00; daa[19*20+10] = 180.00; daa[19*20+11] = 14.00; daa[19*20+12] = 323.00;
2485 daa[19*20+13] = 62.00; daa[19*20+14] = 23.00; daa[19*20+15] = 38.00; daa[19*20+16] = 112.00;
2486 daa[19*20+17] = 25.00; daa[19*20+18] = 16.00;
2487
2488 for (i=0; i<naa; i++) for (j=0; j<i; j++) daa[j*naa+i] = daa[i*naa+j];
2489
2490 pi[ 0] = 0.076748; pi[ 1] = 0.051691; pi[ 2] = 0.042645; pi[ 3] = 0.051544;
2491 pi[ 4] = 0.019803; pi[ 5] = 0.040752; pi[ 6] = 0.061830; pi[ 7] = 0.073152;
2492 pi[ 8] = 0.022944; pi[ 9] = 0.053761; pi[10] = 0.091904; pi[11] = 0.058676;
2493 pi[12] = 0.023826; pi[13] = 0.040126; pi[14] = 0.050901; pi[15] = 0.068765;
2494 pi[16] = 0.058565; pi[17] = 0.014261; pi[18] = 0.032102; pi[19] = 0.066005;
2495
2496 return 1;
2497 }
2498
2499 //////////////////////////////////////////////////////////////
2500 //////////////////////////////////////////////////////////////
2501
2502
Init_Qmat_MtREV(phydbl * daa,phydbl * pi)2503 int Init_Qmat_MtREV(phydbl *daa, phydbl *pi)
2504 {
2505 /* J. Adachi and M. Hasegawa, ``Model of amino acid substitution in proteins
2506 encoded by mitochondrial DNA'' J. Mol. Evol. 42, 459 (1996) */
2507
2508 int i,j,naa;
2509
2510 naa = 20;
2511
2512
2513 daa[ 1*20+ 0] = 23.18; daa[ 2*20+ 0] = 26.95; daa[ 2*20+ 1] = 13.24; daa[ 3*20+ 0] = 17.67;
2514 daa[ 3*20+ 1] = 1.90; daa[ 3*20+ 2] = 794.38; daa[ 4*20+ 0] = 59.93; daa[ 4*20+ 1] = 103.33;
2515 daa[ 4*20+ 2] = 58.94; daa[ 4*20+ 3] = 1.90; daa[ 5*20+ 0] = 1.90; daa[ 5*20+ 1] = 220.99;
2516 daa[ 5*20+ 2] = 173.56; daa[ 5*20+ 3] = 55.28; daa[ 5*20+ 4] = 75.24; daa[ 6*20+ 0] = 9.77;
2517 daa[ 6*20+ 1] = 1.90; daa[ 6*20+ 2] = 63.05; daa[ 6*20+ 3] = 583.55; daa[ 6*20+ 4] = 1.90;
2518 daa[ 6*20+ 5] = 313.56; daa[ 7*20+ 0] = 120.71; daa[ 7*20+ 1] = 23.03; daa[ 7*20+ 2] = 53.30;
2519 daa[ 7*20+ 3] = 56.77; daa[ 7*20+ 4] = 30.71; daa[ 7*20+ 5] = 6.75; daa[ 7*20+ 6] = 28.28;
2520 daa[ 8*20+ 0] = 13.90; daa[ 8*20+ 1] = 165.23; daa[ 8*20+ 2] = 496.13; daa[ 8*20+ 3] = 113.99;
2521 daa[ 8*20+ 4] = 141.49; daa[ 8*20+ 5] = 582.40; daa[ 8*20+ 6] = 49.12; daa[ 8*20+ 7] = 1.90;
2522 daa[ 9*20+ 0] = 96.49; daa[ 9*20+ 1] = 1.90; daa[ 9*20+ 2] = 27.10; daa[ 9*20+ 3] = 4.34;
2523 daa[ 9*20+ 4] = 62.73; daa[ 9*20+ 5] = 8.34; daa[ 9*20+ 6] = 3.31; daa[ 9*20+ 7] = 5.98;
2524 daa[ 9*20+ 8] = 12.26; daa[10*20+ 0] = 25.46; daa[10*20+ 1] = 15.58; daa[10*20+ 2] = 15.16;
2525 daa[10*20+ 3] = 1.90; daa[10*20+ 4] = 25.65; daa[10*20+ 5] = 39.70; daa[10*20+ 6] = 1.90;
2526 daa[10*20+ 7] = 2.41; daa[10*20+ 8] = 11.49; daa[10*20+ 9] = 329.09; daa[11*20+ 0] = 8.36;
2527 daa[11*20+ 1] = 141.40; daa[11*20+ 2] = 608.70; daa[11*20+ 3] = 2.31; daa[11*20+ 4] = 1.90;
2528 daa[11*20+ 5] = 465.58; daa[11*20+ 6] = 313.86; daa[11*20+ 7] = 22.73; daa[11*20+ 8] = 127.67;
2529 daa[11*20+ 9] = 19.57; daa[11*20+10] = 14.88; daa[12*20+ 0] = 141.88; daa[12*20+ 1] = 1.90;
2530 daa[12*20+ 2] = 65.41; daa[12*20+ 3] = 1.90; daa[12*20+ 4] = 6.18; daa[12*20+ 5] = 47.37;
2531 daa[12*20+ 6] = 1.90; daa[12*20+ 7] = 1.90; daa[12*20+ 8] = 11.97; daa[12*20+ 9] = 517.98;
2532 daa[12*20+10] = 537.53; daa[12*20+11] = 91.37; daa[13*20+ 0] = 6.37; daa[13*20+ 1] = 4.69;
2533 daa[13*20+ 2] = 15.20; daa[13*20+ 3] = 4.98; daa[13*20+ 4] = 70.80; daa[13*20+ 5] = 19.11;
2534 daa[13*20+ 6] = 2.67; daa[13*20+ 7] = 1.90; daa[13*20+ 8] = 48.16; daa[13*20+ 9] = 84.67;
2535 daa[13*20+10] = 216.06; daa[13*20+11] = 6.44; daa[13*20+12] = 90.82; daa[14*20+ 0] = 54.31;
2536 daa[14*20+ 1] = 23.64; daa[14*20+ 2] = 73.31; daa[14*20+ 3] = 13.43; daa[14*20+ 4] = 31.26;
2537 daa[14*20+ 5] = 137.29; daa[14*20+ 6] = 12.83; daa[14*20+ 7] = 1.90; daa[14*20+ 8] = 60.97;
2538 daa[14*20+ 9] = 20.63; daa[14*20+10] = 40.10; daa[14*20+11] = 50.10; daa[14*20+12] = 18.84;
2539 daa[14*20+13] = 17.31; daa[15*20+ 0] = 387.86; daa[15*20+ 1] = 6.04; daa[15*20+ 2] = 494.39;
2540 daa[15*20+ 3] = 69.02; daa[15*20+ 4] = 277.05; daa[15*20+ 5] = 54.11; daa[15*20+ 6] = 54.71;
2541 daa[15*20+ 7] = 125.93; daa[15*20+ 8] = 77.46; daa[15*20+ 9] = 47.70; daa[15*20+10] = 73.61;
2542 daa[15*20+11] = 105.79; daa[15*20+12] = 111.16; daa[15*20+13] = 64.29; daa[15*20+14] = 169.90;
2543 daa[16*20+ 0] = 480.72; daa[16*20+ 1] = 2.08; daa[16*20+ 2] = 238.46; daa[16*20+ 3] = 28.01;
2544 daa[16*20+ 4] = 179.97; daa[16*20+ 5] = 94.93; daa[16*20+ 6] = 14.82; daa[16*20+ 7] = 11.17;
2545 daa[16*20+ 8] = 44.78; daa[16*20+ 9] = 368.43; daa[16*20+10] = 126.40; daa[16*20+11] = 136.33;
2546 daa[16*20+12] = 528.17; daa[16*20+13] = 33.85; daa[16*20+14] = 128.22; daa[16*20+15] = 597.21;
2547 daa[17*20+ 0] = 1.90; daa[17*20+ 1] = 21.95; daa[17*20+ 2] = 10.68; daa[17*20+ 3] = 19.86;
2548 daa[17*20+ 4] = 33.60; daa[17*20+ 5] = 1.90; daa[17*20+ 6] = 1.90; daa[17*20+ 7] = 10.92;
2549 daa[17*20+ 8] = 7.08; daa[17*20+ 9] = 1.90; daa[17*20+10] = 32.44; daa[17*20+11] = 24.00;
2550 daa[17*20+12] = 21.71; daa[17*20+13] = 7.84; daa[17*20+14] = 4.21; daa[17*20+15] = 38.58;
2551 daa[17*20+16] = 9.99; daa[18*20+ 0] = 6.48; daa[18*20+ 1] = 1.90; daa[18*20+ 2] = 191.36;
2552 daa[18*20+ 3] = 21.21; daa[18*20+ 4] = 254.77; daa[18*20+ 5] = 38.82; daa[18*20+ 6] = 13.12;
2553 daa[18*20+ 7] = 3.21; daa[18*20+ 8] = 670.14; daa[18*20+ 9] = 25.01; daa[18*20+10] = 44.15;
2554 daa[18*20+11] = 51.17; daa[18*20+12] = 39.96; daa[18*20+13] = 465.58; daa[18*20+14] = 16.21;
2555 daa[18*20+15] = 64.92; daa[18*20+16] = 38.73; daa[18*20+17] = 26.25; daa[19*20+ 0] = 195.06;
2556 daa[19*20+ 1] = 7.64; daa[19*20+ 2] = 1.90; daa[19*20+ 3] = 1.90; daa[19*20+ 4] = 1.90;
2557 daa[19*20+ 5] = 19.00; daa[19*20+ 6] = 21.14; daa[19*20+ 7] = 2.53; daa[19*20+ 8] = 1.90;
2558 daa[19*20+ 9] = 1222.94; daa[19*20+10] = 91.67; daa[19*20+11] = 1.90; daa[19*20+12] = 387.54;
2559 daa[19*20+13] = 6.35; daa[19*20+14] = 8.23; daa[19*20+15] = 1.90; daa[19*20+16] = 204.54;
2560 daa[19*20+17] = 5.37; daa[19*20+18] = 1.90;
2561
2562 for (i=0; i<naa; i++) for (j=0; j<i; j++) daa[j*naa+i] = daa[i*naa+j];
2563
2564 pi[ 0] = 0.072000; pi[ 1] = 0.019000; pi[ 2] = 0.039000; pi[ 3] = 0.019000;
2565 pi[ 4] = 0.006000; pi[ 5] = 0.025000; pi[ 6] = 0.024000; pi[ 7] = 0.056000;
2566 pi[ 8] = 0.028000; pi[ 9] = 0.088000; pi[10] = 0.169000; pi[11] = 0.023000;
2567 pi[12] = 0.054000; pi[13] = 0.061000; pi[14] = 0.054000; pi[15] = 0.072000;
2568 pi[16] = 0.086000; pi[17] = 0.029000; pi[18] = 0.033000; pi[19] = 0.043000;
2569
2570
2571 return 1;
2572 }
2573
2574
2575 //////////////////////////////////////////////////////////////
2576 //////////////////////////////////////////////////////////////
2577
Init_Qmat_FLU(phydbl * daa,phydbl * pi)2578 int Init_Qmat_FLU(phydbl *daa, phydbl *pi)
2579 {
2580 int i,j,naa;
2581
2582 /* FLU model
2583 * Cuong Cao Dang, Quang Si Le2, Olivier Gascuel and Vinh Sy Le
2584 * 'FLU, an amino acid substitution model for influenza proteins'
2585 */
2586
2587 naa = 20;
2588
2589 daa[ 1*20+ 0] = 0.138659; daa[ 2*20+ 0] = 0.053367; daa[ 2*20+ 1] = 0.161001; daa[ 3*20+ 0] = 0.584852;
2590 daa[ 3*20+ 1] = 0.006772; daa[ 3*20+ 2] = 7.737393; daa[ 4*20+ 0] = 0.026447; daa[ 4*20+ 1] = 0.167207;
2591 daa[ 4*20+ 2] = 0.000013; daa[ 4*20+ 3] = 0.014132; daa[ 5*20+ 0] = 0.353754; daa[ 5*20+ 1] = 3.292717;
2592 daa[ 5*20+ 2] = 0.530643; daa[ 5*20+ 3] = 0.145469; daa[ 5*20+ 4] = 0.002547; daa[ 6*20+ 0] = 1.484235;
2593 daa[ 6*20+ 1] = 0.124898; daa[ 6*20+ 2] = 0.061652; daa[ 6*20+ 3] = 5.370511; daa[ 6*20+ 4] = 0.000000;
2594 daa[ 6*20+ 5] = 1.195629; daa[ 7*20+ 0] = 1.132313; daa[ 7*20+ 1] = 1.190624; daa[ 7*20+ 2] = 0.322525;
2595 daa[ 7*20+ 3] = 1.934833; daa[ 7*20+ 4] = 0.116941; daa[ 7*20+ 5] = 0.108051; daa[ 7*20+ 6] = 1.593099;
2596 daa[ 8*20+ 0] = 0.214758; daa[ 8*20+ 1] = 1.879570; daa[ 8*20+ 2] = 1.387096; daa[ 8*20+ 3] = 0.887571;
2597 daa[ 8*20+ 4] = 0.021845; daa[ 8*20+ 5] = 5.330313; daa[ 8*20+ 6] = 0.256492; daa[ 8*20+ 7] = 0.058775;
2598 daa[ 9*20+ 0] = 0.149927; daa[ 9*20+ 1] = 0.246117; daa[ 9*20+ 2] = 0.218572; daa[ 9*20+ 3] = 0.014086;
2599 daa[ 9*20+ 4] = 0.001112; daa[ 9*20+ 5] = 0.028840; daa[ 9*20+ 6] = 0.014211; daa[ 9*20+ 7] = 0.000016;
2600 daa[ 9*20+ 8] = 0.243190; daa[10*20+ 0] = 0.023117; daa[10*20+ 1] = 0.296046; daa[10*20+ 2] = 0.000836;
2601 daa[10*20+ 3] = 0.005731; daa[10*20+ 4] = 0.005614; daa[10*20+ 5] = 1.020367; daa[10*20+ 6] = 0.016500;
2602 daa[10*20+ 7] = 0.006516; daa[10*20+ 8] = 0.321612; daa[10*20+ 9] = 3.512072; daa[11*20+ 0] = 0.474334;
2603 daa[11*20+ 1] = 15.300097; daa[11*20+ 2] = 2.646848; daa[11*20+ 3] = 0.290043; daa[11*20+ 4] = 0.000004;
2604 daa[11*20+ 5] = 2.559587; daa[11*20+ 6] = 3.881489; daa[11*20+ 7] = 0.264149; daa[11*20+ 8] = 0.347303;
2605 daa[11*20+ 9] = 0.227708; daa[11*20+10] = 0.129224; daa[12*20+ 0] = 0.058745; daa[12*20+ 1] = 0.890162;
2606 daa[12*20+ 2] = 0.005252; daa[12*20+ 3] = 0.041763; daa[12*20+ 4] = 0.111457; daa[12*20+ 5] = 0.190259;
2607 daa[12*20+ 6] = 0.313974; daa[12*20+ 7] = 0.001500; daa[12*20+ 8] = 0.001274; daa[12*20+ 9] = 9.017954;
2608 daa[12*20+10] = 6.746936; daa[12*20+11] = 1.331292; daa[13*20+ 0] = 0.080491; daa[13*20+ 1] = 0.016055;
2609 daa[13*20+ 2] = 0.000836; daa[13*20+ 3] = 0.000001; daa[13*20+ 4] = 0.104054; daa[13*20+ 5] = 0.032681;
2610 daa[13*20+ 6] = 0.001004; daa[13*20+ 7] = 0.001237; daa[13*20+ 8] = 0.119029; daa[13*20+ 9] = 1.463357;
2611 daa[13*20+10] = 2.986800; daa[13*20+11] = 0.319896; daa[13*20+12] = 0.279911; daa[14*20+ 0] = 0.659311;
2612 daa[14*20+ 1] = 0.154027; daa[14*20+ 2] = 0.036442; daa[14*20+ 3] = 0.188539; daa[14*20+ 4] = 0.000000;
2613 daa[14*20+ 5] = 0.712770; daa[14*20+ 6] = 0.319559; daa[14*20+ 7] = 0.038632; daa[14*20+ 8] = 0.924467;
2614 daa[14*20+ 9] = 0.080543; daa[14*20+10] = 0.634309; daa[14*20+11] = 0.195751; daa[14*20+12] = 0.056869;
2615 daa[14*20+13] = 0.007132; daa[15*20+ 0] = 3.011345; daa[15*20+ 1] = 0.950138; daa[15*20+ 2] = 3.881311;
2616 daa[15*20+ 3] = 0.338372; daa[15*20+ 4] = 0.336263; daa[15*20+ 5] = 0.487822; daa[15*20+ 6] = 0.307140;
2617 daa[15*20+ 7] = 1.585647; daa[15*20+ 8] = 0.580704; daa[15*20+ 9] = 0.290381; daa[15*20+10] = 0.570767;
2618 daa[15*20+11] = 0.283808; daa[15*20+12] = 0.007027; daa[15*20+13] = 0.996686; daa[15*20+14] = 2.087385;
2619 daa[16*20+ 0] = 5.418298; daa[16*20+ 1] = 0.183077; daa[16*20+ 2] = 2.140332; daa[16*20+ 3] = 0.135481;
2620 daa[16*20+ 4] = 0.011975; daa[16*20+ 5] = 0.602341; daa[16*20+ 6] = 0.280125; daa[16*20+ 7] = 0.018808;
2621 daa[16*20+ 8] = 0.368714; daa[16*20+ 9] = 2.904052; daa[16*20+10] = 0.044926; daa[16*20+11] = 1.526964;
2622 daa[16*20+12] = 2.031511; daa[16*20+13] = 0.000135; daa[16*20+14] = 0.542251; daa[16*20+15] = 2.206860;
2623 daa[17*20+ 0] = 0.195966; daa[17*20+ 1] = 1.369429; daa[17*20+ 2] = 0.000536; daa[17*20+ 3] = 0.000015;
2624 daa[17*20+ 4] = 0.094107; daa[17*20+ 5] = 0.044021; daa[17*20+ 6] = 0.155245; daa[17*20+ 7] = 0.196486;
2625 daa[17*20+ 8] = 0.022373; daa[17*20+ 9] = 0.032132; daa[17*20+10] = 0.431278; daa[17*20+11] = 0.000050;
2626 daa[17*20+12] = 0.070460; daa[17*20+13] = 0.814753; daa[17*20+14] = 0.000431; daa[17*20+15] = 0.099836;
2627 daa[17*20+16] = 0.207066; daa[18*20+ 0] = 0.018289; daa[18*20+ 1] = 0.099855; daa[18*20+ 2] = 0.373102;
2628 daa[18*20+ 3] = 0.525399; daa[18*20+ 4] = 0.601692; daa[18*20+ 5] = 0.072206; daa[18*20+ 6] = 0.104093;
2629 daa[18*20+ 7] = 0.074815; daa[18*20+ 8] = 6.448954; daa[18*20+ 9] = 0.273934; daa[18*20+10] = 0.340058;
2630 daa[18*20+11] = 0.012416; daa[18*20+12] = 0.874272; daa[18*20+13] = 5.393924; daa[18*20+14] = 0.000182;
2631 daa[18*20+15] = 0.392552; daa[18*20+16] = 0.124898; daa[18*20+17] = 0.427755; daa[19*20+ 0] = 3.532005;
2632 daa[19*20+ 1] = 0.103964; daa[19*20+ 2] = 0.010258; daa[19*20+ 3] = 0.297124; daa[19*20+ 4] = 0.054905;
2633 daa[19*20+ 5] = 0.406698; daa[19*20+ 6] = 0.285048; daa[19*20+ 7] = 0.337230; daa[19*20+ 8] = 0.098631;
2634 daa[19*20+ 9] = 14.394052; daa[19*20+10] = 0.890599; daa[19*20+11] = 0.073128; daa[19*20+12] = 4.904842;
2635 daa[19*20+13] = 0.592588; daa[19*20+14] = 0.058972; daa[19*20+15] = 0.088256; daa[19*20+16] = 0.654109;
2636 daa[19*20+17] = 0.256900; daa[19*20+18] = 0.167582;
2637
2638 for (i=0; i<naa; i++) for (j=0; j<i; j++) daa[j*naa+i] = daa[i*naa+j];
2639
2640 pi[0] = 0.047072; pi[1] = 0.050910; pi[2] = 0.074214; pi[3] = 0.047860; pi[4] = 0.025022; pi[5] = 0.033304; pi[6] = 0.054587; pi[7] = 0.076373; pi[8] = 0.019964; pi[9] = 0.067134; pi[10] = 0.071498; pi[11] = 0.056785; pi[12] = 0.018151; pi[13] = 0.030496; pi[14] = 0.050656; pi[15] = 0.088409; pi[16] = 0.074339; pi[17] = 0.018524; pi[18] = 0.031474; pi[19] = 0.063229;
2641
2642 return 1;
2643 }
2644
2645 //////////////////////////////////////////////////////////////
2646 //////////////////////////////////////////////////////////////
2647
Init_Qmat_LG(phydbl * daa,phydbl * pi)2648 int Init_Qmat_LG(phydbl *daa, phydbl *pi)
2649 {
2650 int i,j,naa;
2651
2652 /* LG model
2653 * Si Quang Le & Olivier Gascuel
2654 * 'An improved general amino-acid replacement matrix'
2655 */
2656
2657 naa = 20;
2658
2659 daa[ 1*20+ 0] = 0.425093; daa[ 2*20+ 0] = 0.276818; daa[ 2*20+ 1] = 0.751878; daa[ 3*20+ 0] = 0.395144;
2660 daa[ 3*20+ 1] = 0.123954; daa[ 3*20+ 2] = 5.076149; daa[ 4*20+ 0] = 2.489084; daa[ 4*20+ 1] = 0.534551;
2661 daa[ 4*20+ 2] = 0.528768; daa[ 4*20+ 3] = 0.062556; daa[ 5*20+ 0] = 0.969894; daa[ 5*20+ 1] = 2.807908;
2662 daa[ 5*20+ 2] = 1.695752; daa[ 5*20+ 3] = 0.523386; daa[ 5*20+ 4] = 0.084808; daa[ 6*20+ 0] = 1.038545;
2663 daa[ 6*20+ 1] = 0.363970; daa[ 6*20+ 2] = 0.541712; daa[ 6*20+ 3] = 5.243870; daa[ 6*20+ 4] = 0.003499;
2664 daa[ 6*20+ 5] = 4.128591; daa[ 7*20+ 0] = 2.066040; daa[ 7*20+ 1] = 0.390192; daa[ 7*20+ 2] = 1.437645;
2665 daa[ 7*20+ 3] = 0.844926; daa[ 7*20+ 4] = 0.569265; daa[ 7*20+ 5] = 0.267959; daa[ 7*20+ 6] = 0.348847;
2666 daa[ 8*20+ 0] = 0.358858; daa[ 8*20+ 1] = 2.426601; daa[ 8*20+ 2] = 4.509238; daa[ 8*20+ 3] = 0.927114;
2667 daa[ 8*20+ 4] = 0.640543; daa[ 8*20+ 5] = 4.813505; daa[ 8*20+ 6] = 0.423881; daa[ 8*20+ 7] = 0.311484;
2668 daa[ 9*20+ 0] = 0.149830; daa[ 9*20+ 1] = 0.126991; daa[ 9*20+ 2] = 0.191503; daa[ 9*20+ 3] = 0.010690;
2669 daa[ 9*20+ 4] = 0.320627; daa[ 9*20+ 5] = 0.072854; daa[ 9*20+ 6] = 0.044265; daa[ 9*20+ 7] = 0.008705;
2670 daa[ 9*20+ 8] = 0.108882; daa[10*20+ 0] = 0.395337; daa[10*20+ 1] = 0.301848; daa[10*20+ 2] = 0.068427;
2671 daa[10*20+ 3] = 0.015076; daa[10*20+ 4] = 0.594007; daa[10*20+ 5] = 0.582457; daa[10*20+ 6] = 0.069673;
2672 daa[10*20+ 7] = 0.044261; daa[10*20+ 8] = 0.366317; daa[10*20+ 9] = 4.145067; daa[11*20+ 0] = 0.536518;
2673 daa[11*20+ 1] = 6.326067; daa[11*20+ 2] = 2.145078; daa[11*20+ 3] = 0.282959; daa[11*20+ 4] = 0.013266;
2674 daa[11*20+ 5] = 3.234294; daa[11*20+ 6] = 1.807177; daa[11*20+ 7] = 0.296636; daa[11*20+ 8] = 0.697264;
2675 daa[11*20+ 9] = 0.159069; daa[11*20+10] = 0.137500; daa[12*20+ 0] = 1.124035; daa[12*20+ 1] = 0.484133;
2676 daa[12*20+ 2] = 0.371004; daa[12*20+ 3] = 0.025548; daa[12*20+ 4] = 0.893680; daa[12*20+ 5] = 1.672569;
2677 daa[12*20+ 6] = 0.173735; daa[12*20+ 7] = 0.139538; daa[12*20+ 8] = 0.442472; daa[12*20+ 9] = 4.273607;
2678 daa[12*20+10] = 6.312358; daa[12*20+11] = 0.656604; daa[13*20+ 0] = 0.253701; daa[13*20+ 1] = 0.052722;
2679 daa[13*20+ 2] = 0.089525; daa[13*20+ 3] = 0.017416; daa[13*20+ 4] = 1.105251; daa[13*20+ 5] = 0.035855;
2680 daa[13*20+ 6] = 0.018811; daa[13*20+ 7] = 0.089586; daa[13*20+ 8] = 0.682139; daa[13*20+ 9] = 1.112727;
2681 daa[13*20+10] = 2.592692; daa[13*20+11] = 0.023918; daa[13*20+12] = 1.798853; daa[14*20+ 0] = 1.177651;
2682 daa[14*20+ 1] = 0.332533; daa[14*20+ 2] = 0.161787; daa[14*20+ 3] = 0.394456; daa[14*20+ 4] = 0.075382;
2683 daa[14*20+ 5] = 0.624294; daa[14*20+ 6] = 0.419409; daa[14*20+ 7] = 0.196961; daa[14*20+ 8] = 0.508851;
2684 daa[14*20+ 9] = 0.078281; daa[14*20+10] = 0.249060; daa[14*20+11] = 0.390322; daa[14*20+12] = 0.099849;
2685 daa[14*20+13] = 0.094464; daa[15*20+ 0] = 4.727182; daa[15*20+ 1] = 0.858151; daa[15*20+ 2] = 4.008358;
2686 daa[15*20+ 3] = 1.240275; daa[15*20+ 4] = 2.784478; daa[15*20+ 5] = 1.223828; daa[15*20+ 6] = 0.611973;
2687 daa[15*20+ 7] = 1.739990; daa[15*20+ 8] = 0.990012; daa[15*20+ 9] = 0.064105; daa[15*20+10] = 0.182287;
2688 daa[15*20+11] = 0.748683; daa[15*20+12] = 0.346960; daa[15*20+13] = 0.361819; daa[15*20+14] = 1.338132;
2689 daa[16*20+ 0] = 2.139501; daa[16*20+ 1] = 0.578987; daa[16*20+ 2] = 2.000679; daa[16*20+ 3] = 0.425860;
2690 daa[16*20+ 4] = 1.143480; daa[16*20+ 5] = 1.080136; daa[16*20+ 6] = 0.604545; daa[16*20+ 7] = 0.129836;
2691 daa[16*20+ 8] = 0.584262; daa[16*20+ 9] = 1.033739; daa[16*20+10] = 0.302936; daa[16*20+11] = 1.136863;
2692 daa[16*20+12] = 2.020366; daa[16*20+13] = 0.165001; daa[16*20+14] = 0.571468; daa[16*20+15] = 6.472279;
2693 daa[17*20+ 0] = 0.180717; daa[17*20+ 1] = 0.593607; daa[17*20+ 2] = 0.045376; daa[17*20+ 3] = 0.029890;
2694 daa[17*20+ 4] = 0.670128; daa[17*20+ 5] = 0.236199; daa[17*20+ 6] = 0.077852; daa[17*20+ 7] = 0.268491;
2695 daa[17*20+ 8] = 0.597054; daa[17*20+ 9] = 0.111660; daa[17*20+10] = 0.619632; daa[17*20+11] = 0.049906;
2696 daa[17*20+12] = 0.696175; daa[17*20+13] = 2.457121; daa[17*20+14] = 0.095131; daa[17*20+15] = 0.248862;
2697 daa[17*20+16] = 0.140825; daa[18*20+ 0] = 0.218959; daa[18*20+ 1] = 0.314440; daa[18*20+ 2] = 0.612025;
2698 daa[18*20+ 3] = 0.135107; daa[18*20+ 4] = 1.165532; daa[18*20+ 5] = 0.257336; daa[18*20+ 6] = 0.120037;
2699 daa[18*20+ 7] = 0.054679; daa[18*20+ 8] = 5.306834; daa[18*20+ 9] = 0.232523; daa[18*20+10] = 0.299648;
2700 daa[18*20+11] = 0.131932; daa[18*20+12] = 0.481306; daa[18*20+13] = 7.803902; daa[18*20+14] = 0.089613;
2701 daa[18*20+15] = 0.400547; daa[18*20+16] = 0.245841; daa[18*20+17] = 3.151815; daa[19*20+ 0] = 2.547870;
2702 daa[19*20+ 1] = 0.170887; daa[19*20+ 2] = 0.083688; daa[19*20+ 3] = 0.037967; daa[19*20+ 4] = 1.959291;
2703 daa[19*20+ 5] = 0.210332; daa[19*20+ 6] = 0.245034; daa[19*20+ 7] = 0.076701; daa[19*20+ 8] = 0.119013;
2704 daa[19*20+ 9] = 10.649107; daa[19*20+10] = 1.702745; daa[19*20+11] = 0.185202; daa[19*20+12] = 1.898718;
2705 daa[19*20+13] = 0.654683; daa[19*20+14] = 0.296501; daa[19*20+15] = 0.098369; daa[19*20+16] = 2.188158;
2706 daa[19*20+17] = 0.189510; daa[19*20+18] = 0.249313;
2707
2708
2709 for (i=0; i<naa; i++) for (j=0; j<i; j++) daa[j*naa+i] = daa[i*naa+j];
2710
2711 pi[0] = 0.079066; pi[1] = 0.055941; pi[2] = 0.041977; pi[3] = 0.053052;
2712 pi[4] = 0.012937; pi[5] = 0.040767; pi[6] = 0.071586; pi[7] = 0.057337;
2713 pi[8] = 0.022355; pi[9] = 0.062157; pi[10] = 0.099081; pi[11] = 0.064600;
2714 pi[12] = 0.022951; pi[13] = 0.042302; pi[14] = 0.044040; pi[15] = 0.061197;
2715 pi[16] = 0.053287; pi[17] = 0.012066; pi[18] = 0.034155; pi[19] = 0.069147;
2716
2717 return 1;
2718 }
2719
2720 //////////////////////////////////////////////////////////////
2721 //////////////////////////////////////////////////////////////
2722
Init_Qmat_WAG(phydbl * daa,phydbl * pi)2723 int Init_Qmat_WAG(phydbl *daa, phydbl *pi)
2724 {
2725 int i,j,naa;
2726
2727 /* WAG's model data
2728 * Simon Whelan and Nick Goldman
2729 * 'A general empirical model of protein evolution derived from multiple
2730 * protein families using a maximum-likelihood approach'
2731 * MBE (2001) 18:691-699
2732 */
2733
2734
2735 naa = 20;
2736
2737 daa[ 1*20+ 0] = 55.15710; daa[ 2*20+ 0] = 50.98480; daa[ 2*20+ 1] = 63.53460;
2738 daa[ 3*20+ 0] = 73.89980; daa[ 3*20+ 1] = 14.73040; daa[ 3*20+ 2] = 542.94200;
2739 daa[ 4*20+ 0] = 102.70400; daa[ 4*20+ 1] = 52.81910; daa[ 4*20+ 2] = 26.52560;
2740 daa[ 4*20+ 3] = 3.02949; daa[ 5*20+ 0] = 90.85980; daa[ 5*20+ 1] = 303.55000;
2741 daa[ 5*20+ 2] = 154.36400; daa[ 5*20+ 3] = 61.67830; daa[ 5*20+ 4] = 9.88179;
2742 daa[ 6*20+ 0] = 158.28500; daa[ 6*20+ 1] = 43.91570; daa[ 6*20+ 2] = 94.71980;
2743 daa[ 6*20+ 3] = 617.41600; daa[ 6*20+ 4] = 2.13520; daa[ 6*20+ 5] = 546.94700;
2744 daa[ 7*20+ 0] = 141.67200; daa[ 7*20+ 1] = 58.46650; daa[ 7*20+ 2] = 112.55600;
2745 daa[ 7*20+ 3] = 86.55840; daa[ 7*20+ 4] = 30.66740; daa[ 7*20+ 5] = 33.00520;
2746 daa[ 7*20+ 6] = 56.77170; daa[ 8*20+ 0] = 31.69540; daa[ 8*20+ 1] = 213.71500;
2747 daa[ 8*20+ 2] = 395.62900; daa[ 8*20+ 3] = 93.06760; daa[ 8*20+ 4] = 24.89720;
2748 daa[ 8*20+ 5] = 429.41100; daa[ 8*20+ 6] = 57.00250; daa[ 8*20+ 7] = 24.94100;
2749 daa[ 9*20+ 0] = 19.33350; daa[ 9*20+ 1] = 18.69790; daa[ 9*20+ 2] = 55.42360;
2750 daa[ 9*20+ 3] = 3.94370; daa[ 9*20+ 4] = 17.01350; daa[ 9*20+ 5] = 11.39170;
2751 daa[ 9*20+ 6] = 12.73950; daa[ 9*20+ 7] = 3.04501; daa[ 9*20+ 8] = 13.81900;
2752 daa[10*20+ 0] = 39.79150; daa[10*20+ 1] = 49.76710; daa[10*20+ 2] = 13.15280;
2753 daa[10*20+ 3] = 8.48047; daa[10*20+ 4] = 38.42870; daa[10*20+ 5] = 86.94890;
2754 daa[10*20+ 6] = 15.42630; daa[10*20+ 7] = 6.13037; daa[10*20+ 8] = 49.94620;
2755 daa[10*20+ 9] = 317.09700; daa[11*20+ 0] = 90.62650; daa[11*20+ 1] = 535.14200;
2756 daa[11*20+ 2] = 301.20100; daa[11*20+ 3] = 47.98550; daa[11*20+ 4] = 7.40339;
2757 daa[11*20+ 5] = 389.49000; daa[11*20+ 6] = 258.44300; daa[11*20+ 7] = 37.35580;
2758 daa[11*20+ 8] = 89.04320; daa[11*20+ 9] = 32.38320; daa[11*20+10] = 25.75550;
2759 daa[12*20+ 0] = 89.34960; daa[12*20+ 1] = 68.31620; daa[12*20+ 2] = 19.82210;
2760 daa[12*20+ 3] = 10.37540; daa[12*20+ 4] = 39.04820; daa[12*20+ 5] = 154.52600;
2761 daa[12*20+ 6] = 31.51240; daa[12*20+ 7] = 17.41000; daa[12*20+ 8] = 40.41410;
2762 daa[12*20+ 9] = 425.74600; daa[12*20+10] = 485.40200; daa[12*20+11] = 93.42760;
2763 daa[13*20+ 0] = 21.04940; daa[13*20+ 1] = 10.27110; daa[13*20+ 2] = 9.61621;
2764 daa[13*20+ 3] = 4.67304; daa[13*20+ 4] = 39.80200; daa[13*20+ 5] = 9.99208;
2765 daa[13*20+ 6] = 8.11339; daa[13*20+ 7] = 4.99310; daa[13*20+ 8] = 67.93710;
2766 daa[13*20+ 9] = 105.94700; daa[13*20+10] = 211.51700; daa[13*20+11] = 8.88360;
2767 daa[13*20+12] = 119.06300; daa[14*20+ 0] = 143.85500; daa[14*20+ 1] = 67.94890;
2768 daa[14*20+ 2] = 19.50810; daa[14*20+ 3] = 42.39840; daa[14*20+ 4] = 10.94040;
2769 daa[14*20+ 5] = 93.33720; daa[14*20+ 6] = 68.23550; daa[14*20+ 7] = 24.35700;
2770 daa[14*20+ 8] = 69.61980; daa[14*20+ 9] = 9.99288; daa[14*20+10] = 41.58440;
2771 daa[14*20+11] = 55.68960; daa[14*20+12] = 17.13290; daa[14*20+13] = 16.14440;
2772 daa[15*20+ 0] = 337.07900; daa[15*20+ 1] = 122.41900; daa[15*20+ 2] = 397.42300;
2773 daa[15*20+ 3] = 107.17600; daa[15*20+ 4] = 140.76600; daa[15*20+ 5] = 102.88700;
2774 daa[15*20+ 6] = 70.49390; daa[15*20+ 7] = 134.18200; daa[15*20+ 8] = 74.01690;
2775 daa[15*20+ 9] = 31.94400; daa[15*20+10] = 34.47390; daa[15*20+11] = 96.71300;
2776 daa[15*20+12] = 49.39050; daa[15*20+13] = 54.59310; daa[15*20+14] = 161.32800;
2777 daa[16*20+ 0] = 212.11100; daa[16*20+ 1] = 55.44130; daa[16*20+ 2] = 203.00600;
2778 daa[16*20+ 3] = 37.48660; daa[16*20+ 4] = 51.29840; daa[16*20+ 5] = 85.79280;
2779 daa[16*20+ 6] = 82.27650; daa[16*20+ 7] = 22.58330; daa[16*20+ 8] = 47.33070;
2780 daa[16*20+ 9] = 145.81600; daa[16*20+10] = 32.66220; daa[16*20+11] = 138.69800;
2781 daa[16*20+12] = 151.61200; daa[16*20+13] = 17.19030; daa[16*20+14] = 79.53840;
2782 daa[16*20+15] = 437.80200; daa[17*20+ 0] = 11.31330; daa[17*20+ 1] = 116.39200;
2783 daa[17*20+ 2] = 7.19167; daa[17*20+ 3] = 12.97670; daa[17*20+ 4] = 71.70700;
2784 daa[17*20+ 5] = 21.57370; daa[17*20+ 6] = 15.65570; daa[17*20+ 7] = 33.69830;
2785 daa[17*20+ 8] = 26.25690; daa[17*20+ 9] = 21.24830; daa[17*20+10] = 66.53090;
2786 daa[17*20+11] = 13.75050; daa[17*20+12] = 51.57060; daa[17*20+13] = 152.96400;
2787 daa[17*20+14] = 13.94050; daa[17*20+15] = 52.37420; daa[17*20+16] = 11.08640;
2788 daa[18*20+ 0] = 24.07350; daa[18*20+ 1] = 38.15330; daa[18*20+ 2] = 108.60000;
2789 daa[18*20+ 3] = 32.57110; daa[18*20+ 4] = 54.38330; daa[18*20+ 5] = 22.77100;
2790 daa[18*20+ 6] = 19.63030; daa[18*20+ 7] = 10.36040; daa[18*20+ 8] = 387.34400;
2791 daa[18*20+ 9] = 42.01700; daa[18*20+10] = 39.86180; daa[18*20+11] = 13.32640;
2792 daa[18*20+12] = 42.84370; daa[18*20+13] = 645.42800; daa[18*20+14] = 21.60460;
2793 daa[18*20+15] = 78.69930; daa[18*20+16] = 29.11480; daa[18*20+17] = 248.53900;
2794 daa[19*20+ 0] = 200.60100; daa[19*20+ 1] = 25.18490; daa[19*20+ 2] = 19.62460;
2795 daa[19*20+ 3] = 15.23350; daa[19*20+ 4] = 100.21400; daa[19*20+ 5] = 30.12810;
2796 daa[19*20+ 6] = 58.87310; daa[19*20+ 7] = 18.72470; daa[19*20+ 8] = 11.83580;
2797 daa[19*20+ 9] = 782.13000; daa[19*20+10] = 180.03400; daa[19*20+11] = 30.54340;
2798 daa[19*20+12] = 205.84500; daa[19*20+13] = 64.98920; daa[19*20+14] = 31.48870;
2799 daa[19*20+15] = 23.27390; daa[19*20+16] = 138.82300; daa[19*20+17] = 36.53690;
2800 daa[19*20+18] = 31.47300;
2801
2802 for (i=0; i<naa; i++) for (j=0; j<i; j++) daa[j*naa+i] = daa[i*naa+j];
2803
2804 pi[0] = 0.0866279; pi[1] = 0.043972; pi[2] = 0.0390894; pi[3] = 0.0570451;
2805 pi[4] = 0.0193078; pi[5] = 0.0367281; pi[6] = 0.0580589; pi[7] = 0.0832518;
2806 pi[8] = 0.0244313; pi[9] = 0.048466; pi[10] = 0.086209; pi[11] = 0.0620286;
2807 pi[12] = 0.0195027; pi[13] = 0.0384319; pi[14] = 0.0457631; pi[15] = 0.0695179;
2808 pi[16] = 0.0610127; pi[17] = 0.0143859; pi[18] = 0.0352742; pi[19] = 0.0708956;
2809
2810
2811 return 1;
2812 }
2813
2814 //////////////////////////////////////////////////////////////
2815 //////////////////////////////////////////////////////////////
2816
2817
Init_Qmat_RtREV(phydbl * daa,phydbl * pi)2818 int Init_Qmat_RtREV(phydbl *daa, phydbl *pi)
2819 {
2820 /*
2821 This model has been 'translated' from John Huelsenbeck and Fredrik Ronquist
2822 MrBayes program into PHYML format by Federico Abascal. Many thanks to them.
2823 */
2824
2825 /*
2826 Dimmic M.W., J.S. Rest, D.P. Mindell, and D. Goldstein. 2002. RArtREV:
2827 An amino acid substitution matrix for inference of retrovirus and
2828 reverse transcriptase phylogeny. Journal of Molecular Evolution
2829 55: 65-73.
2830 */
2831
2832 int i,j,naa;
2833 naa = 20;
2834
2835 daa[1*20+0]= 34; daa[2*20+0]= 51; daa[2*20+1]= 35; daa[3*20+0]= 10;
2836 daa[3*20+1]= 30; daa[3*20+2]= 384; daa[4*20+0]= 439; daa[4*20+1]= 92;
2837 daa[4*20+2]= 128; daa[4*20+3]= 1; daa[5*20+0]= 32; daa[5*20+1]= 221;
2838 daa[5*20+2]= 236; daa[5*20+3]= 78; daa[5*20+4]= 70; daa[6*20+0]= 81;
2839 daa[6*20+1]= 10; daa[6*20+2]= 79; daa[6*20+3]= 542; daa[6*20+4]= 1;
2840 daa[6*20+5]= 372; daa[7*20+0]= 135; daa[7*20+1]= 41; daa[7*20+2]= 94;
2841 daa[7*20+3]= 61; daa[7*20+4]= 48; daa[7*20+5]= 18; daa[7*20+6]= 70;
2842 daa[8*20+0]= 30; daa[8*20+1]= 90; daa[8*20+2]= 320; daa[8*20+3]= 91;
2843 daa[8*20+4]= 124; daa[8*20+5]= 387; daa[8*20+6]= 34; daa[8*20+7]= 68;
2844 daa[9*20+0]= 1; daa[9*20+1]= 24; daa[9*20+2]= 35; daa[9*20+3]= 1;
2845 daa[9*20+4]= 104; daa[9*20+5]= 33; daa[9*20+6]= 1; daa[9*20+7]= 1;
2846 daa[9*20+8]= 34; daa[10*20+0]= 45; daa[10*20+1]= 18; daa[10*20+2]= 15;
2847 daa[10*20+3]= 5; daa[10*20+4]= 110; daa[10*20+5]= 54; daa[10*20+6]= 21;
2848 daa[10*20+7]= 3; daa[10*20+8]= 51; daa[10*20+9]= 385; daa[11*20+0]= 38;
2849 daa[11*20+1]= 593; daa[11*20+2]= 123; daa[11*20+3]= 20; daa[11*20+4]= 16;
2850 daa[11*20+5]= 309; daa[11*20+6]= 141; daa[11*20+7]= 30; daa[11*20+8]= 76;
2851 daa[11*20+9]= 34; daa[11*20+10]= 23; daa[12*20+0]= 235; daa[12*20+1]= 57;
2852 daa[12*20+2]= 1; daa[12*20+3]= 1; daa[12*20+4]= 156; daa[12*20+5]= 158;
2853 daa[12*20+6]= 1; daa[12*20+7]= 37; daa[12*20+8]= 116; daa[12*20+9]= 375;
2854 daa[12*20+10]= 581; daa[12*20+11]= 134; daa[13*20+0]= 1; daa[13*20+1]= 7;
2855 daa[13*20+2]= 49; daa[13*20+3]= 1; daa[13*20+4]= 70; daa[13*20+5]= 1;
2856 daa[13*20+6]= 1; daa[13*20+7]= 7; daa[13*20+8]= 141; daa[13*20+9]= 64;
2857 daa[13*20+10]= 179; daa[13*20+11]= 14; daa[13*20+12]= 247; daa[14*20+0]= 97;
2858 daa[14*20+1]= 24; daa[14*20+2]= 33; daa[14*20+3]= 55; daa[14*20+4]= 1;
2859 daa[14*20+5]= 68; daa[14*20+6]= 52; daa[14*20+7]= 17; daa[14*20+8]= 44;
2860 daa[14*20+9]= 10; daa[14*20+10]= 22; daa[14*20+11]= 43; daa[14*20+12]= 1;
2861 daa[14*20+13]= 11; daa[15*20+0]= 460; daa[15*20+1]= 102; daa[15*20+2]= 294;
2862 daa[15*20+3]= 136; daa[15*20+4]= 75; daa[15*20+5]= 225; daa[15*20+6]= 95;
2863 daa[15*20+7]= 152; daa[15*20+8]= 183; daa[15*20+9]= 4; daa[15*20+10]= 24;
2864 daa[15*20+11]= 77; daa[15*20+12]= 1; daa[15*20+13]= 20; daa[15*20+14]= 134;
2865 daa[16*20+0]= 258; daa[16*20+1]= 64; daa[16*20+2]= 148; daa[16*20+3]= 55;
2866 daa[16*20+4]= 117; daa[16*20+5]= 146; daa[16*20+6]= 82; daa[16*20+7]= 7;
2867 daa[16*20+8]= 49; daa[16*20+9]= 72; daa[16*20+10]= 25; daa[16*20+11]= 110;
2868 daa[16*20+12]= 131; daa[16*20+13]= 69; daa[16*20+14]= 62; daa[16*20+15]= 671;
2869 daa[17*20+0]= 5; daa[17*20+1]= 13; daa[17*20+2]= 16; daa[17*20+3]= 1;
2870 daa[17*20+4]= 55; daa[17*20+5]= 10; daa[17*20+6]= 17; daa[17*20+7]= 23;
2871 daa[17*20+8]= 48; daa[17*20+9]= 39; daa[17*20+10]= 47; daa[17*20+11]= 6;
2872 daa[17*20+12]= 111; daa[17*20+13]= 182; daa[17*20+14]= 9; daa[17*20+15]= 14;
2873 daa[17*20+16]= 1; daa[18*20+0]= 55; daa[18*20+1]= 47; daa[18*20+2]= 28;
2874 daa[18*20+3]= 1; daa[18*20+4]= 131; daa[18*20+5]= 45; daa[18*20+6]= 1;
2875 daa[18*20+7]= 21; daa[18*20+8]= 307; daa[18*20+9]= 26; daa[18*20+10]= 64;
2876 daa[18*20+11]= 1; daa[18*20+12]= 74; daa[18*20+13]= 1017; daa[18*20+14]= 14;
2877 daa[18*20+15]= 31; daa[18*20+16]= 34; daa[18*20+17]= 176; daa[19*20+0]= 197;
2878 daa[19*20+1]= 29; daa[19*20+2]= 21; daa[19*20+3]= 6; daa[19*20+4]= 295;
2879 daa[19*20+5]= 36; daa[19*20+6]= 35; daa[19*20+7]= 3; daa[19*20+8]= 1;
2880 daa[19*20+9]= 1048; daa[19*20+10]= 112; daa[19*20+11]= 19; daa[19*20+12]= 236;
2881 daa[19*20+13]= 92; daa[19*20+14]= 25; daa[19*20+15]= 39; daa[19*20+16]= 196;
2882 daa[19*20+17]= 26; daa[19*20+18]= 59;
2883
2884 for (i=0; i<naa; i++) for (j=0; j<i; j++) daa[j*naa+i] = daa[i*naa+j];
2885
2886 pi[0]= 0.0646; pi[1]= 0.0453; pi[2]= 0.0376; pi[3]= 0.0422;
2887 pi[4]= 0.0114; pi[5]= 0.0606; pi[6]= 0.0607; pi[7]= 0.0639;
2888 pi[8]= 0.0273; pi[9]= 0.0679; pi[10]= 0.1018; pi[11]= 0.0751;
2889 pi[12]= 0.015; pi[13]= 0.0287; pi[14]= 0.0681; pi[15]= 0.0488;
2890 pi[16]= 0.0622; pi[17]= 0.0251; pi[18]= 0.0318; pi[19]= 0.0619;
2891 return 1;
2892 }
2893
2894 //////////////////////////////////////////////////////////////
2895 //////////////////////////////////////////////////////////////
2896
2897
Init_Qmat_CpREV(phydbl * daa,phydbl * pi)2898 int Init_Qmat_CpREV(phydbl *daa, phydbl *pi)
2899 {
2900 /*
2901 This model has been 'translated' from John Huelsenbeck and Fredrik Ronquist
2902 MrBayes program into PHYML format by Federico Abascal. Many thanks to them.
2903 */
2904
2905 /*
2906 Adachi, J., P. Waddell, W. Martin, and M. Hasegawa. 2000. Plastid
2907 genome phylogeny and a model of amino acid substitution for proteins
2908 encoded by chloroplast DNA. Journal of Molecular Evolution
2909 50:348-358.
2910 */
2911
2912 int i,j,naa;
2913 naa = 20;
2914
2915 daa[1*20+0]= 105; daa[2*20+0]= 227; daa[2*20+1]= 357; daa[3*20+0]= 175;
2916 daa[3*20+1]= 43; daa[3*20+2]= 4435; daa[4*20+0]= 669; daa[4*20+1]= 823;
2917 daa[4*20+2]= 538; daa[4*20+3]= 10; daa[5*20+0]= 157; daa[5*20+1]= 1745;
2918 daa[5*20+2]= 768; daa[5*20+3]= 400; daa[5*20+4]= 10; daa[6*20+0]= 499;
2919 daa[6*20+1]= 152; daa[6*20+2]= 1055; daa[6*20+3]= 3691; daa[6*20+4]= 10;
2920 daa[6*20+5]= 3122; daa[7*20+0]= 665; daa[7*20+1]= 243; daa[7*20+2]= 653;
2921 daa[7*20+3]= 431; daa[7*20+4]= 303; daa[7*20+5]= 133; daa[7*20+6]= 379;
2922 daa[8*20+0]= 66; daa[8*20+1]= 715; daa[8*20+2]= 1405; daa[8*20+3]= 331;
2923 daa[8*20+4]= 441; daa[8*20+5]= 1269; daa[8*20+6]= 162; daa[8*20+7]= 19;
2924 daa[9*20+0]= 145; daa[9*20+1]= 136; daa[9*20+2]= 168; daa[9*20+3]= 10;
2925 daa[9*20+4]= 280; daa[9*20+5]= 92; daa[9*20+6]= 148; daa[9*20+7]= 40;
2926 daa[9*20+8]= 29; daa[10*20+0]= 197; daa[10*20+1]= 203; daa[10*20+2]= 113;
2927 daa[10*20+3]= 10; daa[10*20+4]= 396; daa[10*20+5]= 286; daa[10*20+6]= 82;
2928 daa[10*20+7]= 20; daa[10*20+8]= 66; daa[10*20+9]= 1745; daa[11*20+0]= 236;
2929 daa[11*20+1]= 4482; daa[11*20+2]= 2430; daa[11*20+3]= 412; daa[11*20+4]= 48;
2930 daa[11*20+5]= 3313; daa[11*20+6]= 2629; daa[11*20+7]= 263; daa[11*20+8]= 305;
2931 daa[11*20+9]= 345; daa[11*20+10]= 218; daa[12*20+0]= 185; daa[12*20+1]= 125;
2932 daa[12*20+2]= 61; daa[12*20+3]= 47; daa[12*20+4]= 159; daa[12*20+5]= 202;
2933 daa[12*20+6]= 113; daa[12*20+7]= 21; daa[12*20+8]= 10; daa[12*20+9]= 1772;
2934 daa[12*20+10]= 1351; daa[12*20+11]= 193; daa[13*20+0]= 68; daa[13*20+1]= 53;
2935 daa[13*20+2]= 97; daa[13*20+3]= 22; daa[13*20+4]= 726; daa[13*20+5]= 10;
2936 daa[13*20+6]= 145; daa[13*20+7]= 25; daa[13*20+8]= 127; daa[13*20+9]= 454;
2937 daa[13*20+10]= 1268; daa[13*20+11]= 72; daa[13*20+12]= 327; daa[14*20+0]= 490;
2938 daa[14*20+1]= 87; daa[14*20+2]= 173; daa[14*20+3]= 170; daa[14*20+4]= 285;
2939 daa[14*20+5]= 323; daa[14*20+6]= 185; daa[14*20+7]= 28; daa[14*20+8]= 152;
2940 daa[14*20+9]= 117; daa[14*20+10]= 219; daa[14*20+11]= 302; daa[14*20+12]= 100;
2941 daa[14*20+13]= 43; daa[15*20+0]= 2440; daa[15*20+1]= 385; daa[15*20+2]= 2085;
2942 daa[15*20+3]= 590; daa[15*20+4]= 2331; daa[15*20+5]= 396; daa[15*20+6]= 568;
2943 daa[15*20+7]= 691; daa[15*20+8]= 303; daa[15*20+9]= 216; daa[15*20+10]= 516;
2944 daa[15*20+11]= 868; daa[15*20+12]= 93; daa[15*20+13]= 487; daa[15*20+14]= 1202;
2945 daa[16*20+0]= 1340; daa[16*20+1]= 314; daa[16*20+2]= 1393; daa[16*20+3]= 266;
2946 daa[16*20+4]= 576; daa[16*20+5]= 241; daa[16*20+6]= 369; daa[16*20+7]= 92;
2947 daa[16*20+8]= 32; daa[16*20+9]= 1040; daa[16*20+10]= 156; daa[16*20+11]= 918;
2948 daa[16*20+12]= 645; daa[16*20+13]= 148; daa[16*20+14]= 260; daa[16*20+15]= 2151;
2949 daa[17*20+0]= 14; daa[17*20+1]= 230; daa[17*20+2]= 40; daa[17*20+3]= 18;
2950 daa[17*20+4]= 435; daa[17*20+5]= 53; daa[17*20+6]= 63; daa[17*20+7]= 82;
2951 daa[17*20+8]= 69; daa[17*20+9]= 42; daa[17*20+10]= 159; daa[17*20+11]= 10;
2952 daa[17*20+12]= 86; daa[17*20+13]= 468; daa[17*20+14]= 49; daa[17*20+15]= 73;
2953 daa[17*20+16]= 29; daa[18*20+0]= 56; daa[18*20+1]= 323; daa[18*20+2]= 754;
2954 daa[18*20+3]= 281; daa[18*20+4]= 1466; daa[18*20+5]= 391; daa[18*20+6]= 142;
2955 daa[18*20+7]= 10; daa[18*20+8]= 1971; daa[18*20+9]= 89; daa[18*20+10]= 189;
2956 daa[18*20+11]= 247; daa[18*20+12]= 215; daa[18*20+13]= 2370; daa[18*20+14]= 97;
2957 daa[18*20+15]= 522; daa[18*20+16]= 71; daa[18*20+17]= 346; daa[19*20+0]= 968;
2958 daa[19*20+1]= 92; daa[19*20+2]= 83; daa[19*20+3]= 75; daa[19*20+4]= 592;
2959 daa[19*20+5]= 54; daa[19*20+6]= 200; daa[19*20+7]= 91; daa[19*20+8]= 25;
2960 daa[19*20+9]= 4797; daa[19*20+10]= 865; daa[19*20+11]= 249; daa[19*20+12]= 475;
2961 daa[19*20+13]= 317; daa[19*20+14]= 122; daa[19*20+15]= 167; daa[19*20+16]= 760;
2962 daa[19*20+17]= 10; daa[19*20+18]= 119;
2963
2964 for (i=0; i<naa; i++) for (j=0; j<i; j++) daa[j*naa+i] = daa[i*naa+j];
2965
2966 pi[0]= 0.076; pi[1]= 0.062; pi[2]= 0.041; pi[3]= 0.037;
2967 pi[4]= 0.009; pi[5]= 0.038; pi[6]= 0.049; pi[7]= 0.084;
2968 pi[8]= 0.025; pi[9]= 0.081; pi[10]= 0.101; pi[11]= 0.05;
2969 pi[12]= 0.022; pi[13]= 0.051; pi[14]= 0.043; pi[15]= 0.062;
2970 pi[16]= 0.054; pi[17]= 0.018; pi[18]= 0.031; pi[19]= 0.066;
2971 return 1;
2972 }
2973
2974 //////////////////////////////////////////////////////////////
2975 //////////////////////////////////////////////////////////////
2976
2977
Init_Qmat_VT(phydbl * daa,phydbl * pi)2978 int Init_Qmat_VT(phydbl *daa, phydbl *pi)
2979 {
2980 /*
2981 This model has been 'translated' from John Huelsenbeck and Fredrik Ronquist
2982 MrBayes program into PHYML format by Federico Abascal. Many thanks to them.
2983 */
2984
2985 /*
2986 Muller, T., and M. Vingron. 2000. Modeling amino acid replacement.
2987 Journal of Computational Biology 7:761-776.
2988 */
2989
2990 int i,j,naa;
2991 naa = 20;
2992
2993 /* daa[1*20+0]= 0.233108; daa[2*20+0]= 0.199097; daa[2*20+1]= 0.210797; daa[3*20+0]= 0.265145; */
2994 /* daa[3*20+1]= 0.105191; daa[3*20+2]= 0.883422; daa[4*20+0]= 0.227333; daa[4*20+1]= 0.031726; */
2995 /* daa[4*20+2]= 0.027495; daa[4*20+3]= 0.010313; daa[5*20+0]= 0.310084; daa[5*20+1]= 0.493763; */
2996 /* daa[5*20+2]= 0.2757; daa[5*20+3]= 0.205842; daa[5*20+4]= 0.004315; daa[6*20+0]= 0.567957; */
2997 /* daa[6*20+1]= 0.25524; daa[6*20+2]= 0.270417; daa[6*20+3]= 1.599461; daa[6*20+4]= 0.005321; */
2998 /* daa[6*20+5]= 0.960976; daa[7*20+0]= 0.876213; daa[7*20+1]= 0.156945; daa[7*20+2]= 0.362028; */
2999 /* daa[7*20+3]= 0.311718; daa[7*20+4]= 0.050876; daa[7*20+5]= 0.12866; daa[7*20+6]= 0.250447; */
3000 /* daa[8*20+0]= 0.078692; daa[8*20+1]= 0.213164; daa[8*20+2]= 0.290006; daa[8*20+3]= 0.134252; */
3001 /* daa[8*20+4]= 0.016695; daa[8*20+5]= 0.315521; daa[8*20+6]= 0.104458; daa[8*20+7]= 0.058131; */
3002 /* daa[9*20+0]= 0.222972; daa[9*20+1]= 0.08151; daa[9*20+2]= 0.087225; daa[9*20+3]= 0.01172; */
3003 /* daa[9*20+4]= 0.046398; daa[9*20+5]= 0.054602; daa[9*20+6]= 0.046589; daa[9*20+7]= 0.051089; */
3004 /* daa[9*20+8]= 0.020039; daa[10*20+0]= 0.42463; daa[10*20+1]= 0.192364; daa[10*20+2]= 0.069245; */
3005 /* daa[10*20+3]= 0.060863; daa[10*20+4]= 0.091709; daa[10*20+5]= 0.24353; daa[10*20+6]= 0.151924; */
3006 /* daa[10*20+7]= 0.087056; daa[10*20+8]= 0.103552; daa[10*20+9]= 2.08989; daa[11*20+0]= 0.393245; */
3007 /* daa[11*20+1]= 1.755838; daa[11*20+2]= 0.50306; daa[11*20+3]= 0.261101; daa[11*20+4]= 0.004067; */
3008 /* daa[11*20+5]= 0.738208; daa[11*20+6]= 0.88863; daa[11*20+7]= 0.193243; daa[11*20+8]= 0.153323; */
3009 /* daa[11*20+9]= 0.093181; daa[11*20+10]= 0.201204; daa[12*20+0]= 0.21155; daa[12*20+1]= 0.08793; */
3010 /* daa[12*20+2]= 0.05742; daa[12*20+3]= 0.012182; daa[12*20+4]= 0.02369; daa[12*20+5]= 0.120801; */
3011 /* daa[12*20+6]= 0.058643; daa[12*20+7]= 0.04656; daa[12*20+8]= 0.021157; daa[12*20+9]= 0.493845; */
3012 /* daa[12*20+10]= 1.105667; daa[12*20+11]= 0.096474; daa[13*20+0]= 0.116646; daa[13*20+1]= 0.042569; */
3013 /* daa[13*20+2]= 0.039769; daa[13*20+3]= 0.016577; daa[13*20+4]= 0.051127; daa[13*20+5]= 0.026235; */
3014 /* daa[13*20+6]= 0.028168; daa[13*20+7]= 0.050143; daa[13*20+8]= 0.079807; daa[13*20+9]= 0.32102; */
3015 /* daa[13*20+10]= 0.946499; daa[13*20+11]= 0.038261; daa[13*20+12]= 0.173052; daa[14*20+0]= 0.399143; */
3016 /* daa[14*20+1]= 0.12848; daa[14*20+2]= 0.083956; daa[14*20+3]= 0.160063; daa[14*20+4]= 0.011137; */
3017 /* daa[14*20+5]= 0.15657; daa[14*20+6]= 0.205134; daa[14*20+7]= 0.124492; daa[14*20+8]= 0.078892; */
3018 /* daa[14*20+9]= 0.054797; daa[14*20+10]= 0.169784; daa[14*20+11]= 0.212302; daa[14*20+12]= 0.010363; */
3019 /* daa[14*20+13]= 0.042564; daa[15*20+0]= 1.817198; daa[15*20+1]= 0.292327; daa[15*20+2]= 0.847049; */
3020 /* daa[15*20+3]= 0.461519; daa[15*20+4]= 0.17527; daa[15*20+5]= 0.358017; daa[15*20+6]= 0.406035; */
3021 /* daa[15*20+7]= 0.612843; daa[15*20+8]= 0.167406; daa[15*20+9]= 0.081567; daa[15*20+10]= 0.214977; */
3022 /* daa[15*20+11]= 0.400072; daa[15*20+12]= 0.090515; daa[15*20+13]= 0.138119; daa[15*20+14]= 0.430431; */
3023 /* daa[16*20+0]= 0.877877; daa[16*20+1]= 0.204109; daa[16*20+2]= 0.471268; daa[16*20+3]= 0.178197; */
3024 /* daa[16*20+4]= 0.079511; daa[16*20+5]= 0.248992; daa[16*20+6]= 0.321028; daa[16*20+7]= 0.136266; */
3025 /* daa[16*20+8]= 0.101117; daa[16*20+9]= 0.376588; daa[16*20+10]= 0.243227; daa[16*20+11]= 0.446646; */
3026 /* daa[16*20+12]= 0.184609; daa[16*20+13]= 0.08587; daa[16*20+14]= 0.207143; daa[16*20+15]= 1.767766; */
3027 /* daa[17*20+0]= 0.030309; daa[17*20+1]= 0.046417; daa[17*20+2]= 0.010459; daa[17*20+3]= 0.011393; */
3028 /* daa[17*20+4]= 0.007732; daa[17*20+5]= 0.021248; daa[17*20+6]= 0.018844; daa[17*20+7]= 0.02399; */
3029 /* daa[17*20+8]= 0.020009; daa[17*20+9]= 0.034954; daa[17*20+10]= 0.083439; daa[17*20+11]= 0.023321; */
3030 /* daa[17*20+12]= 0.022019; daa[17*20+13]= 0.12805; daa[17*20+14]= 0.014584; daa[17*20+15]= 0.035933; */
3031 /* daa[17*20+16]= 0.020437; daa[18*20+0]= 0.087061; daa[18*20+1]= 0.09701; daa[18*20+2]= 0.093268; */
3032 /* daa[18*20+3]= 0.051664; daa[18*20+4]= 0.042823; daa[18*20+5]= 0.062544; daa[18*20+6]= 0.0552; */
3033 /* daa[18*20+7]= 0.037568; daa[18*20+8]= 0.286027; daa[18*20+9]= 0.086237; daa[18*20+10]= 0.189842; */
3034 /* daa[18*20+11]= 0.068689; daa[18*20+12]= 0.073223; daa[18*20+13]= 0.898663; daa[18*20+14]= 0.032043; */
3035 /* daa[18*20+15]= 0.121979; daa[18*20+16]= 0.094617; daa[18*20+17]= 0.124746; daa[19*20+0]= 1.230985; */
3036 /* daa[19*20+1]= 0.113146; daa[19*20+2]= 0.049824; daa[19*20+3]= 0.048769; daa[19*20+4]= 0.163831; */
3037 /* daa[19*20+5]= 0.112027; daa[19*20+6]= 0.205868; daa[19*20+7]= 0.082579; daa[19*20+8]= 0.068575; */
3038 /* daa[19*20+9]= 3.65443; daa[19*20+10]= 1.337571; daa[19*20+11]= 0.144587; daa[19*20+12]= 0.307309; */
3039 /* daa[19*20+13]= 0.247329; daa[19*20+14]= 0.129315; daa[19*20+15]= 0.1277; daa[19*20+16]= 0.740372; */
3040 /* daa[19*20+17]= 0.022134; daa[19*20+18]= 0.125733; */
3041
3042 /* for (i=0; i<naa; i++) for (j=0; j<i; j++) daa[j*naa+i] = daa[i*naa+j]; */
3043
3044 /* pi[0]= 0.078837; pi[1]= 0.051238; pi[2]= 0.042313; pi[3]= 0.053066; */
3045 /* pi[4]= 0.015175; pi[5]= 0.036713; pi[6]= 0.061924; pi[7]= 0.070852; */
3046 /* pi[8]= 0.023082; pi[9]= 0.062056; pi[10]= 0.096371; pi[11]= 0.057324; */
3047 /* pi[12]= 0.023771; pi[13]= 0.043296; pi[14]= 0.043911; pi[15]= 0.063403; */
3048 /* pi[16]= 0.055897; pi[17]= 0.013272; pi[18]= 0.034399; pi[19]= 0.073101; */
3049 /* return 1; */
3050
3051 /*
3052 This model has been 'translated' from TREE-PUZZLE. Many thanks to Heiko A. Schmidt,
3053 Korbinian Strimmer, and Arndt von Haeseler.
3054 */
3055
3056 /*
3057 Muller, T., and M. Vingron. 2000. Modeling amino acid replacement.
3058 Journal of Computational Biology 7:761-776.
3059 */
3060
3061 daa[ 0*20+ 1] = 1.2412691067876198; daa[ 0*20+ 2] = 1.2184237953498958;
3062 daa[ 0*20+ 3] = 1.3759368509441177; daa[ 0*20+ 4] = 2.4731223087544874;
3063 daa[ 0*20+ 5] = 2.2155167805137470; daa[ 0*20+ 6] = 2.3379911207495061;
3064 daa[ 0*20+ 7] = 3.3386555146457697; daa[ 0*20+ 8] = 0.9615841926910841;
3065 daa[ 0*20+ 9] = 0.8908203061925510; daa[ 0*20+10] = 1.0778497408764076;
3066 daa[ 0*20+11] = 1.4932055816372476; daa[ 0*20+12] = 1.9006455961717605;
3067 daa[ 0*20+13] = 0.6883439026872615; daa[ 0*20+14] = 2.7355620089953550;
3068 daa[ 0*20+15] = 6.4208961859142883; daa[ 0*20+16] = 5.2892514169776437;
3069 daa[ 0*20+17] = 0.5488578478106930; daa[ 0*20+18] = 0.5411769916657778;
3070 daa[ 0*20+19] = 4.6501894691803214;
3071
3072 daa[ 1*20+ 2] = 1.5720770753326880; daa[ 1*20+ 3] = 0.7550654439001206;
3073 daa[ 1*20+ 4] = 1.4414262567428417; daa[ 1*20+ 5] = 5.5120819705248678;
3074 daa[ 1*20+ 6] = 1.3542404860613146; daa[ 1*20+ 7] = 1.3121700301622004;
3075 daa[ 1*20+ 8] = 4.9238668283945266; daa[ 1*20+ 9] = 0.4323005487925516;
3076 daa[ 1*20+10] = 0.8386701149158265; daa[ 1*20+11] = 10.0173308173660018;
3077 daa[ 1*20+12] = 1.2488638689609959; daa[ 1*20+13] = 0.4224945197276290;
3078 daa[ 1*20+14] = 1.3091837782420783; daa[ 1*20+15] = 1.9202994262316166;
3079 daa[ 1*20+16] = 1.3363401740560601; daa[ 1*20+17] = 1.5170142153962840;
3080 daa[ 1*20+18] = 0.8912614404565405; daa[ 1*20+19] = 0.7807017855806767;
3081
3082 daa[ 2*20+ 3] = 7.8584219153689405; daa[ 2*20+ 4] = 0.9784679122774127;
3083 daa[ 2*20+ 5] = 3.0143201670924822; daa[ 2*20+ 6] = 2.0093434778398112;
3084 daa[ 2*20+ 7] = 2.4117632898861809; daa[ 2*20+ 8] = 6.1974384977884114;
3085 daa[ 2*20+ 9] = 0.9179291175331520; daa[ 2*20+10] = 0.4098311270816011;
3086 daa[ 2*20+11] = 4.4034547578962568; daa[ 2*20+12] = 0.9378803706165143;
3087 daa[ 2*20+13] = 0.5044944273324311; daa[ 2*20+14] = 0.7103720531974738;
3088 daa[ 2*20+15] = 6.1234512396801764; daa[ 2*20+16] = 3.8852506105922231;
3089 daa[ 2*20+17] = 0.1808525752605976; daa[ 2*20+18] = 1.0894926581511342;
3090 daa[ 2*20+19] = 0.4586061981719967;
3091
3092 daa[ 3*20+ 4] = 0.2272488448121475; daa[ 3*20+ 5] = 1.6562495638176040;
3093 daa[ 3*20+ 6] = 9.6883451875685065; daa[ 3*20+ 7] = 1.9142079025990228;
3094 daa[ 3*20+ 8] = 2.1459640610133781; daa[ 3*20+ 9] = 0.2161660372725585;
3095 daa[ 3*20+10] = 0.3574207468998517; daa[ 3*20+11] = 1.4521790561663968;
3096 daa[ 3*20+12] = 0.4075239926000898; daa[ 3*20+13] = 0.1675129724559251;
3097 daa[ 3*20+14] = 1.0714605979577547; daa[ 3*20+15] = 2.2161944596741829;
3098 daa[ 3*20+16] = 1.5066839872944762; daa[ 3*20+17] = 0.2496584188151770;
3099 daa[ 3*20+18] = 0.7447620891784513; daa[ 3*20+19] = 0.4594535241660911;
3100
3101 daa[ 4*20+ 5] = 0.4587469126746136; daa[ 4*20+ 6] = 0.4519167943192672;
3102 daa[ 4*20+ 7] = 1.1034605684472507; daa[ 4*20+ 8] = 1.5196756759380692;
3103 daa[ 4*20+ 9] = 0.9126668032539315; daa[ 4*20+10] = 1.4081315998413697;
3104 daa[ 4*20+11] = 0.3371091785647479; daa[ 4*20+12] = 1.2213054800811556;
3105 daa[ 4*20+13] = 1.6953951980808002; daa[ 4*20+14] = 0.4326227078645523;
3106 daa[ 4*20+15] = 3.6366815408744255; daa[ 4*20+16] = 1.7557065205837685;
3107 daa[ 4*20+17] = 1.6275179891253113; daa[ 4*20+18] = 2.1579775140421025;
3108 daa[ 4*20+19] = 2.2627456996290891;
3109
3110 daa[ 5*20+ 6] = 6.8124601839937675; daa[ 5*20+ 7] = 0.8776110594765502;
3111 daa[ 5*20+ 8] = 7.9943228564946525; daa[ 5*20+ 9] = 0.4882733432879921;
3112 daa[ 5*20+10] = 1.3318097154194044; daa[ 5*20+11] = 6.0519085243118811;
3113 daa[ 5*20+12] = 1.9106190827629084; daa[ 5*20+13] = 0.3573432522499545;
3114 daa[ 5*20+14] = 2.3019177728300728; daa[ 5*20+15] = 2.3193703643237220;
3115 daa[ 5*20+16] = 2.1576510103471440; daa[ 5*20+17] = 0.8959082681546182;
3116 daa[ 5*20+18] = 0.9183596801412757; daa[ 5*20+19] = 0.6366932501396869;
3117
3118 daa[ 6*20+ 7] = 1.3860121390169038; daa[ 6*20+ 8] = 1.6360079688522375;
3119 daa[ 6*20+ 9] = 0.4035497929633328; daa[ 6*20+10] = 0.5610717242294755;
3120 daa[ 6*20+11] = 4.3290086529582830; daa[ 6*20+12] = 0.7471936218068498;
3121 daa[ 6*20+13] = 0.2317194387691585; daa[ 6*20+14] = 1.5132807416252063;
3122 daa[ 6*20+15] = 1.8273535587773553; daa[ 6*20+16] = 1.5839981708584689;
3123 daa[ 6*20+17] = 0.4198391148111098; daa[ 6*20+18] = 0.5818111331782764;
3124 daa[ 6*20+19] = 0.8940572875547330;
3125
3126 daa[ 7*20+ 8] = 0.8561248973045037; daa[ 7*20+ 9] = 0.2888075033037488;
3127 daa[ 7*20+10] = 0.3578662395745526; daa[ 7*20+11] = 0.8945563662345198;
3128 daa[ 7*20+12] = 0.5954812791740037; daa[ 7*20+13] = 0.3693722640980460;
3129 daa[ 7*20+14] = 0.7744933618134962; daa[ 7*20+15] = 3.0637776193717610;
3130 daa[ 7*20+16] = 0.7147489676267383; daa[ 7*20+17] = 0.9349753595598769;
3131 daa[ 7*20+18] = 0.3374467649724478; daa[ 7*20+19] = 0.6193321034173915;
3132
3133 daa[ 8*20+ 9] = 0.5787937115407940; daa[ 8*20+10] = 1.0765007949562073;
3134 daa[ 8*20+11] = 1.8085136096039203; daa[ 8*20+12] = 1.3808291710019667;
3135 daa[ 8*20+13] = 1.3629765501081097; daa[ 8*20+14] = 1.8370555852070649;
3136 daa[ 8*20+15] = 1.9699895187387506; daa[ 8*20+16] = 1.6136654573285647;
3137 daa[ 8*20+17] = 0.6301954684360302; daa[ 8*20+18] = 7.7587442309146040;
3138 daa[ 8*20+19] = 0.5333220944030346;
3139
3140 daa[ 9*20+10] = 6.0019110258426362; daa[ 9*20+11] = 0.6244297525127139;
3141 daa[ 9*20+12] = 6.7597899772045418; daa[ 9*20+13] = 2.2864286949316077;
3142 daa[ 9*20+14] = 0.4811402387911145; daa[ 9*20+15] = 0.6047491507504744;
3143 daa[ 9*20+16] = 2.6344778384442731; daa[ 9*20+17] = 0.5604648274060783;
3144 daa[ 9*20+18] = 0.8626796044156272; daa[ 9*20+19] = 14.8729334615190609;
3145
3146 daa[10*20+11] = 0.5642322882556321; daa[10*20+12] = 8.0327792947421148;
3147 daa[10*20+13] = 4.3611548063555778; daa[10*20+14] = 1.0084320519837335;
3148 daa[10*20+15] = 0.8953754669269811; daa[10*20+16] = 1.0192004372506540;
3149 daa[10*20+17] = 1.5183114434679339; daa[10*20+18] = 1.2452243224541324;
3150 daa[10*20+19] = 3.5458093276667237;
3151
3152 daa[11*20+12] = 1.7129670976916258; daa[11*20+13] = 0.3910559903834828;
3153 daa[11*20+14] = 1.3918935593582853; daa[11*20+15] = 1.9776630140912268;
3154 daa[11*20+16] = 2.5513781312660280; daa[11*20+17] = 0.5851920879490173;
3155 daa[11*20+18] = 0.7835447533710449; daa[11*20+19] = 0.7801080335991272;
3156
3157 daa[12*20+13] = 2.3201373546296349; daa[12*20+14] = 0.4953193808676289;
3158 daa[12*20+15] = 1.0657482318076852; daa[12*20+16] = 3.3628488360462363;
3159 daa[12*20+17] = 1.4680478689711018; daa[12*20+18] = 1.0899165770956820;
3160 daa[12*20+19] = 4.0584577156753401;
3161
3162 daa[13*20+14] = 0.3746821107962129; daa[13*20+15] = 1.1079144700606407;
3163 daa[13*20+16] = 0.6882725908872254; daa[13*20+17] = 3.3448437239772266;
3164 daa[13*20+18] = 10.3848523331334590; daa[13*20+19] = 1.7039730522675411;
3165
3166 daa[14*20+15] = 3.5465914843628927; daa[14*20+16] = 1.9485376673137556;
3167 daa[14*20+17] = 0.4326058001438786; daa[14*20+18] = 0.4819109019647465;
3168 daa[14*20+19] = 0.5985498912985666;
3169
3170 daa[15*20+16] = 8.8479984061248178; daa[15*20+17] = 0.6791126595939816;
3171 daa[15*20+18] = 0.9547229305958682; daa[15*20+19] = 0.9305232113028208;
3172
3173 daa[16*20+17] = 0.4514203099376473; daa[16*20+18] = 0.8564314184691215;
3174 daa[16*20+19] = 3.4242218450865543;
3175
3176 daa[17*20+18] = 4.5377235790405388; daa[17*20+19] = 0.5658969249032649;
3177
3178 daa[18*20+19] = 1.0000000000000000;
3179
3180 for (i=0; i<naa; i++) for (j=0; j<i; j++) daa[i*naa+j] = daa[j*naa+i];
3181
3182 pi[ 0]=0.0770764620135024 ; pi[ 1]=0.0500819370772208 ;
3183 pi[ 2]=0.0462377395993731 ; pi[ 3]=0.0537929860758246 ;
3184 pi[ 4]=0.0144533387583345 ; pi[ 5]=0.0408923608974345 ;
3185 pi[ 6]=0.0633579339160905 ; pi[ 7]=0.0655672355884439 ;
3186 pi[ 8]=0.0218802687005936 ; pi[ 9]=0.0591969699027449 ;
3187 pi[10]=0.0976461276528445 ; pi[11]=0.0592079410822730 ;
3188 pi[12]=0.0220695876653368 ; pi[13]=0.0413508521834260 ;
3189 pi[14]=0.0476871596856874 ; pi[15]=0.0707295165111524 ;
3190 pi[16]=0.0567759161524817 ; pi[17]=0.0127019797647213 ;
3191 pi[18]=0.0323746050281867 ; pi[19]=0.0669190817443274 ;
3192
3193 return 1;
3194 }
3195
3196 //////////////////////////////////////////////////////////////
3197 //////////////////////////////////////////////////////////////
3198
3199
Init_Qmat_Blosum62(phydbl * daa,phydbl * pi)3200 int Init_Qmat_Blosum62(phydbl *daa, phydbl *pi)
3201 {
3202
3203 /*
3204 This model has been 'translated' from John Huelsenbeck and Fredrik Ronquist
3205 MrBayes program into PHYML format by Federico Abascal. Many thanks to them.
3206 */
3207
3208 /*
3209 Henikoff, S., and J. G. Henikoff. 1992. Amino acid substitution
3210 matrices from protein blocks. Proc. Natl. Acad. Sci., U.S.A.
3211 89:10915-10919.
3212 */
3213
3214 int i,j,naa;
3215 naa = 20;
3216
3217 daa[1*20+0]= 0.735790389698; daa[2*20+0]= 0.485391055466; daa[2*20+1]= 1.297446705134; daa[3*20+0]= 0.543161820899;
3218 daa[3*20+1]= 0.500964408555; daa[3*20+2]= 3.180100048216; daa[4*20+0]= 1.45999531047; daa[4*20+1]= 0.227826574209;
3219 daa[4*20+2]= 0.397358949897; daa[4*20+3]= 0.240836614802; daa[5*20+0]= 1.199705704602; daa[5*20+1]= 3.020833610064;
3220 daa[5*20+2]= 1.839216146992; daa[5*20+3]= 1.190945703396; daa[5*20+4]= 0.32980150463; daa[6*20+0]= 1.1709490428;
3221 daa[6*20+1]= 1.36057419042; daa[6*20+2]= 1.24048850864; daa[6*20+3]= 3.761625208368; daa[6*20+4]= 0.140748891814;
3222 daa[6*20+5]= 5.528919177928; daa[7*20+0]= 1.95588357496; daa[7*20+1]= 0.418763308518; daa[7*20+2]= 1.355872344485;
3223 daa[7*20+3]= 0.798473248968; daa[7*20+4]= 0.418203192284; daa[7*20+5]= 0.609846305383; daa[7*20+6]= 0.423579992176;
3224 daa[8*20+0]= 0.716241444998; daa[8*20+1]= 1.456141166336; daa[8*20+2]= 2.414501434208; daa[8*20+3]= 0.778142664022;
3225 daa[8*20+4]= 0.354058109831; daa[8*20+5]= 2.43534113114; daa[8*20+6]= 1.626891056982; daa[8*20+7]= 0.539859124954;
3226 daa[9*20+0]= 0.605899003687; daa[9*20+1]= 0.232036445142; daa[9*20+2]= 0.283017326278; daa[9*20+3]= 0.418555732462;
3227 daa[9*20+4]= 0.774894022794; daa[9*20+5]= 0.236202451204; daa[9*20+6]= 0.186848046932; daa[9*20+7]= 0.189296292376;
3228 daa[9*20+8]= 0.252718447885; daa[10*20+0]= 0.800016530518; daa[10*20+1]= 0.622711669692; daa[10*20+2]= 0.211888159615;
3229 daa[10*20+3]= 0.218131577594; daa[10*20+4]= 0.831842640142; daa[10*20+5]= 0.580737093181; daa[10*20+6]= 0.372625175087;
3230 daa[10*20+7]= 0.217721159236; daa[10*20+8]= 0.348072209797; daa[10*20+9]= 3.890963773304; daa[11*20+0]= 1.295201266783;
3231 daa[11*20+1]= 5.411115141489; daa[11*20+2]= 1.593137043457; daa[11*20+3]= 1.032447924952; daa[11*20+4]= 0.285078800906;
3232 daa[11*20+5]= 3.945277674515; daa[11*20+6]= 2.802427151679; daa[11*20+7]= 0.752042440303; daa[11*20+8]= 1.022507035889;
3233 daa[11*20+9]= 0.406193586642; daa[11*20+10]= 0.445570274261;daa[12*20+0]= 1.253758266664; daa[12*20+1]= 0.983692987457;
3234 daa[12*20+2]= 0.648441278787; daa[12*20+3]= 0.222621897958; daa[12*20+4]= 0.76768882348; daa[12*20+5]= 2.494896077113;
3235 daa[12*20+6]= 0.55541539747; daa[12*20+7]= 0.459436173579; daa[12*20+8]= 0.984311525359; daa[12*20+9]= 3.364797763104;
3236 daa[12*20+10]= 6.030559379572;daa[12*20+11]= 1.073061184332;daa[13*20+0]= 0.492964679748; daa[13*20+1]= 0.371644693209;
3237 daa[13*20+2]= 0.354861249223; daa[13*20+3]= 0.281730694207; daa[13*20+4]= 0.441337471187; daa[13*20+5]= 0.14435695975;
3238 daa[13*20+6]= 0.291409084165; daa[13*20+7]= 0.368166464453; daa[13*20+8]= 0.714533703928; daa[13*20+9]= 1.517359325954;
3239 daa[13*20+10]= 2.064839703237;daa[13*20+11]= 0.266924750511;daa[13*20+12]= 1.77385516883; daa[14*20+0]= 1.173275900924;
3240 daa[14*20+1]= 0.448133661718; daa[14*20+2]= 0.494887043702; daa[14*20+3]= 0.730628272998; daa[14*20+4]= 0.356008498769;
3241 daa[14*20+5]= 0.858570575674; daa[14*20+6]= 0.926563934846; daa[14*20+7]= 0.504086599527; daa[14*20+8]= 0.527007339151;
3242 daa[14*20+9]= 0.388355409206; daa[14*20+10]= 0.374555687471;daa[14*20+11]= 1.047383450722;daa[14*20+12]= 0.454123625103;
3243 daa[14*20+13]= 0.233597909629;daa[15*20+0]= 4.325092687057; daa[15*20+1]= 1.12278310421; daa[15*20+2]= 2.904101656456;
3244 daa[15*20+3]= 1.582754142065; daa[15*20+4]= 1.197188415094; daa[15*20+5]= 1.934870924596; daa[15*20+6]= 1.769893238937;
3245 daa[15*20+7]= 1.509326253224; daa[15*20+8]= 1.11702976291; daa[15*20+9]= 0.35754441246; daa[15*20+10]= 0.352969184527;
3246 daa[15*20+11]= 1.752165917819;daa[15*20+12]= 0.918723415746;daa[15*20+13]= 0.540027644824;daa[15*20+14]= 1.169129577716;
3247 daa[16*20+0]= 1.729178019485; daa[16*20+1]= 0.914665954563; daa[16*20+2]= 1.898173634533; daa[16*20+3]= 0.934187509431;
3248 daa[16*20+4]= 1.119831358516; daa[16*20+5]= 1.277480294596; daa[16*20+6]= 1.071097236007; daa[16*20+7]= 0.641436011405;
3249 daa[16*20+8]= 0.585407090225; daa[16*20+9]= 1.17909119726; daa[16*20+10]= 0.915259857694;daa[16*20+11]= 1.303875200799;
3250 daa[16*20+12]= 1.488548053722;daa[16*20+13]= 0.488206118793;daa[16*20+14]= 1.005451683149;daa[16*20+15]= 5.15155629227;
3251 daa[17*20+0]= 0.465839367725; daa[17*20+1]= 0.426382310122; daa[17*20+2]= 0.191482046247; daa[17*20+3]= 0.145345046279;
3252 daa[17*20+4]= 0.527664418872; daa[17*20+5]= 0.758653808642; daa[17*20+6]= 0.407635648938; daa[17*20+7]= 0.508358924638;
3253 daa[17*20+8]= 0.30124860078; daa[17*20+9]= 0.34198578754; daa[17*20+10]= 0.6914746346; daa[17*20+11]= 0.332243040634;
3254 daa[17*20+12]= 0.888101098152;daa[17*20+13]= 2.074324893497;daa[17*20+14]= 0.252214830027;daa[17*20+15]= 0.387925622098;
3255 daa[17*20+16]= 0.513128126891;daa[18*20+0]= 0.718206697586; daa[18*20+1]= 0.720517441216; daa[18*20+2]= 0.538222519037;
3256 daa[18*20+3]= 0.261422208965; daa[18*20+4]= 0.470237733696; daa[18*20+5]= 0.95898974285; daa[18*20+6]= 0.596719300346;
3257 daa[18*20+7]= 0.308055737035; daa[18*20+8]= 4.218953969389; daa[18*20+9]= 0.674617093228; daa[18*20+10]= 0.811245856323;
3258 daa[18*20+11]= 0.7179934869; daa[18*20+12]= 0.951682162246;daa[18*20+13]= 6.747260430801;daa[18*20+14]= 0.369405319355;
3259 daa[18*20+15]= 0.796751520761;daa[18*20+16]= 0.801010243199;daa[18*20+17]= 4.054419006558;daa[19*20+0]= 2.187774522005;
3260 daa[19*20+1]= 0.438388343772; daa[19*20+2]= 0.312858797993; daa[19*20+3]= 0.258129289418; daa[19*20+4]= 1.116352478606;
3261 daa[19*20+5]= 0.530785790125; daa[19*20+6]= 0.524253846338; daa[19*20+7]= 0.25334079019; daa[19*20+8]= 0.20155597175;
3262 daa[19*20+9]= 8.311839405458; daa[19*20+10]= 2.231405688913;daa[19*20+11]= 0.498138475304;daa[19*20+12]= 2.575850755315;
3263 daa[19*20+13]= 0.838119610178;daa[19*20+14]= 0.496908410676;daa[19*20+15]= 0.561925457442;daa[19*20+16]= 2.253074051176;
3264 daa[19*20+17]= 0.266508731426;daa[19*20+18]= 1;
3265
3266 for (i=0; i<naa; i++) for (j=0; j<i; j++) daa[j*naa+i] = daa[i*naa+j];
3267
3268 pi[0]= 0.074; pi[1]= 0.052; pi[2]= 0.045; pi[3]= 0.054;
3269 pi[4]= 0.025; pi[5]= 0.034; pi[6]= 0.054; pi[7]= 0.074;
3270 pi[8]= 0.026; pi[9]= 0.068; pi[10]= 0.099; pi[11]= 0.058;
3271 pi[12]= 0.025; pi[13]= 0.047; pi[14]= 0.039; pi[15]= 0.057;
3272 pi[16]= 0.051; pi[17]= 0.013; pi[18]= 0.032; pi[19]= 0.073;
3273
3274 return 1;
3275 }
3276
3277 //////////////////////////////////////////////////////////////
3278 //////////////////////////////////////////////////////////////
3279
3280
Init_Qmat_MtMam(phydbl * daa,phydbl * pi)3281 int Init_Qmat_MtMam(phydbl *daa, phydbl *pi)
3282 {
3283 /*
3284 This model has been 'translated' from Ziheng Yang's PAML program
3285 into PHYML format by Federico Abascal. Many thanks to them.
3286 */
3287
3288 /*
3289 Cao, Y. et al. 1998 Conflict amongst individual mitochondrial
3290 proteins in resolving the phylogeny of eutherian orders. Journal
3291 of Molecular Evolution 15:1600-1611.
3292 */
3293
3294 int i,j,naa;
3295 naa = 20;
3296
3297 daa[1*20+0]= 32; daa[2*20+0]= 2; daa[2*20+1]= 4; daa[3*20+0]= 11;
3298 daa[3*20+1]= 0; daa[3*20+2]= 864; daa[4*20+0]= 0; daa[4*20+1]= 186;
3299 daa[4*20+2]= 0; daa[4*20+3]= 0; daa[5*20+0]= 0; daa[5*20+1]= 246;
3300 daa[5*20+2]= 8; daa[5*20+3]= 49; daa[5*20+4]= 0; daa[6*20+0]= 0;
3301 daa[6*20+1]= 0; daa[6*20+2]= 0; daa[6*20+3]= 569; daa[6*20+4]= 0;
3302 daa[6*20+5]= 274; daa[7*20+0]= 78; daa[7*20+1]= 18; daa[7*20+2]= 47;
3303 daa[7*20+3]= 79; daa[7*20+4]= 0; daa[7*20+5]= 0; daa[7*20+6]= 22;
3304 daa[8*20+0]= 8; daa[8*20+1]= 232; daa[8*20+2]= 458; daa[8*20+3]= 11;
3305 daa[8*20+4]= 305; daa[8*20+5]= 550; daa[8*20+6]= 22; daa[8*20+7]= 0;
3306 daa[9*20+0]= 75; daa[9*20+1]= 0; daa[9*20+2]= 19; daa[9*20+3]= 0;
3307 daa[9*20+4]= 41; daa[9*20+5]= 0; daa[9*20+6]= 0; daa[9*20+7]= 0;
3308 daa[9*20+8]= 0; daa[10*20+0]= 21; daa[10*20+1]= 6; daa[10*20+2]= 0;
3309 daa[10*20+3]= 0; daa[10*20+4]= 27; daa[10*20+5]= 20; daa[10*20+6]= 0;
3310 daa[10*20+7]= 0; daa[10*20+8]= 26; daa[10*20+9]= 232; daa[11*20+0]= 0;
3311 daa[11*20+1]= 50; daa[11*20+2]= 408; daa[11*20+3]= 0; daa[11*20+4]= 0;
3312 daa[11*20+5]= 242; daa[11*20+6]= 215; daa[11*20+7]= 0; daa[11*20+8]= 0;
3313 daa[11*20+9]= 6; daa[11*20+10]= 4; daa[12*20+0]= 76; daa[12*20+1]= 0;
3314 daa[12*20+2]= 21; daa[12*20+3]= 0; daa[12*20+4]= 0; daa[12*20+5]= 22;
3315 daa[12*20+6]= 0; daa[12*20+7]= 0; daa[12*20+8]= 0; daa[12*20+9]= 378;
3316 daa[12*20+10]= 609; daa[12*20+11]= 59; daa[13*20+0]= 0; daa[13*20+1]= 0;
3317 daa[13*20+2]= 6; daa[13*20+3]= 5; daa[13*20+4]= 7; daa[13*20+5]= 0;
3318 daa[13*20+6]= 0; daa[13*20+7]= 0; daa[13*20+8]= 0; daa[13*20+9]= 57;
3319 daa[13*20+10]= 246; daa[13*20+11]= 0; daa[13*20+12]= 11; daa[14*20+0]= 53;
3320 daa[14*20+1]= 9; daa[14*20+2]= 33; daa[14*20+3]= 2; daa[14*20+4]= 0;
3321 daa[14*20+5]= 51; daa[14*20+6]= 0; daa[14*20+7]= 0; daa[14*20+8]= 53;
3322 daa[14*20+9]= 5; daa[14*20+10]= 43; daa[14*20+11]= 18; daa[14*20+12]= 0;
3323 daa[14*20+13]= 17; daa[15*20+0]= 342; daa[15*20+1]= 3; daa[15*20+2]= 446;
3324 daa[15*20+3]= 16; daa[15*20+4]= 347; daa[15*20+5]= 30; daa[15*20+6]= 21;
3325 daa[15*20+7]= 112; daa[15*20+8]= 20; daa[15*20+9]= 0; daa[15*20+10]= 74;
3326 daa[15*20+11]= 65; daa[15*20+12]= 47; daa[15*20+13]= 90; daa[15*20+14]= 202;
3327 daa[16*20+0]= 681; daa[16*20+1]= 0; daa[16*20+2]= 110; daa[16*20+3]= 0;
3328 daa[16*20+4]= 114; daa[16*20+5]= 0; daa[16*20+6]= 4; daa[16*20+7]= 0;
3329 daa[16*20+8]= 1; daa[16*20+9]= 360; daa[16*20+10]= 34; daa[16*20+11]= 50;
3330 daa[16*20+12]= 691; daa[16*20+13]= 8; daa[16*20+14]= 78; daa[16*20+15]= 614;
3331 daa[17*20+0]= 5; daa[17*20+1]= 16; daa[17*20+2]= 6; daa[17*20+3]= 0;
3332 daa[17*20+4]= 65; daa[17*20+5]= 0; daa[17*20+6]= 0; daa[17*20+7]= 0;
3333 daa[17*20+8]= 0; daa[17*20+9]= 0; daa[17*20+10]= 12; daa[17*20+11]= 0;
3334 daa[17*20+12]= 13; daa[17*20+13]= 0; daa[17*20+14]= 7; daa[17*20+15]= 17;
3335 daa[17*20+16]= 0; daa[18*20+0]= 0; daa[18*20+1]= 0; daa[18*20+2]= 156;
3336 daa[18*20+3]= 0; daa[18*20+4]= 530; daa[18*20+5]= 54; daa[18*20+6]= 0;
3337 daa[18*20+7]= 1; daa[18*20+8]= 1525;daa[18*20+9]= 16; daa[18*20+10]= 25;
3338 daa[18*20+11]= 67; daa[18*20+12]= 0; daa[18*20+13]= 682; daa[18*20+14]= 8;
3339 daa[18*20+15]= 107; daa[18*20+16]= 0; daa[18*20+17]= 14; daa[19*20+0]= 398;
3340 daa[19*20+1]= 0; daa[19*20+2]= 0; daa[19*20+3]= 10; daa[19*20+4]= 0;
3341 daa[19*20+5]= 33; daa[19*20+6]= 20; daa[19*20+7]= 5; daa[19*20+8]= 0;
3342 daa[19*20+9]= 2220; daa[19*20+10]= 100;daa[19*20+11]= 0; daa[19*20+12]= 832;
3343 daa[19*20+13]= 6; daa[19*20+14]= 0; daa[19*20+15]= 0; daa[19*20+16]= 237;
3344 daa[19*20+17]= 0; daa[19*20+18]= 0;
3345
3346 for (i=0; i<naa; i++) for (j=0; j<i; j++) daa[j*naa+i] = daa[i*naa+j];
3347
3348 pi[0]= 0.0692; pi[1]= 0.0184; pi[2]= 0.04; pi[3]= 0.0186;
3349 pi[4]= 0.0065; pi[5]= 0.0238; pi[6]= 0.0236; pi[7]= 0.0557;
3350 pi[8]= 0.0277; pi[9]= 0.0905; pi[10]=0.1675; pi[11]= 0.0221;
3351 pi[12]=0.0561; pi[13]= 0.0611; pi[14]=0.0536; pi[15]= 0.0725;
3352 pi[16]=0.087; pi[17]= 0.0293; pi[18]=0.034; pi[19]= 0.0428;
3353
3354 return 1;
3355 }
3356
3357 //////////////////////////////////////////////////////////////
3358 //////////////////////////////////////////////////////////////
3359
3360
Init_Qmat_AB(phydbl * daa,phydbl * pi)3361 int Init_Qmat_AB(phydbl *daa, phydbl *pi)
3362 {
3363 /*
3364 This model has been 'translated' from Alexander Mirsky,Linda Kazandjian and Maria Anisimova into PHYML format by J-E Longueville.
3365 Many thanks to them.
3366 */
3367
3368 /*
3369 Antibody-Specific Model of Amino Acid Substitution for Immunological Inferences from Alignments of Antibody Sequences
3370 Alexander Mirsky, Linda Kazandjian and Maria Anisimova
3371 Mol Biol Evol (2015) 32 (3): 806-819. doi: 10.1093/molbev/msu340 First published online: December 21, 2014
3372 */
3373
3374 int i,j,naa;
3375 naa = 20;
3376
3377 daa[1*20+0]= 1.784266E-01; daa[2*20+0]= 9.291290E-02; daa[2*20+1]= 7.829130E-01; daa[3*20+0]= 1.241095E+00;
3378 daa[3*20+1]= 5.795374E-02; daa[3*20+2]= 7.185182E+00; daa[4*20+0]= 8.929181E-03; daa[4*20+1]= 1.821885E-01;
3379 daa[4*20+2]= 1.374268E-06; daa[4*20+3]= 2.340019E-02; daa[5*20+0]= 1.992269E-01; daa[5*20+1]= 1.923901E+00;
3380 daa[5*20+2]= 8.705989E-02; daa[5*20+3]= 1.843856E-01; daa[5*20+4]= 1.046446E-08; daa[6*20+0]= 9.521821E-01;
3381 daa[6*20+1]= 6.273863E-02; daa[6*20+2]= 5.038373E-01; daa[6*20+3]= 7.426619E+00; daa[6*20+4]= 7.519215E-11;
3382 daa[6*20+5]= 3.691671E+00; daa[7*20+0]= 1.851951E+00; daa[7*20+1]= 1.089400E+00; daa[7*20+2]= 4.868901E-01;
3383 daa[7*20+3]= 2.112400E+00; daa[7*20+4]= 5.891123E-02; daa[7*20+5]= 5.516340E-02; daa[7*20+6]= 1.389370E+00;
3384 daa[8*20+0]= 5.241316E+00; daa[8*20+1]= 1.049550E+01; daa[8*20+2]= 1.405444E+01; daa[8*20+3]= 1.126995E+01;
3385 daa[8*20+4]= 3.963388E+00; daa[8*20+5]= 8.908434E+00; daa[8*20+6]= 7.298080E+00; daa[8*20+7]= 9.139518E+00;
3386 daa[9*20+0]= 1.140412E-01; daa[9*20+1]= 3.245175E-01; daa[9*20+2]= 1.762721E+00; daa[9*20+3]= 3.916999E-02;
3387 daa[9*20+4]= 6.594967E-04; daa[9*20+5]= 6.712736E-06; daa[9*20+6]= 1.029959E-04; daa[9*20+7]= 3.560482E-02;
3388 daa[9*20+8]= 4.706586E+00; daa[10*20+0]= 6.969101E-02; daa[10*20+1]= 3.932002E-01; daa[10*20+2]= 2.769442E-02;
3389 daa[10*20+3]= 3.020502E-02; daa[10*20+4]= 6.079219E-03; daa[10*20+5]= 6.802781E-01; daa[10*20+6]= 1.283121E-03;
3390 daa[10*20+7]= 2.157936E-02; daa[10*20+8]= 5.879103E+00; daa[10*20+9]= 1.601123E+00; daa[11*20+0]= 7.388355E-02;
3391 daa[11*20+1]= 7.549240E+00; daa[11*20+2]= 6.190318E+00; daa[11*20+3]= 6.622772E-02; daa[11*20+4]= 3.722878E-16;
3392 daa[11*20+5]= 3.030805E+00; daa[11*20+6]= 3.608816E+00; daa[11*20+7]= 5.504400E-02; daa[11*20+8]= 1.455741E+00;
3393 daa[11*20+9]= 5.059793E-01; daa[11*20+10]= 2.158451E-02; daa[12*20+0]= 6.299271E-02; daa[12*20+1]= 3.362326E-01;
3394 daa[12*20+2]= 3.972173E-02; daa[12*20+3]= 3.357577E-02; daa[12*20+4]= 7.213178E-03; daa[12*20+5]= 1.233336E-03;
3395 daa[12*20+6]= 7.659566E-02; daa[12*20+7]= 2.187264E-02; daa[12*20+8]= 2.298295E+00; daa[12*20+9]= 1.096748E+01;
3396 daa[12*20+10]= 5.647985E+00; daa[12*20+11]= 1.238634E+00; daa[13*20+0]= 1.130146E-01; daa[13*20+1]= 8.208677E-02;
3397 daa[13*20+2]= 1.955446E-01; daa[13*20+3]= 1.031734E-01; daa[13*20+4]= 1.993818E-01; daa[13*20+5]= 1.496610E-03;
3398 daa[13*20+6]= 5.288625E-02; daa[13*20+7]= 1.984772E-01; daa[13*20+8]= 5.642309E+00; daa[13*20+9]= 2.714705E+00;
3399 daa[13*20+10]= 3.390618E+00; daa[13*20+11]= 4.649035E-03; daa[13*20+12]= 3.947940E+00; daa[14*20+0]= 1.800713E+00;
3400 daa[14*20+1]= 3.498713E-01; daa[14*20+2]= 7.342554E-03; daa[14*20+3]= 1.509482E-01; daa[14*20+4]= 4.878395E-03;
3401 daa[14*20+5]= 7.426909E-01; daa[14*20+6]= 2.889815E-02; daa[14*20+7]= 7.915056E-02; daa[14*20+8]= 1.049496E+01;
3402 daa[14*20+9]= 5.016568E-02; daa[14*20+10]= 1.149931E+00; daa[14*20+11]= 9.948994E-03; daa[14*20+12]= 7.417279E-02;
3403 daa[14*20+13]= 3.556198E-01; daa[15*20+0]= 9.988358E-01; daa[15*20+1]= 1.926435E+00; daa[15*20+2]= 7.348346E+00;
3404 daa[15*20+3]= 5.822988E-01; daa[15*20+4]= 2.639482E-01; daa[15*20+5]= 5.906405E-04; daa[15*20+6]= 6.776709E-02;
3405 daa[15*20+7]= 9.984215E-01; daa[15*20+8]= 5.439116E+00; daa[15*20+9]= 6.007607E-01; daa[15*20+10]= 1.580539E-01;
3406 daa[15*20+11]= 8.688405E-02; daa[15*20+12]= 1.861354E-02; daa[15*20+13]= 9.813064E-01; daa[15*20+14]= 1.284651E+00;
3407 daa[16*20+0]= 2.912317E+00; daa[16*20+1]= 2.147175E+00; daa[16*20+2]= 1.135258E+00; daa[16*20+3]= 1.516881E-01;
3408 daa[16*20+4]= 3.225214E-06; daa[16*20+5]= 1.202094E-01; daa[16*20+6]= 6.016624E-02; daa[16*20+7]= 7.862767E-02;
3409 daa[16*20+8]= 3.443285E+00; daa[16*20+9]= 3.087152E+00; daa[16*20+10]= 5.702792E-01; daa[16*20+11]= 1.039298E+00;
3410 daa[16*20+12]= 1.415612E+00; daa[16*20+13]= 3.674486E-02; daa[16*20+14]= 9.057112E-01; daa[16*20+15]= 3.058575E+00;
3411 daa[17*20+0]= 7.939549E-02; daa[17*20+1]= 5.724286E-01; daa[17*20+2]= 7.310937E-04; daa[17*20+3]= 1.423897E-02;
3412 daa[17*20+4]= 4.440833E-01; daa[17*20+5]= 4.332983E-05; daa[17*20+6]= 2.252612E-02; daa[17*20+7]= 1.386853E-01;
3413 daa[17*20+8]= 7.013890E+00; daa[17*20+9]= 6.318748E-02; daa[17*20+10]= 3.378544E-01; daa[17*20+11]= 8.024263E-03;
3414 daa[17*20+12]= 1.011149E-01; daa[17*20+13]= 2.199856E-01; daa[17*20+14]= 5.516074E-03; daa[17*20+15]= 1.385142E-01;
3415 daa[17*20+16]= 1.412361E-02; daa[18*20+0]= 1.433528E-01; daa[18*20+1]= 1.711315E-01; daa[18*20+2]= 2.622763E+00;
3416 daa[18*20+3]= 9.078338E-01; daa[18*20+4]= 7.741612E-01; daa[18*20+5]= 2.737091E-02; daa[18*20+6]= 1.240642E-01;
3417 daa[18*20+7]= 2.295842E-01; daa[18*20+8]= 2.055414E+01; daa[18*20+9]= 2.903165E-01; daa[18*20+10]= 1.521320E-01;
3418 daa[18*20+11]= 7.109973E-02; daa[18*20+12]= 2.246759E-03; daa[18*20+13]= 7.074464E+00; daa[18*20+14]= 1.992133E-01;
3419 daa[18*20+15]= 8.104751E-01; daa[18*20+16]= 9.984255E-02; daa[18*20+17]= 6.121284E-01; daa[19*20+0]= 3.774477E+00;
3420 daa[19*20+1]= 1.366145E-01; daa[19*20+2]= 4.931206E-02; daa[19*20+3]= 4.076074E-01; daa[19*20+4]= 2.243512E-02;
3421 daa[19*20+5]= 9.047737E-03; daa[19*20+6]= 5.795409E-01; daa[19*20+7]= 4.228200E-01; daa[19*20+8]= 6.890244E+00;
3422 daa[19*20+9]= 7.926675E+00; daa[19*20+10]= 3.595310E+00; daa[19*20+11]= 3.493440E-02; daa[19*20+12]= 4.396720E+00;
3423 daa[19*20+13]= 1.643946E+00; daa[19*20+14]= 2.217442E-01; daa[19*20+15]= 7.477041E-02; daa[19*20+16]= 2.166054E-01;
3424 daa[19*20+17]= 9.663569E-02; daa[19*20+18]= 5.010635E-01;
3425
3426 for (i=0; i<naa; i++) for (j=0; j<i; j++) daa[j*naa+i] = daa[i*naa+j];
3427
3428 pi[0]= 6.541704E-02; pi[1]= 4.708366E-02; pi[2]= 3.168984E-02; pi[3]= 4.688141E-02 ;
3429 pi[4]= 2.150693E-02; pi[5]= 4.240711E-02; pi[6]= 2.842211E-02; pi[7]= 1.005278E-01;
3430 pi[8]= 9.812606E-03; pi[9]= 3.424424E-02; pi[10]= 6.222565E-02; pi[11]= 4.844488E-02;
3431 pi[12]= 1.760370E-02; pi[13]= 3.478555E-02; pi[14]= 3.962469E-02; pi[15]= 1.280566E-01;
3432 pi[16]= 8.199314E-02; pi[17]= 3.393045E-02; pi[18]= 7.586119E-02; pi[19]= 4.948141E-02;
3433
3434 return 1;
3435 }
3436
3437 //////////////////////////////////////////////////////////////
3438 //////////////////////////////////////////////////////////////
3439
3440
GEO_Init_Coord(t_geo_coord * t,int n_dim)3441 void GEO_Init_Coord(t_geo_coord *t, int n_dim)
3442 {
3443 t->dim = n_dim;
3444 Random_String(t->id,3);
3445 }
3446
3447 //////////////////////////////////////////////////////////////
3448 //////////////////////////////////////////////////////////////
3449
PHYREX_Init_Disk_Event(t_dsk * t,int n_dim,t_phyrex_mod * mmod)3450 void PHYREX_Init_Disk_Event(t_dsk *t, int n_dim, t_phyrex_mod *mmod)
3451 {
3452 t->prev = NULL;
3453 t->next = NULL;
3454 t->mmod = NULL;
3455 t->age_fixed = NO;
3456
3457 Random_String(t->id,3);
3458 GEO_Init_Coord(t->centr,n_dim);
3459
3460 if(mmod != NULL) t->mmod = mmod;
3461 }
3462
3463 //////////////////////////////////////////////////////////////
3464 //////////////////////////////////////////////////////////////
3465
PHYREX_Init_Migrep_Mod(t_phyrex_mod * t,int n_dim,phydbl min_lat,phydbl min_lon,phydbl max_lat,phydbl max_lon)3466 void PHYREX_Init_Migrep_Mod(t_phyrex_mod *t, int n_dim, phydbl min_lat, phydbl min_lon, phydbl max_lat, phydbl max_lon)
3467 {
3468 assert(n_dim == 2);
3469
3470 if(t->id == -1) t->id = SLFV_GAUSSIAN;
3471 t->n_dim = n_dim;
3472
3473 t->lim_up->lonlat[0] = max_lat;
3474 t->lim_up->lonlat[1] = max_lon;
3475
3476 t->lim_do->lonlat[0] = min_lat;
3477 t->lim_do->lonlat[1] = min_lon;
3478
3479 t->min_rad = 0.0;
3480 t->max_rad = 1.0*((max_lat-min_lat)+(max_lon-min_lon));
3481 t->rad = 0.01*((max_lat-min_lat)+(max_lon-min_lon));
3482 t->prior_param_rad = 1./(0.1*((max_lat-min_lat)+(max_lon-min_lon)));
3483
3484 }
3485
3486 //////////////////////////////////////////////////////////////
3487 //////////////////////////////////////////////////////////////
3488
PHYREX_Set_Default_Migrep_Mod(int n_otu,t_phyrex_mod * t)3489 void PHYREX_Set_Default_Migrep_Mod(int n_otu, t_phyrex_mod *t)
3490 {
3491 for(int i=0;i<2*n_otu-2;++i) t->sigsq_scale[i] = 1.0;
3492
3493 t->id = -1;
3494 t->safe_phyrex = NO;
3495
3496 t->lim_up->lonlat[0] = 100.;
3497 t->lim_up->lonlat[1] = 100.;
3498
3499 t->lim_do->lonlat[0] = 0.0;
3500 t->lim_do->lonlat[1] = 0.0;
3501
3502 t->lbda = 1.E-0;
3503 t->min_lbda = 1.E-6;
3504 t->max_lbda = 1.E+4;
3505 t->prior_param_lbda = 1.0;
3506
3507 t->mu = 0.800;
3508 t->min_mu = 0.000;
3509 t->max_mu = 1.000;
3510 t->prior_param_mu = 1.000;
3511
3512 t->min_rad = 0.0;
3513 t->max_rad = 100.;
3514 t->rad = 4.;
3515 t->prior_param_rad = 1.;
3516 t->update_rad = NO;
3517
3518 t->min_sigsq = 0.0;
3519 t->max_sigsq = 1.E+2;
3520 t->sigsq = 1.0;
3521 t->prior_param_sigsq = 10.0;
3522
3523 t->nu = 1.0;
3524
3525 t->c_lnL = UNLIKELY;
3526 t->c_ln_prior_rad = UNLIKELY;
3527 t->c_ln_prior_lbda = UNLIKELY;
3528 t->c_ln_prior_mu = UNLIKELY;
3529
3530 t->soft_bound_area = 0.1;
3531
3532
3533 t->max_num_of_intervals = 1000000;
3534 }
3535
3536 //////////////////////////////////////////////////////////////
3537 //////////////////////////////////////////////////////////////
3538
PHYREX_Init_Lindisk_Node(t_ldsk * t,t_dsk * disk,int n_dim)3539 void PHYREX_Init_Lindisk_Node(t_ldsk *t, t_dsk *disk, int n_dim)
3540 {
3541 t->disk = disk;
3542 /* disk->ldsk = t; */
3543 t->prev = NULL;
3544 t->next = NULL;
3545 t->nd = NULL;
3546 t->is_hit = NO;
3547 t->n_next = 0;
3548 GEO_Init_Coord(t->coord, n_dim);
3549 GEO_Init_Coord(t->cpy_coord,n_dim);
3550 }
3551
3552 //////////////////////////////////////////////////////////////
3553 //////////////////////////////////////////////////////////////
3554
MCMC_Init_MCMC_Struct(char * filename,option * io,t_mcmc * mcmc)3555 void MCMC_Init_MCMC_Struct(char *filename, option *io, t_mcmc *mcmc)
3556 {
3557 int pid;
3558
3559 assert(mcmc);
3560
3561 mcmc->io = io;
3562 mcmc->is = NO;
3563 mcmc->run = 0;
3564 mcmc->sample_interval = 1E+3;
3565 mcmc->chain_len = 1E+7;
3566 mcmc->chain_len_burnin = 1E+4;
3567 mcmc->randomize = YES;
3568 mcmc->norm_freq = 1E+3;
3569 mcmc->max_tune = 1.E+20;
3570 mcmc->min_tune = 1.E-10;
3571 mcmc->print_every = 2;
3572 mcmc->is_burnin = NO;
3573 mcmc->nd_t_digits = 4;
3574 mcmc->always_yes = NO;
3575 mcmc->max_lag = 1000;
3576 mcmc->sample_num = 0;
3577
3578 if(filename)
3579 {
3580 char *s;
3581
3582 s = (char *)mCalloc(T_MAX_NAME,sizeof(char));
3583
3584 strcpy(mcmc->out_filename,filename);
3585 pid = getpid();
3586 sprintf(mcmc->out_filename+strlen(mcmc->out_filename),".%d",pid);
3587
3588 strcpy(s,mcmc->io->in_align_file);
3589 strcat(s,"_");
3590 strcat(s,mcmc->out_filename);
3591 strcat(s,".stats");
3592 mcmc->out_fp_stats = fopen(s,"w");
3593
3594 strcpy(s,mcmc->io->in_align_file);
3595 strcat(s,"_");
3596 strcat(s,mcmc->out_filename);
3597 strcat(s,".trees");
3598 mcmc->out_fp_trees = fopen(s,"w");
3599
3600 strcpy(s,mcmc->io->in_align_file);
3601 strcat(s,"_");
3602 strcat(s,mcmc->out_filename);
3603 strcat(s,".constree");
3604 mcmc->out_fp_constree = fopen(s,"w");
3605
3606 /* strcpy(s,tree->mcmc->out_filename); */
3607 /* strcat(s,".means"); */
3608 /* tree->mcmc->out_fp_means = fopen(s,"w"); */
3609
3610 /* strcpy(s,tree->mcmc->out_filename); */
3611 /* strcat(s,".lasts"); */
3612 /* tree->mcmc->out_fp_last = fopen(s,"w"); */
3613
3614 Free(s);
3615 }
3616 else
3617 {
3618 mcmc->out_fp_stats = stderr;
3619 mcmc->out_fp_trees = stderr;
3620 /* tree->mcmc->out_fp_means = stderr; */
3621 /* tree->mcmc->out_fp_last = stderr; */
3622 }
3623 }
3624
3625 //////////////////////////////////////////////////////////////
3626 //////////////////////////////////////////////////////////////
3627
Init_Calibration(t_cal * cal)3628 void Init_Calibration(t_cal *cal)
3629 {
3630 cal->next = NULL;
3631 cal->prev = NULL;
3632 cal->lower = -1.;
3633 cal->upper = -1.;
3634 cal->is_primary = FALSE;
3635 cal->alpha_proba_list = NULL;
3636 cal->clade_list = NULL;
3637 cal->clade_list_size = 0;
3638 cal->id = NULL;
3639 }
3640
3641 //////////////////////////////////////////////////////////////
3642 //////////////////////////////////////////////////////////////
3643
Init_All_Calibration(t_tree * tree)3644 void Init_All_Calibration(t_tree *tree)
3645 {
3646 int i;
3647 assert(tree->rates && tree->times->a_cal);
3648 For(i,2*tree->n_otu-1) Init_Calibration(tree->times->a_cal[i]);
3649 }
3650
3651 //////////////////////////////////////////////////////////////
3652 //////////////////////////////////////////////////////////////
3653
Init_Sarea(t_sarea * s)3654 void Init_Sarea(t_sarea *s)
3655 {
3656 assert(s);
3657 s->n_poly = 0;
3658 }
3659
3660 //////////////////////////////////////////////////////////////
3661 //////////////////////////////////////////////////////////////
3662
Init_Calign(int n_otu,int crunch_len,int init_len,calign * this)3663 void Init_Calign(int n_otu, int crunch_len, int init_len, calign *this)
3664 {
3665 this->obs_pinvar = .0;
3666 this->n_otu = n_otu;
3667 this->clean_len = -1;
3668 this->crunch_len = crunch_len;
3669 this->init_len = init_len;
3670 this->format = 0;
3671 this->io_wght = NULL;
3672
3673 for(int i=0; i<n_otu; ++i) Init_Cseq(this->c_seq[i]);
3674
3675 }
3676
3677 //////////////////////////////////////////////////////////////
3678 //////////////////////////////////////////////////////////////
3679
Init_Cseq(align * this)3680 void Init_Cseq(align *this)
3681 {
3682 this->is_duplicate = NO;
3683 }
3684
3685 //////////////////////////////////////////////////////////////
3686 //////////////////////////////////////////////////////////////
3687
Init_Linked_List(t_ll * list)3688 void Init_Linked_List(t_ll *list)
3689 {
3690 list->head = list;
3691 list->tail = list;
3692 list->next = NULL;
3693 list->prev = NULL;
3694 list->v = NULL;
3695 }
3696
3697 //////////////////////////////////////////////////////////////
3698 //////////////////////////////////////////////////////////////
3699
Init_NNI_Score(phydbl val,t_edge * b,t_tree * tree)3700 void Init_NNI_Score(phydbl val, t_edge *b, t_tree *tree)
3701 {
3702 b->nni->score = val;
3703 if(tree->is_mixt_tree == YES) MIXT_Init_NNI_Score(val,b,tree);
3704 }
3705
3706 //////////////////////////////////////////////////////////////
3707 //////////////////////////////////////////////////////////////
3708
3709 #ifdef M4
M4_Init_Model(m4 * m4mod,calign * data,t_mod * mod)3710 void M4_Init_Model(m4 *m4mod, calign *data, t_mod *mod)
3711 {
3712 int i,j,ct;
3713 phydbl fq;
3714
3715 if(mod->io->datatype == NT) m4mod->n_o = 4;
3716 else if(mod->io->datatype == AA) m4mod->n_o = 20;
3717 else
3718 {
3719 PhyML_Fprintf(stderr,"\n. Not implemented yet.");
3720 PhyML_Fprintf(stderr,"\n. Err in file %s at line %d\n",__FILE__,__LINE__);
3721 Warn_And_Exit("");
3722 }
3723
3724 mod->ns = m4mod->n_o * m4mod->n_h;
3725
3726 for(i=0;i<m4mod->n_o;i++) m4mod->o_fq[i] = mod->e_frq->pi->v[i]; /*! At that stage, the mod->pi vector as been initialized
3727 under a standard non covarion type of model. Use these
3728 frequencies as they have been set according to the
3729 nucleotide substitution model chosen (e.g., 1/4 for JC69). !*/
3730 For(i,(int)(m4mod->n_h)) m4mod->multipl[i] = 1.;
3731
3732 ct = 0;
3733 for(i=0;i<m4mod->n_o-1;i++)
3734 {
3735 for(j=i+1;j<m4mod->n_o;j++)
3736 {
3737 m4mod->o_rr[ct] = MAX(mod->r_mat->qmat->v[i*m4mod->n_o+j],1.E-5);
3738 ct++;
3739 }
3740 }
3741
3742 For(i,(int)(m4mod->n_h*(m4mod->n_h-1)/2)) m4mod->h_rr[i] = 1.;
3743 fq = (phydbl)(1./m4mod->n_h);
3744
3745 if(mod->s_opt->opt_cov_delta) m4mod->delta = 1.0;
3746 if(mod->s_opt->opt_cov_alpha) m4mod->alpha = 1.0;
3747 for(i=0;i<m4mod->n_h;i++) m4mod->h_fq[i] = fq;
3748 for(i=0;i<m4mod->n_h;i++) m4mod->h_fq_unscaled[i] = 1.0;
3749 for(i=0;i<m4mod->n_h;i++) m4mod->multipl[i] = (phydbl)i;
3750 for(i=0;i<m4mod->n_h;i++) m4mod->multipl_unscaled[i] = (phydbl)i;
3751
3752 Set_Update_Eigen(YES,mod);
3753 M4_Update_Qmat(m4mod,mod);
3754 }
3755 #endif
3756
3757 //////////////////////////////////////////////////////////////
3758 //////////////////////////////////////////////////////////////
3759
3760 // Initialise x values using coordinates at the tip nodes along
3761 // one dimension (with index dim_idx)
RW_Init_Contrasts(int dim_idx,t_tree * tree)3762 void RW_Init_Contrasts(int dim_idx, t_tree *tree)
3763 {
3764 for(int i=0;i<tree->n_otu;++i)
3765 {
3766 tree->ctrst->x[i] = tree->a_nodes[i]->ldsk->coord->lonlat[dim_idx];
3767 }
3768
3769 for(int i=0;i<2*tree->n_otu-1;++i)
3770 {
3771 tree->ctrst->tprime[i] = tree->times->nd_t[i];
3772 }
3773 }
3774
3775 //////////////////////////////////////////////////////////////
3776 //////////////////////////////////////////////////////////////
3777 //////////////////////////////////////////////////////////////
3778 //////////////////////////////////////////////////////////////
3779 //////////////////////////////////////////////////////////////
3780 //////////////////////////////////////////////////////////////
3781 //////////////////////////////////////////////////////////////
3782 //////////////////////////////////////////////////////////////
3783 //////////////////////////////////////////////////////////////
3784 //////////////////////////////////////////////////////////////
3785
3786