[Avida-SVN] r3164 - in branches/interrupt/source: actions main
beckma24 at myxo.css.msu.edu
beckma24 at myxo.css.msu.edu
Thu Feb 26 12:59:42 PST 2009
Author: beckma24
Date: 2009-02-26 15:59:42 -0500 (Thu, 26 Feb 2009)
New Revision: 3164
Modified:
branches/interrupt/source/actions/PrintActions.cc
branches/interrupt/source/main/cPopulation.cc
branches/interrupt/source/main/cPopulation.h
Log:
Added PrintWithinDemeGeneticDistance print action
Modified: branches/interrupt/source/actions/PrintActions.cc
===================================================================
--- branches/interrupt/source/actions/PrintActions.cc 2009-02-25 18:54:04 UTC (rev 3163)
+++ branches/interrupt/source/actions/PrintActions.cc 2009-02-26 20:59:42 UTC (rev 3164)
@@ -2625,10 +2625,10 @@
}
};
-class cActionPrintDemeSpacialSleep : public cAction
+class cActionPrintDemeSpatialSleep : public cAction
{
public:
- cActionPrintDemeSpacialSleep(cWorld* world, const cString& args) : cAction(world, args) { ; }
+ cActionPrintDemeSpatialSleep(cWorld* world, const cString& args) : cAction(world, args) { ; }
static const cString GetDescription() { return "No Arguments"; }
@@ -2651,6 +2651,18 @@
}
};
+class cActionPrintWithinDemeGeneticDistance : public cAction {
+ public:
+ cActionPrintWithinDemeGeneticDistance(cWorld* world, const cString& args) : cAction(world, args) { ; }
+
+ static const cString GetDescription() { return "No Arguments"; }
+
+ void Process(cAvidaContext& ctx)
+ {
+ m_world->GetPopulation().PrintWithinDemeGeneticDistance();
+ }
+};
+
class cActionSaveDemeFounders : public cAction
{
private:
@@ -2779,7 +2791,7 @@
action_lib->Register<cActionPrintDemeEnergySharingStats>("PrintDemeEnergySharingStats");
action_lib->Register<cActionPrintDemeDonorStats>("PrintDemeDonorStats");
action_lib->Register<cActionPrintDemeSpacialEnergy>("PrintDemeSpacialEnergyStats");
- action_lib->Register<cActionPrintDemeSpacialSleep>("PrintDemeSpacialSleepStats");
+ action_lib->Register<cActionPrintDemeSpatialSleep>("PrintDemeSpatialSleepStats");
action_lib->Register<cActionPrintDemeResources>("PrintDemeResourceStats");
action_lib->Register<cActionPrintDemeReplicationData>("PrintDemeReplicationData");
action_lib->Register<cActionPrintDemeCompetitionData>("PrintDemeCompetitionData");
@@ -2801,6 +2813,7 @@
action_lib->Register<cActionPrintDemeMigrationSuicidePoints>("PrintDemeMigrationSuicidePoints");
action_lib->Register<cActionPrintDemeInterrupt>("PrintDemeInterrupt");
action_lib->Register<cActionDumpInterruptGrid>("DumpInterruptGrid");
+ action_lib->Register<cActionPrintWithinDemeGeneticDistance>("PrintWithinDemeGeneticDistance");
//Coalescence Clade Actions
Modified: branches/interrupt/source/main/cPopulation.cc
===================================================================
--- branches/interrupt/source/main/cPopulation.cc 2009-02-25 18:54:04 UTC (rev 3163)
+++ branches/interrupt/source/main/cPopulation.cc 2009-02-26 20:59:42 UTC (rev 3164)
@@ -3038,6 +3038,36 @@
df_task.Endl();
}
+void cPopulation::PrintWithinDemeGeneticDistance() const {
+ static const int num_demes = deme_array.GetSize();
+ cDataFile & df = m_world->GetDataFile("deme_genetic_distance.dat");
+ cDoubleSum allDemeHammingDistances;
+ cDoubleSum allDemeLevenshteinDistances;
+ for (int deme_id = 0; deme_id < num_demes; deme_id++) {
+ const cDeme & cur_deme = deme_array[deme_id];
+ cIntSum inCurrentDemeHammingDistances;
+ cIntSum inCurrentDemeLevenshteinDistances;
+
+ for (int i = 0; i < cur_deme.GetSize(); ++i) {
+ int cell_i = cur_deme.GetCellID(i);
+ if (cell_array[cell_i].IsOccupied() == false)
+ continue;
+ for (int j = i; j < cur_deme.GetSize(); ++j) {
+ int cell_j = cur_deme.GetCellID(j);
+ if (cell_array[cell_j].IsOccupied() == false)
+ break;
+ inCurrentDemeHammingDistances.Add(cGenomeUtil::FindHammingDistance(cell_array[cell_i].GetOrganism()->GetGenome(), cell_array[cell_j].GetOrganism()->GetGenome()));
+ inCurrentDemeLevenshteinDistances.Add(cGenomeUtil::FindEditDistance(cell_array[cell_i].GetOrganism()->GetGenome(), cell_array[cell_j].GetOrganism()->GetGenome()));
+ }
+ }
+ allDemeHammingDistances.Add(inCurrentDemeHammingDistances.Average());
+ allDemeLevenshteinDistances.Add(inCurrentDemeLevenshteinDistances.Average());
+ }
+ // print average
+ df.Write(allDemeHammingDistances.Average(), "Average genetic Hamming distance between all orgnaisms in deme averaged over all demes ");
+ df.Write(allDemeLevenshteinDistances.Average(), "Average genetic Levenshtein distance between all orgnaisms in deme averaged over all demes ");
+}
+
void cPopulation::DumpDemeFounders(ofstream& fp) {
fp << "#filetype deme_founders" << endl
<< "#format deme_id num_founders genotype_ids" << endl
Modified: branches/interrupt/source/main/cPopulation.h
===================================================================
--- branches/interrupt/source/main/cPopulation.h 2009-02-25 18:54:04 UTC (rev 3163)
+++ branches/interrupt/source/main/cPopulation.h 2009-02-26 20:59:42 UTC (rev 3164)
@@ -244,6 +244,7 @@
void PrintDemeSpatialSleepData() const;
void PrintDemeTasks();
void PrintDemeTotalAvgEnergy();
+ void PrintWithinDemeGeneticDistance() const;
// Print deme founders
void DumpDemeFounders(ofstream& fp);
More information about the Avida-cvs
mailing list