[Avida-SVN] r1954 - in branches/energy/source: actions main

beckma24 at myxo.css.msu.edu beckma24 at myxo.css.msu.edu
Fri Aug 17 07:43:20 PDT 2007


Author: beckma24
Date: 2007-08-17 10:43:20 -0400 (Fri, 17 Aug 2007)
New Revision: 1954

Modified:
   branches/energy/source/actions/PrintActions.cc
   branches/energy/source/main/cPopulation.cc
   branches/energy/source/main/cPopulation.h
Log:
Split up cPopulation::PrintDemeStats into subfuctions so that it is easier to the number of deme stat output files.

Modified: branches/energy/source/actions/PrintActions.cc
===================================================================
--- branches/energy/source/actions/PrintActions.cc	2007-08-17 12:11:50 UTC (rev 1953)
+++ branches/energy/source/actions/PrintActions.cc	2007-08-17 14:43:20 UTC (rev 1954)
@@ -2365,16 +2365,16 @@
   }
 };
 
-class cActionPrintDemeStats : public cAction
+class cActionPrintDemeAllStats : public cAction
 {
 public:
-  cActionPrintDemeStats(cWorld* world, const cString& args) : cAction(world, args) { ; }
+  cActionPrintDemeAllStats(cWorld* world, const cString& args) : cAction(world, args) { ; }
   
   static const cString GetDescription() { return "No Arguments"; }
   
   void Process(cAvidaContext& ctx)
   {
-    m_world->GetPopulation().PrintDemeStats();
+    m_world->GetPopulation().PrintDemeAllStats();
   }
 };
 
@@ -2453,7 +2453,8 @@
   // Population Out Files
   action_lib->Register<cActionPrintPhenotypeData>("PrintPhenotypeData");
   action_lib->Register<cActionPrintPhenotypeStatus>("PrintPhenotypeStatus");
-  action_lib->Register<cActionPrintDemeStats>("PrintDemeStats");
+  action_lib->Register<cActionPrintDemeAllStats>("PrintDemeAllStats");
+  action_lib->Register<cActionPrintDemeAllStats>("PrintDemeStats"); //duplicate of previous
 	
   //Coalescence Clade Actions
   action_lib->Register<cActionPrintCCladeCounts>("PrintCCladeCounts");
@@ -2526,7 +2527,7 @@
   action_lib->Register<cActionPrintPhenotypeData>("print_number_phenotypes");
   action_lib->Register<cActionPrintPhenotypeStatus>("print_phenotype_status");
   action_lib->Register<cActionPrintDonationStats>("print_donation_stats");
-  action_lib->Register<cActionPrintDemeStats>("print_deme_stats");
+  action_lib->Register<cActionPrintDemeAllStats>("print_deme_stats");
   
   action_lib->Register<cActionPrintData>("print_data");
   action_lib->Register<cActionPrintInstructionAbundanceHistogram>("print_instruction_abundance_histogram");

Modified: branches/energy/source/main/cPopulation.cc
===================================================================
--- branches/energy/source/main/cPopulation.cc	2007-08-17 12:11:50 UTC (rev 1953)
+++ branches/energy/source/main/cPopulation.cc	2007-08-17 14:43:20 UTC (rev 1954)
@@ -1481,59 +1481,105 @@
   InjectClone( cell2_id, *(cell_array[cell1_id].GetOrganism()) );    
 }
 
+// Print out all statistics about individual demes
+void cPopulation::PrintDemeAllStats() {
+  PrintDemeFitness();
+  PrintDemeLifeFitness();
+  PrintDemeMerit();
+  PrintDemeGestationTime();
+  PrintDemeTasks();
+  PrintDemeDonor();
+  PrintDemeReceiver();
+  PrintDemeMutationRate();
+  PrintDemeResource();
+  PrintDemeInstructions();
+    
+  if(m_world->GetConfig().ENERGY_ENABLED.Get() == 1) {
+    PrintDemeSpatialEnergyData();
+    PrintDemeSpatialSleepData();
+  }
+}
 
