@@ -1571,7 +1571,9 @@ void parseArg(int argc, char *argv[], Params ¶ms) {
15711571 params.alisim_length_ratio = 2;
15721572 params.birth_rate = 0.8;
15731573 params.death_rate = 0.2;
1574- params.alisim_fundi_proportion = 0;
1574+ params.alisim_fundi_proportion = 0.0;
1575+ params.fundi_init_proportion = 0.5;
1576+ params.fundi_init_branch_length = 0.0;
15751577 params.alisim_distribution_definitions = NULL;
15761578 params.alisim_skip_checking_memory = false;
15771579 params.alisim_write_internal_sequences = false;
@@ -2921,13 +2923,34 @@ void parseArg(int argc, char *argv[], Params ¶ms) {
29212923 params.alisim_fundi_proportion = 0.0;
29222924 } else {
29232925 params.alisim_fundi_proportion = convert_double(fundi_input.c_str());
2924- if (params.alisim_fundi_proportion > 1 || params.alisim_fundi_proportion < 0)
2926+ if (params.alisim_fundi_proportion > 1 || params.alisim_fundi_proportion <= 0)
29252927 throw "Proportion in FunDi model must be positive and not greater than 1";
29262928 }
29272929
29282930 continue;
29292931 }
2930- if (strcmp(argv[cnt], "-ngs_gap") == 0) {
2932+
2933+ if (strcmp(argv[cnt], "--fundi-init-rho") == 0) {
2934+ cnt++;
2935+ if (cnt >= argc)
2936+ throw "Use --fundi-init-rho <proportion>";
2937+ params.fundi_init_proportion = convert_double(argv[cnt]);
2938+ if (params.fundi_init_proportion >= 1 || params.fundi_init_proportion <= 0)
2939+ throw "Initial proportion in FunDi model must be positive and smaller than 1";
2940+ continue;
2941+ }
2942+
2943+ if (strcmp(argv[cnt], "--fundi-init-branch") == 0) {
2944+ cnt++;
2945+ if (cnt >= argc)
2946+ throw "Use --fundi-init-branch <branch_legth>";
2947+ params.fundi_init_branch_length = convert_double(argv[cnt]);
2948+ if (params.fundi_init_branch_length >= params.max_branch_length || params.fundi_init_branch_length <= 0)
2949+ throw "Initial branch length in FunDi model must be positive and smaller than 10";
2950+ continue;
2951+ }
2952+
2953+ if (strcmp(argv[cnt], "-ngs_gap") == 0) {
29312954 params.ngs_ignore_gaps = false;
29322955 continue;
29332956 }
@@ -4777,7 +4800,7 @@ void parseArg(int argc, char *argv[], Params ¶ms) {
47774800 params.modelfinder_eps = convert_double(argv[cnt]);
47784801 if (params.modelfinder_eps <= 0.0)
47794802 throw "ModelFinder epsilon must be positive";
4780- if (params.modelEps > 1.0)
4803+ if (params.modelfinder_eps > 1.0)
47814804 throw "ModelFinder epsilon must not be larger than 1.0";
47824805 continue;
47834806 }
0 commit comments