From 361f851371481bcd33c431ccb0caff9a563e5ae9 Mon Sep 17 00:00:00 2001
From: David Parsons <david.parsons@inria.fr>
Date: Mon, 11 Dec 2023 17:02:10 +0100
Subject: [PATCH] set parent_length from without Dna_7::set_indiv(Dna* dna)

---
 src/aevol_modify.cpp                                          | 4 ++++
 src/libaevol/7/Dna_7.cpp                                      | 2 --
 src/libaevol/7/ExpManager_7.cpp                               | 2 ++
 .../aevol_post_ancestor_network_knockout_7.cpp                | 1 +
 src/post_treatments/aevol_post_ancestor_stats_7.cpp           | 1 +
 src/post_treatments/aevol_post_create_csv_7.cpp               | 1 +
 src/post_treatments/aevol_post_create_eps_7.cpp               | 1 +
 7 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/aevol_modify.cpp b/src/aevol_modify.cpp
index f3f5c14b5..f12f18603 100644
--- a/src/aevol_modify.cpp
+++ b/src/aevol_modify.cpp
@@ -339,6 +339,8 @@ int main(int argc, char* argv[]) {
         indiv->annotated_chromosome_->dna_ =
             Dna_7::make_dna(old_world->grid(0, 0)->individual()->genetic_unit_seq_length(0));
         indiv->annotated_chromosome_->dna_->set_indiv(old_world->grid(0, 0)->individual()->genetic_unit(0).dna());
+        indiv->annotated_chromosome_->dna_->set_parent_length(
+            old_world->grid(0, 0)->individual()->genetic_unit(0).dna()->length());
         indiv->annotated_chromosome_->dna_->set_indiv(indiv);
         indiv->parent_id = 0;
 
@@ -733,6 +735,8 @@ int main(int argc, char* argv[]) {
         indiv->annotated_chromosome_->dna_ =
             Dna_7::make_dna(old_world->grid(x, y)->individual()->genetic_unit_seq_length(0));
         indiv->annotated_chromosome_->dna_->set_indiv(old_world->grid(x,y)->individual()->genetic_unit(0).dna());
+        indiv->annotated_chromosome_->dna_->set_parent_length(
+            old_world->grid(x,y)->individual()->genetic_unit(0).dna()->length());
         indiv->annotated_chromosome_->dna_->set_indiv(indiv);
         indiv->parent_id = 0;
 
diff --git a/src/libaevol/7/Dna_7.cpp b/src/libaevol/7/Dna_7.cpp
index 1d221706f..e1f2a8698 100644
--- a/src/libaevol/7/Dna_7.cpp
+++ b/src/libaevol/7/Dna_7.cpp
@@ -89,8 +89,6 @@ void Dna_7::set_indiv(Dna* dna) {
     }
 
     memcpy(data_, dna->data(), (length_+1) * sizeof(char));
-
-    parent_length_ = dna->length();
 }
 
 
diff --git a/src/libaevol/7/ExpManager_7.cpp b/src/libaevol/7/ExpManager_7.cpp
index 40c16aa56..e583a937c 100644
--- a/src/libaevol/7/ExpManager_7.cpp
+++ b/src/libaevol/7/ExpManager_7.cpp
@@ -107,6 +107,8 @@ void ExpManager_7::load_legacy(ExpManager* exp_m, const ExpSetup* exp_s, const W
         Dna_7::make_dna(world->grid(x, y)->individual()->genetic_unit_seq_length(0));
     current_individuals[indiv_id]->annotated_chromosome_->dna_->set_chrsm(current_individuals[indiv_id]->annotated_chromosome_);
     current_individuals[indiv_id]->annotated_chromosome_->dna_->set_indiv(world->grid(x, y)->individual()->genetic_unit(0).dna());
+    current_individuals[indiv_id]->annotated_chromosome_->dna_->set_parent_length(
+        world->grid(x, y)->individual()->genetic_unit(0).dna()->length());
     current_individuals[indiv_id]->parent_id = indiv_id;
     previous_individuals[indiv_id] = current_individuals[indiv_id];
   }
diff --git a/src/post_treatments/aevol_post_ancestor_network_knockout_7.cpp b/src/post_treatments/aevol_post_ancestor_network_knockout_7.cpp
index b9236fc1c..e3380fa6f 100644
--- a/src/post_treatments/aevol_post_ancestor_network_knockout_7.cpp
+++ b/src/post_treatments/aevol_post_ancestor_network_knockout_7.cpp
@@ -270,6 +270,7 @@ int main(int argc, char* argv[]) {
   indiv->annotated_chromosome_->dna_ = Dna_7::make_dna(grid_cell->individual()->genetic_unit_seq_length(0));
   indiv->annotated_chromosome_->dna_->set_chrsm(indiv->annotated_chromosome_);
   indiv->annotated_chromosome_->dna_->set_indiv(grid_cell->individual()->genetic_unit(0).dna());
+  indiv->annotated_chromosome_->dna_->set_parent_length(grid_cell->individual()->genetic_unit(0).dna()->length());
   indiv->annotated_chromosome_->dna_->set_indiv(indiv);
   indiv->parent_id = 0;
 
diff --git a/src/post_treatments/aevol_post_ancestor_stats_7.cpp b/src/post_treatments/aevol_post_ancestor_stats_7.cpp
index 863bb573c..3cfe1851e 100644
--- a/src/post_treatments/aevol_post_ancestor_stats_7.cpp
+++ b/src/post_treatments/aevol_post_ancestor_stats_7.cpp
@@ -217,6 +217,7 @@ int main(int argc, char* argv[]) {
   indiv->annotated_chromosome_->dna_ = Dna_7::make_dna(grid_cell->individual()->genetic_unit_seq_length(0));
   indiv->annotated_chromosome_->dna_->set_chrsm(indiv->annotated_chromosome_);
   indiv->annotated_chromosome_->dna_->set_indiv(grid_cell->individual()->genetic_unit(0).dna());
+  indiv->annotated_chromosome_->dna_->set_parent_length(grid_cell->individual()->genetic_unit(0).dna()->length());
   indiv->annotated_chromosome_->dna_->set_indiv(indiv);
   indiv->parent_id = 0;
 
diff --git a/src/post_treatments/aevol_post_create_csv_7.cpp b/src/post_treatments/aevol_post_create_csv_7.cpp
index ac50e3644..f35fc1da6 100644
--- a/src/post_treatments/aevol_post_create_csv_7.cpp
+++ b/src/post_treatments/aevol_post_create_csv_7.cpp
@@ -157,6 +157,7 @@ int main(int argc, char* argv[]) {
   indiv_7->annotated_chromosome_->dna_ = Dna_7::make_dna(indiv->genetic_unit_seq_length(0));
   indiv_7->annotated_chromosome_->dna_->set_chrsm(indiv_7->annotated_chromosome_);
   indiv_7->annotated_chromosome_->dna_->set_indiv(indiv->genetic_unit(0).dna());
+  indiv_7->annotated_chromosome_->dna_->set_parent_length(indiv->genetic_unit(0).dna()->length());
   indiv_7->annotated_chromosome_->dna_->set_indiv(indiv_7);
   indiv_7->parent_id = 0;
   
diff --git a/src/post_treatments/aevol_post_create_eps_7.cpp b/src/post_treatments/aevol_post_create_eps_7.cpp
index 51a3ec254..483818eee 100644
--- a/src/post_treatments/aevol_post_create_eps_7.cpp
+++ b/src/post_treatments/aevol_post_create_eps_7.cpp
@@ -142,6 +142,7 @@ int main(int argc, char* argv[]) {
   indiv_7->annotated_chromosome_->dna_ = Dna_7::make_dna(indiv->genetic_unit_seq_length(0));
   indiv_7->annotated_chromosome_->dna_->set_chrsm(indiv_7->annotated_chromosome_);
   indiv_7->annotated_chromosome_->dna_->set_indiv(indiv->genetic_unit(0).dna());
+  indiv_7->annotated_chromosome_->dna_->set_parent_length(indiv->genetic_unit(0).dna()->length());
   indiv_7->annotated_chromosome_->dna_->set_indiv(indiv_7);
   indiv_7->parent_id = 0;
 
-- 
GitLab