-// Print out statistics about individual demes
+void cPopulation::PrintDemeDonor() {
+  cStats& stats = m_world->GetStats();
+  const int num_demes = deme_array.GetSize();
+  cDataFile & df_donor = m_world->GetDataFile("deme_donor.dat");
+  df_donor.WriteComment("Num orgs doing doing a donate for each deme in population");
+  df_donor.WriteTimeStamp();
+  df_donor.Write(stats.GetUpdate(), "update");
 
-void cPopulation::PrintDemeStats()
-{
+  for (int deme_id = 0; deme_id < num_demes; deme_id++) {
+    cString comment;
+    const cDeme & cur_deme = deme_array[deme_id];
+    cDoubleSum single_deme_donor;
+
+    for (int i = 0; i < cur_deme.GetSize(); i++) {
+      int cur_cell = cur_deme.GetCellID(i);
+      if (cell_array[cur_cell].IsOccupied() == false) continue;
+      cPhenotype & phenotype = GetCell(cur_cell).GetOrganism()->GetPhenotype();
+      single_deme_donor.Add(phenotype.IsDonorLast()); 	
+    }
+    comment.Set("Deme %d", deme_id);
+    df_donor.Write(single_deme_donor.Sum(), comment);
+  }
+  df_donor.Endl();
+}
+
+void cPopulation::PrintDemeFitness() {
   cStats& stats = m_world->GetStats();
+  const int num_demes = deme_array.GetSize();
+  cDataFile & df_fit = m_world->GetDataFile("deme_fitness.dat");
+  df_fit.WriteComment("Average fitnesses for each deme in the population");
+  df_fit.WriteTimeStamp();
+  df_fit.Write(stats.GetUpdate(), "update");
   
-  cDataFile & df_fit = m_world->GetDataFile("deme_fitness.dat");
-  cDataFile & df_life_fit = m_world->GetDataFile("deme_lifetime_fitness.dat");
-  cDataFile & df_merit = m_world->GetDataFile("deme_merit.dat");
+  for (int deme_id = 0; deme_id < num_demes; deme_id++) {
+    cString comment;
+    const cDeme & cur_deme = deme_array[deme_id];
+    cDoubleSum single_deme_fitness;
+
+    for (int i = 0; i < cur_deme.GetSize(); i++) {
+      int cur_cell = cur_deme.GetCellID(i);
+      if (cell_array[cur_cell].IsOccupied() == false) continue;
+      cPhenotype & phenotype = GetCell(cur_cell).GetOrganism()->GetPhenotype();
+      single_deme_fitness.Add(phenotype.GetFitness()); 	
+    }
+    comment.Set("Deme %d", deme_id);
+    df_fit.Write(single_deme_fitness.Ave(), comment);
+  }
+  df_fit.Endl();
+}
+
+void cPopulation::PrintDemeGestationTime() {
+  cStats& stats = m_world->GetStats();
+  const int num_demes = deme_array.GetSize();
   cDataFile & df_gest = m_world->GetDataFile("deme_gest_time.dat");
-  cDataFile & df_task = m_world->GetDataFile("deme_task.dat");
-  cDataFile & df_donor = m_world->GetDataFile("deme_donor.dat");
-  cDataFile & df_receiver = m_world->GetDataFile("deme_receiver.dat");
-  cDataFile & df_mut_rates = m_world->GetDataFile("deme_mut_rates.dat");
-  cDataFile & df_resources = m_world->GetDataFile("deme_resources.dat");
-  
-  df_fit.WriteComment("Average fitnesses for each deme in the population");
-  df_life_fit.WriteComment("Average life fitnesses for each deme in the population");
-  df_merit.WriteComment("Average merits for each deme in population");
   df_gest.WriteComment("Average gestation time for each deme in population");
-  df_task.WriteComment("Num orgs doing each task for each deme in population");
-  df_donor.WriteComment("Num orgs doing doing a donate for each deme in population");
-  df_receiver.WriteComment("Num orgs doing receiving a donate for each deme in population");
-  df_mut_rates.WriteComment("Average mutation rates for organisms in each deme");
-  df_resources.WriteComment("Avida deme resource data");
-  
-  df_fit.WriteTimeStamp();
-  df_life_fit.WriteTimeStamp();
-  df_merit.WriteTimeStamp();
   df_gest.WriteTimeStamp();
-  df_task.WriteTimeStamp();
-  df_donor.WriteTimeStamp();
-  df_receiver.WriteTimeStamp();
-  df_mut_rates.WriteTimeStamp();
-  df_resources.WriteTimeStamp();
-  
-  df_fit.Write(stats.GetUpdate(), "update");
-  df_life_fit.Write(stats.GetUpdate(), "update");
-  df_merit.Write(stats.GetUpdate(), "update");
   df_gest.Write(stats.GetUpdate(), "update");
-  df_task.Write(stats.GetUpdate(), "update");
-  df_donor.Write(stats.GetUpdate(), "update");
-  df_receiver.Write(stats.GetUpdate(), "update");
-  df_mut_rates.Write(stats.GetUpdate(), "update");
-  df_resources.Write(stats.GetUpdate(), "update");
-  
+
+  for (int deme_id = 0; deme_id < num_demes; deme_id++) {
+    cString comment;
+    const cDeme & cur_deme = deme_array[deme_id];
+    cDoubleSum single_deme_gest_time;
+
+    for (int i = 0; i < cur_deme.GetSize(); i++) {
+      int cur_cell = cur_deme.GetCellID(i);
+      if (cell_array[cur_cell].IsOccupied() == false) continue;
+      cPhenotype & phenotype = GetCell(cur_cell).GetOrganism()->GetPhenotype();
+      single_deme_gest_time.Add(phenotype.GetGestationTime()); 	
+    }
+    comment.Set("Deme %d", deme_id);
+    df_gest.Write(single_deme_gest_time.Ave(), comment);
+  }
+  df_gest.Endl();
+}
+
+void cPopulation::PrintDemeInstructions() {  
+  cStats& stats = m_world->GetStats();
+  const int num_demes = deme_array.GetSize();
   const int num_inst = m_world->GetNumInstructions();
-  const int num_task = environment.GetNumTasks();
   
-  cDoubleSum total_mut_rate;
-  
-  const int num_demes = deme_array.GetSize();
   for (int deme_id = 0; deme_id < num_demes; deme_id++) {
     cString filename;
     filename.Set("deme_instruction-%d.dat", deme_id);
@@ -1544,16 +1590,7 @@
     df_inst.WriteComment(comment);
     df_inst.WriteTimeStamp();
     df_inst.Write(stats.GetUpdate(), "update");
-    
-    cDoubleSum single_deme_fitness;
-    cDoubleSum single_deme_life_fitness;
-    cDoubleSum single_deme_merit;
-    cDoubleSum single_deme_gest_time;
-    cDoubleSum single_deme_donor;
-    cDoubleSum single_deme_receiver;
-    cDoubleSum single_deme_mut_rate;
-    
-    tArray<cIntSum> single_deme_task(num_task);
+        
     tArray<cIntSum> single_deme_inst(num_inst);
     
     const cDeme & cur_deme = deme_array[deme_id];
@@ -1561,100 +1598,144 @@
       int cur_cell = cur_deme.GetCellID(i);
       if (cell_array[cur_cell].IsOccupied() == false) continue;
       cPhenotype & phenotype = GetCell(cur_cell).GetOrganism()->GetPhenotype();
-      single_deme_fitness.Add(phenotype.GetFitness()); 	
-      single_deme_life_fitness.Add(phenotype.GetLifeFitness()); 	
-      single_deme_merit.Add(phenotype.GetMerit().GetDouble()); 	
-      single_deme_gest_time.Add(phenotype.GetGestationTime()); 	
-      single_deme_donor.Add(phenotype.IsDonorLast()); 	
-      single_deme_receiver.Add(phenotype.IsReceiver()); 	
-      single_deme_mut_rate.Add(GetCell(cur_cell).GetOrganism()->MutationRates().GetCopyMutProb());
       
       for (int j = 0; j < num_inst; j++) {
         single_deme_inst[j].Add(phenotype.GetLastInstCount()[j]);
       } 
-      
-      for (int j = 0; j < num_task; j++) {
-        // only interested in tasks is done once! 
-        if (phenotype.GetLastTaskCount()[j] > 0) {
-          single_deme_task[j].Add(1);
-        }
-      }
     }
     
-    comment.Set("Deme %d", deme_id);
-    df_fit.Write(single_deme_fitness.Ave(), comment);
-    df_life_fit.Write(single_deme_life_fitness.Ave(), comment);
-    df_merit.Write(single_deme_merit.Ave(), comment);
-    df_gest.Write(single_deme_gest_time.Ave(), comment);
-    df_donor.Write(single_deme_donor.Sum(), comment);
-    df_receiver.Write(single_deme_receiver.Sum(), comment);
-    df_mut_rates.Write(single_deme_mut_rate.Ave(), comment);
-    
-    total_mut_rate.Add(single_deme_mut_rate.Ave());
-    
-    for (int j = 0; j < num_task; j++) {
-      comment.Set("Deme %d, Task %d", deme_id, j);
-      df_task.Write((int) single_deme_task[j].Sum(), comment);
-    }
-    
     for (int j = 0; j < num_inst; j++) {
       comment.Set("Inst %d", j);
       df_inst.Write((int) single_deme_inst[j].Sum(), comment);
     }
-    df_inst.Endl();
-    
-    GetDeme(deme_id).UpdateDemeRes();
-    cResourceCount res = GetDeme(deme_id).GetDemeResourceCount();
-    for(int j = 0; j < res.GetSize(); j++) {
-      const char * tmp = res.GetResName(j);
-      df_resources.Write(res.Get(j), cStringUtil::Stringf("Deme %d Resource %s", deme_id, tmp)); //comment);
-      /*
-      if((res.GetResourcesGeometry())[j] != nGeometry::GLOBAL) {
-        // PrintDemeSpatialResData(res, j, deme_id);
-      }*/
+    df_inst.Endl();    
+  }
+}
+
+void cPopulation::PrintDemeLifeFitness() {
+  cStats& stats = m_world->GetStats();
+  const int num_demes = deme_array.GetSize();
+  cDataFile & df_life_fit = m_world->GetDataFile("deme_lifetime_fitness.dat");
+  df_life_fit.WriteComment("Average life fitnesses for each deme in the population");
+  df_life_fit.WriteTimeStamp();
+  df_life_fit.Write(stats.GetUpdate(), "update");
+
+  for (int deme_id = 0; deme_id < num_demes; deme_id++) {
+    cString comment;
+    const cDeme & cur_deme = deme_array[deme_id];
+    cDoubleSum single_deme_life_fitness;
+
+    for (int i = 0; i < cur_deme.GetSize(); i++) {
+      int cur_cell = cur_deme.GetCellID(i);
+      if (cell_array[cur_cell].IsOccupied() == false) continue;
+      cPhenotype & phenotype = GetCell(cur_cell).GetOrganism()->GetPhenotype();
+      single_deme_life_fitness.Add(phenotype.GetLifeFitness()); 	
     }
-  } 
-  
-  df_mut_rates.Write(total_mut_rate.Ave(), "Average deme mutation rate averaged across Demes.");
-  /*
-  if(m_world->GetConfig().ENERGY_ENABLED.Get() == 1) {
-    PrintDemeSpatialEnergyData();
-    // PrintDemeSpatialSleepData();
-  }*/
-  
-  df_fit.Endl();
+    comment.Set("Deme %d", deme_id);
+    df_life_fit.Write(single_deme_life_fitness.Ave(), comment);
+  }
   df_life_fit.Endl();
+}
+
+void cPopulation::PrintDemeMerit() {
+  cStats& stats = m_world->GetStats();
+  const int num_demes = deme_array.GetSize();
+  cDataFile & df_merit = m_world->GetDataFile("deme_merit.dat");
+  df_merit.WriteComment("Average merits for each deme in population");
+  df_merit.WriteTimeStamp();
+  df_merit.Write(stats.GetUpdate(), "update");
+
+  for (int deme_id = 0; deme_id < num_demes; deme_id++) {
+    cString comment;
+    const cDeme & cur_deme = deme_array[deme_id];
+    cDoubleSum single_deme_merit;
+
+    for (int i = 0; i < cur_deme.GetSize(); i++) {
+      int cur_cell = cur_deme.GetCellID(i);
+      if (cell_array[cur_cell].IsOccupied() == false) continue;
+      cPhenotype & phenotype = GetCell(cur_cell).GetOrganism()->GetPhenotype();
+      single_deme_merit.Add(phenotype.GetMerit().GetDouble()); 	
+    }
+    comment.Set("Deme %d", deme_id);
+    df_merit.Write(single_deme_merit.Ave(), comment);
+  }
   df_merit.Endl();
-  df_gest.Endl();
-  df_task.Endl();
-  df_donor.Endl();
-  df_receiver.Endl();
+}
+
+void cPopulation::PrintDemeMutationRate() {
+  cStats& stats = m_world->GetStats();
+  const int num_demes = deme_array.GetSize();
+  cDataFile & df_mut_rates = m_world->GetDataFile("deme_mut_rates.dat");
+  df_mut_rates.WriteComment("Average mutation rates for organisms in each deme");
+  df_mut_rates.WriteTimeStamp();
+  df_mut_rates.Write(stats.GetUpdate(), "update");
+  cDoubleSum total_mut_rate;
+
+  for (int deme_id = 0; deme_id < num_demes; deme_id++) {
+    cString comment;
+    const cDeme & cur_deme = deme_array[deme_id];
+    cDoubleSum single_deme_mut_rate;
+
+    for (int i = 0; i < cur_deme.GetSize(); i++) {
+      int cur_cell = cur_deme.GetCellID(i);
+      if (cell_array[cur_cell].IsOccupied() == false) continue;
+      single_deme_mut_rate.Add(GetCell(cur_cell).GetOrganism()->MutationRates().GetCopyMutProb());
+    }
+    comment.Set("Deme %d", deme_id);
+    df_mut_rates.Write(single_deme_mut_rate.Ave(), comment);
+    total_mut_rate.Add(single_deme_mut_rate.Ave());
+  }
+  df_mut_rates.Write(total_mut_rate.Ave(), "Average deme mutation rate averaged across Demes.");
   df_mut_rates.Endl();
-  df_resources.Endl();
 }
 
