[Avida-SVN] r1506 - in development: Avida.xcodeproj source/actions source/drivers source/main source/tools support/config tests tests/demes_clique_repl tests/demes_clique_repl/config tests/demes_clique_repl/expected tests/demes_clique_repl/expected/data tests/demes_clique_repl/expected/data/archive tests/demes_germline tests/demes_germline/config tests/demes_germline/expected tests/demes_germline/expected/data tests/demes_germline/expected/data/archive tests/demes_grid_repl tests/demes_grid_repl/config tests/demes_grid_repl/expected tests/demes_grid_repl/expected/data tests/demes_grid_repl/expected/data/archive tests/demes_torus_repl tests/demes_torus_repl/config tests/demes_torus_repl/expected tests/demes_torus_repl/expected/data tests/demes_torus_repl/expected/data/archive

dknoester at myxo.css.msu.edu dknoester at myxo.css.msu.edu
Fri Apr 27 08:12:52 PDT 2007


Author: dknoester
Date: 2007-04-27 11:12:52 -0400 (Fri, 27 Apr 2007)
New Revision: 1506

Added:
   development/source/main/cGermline.h
   development/tests/demes_clique_repl/
   development/tests/demes_clique_repl/config/
   development/tests/demes_clique_repl/config/avida.cfg
   development/tests/demes_clique_repl/config/default-classic.org
   development/tests/demes_clique_repl/config/environment.cfg
   development/tests/demes_clique_repl/config/events.cfg
   development/tests/demes_clique_repl/config/instset-classic.cfg
   development/tests/demes_clique_repl/expected/
   development/tests/demes_clique_repl/expected/data/
   development/tests/demes_clique_repl/expected/data/archive/
   development/tests/demes_clique_repl/expected/data/archive/100-aaaaa.org
   development/tests/demes_clique_repl/expected/data/average.dat
   development/tests/demes_clique_repl/expected/data/count.dat
   development/tests/demes_clique_repl/expected/data/detail-100.pop
   development/tests/demes_clique_repl/expected/data/dominant.dat
   development/tests/demes_clique_repl/expected/data/historic-100.pop
   development/tests/demes_clique_repl/expected/data/resource.dat
   development/tests/demes_clique_repl/expected/data/stats.dat
   development/tests/demes_clique_repl/expected/data/tasks.dat
   development/tests/demes_clique_repl/expected/data/tasks_exe.dat
   development/tests/demes_clique_repl/expected/data/tasks_quality.dat
   development/tests/demes_clique_repl/expected/data/time.dat
   development/tests/demes_clique_repl/test_list
   development/tests/demes_germline/
   development/tests/demes_germline/config/
   development/tests/demes_germline/config/avida.cfg
   development/tests/demes_germline/config/default-classic.org
   development/tests/demes_germline/config/environment.cfg
   development/tests/demes_germline/config/events.cfg
   development/tests/demes_germline/config/instset-classic.cfg
   development/tests/demes_germline/expected/
   development/tests/demes_germline/expected/data/
   development/tests/demes_germline/expected/data/archive/
   development/tests/demes_germline/expected/data/archive/100-aaaaa.org
   development/tests/demes_germline/expected/data/average.dat
   development/tests/demes_germline/expected/data/count.dat
   development/tests/demes_germline/expected/data/detail-100.pop
   development/tests/demes_germline/expected/data/dominant.dat
   development/tests/demes_germline/expected/data/historic-100.pop
   development/tests/demes_germline/expected/data/resource.dat
   development/tests/demes_germline/expected/data/stats.dat
   development/tests/demes_germline/expected/data/tasks.dat
   development/tests/demes_germline/expected/data/tasks_exe.dat
   development/tests/demes_germline/expected/data/tasks_quality.dat
   development/tests/demes_germline/expected/data/time.dat
   development/tests/demes_germline/test_list
   development/tests/demes_grid_repl/
   development/tests/demes_grid_repl/config/
   development/tests/demes_grid_repl/config/avida.cfg
   development/tests/demes_grid_repl/config/default-classic.org
   development/tests/demes_grid_repl/config/environment.cfg
   development/tests/demes_grid_repl/config/events.cfg
   development/tests/demes_grid_repl/config/instset-classic.cfg
   development/tests/demes_grid_repl/expected/
   development/tests/demes_grid_repl/expected/data/
   development/tests/demes_grid_repl/expected/data/archive/
   development/tests/demes_grid_repl/expected/data/archive/100-aaaaa.org
   development/tests/demes_grid_repl/expected/data/average.dat
   development/tests/demes_grid_repl/expected/data/count.dat
   development/tests/demes_grid_repl/expected/data/detail-100.pop
   development/tests/demes_grid_repl/expected/data/dominant.dat
   development/tests/demes_grid_repl/expected/data/historic-100.pop
   development/tests/demes_grid_repl/expected/data/resource.dat
   development/tests/demes_grid_repl/expected/data/stats.dat
   development/tests/demes_grid_repl/expected/data/tasks.dat
   development/tests/demes_grid_repl/expected/data/tasks_exe.dat
   development/tests/demes_grid_repl/expected/data/tasks_quality.dat
   development/tests/demes_grid_repl/expected/data/time.dat
   development/tests/demes_grid_repl/test_list
   development/tests/demes_torus_repl/
   development/tests/demes_torus_repl/config/
   development/tests/demes_torus_repl/config/avida.cfg
   development/tests/demes_torus_repl/config/default-classic.org
   development/tests/demes_torus_repl/config/environment.cfg
   development/tests/demes_torus_repl/config/events.cfg
   development/tests/demes_torus_repl/config/instset-classic.cfg
   development/tests/demes_torus_repl/expected/
   development/tests/demes_torus_repl/expected/data/
   development/tests/demes_torus_repl/expected/data/archive/
   development/tests/demes_torus_repl/expected/data/archive/100-aaaaa.org
   development/tests/demes_torus_repl/expected/data/average.dat
   development/tests/demes_torus_repl/expected/data/count.dat
   development/tests/demes_torus_repl/expected/data/detail-100.pop
   development/tests/demes_torus_repl/expected/data/dominant.dat
   development/tests/demes_torus_repl/expected/data/historic-100.pop
   development/tests/demes_torus_repl/expected/data/resource.dat
   development/tests/demes_torus_repl/expected/data/stats.dat
   development/tests/demes_torus_repl/expected/data/tasks.dat
   development/tests/demes_torus_repl/expected/data/tasks_exe.dat
   development/tests/demes_torus_repl/expected/data/tasks_quality.dat
   development/tests/demes_torus_repl/expected/data/time.dat
   development/tests/demes_torus_repl/test_list
Removed:
   development/tests/demes_classic_clique/
   development/tests/demes_classic_grid/
Modified:
   development/Avida.xcodeproj/project.pbxproj
   development/source/actions/PopulationActions.cc
   development/source/drivers/cDefaultRunDriver.cc
   development/source/main/cAvidaConfig.h
   development/source/main/cDeme.cc
   development/source/main/cDeme.h
   development/source/main/cPopulation.cc
   development/source/main/cPopulation.h
   development/source/tools/cTopology.h
   development/support/config/avida.cfg
Log:
This commit:
- Merges germline support and tests into the development branch.
- Adds an age-based ReplicateDemes event.
- Removes a number of trivial deme consistency tests, replacing them with tests
  that cover age-based ReplicateDemes.
- Adds a demes group to avida.cfg, and a number of config options.
- Fixes a missing #ifndef guard on cTopology.h.



Modified: development/Avida.xcodeproj/project.pbxproj
===================================================================
--- development/Avida.xcodeproj/project.pbxproj	2007-04-27 03:48:40 UTC (rev 1505)
+++ development/Avida.xcodeproj/project.pbxproj	2007-04-27 15:12:52 UTC (rev 1506)
@@ -13,6 +13,7 @@
 		4201F39B0BE187F6006279B9 /* cTopology.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4201F39A0BE187F6006279B9 /* cTopology.h */; };
 		4233358A0BC067E3000DF681 /* cHardwareGX.cc in Sources */ = {isa = PBXBuildFile; fileRef = 423335880BC067E3000DF681 /* cHardwareGX.cc */; };
 		4233358B0BC067E3000DF681 /* cHardwareGX.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 423335890BC067E3000DF681 /* cHardwareGX.h */; };
+		42490F000BE2472800318058 /* cGermline.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 42490EFE0BE2472800318058 /* cGermline.h */; };
 		7005A70409BA0FA90007E16E /* cTestCPUInterface.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7005A70209BA0FA90007E16E /* cTestCPUInterface.cc */; };
 		7005A70609BA0FA90007E16E /* cTestCPUInterface.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7005A70209BA0FA90007E16E /* cTestCPUInterface.cc */; };
 		7005A70809BA0FA90007E16E /* cTestCPUInterface.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7005A70209BA0FA90007E16E /* cTestCPUInterface.cc */; };
@@ -428,6 +429,7 @@
 				70B1A75A0B7E431F00067486 /* experimental.org in CopyFiles */,
 				4233358B0BC067E3000DF681 /* cHardwareGX.h in CopyFiles */,
 				4201F39B0BE187F6006279B9 /* cTopology.h in CopyFiles */,
