diff --git a/src/libaevol/SIMD_Individual.cpp b/src/libaevol/SIMD_Individual.cpp index 257e7bc805f9f74c08b2462493993362bf156294..872e1afbcf33f67e05911e673cc128190ddae5a0 100644 --- a/src/libaevol/SIMD_Individual.cpp +++ b/src/libaevol/SIMD_Individual.cpp @@ -4749,7 +4749,7 @@ void SIMD_Individual::run_a_step(double w_max, double selection_pressure,bool op exp_m_->output_m()->write_tree(AeTime::time()); } - if (standalone_ && AeTime::time() % exp_m_->backup_step() == 0 && !exp_m_->record_light_tree()) { + if (standalone_ && AeTime::time() % exp_m_->backup_step() == 0) { for (int indiv_id = 0; indiv_id < (int) exp_m_->nb_indivs(); indiv_id++) { int x = indiv_id / exp_m_->world()->height(); diff --git a/src/post_treatments/ancestor_stats.cpp b/src/post_treatments/ancestor_stats.cpp index 096aaf18bcfca73f3fc169e175c105c8f76c871d..23c1221836dc84569c48b026ee72c4bdbddd9b64 100644 --- a/src/post_treatments/ancestor_stats.cpp +++ b/src/post_treatments/ancestor_stats.cpp @@ -96,6 +96,7 @@ int main(int argc, char* argv[]) { gzread(lineage_file, &t0, sizeof(t0)); gzread(lineage_file, &t_end, sizeof(t_end)); gzread(lineage_file, &final_indiv_index, sizeof(final_indiv_index)); + gzread(lineage_file, &final_indiv_rank, sizeof(final_indiv_rank)); if (verbose) { printf("\n\n""===============================================================================\n"); @@ -112,8 +113,6 @@ int main(int argc, char* argv[]) { // ============================= ExpManager* exp_manager = new ExpManager(); exp_manager->load(t0, true, false); - exp_manager->exp_s()->set_fuzzy_flavor(1); - FuzzyFactory::fuzzyFactory = new FuzzyFactory(exp_manager->exp_s()); // The current version doesn't allow for phenotypic variation nor for // different phenotypic targets among the grid @@ -143,8 +142,8 @@ int main(int argc, char* argv[]) { auto prefix = "ancestor_stats/ancestor_stats"; char postfix[255]; snprintf(postfix, 255, - "-b" TIMESTEP_FORMAT "-e" TIMESTEP_FORMAT "-i%" PRId32 "-r%" PRId32, - t0, t_end, final_indiv_index, final_indiv_rank); + "-b" TIMESTEP_FORMAT "-e" TIMESTEP_FORMAT "-i%" PRId32 "-r%" PRId32, + t0, t_end, final_indiv_index, final_indiv_rank); bool best_indiv_only = true; bool addition_old_stats = false; bool delete_old_stats = true; @@ -208,12 +207,14 @@ int main(int argc, char* argv[]) { // ================================================== // Prepare the initial ancestor and write its stats // ================================================== - Individual* indiv = new Individual(exp_manager, lineage_file); - //auto* indiv = grid_cell->individual(); - indiv->EvaluateInContext(exp_manager->world()->grid(0,0)->habitat()); + GridCell* grid_cell = new GridCell(lineage_file, exp_manager, nullptr); + auto* indiv = grid_cell->individual(); + indiv->Evaluate(); indiv->compute_statistical_data(); indiv->compute_non_coding(); + mystats->write_statistics_of_this_indiv(t0,indiv, nullptr); + // Additional outputs write_environment_stats(t0, phenotypicTargetHandler, env_output_file); write_terminators_stats(t0, indiv, term_output_file); @@ -255,7 +256,7 @@ int main(int argc, char* argv[]) { printf("Rebuilding ancestor at generation %" PRId64 " (index %" PRId32 ")...", time(), index); - indiv->ReevaluateInContext(exp_manager->world()->grid(0,0)->habitat()); + indiv->Reevaluate(); // 2) Replay replication (create current individual's child) GeneticUnit& gen_unit = indiv->genetic_unit_nonconst(0); @@ -377,7 +378,7 @@ int main(int argc, char* argv[]) { } // 3) All the mutations have been replayed, we can now evaluate the new individual - indiv->ReevaluateInContext(exp_manager->world()->grid(0,0)->habitat()); + indiv->Reevaluate(); indiv->compute_statistical_data(); indiv->compute_non_coding(); @@ -426,7 +427,7 @@ int main(int argc, char* argv[]) { FILE* open_environment_stat_file(const char* prefix, const char* postfix) { // Open file - char* env_output_file_name = new char[80]; + char* env_output_file_name = new char[120]; sprintf(env_output_file_name, "stats/%s_envir%s.out", prefix, postfix); FILE* env_output_file = fopen(env_output_file_name, "w"); delete env_output_file_name; @@ -458,7 +459,7 @@ void write_environment_stats(int64_t t, const PhenotypicTargetHandler* pth, FILE* open_terminators_stat_file(const char* prefix, const char* postfix) { - char* term_output_file_name = new char[80]; + char* term_output_file_name = new char[120]; sprintf(term_output_file_name, "stats/%s_nb_term%s.out", prefix, postfix); FILE* term_output_file = fopen(term_output_file_name, "w"); delete [] term_output_file_name; @@ -485,7 +486,7 @@ void write_terminators_stats(int64_t t, Individual* indiv, FILE* open_zones_stat_file(const char* prefix, const char* postfix) { // Open file - char* zones_output_file_name = new char[80]; + char* zones_output_file_name = new char[120]; sprintf(zones_output_file_name, "stats/%s_zones%s.out", prefix, postfix); FILE* zones_output_file = fopen(zones_output_file_name, "w"); delete [] zones_output_file_name; @@ -606,7 +607,7 @@ void write_zones_stats(int64_t t, FILE* open_operons_stat_file(const char* prefix, const char* postfix) { - char* operons_output_file_name = new char[80]; + char* operons_output_file_name = new char[120]; sprintf(operons_output_file_name, "stats/%s_operons%s.out", prefix, postfix); FILE* operons_output_file = fopen(operons_output_file_name, "w"); delete [] operons_output_file_name, diff --git a/src/post_treatments/soft_lineage.cpp b/src/post_treatments/soft_lineage.cpp index 9f02187f86358003fd3e02ae20ff8cb04eb8ba07..22a0acb5b4c0b95ceaef088f0b42a790ad968ba5 100644 --- a/src/post_treatments/soft_lineage.cpp +++ b/src/post_treatments/soft_lineage.cpp @@ -82,15 +82,27 @@ int main(int argc, char** argv) { printf("OK\n"); printf("====================================\n"); - //Find the best indiv int32_t best_id = 0; int32_t best_rank = 0; + + // Specify the index of indiv + int final_indiv_index = 0; + for(auto rep : replics[last_gen]) { - if(rep.second->rank() > best_rank) { + if (rep.first == final_indiv_index) { best_rank = rep.second->rank(); best_id = rep.first; } } + + //Find the best indiv + + /*for(auto rep : replics[last_gen]) { + if(rep.second->rank() > best_rank) { + best_rank = rep.second->rank(); + best_id = rep.first; + } + }*/ //His rank have to be the number of indivs std::cout << "Best indiv is : " << best_id << " with rank : " << best_rank << '\n'; int32_t anc_id = best_id; @@ -115,12 +127,15 @@ int main(int argc, char** argv) { exit(EXIT_FAILURE); } + //printf("Luca is %d\n",luca_time); for(int64_t gen = 1 ; gen < luca_time ; ) { + //printf("Searching at gen %d\n",gen); c = gzgetc(trunc_file); if(c < 0) { gzclose(trunc_file); current_gen += backup_step; if(current_gen > last_gen) { + //printf("Current gen %d -- %d\n",current_gen,last_gen); break; } sprintf(input_file_name, "lightTree/tree_trunc" TIMESTEP_FORMAT ".ae", current_gen); @@ -133,8 +148,8 @@ int main(int argc, char** argv) { } gzungetc(c, trunc_file); ReplicationReport* rep = new ReplicationReport(trunc_file, nullptr); - //printf("Getting the replication report for the ancestor at generation %" PRId64 "\n", gen); reports[gen] = rep; + //printf("Getting TRUNC the replication report for the ancestor at generation %" PRId64 " => %d (%d)\n", gen,rep->id(),rep->parent_id()); gen++; } printf("OK\n"); @@ -158,6 +173,8 @@ int main(int argc, char** argv) { exit(EXIT_FAILURE); } + printf("Loading individual %d\n",reports[1]->parent_id()); + const Individual& initial_ancestor = *(exp_manager->indiv_by_id(reports[1]->parent_id())); // Write file "header"