-// Write spatial data to a file that can easily be read into Matlab
-void cPopulation::PrintDemeSpatialResData( cResourceCount res, const int i, const int deme_id){
-  const char* tmpResName = res.GetResName(i);
-  cString tmpfilename = cStringUtil::Stringf( "deme_spacial_resource_%s_%i.m", tmpResName, deme_id );
-//  tmpfilename +=  res.GetResName(i) + ".m";
-  cDataFile& df = m_world->GetDataFile(tmpfilename);
-  cString UpdateStr = cStringUtil::Stringf( "deme_%07i_", deme_id ) + res.GetResName(i) + 
-                      cStringUtil::Stringf( "_%07i", m_world->GetStats().GetUpdate() ) + " = [ ...";
+void cPopulation::PrintDemeReceiver() {
+  cStats& stats = m_world->GetStats();
+  const int num_demes = deme_array.GetSize();
+  cDataFile & df_receiver = m_world->GetDataFile("deme_receiver.dat");
+  df_receiver.WriteComment("Num orgs doing receiving a donate for each deme in population");
+  df_receiver.WriteTimeStamp();
+  df_receiver.Write(stats.GetUpdate(), "update");
 
-  df.WriteRaw(UpdateStr);
+  for (int deme_id = 0; deme_id < num_demes; deme_id++) {
+    cString comment;
+    const cDeme & cur_deme = deme_array[deme_id];
+    cDoubleSum single_deme_receiver;
 
-  cSpatialResCount sp_res = res.GetSpatialResource(i);
-  int gridsize = sp_res.GetSize();
-  int xsize = m_world->GetConfig().WORLD_X.Get();
+    for (int i = 0; i < cur_deme.GetSize(); i++) {
+      int cur_cell = cur_deme.GetCellID(i);
+      if (cell_array[cur_cell].IsOccupied() == false) continue;
+      cPhenotype & phenotype = GetCell(cur_cell).GetOrganism()->GetPhenotype();
+      single_deme_receiver.Add(phenotype.IsReceiver()); 	
+    }
+    comment.Set("Deme %d", deme_id);
+    df_receiver.Write(single_deme_receiver.Sum(), comment);
+  }
+    df_receiver.Endl();
+}
 
-  // write grid to file
+void cPopulation::PrintDemeResource() {
+  cStats& stats = m_world->GetStats();
+  const int num_demes = deme_array.GetSize();
+  cDataFile & df_resources = m_world->GetDataFile("deme_resources.dat");
+  df_resources.WriteComment("Avida deme resource data");
+  df_resources.WriteTimeStamp();
+  df_resources.Write(stats.GetUpdate(), "update");
 
-  for (int j = 0; j < gridsize; j++) {
-    df.WriteBlockElement(sp_res.GetAmount(j), j, xsize);
+  for (int deme_id = 0; deme_id < num_demes; deme_id++) {
+    cDeme & cur_deme = deme_array[deme_id];
+
+    cur_deme.UpdateDemeRes();
+    cResourceCount res = GetDeme(deme_id).GetDemeResourceCount();
+    for(int j = 0; j < res.GetSize(); j++) {
+      const char * tmp = res.GetResName(j);
+      df_resources.Write(res.Get(j), cStringUtil::Stringf("Deme %d Resource %s", deme_id, tmp)); //comment);
+      if((res.GetResourcesGeometry())[j] != nGeometry::GLOBAL) {
+        PrintDemeSpatialResData(res, j, deme_id);
+      }
+    }
   }
-  df.WriteRaw("];");
-  df.Endl();
+  df_resources.Endl();
 }
 
 // Write spatial energy data to a file that can easily be read into Matlab
@@ -1685,6 +1766,30 @@
   }
 }
 