+				42490F000BE2472800318058 /* cGermline.h in CopyFiles */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -449,6 +451,7 @@
 		4201F39A0BE187F6006279B9 /* cTopology.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cTopology.h; sourceTree = "<group>"; };
 		423335880BC067E3000DF681 /* cHardwareGX.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cHardwareGX.cc; sourceTree = "<group>"; };
 		423335890BC067E3000DF681 /* cHardwareGX.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cHardwareGX.h; sourceTree = "<group>"; };
+		42490EFE0BE2472800318058 /* cGermline.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cGermline.h; sourceTree = "<group>"; };
 		7005A70109BA0FA90007E16E /* cTestCPUInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cTestCPUInterface.h; sourceTree = "<group>"; };
 		7005A70209BA0FA90007E16E /* cTestCPUInterface.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cTestCPUInterface.cc; sourceTree = "<group>"; };
 		7005A70909BA0FBE0007E16E /* cOrgInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cOrgInterface.h; sourceTree = "<group>"; };
@@ -1404,6 +1407,7 @@
 		DCC310040762539D008F7A48 /* main */ = {
 			isa = PBXGroup;
 			children = (
+				42490EFE0BE2472800318058 /* cGermline.h */,
 				706C6F480B83E69D003174C1 /* cSaleItem.h */,
 				708BF3010AB65DD300A923BF /* cEventList.h */,
 				708BF2FD0AB65DC700A923BF /* cEventList.cc */,

Modified: development/source/actions/PopulationActions.cc
===================================================================
--- development/source/actions/PopulationActions.cc	2007-04-27 03:48:40 UTC (rev 1505)
+++ development/source/actions/PopulationActions.cc	2007-04-27 15:12:52 UTC (rev 1506)
@@ -452,6 +452,55 @@
 };
 
 
+
+/*! Injects an organism into all demes in the population. 
+
+Parameters:
+filename (string):
+The filename of the genotype to load. If this is left empty, or the keyword
+"START_CREATURE" is given, than the genotype specified in the genesis
+file under "START_CREATURE" is used.
+cell ID (integer) default: 0
+  The grid-point into which the organism should be placed.
+  merit (double) default: -1
+    The initial merit of the organism. If set to -1, this is ignored.
+    lineage label (integer) default: 0
+      An integer that marks all descendants of this organism.
+      neutral metric (double) default: 0
+        A double value that randomly drifts over time.
+        */
+class cActionInjectDemes : public cAction
+{
+private:
+	cString m_filename;
+	double m_merit;
+	int m_lineage_label;
+	double m_neutral_metric;
+public:
+		cActionInjectDemes(cWorld* world, const cString& args) : cAction(world, args), m_merit(-1), m_lineage_label(0), m_neutral_metric(0)
+	{
+			cString largs(args);
+			if (!largs.GetSize()) m_filename = "START_CREATURE"; else m_filename = largs.PopWord();
+			if (largs.GetSize()) m_merit = largs.PopWord().AsDouble();
+			if (largs.GetSize()) m_lineage_label = largs.PopWord().AsInt();
+			if (largs.GetSize()) m_neutral_metric = largs.PopWord().AsDouble();
+			if (m_filename == "START_CREATURE") m_filename = m_world->GetConfig().START_CREATURE.Get();
+	}
+	
+	static const cString GetDescription() { return "Arguments: [string fname=\"START_CREATURE\"] [double merit=-1] [int lineage_label=0] [double neutral_metric=0]"; }
+	
+	void Process(cAvidaContext& ctx)
+	{
+		cGenome genome = cGenomeUtil::LoadGenome(m_filename, m_world->GetHardwareManager().GetInstSet());
+		for(int i=0; i<m_world->GetPopulation().GetNumDemes(); ++i) {
+			m_world->GetPopulation().Inject(genome,
+                                      m_world->GetPopulation().GetDeme(i).GetCellID(0),
+                                      m_merit, m_lineage_label, m_neutral_metric);
+		}
+	}
+};
+
+
 /*
  Randomly removes a certain proportion of the population.
  
@@ -951,10 +1000,11 @@
     cString largs(args);
     cString in_trigger("full_deme");
     if (largs.GetSize()) in_trigger = largs.PopWord();
-
+    
     if (in_trigger == "all") m_rep_trigger = 0;
     else if (in_trigger == "full_deme") m_rep_trigger = 1;
     else if (in_trigger == "corners") m_rep_trigger = 2;
+    else if (in_trigger == "deme-age") m_rep_trigger = 3;
     else {
       cString err("Unknown replication trigger '");
       err += in_trigger;
@@ -1401,6 +1451,7 @@
   action_lib->Register<cActionInjectAll>("InjectAll");
   action_lib->Register<cActionInjectRange>("InjectRange");
   action_lib->Register<cActionInjectSequence>("InjectSequence");
+  action_lib->Register<cActionInjectDemes>("InjectDemes");
 
   action_lib->Register<cActionInjectParasite>("InjectParasite");
   action_lib->Register<cActionInjectParasitePair>("InjectParasitePair");

Modified: development/source/drivers/cDefaultRunDriver.cc
===================================================================
--- development/source/drivers/cDefaultRunDriver.cc	2007-04-27 03:48:40 UTC (rev 1505)
+++ development/source/drivers/cDefaultRunDriver.cc	2007-04-27 15:12:52 UTC (rev 1506)
@@ -105,10 +105,13 @@
       population.ProcessStep(ctx, step_size);
     }
     
-
     // end of update stats...
     population.CalcUpdateStats();
     
+    // Process the update for each deme.
+    for(int i=0; i<population.GetNumDemes(); ++i) {
+      population.GetDeme(i).ProcessUpdate();
+    }
     
     // No viewer; print out status for this update....
     if (m_world->GetVerbosity() > VERBOSE_SILENT) {

Modified: development/source/main/cAvidaConfig.h
===================================================================
--- development/source/main/cAvidaConfig.h	2007-04-27 03:48:40 UTC (rev 1505)
+++ development/source/main/cAvidaConfig.h	2007-04-27 15:12:52 UTC (rev 1506)
@@ -195,7 +195,6 @@
   CONFIG_ADD_VAR(WORLD_X, int, 60, "Width of the Avida world");
   CONFIG_ADD_VAR(WORLD_Y, int, 60, "Height of the Avida world");
   CONFIG_ADD_VAR(WORLD_GEOMETRY, int, 2, "1 = Bounded Grid\n2 = Torus\n3 = Clique");
-  CONFIG_ADD_VAR(NUM_DEMES, int, 0, "Number of independed groups in the population; 0=off");
   CONFIG_ADD_VAR(RANDOM_SEED, int, 0, "Random number seed (0 for based on time)");
   CONFIG_ADD_VAR(HARDWARE_TYPE, int, 0, "0 = Original CPUs\n1 = New SMT CPUs\n2 = Transitional SMT\n3 = Experimental CPU\n4 = Gene Expression CPU");
   
@@ -207,6 +206,18 @@
   CONFIG_ADD_VAR(ENVIRONMENT_FILE, cString, "environment.cfg", "File that describes the environment");
   CONFIG_ADD_VAR(START_CREATURE, cString, "default-classic.org", "Organism to seed the soup");
   
+  
+  // Deme & germline group.
+  CONFIG_ADD_GROUP(DEME_GROUP, "Demes and Germlines");
+  CONFIG_ADD_VAR(NUM_DEMES, int, 1, "Number of independent groups in the population.");
+  CONFIG_ADD_VAR(DEMES_USE_GERMLINE, int, 0, "Whether demes use a distinct germline; 0=off");
+  CONFIG_ADD_VAR(DEMES_HAVE_MERIT, int, 0, "Whether demes have merit; 0=no");
+  CONFIG_ADD_VAR(GERMLINE_COPY_MUT, double, 0.0075, "Prob. of copy mutations occuring during\ngermline replication.");
+  CONFIG_ADD_VAR(GERMLINE_REPLACES_SOURCE, int, 0, "Whether the source germline is updated\non replication; 0=no.");
+  CONFIG_ADD_VAR(GERMLINE_RANDOM_PLACEMENT, int, 0, "Whether the seed for a germline is placed\n randomly within the deme; 0=no.");
+  CONFIG_ADD_VAR(MAX_DEME_AGE, int, 500, "The maximum age of a deme (in updates) to be\nused for age-based replication (default=500).");  
+  
+  
   CONFIG_ADD_GROUP(REPRODUCTION_GROUP, "Birth and Death");
   CONFIG_ADD_VAR(BIRTH_METHOD, int, 0, "Which organism should be replaced on birth?\n0 = Random organism in neighborhood\n1 = Oldest in neighborhood\n2 = Largest Age/Merit in neighborhood\n3 = None (use only empty cells in neighborhood)\n4 = Random from population (Mass Action)\n5 = Oldest in entire population\n6 = Random within deme\n7 = Organism faced by parent\n8 = Next grid cell (id+1)\n9 = Largest energy used in entire population\n10 = Largest energy used in neighborhood");
   CONFIG_ADD_VAR(PREFER_EMPTY, int, 1, "Give empty cells preference in offsping placement?");

Modified: development/source/main/cDeme.cc
===================================================================
--- development/source/main/cDeme.cc	2007-04-27 03:48:40 UTC (rev 1505)
+++ development/source/main/cDeme.cc	2007-04-27 15:12:52 UTC (rev 1506)
@@ -20,20 +20,23 @@
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  *
  */
-
 #include "cDeme.h"
 
+
 cDeme::cDeme()
-  : width(0)
-  , birth_count(0)
-  , org_count(0)
+: width(0)
+, birth_count(0)
+, org_count(0)
+, _age(0)
 {
 }
 
+
 cDeme::~cDeme()
 {
 }
 
+
 void cDeme::Setup(const tArray<int> & in_cells, int in_width)
 {
   cell_ids = in_cells;
@@ -45,6 +48,7 @@
   if (width < 1) width = cell_ids.GetSize();
 }
 
+
 int cDeme::GetCellID(int x, int y) const
 {
   assert(x >= 0 && x < GetWidth());
@@ -54,3 +58,31 @@
   return cell_ids[pos];
 }
 
+
+/*! Note that for this method to work, we blatantly assume that IDs are in
+monotonically increasing order!! */
+std::pair<int, int> cDeme::GetCellPosition(int cellid) const 
+{
+	assert(cell_ids.GetSize()>0);
+  assert(GetWidth() > 0);
+	cellid -= cell_ids[0];
+	return std::make_pair(cellid % GetWidth(), cellid / GetWidth());
+}
+
+
+void cDeme::Reset() 
+{
+  birth_count = 0; 
+  _age = 0;
+}
+
+
+/*! Replacing this deme's germline has the effect of changing the deme's lineage.
+There's still some work to do here; the lineage labels of the Genomes in the germline
+are all messed up.
+
+\todo Fix lineage labels in germlines.
+*/
+void cDeme::ReplaceGermline(const cGermline& germline) {
+	_germline = germline;
+}

Modified: development/source/main/cDeme.h
===================================================================
--- development/source/main/cDeme.h	2007-04-27 03:48:40 UTC (rev 1505)
+++ development/source/main/cDeme.h	2007-04-27 15:12:52 UTC (rev 1506)
@@ -20,27 +20,18 @@
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  *
  */
-
-// DESCRIPTION:
-// Demes are groups of cells in the population that are somehow bound togehter
-// as a unit.  The deme object is used from withing cPopulation to manage these
-// groups.
-
 #ifndef cDeme_h
 #define cDeme_h
 
-#ifndef tArray_h
+#include "cGermline.h"
 #include "tArray.h"
-#endif
 
 
+
+/*! Demes are groups of cells in the population that are somehow bound together
+as a unit.  The deme object is used from within cPopulation to manage these 
+groups. */
 class cDeme {
-private:
-  tArray<int> cell_ids;
-  int width;        // How wide is the deme?
-  int birth_count;  // How many organisms have been born into deme since reset?
-  int org_count;    // How many organisms are currently in the deme?
-
 public:
   cDeme();
   ~cDeme();
@@ -50,11 +41,13 @@
   int GetSize() const { return cell_ids.GetSize(); }
   int GetCellID(int pos) const { return cell_ids[pos]; }
   int GetCellID(int x, int y) const;
+  //! Returns an (x,y) pair for the position of the passed-in cell ID.
+  std::pair<int, int> cDeme::GetCellPosition(int cellid) const;
 
   int GetWidth() const { return width; }
   int GetHeight() const { return cell_ids.GetSize() / width; }
 
-  void Reset() { birth_count = 0; }
+  void Reset();
   int GetBirthCount() const { return birth_count; }
   void IncBirthCount() { birth_count++; }
 
@@ -64,6 +57,28 @@
 
   bool IsEmpty() const { return org_count == 0; }
   bool IsFull() const { return org_count == cell_ids.GetSize(); }
+  
+  // -= Germline =-
+  //! Returns this deme's germline.
+  cGermline& GetGermline() { return _germline; }
+  //! Replaces this deme's germline.
+  void ReplaceGermline(const cGermline& germline);
+  
+  // -= Update support =-
+  //! Called once, at the end of every update.
+  void ProcessUpdate() { ++_age; }
+  /*! Returns the age of this deme, updates.  Age is defined as the number of 
+    updates since the last time Reset() was called. */
+  int GetAge() const { return _age; }
+  
+private:
+  tArray<int> cell_ids;
+  int width; //!< Width of this deme.
+  int birth_count; //!< Number of organisms that have been born into this deme since reset.
+  int org_count; //!< Number of organisms are currently in this deme.
+  int _age; //!< Age of this deme, in updates.
+  
+  cGermline _germline; //!< The germline for this deme, if used.
 };
 
 #endif

Copied: development/source/main/cGermline.h (from rev 1400, branches/dkdev/source/main/cGermline.h)
===================================================================
--- development/source/main/cGermline.h	                        (rev 0)
+++ development/source/main/cGermline.h	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,19 @@
+#ifndef _C_GERMLINE_H_
+#define _C_GERMLINE_H_
+
+#include <vector>
+
+#include "cGenome.h"
+
+
+class cGermline {
+public:
+	cGenome& GetLatest() { return _germline.back(); }
+	void Add(const cGenome& genome) { _germline.push_back(genome); }
+	unsigned int Size() const { return _germline.size(); }
+
+protected:
+	std::vector<cGenome> _germline;
+};
+
+#endif

Modified: development/source/main/cPopulation.cc
===================================================================
--- development/source/main/cPopulation.cc	2007-04-27 03:48:40 UTC (rev 1505)
+++ development/source/main/cPopulation.cc	2007-04-27 15:12:52 UTC (rev 1506)
@@ -40,6 +40,7 @@
 #include "cHardwareManager.h"
 #include "cInitFile.h"
 #include "cInjectGenotype.h"
+#include "cInstSet.h"
 #include "cIntegratedSchedule.h"
 #include "cLineage.h"
 #include "cOrganism.h"
@@ -52,6 +53,7 @@
 #include "cStats.h"
 #include "cTopology.h"
 #include "cWorld.h"
+#include "cTopology.h"
 
 #include <fstream>
 #include <vector>
@@ -839,81 +841,156 @@
 
 void cPopulation::ReplicateDemes(int rep_trigger)
 {
+  assert(GetNumDemes()>1); // Sanity check.
+  
   // Determine which demes should be replicated.
   const int num_demes = GetNumDemes();
   cRandom & random = m_world->GetRandom();
   
   // Loop through all candidate demes...
-  for (int deme_id = 0; deme_id < num_demes; deme_id++) {
-    cDeme & source_deme = deme_array[deme_id];
-    
+	for (int deme_id = 0; deme_id < num_demes; deme_id++) {
+		cDeme & source_deme = deme_array[deme_id];
+
+    // Doesn't make sense to try and replicate a deme that *has no organisms*.
+    if(source_deme.IsEmpty()) continue;
+
     // Test this deme to determine if it should be replicated.  If not,
     // continue on to the next deme.
     switch (rep_trigger) {
-      case 0:    // CASE: Replicate all non-empty demes...
-                 // If this deme is empt, continue looping...
+      case 0: {
+        // Replicate all non-empty demes.
         if (source_deme.IsEmpty()) continue;
         break;
-      case 1:    // Replicate all full demes...
+      }
+      case 1: {
+        // Replicate all full demes.
         if (source_deme.IsFull() == false) continue;
         break;
-      case 2:    // Replicate all demes with the corners filled in.
-      {
+      }
+      case 2: {
+        // Replicate all demes with the corners filled in.
         // The first and last IDs represent the two corners.
-        const int id1 = source_deme.GetCellID(0);
-        const int id2 = source_deme.GetCellID(source_deme.GetSize() - 1);
-        if (cell_array[id1].IsOccupied() == false ||
-            cell_array[id2].IsOccupied() == false) continue;
+				const int id1 = source_deme.GetCellID(0);
+				const int id2 = source_deme.GetCellID(source_deme.GetSize() - 1);
+				if(cell_array[id1].IsOccupied() == false ||
+           cell_array[id2].IsOccupied() == false) continue;
+				break;
       }
+			case 3: {
+        // Replicate old demes.
+        if(source_deme.GetAge() < m_world->GetConfig().MAX_DEME_AGE.Get()) continue;
         break;
-      default:
-        cerr << "ERROR: Invalid replication trigger " << rep_trigger
-        << " in cPopulation::ReplicateDemes()" << endl;
-        continue;
+      }
+			default: {
+				cerr << "ERROR: Invalid replication trigger " << rep_trigger
+				<< " in cPopulation::ReplicateDemes()" << endl;
+        assert(false);
+      }
     }
     
-    // -- If we made it this far, we should replicate this deme --
-    
-    // Choose a random organism from this deme...
-    int cell1_id = -1;
-    const int deme1_size = source_deme.GetSize();
-    while (cell1_id == -1 || cell_array[cell1_id].IsOccupied() == false) {
-      cell1_id = source_deme.GetCellID(random.GetUInt(deme1_size));
-    }
-    
-    // Choose a random target deme to replicate to...
-    int target_id = deme_id;
-    while (target_id == deme_id) target_id = random.GetUInt(num_demes);
-    cDeme & target_deme = deme_array[target_id];
-    
-    // Clear out existing cells in target deme.
-    const int deme2_size = target_deme.GetSize();
-    for (int i = 0; i < deme2_size; i++) {
-      KillOrganism(cell_array[ target_deme.GetCellID(i) ]);
-    }
-    
-    // And do the replication into the central cell of the target deme...
-    const int cell2_id = target_deme.GetCellID( deme2_size/2 );
-    InjectClone( cell2_id, *(cell_array[cell1_id].GetOrganism()) );    
-    
-    // Clear out the source deme to reset it
-    for (int i = 0; i < deme1_size; i++) {
-      KillOrganism(cell_array[ source_deme.GetCellID(i) ]);
-    }
-    
-    // Inject the target offspring back into the source ID.
-    const int cell3_id = source_deme.GetCellID( deme1_size/2 );
-    InjectClone( cell3_id, *(cell_array[cell2_id].GetOrganism()) );        
-    
-    // Rotate both injected cells to face northwest.
-    cell_array[cell2_id].Rotate(
-                                cell_array[GridNeighbor(cell2_id, world_x, world_y, -1, -1)] );
-    cell_array[cell3_id].Rotate(
-                                cell_array[GridNeighbor(cell3_id, world_x, world_y, -1, -1)] );
-  }
+		// -- If we made it this far, we should replicate this deme --
+		cRandom& random = m_world->GetRandom();
+		
+		// Choose a random target deme to replicate to, and kill all the organisms
+		// in that deme.
+		int target_id = deme_id;
+		while(target_id == deme_id) {
+			target_id = random.GetUInt(num_demes);
+		}
+		cDeme& target_deme = deme_array[target_id];
+		for (int i=0; i<target_deme.GetSize(); i++) {
+			KillOrganism(cell_array[target_deme.GetCellID(i)]);
+		}
+		
+		// Ok, there are two potential places where the seed for the target deme can
+		// come from.  First, it could be a random organism in the source deme.
+		// Second, it could be an offspring of the source deme's germline, if the config
+		// option DEMES_USE_GERMLINE is set.
+		if(m_world->GetConfig().DEMES_USE_GERMLINE.Get()) {
+			// Get the latest germ from the source deme.
+			cGermline& source_germline = source_deme.GetGermline();
+			cGenome& source_germ = source_germline.GetLatest();
+      
+      // Now create the next germ by manually mutating the source.
+      // @refactor (strategy pattern)
+      cGenome next_germ(source_germ);
+      if(m_world->GetConfig().GERMLINE_COPY_MUT.Get() > 0) {
+        const cInstSet& instset = m_world->GetHardwareManager().GetInstSet();
+        cAvidaContext ctx(m_world->GetRandom());        
+        for(int i=0; i<next_germ.GetSize(); ++i) {
+          if(m_world->GetRandom().P(m_world->GetConfig().GERMLINE_COPY_MUT.Get())) {
+            next_germ[i] = instset.GetRandomInst(ctx);
+          }
+        }
+      }
+      
+			// Here we're adding the next_germ to the germline(s).  Note the
+      // config option to determine if we should update the source_germline
+      // as well.
+			target_deme.ReplaceGermline(source_germline);
+      cGermline& target_germline = target_deme.GetGermline();
+      target_germline.Add(next_germ);
+      if(m_world->GetConfig().GERMLINE_REPLACES_SOURCE.Get()) {
+        source_germline.Add(next_germ);
+      }
+      
+      // Kill all the organisms in the source deme.
+			for (int i=0; i<source_deme.GetSize(); i++) {
+				KillOrganism(cell_array[source_deme.GetCellID(i)]);
+			}
+      
+			// Lineage label is wrong here; fix.
+      if(m_world->GetConfig().GERMLINE_RANDOM_PLACEMENT.Get()) {
+        InjectGenome(source_deme.GetCellID(m_world->GetRandom().GetInt(0, source_deme.GetSize()-1)),
+                     source_germline.GetLatest(), 0);
+        InjectGenome(target_deme.GetCellID(m_world->GetRandom().GetInt(0, target_deme.GetSize()-1)),
+                     target_germline.GetLatest(), 0);
+      } else {
+        InjectGenome(source_deme.GetCellID(source_deme.GetSize()/2), source_germline.GetLatest(), 0);
+        InjectGenome(target_deme.GetCellID(target_deme.GetSize()/2), target_germline.GetLatest(), 0);
+      }
+			
+			// Note: not rotating the clones.
+		} else {
+			// Not using germline; choose a random organism from this deme.
+			int cell1_id = -1;
+			while (cell1_id == -1 || cell_array[cell1_id].IsOccupied() == false) {
+				cell1_id = source_deme.GetCellID(random.GetUInt(source_deme.GetSize()));
+			}
+			
+			cOrganism* seed = cell_array[cell1_id].GetOrganism();
+			
+			// And do the replication into the central cell of the target deme...
+			const int cell2_id = target_deme.GetCellID(target_deme.GetWidth()/2, target_deme.GetHeight()/2);
+			InjectClone(cell2_id, *seed);
+      
+			// Kill all the organisms in the source deme.
+			seed = 0; // Note that we're killing the organism that seed points to.
+			for (int i=0; i<source_deme.GetSize(); i++) {
+				KillOrganism(cell_array[source_deme.GetCellID(i)]);
+			}
+			
+			// Inject the target offspring back into the source ID.
+			const int cell3_id = source_deme.GetCellID(source_deme.GetWidth()/2, source_deme.GetHeight()/2);
+			InjectClone(cell3_id, *cell_array[cell2_id].GetOrganism());
+      
+			// Rotate both injected cells to face northwest.
+      int offset=target_deme.GetCellID(0);
+			cell_array[cell2_id].Rotate(cell_array[GridNeighbor(cell2_id-offset,
+                                                          target_deme.GetWidth(), 
+                                                          target_deme.GetHeight(), -1, -1)+offset]);
+      offset = source_deme.GetCellID(0);
+			cell_array[cell3_id].Rotate(cell_array[GridNeighbor(cell3_id-offset,
+                                                          source_deme.GetWidth(),
+                                                          source_deme.GetHeight(), -1, -1)+offset]);
+		}
+		
+		// And reset both demes, in case they have any cleanup work to do.
+		source_deme.Reset();
+		target_deme.Reset();
+	}
 }
 
-
 // Loop through all demes to determine if any are ready to be divided.  All
 // full demes have 1/2 of their organisms (the odd ones) moved into a new deme.
 
@@ -1986,6 +2063,14 @@
   schedule->Adjust(cell_id, phenotype.GetMerit());
   
   LineageSetupOrganism(GetCell(cell_id).GetOrganism(), 0, lineage_label);
+  
+  // If we're using germlines, then we have to be a little careful here.
+	if(m_world->GetConfig().DEMES_USE_GERMLINE.Get()) {
+		cDeme& deme = deme_array[GetCell(cell_id).GetDemeID()];
+		if(deme.GetGermline().Size()==0) {  
+			deme.GetGermline().Add(GetCell(cell_id).GetOrganism()->GetGenome());
+		}
+	}  
 }
 
 void cPopulation::InjectParasite(const cCodeLabel& label, const cGenome& injected_code, int cell_id)

Modified: development/source/main/cPopulation.h
===================================================================
--- development/source/main/cPopulation.h	2007-04-27 03:48:40 UTC (rev 1505)
+++ development/source/main/cPopulation.h	2007-04-27 15:12:52 UTC (rev 1506)
@@ -190,6 +190,7 @@
   int GetWorldX() { return world_x; }
   int GetWorldY() { return world_y; }
   int GetNumDemes() { return deme_array.GetSize(); }
+  cDeme& GetDeme(int i) { return deme_array[i]; }
 
   cPopulationCell& GetCell(int in_num);
   const tArray<double>& GetResources() const { return resource_count.GetResources(); }

Modified: development/source/tools/cTopology.h
===================================================================
--- development/source/tools/cTopology.h	2007-04-27 03:48:40 UTC (rev 1505)
+++ development/source/tools/cTopology.h	2007-04-27 15:12:52 UTC (rev 1506)
@@ -7,8 +7,9 @@
 topology out of a given range of cells.  In every case, the range of cells is 
 specified by a begin/end iterator pair.
 */
+#ifndef _C_TOPOLOGY_H_
+#define _C_TOPOLOGY_H_
 
-
 /*! Builds a torus topology out of the cells betwen the iterators.
 In a torus, each cell is connected to up to 8 neighbors (including diagonals), 
 and connections DO wrap around the logical edges of the torus.
@@ -86,3 +87,5 @@
     }
   }
 }
+
+#endif

Modified: development/support/config/avida.cfg
===================================================================
--- development/support/config/avida.cfg	2007-04-27 03:48:40 UTC (rev 1505)
+++ development/support/config/avida.cfg	2007-04-27 15:12:52 UTC (rev 1506)
@@ -20,12 +20,13 @@
 WORLD_Y 60        # Height of the Avida world
 WORLD_GEOMETRY 2  # 1 = Bounded Grid
                   # 2 = Torus
-                  # 3 - Clique
-NUM_DEMES 0       # Number of independed groups in the population; 0=off
+                  # 3 = Clique
 RANDOM_SEED 0     # Random number seed (0 for based on time)
 HARDWARE_TYPE 0   # 0 = Original CPUs
                   # 1 = New SMT CPUs
                   # 2 = Transitional SMT
+                  # 3 = Experimental CPU
+                  # 4 = Gene Expression CPU
 
 ### CONFIG_FILE_GROUP ###
 # Configuration Files
@@ -36,6 +37,20 @@
 ENVIRONMENT_FILE environment.cfg    # File that describes the environment
 START_CREATURE default-classic.org  # Organism to seed the soup
 
+### DEME_GROUP ###
+# Demes and Germlines
+NUM_DEMES 1                  # Number of independent groups in the population.
+DEMES_USE_GERMLINE 0         # Whether demes use a distinct germline; 0=off
+DEMES_HAVE_MERIT 0           # Whether demes have merit; 0=no
+GERMLINE_COPY_MUT 0.0075     # Prob. of copy mutations occuring during
+                             # germline replication.
+GERMLINE_REPLACES_SOURCE 0   # Whether the source germline is updated
+                             # on replication; 0=no.
+GERMLINE_RANDOM_PLACEMENT 0  # Whether the seed for a germline is placed
+                             #  randomly within the deme; 0=no.
+MAX_DEME_AGE 500             # The maximum age of a deme (in updates) to be
+                             # used for age-based replication (default=500).
+
 ### REPRODUCTION_GROUP ###
 # Birth and Death
 BIRTH_METHOD 0           # Which organism should be replaced on birth?

Added: development/tests/demes_clique_repl/config/avida.cfg
===================================================================
--- development/tests/demes_clique_repl/config/avida.cfg	                        (rev 0)
+++ development/tests/demes_clique_repl/config/avida.cfg	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,257 @@
+#############################################################################
+# This file includes all the basic run-time defines for Avida.
+# For more information, see doc/config.html
+#############################################################################
+
+VERSION_ID 2.7.0   # Do not change this value.
+
+### GENERAL_GROUP ###
+# General Settings
+ANALYZE_MODE 0  # 0 = Disabled
+                # 1 = Enabled
+                # 2 = Interactive
+VIEW_MODE 1     # Initial viewer screen
+CLONE_FILE -    # Clone file to load
+VERBOSITY 1     # Control output verbosity
+
+### ARCH_GROUP ###
+# Architecture Variables
+WORLD_X 10        # Width of the Avida world
+WORLD_Y 1000      # Height of the Avida world
+WORLD_GEOMETRY 3  # 1 = Bounded Grid
+                  # 2 = Torus
+                  # 3 = Clique
+RANDOM_SEED 0     # Random number seed (0 for based on time)
+HARDWARE_TYPE 0   # 0 = Original CPUs
+                  # 1 = New SMT CPUs
+                  # 2 = Transitional SMT
+                  # 3 = Experimental CPU
+                  # 4 = Gene Expression CPU
+
+### CONFIG_FILE_GROUP ###
+# Configuration Files
+DATA_DIR data                       # Directory in which config files are found
+INST_SET -                          # File containing instruction set
+EVENT_FILE events.cfg               # File containing list of events during run
+ANALYZE_FILE analyze.cfg            # File used for analysis mode
+ENVIRONMENT_FILE environment.cfg    # File that describes the environment
+START_CREATURE default-classic.org  # Organism to seed the soup
+
+### DEME_GROUP ###
+# Demes and Germlines
+NUM_DEMES 100                # Number of independent groups in the population.
+DEMES_USE_GERMLINE 0         # Whether demes use a distinct germline; 0=off
+DEMES_HAVE_MERIT 0           # Whether demes have merit; 0=no
+GERMLINE_COPY_MUT 0.0075     # Prob. of copy mutations occuring during
+                             # germline replication.
+GERMLINE_REPLACES_SOURCE 0   # Whether the source germline is updated
+                             # on replication; 0=no.
+GERMLINE_RANDOM_PLACEMENT 0  # Whether the seed for a germline is placed
+                             #  randomly within the deme; 0=no.
+MAX_DEME_AGE 40              # The maximum age of a deme (in updates) to be
+                             # used for age-based replication (default=500).
+
+### REPRODUCTION_GROUP ###
+# Birth and Death
+BIRTH_METHOD 0           # Which organism should be replaced on birth?
+                         # 0 = Random organism in neighborhood
+                         # 1 = Oldest in neighborhood
+                         # 2 = Largest Age/Merit in neighborhood
+                         # 3 = None (use only empty cells in neighborhood)
+                         # 4 = Random from population (Mass Action)
+                         # 5 = Oldest in entire population
+                         # 6 = Random within deme
+                         # 7 = Organism faced by parent
+                         # 8 = Next grid cell (id+1)
+                         # 9 = Largest energy used in entire population
+                         # 10 = Largest energy used in neighborhood
+PREFER_EMPTY 1           # Give empty cells preference in offsping placement?
+ALLOW_PARENT 1           # Allow births to replace the parent organism?
+DEATH_METHOD 2           # 0 = Never die of old age.
+                         # 1 = Die when inst executed = AGE_LIMIT (+deviation)
+                         # 2 = Die when inst executed = length*AGE_LIMIT (+dev)
+AGE_LIMIT 20             # Modifies DEATH_METHOD
+AGE_DEVIATION 0          # Creates a distribution around AGE_LIMIT
+ALLOC_METHOD 0           # (Orignal CPU Only)
+                         # 0 = Allocated space is set to default instruction.
+                         # 1 = Set to section of dead genome (Necrophilia)
+                         # 2 = Allocated space is set to random instruction.
+DIVIDE_METHOD 1          # 0 = Divide leaves state of mother untouched.
+                         # 1 = Divide resets state of mother
+                         #     (after the divide, we have 2 children)
+                         # 2 = Divide resets state of current thread only
+                         #     (does not touch possible parasite threads)
+GENERATION_INC_METHOD 1  # 0 = Only the generation of the child is
+                         #     increased on divide.
+                         # 1 = Both the generation of the mother and child are
+                         #     increased on divide (good with DIVIDE_METHOD 1).
+
+### RECOMBINATION_GROUP ###
+# Sexual Recombination and Modularity
+RECOMBINATION_PROB 1.0  # probability of recombination in div-sex
+MAX_BIRTH_WAIT_TIME -1  # Updates incipiant orgs can wait for crossover
+MODULE_NUM 0            # number of modules in the genome
+CONT_REC_REGS 1         # are (modular) recombination regions continuous
+CORESPOND_REC_REGS 1    # are (modular) recombination regions swapped randomly
+                        #  or with corresponding positions?
+TWO_FOLD_COST_SEX 0     # 1 = only one recombined offspring is born.
+                        # 2 = both offspring are born
+SAME_LENGTH_SEX 0       # 0 = recombine with any genome
+                        # 1 = only recombine w/ same length
+
+### DIVIDE_GROUP ###
+# Divide Restrictions
+CHILD_SIZE_RANGE 2.0  # Maximal differential between child and parent sizes.
+MIN_COPIED_LINES 0.5  # Code fraction which must be copied before divide.
+MIN_EXE_LINES 0.5     # Code fraction which must be executed before divide.
+REQUIRE_ALLOCATE 1    # (Original CPU Only) Require allocate before divide?
+REQUIRED_TASK -1      # Task ID required for successful divide.
+IMMUNITY_TASK -1      # Task providing immunity from the required task.
+REQUIRED_REACTION -1  # Reaction ID required for successful divide.
+REQUIRED_BONUS 0      # The bonus that an organism must accumulate to divide.
+
+### MUTATION_GROUP ###
+# Mutations
+POINT_MUT_PROB 0.0    # Mutation rate (per-location per update)
+COPY_MUT_PROB 0.0075  # Mutation rate (per copy)
+INS_MUT_PROB 0.0      # Insertion rate (per site, applied on divide)
+DEL_MUT_PROB 0.0      # Deletion rate (per site, applied on divide)
+DIV_MUT_PROB 0.0      # Mutation rate (per site, applied on divide)
+DIVIDE_MUT_PROB 0.0   # Mutation rate (per divide)
+DIVIDE_INS_PROB 0.05  # Insertion rate (per divide)
+DIVIDE_DEL_PROB 0.05  # Deletion rate (per divide)
+PARENT_MUT_PROB 0.0   # Per-site, in parent, on divide
+SPECIAL_MUT_LINE -1   # If this is >= 0, ONLY this line is mutated
+INJECT_INS_PROB 0.0   # Insertion rate (per site, applied on inject)
+INJECT_DEL_PROB 0.0   # Deletion rate (per site, applied on inject)
+INJECT_MUT_PROB 0.0   # Mutation rate (per site, applied on inject)
+META_COPY_MUT 0.0     # Prob. of copy mutation rate changing (per gen)
+META_STD_DEV 0.0      # Standard deviation of meta mutation size.
+MUT_RATE_SOURCE 1     # 1 = Mutation rates determined by environment.
+                      # 2 = Mutation rates inherited from parent.
+
+### REVERSION_GROUP ###
+# Mutation Reversion
+# These slow down avida a lot, and should be set to 0.0 normally.
+REVERT_FATAL 0.0           # Should any mutations be reverted on birth?
+REVERT_DETRIMENTAL 0.0     #   0.0 to 1.0; Probability of reversion.
+REVERT_NEUTRAL 0.0         # 
+REVERT_BENEFICIAL 0.0      # 
+STERILIZE_FATAL 0.0        # Should any mutations clear (kill) the organism?
+STERILIZE_DETRIMENTAL 0.0  # 
+STERILIZE_NEUTRAL 0.0      # 
+STERILIZE_BENEFICIAL 0.0   # 
+FAIL_IMPLICIT 0            # Should copies that failed *not* due to mutations
+                           # be eliminated?
+NEUTRAL_MAX 0.0            # The percent benifical change from parent fitness to be considered neutral.
+NEUTRAL_MIN 0.0            # The percent deleterious change from parent fitness to be considered neutral.
+
+### TIME_GROUP ###
+# Time Slicing
+AVE_TIME_SLICE 30        # Ave number of insts per org per update
+SLICING_METHOD 1         # 0 = CONSTANT: all organisms get default...
+                         # 1 = PROBABILISTIC: Run _prob_ proportional to merit.
+                         # 2 = INTEGRATED: Perfectly integrated deterministic.
+BASE_MERIT_METHOD 4      # 0 = Constant (merit independent of size)
+                         # 1 = Merit proportional to copied size
+                         # 2 = Merit prop. to executed size
+                         # 3 = Merit prop. to full size
+                         # 4 = Merit prop. to min of executed or copied size
+                         # 5 = Merit prop. to sqrt of the minimum size
+                         # 6 = Merit prop. to num times MERIT_BONUS_INST is in genome.
+BASE_CONST_MERIT 100     # Base merit when BASE_MERIT_METHOD set to 0
+DEFAULT_BONUS 1.0        # Initial bonus before any tasks
+MERIT_DEFAULT_BONUS 0    # Scale the merit of an offspring by the default bonus
+                         # rather than the accumulated bonus of the parent?
+MERIT_BONUS_INST 0       # in BASE_MERIT_METHOD 6, this sets which instruction counts (-1=none, 0= 1st in INST_SET.)
+MERIT_BONUS_EFFECT 0     # in BASE_MERIT_METHOD 6, this sets how much merit is earned per INST (-1=penalty, 0= no effect.)
+FITNESS_VALLEY 0         # in BASE_MERIT_METHOD 6, this creates valleys from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP (0= off, 1=on)
+FITNESS_VALLEY_START 0   # if FITNESS_VALLEY =1, orgs with num_key_instructions from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP get fitness 1 (lowest)
+FITNESS_VALLEY_STOP 0    # if FITNESS_VALLEY =1, orgs with num_key_instructions from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP get fitness 1 (lowest)
+MAX_CPU_THREADS 1        # Number of Threads a CPU can spawn
+THREAD_SLICING_METHOD 0  # Formula for and organism's thread slicing
+                         #   (num_threads-1) * THREAD_SLICING_METHOD + 1
+                         # 0 = One thread executed per time slice.
+                         # 1 = All threads executed each time slice.
+MAX_LABEL_EXE_SIZE 1     # Max nops marked as executed when labels are used
+DONATE_SIZE 5.0          # Amount of merit donated with 'donate' command
+DONATE_MULT 10.0         # Multiple of merit given that the target receives.
+MAX_DONATE_KIN_DIST -1   # Limit on distance of relation for donate; -1=no max
+MAX_DONATE_EDIT_DIST -1  # Limit on edit distance for donate; -1=no max
+MAX_DONATES 1000000      # Limit on number of donates organisms are allowed.
+
+### PROMOTER_GROUP ###
+# Promoters
+PROMOTERS_ENABLED 0             # Use the promoter/terminator execution scheme.
+                                # Certain instructions must also be included.
+PROMOTER_PROCESSIVITY 1.0       # Chance of not terminating after each cpu cycle.
+PROMOTER_PROCESSIVITY_INST 1.0  # Chance of not terminating after each instruction.
+PROMOTER_BG_STRENGTH 0          # Probability of positions that are not promoter
+                                # instructions initiating execution (promoters are 1).
+REGULATION_STRENGTH 1           # Strength added or subtracted to a promoter by regulation.
+REGULATION_DECAY_FRAC 0.1       # Fraction of regulation that decays away. 
+                                # Max regulation = 2^(REGULATION_STRENGTH/REGULATION_DECAY_FRAC)
+
+### GENEOLOGY_GROUP ###
+# Geneology
+TRACK_MAIN_LINEAGE 1  # Keep all ancestors of the active population?
+                      # 0=no, 1=yes, 2=yes,w/sexual population
+THRESHOLD 3           # Number of organisms in a genotype needed for it
+                      #   to be considered viable.
+GENOTYPE_PRINT 0      # 0/1 (off/on) Print out all threshold genotypes?
+GENOTYPE_PRINT_DOM 0  # Print out a genotype if it stays dominant for
+                      #   this many updates. (0 = off)
+SPECIES_THRESHOLD 2   # max failure count for organisms to be same species
+SPECIES_RECORDING 0   # 1 = full, 2 = limited search (parent only)
+SPECIES_PRINT 0       # 0/1 (off/on) Print out all species?
+TEST_CPU_TIME_MOD 20  # Time allocated in test CPUs (multiple of length)
+
+### LOG_GROUP ###
+# Log Files
+LOG_CREATURES 0  # 0/1 (off/on) toggle to print file.
+LOG_GENOTYPES 0  # 0 = off, 1 = print ALL, 2 = print threshold ONLY.
+LOG_THRESHOLD 0  # 0/1 (off/on) toggle to print file.
+LOG_SPECIES 0    # 0/1 (off/on) toggle to print file.
+
+### LINEAGE_GROUP ###
+# Lineage
+# NOTE: This should probably be called "Clade"
+# This one can slow down avida a lot. It is used to get an idea of how
+# often an advantageous mutation arises, and where it goes afterwards.
+# Lineage creation options are.  Works only when LOG_LINEAGES is set to 1.
+#   0 = manual creation (on inject, use successive integers as lineage labels).
+#   1 = when a child's (potential) fitness is higher than that of its parent.
+#   2 = when a child's (potential) fitness is higher than max in population.
+#   3 = when a child's (potential) fitness is higher than max in dom. lineage
+# *and* the child is in the dominant lineage, or (2)
+#   4 = when a child's (potential) fitness is higher than max in dom. lineage
+# (and that of its own lineage)
+#   5 = same as child's (potential) fitness is higher than that of the
+#       currently dominant organism, and also than that of any organism
+#       currently in the same lineage.
+#   6 = when a child's (potential) fitness is higher than any organism
+#       currently in the same lineage.
+#   7 = when a child's (potential) fitness is higher than that of any
+#       organism in its line of descent
+LOG_LINEAGES 0             # 
+LINEAGE_CREATION_METHOD 0  # 
+
+### ORGANISM_NETWORK_GROUP ###
+# Organism Network Communication
+NET_ENABLED 0      # Enable Network Communication Support
+NET_DROP_PROB 0.0  # Message drop rate
+NET_MUT_PROB 0.0   # Message corruption probability
+NET_MUT_TYPE 0     # Type of message corruption.  0 = Random Single Bit, 1 = Always Flip Last
+NET_STYLE 0        # Communication Style.  0 = Random Next, 1 = Receiver Facing
+
+### BUY_SELL_GROUP ###
+# Buying and Selling Parameters
+SAVE_RECEIVED 0  # Enable storage of all inputs bought from other orgs
+BUY_PRICE 0      # price offered by organisms attempting to buy
+SELL_PRICE 0     # price offered by organisms attempting to sell
+
+### ANALYZE_GROUP ###
+# Analysis Settings
+MT_CONCURRENCY 1   # Number of concurrent analyze threads
+ANALYZE_OPTION_1   # String variable accessible from analysis scripts
+ANALYZE_OPTION_2   # String variable accessible from analysis scripts

Added: development/tests/demes_clique_repl/config/default-classic.org
===================================================================
--- development/tests/demes_clique_repl/config/default-classic.org	                        (rev 0)
+++ development/tests/demes_clique_repl/config/default-classic.org	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,100 @@
+h-alloc    # Allocate space for child
+h-search   # Locate the end of the organism
+nop-C      #
+nop-A      #
+mov-head   # Place write-head at beginning of offspring.
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+h-search   # Mark the beginning of the copy loop
+h-copy     # Do the copy
+if-label   # If we're done copying....
+nop-C      #
+nop-A      #
+h-divide   #    ...divide!
+mov-head   # Otherwise, loop back to the beginning of the copy loop.
+nop-A      # End label.
+nop-B      #

Added: development/tests/demes_clique_repl/config/environment.cfg
===================================================================
--- development/tests/demes_clique_repl/config/environment.cfg	                        (rev 0)
+++ development/tests/demes_clique_repl/config/environment.cfg	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,9 @@
+REACTION  NOT  not   process:value=1.0:type=pow  requisite:max_count=1
+REACTION  NAND nand  process:value=1.0:type=pow  requisite:max_count=1
+REACTION  AND  and   process:value=2.0:type=pow  requisite:max_count=1
+REACTION  ORN  orn   process:value=2.0:type=pow  requisite:max_count=1
+REACTION  OR   or    process:value=3.0:type=pow  requisite:max_count=1
+REACTION  ANDN andn  process:value=3.0:type=pow  requisite:max_count=1
+REACTION  NOR  nor   process:value=4.0:type=pow  requisite:max_count=1
+REACTION  XOR  xor   process:value=4.0:type=pow  requisite:max_count=1
+REACTION  EQU  equ   process:value=5.0:type=pow  requisite:max_count=1

Added: development/tests/demes_clique_repl/config/events.cfg
===================================================================
--- development/tests/demes_clique_repl/config/events.cfg	                        (rev 0)
+++ development/tests/demes_clique_repl/config/events.cfg	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,19 @@
+# Print all of the standard data files...
+u 0 InjectDemes
+u 0:10:end PrintAverageData       # Save info about they average genotypes
+u 0:10:end PrintDominantData      # Save info about most abundant genotypes
+u 0:10:end PrintStatsData         # Collect satistics about entire pop.
+u 0:10:end PrintCountData         # Count organisms, genotypes, species, etc.
+u 0:10:end PrintTasksData         # Save organisms counts for each task.
+u 0:10:end PrintTimeData          # Track time conversion (generations, etc.)
+u 0:10:end PrintResourceData      # Track resource abundance.
+u 0:10:end PrintDominantGenotype      # Save the most abundant genotypes
+u 0:10:end PrintTasksExeData    # Num. times tasks have been executed.
+u 0:10:end PrintTasksQualData   # Task quality information
+
+u 1:1:end ReplicateDemes deme-age
+
+# Setup the exit time and full population data collection.
+u 100 SavePopulation         # Save current state of population.
+u 100 SaveHistoricPopulation # Save ancestors of current population.
+u 100 exit                        # exit

Added: development/tests/demes_clique_repl/config/instset-classic.cfg
===================================================================
--- development/tests/demes_clique_repl/config/instset-classic.cfg	                        (rev 0)
+++ development/tests/demes_clique_repl/config/instset-classic.cfg	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,28 @@
+nop-A      1   # a
+nop-B      1   # b
+nop-C      1   # c
+if-n-equ   1   # d
+if-less    1   # e
+pop        1   # f
+push       1   # g
+swap-stk   1   # h
+swap       1   # i 
+shift-r    1   # j
+shift-l    1   # k
+inc        1   # l
+dec        1   # m
+add        1   # n
+sub        1   # o
+nand       1   # p
+IO         1   # q   Puts current contents of register and gets new.
+h-alloc    1   # r   Allocate as much memory as organism can use.
+h-divide   1   # s   Cuts off everything between the read and write heads
+h-copy     1   # t   Combine h-read and h-write
+h-search   1   # u   Search for matching template, set flow head & return info
+               #   #   if no template, move flow-head here, set size&offset=0.
+mov-head   1   # v   Move ?IP? head to flow control.
+jmp-head   1   # w   Move ?IP? head by fixed amount in CX.  Set old pos in CX.
+get-head   1   # x   Get position of specified head in CX.
+if-label   1   # y
+set-flow   1   # z   Move flow-head to address in ?CX? 
+

Added: development/tests/demes_clique_repl/expected/data/archive/100-aaaaa.org
===================================================================
--- development/tests/demes_clique_repl/expected/data/archive/100-aaaaa.org	                        (rev 0)
+++ development/tests/demes_clique_repl/expected/data/archive/100-aaaaa.org	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,134 @@
+# Fri Apr 27 10:46:48 2007
+# Filename........: archive/100-aaaaa.org
+# Update Output...: 100
+# Is Viable.......: 1
+# Repro Cycle Size: 0
+# Depth to Viable.: 0
+# Update Created..: -1
+# Genotype ID.....: 1
+# Parent Gen ID...: -1
+# Tree Depth......: 0
+# Parent Distance.: -1
+# 
+# Generation: 0
+# Merit...........: 97.000000
+# Gestation Time..: 389
+# Fitness.........: 0.249357
+# Errors..........: 0
+# Genome Size.....: 100
+# Copied Size.....: 100
+# Executed Size...: 97
+# Offspring.......: SELF
+# 
+# Tasks Performed:
+# not 0 (0.000000)
+# nand 0 (0.000000)
+# and 0 (0.000000)
+# orn 0 (0.000000)
+# or 0 (0.000000)
+# andn 0 (0.000000)
+# nor 0 (0.000000)
+# xor 0 (0.000000)
+# equ 0 (0.000000)
+
+
+h-alloc
+h-search
+nop-C
+nop-A
+mov-head
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+h-search
+h-copy
+if-label
+nop-C
+nop-A
+h-divide
+mov-head
+nop-A
+nop-B

Added: development/tests/demes_clique_repl/expected/data/average.dat
===================================================================
--- development/tests/demes_clique_repl/expected/data/average.dat	                        (rev 0)
+++ development/tests/demes_clique_repl/expected/data/average.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,30 @@
+# Avida Average Data
+# Fri Apr 27 10:46:46 2007
+#  1: Update
+#  2: Merit
+#  3: Gestation Time
+#  4: Fitness
+#  5: Repro Rate?
+#  6: Size
+#  7: Copied Size
+#  8: Executed Size
+#  9: Abundance
+# 10: Proportion of organisms that gave birth in this update
+# 11: Proportion of Breed True Organisms
+# 12: Genotype Depth
+# 13: Generation
+# 14: Neutral Metric
+# 15: Lineage Label
+# 16: True Replication Rate (based on births/update, time-averaged)
+
+0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 101.000000 101.000000 0.000000 0.000000 0.000000 0.000000 0.000000 
+10 97 389 0 0 100 100 97 0 0 0 0 0 0 0 0 
+20 97 389 0.249357 0 99.985 100 97 3.77358 0 0 0.275 1 -0.180368 0 0 
+30 95.6752 387.614 0.246577 0 99.9744 99.4859 95.6752 2.42857 0 0 0.549872 1.97698 -0.104812 0 0 
+40 95.96 387.53 0.247284 0 100 99.51 95.96 2.63158 0 0 0.74 2.38 0.245623 -1 0 
+50 94.098 385.245 0.243369 0 100 98.5392 94.098 2.61538 0.0196078 0 0.764706 2.43137 0.197623 -1 0 
+60 95.1917 386.098 0.246002 0 100.01 98.9689 95.1917 2.19318 0.00518135 0 0.984456 3.36788 0.128292 -1 0 
+70 95.4027 386.175 0.24664 0 100.301 99.1836 95.4027 2.03911 0 0 1.22466 4.33425 0.275768 -1 0 
+80 94.73 385.4 0.245118 0 100.11 99.02 94.73 2.22222 0 0 1.34 5.02 0.0306222 -1 0 
+90 94.73 385.4 0.245118 0 100.11 99.02 94.73 2.22222 0 0 1.34 5.02 0.0306222 -1 0 
+100 95.1649 385.739 0.246248 0 100.144 99.2447 95.1649 1.84314 0.00531915 0 1.60106 6.05851 0.242619 -1 0 

Added: development/tests/demes_clique_repl/expected/data/count.dat
===================================================================
--- development/tests/demes_clique_repl/expected/data/count.dat	                        (rev 0)
+++ development/tests/demes_clique_repl/expected/data/count.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,30 @@
+# Avida count data
+# Fri Apr 27 10:46:46 2007
+#  1: update
+#  2: number of insts executed this update
+#  3: number of organisms
+#  4: number of different genotypes
+#  5: number of different threshold genotypes
+#  6: number of different species
+#  7: number of different threshold species
+#  8: number of different lineages
+#  9: number of births in this update
+# 10: number of deaths in this update
+# 11: number of breed true
+# 12: number of breed true organisms?
+# 13: number of no-birth organisms
+# 14: number of single-threaded organisms
+# 15: number of multi-threaded organisms
+# 16: number of modified organisms
+
+0 30 1 1 1 0 0 0 101 1 101 1 1 1 0 0 
+10 3000 100 1 1 0 0 0 0 0 0 100 100 100 0 0 
+20 6000 200 53 2 0 0 0 0 0 0 145 100 200 0 0 
+30 11730 391 161 2 0 0 0 0 0 0 222 200 391 0 0 
+40 3000 100 38 9 0 0 0 0 0 0 14 100 100 0 0 
+50 3000 102 39 9 0 0 0 2 0 0 14 100 102 0 0 
+60 5760 193 88 21 0 0 0 1 0 0 56 100 193 0 0 
+70 10950 365 179 24 0 0 0 0 0 0 132 190 365 0 0 
+80 3000 100 45 26 0 0 0 0 0 0 9 100 100 0 0 
+90 3000 100 45 26 0 0 0 0 0 0 9 100 100 0 0 
+100 5610 188 102 33 0 0 0 1 0 0 40 100 188 0 0 

Added: development/tests/demes_clique_repl/expected/data/detail-100.pop
===================================================================
--- development/tests/demes_clique_repl/expected/data/detail-100.pop	                        (rev 0)
+++ development/tests/demes_clique_repl/expected/data/detail-100.pop	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,119 @@
+#filetype genotype_data
+#format id parent_id parent_dist num_cpus total_cpus length merit gest_time fitness update_born update_dead depth sequence
+
+#  1: ID
+#  2: parent ID
+#  3: parent distance
+#  4: number of orgranisms currently alive
+#  5: total number of organisms that ever existed
+#  6: length of genome
+#  7: merit
+#  8: gestation time
+#  9: fitness
+# 10: update born
+# 11: update deactivated
+# 12: depth in phylogentic tree
+# 13: genome of organism
+
+1 -1 -1 36 417 100 97 389 0.249357 -1 -1 0 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+236 1 1 4 6 100 97 388 0.25 52 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccicccccccccccccccccccccccccccccutycasvab 
+487 242 3 4 5 100 97 385 0.251948 79 -1 3 rucavcccccccccccccpccccccccccccccmccccccjcccccccccccccccccccccccccccccccccvcccccccccccccccqutycasvab 
+91 1 1 4 15 100 97 388 0.25 26 -1 1 rucavccccccccccncccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+302 255 2 3 4 100 97 382 0.253927 65 -1 2 rucavcccbccczcccccccccccccccccccccccccgcctccccccccccccccccccccccccccccccccccccmcccccccxccccutycasvab 
+327 1 2 3 4 100 97 388 0.25 65 -1 1 rucavcccccccccccccccmccccccccccccccccccccccccrcccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+285 128 2 3 4 99 96 380 0.252632 64 -1 2 rucavctccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccfcccccccccccccccccccccccutycasvab 
+337 1 1 3 4 100 97 388 0.25 66 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccutycasvab 
+200 105 1 3 9 100 97 387 0.250646 39 -1 2 rucavcccccccccccccccccccccccccccccccccccccccxccccscpcccccccccccccccccccccccccccccccccccccccutycasvab 
+454 1 1 3 4 100 97 389 0.249357 78 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccrcccccccccccccccccccccccccccccccccccccutycasvab 
+93 1 1 3 11 100 97 388 0.25 26 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccckcccccccccccccccccccccccccccccccccccccccccutycasvab 
+383 144 1 3 4 100 96 386 0.248705 77 -1 3 rucavcccccccccccceqcccccccccjcccccccccccccccccnccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+122 1 1 2 9 100 97 388 0.25 27 -1 1 rucavcccccccccccccccccccccccccccccmccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+469 315 4 2 3 101 97 388 0.25 78 -1 4 rucavcccccccccccceqcccccnmccjcicccccccccccccccccccccccccccccncccccchccccccccccccccccccccccccutycasvab 
+359 56 2 2 3 100 97 388 0.25 67 -1 2 rucavccccccccccccccccchcccccccccccccccccccccccccccccccccccccpccccccccccchccccccccccccccccccutycasvab 
+227 1 2 2 10 100 97 388 0.25 39 -1 1 rucavcccccccccccccccccccccccccclccccccccccccccccccccccccccccccrccccccccccccccccccccccccccccutycasvab 
+185 25 1 2 5 100 0 0 0 39 -1 2 rucxvcccccmccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+223 1 1 2 5 100 49 330 0.148485 39 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutytasvab 
+54 3 28 2 5 100 0 0 0 23 -1 2 cccccccccccccccccccccccccccccccccccccccccutyxasvabrucavcccccccccccccccccccccuccccccccccccccccccccccc 
+314 1 1 2 4 100 97 388 0.25 65 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccciccccccccccccccccccccutycasvab 
+309 232 2 2 3 100 97 383 0.253264 65 -1 3 rucavctccccccccccccccccccccccccjccccgccccccccccccccccccccccccccccccccwcccccccccccccccccccccutycasvab 
+103 1 1 2 10 100 97 388 0.25 27 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccczccccccccccccccccccccccccccccccutycasvab 
+161 1 1 2 10 101 98 390 0.251282 29 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccctcutycasvab 
+147 48 1 2 11 100 97 387 0.250646 28 -1 2 rucavccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccmcjccccccccccccrccccccccccutycasvab 
+280 59 2 2 3 102 99 395 0.250633 63 -1 3 aarucavccccccccccccccccccccccccccccccccwcccccccccccccccccccccncccccccccccccccccccccccccccccccutycasvab 
+77 1 3 2 5 100 0 0 0 26 -1 1 rucadcccccccccccccccccccccccccccchcccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasiab 
+496 2 2 2 3 99 86 373 0.230563 79 -1 2 rucavccccccccccccccccccccccccccccyccccccccccccccccccccccccccccccccccccccccccccvcccccccccccutycasvab 
+491 341 1 2 3 100 97 388 0.25 79 -1 2 rucavcccccwcccccccccccccccccccccaccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+58 1 1 2 7 100 97 388 0.25 25 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccczccccccccccccccccccccccccccccccccccccutycasvab 
+386 231 4 2 3 100 0 0 0 77 -1 3 rucavccccccacccccwccccccccccccccccccccccccmccccccccicccccccscvcccccccccccchccccccccccccccccutycasvao 
+329 180 2 2 3 100 88 376 0.234043 65 -1 3 rucavccccccccccccccccccccccccccccqccucccccccccccccccccccccccccccccccqccccqcccccccccccccccccutycasvab 
+82 1 2 2 8 100 97 388 0.25 26 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccckcccccccbcccccccccccccccccccccccccccccccutycasvab 
+46 1 2 2 12 100 97 387 0.250646 14 -1 1 rucavcccccccclccccccccccccccccccccccccccccccccccccccccclcccccccccccccccccccccccccccccccccccutycasvab 
+308 1 1 2 4 100 97 388 0.25 65 -1 1 rucavccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+297 82 1 2 4 100 97 387 0.250646 65 -1 2 rucavcccccccccccccccvcccccccccccccccccccccccccccccckcccccccbcccccccccccccccccccccccccccccccutycasvab 
+325 239 2 2 4 100 97 387 0.250646 65 -1 2 rucavccccccccccccccccccccccccccccccccccccccccceccccccccccccccccccqcccccccccccccccccccccccchutycasvab 
+114 1 1 2 9 100 97 388 0.25 27 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccjccccccccccccccccccccccccccccccccccccccccccutycasvab 
+368 275 1 2 4 99 0 0 0 68 -1 3 rucavccccccccccncccccsccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+281 1 1 1 3 101 98 393 0.249364 63 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+382 233 1 1 3 101 0 0 0 77 -1 4 rucavcccccccccccccccccccccuccccccccccccccccccccccccccccccckcccccccccchcccccccccccccccccccfccutycasvab 
+365 267 5 1 3 105 0 0 0 67 -1 4 aaaarucavcccclcccccccccccccccccccccccccfcwccccmccccccccccpccccccncccccceccccccccccccccccccccccccutycasvag 
+47 1 1 1 6 100 97 388 0.25 14 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccclccccccccccccccccccccccccutycasvab 
+318 270 5 1 3 101 0 0 0 65 -1 2 aarucavccccccccccccccccccccccccccccccccccccccccccccccccccccfctccccccccccccccccwcccccccccccccutycasvab 
+389 119 2 1 3 100 0 0 0 77 -1 2 rucavccccccccccccccccccccccccfccccpccccccccccccccccccccccccccccccccccccccccccccwcccccccccccutycasvab 
+258 1 3 1 3 100 0 0 0 53 -1 1 rucavocccccccccccccccchccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycaivab 
+524 496 1 1 1 99 0 0 0 91 -1 3 rucavccccccccccccccccccccccccccccyscccccccccccccccccccccccccccccccccccccccccccvcccccccccccutycasvab 
+525 1 1 1 1 100 0 0 0 91 -1 1 rucavccccccccccccccccccccccccccccccccccpcccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+526 454 2 1 1 101 0 0 0 91 -1 2 rueavccccccccccccccccccccccccccccccccccccccccccccccccrcccccccccccccccccccoccccccccccccccccccutycasvab 
+527 227 1 1 1 100 0 0 0 91 -1 2 rucavcccccccccchccccccccccccccclccccccccccccccccccccccccccccccrccccccccccccccccccccccccccccutycasvab 
+528 103 1 1 1 101 0 0 0 91 -1 2 rucavccccccqccccccccccccccccccccccccccccccccccccccccccccccccczccccccccccccccccccccccccccccccutycasvab 
+529 1 1 1 1 100 0 0 0 91 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccaccccccccccccccccccccccccccccutycasvab 
+530 337 1 1 1 99 0 0 0 91 -1 2 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccutycasvab 
+531 58 2 1 1 100 0 0 0 92 -1 2 rucavcccccccuccccccccccccccccccccccccccccccccccccccccczccccccccccccccccccccccccccccccccccccutycasvsb 
+532 93 1 1 1 100 0 0 0 92 -1 2 rucavcccccccccccccccccccccccccccccccccccccccccccckcccccccccccccccccccccclccccccccccccccccccutycasvab 
+533 1 1 1 1 100 0 0 0 92 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccwccccccccccccccccccccccutycasvab 
+534 318 1 1 1 102 0 0 0 92 -1 3 aarucavkccccccccccccccccccccccccccccccccccccccccccccccccccccfctccccccccccccccccwcccccccccccccutycasvab 
+535 302 1 1 1 100 0 0 0 92 -1 3 rucavcccbccczcccccccccccccccccccccccccgcctccccccccccccccccccccccccccccccocccccmcccccccxccccutycasvab 
+536 491 4 1 1 102 0 0 0 92 -1 3 aarucavcccccwcccccccccccccccccccccacccccccxccccccckccccccccccccccccccccccccccccccccccccccccccutycasvab 
+537 309 2 1 1 102 0 0 0 92 -1 4 raucavctccccccccccccccccccccccccjccccgccccccccccccccccccccccccccccccccwcccccccjccccccccccccccutycasvab 
+538 1 1 1 1 100 0 0 0 92 -1 1 rucavccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+539 1 2 1 1 100 0 0 0 92 -1 1 rucavcccccccccccccsccccccceccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+540 1 2 1 1 100 0 0 0 92 -1 1 rucavxcccccccccccccccccccccccccccccccccccccccccccccccccucccccccccccccccccccccccccccccccccccutycasvab 
+541 1 1 1 1 100 0 0 0 92 -1 1 rucavcnccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+542 314 3 1 1 100 0 0 0 92 -1 2 rucavccccfcccccccccccccccccccpccccccccccccccccccccccccccccccccccccccccicqccccccccccccccccccutycasvab 
+543 1 1 1 1 100 0 0 0 92 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccxcccccutycasvab 
+544 496 2 1 1 98 0 0 0 92 -1 3 rucavccccccccccccxcccccccccccccccycccccccccccccccccccccccccccccccccccccccccccvcccccccccccutycasvab 
+545 327 1 1 1 100 0 0 0 92 -1 2 rucavccoccccccccccccmccccccccccccccccccccccccrcccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+546 285 1 1 1 99 0 0 0 92 -1 3 rucavctccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccfccccccccccpccccccccccccutycasvab 
+547 359 2 1 1 100 0 0 0 92 -1 3 rucavccccccccccccccccchcccccccccccccccccccccccccccccccccccccmccccccccccchcccccccccccccccaccutycasvab 
+548 227 1 1 1 101 0 0 0 92 -1 2 rucavcccccccccccccccccccccccccclccccccccccccccccccccccccccccccrccccccccccccccccccccccccccccutyncasvab 
+549 1 1 1 1 100 0 0 0 92 -1 1 rucavcccccccccccccccccccccccccyccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+550 1 1 1 1 100 0 0 0 92 -1 1 rucavccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+551 147 1 1 1 100 0 0 0 92 -1 3 rucavccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccmcjccccccccccccrccccccccccutycasvtb 
+552 200 3 1 1 100 0 0 0 92 -1 3 rucaycccccccccccccccccccccccccccccccccccccccxccccscpcckccccccccccccrcccccccccccccccccccccccutycasvab 
+553 47 2 1 1 100 0 0 0 92 -1 2 rucavccccccccccccccccccccccccccccccccccccccccccccccccccwcccccccccclccccccccccccccccccccccccueycasvab 
+554 280 7 1 1 104 0 0 0 92 -1 4 aaaarucavcccccccccccccccccccccccctcecccccwccccoccccccccccccccccncccccccccjcccccccccccccccccccccntycasvab 
+555 309 1 1 1 101 0 0 0 92 -1 4 raucavctccccccccccccccccccccccccjccccgccccccccccccccccccccccccccccccccwcccccccccccccccccccccutycasvab 
+556 122 2 1 1 99 0 0 0 92 -1 2 rucavcccccccccccccccccccccccccccccmcccccccvccccccccccccccccccccccccccccccccccccccccccccccccutycsvab 
+557 122 1 1 1 100 0 0 0 92 -1 2 rucavccccccccccccccccoccccccccccccmccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+558 1 2 1 1 99 0 0 0 92 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccyccccutycasvab 
+559 359 2 1 1 100 0 0 0 93 -1 3 rucavccccccccccccccccchccqccccccccccccccccccccccccccccccccccpwcccccccccchccccccccccccccccccutycasvab 
+560 1 1 1 1 100 0 0 0 93 -1 1 rucavcccccccccccccccccccccccjccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+561 58 1 1 1 100 0 0 0 93 -1 2 rucavccccccccfcccccccccccccccccccccccccccccccccccccccczccccccccccccccccccccccccccccccccccccutycasvab 
+562 161 1 1 1 101 0 0 0 93 -1 2 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccmcccccccccccccccccctcutycasvab 
+563 281 2 1 1 101 0 0 0 93 -1 2 rucavccccccccccccccccccccccccccccccccccccccccccccclcccccccccccccccccccccccccccccgcccccccccccutycasvab 
+564 314 1 1 1 100 0 0 0 93 -1 2 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccoccccccccccccciccccccccccccccccccccutycasvab 
+565 103 1 1 1 100 0 0 0 93 -1 2 rucavcccccccccccccccccccccccccccccccccccccccccccyccccccccccczccccccccccccccccccccccccccccccutycasvab 
+566 469 1 1 1 101 0 0 0 93 -1 5 rucavcccccccccccceqcccccnmccjcicccccccccccccccccccccccccccccncccccchccccccccccccccccccccccccuwycasvab 
+567 491 2 1 1 102 0 0 0 93 -1 3 aarucavcccccwcccccccccccccccccccccaccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+568 147 2 1 1 99 0 0 0 93 -1 3 rucavccccccccccccdcccccccccccccccccccbccccccccccccccccccccccccccmcjccccccccccccrccccccccccutycasvab 
+569 1 2 1 1 100 0 0 0 93 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccyccccccccccccccccccccccccccztycasvab 
+570 280 5 1 1 104 0 0 0 93 -1 4 aaaarucavcccccccccccccccccccccccccccccccwccccccccccccccccccccgcnccccccccccccccccccccccccccclcccutycasvab 
+571 382 2 1 1 100 0 0 0 93 -1 5 rucavcccccccccccccccccccccucccccccccccccccccccccccccvcccckcccccccccchcccccccccccccccccccfccutycasvab 
+572 1 1 1 1 100 0 0 0 93 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccqcccccccutycasvab 
+573 329 2 1 1 101 0 0 0 93 -1 4 rucavcccccccccgccccccccccccccccccqccucccccccccccccccccccccccccccccccqccccqccccccccccciccccccutycasvab 
+574 1 2 1 1 100 0 0 0 93 -1 1 rucavcccccccccccccccccccccccccccecccccccccccccccccccccccccccccccccccccccccccccctcccccccccccutycasvab 
+575 161 1 1 1 101 0 0 0 93 -1 2 rucavcccccccccccccccccccccccccccrccccccccccccccccccccccccccccccccccccccccccccccccccccccccctcutycasvab 
+576 1 1 1 1 100 0 0 0 93 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccycccccccccccccccccccccccccccccutycasvab 
+577 469 1 1 1 101 0 0 0 93 -1 5 rucavcccccccccccceqcccccnmccjcicccccccccccccccccccccccccccccncccccchzcccccccccccccccccccccccutycasvab 
+578 383 1 1 1 100 0 0 0 93 -1 4 rucavcccccccecccceqcccccccccjcccccccccccccccccnccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+579 329 2 1 1 100 0 0 0 94 -1 4 rucavccccccccycccccccccccccccccccqccucccccncccccccccccccccccccccccccqccccqcccccccccccccccccutycasvab 
+580 223 26 1 1 100 0 0 0 100 -1 2 cccccccccccccccccccccccccccccccccccccccccutytasvabrucavccccccccccccccccccccccccccccccccccccccccccccc 

Added: development/tests/demes_clique_repl/expected/data/dominant.dat
===================================================================
--- development/tests/demes_clique_repl/expected/data/dominant.dat	                        (rev 0)
+++ development/tests/demes_clique_repl/expected/data/dominant.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,30 @@
+# Avida Dominant Data
+# Fri Apr 27 10:46:46 2007
+#  1: Update
+#  2: Average Merit of the Dominant Genotype
+#  3: Average Gestation Time of the Dominant Genotype
+#  4: Average Fitness of the Dominant Genotype
+#  5: Repro Rate?
+#  6: Size of Dominant Genotype
+#  7: Copied Size of Dominant Genotype
+#  8: Executed Size of Dominant Genotype
+#  9: Abundance of Dominant Genotype
+# 10: Number of Births
+# 11: Number of Dominant Breed True?
+# 12: Dominant Gene Depth
+# 13: Dominant Breed In
+# 14: Max Fitness?
+# 15: Genotype ID of Dominant Genotype
+# 16: Name of the Dominant Genotype
+
+0 0.000000 0.000000 0.000000 0.000000 100 0.000000 0.000000 1 0 0 0 0 0.000000 1 100-aaaaa 
+10 0 0 0 0 100 0 0 100 0 0 0 0 0 1 100-aaaaa 
+20 97 389 0.249357 0.00257069 100 100 97 145 0 0 0 0 0.249357 1 100-aaaaa 
+30 97 389 0.249357 0.00257069 100 100 97 206 0 0 0 0 0.250646 1 100-aaaaa 
+40 97 389 0.249357 0.00257069 100 100 97 39 0 0 0 0 0.250646 1 100-aaaaa 
+50 97 389 0.249357 0.00257069 100 100 97 39 0 0 0 0 0.250646 1 100-aaaaa 
+60 97 389 0.249357 0.00257069 100 100 97 58 0 0 0 0 0.251948 1 100-aaaaa 
+70 97 389 0.249357 0.00257069 100 100 97 84 0 0 0 0 0.252632 1 100-aaaaa 
+80 97 389 0.249357 0.00257069 100 100 97 26 0 0 0 0 0.253927 1 100-aaaaa 
+90 97 389 0.249357 0.00257069 100 100 97 26 0 0 0 0 0.253927 1 100-aaaaa 
+100 97 389 0.249357 0.00257069 100 100 97 36 0 0 0 0 0.253927 1 100-aaaaa 

Added: development/tests/demes_clique_repl/expected/data/historic-100.pop
===================================================================
--- development/tests/demes_clique_repl/expected/data/historic-100.pop	                        (rev 0)
+++ development/tests/demes_clique_repl/expected/data/historic-100.pop	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,46 @@
+#filetype genotype_data
+#format id parent_id parent_dist num_cpus total_cpus length merit gest_time fitness update_born update_dead depth sequence
+
+#  1: ID
+#  2: parent ID
+#  3: parent distance
+#  4: number of orgranisms currently alive
+#  5: total number of organisms that ever existed
+#  6: length of genome
+#  7: merit
+#  8: gestation time
+#  9: fitness
+# 10: update born
+# 11: update deactivated
+# 12: depth in phylogentic tree
+# 13: genome of organism
+
+180 86 1 0 3 100 97 387 0.250646 38 79 2 rucavccccccccccccccccccccccccccccqcccccccccccccccccccccccccccccccccccccccqcccccccccccccccccutycasvab 
+17 1 1 0 8 100 97 388 0.25 13 79 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccvcccccccccccccccccccccccccccccutycasvab 
+231 17 3 0 3 100 97 386 0.251295 51 79 2 rucavcccccccccccccccccccccccccccccccccccccmccccccccicccccccccvcccccccccccchccccccccccccccccutycasvab 
+341 1 1 0 1 100 0 0 0 66 79 1 rucavcccccccccccccccccccccccccccaccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+2 1 1 0 28 99 96 385 0.249351 12 79 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+270 1 1 0 1 100 97 388 0.25 53 79 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccwcccccccccccccutycasvab 
+128 1 2 0 4 100 97 385 0.251948 27 79 1 rucavctcccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+59 22 1 0 3 100 97 387 0.250646 25 79 2 rucavccccccccccccccccccccccccccccccccwcccccccccccccccccccccncccccccccccccccccccccccccccccccutycasvab 
+119 1 1 0 7 100 97 388 0.25 27 79 1 rucavccccccccccccccccccccccccfcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+232 128 1 0 1 100 97 385 0.251948 52 79 2 rucavctcccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccacccccccccccccccccccccutycasvab 
+41 1 1 0 8 100 97 388 0.25 14 79 1 rucavcccccccccccccccccccccccccccccccccccjccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+275 91 1 0 1 99 0 0 0 54 79 2 rucavccccccccccnccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+255 1 4 0 1 100 97 384 0.252604 52 79 1 rucavcccbcccccccccccccccccccccccccccccgcctccccccccccccccccccccccccccccccccccccccccccccxccccutycasvab 
+56 1 1 0 4 100 97 388 0.25 25 79 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccpccccccccccccccccccccccccccccccutycasvab 
+242 41 1 0 2 100 97 388 0.25 52 79 2 rucavcccccccccccccccccccccccccccccccccccjcccccccccccccccccccccccccccccccccccccccccccccccccqutycasvab 
+239 1 1 0 2 100 97 389 0.249357 52 79 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccchutycasvab 
+144 36 2 0 9 100 96 387 0.248062 28 79 2 rucavcccccccccccceqcccccccccjccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+315 144 1 0 1 100 0 0 0 65 79 3 rucavcccccccccccceqcccccccccjcccccccccccccccccccccccccccccccnccccccccccccccccccccccccccccccutycasvab 
+233 216 1 0 3 100 97 387 0.250646 52 79 3 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccckcccccccccchcccccccccccccccccccfccutycasvab 
+216 15 1 0 4 100 97 388 0.25 39 79 2 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccckcccccccccchccccccccccccccccccccccutycasvab 
+267 59 5 0 1 103 100 396 0.252525 53 79 3 aarucavccccccccccccccccccccccccccccccccwccccmccccccccccpccccccncccccceccccccccccccccccccccccccutycasvab 
+48 1 3 0 1 100 0 0 0 15 39 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccmcjccccccccccccrccccccccccutycasvab 
+86 1 1 0 1 100 0 0 0 26 39 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccqcccccccccccccccccutycasvab 
+3 1 2 0 1 100 0 0 0 12 39 1 rucavcccccccccccccccccccccuccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutyxasvab 
+36 1 1 0 1 100 0 0 0 14 39 1 rucavcccccccccccccccccccccccjccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+25 1 1 0 3 100 97 388 0.25 14 39 1 rucavcccccmccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+105 1 2 0 1 100 0 0 0 27 39 1 rucavcccccccccccccccccccccccccccccccccccccccxccccccpcccccccccccccccccccccccccccccccccccccccutycasvab 
+15 1 1 0 1 100 97 389 0.249357 13 39 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccchccccccccccccccccccccccutycasvab 
+22 1 1 0 2 100 97 388 0.25 13 39 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccncccccccccccccccccccccccccccccccutycasvab 

Added: development/tests/demes_clique_repl/expected/data/resource.dat
===================================================================
--- development/tests/demes_clique_repl/expected/data/resource.dat	                        (rev 0)
+++ development/tests/demes_clique_repl/expected/data/resource.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,17 @@
+# Avida resource data
+# Fri Apr 27 10:46:46 2007
+# First column gives the current update, all further columns give the quantity
+# of the particular resource at that update.
+#  1: Update
+
+0 
+10 
+20 
+30 
+40 
+50 
+60 
+70 
+80 
+90 
+100 

Added: development/tests/demes_clique_repl/expected/data/stats.dat
===================================================================
--- development/tests/demes_clique_repl/expected/data/stats.dat	                        (rev 0)
+++ development/tests/demes_clique_repl/expected/data/stats.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,26 @@
+# Generic Statistics Data
+# Fri Apr 27 10:46:46 2007
+#  1: update
+#  2: average inferiority (energy)
+#  3: ave probability of any mutations in genome
+#  4: probability of any mutations in dom genome
+#  5: log(average fidelity)
+#  6: log(dominant fidelity)
+#  7: change in number of genotypes
+#  8: genotypic entropy
+#  9: species entropy
+# 10: depth of most reacent coalescence
+# 11: Total number of resamplings this generation
+# 12: Total number of organisms that failed to resample this generation
+
+0 0.000000 0.097500 0.562358 0.102587 0.826353 1 0.000000 0.000000 0 0 0 
+10 0 0.562358 0.562358 0.826353 0.826353 0 0 0 0 0 0 
+20 2.44249e-15 0.56231 0.562358 0.826245 0.826353 0 1.66246 0 0 0 0 
+30 0.0112117 0.562277 0.562358 0.826168 0.826353 0 3.04105 0 0 0 0 
+40 0.00834928 0.562358 0.562358 0.826353 0.826353 -190 2.83844 0 0 0 0 
+50 0.0243085 0.562358 0.562358 0.826353 0.826353 1 2.87929 0 0 0 0 
+60 0.0135479 0.562391 0.562358 0.826428 0.826353 1 3.62204 0 0 0 0 
+70 0.0109569 0.563311 0.562358 0.828535 0.826353 0 4.34853 0 0 0 0 
+80 0.0171464 0.562706 0.562358 0.827149 0.826353 -288 3.34218 0 0 0 0 
+90 0.0171464 0.562706 0.562358 0.827149 0.826353 0 3.34218 0 0 0 0 
+100 0.0125471 0.562812 0.562358 0.827393 0.826353 1 4.12978 0 0 0 0 

Added: development/tests/demes_clique_repl/expected/data/tasks.dat
===================================================================
--- development/tests/demes_clique_repl/expected/data/tasks.dat	                        (rev 0)
+++ development/tests/demes_clique_repl/expected/data/tasks.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,26 @@
+# Avida tasks data
+# Fri Apr 27 10:46:46 2007
+# First column gives the current update, next columns give the number
+# of organisms that have the particular task as a component of their merit
+#  1: Update
+#  2: Not
+#  3: Nand
+#  4: And
+#  5: OrNot
+#  6: Or
+#  7: AndNot
+#  8: Nor
+#  9: Xor
+# 10: Equals
+
+0 0 0 0 0 0 0 0 0 0 
+10 0 0 0 0 0 0 0 0 0 
+20 0 0 0 0 0 0 0 0 0 
+30 0 0 0 0 0 0 0 0 0 
+40 0 0 0 0 0 0 0 0 0 
+50 0 0 0 0 0 0 0 0 0 
+60 0 0 0 0 0 0 0 0 0 
+70 0 0 0 0 0 0 0 0 0 
+80 0 0 0 0 0 0 0 0 0 
+90 0 0 0 0 0 0 0 0 0 
+100 0 0 0 0 0 0 0 0 0 

Added: development/tests/demes_clique_repl/expected/data/tasks_exe.dat
===================================================================
--- development/tests/demes_clique_repl/expected/data/tasks_exe.dat	                        (rev 0)
+++ development/tests/demes_clique_repl/expected/data/tasks_exe.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,26 @@
+# Avida tasks execution data
+# Fri Apr 27 10:46:46 2007
+# First column gives the current update, all further columns give the number
+# of times the particular task has been executed this update.
+#  1: Update
+#  2: Not
+#  3: Nand
+#  4: And
+#  5: OrNot
+#  6: Or
+#  7: AndNot
+#  8: Nor
+#  9: Xor
+# 10: Equals
+
+0 0 0 0 0 0 0 0 0 0 
+10 0 0 0 0 0 0 0 0 0 
+20 0 0 0 0 0 0 0 0 0 
+30 0 0 0 0 0 0 0 0 0 
+40 0 0 0 0 0 0 0 0 0 
+50 0 0 0 0 0 0 0 0 0 
+60 0 0 0 0 0 0 0 0 0 
+70 0 0 0 0 0 0 0 0 0 
+80 0 0 0 0 0 0 0 0 0 
+90 0 0 0 0 0 0 0 0 0 
+100 0 0 0 0 0 0 0 0 0 

Added: development/tests/demes_clique_repl/expected/data/tasks_quality.dat
===================================================================
--- development/tests/demes_clique_repl/expected/data/tasks_quality.dat	                        (rev 0)
+++ development/tests/demes_clique_repl/expected/data/tasks_quality.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,34 @@
+# Avida tasks quality data
+# Fri Apr 27 10:46:46 2007
+# First column gives the current update, rest give average and max task quality
+#  1: Update
+#  2: Not Average
+#  3: Not Max
+#  4: Nand Average
+#  5: Nand Max
+#  6: And Average
+#  7: And Max
+#  8: OrNot Average
+#  9: OrNot Max
+# 10: Or Average
+# 11: Or Max
+# 12: AndNot Average
+# 13: AndNot Max
+# 14: Nor Average
+# 15: Nor Max
+# 16: Xor Average
+# 17: Xor Max
+# 18: Equals Average
+# 19: Equals Max
+
+0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 
+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+50 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+60 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+70 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+90 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

Added: development/tests/demes_clique_repl/expected/data/time.dat
===================================================================
--- development/tests/demes_clique_repl/expected/data/time.dat	                        (rev 0)
+++ development/tests/demes_clique_repl/expected/data/time.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,18 @@
+# Avida time data
+# Fri Apr 27 10:46:46 2007
+#  1: update
+#  2: avida time
+#  3: average generation
+#  4: num_executed?
+
+0 0.000000 0.000000 30 
+10 0.0927835 0 3000 
+20 0.195876 1 6000 
+30 0.299886 1.97698 11730 
+40 0.40449 2.38 3000 
+50 0.5087 2.43137 3000 
+60 0.613802 3.36788 5760 
+70 0.718839 4.33425 10950 
+80 0.823656 5.02 3000 
+90 0.929219 5.02 3000 
+100 1.03419 6.05851 5610 

Added: development/tests/demes_clique_repl/test_list
===================================================================
--- development/tests/demes_clique_repl/test_list	                        (rev 0)
+++ development/tests/demes_clique_repl/test_list	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,35 @@
+;--- Begin Test Configuration File (test_list) ---
+[main]
+args = -s 100            ; Command line arguments to pass to the application
+app = %(app)s            ; Application path to test
+nonzeroexit = disallow   ; Exit code handling (disallow, allow, or require)
+                         ;  disallow - treat non-zero exit codes as failures
+                         ;  allow - all exit codes are acceptable
+                         ;  require - treat zero exit codes as failures, useful
+                         ;            for creating tests for app error checking
+createdby = Dave Knoester ; Who created the test
+email = dk at cse.msu.edu ; Email address for the test's creator
+
+[consistency]
+enabled = yes            ; Is this test a consistency test?
+long = no                ; Is this test a long test?
+
+[performance]
+enabled = no             ; Is this test a performance test?
+long = no                ; Is this test a long test?
+
+; The following variables can be used in constructing setting values by calling
+; them with %(variable_name)s.  For example see 'app' above.
+;
+; app 
+; builddir 
+; cpus 
+; mode 
+; perf_repeat 
+; perf_user_margin 
+; perf_wall_margin 
+; svn 
+; svnmetadir 
+; svnversion 
+; testdir 
+;--- End Test Configuration File ---

Added: development/tests/demes_germline/config/avida.cfg
===================================================================
--- development/tests/demes_germline/config/avida.cfg	                        (rev 0)
+++ development/tests/demes_germline/config/avida.cfg	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,257 @@
+#############################################################################
+# This file includes all the basic run-time defines for Avida.
+# For more information, see doc/config.html
+#############################################################################
+
+VERSION_ID 2.7.0   # Do not change this value.
+
+### GENERAL_GROUP ###
+# General Settings
+ANALYZE_MODE 0  # 0 = Disabled
+                # 1 = Enabled
+                # 2 = Interactive
+VIEW_MODE 1     # Initial viewer screen
+CLONE_FILE -    # Clone file to load
+VERBOSITY 1     # Control output verbosity
+
+### ARCH_GROUP ###
+# Architecture Variables
+WORLD_X 10        # Width of the Avida world
+WORLD_Y 1000      # Height of the Avida world
+WORLD_GEOMETRY 1  # 1 = Bounded Grid
+                  # 2 = Torus
+                  # 3 = Clique
+RANDOM_SEED 0     # Random number seed (0 for based on time)
+HARDWARE_TYPE 0   # 0 = Original CPUs
+                  # 1 = New SMT CPUs
+                  # 2 = Transitional SMT
+                  # 3 = Experimental CPU
+                  # 4 = Gene Expression CPU
+
+### CONFIG_FILE_GROUP ###
+# Configuration Files
+DATA_DIR data                       # Directory in which config files are found
+INST_SET -                          # File containing instruction set
+EVENT_FILE events.cfg               # File containing list of events during run
+ANALYZE_FILE analyze.cfg            # File used for analysis mode
+ENVIRONMENT_FILE environment.cfg    # File that describes the environment
+START_CREATURE default-classic.org  # Organism to seed the soup
+
+### DEME_GROUP ###
+# Demes and Germlines
+NUM_DEMES 100                # Number of independent groups in the population.
+DEMES_USE_GERMLINE 1         # Whether demes use a distinct germline; 0=off
+DEMES_HAVE_MERIT 0           # Whether demes have merit; 0=no
+GERMLINE_COPY_MUT 0.0075     # Prob. of copy mutations occuring during
+                             # germline replication.
+GERMLINE_REPLACES_SOURCE 0   # Whether the source germline is updated
+                             # on replication; 0=no.
+GERMLINE_RANDOM_PLACEMENT 0  # Whether the seed for a germline is placed
+                             #  randomly within the deme; 0=no.
+MAX_DEME_AGE 40              # The maximum age of a deme (in updates) to be
+                             # used for age-based replication (default=500).
+
+### REPRODUCTION_GROUP ###
+# Birth and Death
+BIRTH_METHOD 0           # Which organism should be replaced on birth?
+                         # 0 = Random organism in neighborhood
+                         # 1 = Oldest in neighborhood
+                         # 2 = Largest Age/Merit in neighborhood
+                         # 3 = None (use only empty cells in neighborhood)
+                         # 4 = Random from population (Mass Action)
+                         # 5 = Oldest in entire population
+                         # 6 = Random within deme
+                         # 7 = Organism faced by parent
+                         # 8 = Next grid cell (id+1)
+                         # 9 = Largest energy used in entire population
+                         # 10 = Largest energy used in neighborhood
+PREFER_EMPTY 1           # Give empty cells preference in offsping placement?
+ALLOW_PARENT 1           # Allow births to replace the parent organism?
+DEATH_METHOD 2           # 0 = Never die of old age.
+                         # 1 = Die when inst executed = AGE_LIMIT (+deviation)
+                         # 2 = Die when inst executed = length*AGE_LIMIT (+dev)
+AGE_LIMIT 20             # Modifies DEATH_METHOD
+AGE_DEVIATION 0          # Creates a distribution around AGE_LIMIT
+ALLOC_METHOD 0           # (Orignal CPU Only)
+                         # 0 = Allocated space is set to default instruction.
+                         # 1 = Set to section of dead genome (Necrophilia)
+                         # 2 = Allocated space is set to random instruction.
+DIVIDE_METHOD 1          # 0 = Divide leaves state of mother untouched.
+                         # 1 = Divide resets state of mother
+                         #     (after the divide, we have 2 children)
+                         # 2 = Divide resets state of current thread only
+                         #     (does not touch possible parasite threads)
+GENERATION_INC_METHOD 1  # 0 = Only the generation of the child is
+                         #     increased on divide.
+                         # 1 = Both the generation of the mother and child are
+                         #     increased on divide (good with DIVIDE_METHOD 1).
+
+### RECOMBINATION_GROUP ###
+# Sexual Recombination and Modularity
+RECOMBINATION_PROB 1.0  # probability of recombination in div-sex
+MAX_BIRTH_WAIT_TIME -1  # Updates incipiant orgs can wait for crossover
+MODULE_NUM 0            # number of modules in the genome
+CONT_REC_REGS 1         # are (modular) recombination regions continuous
+CORESPOND_REC_REGS 1    # are (modular) recombination regions swapped randomly
+                        #  or with corresponding positions?
+TWO_FOLD_COST_SEX 0     # 1 = only one recombined offspring is born.
+                        # 2 = both offspring are born
+SAME_LENGTH_SEX 0       # 0 = recombine with any genome
+                        # 1 = only recombine w/ same length
+
+### DIVIDE_GROUP ###
+# Divide Restrictions
+CHILD_SIZE_RANGE 2.0  # Maximal differential between child and parent sizes.
+MIN_COPIED_LINES 0.5  # Code fraction which must be copied before divide.
+MIN_EXE_LINES 0.5     # Code fraction which must be executed before divide.
+REQUIRE_ALLOCATE 1    # (Original CPU Only) Require allocate before divide?
+REQUIRED_TASK -1      # Task ID required for successful divide.
+IMMUNITY_TASK -1      # Task providing immunity from the required task.
+REQUIRED_REACTION -1  # Reaction ID required for successful divide.
+REQUIRED_BONUS 0      # The bonus that an organism must accumulate to divide.
+
+### MUTATION_GROUP ###
+# Mutations
+POINT_MUT_PROB 0.0    # Mutation rate (per-location per update)
+COPY_MUT_PROB 0.0075  # Mutation rate (per copy)
+INS_MUT_PROB 0.0      # Insertion rate (per site, applied on divide)
+DEL_MUT_PROB 0.0      # Deletion rate (per site, applied on divide)
+DIV_MUT_PROB 0.0      # Mutation rate (per site, applied on divide)
+DIVIDE_MUT_PROB 0.0   # Mutation rate (per divide)
+DIVIDE_INS_PROB 0.05  # Insertion rate (per divide)
+DIVIDE_DEL_PROB 0.05  # Deletion rate (per divide)
+PARENT_MUT_PROB 0.0   # Per-site, in parent, on divide
+SPECIAL_MUT_LINE -1   # If this is >= 0, ONLY this line is mutated
+INJECT_INS_PROB 0.0   # Insertion rate (per site, applied on inject)
+INJECT_DEL_PROB 0.0   # Deletion rate (per site, applied on inject)
+INJECT_MUT_PROB 0.0   # Mutation rate (per site, applied on inject)
+META_COPY_MUT 0.0     # Prob. of copy mutation rate changing (per gen)
+META_STD_DEV 0.0      # Standard deviation of meta mutation size.
+MUT_RATE_SOURCE 1     # 1 = Mutation rates determined by environment.
+                      # 2 = Mutation rates inherited from parent.
+
+### REVERSION_GROUP ###
+# Mutation Reversion
+# These slow down avida a lot, and should be set to 0.0 normally.
+REVERT_FATAL 0.0           # Should any mutations be reverted on birth?
+REVERT_DETRIMENTAL 0.0     #   0.0 to 1.0; Probability of reversion.
+REVERT_NEUTRAL 0.0         # 
+REVERT_BENEFICIAL 0.0      # 
+STERILIZE_FATAL 0.0        # Should any mutations clear (kill) the organism?
+STERILIZE_DETRIMENTAL 0.0  # 
+STERILIZE_NEUTRAL 0.0      # 
+STERILIZE_BENEFICIAL 0.0   # 
+FAIL_IMPLICIT 0            # Should copies that failed *not* due to mutations
+                           # be eliminated?
+NEUTRAL_MAX 0.0            # The percent benifical change from parent fitness to be considered neutral.
+NEUTRAL_MIN 0.0            # The percent deleterious change from parent fitness to be considered neutral.
+
+### TIME_GROUP ###
+# Time Slicing
+AVE_TIME_SLICE 30        # Ave number of insts per org per update
+SLICING_METHOD 1         # 0 = CONSTANT: all organisms get default...
+                         # 1 = PROBABILISTIC: Run _prob_ proportional to merit.
+                         # 2 = INTEGRATED: Perfectly integrated deterministic.
+BASE_MERIT_METHOD 4      # 0 = Constant (merit independent of size)
+                         # 1 = Merit proportional to copied size
+                         # 2 = Merit prop. to executed size
+                         # 3 = Merit prop. to full size
+                         # 4 = Merit prop. to min of executed or copied size
+                         # 5 = Merit prop. to sqrt of the minimum size
+                         # 6 = Merit prop. to num times MERIT_BONUS_INST is in genome.
+BASE_CONST_MERIT 100     # Base merit when BASE_MERIT_METHOD set to 0
+DEFAULT_BONUS 1.0        # Initial bonus before any tasks
+MERIT_DEFAULT_BONUS 0    # Scale the merit of an offspring by the default bonus
+                         # rather than the accumulated bonus of the parent?
+MERIT_BONUS_INST 0       # in BASE_MERIT_METHOD 6, this sets which instruction counts (-1=none, 0= 1st in INST_SET.)
+MERIT_BONUS_EFFECT 0     # in BASE_MERIT_METHOD 6, this sets how much merit is earned per INST (-1=penalty, 0= no effect.)
+FITNESS_VALLEY 0         # in BASE_MERIT_METHOD 6, this creates valleys from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP (0= off, 1=on)
+FITNESS_VALLEY_START 0   # if FITNESS_VALLEY =1, orgs with num_key_instructions from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP get fitness 1 (lowest)
+FITNESS_VALLEY_STOP 0    # if FITNESS_VALLEY =1, orgs with num_key_instructions from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP get fitness 1 (lowest)
+MAX_CPU_THREADS 1        # Number of Threads a CPU can spawn
+THREAD_SLICING_METHOD 0  # Formula for and organism's thread slicing
+                         #   (num_threads-1) * THREAD_SLICING_METHOD + 1
+                         # 0 = One thread executed per time slice.
+                         # 1 = All threads executed each time slice.
+MAX_LABEL_EXE_SIZE 1     # Max nops marked as executed when labels are used
+DONATE_SIZE 5.0          # Amount of merit donated with 'donate' command
+DONATE_MULT 10.0         # Multiple of merit given that the target receives.
+MAX_DONATE_KIN_DIST -1   # Limit on distance of relation for donate; -1=no max
+MAX_DONATE_EDIT_DIST -1  # Limit on edit distance for donate; -1=no max
+MAX_DONATES 1000000      # Limit on number of donates organisms are allowed.
+
+### PROMOTER_GROUP ###
+# Promoters
+PROMOTERS_ENABLED 0             # Use the promoter/terminator execution scheme.
+                                # Certain instructions must also be included.
+PROMOTER_PROCESSIVITY 1.0       # Chance of not terminating after each cpu cycle.
+PROMOTER_PROCESSIVITY_INST 1.0  # Chance of not terminating after each instruction.
+PROMOTER_BG_STRENGTH 0          # Probability of positions that are not promoter
+                                # instructions initiating execution (promoters are 1).
+REGULATION_STRENGTH 1           # Strength added or subtracted to a promoter by regulation.
+REGULATION_DECAY_FRAC 0.1       # Fraction of regulation that decays away. 
+                                # Max regulation = 2^(REGULATION_STRENGTH/REGULATION_DECAY_FRAC)
+
+### GENEOLOGY_GROUP ###
+# Geneology
+TRACK_MAIN_LINEAGE 1  # Keep all ancestors of the active population?
+                      # 0=no, 1=yes, 2=yes,w/sexual population
+THRESHOLD 3           # Number of organisms in a genotype needed for it
+                      #   to be considered viable.
+GENOTYPE_PRINT 0      # 0/1 (off/on) Print out all threshold genotypes?
+GENOTYPE_PRINT_DOM 0  # Print out a genotype if it stays dominant for
+                      #   this many updates. (0 = off)
+SPECIES_THRESHOLD 2   # max failure count for organisms to be same species
+SPECIES_RECORDING 0   # 1 = full, 2 = limited search (parent only)
+SPECIES_PRINT 0       # 0/1 (off/on) Print out all species?
+TEST_CPU_TIME_MOD 20  # Time allocated in test CPUs (multiple of length)
+
+### LOG_GROUP ###
+# Log Files
+LOG_CREATURES 0  # 0/1 (off/on) toggle to print file.
+LOG_GENOTYPES 0  # 0 = off, 1 = print ALL, 2 = print threshold ONLY.
+LOG_THRESHOLD 0  # 0/1 (off/on) toggle to print file.
+LOG_SPECIES 0    # 0/1 (off/on) toggle to print file.
+
+### LINEAGE_GROUP ###
+# Lineage
+# NOTE: This should probably be called "Clade"
+# This one can slow down avida a lot. It is used to get an idea of how
+# often an advantageous mutation arises, and where it goes afterwards.
+# Lineage creation options are.  Works only when LOG_LINEAGES is set to 1.
+#   0 = manual creation (on inject, use successive integers as lineage labels).
+#   1 = when a child's (potential) fitness is higher than that of its parent.
+#   2 = when a child's (potential) fitness is higher than max in population.
+#   3 = when a child's (potential) fitness is higher than max in dom. lineage
+# *and* the child is in the dominant lineage, or (2)
+#   4 = when a child's (potential) fitness is higher than max in dom. lineage
+# (and that of its own lineage)
+#   5 = same as child's (potential) fitness is higher than that of the
+#       currently dominant organism, and also than that of any organism
+#       currently in the same lineage.
+#   6 = when a child's (potential) fitness is higher than any organism
+#       currently in the same lineage.
+#   7 = when a child's (potential) fitness is higher than that of any
+#       organism in its line of descent
+LOG_LINEAGES 0             # 
+LINEAGE_CREATION_METHOD 0  # 
+
+### ORGANISM_NETWORK_GROUP ###
+# Organism Network Communication
+NET_ENABLED 0      # Enable Network Communication Support
+NET_DROP_PROB 0.0  # Message drop rate
+NET_MUT_PROB 0.0   # Message corruption probability
+NET_MUT_TYPE 0     # Type of message corruption.  0 = Random Single Bit, 1 = Always Flip Last
+NET_STYLE 0        # Communication Style.  0 = Random Next, 1 = Receiver Facing
+
+### BUY_SELL_GROUP ###
+# Buying and Selling Parameters
+SAVE_RECEIVED 0  # Enable storage of all inputs bought from other orgs
+BUY_PRICE 0      # price offered by organisms attempting to buy
+SELL_PRICE 0     # price offered by organisms attempting to sell
+
+### ANALYZE_GROUP ###
+# Analysis Settings
+MT_CONCURRENCY 1   # Number of concurrent analyze threads
+ANALYZE_OPTION_1   # String variable accessible from analysis scripts
+ANALYZE_OPTION_2   # String variable accessible from analysis scripts

Added: development/tests/demes_germline/config/default-classic.org
===================================================================
--- development/tests/demes_germline/config/default-classic.org	                        (rev 0)
+++ development/tests/demes_germline/config/default-classic.org	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,100 @@
+h-alloc    # Allocate space for child
+h-search   # Locate the end of the organism
+nop-C      #
+nop-A      #
+mov-head   # Place write-head at beginning of offspring.
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+h-search   # Mark the beginning of the copy loop
+h-copy     # Do the copy
+if-label   # If we're done copying....
+nop-C      #
+nop-A      #
+h-divide   #    ...divide!
+mov-head   # Otherwise, loop back to the beginning of the copy loop.
+nop-A      # End label.
+nop-B      #

Added: development/tests/demes_germline/config/environment.cfg
===================================================================
--- development/tests/demes_germline/config/environment.cfg	                        (rev 0)
+++ development/tests/demes_germline/config/environment.cfg	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,9 @@
+REACTION  NOT  not   process:value=1.0:type=pow  requisite:max_count=1
+REACTION  NAND nand  process:value=1.0:type=pow  requisite:max_count=1
+REACTION  AND  and   process:value=2.0:type=pow  requisite:max_count=1
+REACTION  ORN  orn   process:value=2.0:type=pow  requisite:max_count=1
+REACTION  OR   or    process:value=3.0:type=pow  requisite:max_count=1
+REACTION  ANDN andn  process:value=3.0:type=pow  requisite:max_count=1
+REACTION  NOR  nor   process:value=4.0:type=pow  requisite:max_count=1
+REACTION  XOR  xor   process:value=4.0:type=pow  requisite:max_count=1
+REACTION  EQU  equ   process:value=5.0:type=pow  requisite:max_count=1

Added: development/tests/demes_germline/config/events.cfg
===================================================================
--- development/tests/demes_germline/config/events.cfg	                        (rev 0)
+++ development/tests/demes_germline/config/events.cfg	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,19 @@
+# Print all of the standard data files...
+u 0 InjectDemes
+u 0:10:end PrintAverageData       # Save info about they average genotypes
+u 0:10:end PrintDominantData      # Save info about most abundant genotypes
+u 0:10:end PrintStatsData         # Collect satistics about entire pop.
+u 0:10:end PrintCountData         # Count organisms, genotypes, species, etc.
+u 0:10:end PrintTasksData         # Save organisms counts for each task.
+u 0:10:end PrintTimeData          # Track time conversion (generations, etc.)
+u 0:10:end PrintResourceData      # Track resource abundance.
+u 0:10:end PrintDominantGenotype      # Save the most abundant genotypes
+u 0:10:end PrintTasksExeData    # Num. times tasks have been executed.
+u 0:10:end PrintTasksQualData   # Task quality information
+
+u 1:1:end ReplicateDemes deme-age
+
+# Setup the exit time and full population data collection.
+u 100 SavePopulation         # Save current state of population.
+u 100 SaveHistoricPopulation # Save ancestors of current population.
+u 100 exit                        # exit

Added: development/tests/demes_germline/config/instset-classic.cfg
===================================================================
--- development/tests/demes_germline/config/instset-classic.cfg	                        (rev 0)
+++ development/tests/demes_germline/config/instset-classic.cfg	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,28 @@
+nop-A      1   # a
+nop-B      1   # b
+nop-C      1   # c
+if-n-equ   1   # d
+if-less    1   # e
+pop        1   # f
+push       1   # g
+swap-stk   1   # h
+swap       1   # i 
+shift-r    1   # j
+shift-l    1   # k
+inc        1   # l
+dec        1   # m
+add        1   # n
+sub        1   # o
+nand       1   # p
+IO         1   # q   Puts current contents of register and gets new.
+h-alloc    1   # r   Allocate as much memory as organism can use.
+h-divide   1   # s   Cuts off everything between the read and write heads
+h-copy     1   # t   Combine h-read and h-write
+h-search   1   # u   Search for matching template, set flow head & return info
+               #   #   if no template, move flow-head here, set size&offset=0.
+mov-head   1   # v   Move ?IP? head to flow control.
+jmp-head   1   # w   Move ?IP? head by fixed amount in CX.  Set old pos in CX.
+get-head   1   # x   Get position of specified head in CX.
+if-label   1   # y
+set-flow   1   # z   Move flow-head to address in ?CX? 
+

Added: development/tests/demes_germline/expected/data/archive/100-aaaaa.org
===================================================================
--- development/tests/demes_germline/expected/data/archive/100-aaaaa.org	                        (rev 0)
+++ development/tests/demes_germline/expected/data/archive/100-aaaaa.org	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,134 @@
+# Fri Apr 27 10:56:51 2007
+# Filename........: archive/100-aaaaa.org
+# Update Output...: 100
+# Is Viable.......: 1
+# Repro Cycle Size: 0
+# Depth to Viable.: 0
+# Update Created..: -1
+# Genotype ID.....: 1
+# Parent Gen ID...: -1
+# Tree Depth......: 0
+# Parent Distance.: -1
+# 
+# Generation: 0
+# Merit...........: 97.000000
+# Gestation Time..: 389
+# Fitness.........: 0.249357
+# Errors..........: 0
+# Genome Size.....: 100
+# Copied Size.....: 100
+# Executed Size...: 97
+# Offspring.......: SELF
+# 
+# Tasks Performed:
+# not 0 (0.000000)
+# nand 0 (0.000000)
+# and 0 (0.000000)
+# orn 0 (0.000000)
+# or 0 (0.000000)
+# andn 0 (0.000000)
+# nor 0 (0.000000)
+# xor 0 (0.000000)
+# equ 0 (0.000000)
+
+
+h-alloc
+h-search
+nop-C
+nop-A
+mov-head
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+h-search
+h-copy
+if-label
+nop-C
+nop-A
+h-divide
+mov-head
+nop-A
+nop-B

Added: development/tests/demes_germline/expected/data/average.dat
===================================================================
--- development/tests/demes_germline/expected/data/average.dat	                        (rev 0)
+++ development/tests/demes_germline/expected/data/average.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,30 @@
+# Avida Average Data
+# Fri Apr 27 10:56:49 2007
+#  1: Update
+#  2: Merit
+#  3: Gestation Time
+#  4: Fitness
+#  5: Repro Rate?
+#  6: Size
+#  7: Copied Size
+#  8: Executed Size
+#  9: Abundance
+# 10: Proportion of organisms that gave birth in this update
+# 11: Proportion of Breed True Organisms
+# 12: Genotype Depth
+# 13: Generation
+# 14: Neutral Metric
+# 15: Lineage Label
+# 16: True Replication Rate (based on births/update, time-averaged)
+
+0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 101.000000 101.000000 0.000000 0.000000 0.000000 0.000000 0.000000 
+10 97 389 0 0 100 100 97 0 0 0 0 0 0 0 0 
+20 97 389 0.249357 0 100.015 100 97 3.57143 0 0 0.285 1 0.128671 0 0 
+30 95.7848 387.223 0.247028 0 100.005 99.4987 95.7848 2.2067 0 0 0.594937 1.98734 0.123768 0 0 
+40 96.51 364.63 0 0 100 100 96.51 3.125 0 0 0.01 0 0 -1 0 
+50 96.51 364.63 0 0 100 100 96.51 3.125 0 0 0.01 0 0 -1 0 
+60 96.6477 376.104 0.240143 0 100.01 100 96.6477 2.29762 0 0 0.279793 0.963731 -0.0994681 -1 0 
+70 95.587 379.742 0.242971 0 100 99.4538 95.587 2.06742 0 0 0.521739 1.92935 -0.0806159 -1 0 
+80 96.78 341.19 0 0 100 100 96.78 2.27273 0 0 0 0 0 -1 0 
+90 96.78 341.19 0 0 100 100 96.78 2.27273 0 0 0 0 0 -1 0 
+100 96.5745 362.968 0.232594 0 100.016 100 96.5745 2 0 0 0.265957 0.93617 -0.0339842 -1 0 

Added: development/tests/demes_germline/expected/data/count.dat
===================================================================
--- development/tests/demes_germline/expected/data/count.dat	                        (rev 0)
+++ development/tests/demes_germline/expected/data/count.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,30 @@
+# Avida count data
+# Fri Apr 27 10:56:49 2007
+#  1: update
+#  2: number of insts executed this update
+#  3: number of organisms
+#  4: number of different genotypes
+#  5: number of different threshold genotypes
+#  6: number of different species
+#  7: number of different threshold species
+#  8: number of different lineages
+#  9: number of births in this update
+# 10: number of deaths in this update
+# 11: number of breed true
+# 12: number of breed true organisms?
+# 13: number of no-birth organisms
+# 14: number of single-threaded organisms
+# 15: number of multi-threaded organisms
+# 16: number of modified organisms
+
+0 30 1 1 1 0 0 0 101 1 101 1 1 1 0 0 
+10 3000 100 1 1 0 0 0 0 0 0 100 100 100 0 0 
+20 6000 200 56 2 0 0 0 0 0 0 143 100 200 0 0 
+30 11850 395 179 2 0 0 0 0 0 0 212 200 395 0 0 
+40 3000 100 32 1 0 0 0 0 0 0 100 100 100 0 0 
+50 3000 100 32 1 0 0 0 0 0 0 100 100 100 0 0 
+60 5790 193 84 1 0 0 0 0 0 0 140 100 193 0 0 
+70 11040 368 178 6 0 0 0 0 0 0 219 193 368 0 0 
+80 3000 100 44 2 0 0 0 0 0 0 100 100 100 0 0 
+90 3000 100 44 2 0 0 0 0 0 0 100 100 100 0 0 
+100 5640 188 94 5 0 0 0 0 0 0 137 100 188 0 0 

Added: development/tests/demes_germline/expected/data/detail-100.pop
===================================================================
--- development/tests/demes_germline/expected/data/detail-100.pop	                        (rev 0)
+++ development/tests/demes_germline/expected/data/detail-100.pop	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,111 @@
+#filetype genotype_data
+#format id parent_id parent_dist num_cpus total_cpus length merit gest_time fitness update_born update_dead depth sequence
+
+#  1: ID
+#  2: parent ID
+#  3: parent distance
+#  4: number of orgranisms currently alive
+#  5: total number of organisms that ever existed
+#  6: length of genome
+#  7: merit
+#  8: gestation time
+#  9: fitness
+# 10: update born
+# 11: update deactivated
+# 12: depth in phylogentic tree
+# 13: genome of organism
+
+1 -1 -1 72 551 100 97 389 0.249357 -1 -1 0 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+590 -1 -1 4 4 100 87 377 0.230769 79 -1 0 rucavccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccyccccccccccccccccutycasvab 
+623 -1 -1 4 4 100 97 388 0.25 79 -1 0 rucavccccccccccccmcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+620 -1 -1 3 3 100 97 388 0.25 79 -1 0 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccqcccccccutycasvab 
+571 -1 -1 2 2 100 0 0 0 79 -1 0 ruyavcccccccccccccsccccccccccccccccccccccccccccccccccccccccccccccccccccpcccccccccccccccccccutycasvab 
+613 -1 -1 2 2 100 0 0 0 79 -1 0 rucavcccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccoccccccccccutycasvab 
+577 -1 -1 2 3 100 0 0 0 79 -1 0 rucavccccccccccccccccccccccccccccccccccccpcccccccscccccccccccccccccccccccccccccccccccccccccutycasvab 
+584 -1 -1 2 2 100 0 0 0 79 -1 0 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccczcccccctccutycasvab 
+585 -1 -1 2 2 100 0 0 0 79 -1 0 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccczcrcccctccutycasvab 
+598 -1 -1 2 2 100 0 0 0 79 -1 0 rucavccccccccccccccccccqccccccccccccccccccccccccccccccccccccccccccccccccccccccccczcccccccccutycasvab 
+604 -1 -1 2 2 100 0 0 0 79 -1 0 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccfccccccccccccccccccccccutycasvab 
+612 -1 -1 2 2 100 0 0 0 79 -1 0 rucavccccccccccccccccccccccoccccccccccccccccccccccccccccccccccccccccccccccccccccccccmbcccccutycasvab 
+611 -1 -1 2 2 100 0 0 0 79 -1 0 rucavccccccccccccccccccccccoccccccccccccccccccccccccccccccccccccccccccccccccccccccccmccccccutycasvab 
+605 -1 -1 2 2 100 0 0 0 79 -1 0 rucavcccccccccccccccccbcccccccccccccccccccccccccccccccccccccccccccccfccccccucccccccccccccccutycasvab 
+603 -1 -1 2 2 100 0 0 0 79 -1 0 rucavcccccccccccccccccccccccaccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+609 -1 -1 2 2 100 0 0 0 79 -1 0 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccocccccutycasvab 
+587 -1 -1 2 2 100 0 0 0 79 -1 0 rucavccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+591 -1 -1 2 2 100 0 0 0 79 -1 0 rucavccccccccccccccccccccccccccccccccccccycccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+615 -1 -1 2 2 100 0 0 0 79 -1 0 rucavccccccccccccucccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+573 -1 -1 1 1 100 0 0 0 79 -1 0 rucavcccccccccccccccuccccccccccccccccncccccccccccccccccccdcccccccccccccccccccccccccccccccccutycasvab 
+574 -1 -1 1 1 100 0 0 0 79 -1 0 rucavccccccccccccccccccccccccccccccccccccccccccccccecccccccccccccccccccccccccciccccccccccccutycasvab 
+575 -1 -1 1 1 100 0 0 0 79 -1 0 rucavccccccccccccccccccccqcccccccccccccccccccccccccecccccccccccccccccccccccccciccccccccccccutycasvab 
+579 -1 -1 1 1 100 0 0 0 79 -1 0 hucavcccccccccccccccccccccccxccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+580 -1 -1 1 1 100 0 0 0 79 -1 0 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccncccccccccccutycasvab 
+581 -1 -1 1 1 100 0 0 0 79 -1 0 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccclcccccccccccccccccccccccccccccutycasvab 
+583 -1 -1 1 1 100 0 0 0 79 -1 0 rucabcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccclcccccutycasvab 
+588 -1 -1 1 1 100 0 0 0 79 -1 0 rucavccccccccccccdcccjcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccstycasvab 
+589 -1 -1 1 1 100 0 0 0 79 -1 0 rucavcccwccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+592 -1 -1 1 1 100 0 0 0 79 -1 0 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccciccccccccccccccccccccutycasvab 
+593 -1 -1 1 1 100 0 0 0 79 -1 0 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccciccccccccccccclccccccutycasvab 
+594 -1 -1 1 1 100 0 0 0 79 -1 0 rucavccccccccccccccccccccccccccchccccccccccccccccccccccccccccccccccccccccccccccccccccccckccutycasveb 
+597 -1 -1 1 1 100 0 0 0 79 -1 0 rupavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+602 -1 -1 1 1 100 0 0 0 79 -1 0 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccxcccccccccccccccccccccccutycasvab 
+586 -1 -1 1 2 100 0 0 0 79 -1 0 rucavccccccccccccccgccccgccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+606 -1 -1 1 1 100 0 0 0 79 -1 0 rucavcccccccccccccccccccccccccccccccccccczcccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+607 -1 -1 1 1 100 0 0 0 79 -1 0 rqcavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+608 -1 -1 1 1 100 0 0 0 79 -1 0 rucavccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccccutycasvab 
+610 -1 -1 1 1 100 0 0 0 79 -1 0 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccocccccutybasvab 
+617 -1 -1 1 1 100 0 0 0 79 -1 0 rucavcccccnccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+256 -1 -1 1 4 100 0 0 0 39 -1 0 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycaswab 
+619 -1 -1 1 1 100 0 0 0 79 -1 0 rucavcccccccccccccccccccccccccccccccccccccctcccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+621 -1 -1 1 1 100 0 0 0 79 -1 0 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccncccccccccccccccccccccccccccccutycasvab 
+614 -1 -1 1 2 100 0 0 0 79 -1 0 rxcavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+622 -1 -1 1 1 100 0 0 0 79 -1 0 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvtb 
+624 586 1 1 1 100 0 0 0 91 -1 1 rucavccccccccccccccgccycgccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+625 1 1 1 1 100 0 0 0 91 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccchcccccccutycasvab 
+626 581 1 1 1 100 0 0 0 92 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccclcccccccccccccccccucccccccccccutycasvab 
+627 608 1 1 1 100 0 0 0 92 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccccueycasvab 
+628 1 2 1 1 99 0 0 0 92 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccccutycasvab 
+629 1 2 1 1 100 0 0 0 92 -1 1 rucavccccckccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasval 
+630 1 1 1 1 100 0 0 0 92 -1 1 rucavcccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+631 606 1 1 1 100 0 0 0 92 -1 1 rucavcccccccccccccccccccccccccccccccccccczccccccccccccccccccccccchcccccccccccccccccccccccccutycasvab 
+632 1 3 1 1 99 0 0 0 92 -1 1 rucavccccccccdccccccvcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+633 1 1 1 1 101 0 0 0 92 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccfccccccccccccccccccccccutycasvab 
+634 580 1 1 1 100 0 0 0 92 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccncccccccccccutylasvab 
+635 1 1 1 1 100 0 0 0 92 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccvccccccccccccccccutycasvab 
+636 587 1 1 1 99 0 0 0 92 -1 1 rucavccccccccccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+637 1 2 1 1 100 0 0 0 92 -1 1 rucavccczccccccccccccccccccccccccccccccccccccqcccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+638 1 1 1 1 100 0 0 0 92 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccclccccccccccccccccccccccutycasvab 
+639 1 1 1 1 100 0 0 0 92 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccaccccccccccccccccccutycasvab 
+640 1 1 1 1 101 0 0 0 92 -1 1 rucavccccccccccccccccccccccccccccccccccccccccclcccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+641 1 1 1 1 100 0 0 0 92 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccutycasvab 
+642 1 1 1 1 100 0 0 0 92 -1 1 rucavcccccccccccccccccccccccccccccccctcccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+643 1 2 1 1 101 0 0 0 92 -1 1 rucavccccccccccchcccccccccccccccccccccccccccccccccccccccccccccccccccccccpcccccccccccccccccccutycasvab 
+644 574 1 1 1 100 0 0 0 92 -1 1 rucavcccccccccccccccccccccccccccccctcccccccccccccccecccccccccccccccccccccccccciccccccccccccutycasvab 
+645 617 1 1 1 100 0 0 0 92 -1 1 rucavcccccnccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccutycasvab 
+646 1 1 1 1 100 0 0 0 92 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccwccccccccccccccccccccccccccccutycasvab 
+647 621 4 1 1 99 0 0 0 92 -1 1 rucavcccccccccccccccccccccccccccccgccccccccccccccccccccscccccnccccccccccccccyccccccccccccccutycasva 
+648 1 1 1 1 100 0 0 0 93 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccpcccccccccccccccccutycasvab 
+649 575 2 1 1 100 0 0 0 93 -1 1 zucavccccccccccccccccccccqcccccccccccccccccccccccccecccccccccccciccccccccccccciccccccccccccutycasvab 
+650 1 2 1 1 100 0 0 0 93 -1 1 rucavcccccccccccccucccccccccccccccccccbccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+651 620 1 1 1 101 0 0 0 93 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccqcccccccutycasvab 
+652 1 1 1 1 100 0 0 0 93 -1 1 rucavccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+653 1 1 1 1 100 0 0 0 93 -1 1 rucavccccccccccccccccccccccccccccjcccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+654 1 1 1 1 100 0 0 0 93 -1 1 rucavcccccccccccccccccccccccccccccckcccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+655 1 2 1 1 100 0 0 0 93 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccclcccccccccccccccccccccctccutycasvab 
+656 619 1 1 1 100 0 0 0 93 -1 1 rucavccccccccccccccccccpccccccccccccccccccctcccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+657 1 1 1 1 100 0 0 0 93 -1 1 rucavccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+658 1 1 1 1 100 0 0 0 93 -1 1 rucavccccicccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+659 1 2 1 1 100 0 0 0 93 -1 1 rucavcccccccccccrccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcutycasvab 
+660 1 3 1 1 100 0 0 0 93 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccocccccmccccccccccccccccccutyccsvab 
+661 1 1 1 1 101 0 0 0 93 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccutycasvab 
+662 602 1 1 1 100 0 0 0 93 -1 1 rucadcccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccxcccccccccccccccccccccccutycasvab 
+663 1 1 1 1 100 0 0 0 93 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccuccccccccccccccccccccccccccccccccccccccccccutycasvab 
+664 1 3 1 1 100 0 0 0 93 -1 1 rucavcpcccccccccjccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutkcasvab 
+665 592 2 1 1 100 0 0 0 93 -1 1 rucavcccccccccccccccccccoccccccccccccfcccccccccccccccccccccccccccccccciccccccccccccccccccccutycasvab 
+666 593 1 1 1 100 0 0 0 93 -1 1 rucafccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccciccccccccccccclccccccutycasvab 
+667 1 2 1 1 100 0 0 0 93 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccclcccccccccccccccccccccccccccccccutycajvab 
+668 589 4 1 1 102 0 0 0 93 -1 1 aarucavccuwccccccccccccccccpcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+669 573 1 1 1 100 0 0 0 94 -1 1 rucavcccccccccccccccuccccccccccccccccncccccccccccccccccccdcccccccccccccccccccccccciccccccccutycasvab 
+670 1 1 1 1 100 0 0 0 94 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccvccccccccccccccccccccutycasvab 
+671 1 1 1 1 100 0 0 0 94 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycayvab 
+672 1 1 1 1 100 0 0 0 94 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccxccccutycasvab 
+673 1 2 1 1 100 0 0 0 94 -1 1 kucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccoccccccccccutycasvab 

Added: development/tests/demes_germline/expected/data/dominant.dat
===================================================================
--- development/tests/demes_germline/expected/data/dominant.dat	                        (rev 0)
+++ development/tests/demes_germline/expected/data/dominant.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,30 @@
+# Avida Dominant Data
+# Fri Apr 27 10:56:49 2007
+#  1: Update
+#  2: Average Merit of the Dominant Genotype
+#  3: Average Gestation Time of the Dominant Genotype
+#  4: Average Fitness of the Dominant Genotype
+#  5: Repro Rate?
+#  6: Size of Dominant Genotype
+#  7: Copied Size of Dominant Genotype
+#  8: Executed Size of Dominant Genotype
+#  9: Abundance of Dominant Genotype
+# 10: Number of Births
+# 11: Number of Dominant Breed True?
+# 12: Dominant Gene Depth
+# 13: Dominant Breed In
+# 14: Max Fitness?
+# 15: Genotype ID of Dominant Genotype
+# 16: Name of the Dominant Genotype
+
+0 0.000000 0.000000 0.000000 0.000000 100 0.000000 0.000000 1 0 0 0 0 0.000000 1 100-aaaaa 
+10 0 0 0 0 100 0 0 100 0 0 0 0 0 1 100-aaaaa 
+20 97 389 0.249357 0.00257069 100 100 97 143 0 0 0 0 0.249357 1 100-aaaaa 
+30 97 389 0.249357 0.00257069 100 100 97 194 0 0 0 0 0.251295 1 100-aaaaa 
+40 97 389 0.249357 0.00257069 100 100 97 69 0 0 0 0 0 1 100-aaaaa 
+50 97 389 0.249357 0.00257069 100 100 97 69 0 0 0 0 0 1 100-aaaaa 
+60 97 389 0.249357 0.00257069 100 100 97 102 0 0 0 0 0.251948 1 100-aaaaa 
+70 97 389 0.249357 0.00257069 100 100 97 152 0 0 0 0 0.251948 1 100-aaaaa 
+80 97 389 0.249357 0.00257069 100 100 97 53 0 0 0 0 0 1 100-aaaaa 
+90 97 389 0.249357 0.00257069 100 100 97 53 0 0 0 0 0 1 100-aaaaa 
+100 97 389 0.249357 0.00257069 100 100 97 72 0 0 0 0 0.251948 1 100-aaaaa 

Added: development/tests/demes_germline/expected/data/historic-100.pop
===================================================================
--- development/tests/demes_germline/expected/data/historic-100.pop	                        (rev 0)
+++ development/tests/demes_germline/expected/data/historic-100.pop	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,17 @@
+#filetype genotype_data
+#format id parent_id parent_dist num_cpus total_cpus length merit gest_time fitness update_born update_dead depth sequence
+
+#  1: ID
+#  2: parent ID
+#  3: parent distance
+#  4: number of orgranisms currently alive
+#  5: total number of organisms that ever existed
+#  6: length of genome
+#  7: merit
+#  8: gestation time
+#  9: fitness
+# 10: update born
+# 11: update deactivated
+# 12: depth in phylogentic tree
+# 13: genome of organism
+

Added: development/tests/demes_germline/expected/data/resource.dat
===================================================================
--- development/tests/demes_germline/expected/data/resource.dat	                        (rev 0)
+++ development/tests/demes_germline/expected/data/resource.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,17 @@
+# Avida resource data
+# Fri Apr 27 10:56:49 2007
+# First column gives the current update, all further columns give the quantity
+# of the particular resource at that update.
+#  1: Update
+
+0 
+10 
+20 
+30 
+40 
+50 
+60 
+70 
+80 
+90 
+100 

Added: development/tests/demes_germline/expected/data/stats.dat
===================================================================
--- development/tests/demes_germline/expected/data/stats.dat	                        (rev 0)
+++ development/tests/demes_germline/expected/data/stats.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,26 @@
+# Generic Statistics Data
+# Fri Apr 27 10:56:49 2007
+#  1: update
+#  2: average inferiority (energy)
+#  3: ave probability of any mutations in genome
+#  4: probability of any mutations in dom genome
+#  5: log(average fidelity)
+#  6: log(dominant fidelity)
+#  7: change in number of genotypes
+#  8: genotypic entropy
+#  9: species entropy
+# 10: depth of most reacent coalescence
+# 11: Total number of resamplings this generation
+# 12: Total number of organisms that failed to resample this generation
+
+0 0.000000 0.097500 0.562358 0.102587 0.826353 1 0.000000 0.000000 0 0 0 
+10 0 0.562358 0.562358 0.826353 0.826353 0 0 0 0 0 0 
+20 2.44249e-15 0.562405 0.562358 0.826462 0.826353 0 1.7334 0 0 0 0 
+30 0.0093872 0.562374 0.562358 0.82639 0.826353 0 3.29336 0 0 0 0 
+40 0 0.562358 0.562358 0.826353 0.826353 -217 1.68364 0 0 0 0 
+50 0 0.562358 0.562358 0.826353 0.826353 0 1.68364 0 0 0 0 
+60 0.0376539 0.562391 0.562358 0.826428 0.826353 0 2.76094 0 0 0 0 
+70 0.0259437 0.562358 0.562358 0.826353 0.826353 0 3.67898 0 0 0 0 
+80 0 0.562358 0.562358 0.826353 0.826353 -271 2.44546 0 0 0 0 
+90 0 0.562358 0.562358 0.826353 0.826353 0 2.44546 0 0 0 0 
+100 0.0695927 0.562408 0.562358 0.826469 0.826353 0 3.41144 0 0 0 0 

Added: development/tests/demes_germline/expected/data/tasks.dat
===================================================================
--- development/tests/demes_germline/expected/data/tasks.dat	                        (rev 0)
+++ development/tests/demes_germline/expected/data/tasks.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,26 @@
+# Avida tasks data
+# Fri Apr 27 10:56:49 2007
+# First column gives the current update, next columns give the number
+# of organisms that have the particular task as a component of their merit
+#  1: Update
+#  2: Not
+#  3: Nand
+#  4: And
+#  5: OrNot
+#  6: Or
+#  7: AndNot
+#  8: Nor
+#  9: Xor
+# 10: Equals
+
+0 0 0 0 0 0 0 0 0 0 
+10 0 0 0 0 0 0 0 0 0 
+20 0 0 0 0 0 0 0 0 0 
+30 0 0 0 0 0 0 0 0 0 
+40 0 0 0 0 0 0 0 0 0 
+50 0 0 0 0 0 0 0 0 0 
+60 0 0 0 0 0 0 0 0 0 
+70 0 0 0 0 0 0 0 0 0 
+80 0 0 0 0 0 0 0 0 0 
+90 0 0 0 0 0 0 0 0 0 
+100 0 0 0 0 0 0 0 0 0 

Added: development/tests/demes_germline/expected/data/tasks_exe.dat
===================================================================
--- development/tests/demes_germline/expected/data/tasks_exe.dat	                        (rev 0)
+++ development/tests/demes_germline/expected/data/tasks_exe.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,26 @@
+# Avida tasks execution data
+# Fri Apr 27 10:56:49 2007
+# First column gives the current update, all further columns give the number
+# of times the particular task has been executed this update.
+#  1: Update
+#  2: Not
+#  3: Nand
+#  4: And
+#  5: OrNot
+#  6: Or
+#  7: AndNot
+#  8: Nor
+#  9: Xor
+# 10: Equals
+
+0 0 0 0 0 0 0 0 0 0 
+10 0 0 0 0 0 0 0 0 0 
+20 0 0 0 0 0 0 0 0 0 
+30 0 0 0 0 0 0 0 0 0 
+40 0 0 0 0 0 0 0 0 0 
+50 0 0 0 0 0 0 0 0 0 
+60 0 0 0 0 0 0 0 0 0 
+70 0 0 0 0 0 0 0 0 0 
+80 0 0 0 0 0 0 0 0 0 
+90 0 0 0 0 0 0 0 0 0 
+100 0 0 0 0 0 0 0 0 0 

Added: development/tests/demes_germline/expected/data/tasks_quality.dat
===================================================================
--- development/tests/demes_germline/expected/data/tasks_quality.dat	                        (rev 0)
+++ development/tests/demes_germline/expected/data/tasks_quality.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,34 @@
+# Avida tasks quality data
+# Fri Apr 27 10:56:49 2007
+# First column gives the current update, rest give average and max task quality
+#  1: Update
+#  2: Not Average
+#  3: Not Max
+#  4: Nand Average
+#  5: Nand Max
+#  6: And Average
+#  7: And Max
+#  8: OrNot Average
+#  9: OrNot Max
+# 10: Or Average
+# 11: Or Max
+# 12: AndNot Average
+# 13: AndNot Max
+# 14: Nor Average
+# 15: Nor Max
+# 16: Xor Average
+# 17: Xor Max
+# 18: Equals Average
+# 19: Equals Max
+
+0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 
+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+50 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+60 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+70 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+90 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

Added: development/tests/demes_germline/expected/data/time.dat
===================================================================
--- development/tests/demes_germline/expected/data/time.dat	                        (rev 0)
+++ development/tests/demes_germline/expected/data/time.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,18 @@
+# Avida time data
+# Fri Apr 27 10:56:49 2007
+#  1: update
+#  2: avida time
+#  3: average generation
+#  4: num_executed?
+
+0 0.000000 0.000000 30 
+10 0.0927835 0 3000 
+20 0.195876 1 6000 
+30 0.299977 1.98734 11850 
+40 0.404502 0 3000 
+50 0.508118 0 3000 
+60 0.611607 0.963731 5790 
+70 0.71603 1.92935 11040 
+80 0.820832 0 3000 
+90 0.924159 0 3000 
+100 1.02761 0.93617 5640 

Added: development/tests/demes_germline/test_list
===================================================================
--- development/tests/demes_germline/test_list	                        (rev 0)
+++ development/tests/demes_germline/test_list	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,35 @@
+;--- Begin Test Configuration File (test_list) ---
+[main]
+args = -s 100            ; Command line arguments to pass to the application
+app = %(app)s            ; Application path to test
+nonzeroexit = disallow   ; Exit code handling (disallow, allow, or require)
+                         ;  disallow - treat non-zero exit codes as failures
+                         ;  allow - all exit codes are acceptable
+                         ;  require - treat zero exit codes as failures, useful
+                         ;            for creating tests for app error checking
+createdby = Dave Knoester ; Who created the test
+email = dk at cse.msu.edu ; Email address for the test's creator
+
+[consistency]
+enabled = yes            ; Is this test a consistency test?
+long = no                ; Is this test a long test?
+
+[performance]
+enabled = no             ; Is this test a performance test?
+long = no                ; Is this test a long test?
+
+; The following variables can be used in constructing setting values by calling
+; them with %(variable_name)s.  For example see 'app' above.
+;
+; app 
+; builddir 
+; cpus 
+; mode 
+; perf_repeat 
+; perf_user_margin 
+; perf_wall_margin 
+; svn 
+; svnmetadir 
+; svnversion 
+; testdir 
+;--- End Test Configuration File ---

Added: development/tests/demes_grid_repl/config/avida.cfg
===================================================================
--- development/tests/demes_grid_repl/config/avida.cfg	                        (rev 0)
+++ development/tests/demes_grid_repl/config/avida.cfg	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,257 @@
+#############################################################################
+# This file includes all the basic run-time defines for Avida.
+# For more information, see doc/config.html
+#############################################################################
+
+VERSION_ID 2.7.0   # Do not change this value.
+
+### GENERAL_GROUP ###
+# General Settings
+ANALYZE_MODE 0  # 0 = Disabled
+                # 1 = Enabled
+                # 2 = Interactive
+VIEW_MODE 1     # Initial viewer screen
+CLONE_FILE -    # Clone file to load
+VERBOSITY 1     # Control output verbosity
+
+### ARCH_GROUP ###
+# Architecture Variables
+WORLD_X 10        # Width of the Avida world
+WORLD_Y 1000      # Height of the Avida world
+WORLD_GEOMETRY 1  # 1 = Bounded Grid
+                  # 2 = Torus
+                  # 3 = Clique
+RANDOM_SEED 0     # Random number seed (0 for based on time)
+HARDWARE_TYPE 0   # 0 = Original CPUs
+                  # 1 = New SMT CPUs
+                  # 2 = Transitional SMT
+                  # 3 = Experimental CPU
+                  # 4 = Gene Expression CPU
+
+### CONFIG_FILE_GROUP ###
+# Configuration Files
+DATA_DIR data                       # Directory in which config files are found
+INST_SET -                          # File containing instruction set
+EVENT_FILE events.cfg               # File containing list of events during run
+ANALYZE_FILE analyze.cfg            # File used for analysis mode
+ENVIRONMENT_FILE environment.cfg    # File that describes the environment
+START_CREATURE default-classic.org  # Organism to seed the soup
+
+### DEME_GROUP ###
+# Demes and Germlines
+NUM_DEMES 100                # Number of independent groups in the population.
+DEMES_USE_GERMLINE 0         # Whether demes use a distinct germline; 0=off
+DEMES_HAVE_MERIT 0           # Whether demes have merit; 0=no
+GERMLINE_COPY_MUT 0.0075     # Prob. of copy mutations occuring during
+                             # germline replication.
+GERMLINE_REPLACES_SOURCE 0   # Whether the source germline is updated
+                             # on replication; 0=no.
+GERMLINE_RANDOM_PLACEMENT 0  # Whether the seed for a germline is placed
+                             #  randomly within the deme; 0=no.
+MAX_DEME_AGE 40              # The maximum age of a deme (in updates) to be
+                             # used for age-based replication (default=500).
+
+### REPRODUCTION_GROUP ###
+# Birth and Death
+BIRTH_METHOD 0           # Which organism should be replaced on birth?
+                         # 0 = Random organism in neighborhood
+                         # 1 = Oldest in neighborhood
+                         # 2 = Largest Age/Merit in neighborhood
+                         # 3 = None (use only empty cells in neighborhood)
+                         # 4 = Random from population (Mass Action)
+                         # 5 = Oldest in entire population
+                         # 6 = Random within deme
+                         # 7 = Organism faced by parent
+                         # 8 = Next grid cell (id+1)
+                         # 9 = Largest energy used in entire population
+                         # 10 = Largest energy used in neighborhood
+PREFER_EMPTY 1           # Give empty cells preference in offsping placement?
+ALLOW_PARENT 1           # Allow births to replace the parent organism?
+DEATH_METHOD 2           # 0 = Never die of old age.
+                         # 1 = Die when inst executed = AGE_LIMIT (+deviation)
+                         # 2 = Die when inst executed = length*AGE_LIMIT (+dev)
+AGE_LIMIT 20             # Modifies DEATH_METHOD
+AGE_DEVIATION 0          # Creates a distribution around AGE_LIMIT
+ALLOC_METHOD 0           # (Orignal CPU Only)
+                         # 0 = Allocated space is set to default instruction.
+                         # 1 = Set to section of dead genome (Necrophilia)
+                         # 2 = Allocated space is set to random instruction.
+DIVIDE_METHOD 1          # 0 = Divide leaves state of mother untouched.
+                         # 1 = Divide resets state of mother
+                         #     (after the divide, we have 2 children)
+                         # 2 = Divide resets state of current thread only
+                         #     (does not touch possible parasite threads)
+GENERATION_INC_METHOD 1  # 0 = Only the generation of the child is
+                         #     increased on divide.
+                         # 1 = Both the generation of the mother and child are
+                         #     increased on divide (good with DIVIDE_METHOD 1).
+
+### RECOMBINATION_GROUP ###
+# Sexual Recombination and Modularity
+RECOMBINATION_PROB 1.0  # probability of recombination in div-sex
+MAX_BIRTH_WAIT_TIME -1  # Updates incipiant orgs can wait for crossover
+MODULE_NUM 0            # number of modules in the genome
+CONT_REC_REGS 1         # are (modular) recombination regions continuous
+CORESPOND_REC_REGS 1    # are (modular) recombination regions swapped randomly
+                        #  or with corresponding positions?
+TWO_FOLD_COST_SEX 0     # 1 = only one recombined offspring is born.
+                        # 2 = both offspring are born
+SAME_LENGTH_SEX 0       # 0 = recombine with any genome
+                        # 1 = only recombine w/ same length
+
+### DIVIDE_GROUP ###
+# Divide Restrictions
+CHILD_SIZE_RANGE 2.0  # Maximal differential between child and parent sizes.
+MIN_COPIED_LINES 0.5  # Code fraction which must be copied before divide.
+MIN_EXE_LINES 0.5     # Code fraction which must be executed before divide.
+REQUIRE_ALLOCATE 1    # (Original CPU Only) Require allocate before divide?
+REQUIRED_TASK -1      # Task ID required for successful divide.
+IMMUNITY_TASK -1      # Task providing immunity from the required task.
+REQUIRED_REACTION -1  # Reaction ID required for successful divide.
+REQUIRED_BONUS 0      # The bonus that an organism must accumulate to divide.
+
+### MUTATION_GROUP ###
+# Mutations
+POINT_MUT_PROB 0.0    # Mutation rate (per-location per update)
+COPY_MUT_PROB 0.0075  # Mutation rate (per copy)
+INS_MUT_PROB 0.0      # Insertion rate (per site, applied on divide)
+DEL_MUT_PROB 0.0      # Deletion rate (per site, applied on divide)
+DIV_MUT_PROB 0.0      # Mutation rate (per site, applied on divide)
+DIVIDE_MUT_PROB 0.0   # Mutation rate (per divide)
+DIVIDE_INS_PROB 0.05  # Insertion rate (per divide)
+DIVIDE_DEL_PROB 0.05  # Deletion rate (per divide)
+PARENT_MUT_PROB 0.0   # Per-site, in parent, on divide
+SPECIAL_MUT_LINE -1   # If this is >= 0, ONLY this line is mutated
+INJECT_INS_PROB 0.0   # Insertion rate (per site, applied on inject)
+INJECT_DEL_PROB 0.0   # Deletion rate (per site, applied on inject)
+INJECT_MUT_PROB 0.0   # Mutation rate (per site, applied on inject)
+META_COPY_MUT 0.0     # Prob. of copy mutation rate changing (per gen)
+META_STD_DEV 0.0      # Standard deviation of meta mutation size.
+MUT_RATE_SOURCE 1     # 1 = Mutation rates determined by environment.
+                      # 2 = Mutation rates inherited from parent.
+
+### REVERSION_GROUP ###
+# Mutation Reversion
+# These slow down avida a lot, and should be set to 0.0 normally.
+REVERT_FATAL 0.0           # Should any mutations be reverted on birth?
+REVERT_DETRIMENTAL 0.0     #   0.0 to 1.0; Probability of reversion.
+REVERT_NEUTRAL 0.0         # 
+REVERT_BENEFICIAL 0.0      # 
+STERILIZE_FATAL 0.0        # Should any mutations clear (kill) the organism?
+STERILIZE_DETRIMENTAL 0.0  # 
+STERILIZE_NEUTRAL 0.0      # 
+STERILIZE_BENEFICIAL 0.0   # 
+FAIL_IMPLICIT 0            # Should copies that failed *not* due to mutations
+                           # be eliminated?
+NEUTRAL_MAX 0.0            # The percent benifical change from parent fitness to be considered neutral.
+NEUTRAL_MIN 0.0            # The percent deleterious change from parent fitness to be considered neutral.
+
+### TIME_GROUP ###
+# Time Slicing
+AVE_TIME_SLICE 30        # Ave number of insts per org per update
+SLICING_METHOD 1         # 0 = CONSTANT: all organisms get default...
+                         # 1 = PROBABILISTIC: Run _prob_ proportional to merit.
+                         # 2 = INTEGRATED: Perfectly integrated deterministic.
+BASE_MERIT_METHOD 4      # 0 = Constant (merit independent of size)
+                         # 1 = Merit proportional to copied size
+                         # 2 = Merit prop. to executed size
+                         # 3 = Merit prop. to full size
+                         # 4 = Merit prop. to min of executed or copied size
+                         # 5 = Merit prop. to sqrt of the minimum size
+                         # 6 = Merit prop. to num times MERIT_BONUS_INST is in genome.
+BASE_CONST_MERIT 100     # Base merit when BASE_MERIT_METHOD set to 0
+DEFAULT_BONUS 1.0        # Initial bonus before any tasks
+MERIT_DEFAULT_BONUS 0    # Scale the merit of an offspring by the default bonus
+                         # rather than the accumulated bonus of the parent?
+MERIT_BONUS_INST 0       # in BASE_MERIT_METHOD 6, this sets which instruction counts (-1=none, 0= 1st in INST_SET.)
+MERIT_BONUS_EFFECT 0     # in BASE_MERIT_METHOD 6, this sets how much merit is earned per INST (-1=penalty, 0= no effect.)
+FITNESS_VALLEY 0         # in BASE_MERIT_METHOD 6, this creates valleys from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP (0= off, 1=on)
+FITNESS_VALLEY_START 0   # if FITNESS_VALLEY =1, orgs with num_key_instructions from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP get fitness 1 (lowest)
+FITNESS_VALLEY_STOP 0    # if FITNESS_VALLEY =1, orgs with num_key_instructions from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP get fitness 1 (lowest)
+MAX_CPU_THREADS 1        # Number of Threads a CPU can spawn
+THREAD_SLICING_METHOD 0  # Formula for and organism's thread slicing
+                         #   (num_threads-1) * THREAD_SLICING_METHOD + 1
+                         # 0 = One thread executed per time slice.
+                         # 1 = All threads executed each time slice.
+MAX_LABEL_EXE_SIZE 1     # Max nops marked as executed when labels are used
+DONATE_SIZE 5.0          # Amount of merit donated with 'donate' command
+DONATE_MULT 10.0         # Multiple of merit given that the target receives.
+MAX_DONATE_KIN_DIST -1   # Limit on distance of relation for donate; -1=no max
+MAX_DONATE_EDIT_DIST -1  # Limit on edit distance for donate; -1=no max
+MAX_DONATES 1000000      # Limit on number of donates organisms are allowed.
+
+### PROMOTER_GROUP ###
+# Promoters
+PROMOTERS_ENABLED 0             # Use the promoter/terminator execution scheme.
+                                # Certain instructions must also be included.
+PROMOTER_PROCESSIVITY 1.0       # Chance of not terminating after each cpu cycle.
+PROMOTER_PROCESSIVITY_INST 1.0  # Chance of not terminating after each instruction.
+PROMOTER_BG_STRENGTH 0          # Probability of positions that are not promoter
+                                # instructions initiating execution (promoters are 1).
+REGULATION_STRENGTH 1           # Strength added or subtracted to a promoter by regulation.
+REGULATION_DECAY_FRAC 0.1       # Fraction of regulation that decays away. 
+                                # Max regulation = 2^(REGULATION_STRENGTH/REGULATION_DECAY_FRAC)
+
+### GENEOLOGY_GROUP ###
+# Geneology
+TRACK_MAIN_LINEAGE 1  # Keep all ancestors of the active population?
+                      # 0=no, 1=yes, 2=yes,w/sexual population
+THRESHOLD 3           # Number of organisms in a genotype needed for it
+                      #   to be considered viable.
+GENOTYPE_PRINT 0      # 0/1 (off/on) Print out all threshold genotypes?
+GENOTYPE_PRINT_DOM 0  # Print out a genotype if it stays dominant for
+                      #   this many updates. (0 = off)
+SPECIES_THRESHOLD 2   # max failure count for organisms to be same species
+SPECIES_RECORDING 0   # 1 = full, 2 = limited search (parent only)
+SPECIES_PRINT 0       # 0/1 (off/on) Print out all species?
+TEST_CPU_TIME_MOD 20  # Time allocated in test CPUs (multiple of length)
+
+### LOG_GROUP ###
+# Log Files
+LOG_CREATURES 0  # 0/1 (off/on) toggle to print file.
+LOG_GENOTYPES 0  # 0 = off, 1 = print ALL, 2 = print threshold ONLY.
+LOG_THRESHOLD 0  # 0/1 (off/on) toggle to print file.
+LOG_SPECIES 0    # 0/1 (off/on) toggle to print file.
+
+### LINEAGE_GROUP ###
+# Lineage
+# NOTE: This should probably be called "Clade"
+# This one can slow down avida a lot. It is used to get an idea of how
+# often an advantageous mutation arises, and where it goes afterwards.
+# Lineage creation options are.  Works only when LOG_LINEAGES is set to 1.
+#   0 = manual creation (on inject, use successive integers as lineage labels).
+#   1 = when a child's (potential) fitness is higher than that of its parent.
+#   2 = when a child's (potential) fitness is higher than max in population.
+#   3 = when a child's (potential) fitness is higher than max in dom. lineage
+# *and* the child is in the dominant lineage, or (2)
+#   4 = when a child's (potential) fitness is higher than max in dom. lineage
+# (and that of its own lineage)
+#   5 = same as child's (potential) fitness is higher than that of the
+#       currently dominant organism, and also than that of any organism
+#       currently in the same lineage.
+#   6 = when a child's (potential) fitness is higher than any organism
+#       currently in the same lineage.
+#   7 = when a child's (potential) fitness is higher than that of any
+#       organism in its line of descent
+LOG_LINEAGES 0             # 
+LINEAGE_CREATION_METHOD 0  # 
+
+### ORGANISM_NETWORK_GROUP ###
+# Organism Network Communication
+NET_ENABLED 0      # Enable Network Communication Support
+NET_DROP_PROB 0.0  # Message drop rate
+NET_MUT_PROB 0.0   # Message corruption probability
+NET_MUT_TYPE 0     # Type of message corruption.  0 = Random Single Bit, 1 = Always Flip Last
+NET_STYLE 0        # Communication Style.  0 = Random Next, 1 = Receiver Facing
+
+### BUY_SELL_GROUP ###
+# Buying and Selling Parameters
+SAVE_RECEIVED 0  # Enable storage of all inputs bought from other orgs
+BUY_PRICE 0      # price offered by organisms attempting to buy
+SELL_PRICE 0     # price offered by organisms attempting to sell
+
+### ANALYZE_GROUP ###
+# Analysis Settings
+MT_CONCURRENCY 1   # Number of concurrent analyze threads
+ANALYZE_OPTION_1   # String variable accessible from analysis scripts
+ANALYZE_OPTION_2   # String variable accessible from analysis scripts

Added: development/tests/demes_grid_repl/config/default-classic.org
===================================================================
--- development/tests/demes_grid_repl/config/default-classic.org	                        (rev 0)
+++ development/tests/demes_grid_repl/config/default-classic.org	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,100 @@
+h-alloc    # Allocate space for child
+h-search   # Locate the end of the organism
+nop-C      #
+nop-A      #
+mov-head   # Place write-head at beginning of offspring.
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+h-search   # Mark the beginning of the copy loop
+h-copy     # Do the copy
+if-label   # If we're done copying....
+nop-C      #
+nop-A      #
+h-divide   #    ...divide!
+mov-head   # Otherwise, loop back to the beginning of the copy loop.
+nop-A      # End label.
+nop-B      #

Added: development/tests/demes_grid_repl/config/environment.cfg
===================================================================
--- development/tests/demes_grid_repl/config/environment.cfg	                        (rev 0)
+++ development/tests/demes_grid_repl/config/environment.cfg	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,9 @@
+REACTION  NOT  not   process:value=1.0:type=pow  requisite:max_count=1
+REACTION  NAND nand  process:value=1.0:type=pow  requisite:max_count=1
+REACTION  AND  and   process:value=2.0:type=pow  requisite:max_count=1
+REACTION  ORN  orn   process:value=2.0:type=pow  requisite:max_count=1
+REACTION  OR   or    process:value=3.0:type=pow  requisite:max_count=1
+REACTION  ANDN andn  process:value=3.0:type=pow  requisite:max_count=1
+REACTION  NOR  nor   process:value=4.0:type=pow  requisite:max_count=1
+REACTION  XOR  xor   process:value=4.0:type=pow  requisite:max_count=1
+REACTION  EQU  equ   process:value=5.0:type=pow  requisite:max_count=1

Added: development/tests/demes_grid_repl/config/events.cfg
===================================================================
--- development/tests/demes_grid_repl/config/events.cfg	                        (rev 0)
+++ development/tests/demes_grid_repl/config/events.cfg	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,19 @@
+# Print all of the standard data files...
+u 0 InjectDemes
+u 0:10:end PrintAverageData       # Save info about they average genotypes
+u 0:10:end PrintDominantData      # Save info about most abundant genotypes
+u 0:10:end PrintStatsData         # Collect satistics about entire pop.
+u 0:10:end PrintCountData         # Count organisms, genotypes, species, etc.
+u 0:10:end PrintTasksData         # Save organisms counts for each task.
+u 0:10:end PrintTimeData          # Track time conversion (generations, etc.)
+u 0:10:end PrintResourceData      # Track resource abundance.
+u 0:10:end PrintDominantGenotype      # Save the most abundant genotypes
+u 0:10:end PrintTasksExeData    # Num. times tasks have been executed.
+u 0:10:end PrintTasksQualData   # Task quality information
+
+u 1:1:end ReplicateDemes deme-age
+
+# Setup the exit time and full population data collection.
+u 100 SavePopulation         # Save current state of population.
+u 100 SaveHistoricPopulation # Save ancestors of current population.
+u 100 exit                        # exit

Added: development/tests/demes_grid_repl/config/instset-classic.cfg
===================================================================
--- development/tests/demes_grid_repl/config/instset-classic.cfg	                        (rev 0)
+++ development/tests/demes_grid_repl/config/instset-classic.cfg	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,28 @@
+nop-A      1   # a
+nop-B      1   # b
+nop-C      1   # c
+if-n-equ   1   # d
+if-less    1   # e
+pop        1   # f
+push       1   # g
+swap-stk   1   # h
+swap       1   # i 
+shift-r    1   # j
+shift-l    1   # k
+inc        1   # l
+dec        1   # m
+add        1   # n
+sub        1   # o
+nand       1   # p
+IO         1   # q   Puts current contents of register and gets new.
+h-alloc    1   # r   Allocate as much memory as organism can use.
+h-divide   1   # s   Cuts off everything between the read and write heads
+h-copy     1   # t   Combine h-read and h-write
+h-search   1   # u   Search for matching template, set flow head & return info
+               #   #   if no template, move flow-head here, set size&offset=0.
+mov-head   1   # v   Move ?IP? head to flow control.
+jmp-head   1   # w   Move ?IP? head by fixed amount in CX.  Set old pos in CX.
+get-head   1   # x   Get position of specified head in CX.
+if-label   1   # y
+set-flow   1   # z   Move flow-head to address in ?CX? 
+

Added: development/tests/demes_grid_repl/expected/data/archive/100-aaaaa.org
===================================================================
--- development/tests/demes_grid_repl/expected/data/archive/100-aaaaa.org	                        (rev 0)
+++ development/tests/demes_grid_repl/expected/data/archive/100-aaaaa.org	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,134 @@
+# Fri Apr 27 10:46:15 2007
+# Filename........: archive/100-aaaaa.org
+# Update Output...: 100
+# Is Viable.......: 1
+# Repro Cycle Size: 0
+# Depth to Viable.: 0
+# Update Created..: -1
+# Genotype ID.....: 1
+# Parent Gen ID...: -1
+# Tree Depth......: 0
+# Parent Distance.: -1
+# 
+# Generation: 0
+# Merit...........: 97.000000
+# Gestation Time..: 389
+# Fitness.........: 0.249357
+# Errors..........: 0
+# Genome Size.....: 100
+# Copied Size.....: 100
+# Executed Size...: 97
+# Offspring.......: SELF
+# 
+# Tasks Performed:
+# not 0 (0.000000)
+# nand 0 (0.000000)
+# and 0 (0.000000)
+# orn 0 (0.000000)
+# or 0 (0.000000)
+# andn 0 (0.000000)
+# nor 0 (0.000000)
+# xor 0 (0.000000)
+# equ 0 (0.000000)
+
+
+h-alloc
+h-search
+nop-C
+nop-A
+mov-head
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+h-search
+h-copy
+if-label
+nop-C
+nop-A
+h-divide
+mov-head
+nop-A
+nop-B

Added: development/tests/demes_grid_repl/expected/data/average.dat
===================================================================
--- development/tests/demes_grid_repl/expected/data/average.dat	                        (rev 0)
+++ development/tests/demes_grid_repl/expected/data/average.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,30 @@
+# Avida Average Data
+# Fri Apr 27 10:46:14 2007
+#  1: Update
+#  2: Merit
+#  3: Gestation Time
+#  4: Fitness
+#  5: Repro Rate?
+#  6: Size
+#  7: Copied Size
+#  8: Executed Size
+#  9: Abundance
+# 10: Proportion of organisms that gave birth in this update
+# 11: Proportion of Breed True Organisms
+# 12: Genotype Depth
+# 13: Generation
+# 14: Neutral Metric
+# 15: Lineage Label
+# 16: True Replication Rate (based on births/update, time-averaged)
+
+0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 101.000000 101.000000 0.000000 0.000000 0.000000 0.000000 0.000000 
+10 97 389 0 0 100 100 97 0 0 0 0 0 0 0 0 
+20 97 389 0.249357 0 100.015 100 97 3.57143 0 0 0.285 1 0.128671 0 0 
+30 95.7848 387.223 0.247028 0 100.005 99.4987 95.7848 2.2067 0 0 0.594937 1.98734 0.123768 0 0 
+40 95.06 387.56 0.245003 0 100.06 98.96 95.06 2.94118 0 0 0.69 2.35 -0.309449 -1 0 
+50 93.2157 385.549 0.241012 0 100.059 98 93.2157 2.83333 0.00980392 0 0.715686 2.40196 -0.30434 -1 0 
+60 94.9947 387.021 0.245019 0 100.059 98.9305 94.9947 2.14943 0 0 0.914439 3.26738 -0.284372 -1 0 
+70 94.7845 386.101 0.244936 0 100.078 98.7414 94.7845 2.02326 0 0 1.10632 4.20115 -0.278358 -1 0 
+80 93.5 384.06 0.242536 0 102 97.54 93.5 2.08333 0 0 1.36 4.94 -0.642984 -1 0 
+90 91.6863 380.157 0.239586 0 101.961 96.6078 91.6863 2.04 0 0 1.37255 4.98039 -0.608086 -1 0 
+100 93.0843 381.73 0.242681 0 102.275 97.5112 93.0843 1.91398 0.00561798 0 1.57303 5.92697 -0.760924 -1 0 

Added: development/tests/demes_grid_repl/expected/data/count.dat
===================================================================
--- development/tests/demes_grid_repl/expected/data/count.dat	                        (rev 0)
+++ development/tests/demes_grid_repl/expected/data/count.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,30 @@
+# Avida count data
+# Fri Apr 27 10:46:14 2007
+#  1: update
+#  2: number of insts executed this update
+#  3: number of organisms
+#  4: number of different genotypes
+#  5: number of different threshold genotypes
+#  6: number of different species
+#  7: number of different threshold species
+#  8: number of different lineages
+#  9: number of births in this update
+# 10: number of deaths in this update
+# 11: number of breed true
+# 12: number of breed true organisms?
+# 13: number of no-birth organisms
+# 14: number of single-threaded organisms
+# 15: number of multi-threaded organisms
+# 16: number of modified organisms
+
+0 30 1 1 1 0 0 0 101 1 101 1 1 1 0 0 
+10 3000 100 1 1 0 0 0 0 0 0 100 100 100 0 0 
+20 6000 200 56 2 0 0 0 0 0 0 143 100 200 0 0 
+30 11850 395 179 2 0 0 0 0 0 0 212 200 395 0 0 
+40 3000 100 34 13 0 0 0 0 0 0 15 100 100 0 0 
+50 3030 102 36 13 0 0 0 1 0 0 15 100 102 0 0 
+60 5610 187 87 21 0 0 0 0 0 0 49 100 187 0 0 
+70 10440 348 172 23 0 0 0 0 0 0 124 185 348 0 0 
+80 3000 100 48 28 0 0 0 0 0 0 8 100 100 0 0 
+90 3060 102 50 28 0 0 0 0 0 0 8 100 102 0 0 
+100 5310 178 93 36 0 0 0 1 0 0 40 100 178 0 0 

Added: development/tests/demes_grid_repl/expected/data/detail-100.pop
===================================================================
--- development/tests/demes_grid_repl/expected/data/detail-100.pop	                        (rev 0)
+++ development/tests/demes_grid_repl/expected/data/detail-100.pop	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,110 @@
+#filetype genotype_data
+#format id parent_id parent_dist num_cpus total_cpus length merit gest_time fitness update_born update_dead depth sequence
+
+#  1: ID
+#  2: parent ID
+#  3: parent distance
+#  4: number of orgranisms currently alive
+#  5: total number of organisms that ever existed
+#  6: length of genome
+#  7: merit
+#  8: gestation time
+#  9: fitness
+# 10: update born
+# 11: update deactivated
+# 12: depth in phylogentic tree
+# 13: genome of organism
+
+1 -1 -1 32 415 100 97 389 0.249357 -1 -1 0 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+493 1 2 4 5 100 97 387 0.250646 78 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccicccccccccccccccccccccccccccccccccicccutycasvab 
+525 340 2 4 5 100 97 386 0.251295 79 -1 2 rucavccfccccccccccccccccccccccccckcdcccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+258 176 2 4 6 101 98 390 0.251282 51 -1 2 rucavcccccccgcccccccccccccccccccccpcccccccccccqcccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+519 204 2 4 5 100 97 387 0.250646 79 -1 3 rucavcccccccccccccclccccccccmzcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+482 327 1 4 5 100 87 374 0.23262 78 -1 2 rucavcccccccccccccccccccccccccccccccccccccccccccctycccccccccccccccccccoccccccccccccccccccccutycasvab 
+125 1 3 3 7 100 0 0 0 27 -1 1 rucavccccccccclccccccccccccccwccccccccccccccccccccccccccccccccccccccccccccccccccccyccccccccutycasvab 
+381 44 2 3 4 100 97 387 0.250646 67 -1 2 rucavcccccccccccccccccccccccccccccccccccjcccccccccccccccnccccccccccccccccchccccccccccccccccutycasvab 
+74 1 1 3 13 101 98 393 0.249364 26 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccchcccccccccccccccccccccccccccccccccccccccutycasvab 
+324 1 1 3 5 101 98 393 0.249364 64 -1 1 qrucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+300 176 1 3 4 100 97 385 0.251948 53 -1 2 rucavcctcccccccccccccccccccccccccpcccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+554 1 1 3 4 100 97 388 0.25 79 -1 1 rucavcccccccccccccccccccccccccccccccccfccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+273 44 2 3 6 100 97 386 0.251295 52 -1 2 rucavccccccccccccccccccccmccccccccccccccjccccccccccccccccccccccccccccccccccccccwcccccccccccutycasvab 
+422 177 1 3 4 99 96 385 0.249351 77 -1 2 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccchcccccccccccccccccccccccccccccccutycasvab 
+113 1 2 3 10 100 97 387 0.250646 27 -1 1 rucavccfccccccccccccccccccccccccccccccccccccccccccccccccccccccclcccccccccccccccccccccccccccutycasvab 
+338 296 1 2 3 100 97 386 0.251295 65 -1 3 rucavccccccccmccccccccjccccccccccccccccccccccccccccccccccccccccccccccfcccccccccccccccccccccutycasvab 
+476 367 1 2 3 101 98 388 0.252577 78 -1 3 rucavccfccgcccccccccccccccxccccccccccccccccccccccccccccccccccccclcccccacccccccccccccdcccccccutycasvab 
+310 264 29 2 3 100 0 0 0 63 -1 2 cccccccccccccccccccccccccccccbcccccccccccutyeasvabrucavcccccccccccccccccccmccccccccccccfcccccccccccc 
+372 1 1 2 3 100 0 0 0 66 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccuzycasvab 
+346 1 1 2 3 99 0 0 0 65 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutyasvab 
+363 122 1 2 3 100 97 388 0.25 66 -1 2 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccfccccccccccbccccccccccutycasvab 
+359 34 1 2 3 99 96 385 0.249351 66 -1 2 rucavccccccccccccccccccccccccccccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+375 92 1 2 3 100 97 388 0.25 66 -1 2 rucavcccccccccccccqcccccccccccccccccccccccccccccccccccccrccccccccccccccccccccccccccccccccccutycasvab 
+356 1 3 2 3 99 0 0 0 66 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccucccccccccccccccccccccccccutycabvab 
+424 1 2 2 3 100 49 287 0.170732 77 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccmccccccccccccccccccccccccutycmsvab 
+431 347 102 2 3 201 0 0 0 77 -1 4 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarucavcccccccccccccchcccccccccccccceccccccccccccccccccciccchccccwcccccccccccccccccccccccccccutycamsvab 
+268 1 1 2 3 99 0 0 0 52 -1 1 rucvccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+430 4 3 2 3 101 0 0 0 77 -1 2 rucavcccccccccccccccccccccccccccccccccccccicccccccccccnccccccccccccccccccccccccccccccctcccccutycaevab 
+297 1 1 2 3 100 49 288 0.170139 53 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycosvab 
+394 142 2 2 3 100 97 385 0.251948 76 -1 2 rucavcccccccccmcciccccccccccwccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccutycasvab 
+557 1 1 2 3 100 97 389 0.249357 79 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccchccccccccccccccccutycasvab 
+400 263 1 2 4 100 0 0 0 76 -1 3 rucavccccccccccccccccccccccccccccccccccccccccccdcycccccccccccccdcccccccccccccccccccccccccccutycasvab 
+277 39 2 2 5 99 96 384 0.25 52 -1 2 rucavcccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdutycasvab 
+415 54 1 2 4 100 0 0 0 77 -1 2 rucavccccccccccccccccccccccccccccccccccccccccvcccccccclccccccccccccccccccccccccccccccccccccutycasvab 
+545 1 2 2 4 100 0 0 0 79 -1 1 rucavchcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccutycasvab 
+604 297 24 2 2 100 0 0 0 98 -1 2 cccccccccccccccccccccccccccccccccccccccccutycosvabrucavccccccccccccccccccccccccccccccccccccccccccccc 
+443 1 2 1 3 100 0 0 0 77 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccczccccccccccccccccccccccccccccccccccwccccccutycasvab 
+267 1 1 1 4 100 97 388 0.25 52 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccqccccutycasvab 
+541 1 1 1 3 100 0 0 0 79 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccpcccccccccccccccccccccccccccccccutycasvab 
+385 305 1 1 3 99 0 0 0 67 -1 3 ruchvcccccccccccccqccctcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+413 30 3 1 3 100 0 0 0 77 -1 2 rucavcccccccccccccqccccccccccccccccccccccccccccccccccccccccccccccccchccccgcccccccccccccccccutycakvab 
+523 274 2 1 3 100 0 0 0 79 -1 2 rucavcccccccccccccvcccccccccccccccccccccccccccccccccyccccccccccccccccccccccccccccccccccdcccutycasvab 
+362 1 1 1 3 100 97 388 0.25 66 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccqccccccccccccccccccccccccccccutycasvab 
+508 284 1 1 3 100 0 0 0 78 -1 2 rucavccccccccccccccceccccccccccccscccccccccccccccccccccccccccccccpcccccccccccccccccccccccccutycasvab 
+386 107 1 1 4 100 97 386 0.251295 67 -1 3 rucavcccccccccccccccccccccccccpccccccccccclccccccpcccccccccccccccccccccccccccccccccccccccccutycasvab 
+349 5 27 1 3 100 0 0 0 65 -1 2 cccccccccccccccccccccccccccccccccccccpcccutrcasvabrgcavccccccccccccccccccccccccccccecccccccccccccccc 
+198 120 26 1 5 100 0 0 0 38 -1 2 cccccccccccccccccccccccccccccccccccccccccuticasvabrucavcccccccccccccccccccccccccccccccccczcccccccccc 
+11 1 1 1 8 100 97 388 0.25 13 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccmcccccccccccccccccccccccccccccccutycasvab 
+255 221 28 1 3 100 0 0 0 49 -1 2 cccccccccccccccccccccccccccccccccccccccccutypasvabrucavcccccccccccccccccccccccccdccccccccccccccccccc 
+560 424 26 1 1 100 0 0 0 88 -1 2 ccccccccccccccccmccccccccccccccccccccccccutycmsvabrucavccccccccccccccccccccccccccccccccccccccccccccc 
+561 424 26 1 1 100 0 0 0 89 -1 2 ccccccccccccccccmccccccccccccccccccccccccutycmsvabrucavccccccccccccccccccccccccccccccccccccqcccccccc 
+562 508 1 1 1 100 0 0 0 91 -1 3 rucavccccccccccccccceccccccccccccscccccccccccccccccccccccccccccccpcccccccccccccccccccccccccutycaqvab 
+563 375 2 1 1 100 0 0 0 91 -1 3 rucavcccccccccccccqccccccccccccccccccccccgccccccccccccccrccccccccccccccccccccccccccccccccccotycasvab 
+564 363 1 1 1 100 0 0 0 91 -1 3 rucavcccccccccccccccccccnccccccccccccccccccccccccccccccccccccccccccccfccccccccccbccccccccccutycasvab 
+565 476 2 1 1 101 0 0 0 91 -1 4 rucavccfccgcccccccccccccccxccccccccccccccccccccccccccccccccccccclcccccacccrcccocccccdcccccccutycasvab 
+566 1 2 1 1 100 0 0 0 91 -1 1 ruhavccccccccccccccccccccccccccccccccccccccccccccccccccccccccecccccccccccccccccccccccccccccutycasvab 
+567 1 1 1 1 100 0 0 0 91 -1 1 rucavcccccccccccccccccccccccnccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+568 394 100 1 1 200 0 0 0 91 -1 3 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarucavcccccccccmcciccccccccccwccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccutycasvab 
+569 338 1 1 1 100 0 0 0 91 -1 4 rucavccccccccmccccccccjccccccccccccccccccccccccccccccccccccccccccccccfcccccccccccccccccccccutycasvao 
+570 359 2 1 1 100 0 0 0 91 -1 3 rucavcccccccccccccccgccccccccccccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccutlycasvab 
+571 11 2 1 1 100 0 0 0 91 -1 2 rucavcccccccccccccccccccccccccccccccccccccoccccccccccccccccmcccccccccccccccccccccccccccccccutycasvaw 
+572 557 2 1 1 100 0 0 0 91 -1 2 rucavcccaccacccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccchccccccccccccccccutycasvab 
+573 1 2 1 1 100 0 0 0 91 -1 1 rucavccccccccccccccccccceccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccwcccccutycasvab 
+574 476 1 1 1 101 0 0 0 91 -1 4 rucavccfccgcccccccccccccccxccccccccccccccccccccccccccccccccccccclcccjcacccccccccccccdcccccccutycasvab 
+575 300 2 1 1 100 0 0 0 92 -1 3 rucavmctcccccccccccccccccccccdcccpcccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+576 1 2 1 1 100 0 0 0 92 -1 1 rucavccccccccccccccccccccccccccccccccfcccccccccccccccccccccpcccccccccccccccccccccccccccccccutycasvab 
+577 1 1 1 1 100 0 0 0 92 -1 1 rucavccccccccccccccccccccccccccccccccccfcccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+578 113 1 1 1 100 0 0 0 92 -1 2 rucavccfccccccccccccccccccccccccccccccccccccccccccccdcccccccccclcccccccccccccccccccccccccccutycasvab 
+579 1 2 1 1 99 0 0 0 92 -1 1 rucvcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccckcccccccutycasvab 
+580 267 2 1 1 100 0 0 0 92 -1 2 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccscccccxcccccccccccccccccccqccccutycasvab 
+581 359 2 1 1 98 0 0 0 92 -1 3 rucavccccccccccccccccccccccccccccbccccccccccccccccccccccccccccccccccccccccycccccccccccccccuycasvab 
+582 1 3 1 1 101 0 0 0 92 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccjcccccclcccccutycasqab 
+583 523 2 1 1 100 0 0 0 92 -1 3 rucavcccccccccccccvcccckcccccccccccccxccccccccccccccyccccccccccccccccccccccccccccccccccdcccutycasvab 
+584 422 1 1 1 100 0 0 0 92 -1 3 rucavcccccccccccccdcccccccccccccccccccccccccccccccccccccccchcccccccccccccccccccccccccccccccutycasvab 
+585 74 3 1 1 101 0 0 0 92 -1 2 rucavccccccccccccdcccccccccccccccccccccccccccccccccxhccccccccccccccccccccckcccccccccccccccccutycasvab 
+586 1 2 1 1 100 0 0 0 92 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccvccccccccccccccccccccccccccutycajvab 
+587 557 2 1 1 100 0 0 0 92 -1 2 rucavccccccccccccccccccccccccccccccccccccecccccccccccccccccccccccccccccccchccccccccmcccccccutycasvab 
+588 394 101 1 1 200 0 0 0 92 -1 3 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarucavcccccccccmcciccccccccccwccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccrcutycasvab 
+589 273 1 1 1 100 0 0 0 92 -1 3 rucavccccccccccccccccccccmccccccccccccycjccccccccccccccccccccccccccccccccccccccwcccccccccccutycasvab 
+590 554 2 1 1 101 0 0 0 92 -1 2 rucavcccccccccccccccccccccccccccccccccfccccccccccccccccccccccccccccyccccccccccccccccvcccccccutycasvab 
+591 1 1 1 1 100 0 0 0 92 -1 1 rjcavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+592 338 1 1 1 100 0 0 0 93 -1 4 rucavcccccccsmccccccccjccccccccccccccccccccccccccccccccccccccccccccccfcccccccccccccccccccccutycasvab 
+593 324 3 1 1 101 0 0 0 93 -1 2 qruvavccccjcccccccccccccccccccccccccccccccccccccccccccccccccccecccccccccccccccccccccccccccccutycasvab 
+594 1 1 1 1 100 0 0 0 93 -1 1 rucavcccccccccccccccccccccccccccccccccccccpccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+595 1 1 1 1 100 0 0 0 93 -1 1 rucavcccccccccccccccccccccccccccccccccccoccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+596 375 1 1 1 100 0 0 0 93 -1 3 rucavcccccccccccccqcccccycccccccccccccccccccccccccccccccrccccccccccccccccccccccccccccccccccutycasvab 
+597 363 2 1 1 99 0 0 0 93 -1 3 rucavcccccccccccccccccccccccccccccccccccccccccscccccccccccccccccccccfccccccccccbccccccccccutycasvab 
+598 381 1 1 1 100 0 0 0 93 -1 3 rucavcccccccccccccccccccccccccccccccccccjccccccccccccctcnccccccccccccccccchccccccccccccccccutycasvab 
+599 362 1 1 1 100 0 0 0 93 -1 2 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccqccccccccccccccccccacccccccccutycasvab 
+600 386 1 1 1 100 0 0 0 93 -1 4 rucavcccccccccccccccccccccccccpccccccccccclccccccpcccycccccccccccccccccccccccccccccccccccccutycasvab 
+601 443 3 1 1 102 0 0 0 93 -1 2 aarucavccccccccccccccccccccccccccccccccccxccccccccczccccccccccccccccccccccccccccccccccwccccccutycasvab 
+602 541 1 1 1 99 0 0 0 93 -1 2 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccpcccccccccccccccccccccccccccccccutycasvab 
+603 1 1 1 1 100 0 0 0 93 -1 1 rucavccccccccccccccccccccccccchccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 

Added: development/tests/demes_grid_repl/expected/data/dominant.dat
===================================================================
--- development/tests/demes_grid_repl/expected/data/dominant.dat	                        (rev 0)
+++ development/tests/demes_grid_repl/expected/data/dominant.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,30 @@
+# Avida Dominant Data
+# Fri Apr 27 10:46:14 2007
+#  1: Update
+#  2: Average Merit of the Dominant Genotype
+#  3: Average Gestation Time of the Dominant Genotype
+#  4: Average Fitness of the Dominant Genotype
+#  5: Repro Rate?
+#  6: Size of Dominant Genotype
+#  7: Copied Size of Dominant Genotype
+#  8: Executed Size of Dominant Genotype
+#  9: Abundance of Dominant Genotype
+# 10: Number of Births
+# 11: Number of Dominant Breed True?
+# 12: Dominant Gene Depth
+# 13: Dominant Breed In
+# 14: Max Fitness?
+# 15: Genotype ID of Dominant Genotype
+# 16: Name of the Dominant Genotype
+
+0 0.000000 0.000000 0.000000 0.000000 100 0.000000 0.000000 1 0 0 0 0 0.000000 1 100-aaaaa 
+10 0 0 0 0 100 0 0 100 0 0 0 0 0 1 100-aaaaa 
+20 97 389 0.249357 0.00257069 100 100 97 143 0 0 0 0 0.249357 1 100-aaaaa 
+30 97 389 0.249357 0.00257069 100 100 97 194 0 0 0 0 0.251295 1 100-aaaaa 
+40 97 389 0.249357 0.00257069 100 100 97 44 0 0 0 0 0.251295 1 100-aaaaa 
+50 97 389 0.249357 0.00257069 100 100 97 44 0 0 0 0 0.251295 1 100-aaaaa 
+60 97 389 0.249357 0.00257069 100 100 97 63 0 0 0 0 0.251295 1 100-aaaaa 
+70 97 389 0.249357 0.00257069 100 100 97 95 0 0 0 0 0.251969 1 100-aaaaa 
+80 97 389 0.249357 0.00257069 100 100.002 97 22 0 0 0 0 0.252577 1 100-aaaaa 
+90 97 389 0.249357 0.00257069 100 100.002 97 22 0 0 0 0 0.252577 1 100-aaaaa 
+100 97 389 0.249357 0.00257069 100 100.002 97 32 0 0 0 0 0.252577 1 100-aaaaa 

Added: development/tests/demes_grid_repl/expected/data/historic-100.pop
===================================================================
--- development/tests/demes_grid_repl/expected/data/historic-100.pop	                        (rev 0)
+++ development/tests/demes_grid_repl/expected/data/historic-100.pop	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,48 @@
+#filetype genotype_data
+#format id parent_id parent_dist num_cpus total_cpus length merit gest_time fitness update_born update_dead depth sequence
+
+#  1: ID
+#  2: parent ID
+#  3: parent distance
+#  4: number of orgranisms currently alive
+#  5: total number of organisms that ever existed
+#  6: length of genome
+#  7: merit
+#  8: gestation time
+#  9: fitness
+# 10: update born
+# 11: update deactivated
+# 12: depth in phylogentic tree
+# 13: genome of organism
+
+204 2 1 0 6 100 97 388 0.25 39 79 2 rucavcccccccccccccclcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+142 1 2 0 7 100 97 387 0.250646 27 79 1 rucavcccccccccmccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccutycasvab 
+327 1 2 0 1 100 0 0 0 64 79 1 rucavcccccccccccccccccccccccccccccccccccccccccccccycccccccccccccccccccoccccccccccccccccccccutycasvab 
+44 1 1 0 5 100 97 388 0.25 14 79 1 rucavcccccccccccccccccccccccccccccccccccjccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+4 1 1 0 4 101 98 392 0.25 13 79 1 rucavcccccccccccccccccccccccccccccccccccccicccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+340 1 1 0 1 100 0 0 0 65 79 1 rucavcccccccccccccccccccccccccccckcccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+54 1 1 0 8 100 97 388 0.25 15 79 1 rucavccccccccccccccccccccccccccccccccccccccccvcccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+177 1 1 0 7 100 97 389 0.249357 29 79 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccchccccccccccccccccccccccccccccccccutycasvab 
+291 177 2 0 2 100 97 388 0.25 53 79 2 rucavcccccccccccccchcccccccccccccccccccccccccccccccccciccchccccccccccccccccccccccccccccccccutycasvab 
+347 291 1 0 1 100 0 0 0 65 79 3 rucavcccccccccccccchcccccccccccccccccccccccccccccccccciccchccccwcccccccccccccccccccccccccccutycasvab 
+107 37 1 0 8 100 97 387 0.250646 27 79 2 rucavcccccccccccccccccccccccccpccccccccccclccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+176 1 1 0 5 100 97 388 0.25 29 79 1 rucavccccccccccccccccccccccccccccpcccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+92 1 1 0 4 100 97 388 0.25 26 79 1 rucavcccccccccccccqccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+34 1 1 0 6 100 97 389 0.249357 14 79 1 rucavccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+221 1 2 0 3 100 49 337 0.145401 39 79 1 rucavcccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutypasvab 
+52 1 1 0 6 100 97 388 0.25 14 79 1 rucavccccccccmcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+122 1 1 0 6 100 97 388 0.25 27 79 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccfcccccccccccccccccccccutycasvab 
+5 1 2 0 3 100 49 387 0.126615 13 79 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccpcccutrcasvab 
+264 1 2 0 1 100 0 0 0 52 79 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccutyeasvab 
+367 113 3 0 1 101 0 0 0 66 79 2 rucavccfccgcccccccccccccccxccccccccccccccccccccccccccccccccccccclcccccccccccccccccccdcccccccutycasvab 
+28 1 1 0 7 100 97 388 0.25 14 79 1 rucavccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccutycasvab 
+39 1 1 0 4 100 97 389 0.249357 14 79 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdutycasvab 
+274 1 1 0 3 100 97 388 0.25 52 79 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccutycasvab 
+296 52 1 0 1 100 97 387 0.250646 53 79 2 rucavccccccccmcccccccccccccccccccccccccccccccccccccccccccccccccccccccfcccccccccccccccccccccutycasvab 
+305 92 2 0 2 99 96 381 0.251969 54 79 2 rucavcccccccccccccqccctcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+284 1 2 0 2 100 97 388 0.25 52 79 1 rucavccccccccccccccceccccccccccccscccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+263 28 1 0 3 100 97 387 0.250646 52 79 2 rucavccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccdcccccccccccccccccccccccccccutycasvab 
+30 1 1 0 8 100 97 389 0.249357 14 79 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccchccccccccccccccccccccccutycasvab 
+2 1 1 0 9 99 96 385 0.249351 12 39 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+37 1 1 0 1 100 0 0 0 14 39 1 rucavcccccccccccccccccccccccccpccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+120 1 2 0 1 100 0 0 0 27 39 1 rucavcccccccccccccccccccccccccccccccccczcccccccccccccccccccccccccccccccccccccccccccccccccccuticasvab 

Added: development/tests/demes_grid_repl/expected/data/resource.dat
===================================================================
--- development/tests/demes_grid_repl/expected/data/resource.dat	                        (rev 0)
+++ development/tests/demes_grid_repl/expected/data/resource.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,17 @@
+# Avida resource data
+# Fri Apr 27 10:46:14 2007
+# First column gives the current update, all further columns give the quantity
+# of the particular resource at that update.
+#  1: Update
+
+0 
+10 
+20 
+30 
+40 
+50 
+60 
+70 
+80 
+90 
+100 

Added: development/tests/demes_grid_repl/expected/data/stats.dat
===================================================================
--- development/tests/demes_grid_repl/expected/data/stats.dat	                        (rev 0)
+++ development/tests/demes_grid_repl/expected/data/stats.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,26 @@
+# Generic Statistics Data
+# Fri Apr 27 10:46:14 2007
+#  1: update
+#  2: average inferiority (energy)
+#  3: ave probability of any mutations in genome
+#  4: probability of any mutations in dom genome
+#  5: log(average fidelity)
+#  6: log(dominant fidelity)
+#  7: change in number of genotypes
+#  8: genotypic entropy
+#  9: species entropy
+# 10: depth of most reacent coalescence
+# 11: Total number of resamplings this generation
+# 12: Total number of organisms that failed to resample this generation
+
+0 0.000000 0.097500 0.562358 0.102587 0.826353 1 0.000000 0.000000 0 0 0 
+10 0 0.562358 0.562358 0.826353 0.826353 0 0 0 0 0 0 
+20 2.44249e-15 0.562405 0.562358 0.826462 0.826353 0 1.7334 0 0 0 0 
+30 0.0093872 0.562374 0.562358 0.82639 0.826353 0 3.29336 0 0 0 0 
+40 0.0176158 0.562548 0.562358 0.826788 0.826353 -215 2.62128 0 0 0 0 
+50 0.034041 0.562544 0.562358 0.826779 0.826353 1 2.67998 0 0 0 0 
+60 0.0175526 0.562544 0.562358 0.826779 0.826353 0 3.51637 0 0 0 0 
+70 0.0178911 0.562603 0.562358 0.826915 0.826353 0 4.20269 0 0 0 0 
+80 0.027737 0.568647 0.562358 0.840829 0.826353 -291 3.49016 0 0 0 0 
+90 0.039973 0.568525 0.562358 0.840545 0.826353 0 3.53182 0 0 0 0 
+100 0.0271387 0.569506 0.562358 0.842821 0.826353 0 4.07277 0 0 0 0 

Added: development/tests/demes_grid_repl/expected/data/tasks.dat
===================================================================
--- development/tests/demes_grid_repl/expected/data/tasks.dat	                        (rev 0)
+++ development/tests/demes_grid_repl/expected/data/tasks.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,26 @@
+# Avida tasks data
+# Fri Apr 27 10:46:14 2007
+# First column gives the current update, next columns give the number
+# of organisms that have the particular task as a component of their merit
+#  1: Update
+#  2: Not
+#  3: Nand
+#  4: And
+#  5: OrNot
+#  6: Or
+#  7: AndNot
+#  8: Nor
+#  9: Xor
+# 10: Equals
+
+0 0 0 0 0 0 0 0 0 0 
+10 0 0 0 0 0 0 0 0 0 
+20 0 0 0 0 0 0 0 0 0 
+30 0 0 0 0 0 0 0 0 0 
+40 0 0 0 0 0 0 0 0 0 
+50 0 0 0 0 0 0 0 0 0 
+60 0 0 0 0 0 0 0 0 0 
+70 0 0 0 0 0 0 0 0 0 
+80 0 0 0 0 0 0 0 0 0 
+90 0 0 0 0 0 0 0 0 0 
+100 0 0 0 0 0 0 0 0 0 

Added: development/tests/demes_grid_repl/expected/data/tasks_exe.dat
===================================================================
--- development/tests/demes_grid_repl/expected/data/tasks_exe.dat	                        (rev 0)
+++ development/tests/demes_grid_repl/expected/data/tasks_exe.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,26 @@
+# Avida tasks execution data
+# Fri Apr 27 10:46:14 2007
+# First column gives the current update, all further columns give the number
+# of times the particular task has been executed this update.
+#  1: Update
+#  2: Not
+#  3: Nand
+#  4: And
+#  5: OrNot
+#  6: Or
+#  7: AndNot
+#  8: Nor
+#  9: Xor
+# 10: Equals
+
+0 0 0 0 0 0 0 0 0 0 
+10 0 0 0 0 0 0 0 0 0 
+20 0 0 0 0 0 0 0 0 0 
+30 0 0 0 0 0 0 0 0 0 
+40 0 0 0 0 0 0 0 0 0 
+50 0 0 0 0 0 0 0 0 0 
+60 0 0 0 0 0 0 0 0 0 
+70 0 0 0 0 0 0 0 0 0 
+80 0 0 0 0 0 0 0 0 0 
+90 0 0 0 0 0 0 0 0 0 
+100 0 0 0 0 0 0 0 0 0 

Added: development/tests/demes_grid_repl/expected/data/tasks_quality.dat
===================================================================
--- development/tests/demes_grid_repl/expected/data/tasks_quality.dat	                        (rev 0)
+++ development/tests/demes_grid_repl/expected/data/tasks_quality.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,34 @@
+# Avida tasks quality data
+# Fri Apr 27 10:46:14 2007
+# First column gives the current update, rest give average and max task quality
+#  1: Update
+#  2: Not Average
+#  3: Not Max
+#  4: Nand Average
+#  5: Nand Max
+#  6: And Average
+#  7: And Max
+#  8: OrNot Average
+#  9: OrNot Max
+# 10: Or Average
+# 11: Or Max
+# 12: AndNot Average
+# 13: AndNot Max
+# 14: Nor Average
+# 15: Nor Max
+# 16: Xor Average
+# 17: Xor Max
+# 18: Equals Average
+# 19: Equals Max
+
+0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 
+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+50 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+60 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+70 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+90 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

Added: development/tests/demes_grid_repl/expected/data/time.dat
===================================================================
--- development/tests/demes_grid_repl/expected/data/time.dat	                        (rev 0)
+++ development/tests/demes_grid_repl/expected/data/time.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,18 @@
+# Avida time data
+# Fri Apr 27 10:46:14 2007
+#  1: update
+#  2: avida time
+#  3: average generation
+#  4: num_executed?
+
+0 0.000000 0.000000 30 
+10 0.0927835 0 3000 
+20 0.195876 1 6000 
+30 0.299977 1.98734 11850 
+40 0.404502 2.35 3000 
+50 0.509803 2.40196 3030 
+60 0.615477 3.26738 5610 
+70 0.72128 4.20115 10440 
+80 0.826659 4.94 3000 
+90 0.933928 4.98039 3060 
+100 1.04122 5.92697 5310 

Added: development/tests/demes_grid_repl/test_list
===================================================================
--- development/tests/demes_grid_repl/test_list	                        (rev 0)
+++ development/tests/demes_grid_repl/test_list	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,35 @@
+;--- Begin Test Configuration File (test_list) ---
+[main]
+args = -s 100            ; Command line arguments to pass to the application
+app = %(app)s            ; Application path to test
+nonzeroexit = disallow   ; Exit code handling (disallow, allow, or require)
+                         ;  disallow - treat non-zero exit codes as failures
+                         ;  allow - all exit codes are acceptable
+                         ;  require - treat zero exit codes as failures, useful
+                         ;            for creating tests for app error checking
+createdby = Dave Knoester ; Who created the test
+email = dk at cse.msu.edu ; Email address for the test's creator
+
+[consistency]
+enabled = yes            ; Is this test a consistency test?
+long = no                ; Is this test a long test?
+
+[performance]
+enabled = no             ; Is this test a performance test?
+long = no                ; Is this test a long test?
+
+; The following variables can be used in constructing setting values by calling
+; them with %(variable_name)s.  For example see 'app' above.
+;
+; app 
+; builddir 
+; cpus 
+; mode 
+; perf_repeat 
+; perf_user_margin 
+; perf_wall_margin 
+; svn 
+; svnmetadir 
+; svnversion 
+; testdir 
+;--- End Test Configuration File ---

Added: development/tests/demes_torus_repl/config/avida.cfg
===================================================================
--- development/tests/demes_torus_repl/config/avida.cfg	                        (rev 0)
+++ development/tests/demes_torus_repl/config/avida.cfg	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,257 @@
+#############################################################################
+# This file includes all the basic run-time defines for Avida.
+# For more information, see doc/config.html
+#############################################################################
+
+VERSION_ID 2.7.0   # Do not change this value.
+
+### GENERAL_GROUP ###
+# General Settings
+ANALYZE_MODE 0  # 0 = Disabled
+                # 1 = Enabled
+                # 2 = Interactive
+VIEW_MODE 1     # Initial viewer screen
+CLONE_FILE -    # Clone file to load
+VERBOSITY 1     # Control output verbosity
+
+### ARCH_GROUP ###
+# Architecture Variables
+WORLD_X 10        # Width of the Avida world
+WORLD_Y 1000      # Height of the Avida world
+WORLD_GEOMETRY 2  # 1 = Bounded Grid
+                  # 2 = Torus
+                  # 3 = Clique
+RANDOM_SEED 0     # Random number seed (0 for based on time)
+HARDWARE_TYPE 0   # 0 = Original CPUs
+                  # 1 = New SMT CPUs
+                  # 2 = Transitional SMT
+                  # 3 = Experimental CPU
+                  # 4 = Gene Expression CPU
+
+### CONFIG_FILE_GROUP ###
+# Configuration Files
+DATA_DIR data                       # Directory in which config files are found
+INST_SET -                          # File containing instruction set
+EVENT_FILE events.cfg               # File containing list of events during run
+ANALYZE_FILE analyze.cfg            # File used for analysis mode
+ENVIRONMENT_FILE environment.cfg    # File that describes the environment
+START_CREATURE default-classic.org  # Organism to seed the soup
+
+### DEME_GROUP ###
+# Demes and Germlines
+NUM_DEMES 100                # Number of independent groups in the population.
+DEMES_USE_GERMLINE 0         # Whether demes use a distinct germline; 0=off
+DEMES_HAVE_MERIT 0           # Whether demes have merit; 0=no
+GERMLINE_COPY_MUT 0.0075     # Prob. of copy mutations occuring during
+                             # germline replication.
+GERMLINE_REPLACES_SOURCE 0   # Whether the source germline is updated
+                             # on replication; 0=no.
+GERMLINE_RANDOM_PLACEMENT 0  # Whether the seed for a germline is placed
+                             #  randomly within the deme; 0=no.
+MAX_DEME_AGE 40              # The maximum age of a deme (in updates) to be
+                             # used for age-based replication (default=500).
+
+### REPRODUCTION_GROUP ###
+# Birth and Death
+BIRTH_METHOD 0           # Which organism should be replaced on birth?
+                         # 0 = Random organism in neighborhood
+                         # 1 = Oldest in neighborhood
+                         # 2 = Largest Age/Merit in neighborhood
+                         # 3 = None (use only empty cells in neighborhood)
+                         # 4 = Random from population (Mass Action)
+                         # 5 = Oldest in entire population
+                         # 6 = Random within deme
+                         # 7 = Organism faced by parent
+                         # 8 = Next grid cell (id+1)
+                         # 9 = Largest energy used in entire population
+                         # 10 = Largest energy used in neighborhood
+PREFER_EMPTY 1           # Give empty cells preference in offsping placement?
+ALLOW_PARENT 1           # Allow births to replace the parent organism?
+DEATH_METHOD 2           # 0 = Never die of old age.
+                         # 1 = Die when inst executed = AGE_LIMIT (+deviation)
+                         # 2 = Die when inst executed = length*AGE_LIMIT (+dev)
+AGE_LIMIT 20             # Modifies DEATH_METHOD
+AGE_DEVIATION 0          # Creates a distribution around AGE_LIMIT
+ALLOC_METHOD 0           # (Orignal CPU Only)
+                         # 0 = Allocated space is set to default instruction.
+                         # 1 = Set to section of dead genome (Necrophilia)
+                         # 2 = Allocated space is set to random instruction.
+DIVIDE_METHOD 1          # 0 = Divide leaves state of mother untouched.
+                         # 1 = Divide resets state of mother
+                         #     (after the divide, we have 2 children)
+                         # 2 = Divide resets state of current thread only
+                         #     (does not touch possible parasite threads)
+GENERATION_INC_METHOD 1  # 0 = Only the generation of the child is
+                         #     increased on divide.
+                         # 1 = Both the generation of the mother and child are
+                         #     increased on divide (good with DIVIDE_METHOD 1).
+
+### RECOMBINATION_GROUP ###
+# Sexual Recombination and Modularity
+RECOMBINATION_PROB 1.0  # probability of recombination in div-sex
+MAX_BIRTH_WAIT_TIME -1  # Updates incipiant orgs can wait for crossover
+MODULE_NUM 0            # number of modules in the genome
+CONT_REC_REGS 1         # are (modular) recombination regions continuous
+CORESPOND_REC_REGS 1    # are (modular) recombination regions swapped randomly
+                        #  or with corresponding positions?
+TWO_FOLD_COST_SEX 0     # 1 = only one recombined offspring is born.
+                        # 2 = both offspring are born
+SAME_LENGTH_SEX 0       # 0 = recombine with any genome
+                        # 1 = only recombine w/ same length
+
+### DIVIDE_GROUP ###
+# Divide Restrictions
+CHILD_SIZE_RANGE 2.0  # Maximal differential between child and parent sizes.
+MIN_COPIED_LINES 0.5  # Code fraction which must be copied before divide.
+MIN_EXE_LINES 0.5     # Code fraction which must be executed before divide.
+REQUIRE_ALLOCATE 1    # (Original CPU Only) Require allocate before divide?
+REQUIRED_TASK -1      # Task ID required for successful divide.
+IMMUNITY_TASK -1      # Task providing immunity from the required task.
+REQUIRED_REACTION -1  # Reaction ID required for successful divide.
+REQUIRED_BONUS 0      # The bonus that an organism must accumulate to divide.
+
+### MUTATION_GROUP ###
+# Mutations
+POINT_MUT_PROB 0.0    # Mutation rate (per-location per update)
+COPY_MUT_PROB 0.0075  # Mutation rate (per copy)
+INS_MUT_PROB 0.0      # Insertion rate (per site, applied on divide)
+DEL_MUT_PROB 0.0      # Deletion rate (per site, applied on divide)
+DIV_MUT_PROB 0.0      # Mutation rate (per site, applied on divide)
+DIVIDE_MUT_PROB 0.0   # Mutation rate (per divide)
+DIVIDE_INS_PROB 0.05  # Insertion rate (per divide)
+DIVIDE_DEL_PROB 0.05  # Deletion rate (per divide)
+PARENT_MUT_PROB 0.0   # Per-site, in parent, on divide
+SPECIAL_MUT_LINE -1   # If this is >= 0, ONLY this line is mutated
+INJECT_INS_PROB 0.0   # Insertion rate (per site, applied on inject)
+INJECT_DEL_PROB 0.0   # Deletion rate (per site, applied on inject)
+INJECT_MUT_PROB 0.0   # Mutation rate (per site, applied on inject)
+META_COPY_MUT 0.0     # Prob. of copy mutation rate changing (per gen)
+META_STD_DEV 0.0      # Standard deviation of meta mutation size.
+MUT_RATE_SOURCE 1     # 1 = Mutation rates determined by environment.
+                      # 2 = Mutation rates inherited from parent.
+
+### REVERSION_GROUP ###
+# Mutation Reversion
+# These slow down avida a lot, and should be set to 0.0 normally.
+REVERT_FATAL 0.0           # Should any mutations be reverted on birth?
+REVERT_DETRIMENTAL 0.0     #   0.0 to 1.0; Probability of reversion.
+REVERT_NEUTRAL 0.0         # 
+REVERT_BENEFICIAL 0.0      # 
+STERILIZE_FATAL 0.0        # Should any mutations clear (kill) the organism?
+STERILIZE_DETRIMENTAL 0.0  # 
+STERILIZE_NEUTRAL 0.0      # 
+STERILIZE_BENEFICIAL 0.0   # 
+FAIL_IMPLICIT 0            # Should copies that failed *not* due to mutations
+                           # be eliminated?
+NEUTRAL_MAX 0.0            # The percent benifical change from parent fitness to be considered neutral.
+NEUTRAL_MIN 0.0            # The percent deleterious change from parent fitness to be considered neutral.
+
+### TIME_GROUP ###
+# Time Slicing
+AVE_TIME_SLICE 30        # Ave number of insts per org per update
+SLICING_METHOD 1         # 0 = CONSTANT: all organisms get default...
+                         # 1 = PROBABILISTIC: Run _prob_ proportional to merit.
+                         # 2 = INTEGRATED: Perfectly integrated deterministic.
+BASE_MERIT_METHOD 4      # 0 = Constant (merit independent of size)
+                         # 1 = Merit proportional to copied size
+                         # 2 = Merit prop. to executed size
+                         # 3 = Merit prop. to full size
+                         # 4 = Merit prop. to min of executed or copied size
+                         # 5 = Merit prop. to sqrt of the minimum size
+                         # 6 = Merit prop. to num times MERIT_BONUS_INST is in genome.
+BASE_CONST_MERIT 100     # Base merit when BASE_MERIT_METHOD set to 0
+DEFAULT_BONUS 1.0        # Initial bonus before any tasks
+MERIT_DEFAULT_BONUS 0    # Scale the merit of an offspring by the default bonus
+                         # rather than the accumulated bonus of the parent?
+MERIT_BONUS_INST 0       # in BASE_MERIT_METHOD 6, this sets which instruction counts (-1=none, 0= 1st in INST_SET.)
+MERIT_BONUS_EFFECT 0     # in BASE_MERIT_METHOD 6, this sets how much merit is earned per INST (-1=penalty, 0= no effect.)
+FITNESS_VALLEY 0         # in BASE_MERIT_METHOD 6, this creates valleys from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP (0= off, 1=on)
+FITNESS_VALLEY_START 0   # if FITNESS_VALLEY =1, orgs with num_key_instructions from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP get fitness 1 (lowest)
+FITNESS_VALLEY_STOP 0    # if FITNESS_VALLEY =1, orgs with num_key_instructions from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP get fitness 1 (lowest)
+MAX_CPU_THREADS 1        # Number of Threads a CPU can spawn
+THREAD_SLICING_METHOD 0  # Formula for and organism's thread slicing
+                         #   (num_threads-1) * THREAD_SLICING_METHOD + 1
+                         # 0 = One thread executed per time slice.
+                         # 1 = All threads executed each time slice.
+MAX_LABEL_EXE_SIZE 1     # Max nops marked as executed when labels are used
+DONATE_SIZE 5.0          # Amount of merit donated with 'donate' command
+DONATE_MULT 10.0         # Multiple of merit given that the target receives.
+MAX_DONATE_KIN_DIST -1   # Limit on distance of relation for donate; -1=no max
+MAX_DONATE_EDIT_DIST -1  # Limit on edit distance for donate; -1=no max
+MAX_DONATES 1000000      # Limit on number of donates organisms are allowed.
+
+### PROMOTER_GROUP ###
+# Promoters
+PROMOTERS_ENABLED 0             # Use the promoter/terminator execution scheme.
+                                # Certain instructions must also be included.
+PROMOTER_PROCESSIVITY 1.0       # Chance of not terminating after each cpu cycle.
+PROMOTER_PROCESSIVITY_INST 1.0  # Chance of not terminating after each instruction.
+PROMOTER_BG_STRENGTH 0          # Probability of positions that are not promoter
+                                # instructions initiating execution (promoters are 1).
+REGULATION_STRENGTH 1           # Strength added or subtracted to a promoter by regulation.
+REGULATION_DECAY_FRAC 0.1       # Fraction of regulation that decays away. 
+                                # Max regulation = 2^(REGULATION_STRENGTH/REGULATION_DECAY_FRAC)
+
+### GENEOLOGY_GROUP ###
+# Geneology
+TRACK_MAIN_LINEAGE 1  # Keep all ancestors of the active population?
+                      # 0=no, 1=yes, 2=yes,w/sexual population
+THRESHOLD 3           # Number of organisms in a genotype needed for it
+                      #   to be considered viable.
+GENOTYPE_PRINT 0      # 0/1 (off/on) Print out all threshold genotypes?
+GENOTYPE_PRINT_DOM 0  # Print out a genotype if it stays dominant for
+                      #   this many updates. (0 = off)
+SPECIES_THRESHOLD 2   # max failure count for organisms to be same species
+SPECIES_RECORDING 0   # 1 = full, 2 = limited search (parent only)
+SPECIES_PRINT 0       # 0/1 (off/on) Print out all species?
+TEST_CPU_TIME_MOD 20  # Time allocated in test CPUs (multiple of length)
+
+### LOG_GROUP ###
+# Log Files
+LOG_CREATURES 0  # 0/1 (off/on) toggle to print file.
+LOG_GENOTYPES 0  # 0 = off, 1 = print ALL, 2 = print threshold ONLY.
+LOG_THRESHOLD 0  # 0/1 (off/on) toggle to print file.
+LOG_SPECIES 0    # 0/1 (off/on) toggle to print file.
+
+### LINEAGE_GROUP ###
+# Lineage
+# NOTE: This should probably be called "Clade"
+# This one can slow down avida a lot. It is used to get an idea of how
+# often an advantageous mutation arises, and where it goes afterwards.
+# Lineage creation options are.  Works only when LOG_LINEAGES is set to 1.
+#   0 = manual creation (on inject, use successive integers as lineage labels).
+#   1 = when a child's (potential) fitness is higher than that of its parent.
+#   2 = when a child's (potential) fitness is higher than max in population.
+#   3 = when a child's (potential) fitness is higher than max in dom. lineage
+# *and* the child is in the dominant lineage, or (2)
+#   4 = when a child's (potential) fitness is higher than max in dom. lineage
+# (and that of its own lineage)
+#   5 = same as child's (potential) fitness is higher than that of the
+#       currently dominant organism, and also than that of any organism
+#       currently in the same lineage.
+#   6 = when a child's (potential) fitness is higher than any organism
+#       currently in the same lineage.
+#   7 = when a child's (potential) fitness is higher than that of any
+#       organism in its line of descent
+LOG_LINEAGES 0             # 
+LINEAGE_CREATION_METHOD 0  # 
+
+### ORGANISM_NETWORK_GROUP ###
+# Organism Network Communication
+NET_ENABLED 0      # Enable Network Communication Support
+NET_DROP_PROB 0.0  # Message drop rate
+NET_MUT_PROB 0.0   # Message corruption probability
+NET_MUT_TYPE 0     # Type of message corruption.  0 = Random Single Bit, 1 = Always Flip Last
+NET_STYLE 0        # Communication Style.  0 = Random Next, 1 = Receiver Facing
+
+### BUY_SELL_GROUP ###
+# Buying and Selling Parameters
+SAVE_RECEIVED 0  # Enable storage of all inputs bought from other orgs
+BUY_PRICE 0      # price offered by organisms attempting to buy
+SELL_PRICE 0     # price offered by organisms attempting to sell
+
+### ANALYZE_GROUP ###
+# Analysis Settings
+MT_CONCURRENCY 1   # Number of concurrent analyze threads
+ANALYZE_OPTION_1   # String variable accessible from analysis scripts
+ANALYZE_OPTION_2   # String variable accessible from analysis scripts

Added: development/tests/demes_torus_repl/config/default-classic.org
===================================================================
--- development/tests/demes_torus_repl/config/default-classic.org	                        (rev 0)
+++ development/tests/demes_torus_repl/config/default-classic.org	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,100 @@
+h-alloc    # Allocate space for child
+h-search   # Locate the end of the organism
+nop-C      #
+nop-A      #
+mov-head   # Place write-head at beginning of offspring.
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+h-search   # Mark the beginning of the copy loop
+h-copy     # Do the copy
+if-label   # If we're done copying....
+nop-C      #
+nop-A      #
+h-divide   #    ...divide!
+mov-head   # Otherwise, loop back to the beginning of the copy loop.
+nop-A      # End label.
+nop-B      #

Added: development/tests/demes_torus_repl/config/environment.cfg
===================================================================
--- development/tests/demes_torus_repl/config/environment.cfg	                        (rev 0)
+++ development/tests/demes_torus_repl/config/environment.cfg	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,9 @@
+REACTION  NOT  not   process:value=1.0:type=pow  requisite:max_count=1
+REACTION  NAND nand  process:value=1.0:type=pow  requisite:max_count=1
+REACTION  AND  and   process:value=2.0:type=pow  requisite:max_count=1
+REACTION  ORN  orn   process:value=2.0:type=pow  requisite:max_count=1
+REACTION  OR   or    process:value=3.0:type=pow  requisite:max_count=1
+REACTION  ANDN andn  process:value=3.0:type=pow  requisite:max_count=1
+REACTION  NOR  nor   process:value=4.0:type=pow  requisite:max_count=1
+REACTION  XOR  xor   process:value=4.0:type=pow  requisite:max_count=1
+REACTION  EQU  equ   process:value=5.0:type=pow  requisite:max_count=1

Added: development/tests/demes_torus_repl/config/events.cfg
===================================================================
--- development/tests/demes_torus_repl/config/events.cfg	                        (rev 0)
+++ development/tests/demes_torus_repl/config/events.cfg	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,19 @@
+# Print all of the standard data files...
+u 0 InjectDemes
+u 0:10:end PrintAverageData       # Save info about they average genotypes
+u 0:10:end PrintDominantData      # Save info about most abundant genotypes
+u 0:10:end PrintStatsData         # Collect satistics about entire pop.
+u 0:10:end PrintCountData         # Count organisms, genotypes, species, etc.
+u 0:10:end PrintTasksData         # Save organisms counts for each task.
+u 0:10:end PrintTimeData          # Track time conversion (generations, etc.)
+u 0:10:end PrintResourceData      # Track resource abundance.
+u 0:10:end PrintDominantGenotype      # Save the most abundant genotypes
+u 0:10:end PrintTasksExeData    # Num. times tasks have been executed.
+u 0:10:end PrintTasksQualData   # Task quality information
+
+u 1:1:end ReplicateDemes deme-age
+
+# Setup the exit time and full population data collection.
+u 100 SavePopulation         # Save current state of population.
+u 100 SaveHistoricPopulation # Save ancestors of current population.
+u 100 exit                        # exit

Added: development/tests/demes_torus_repl/config/instset-classic.cfg
===================================================================
--- development/tests/demes_torus_repl/config/instset-classic.cfg	                        (rev 0)
+++ development/tests/demes_torus_repl/config/instset-classic.cfg	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,28 @@
+nop-A      1   # a
+nop-B      1   # b
+nop-C      1   # c
+if-n-equ   1   # d
+if-less    1   # e
+pop        1   # f
+push       1   # g
+swap-stk   1   # h
+swap       1   # i 
+shift-r    1   # j
+shift-l    1   # k
+inc        1   # l
+dec        1   # m
+add        1   # n
+sub        1   # o
+nand       1   # p
+IO         1   # q   Puts current contents of register and gets new.
+h-alloc    1   # r   Allocate as much memory as organism can use.
+h-divide   1   # s   Cuts off everything between the read and write heads
+h-copy     1   # t   Combine h-read and h-write
+h-search   1   # u   Search for matching template, set flow head & return info
+               #   #   if no template, move flow-head here, set size&offset=0.
+mov-head   1   # v   Move ?IP? head to flow control.
+jmp-head   1   # w   Move ?IP? head by fixed amount in CX.  Set old pos in CX.
+get-head   1   # x   Get position of specified head in CX.
+if-label   1   # y
+set-flow   1   # z   Move flow-head to address in ?CX? 
+

Added: development/tests/demes_torus_repl/expected/data/archive/100-aaaaa.org
===================================================================
--- development/tests/demes_torus_repl/expected/data/archive/100-aaaaa.org	                        (rev 0)
+++ development/tests/demes_torus_repl/expected/data/archive/100-aaaaa.org	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,134 @@
+# Fri Apr 27 10:46:33 2007
+# Filename........: archive/100-aaaaa.org
+# Update Output...: 100
+# Is Viable.......: 1
+# Repro Cycle Size: 0
+# Depth to Viable.: 0
+# Update Created..: -1
+# Genotype ID.....: 1
+# Parent Gen ID...: -1
+# Tree Depth......: 0
+# Parent Distance.: -1
+# 
+# Generation: 0
+# Merit...........: 97.000000
+# Gestation Time..: 389
+# Fitness.........: 0.249357
+# Errors..........: 0
+# Genome Size.....: 100
+# Copied Size.....: 100
+# Executed Size...: 97
+# Offspring.......: SELF
+# 
+# Tasks Performed:
+# not 0 (0.000000)
+# nand 0 (0.000000)
+# and 0 (0.000000)
+# orn 0 (0.000000)
+# or 0 (0.000000)
+# andn 0 (0.000000)
+# nor 0 (0.000000)
+# xor 0 (0.000000)
+# equ 0 (0.000000)
+
+
+h-alloc
+h-search
+nop-C
+nop-A
+mov-head
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+h-search
+h-copy
+if-label
+nop-C
+nop-A
+h-divide
+mov-head
+nop-A
+nop-B

Added: development/tests/demes_torus_repl/expected/data/average.dat
===================================================================
--- development/tests/demes_torus_repl/expected/data/average.dat	                        (rev 0)
+++ development/tests/demes_torus_repl/expected/data/average.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,30 @@
+# Avida Average Data
+# Fri Apr 27 10:46:31 2007
+#  1: Update
+#  2: Merit
+#  3: Gestation Time
+#  4: Fitness
+#  5: Repro Rate?
+#  6: Size
+#  7: Copied Size
+#  8: Executed Size
+#  9: Abundance
+# 10: Proportion of organisms that gave birth in this update
+# 11: Proportion of Breed True Organisms
+# 12: Genotype Depth
+# 13: Generation
+# 14: Neutral Metric
+# 15: Lineage Label
+# 16: True Replication Rate (based on births/update, time-averaged)
+
+0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 101.000000 101.000000 0.000000 0.000000 0.000000 0.000000 0.000000 
+10 97 389 0 0 100 100 97 0 0 0 0 0 0 0 0 
+20 97 389 0.249357 0 99.98 100 97 3.77358 0 0 0.275 1 -0.105943 0 0 
+30 95.198 386.345 0.245841 0 99.9848 99.2335 95.198 2.31765 0.00253807 0 0.563452 1.98477 -0.0392749 0 0 
+40 94.77 386.25 0.244708 0 100.02 100 94.77 2.43902 0 0 0.79 2.36 0.226467 -1 0 
+50 92.9706 382.461 0.241759 0 100.049 99.0392 92.9706 2.37209 0 0 0.813725 2.41176 0.219865 -1 0 
+60 94.5376 384.731 0.244961 0 100.532 99.4677 94.5376 2 0 0 1.04301 3.31183 0.165284 -1 0 
+70 94.0974 384.542 0.243897 0 100.865 98.7049 94.0974 1.94972 0 0 1.26074 4.28367 0.126918 -1 0 
+80 93.18 383.28 0.242062 0 102 97.5 93.18 1.88679 0 0 1.4 4.74 -0.502487 -1 0 
+90 93.2178 383.277 0.242173 0 101.98 97.5248 93.2178 1.90566 0.00990099 0.00990099 1.42574 4.76238 -0.571038 -1 0 
+100 94.1353 383.794 0.244428 0 102.353 97.9471 94.1353 1.78947 0 0 1.6 5.83529 -0.535698 -1 0 

Added: development/tests/demes_torus_repl/expected/data/count.dat
===================================================================
--- development/tests/demes_torus_repl/expected/data/count.dat	                        (rev 0)
+++ development/tests/demes_torus_repl/expected/data/count.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,30 @@
+# Avida count data
+# Fri Apr 27 10:46:31 2007
+#  1: update
+#  2: number of insts executed this update
+#  3: number of organisms
+#  4: number of different genotypes
+#  5: number of different threshold genotypes
+#  6: number of different species
+#  7: number of different threshold species
+#  8: number of different lineages
+#  9: number of births in this update
+# 10: number of deaths in this update
+# 11: number of breed true
+# 12: number of breed true organisms?
+# 13: number of no-birth organisms
+# 14: number of single-threaded organisms
+# 15: number of multi-threaded organisms
+# 16: number of modified organisms
+
+0 30 1 1 1 0 0 0 101 1 101 1 1 1 0 0 
+10 3000 100 1 1 0 0 0 0 0 0 100 100 100 0 0 
+20 6000 200 53 2 0 0 0 0 0 0 145 100 200 0 0 
+30 11790 394 170 2 0 0 0 1 0 0 221 200 394 0 0 
+40 3000 100 41 11 0 0 0 0 0 0 14 100 100 0 0 
+50 3060 102 43 11 0 0 0 0 0 0 14 100 102 0 0 
+60 5580 186 93 16 0 0 0 0 0 0 46 100 186 0 0 
+70 10470 349 179 23 0 0 0 0 0 0 119 184 349 0 0 
+80 3000 100 53 35 0 0 0 0 0 0 8 100 100 0 0 
+90 3000 101 53 36 0 0 0 1 0 1 9 100 101 0 0 
+100 5100 170 95 41 0 0 0 0 0 0 34 100 170 0 0 

Added: development/tests/demes_torus_repl/expected/data/detail-100.pop
===================================================================
--- development/tests/demes_torus_repl/expected/data/detail-100.pop	                        (rev 0)
+++ development/tests/demes_torus_repl/expected/data/detail-100.pop	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,112 @@
+#filetype genotype_data
+#format id parent_id parent_dist num_cpus total_cpus length merit gest_time fitness update_born update_dead depth sequence
+
+#  1: ID
+#  2: parent ID
+#  3: parent distance
+#  4: number of orgranisms currently alive
+#  5: total number of organisms that ever existed
+#  6: length of genome
+#  7: merit
+#  8: gestation time
+#  9: fitness
+# 10: update born
+# 11: update deactivated
+# 12: depth in phylogentic tree
+# 13: genome of organism
+
+1 -1 -1 18 375 100 97 389 0.249357 -1 -1 0 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+48 1 2 4 7 99 0 0 0 14 -1 1 rucavgccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+298 162 28 4 6 100 0 0 0 61 -1 2 cccccccccccccccccccccccccccccccccccccccccutyhasvabrucavccccccccccccccxcccccccccccccccccccccccccccccc 
+151 1 1 4 10 100 97 388 0.25 28 -1 1 rucavcccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+241 1 1 4 14 100 97 389 0.249357 39 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccrccccccccccccccccccccccccccccccccccccccutycasvab 
+259 166 1 4 6 99 96 385 0.249351 52 -1 3 rucavccccccccccccccccccccccccccccccccccccccccbccccccccccccccccccccchccccccccccccccccccccccutycasvab 
+161 1 1 4 8 100 97 388 0.25 28 -1 1 rucavccccccccccccccccccccccccccmcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+413 344 3 3 4 100 97 385 0.251948 77 -1 4 rucavccccccccccccccccccccccacccccgccccccccccccccccjcccceccfmcccccccccccccccccccccccccccccccutycasvab 
+513 1 1 3 4 100 97 388 0.25 79 -1 1 rucavcccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+389 30 1 3 4 100 97 387 0.250646 76 -1 2 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccvcccccccccccccpcccccccccccccrcutycasvab 
+45 1 1 3 11 100 97 388 0.25 14 -1 1 rucavcccccccccccccccccccccccccccccccccccjccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+279 1 1 3 4 100 97 388 0.25 52 -1 1 rucavccccccccccccccccccccccccccccccecccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+269 126 1 3 6 99 96 385 0.249351 52 -1 2 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccutycasvab 
+475 1 1 3 4 100 97 388 0.25 78 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccpccccccccccccccccccutycasvab 
+350 13 1 3 4 100 97 386 0.251295 65 -1 2 rucavcccccccccqcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccclccccccccqccutycasvab 
+8 1 1 2 5 100 0 0 0 13 -1 1 rucfvccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+21 1 1 2 5 100 0 0 0 13 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccumycasvab 
+312 13 1 2 3 100 97 386 0.251295 64 -1 2 rucavcccccccccqccccccccccccccccccccccccccccccccccccccccccccccccccccccccccfccccclcccccccccccutycasvab 
+313 1 1 2 3 100 0 0 0 64 -1 1 rucavscccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+486 296 103 2 3 202 0 0 0 78 -1 3 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarucavcccccccccccclccccccccccccccccccccccccccvccxcccccccccccccccccccccwccccccccccccccccccccccutycnsvab 
+22 1 1 2 8 100 97 389 0.249357 13 -1 1 rucavccccccccccccccccccccccccccccccccccccccccscccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+230 1 3 2 5 100 50 291 0.171821 39 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccwccccccccccccscccccccccccccccccccutycosvab 
+539 1 2 2 3 99 96 384 0.25 79 -1 1 rucavcccccccccccccccccccccocccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+340 1 1 2 4 100 97 388 0.25 65 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccjccccccccccccccccccccccccccccccccutycasvab 
+78 6 5 2 7 102 0 0 0 26 -1 2 aarucavcccccgccccccccccccccccccwcccccccccccccccccccccccccccccccccccccccccccccccccccccccccczccutycaivab 
+443 285 1 2 3 100 0 0 0 78 -1 3 rncavccccccccccccccccccccccccccccccccccccccccccccccccccccycccccccccccccccccccdcccccccccccccutycasvab 
+24 1 1 2 9 100 97 388 0.25 13 -1 1 rucavcccccmccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+421 1 1 2 3 100 0 0 0 77 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycapvab 
+74 1 1 2 6 100 0 0 0 26 -1 1 rucevccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+207 20 4 2 5 102 99 394 0.251269 39 -1 2 aarucavcccccccccccccccccccccccgcccccccccccccacccccccccccccccccccccccccccccccccccccncwccccccccutycasvab 
+268 1 1 2 5 100 97 388 0.25 52 -1 1 rucavccccccccccccccccccccccccccccccccccgcccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+109 1 1 2 8 100 97 388 0.25 27 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccqcccccccccccccccccccccccccutycasvab 
+150 1 1 2 10 100 97 388 0.25 28 -1 1 rucavccccccccccccccccccccccccccckccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+557 207 98 2 2 200 0 0 0 92 -1 3 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarucavcccccccccccccccccccccccgcccccccccccccacccccccccccccccccccccccccccccccccccccncwccccccccutycasvab 
+120 1 2 2 8 100 97 387 0.250646 27 -1 1 rucavccccccccccccccccccccccccccccpcccccccdcccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+570 1 1 2 2 100 0 0 0 92 -1 1 rucajccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+374 1 1 2 5 100 97 388 0.25 66 -1 1 rucavccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+478 2 1 2 4 99 0 0 0 78 -1 2 rucavcccccccccccccccccccccccccccccccccccccccfcccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+338 264 1 2 5 100 88 377 0.233422 65 -1 5 rucavccccccccccccccccccccccaccccccccccccccccccccccccccicccucccccccccccccccccckccccccccccgrcutycasvab 
+277 1 3 1 4 99 96 384 0.25 52 -1 1 rucavcccccccccchccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcutycasvab 
+451 329 1 1 3 101 0 0 0 78 -1 2 rucavcccccccccmcccccccccccccccccccccccccccccccccccccccccccccccccccccccpcccccccccccccccccccccutycasvab 
+297 1 1 1 4 100 97 388 0.25 54 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccciccccutycasvab 
+496 1 2 1 3 100 0 0 0 78 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccqcccccccccsccccccccccutycasvab 
+455 343 1 1 3 101 0 0 0 78 -1 4 rucavcccclccccccccccccccvcccccccccccccccccccccccccccccccccqccccccccccccpccccccdcccccccccccvcutycasvab 
+65 1 2 1 10 100 97 388 0.25 26 -1 1 rucavccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccsccccccccutycasvab 
+263 166 3 1 3 98 0 0 0 52 -1 3 rucvcccccccccccccccccccczcccccccccccccccccccycccccccccccccccccaccchccccccccccccccccccccccutycasvab 
+349 46 28 1 4 100 0 0 0 65 -1 2 cccccccccccccccccccccccccccccccccccccccccutynasvabrucavcccccccyccccccccccccccccccccccccccccccccccccc 
+295 36 2 1 3 100 97 384 0.252604 54 -1 2 rucavcccccccccccccccccccccticccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccutycasvab 
+272 39 1 1 3 100 0 0 0 52 -1 2 rucavcccccccccccccckccccscccccccccccbccccccccccccccccccccccccccpcccccccccccccccccccccccccccvtycasvab 
+249 151 1 1 4 100 97 387 0.250646 51 -1 2 rucavccvccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+188 1 1 1 9 100 97 388 0.25 38 -1 1 rucavcccccccccccccccccccccccccoccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+437 290 1 1 3 99 0 0 0 77 -1 3 rucavccccccccccceccccccccccccccccccccccccccccccbcccccccccccccccccqcccccccccccccccccccccccccutyasvab 
+273 1 3 1 5 101 98 388 0.252577 52 -1 1 rucavccccccccccctccccccccccccccccccccccccccccccccccgcccdccccccccccccccccccccccccccccccccccccutycasvab 
+378 183 3 1 3 100 0 0 0 67 -1 2 rucavccccccccccccccccccccccccccfccccccccccccccccccccmcccccccccccccccccccccccccccccccccccclcutycasdab 
+149 52 3 1 5 100 0 0 0 28 -1 2 rucavcccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccfcccccccccccccdcccccccutycasvpb 
+544 1 1 1 1 100 0 0 0 91 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycaqvab 
+545 451 1 1 1 101 0 0 0 91 -1 3 rucavcccccccccmcccccccccccccccccccccccccccccccccccccccccccxcccccccccccpcccccccccccccccccccccutycasvab 
+546 273 1 1 1 101 0 0 0 91 -1 2 rucavccccccccccctccccccccccccccccccccccccccccccccccdcccdccccccccccccccccccccccccccccccccccccutycasvab 
+547 268 1 1 1 100 0 0 0 91 -1 2 rucavcccccccccccnccccccccccccccccccccccgcccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+548 413 2 1 1 100 0 0 0 91 -1 5 rucavccccccccccccccccccccccacccccgccccccccccccccccscccceccfmccccccccccccccccccccyccccccccccutycasvab 
+549 475 1 1 1 100 0 0 0 91 -1 2 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccqccccccccpccccccccccccccccccutycasvab 
+550 279 2 1 1 100 0 0 0 91 -1 2 rucavccccccccccccccccccccccccccccccegccfcccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+551 297 1 1 1 100 0 0 0 91 -1 2 sucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccciccccutycasvab 
+552 1 1 1 1 100 0 0 0 91 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccpcccccccccccccccccccccccccccccccccutycasvab 
+553 496 1 1 1 100 0 0 0 92 -1 2 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccqcccccccccscuccccccccutycasvab 
+554 269 1 1 1 99 0 0 0 92 -1 3 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccvccccccccccbcccccccccutycasvab 
+555 340 1 1 1 100 0 0 0 92 -1 2 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccjcjccccccccccccccccccccccccccccccutycasvab 
+556 268 1 1 1 100 0 0 0 92 -1 2 rucavccccccccccccccccccccccccccccccccccgcccccccccccccccccccccccccccccccccccccccccccccccccccuyycasvab 
+558 1 1 1 1 100 0 0 0 92 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvzb 
+559 22 6 1 1 101 0 0 0 92 -1 2 ruhvvcccccgccccccccccccccccccccccccccccccccccsccccccccccccccccccccccccccccccccccccccccfcccccutycarvaj 
+560 1 1 1 1 99 0 0 0 92 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+561 241 2 1 1 100 0 0 0 92 -1 2 ruaavcccccccccccccccccccccccccccccccccccccccccccccccrccccccccccccccccccccccccccccccccccccccutyqasvab 
+562 45 1 1 1 100 0 0 0 92 -1 2 rucavccccccccccccccccccccccccoccccccccccjccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+563 539 1 1 1 99 0 0 0 92 -1 2 rucavccccccccyccccccccccccocccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+564 312 2 1 1 101 0 0 0 92 -1 3 rucavcccccccccqcccccccccccccccccpccccccccccccccccccccccccccccrccccccccccccfccccclcccccccccccutycasvab 
+565 539 1 1 1 99 0 0 0 92 -1 2 rucavcccccccccccccccccccccoccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccwutycasvab 
+566 65 2 1 1 100 0 0 0 92 -1 2 rucavccccdcccccccccccccccccccccccccchccccccccccccccccccccccccccccxccccccccccccccccsccccccccutycasvab 
+567 277 1 1 1 99 0 0 0 92 -1 2 rucavcccccccccchccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccclccccccccdcutycasvab 
+568 312 2 1 1 100 0 0 0 92 -1 3 rucavcccccccccqcccccdccccccccccccccccccccccccccccccccccccccccccccccccccccfccccclvccccccccccutycasvab 
+569 1 1 1 1 100 0 0 0 92 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccecccccccccccccccccccccccccccccccccccccccccutycasvab 
+571 1 2 1 1 101 0 0 0 92 -1 1 rucavccccccccccccccccccccccccfccccucccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+572 513 1 1 1 100 0 0 0 93 -1 2 rucavcccccccccccccccncccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+573 188 1 1 1 100 0 0 0 93 -1 2 rucavcccccccccccccccccccccccccocccccccccccccccccccccccccccccccccccccccccccccnccccccccccccccutycasvab 
+574 350 1 1 1 100 0 0 0 93 -1 3 rucavcccccccccqcccccccccccccccccccccccccccccccscccccccccccccccccccccccccccccccclccccccccqccutycasvab 
+575 389 2 1 1 100 0 0 0 93 -1 3 rucavqcccccccccccccccccccccccccccccccccccccccccccccccccccccccvccccoccccccccpcccccccccccccrcutycasvab 
+576 340 2 1 1 100 0 0 0 93 -1 2 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccjccccccccccccccccccocccccccocccccutycasvab 
+577 22 3 1 1 99 0 0 0 93 -1 2 mucavccccccccccccccccccccccccceccccccccccccccsccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+578 241 1 1 1 100 0 0 0 93 -1 2 rucavcccccccccccccccccccccccccccccccccccccccccccccccrcccccccccccccccccccccccccccccccccccccmutycasvab 
+579 295 3 1 1 100 0 0 0 93 -1 3 vucavkccccccccccccccccccccticccccccccccccccccccccccccdccccccccccccccccccccckcccccccccccccccutycasvab 
+580 455 1 1 1 100 0 0 0 93 -1 5 rucavcccclcccccccccccccvcccccccccccccccccccccccccccccccccqccccccccccccpccccccdcccccccccccvcutycasvab 
+581 24 3 1 1 100 0 0 0 93 -1 2 rucavcccccmcccccccccccccccccccxcccccccccccccccyccccccccccccccccccccccccccccwcccccccccccccccutycasvab 
+582 24 1 1 1 100 0 0 0 93 -1 2 rucavcccccmccccccccccccccccccccccccccccccccccccccccccccccceccccccccccccccccccccccccccccccccutycasvab 
+583 249 3 1 1 100 0 0 0 93 -1 3 rucavccvccccccccccccxcccfcccccccccgccccccccccccccccccccccccccccccccccccccccccccccccclccccccutycasvab 
+584 230 31 1 1 103 0 0 0 98 -1 2 cccccccwccccccccccccscccccccccccccccccccutycosvabaarucxavcccccccccccccccccccccccccccccccccccccccccccccc 
+585 230 30 1 1 102 0 0 0 99 -1 2 cccccccwccccccccccccscccccccccccccccccccutycosvabaarucavccccctcccccccccccccccccccccccccccccccccccccccc 

Added: development/tests/demes_torus_repl/expected/data/dominant.dat
===================================================================
--- development/tests/demes_torus_repl/expected/data/dominant.dat	                        (rev 0)
+++ development/tests/demes_torus_repl/expected/data/dominant.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,30 @@
+# Avida Dominant Data
+# Fri Apr 27 10:46:31 2007
+#  1: Update
+#  2: Average Merit of the Dominant Genotype
+#  3: Average Gestation Time of the Dominant Genotype
+#  4: Average Fitness of the Dominant Genotype
+#  5: Repro Rate?
+#  6: Size of Dominant Genotype
+#  7: Copied Size of Dominant Genotype
+#  8: Executed Size of Dominant Genotype
+#  9: Abundance of Dominant Genotype
+# 10: Number of Births
+# 11: Number of Dominant Breed True?
+# 12: Dominant Gene Depth
+# 13: Dominant Breed In
+# 14: Max Fitness?
+# 15: Genotype ID of Dominant Genotype
+# 16: Name of the Dominant Genotype
+
+0 0.000000 0.000000 0.000000 0.000000 100 0.000000 0.000000 1 0 0 0 0 0.000000 1 100-aaaaa 
+10 0 0 0 0 100 0 0 100 0 0 0 0 0 1 100-aaaaa 
+20 97 389 0.249357 0.00257069 100 100 97 145 0 0 0 0 0.249357 1 100-aaaaa 
+30 97 389 0.249357 0.00257069 100 100 97 209 1 0 0 0 0.250653 1 100-aaaaa 
+40 97 389 0.249357 0.00257069 100 100 97 33 0 0 0 0 0.252604 1 100-aaaaa 
+50 97 389 0.249357 0.00257069 100 100 97 33 0 0 0 0 0.252604 1 100-aaaaa 
+60 97 389 0.249357 0.00257069 100 100 97 50 0 0 0 0 0.252604 1 100-aaaaa 
+70 97 389 0.249357 0.00257069 100 100 97 76 0 0 0 0 0.252604 1 100-aaaaa 
+80 97 389 0.249357 0.00257069 100 100 97 13 0 0 0 0 0.252604 1 100-aaaaa 
+90 97 389 0.249357 0.00257069 100 100 97 13 0 0 0 0 0.252604 1 100-aaaaa 
+100 97 389 0.249357 0.00257069 100 100 97 18 0 0 0 0 0.25323 1 100-aaaaa 

Added: development/tests/demes_torus_repl/expected/data/historic-100.pop
===================================================================
--- development/tests/demes_torus_repl/expected/data/historic-100.pop	                        (rev 0)
+++ development/tests/demes_torus_repl/expected/data/historic-100.pop	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,46 @@
+#filetype genotype_data
+#format id parent_id parent_dist num_cpus total_cpus length merit gest_time fitness update_born update_dead depth sequence
+
+#  1: ID
+#  2: parent ID
+#  3: parent distance
+#  4: number of orgranisms currently alive
+#  5: total number of organisms that ever existed
+#  6: length of genome
+#  7: merit
+#  8: gestation time
+#  9: fitness
+# 10: update born
+# 11: update deactivated
+# 12: depth in phylogentic tree
+# 13: genome of organism
+
+108 12 1 0 6 100 97 387 0.250646 27 79 2 rucavcccccccccccccccccccccccccccccccccccccccccccccjccccccccmcccccccccccccccccccccccccccccccutycasvab 
+344 108 1 0 1 100 0 0 0 65 79 3 rucavcccccccccccccccccccccccccccccccccccccccccccccjcccccccfmcccccccccccccccccccccccccccccccutycasvab 
+162 1 2 0 3 100 49 341 0.143695 28 79 1 rucavccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutyhasvab 
+2 1 1 0 21 99 96 385 0.249351 12 79 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+194 1 2 0 5 100 97 387 0.250646 38 79 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccqcccccccccccccccccccdcccccccccccccutycasvab 
+285 194 1 0 3 100 87 377 0.230769 53 79 2 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccycccccccccccccccccccdcccccccccccccutycasvab 
+290 109 2 0 2 100 97 387 0.250646 53 79 2 rucavccccccccccceccccccccccccccccccccccccccccccbcccccccccccccccccqcccccccccccccccccccccccccutycasvab 
+13 1 2 0 10 100 97 387 0.250646 13 79 1 rucavcccccccccqcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccclcccccccccccutycasvab 
+296 116 1 0 1 101 98 390 0.251282 54 79 2 rucavcccccccccccclcccccccccccccccccccccccccccccxcccccccccccccccccccccwccccccccccccccccccccccutycasvab 
+116 1 2 0 3 101 98 391 0.250639 27 79 1 rucavcccccccccccclcccccccccccccccccccccccccccccxccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+36 1 1 0 6 100 97 388 0.25 14 79 1 rucavccccccccccccccccccccccicccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+30 1 2 0 6 100 97 388 0.25 14 79 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccvcccccccccccccccccccccccccccrcutycasvab 
+46 1 2 0 3 100 39 327 0.119266 14 79 1 rucavcccccccyccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutynasvab 
+183 1 1 0 4 100 97 388 0.25 38 79 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccclcutycasvab 
+126 1 1 0 7 100 97 389 0.249357 27 79 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccccccccccutycasvab 
+343 266 2 0 1 101 0 0 0 65 79 3 rucavcccclccccccccccccccvcccccccccccccccccccccccccccccccccqcccccccccccccccccccdcccccccccccvcutycasvab 
+266 194 1 0 1 100 97 386 0.251295 52 79 2 rucavcccclcccccccccccccccccccccccccccccccccccccccccccccccqcccccccccccccccccccdcccccccccccccutycasvab 
+39 1 4 0 6 100 97 387 0.250646 14 79 1 rucavcccccccccccccckccccscccccccccccbccccccccccccccccccccccccccpcccccccccccccccccccccccccccutycasvab 
+264 220 1 0 2 100 97 387 0.250646 52 79 4 rucavccccccccccccccccccccccaccccccccccccccccccccccccccicccccccccccccccccccccckccccccccccgrcutycasvab 
+220 136 1 0 3 100 97 388 0.25 39 79 3 rucavccccccccccccccccccccccaccccccccccccccccccccccccccccccccccccccccccccccccckccccccccccgrcutycasvab 
+166 25 2 0 7 99 86 374 0.229947 29 79 2 rucavccccccccccccccccccccccccccccccccccccccccyccccccccccccccccccccchccccccccccccccccccccccutycasvab 
+329 1 1 0 1 100 0 0 0 65 79 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccpcccccccccccccccccccccutycasvab 
+52 1 1 0 1 100 0 0 0 15 39 1 rucavcccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+20 1 2 0 1 100 97 387 0.250646 13 39 1 rucavcccccccccccccccccccccccgcccccccccccccccccccccccccccccccccccccccccccccccccccccwccccccccutycasvab 
+23 1 1 0 1 100 0 0 0 13 39 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccrcutycasvab 
+136 23 2 0 1 100 0 0 0 27 39 2 rucavccccccccccccccccccccccaccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgrcutycasvab 
+12 1 1 0 1 100 0 0 0 13 39 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccmcccccccccccccccccccccccccccccccutycasvab 
+6 1 1 0 1 100 0 0 0 13 39 1 rucavccccccccccccccccccccccccwcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+25 1 1 0 1 100 0 0 0 13 39 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccchccccccccccccccccccccccutycasvab 

Added: development/tests/demes_torus_repl/expected/data/resource.dat
===================================================================
--- development/tests/demes_torus_repl/expected/data/resource.dat	                        (rev 0)
+++ development/tests/demes_torus_repl/expected/data/resource.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,17 @@
+# Avida resource data
+# Fri Apr 27 10:46:31 2007
+# First column gives the current update, all further columns give the quantity
+# of the particular resource at that update.
+#  1: Update
+
+0 
+10 
+20 
+30 
+40 
+50 
+60 
+70 
+80 
+90 
+100 

Added: development/tests/demes_torus_repl/expected/data/stats.dat
===================================================================
--- development/tests/demes_torus_repl/expected/data/stats.dat	                        (rev 0)
+++ development/tests/demes_torus_repl/expected/data/stats.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,26 @@
+# Generic Statistics Data
+# Fri Apr 27 10:46:31 2007
+#  1: update
+#  2: average inferiority (energy)
+#  3: ave probability of any mutations in genome
+#  4: probability of any mutations in dom genome
+#  5: log(average fidelity)
+#  6: log(dominant fidelity)
+#  7: change in number of genotypes
+#  8: genotypic entropy
+#  9: species entropy
+# 10: depth of most reacent coalescence
+# 11: Total number of resamplings this generation
+# 12: Total number of organisms that failed to resample this generation
+
+0 0.000000 0.097500 0.562358 0.102587 0.826353 1 0.000000 0.000000 0 0 0 
+10 0 0.562358 0.562358 0.826353 0.826353 0 0 0 0 0 0 
+20 2.44249e-15 0.562294 0.562358 0.826209 0.826353 0 1.66677 0 0 0 0 
+30 0.0142025 0.562309 0.562358 0.826243 0.826353 0 3.07983 0 0 0 0 
+40 0.0188194 0.562421 0.562358 0.826498 0.826353 -204 3.07702 0 0 0 0 
+50 0.0309456 0.562513 0.562358 0.826708 0.826353 0 3.12679 0 0 0 0 
+60 0.0177898 0.56404 0.562358 0.830206 0.826353 0 3.81159 0 0 0 0 
+70 0.0221409 0.56509 0.562358 0.832616 0.826353 0 4.4371 0 0 0 0 
+80 0.0296929 0.568647 0.562358 0.840829 0.826353 -286 3.75357 0 0 0 0 
+90 0.0292354 0.568585 0.562358 0.840685 0.826353 0 3.75304 0 0 0 0 
+100 0.0199679 0.569748 0.562358 0.843383 0.826353 0 4.28324 0 0 0 0 

Added: development/tests/demes_torus_repl/expected/data/tasks.dat
===================================================================
--- development/tests/demes_torus_repl/expected/data/tasks.dat	                        (rev 0)
+++ development/tests/demes_torus_repl/expected/data/tasks.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,26 @@
+# Avida tasks data
+# Fri Apr 27 10:46:31 2007
+# First column gives the current update, next columns give the number
+# of organisms that have the particular task as a component of their merit
+#  1: Update
+#  2: Not
+#  3: Nand
+#  4: And
+#  5: OrNot
+#  6: Or
+#  7: AndNot
+#  8: Nor
+#  9: Xor
+# 10: Equals
+
+0 0 0 0 0 0 0 0 0 0 
+10 0 0 0 0 0 0 0 0 0 
+20 0 0 0 0 0 0 0 0 0 
+30 0 0 0 0 0 0 0 0 0 
+40 0 0 0 0 0 0 0 0 0 
+50 0 0 0 0 0 0 0 0 0 
+60 0 0 0 0 0 0 0 0 0 
+70 0 0 0 0 0 0 0 0 0 
+80 0 0 0 0 0 0 0 0 0 
+90 0 0 0 0 0 0 0 0 0 
+100 0 0 0 0 0 0 0 0 0 

Added: development/tests/demes_torus_repl/expected/data/tasks_exe.dat
===================================================================
--- development/tests/demes_torus_repl/expected/data/tasks_exe.dat	                        (rev 0)
+++ development/tests/demes_torus_repl/expected/data/tasks_exe.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,26 @@
+# Avida tasks execution data
+# Fri Apr 27 10:46:31 2007
+# First column gives the current update, all further columns give the number
+# of times the particular task has been executed this update.
+#  1: Update
+#  2: Not
+#  3: Nand
+#  4: And
+#  5: OrNot
+#  6: Or
+#  7: AndNot
+#  8: Nor
+#  9: Xor
+# 10: Equals
+
+0 0 0 0 0 0 0 0 0 0 
+10 0 0 0 0 0 0 0 0 0 
+20 0 0 0 0 0 0 0 0 0 
+30 0 0 0 0 0 0 0 0 0 
+40 0 0 0 0 0 0 0 0 0 
+50 0 0 0 0 0 0 0 0 0 
+60 0 0 0 0 0 0 0 0 0 
+70 0 0 0 0 0 0 0 0 0 
+80 0 0 0 0 0 0 0 0 0 
+90 0 0 0 0 0 0 0 0 0 
+100 0 0 0 0 0 0 0 0 0 

Added: development/tests/demes_torus_repl/expected/data/tasks_quality.dat
===================================================================
--- development/tests/demes_torus_repl/expected/data/tasks_quality.dat	                        (rev 0)
+++ development/tests/demes_torus_repl/expected/data/tasks_quality.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,34 @@
+# Avida tasks quality data
+# Fri Apr 27 10:46:31 2007
+# First column gives the current update, rest give average and max task quality
+#  1: Update
+#  2: Not Average
+#  3: Not Max
+#  4: Nand Average
+#  5: Nand Max
+#  6: And Average
+#  7: And Max
+#  8: OrNot Average
+#  9: OrNot Max
+# 10: Or Average
+# 11: Or Max
+# 12: AndNot Average
+# 13: AndNot Max
+# 14: Nor Average
+# 15: Nor Max
+# 16: Xor Average
+# 17: Xor Max
+# 18: Equals Average
+# 19: Equals Max
+
+0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 
+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+50 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+60 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+70 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+90 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

Added: development/tests/demes_torus_repl/expected/data/time.dat
===================================================================
--- development/tests/demes_torus_repl/expected/data/time.dat	                        (rev 0)
+++ development/tests/demes_torus_repl/expected/data/time.dat	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,18 @@
+# Avida time data
+# Fri Apr 27 10:46:31 2007
+#  1: update
+#  2: avida time
+#  3: average generation
+#  4: num_executed?
+
+0 0.000000 0.000000 30 
+10 0.0927835 0 3000 
+20 0.195876 1 6000 
+30 0.300628 1.98477 11790 
+40 0.405783 2.36 3000 
+50 0.511506 2.41176 3060 
+60 0.617654 3.31183 5580 
+70 0.72411 4.28367 10470 
+80 0.830312 4.74 3000 
+90 0.937631 4.76238 3000 
+100 1.04365 5.83529 5100 

Added: development/tests/demes_torus_repl/test_list
===================================================================
--- development/tests/demes_torus_repl/test_list	                        (rev 0)
+++ development/tests/demes_torus_repl/test_list	2007-04-27 15:12:52 UTC (rev 1506)
@@ -0,0 +1,35 @@
+;--- Begin Test Configuration File (test_list) ---
+[main]
+args = -s 100            ; Command line arguments to pass to the application
+app = %(app)s            ; Application path to test
+nonzeroexit = disallow   ; Exit code handling (disallow, allow, or require)
+                         ;  disallow - treat non-zero exit codes as failures
+                         ;  allow - all exit codes are acceptable
+                         ;  require - treat zero exit codes as failures, useful
+                         ;            for creating tests for app error checking
+createdby = Dave Knoester ; Who created the test
+email = dk at cse.msu.edu ; Email address for the test's creator
+
+[consistency]
+enabled = yes            ; Is this test a consistency test?
+long = no                ; Is this test a long test?
+
+[performance]
+enabled = no             ; Is this test a performance test?
+long = no                ; Is this test a long test?
+
+; The following variables can be used in constructing setting values by calling
+; them with %(variable_name)s.  For example see 'app' above.
+;
+; app 
+; builddir 
+; cpus 
+; mode 
+; perf_repeat 
+; perf_user_margin 
+; perf_wall_margin 
+; svn 
+; svnmetadir 
+; svnversion 
+; testdir 
+;--- End Test Configuration File ---




More information about the Avida-cvs mailing list