+// Write spatial data to a file that can easily be read into Matlab
+void cPopulation::PrintDemeSpatialResData( cResourceCount res, const int i, const int deme_id) const {
+  const char* tmpResName = res.GetResName(i);
+  cString tmpfilename = cStringUtil::Stringf( "deme_spacial_resource_%s_%i.m", tmpResName, deme_id );
+//  tmpfilename +=  res.GetResName(i) + ".m";
+  cDataFile& df = m_world->GetDataFile(tmpfilename);
+  cString UpdateStr = cStringUtil::Stringf( "deme_%07i_", deme_id ) + res.GetResName(i) + 
+                      cStringUtil::Stringf( "_%07i", m_world->GetStats().GetUpdate() ) + " = [ ...";
+
+  df.WriteRaw(UpdateStr);
+
+  cSpatialResCount sp_res = res.GetSpatialResource(i);
+  int gridsize = sp_res.GetSize();
+  int xsize = m_world->GetConfig().WORLD_X.Get();
+
+  // write grid to file
+
+  for (int j = 0; j < gridsize; j++) {
+    df.WriteBlockElement(sp_res.GetAmount(j), j, xsize);
+  }
+  df.WriteRaw("];");
+//  df.Endl();
+}
+
 // Write spatial energy data to a file that can easily be read into Matlab
 void cPopulation::PrintDemeSpatialSleepData() const {
   int cellID = 0;
@@ -1710,15 +1815,47 @@
       cellID++;
     }
     df.WriteRaw("];");
-    df.Endl();
+//    df.Endl();
   }
 }
 
+void cPopulation::PrintDemeTasks() {
+  cStats& stats = m_world->GetStats();
+  const int num_demes = deme_array.GetSize();
+  const int num_task = environment.GetNumTasks();
+  cDataFile & df_task = m_world->GetDataFile("deme_task.dat");
+  df_task.WriteComment("Num orgs doing each task for each deme in population");
+  df_task.WriteTimeStamp();
+  df_task.Write(stats.GetUpdate(), "update");
+
+  for (int deme_id = 0; deme_id < num_demes; deme_id++) {
+    cString comment;
+    const cDeme & cur_deme = deme_array[deme_id];
+    tArray<cIntSum> single_deme_task(num_task);
+
+    for (int i = 0; i < cur_deme.GetSize(); i++) {
+      int cur_cell = cur_deme.GetCellID(i);
+      if (cell_array[cur_cell].IsOccupied() == false) continue;
+      cPhenotype & phenotype = GetCell(cur_cell).GetOrganism()->GetPhenotype();
+      for (int j = 0; j < num_task; j++) {
+        // only interested if task is done once! 
+        if (phenotype.GetLastTaskCount()[j] > 0) {
+          single_deme_task[j].Add(1);
+        }
+      }
+    }
+    for (int j = 0; j < num_task; j++) {
+      comment.Set("Deme %d, Task %d", deme_id, j);
+      df_task.Write((int) single_deme_task[j].Sum(), comment);
+    }
+  }
+  df_task.Endl();
+}
+
 /**
 * This function is responsible for adding an organism to a given lineage,
  * and setting the organism's lineage label and the lineage pointer.
  **/
-
 void cPopulation::LineageSetupOrganism(cOrganism* organism, cLineage* lin, int lin_label, cGenotype* parent_genotype)
 {
   // If we have some kind of lineage control, adjust the default values passed in.

Modified: branches/energy/source/main/cPopulation.h
===================================================================
--- branches/energy/source/main/cPopulation.h	2007-08-17 12:11:50 UTC (rev 1953)
+++ branches/energy/source/main/cPopulation.h	2007-08-17 14:43:20 UTC (rev 1954)
@@ -182,10 +182,23 @@
   void ResetDemes();
   void CopyDeme(int deme1_id, int deme2_id);
   void SpawnDeme(int deme1_id, int deme2_id=-1);
-  void PrintDemeStats();
-  void PrintDemeSpatialResData( cResourceCount res, const int i, const int deme_id);
+
+  // Deme-related stats methods
+  void PrintDemeAllStats();
+  void PrintDemeDonor();
+  void PrintDemeFitness();
+  void PrintDemeGestationTime();
+  void PrintDemeInstructions();
+  void PrintDemeLifeFitness();
+  void PrintDemeMerit();
+  void PrintDemeMutationRate();
+  void PrintDemeReceiver();
+  void PrintDemeResource();
+  void PrintDemeSpatialResData(cResourceCount res, const int i, const int deme_id) const;
   void PrintDemeSpatialEnergyData() const;
   void PrintDemeSpatialSleepData() const;
+  void PrintDemeTasks();
+
   
   // Print donation stats
   void PrintDonationStats();




More information about the Avida-cvs mailing list