[Avida-SVN] r1504 - in development: Avida.xcodeproj source/main source/tools support/config tests tests/demes_classic_clique tests/demes_classic_clique/config tests/demes_classic_clique/expected tests/demes_classic_clique/expected/data tests/demes_classic_clique/expected/data/archive tests/demes_classic_grid tests/demes_classic_grid/config tests/demes_classic_grid/expected tests/demes_classic_grid/expected/data tests/demes_classic_grid/expected/data/archive tests/demes_classic_torus tests/demes_classic_torus/config tests/demes_classic_torus/expected tests/demes_classic_torus/expected/data tests/demes_classic_torus/expected/data/archive

dknoester at myxo.css.msu.edu dknoester at myxo.css.msu.edu
Thu Apr 26 19:49:56 PDT 2007


Author: dknoester
Date: 2007-04-26 22:49:56 -0400 (Thu, 26 Apr 2007)
New Revision: 1504

Added:
   development/source/tools/cTopology.h
   development/tests/demes_classic_clique/
   development/tests/demes_classic_clique/config/
   development/tests/demes_classic_clique/config/avida.cfg
   development/tests/demes_classic_clique/config/default-classic.org
   development/tests/demes_classic_clique/config/environment.cfg
   development/tests/demes_classic_clique/config/events.cfg
   development/tests/demes_classic_clique/config/instset-classic.cfg
   development/tests/demes_classic_clique/expected/
   development/tests/demes_classic_clique/expected/data/
   development/tests/demes_classic_clique/expected/data/archive/
   development/tests/demes_classic_clique/expected/data/archive/100-aaaaa.org
   development/tests/demes_classic_clique/expected/data/average.dat
   development/tests/demes_classic_clique/expected/data/count.dat
   development/tests/demes_classic_clique/expected/data/detail-100.pop
   development/tests/demes_classic_clique/expected/data/dominant.dat
   development/tests/demes_classic_clique/expected/data/historic-100.pop
   development/tests/demes_classic_clique/expected/data/resource.dat
   development/tests/demes_classic_clique/expected/data/stats.dat
   development/tests/demes_classic_clique/expected/data/tasks.dat
   development/tests/demes_classic_clique/expected/data/tasks_exe.dat
   development/tests/demes_classic_clique/expected/data/tasks_quality.dat
   development/tests/demes_classic_clique/expected/data/time.dat
   development/tests/demes_classic_clique/test_list
   development/tests/demes_classic_grid/
   development/tests/demes_classic_grid/config/
   development/tests/demes_classic_grid/config/avida.cfg
   development/tests/demes_classic_grid/config/default-classic.org
   development/tests/demes_classic_grid/config/environment.cfg
   development/tests/demes_classic_grid/config/events.cfg
   development/tests/demes_classic_grid/config/instset-classic.cfg
   development/tests/demes_classic_grid/expected/
   development/tests/demes_classic_grid/expected/data/
   development/tests/demes_classic_grid/expected/data/archive/
   development/tests/demes_classic_grid/expected/data/archive/100-aaaaa.org
   development/tests/demes_classic_grid/expected/data/average.dat
   development/tests/demes_classic_grid/expected/data/count.dat
   development/tests/demes_classic_grid/expected/data/detail-100.pop
   development/tests/demes_classic_grid/expected/data/dominant.dat
   development/tests/demes_classic_grid/expected/data/historic-100.pop
   development/tests/demes_classic_grid/expected/data/resource.dat
   development/tests/demes_classic_grid/expected/data/stats.dat
   development/tests/demes_classic_grid/expected/data/tasks.dat
   development/tests/demes_classic_grid/expected/data/tasks_exe.dat
   development/tests/demes_classic_grid/expected/data/tasks_quality.dat
   development/tests/demes_classic_grid/expected/data/time.dat
   development/tests/demes_classic_grid/test_list
   development/tests/demes_classic_torus/
   development/tests/demes_classic_torus/config/
   development/tests/demes_classic_torus/config/avida.cfg
   development/tests/demes_classic_torus/config/default-classic.org
   development/tests/demes_classic_torus/config/environment.cfg
   development/tests/demes_classic_torus/config/events.cfg
   development/tests/demes_classic_torus/config/instset-classic.cfg
   development/tests/demes_classic_torus/expected/
   development/tests/demes_classic_torus/expected/data/
   development/tests/demes_classic_torus/expected/data/archive/
   development/tests/demes_classic_torus/expected/data/archive/100-aaaaa.org
   development/tests/demes_classic_torus/expected/data/average.dat
   development/tests/demes_classic_torus/expected/data/count.dat
   development/tests/demes_classic_torus/expected/data/detail-100.pop
   development/tests/demes_classic_torus/expected/data/dominant.dat
   development/tests/demes_classic_torus/expected/data/historic-100.pop
   development/tests/demes_classic_torus/expected/data/resource.dat
   development/tests/demes_classic_torus/expected/data/stats.dat
   development/tests/demes_classic_torus/expected/data/tasks.dat
   development/tests/demes_classic_torus/expected/data/tasks_exe.dat
   development/tests/demes_classic_torus/expected/data/tasks_quality.dat
   development/tests/demes_classic_torus/expected/data/time.dat
   development/tests/demes_classic_torus/test_list
Modified:
   development/Avida.xcodeproj/project.pbxproj
   development/source/main/cAvidaConfig.h
   development/source/main/cPopulation.cc
   development/source/main/cPopulation.h
   development/source/main/nGeometry.h
   development/source/tools/tArray.h
   development/support/config/avida.cfg
Log:
This commit:
- Adds a new WORLD_GEOMETRY type, CLIQUE (completely connected).
- Refactors deme setup so that the WORLD_GEOMETRY is applied to each deme.
- Abstracts topology construction out of cPopulation and into tools/cTopology.

Finally, simple consistency tests are added for demes and these different topologies.




Modified: development/Avida.xcodeproj/project.pbxproj
===================================================================
--- development/Avida.xcodeproj/project.pbxproj	2007-04-26 20:53:19 UTC (rev 1503)
+++ development/Avida.xcodeproj/project.pbxproj	2007-04-27 02:49:56 UTC (rev 1504)
@@ -10,6 +10,7 @@
 		1097463F0AE9606E00929ED6 /* cDeme.cc in Sources */ = {isa = PBXBuildFile; fileRef = 1097463D0AE9606E00929ED6 /* cDeme.cc */; };
 		109746410AE9606E00929ED6 /* cDeme.cc in Sources */ = {isa = PBXBuildFile; fileRef = 1097463D0AE9606E00929ED6 /* cDeme.cc */; };
 		109746430AE9606E00929ED6 /* cDeme.cc in Sources */ = {isa = PBXBuildFile; fileRef = 1097463D0AE9606E00929ED6 /* cDeme.cc */; };
+		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 */; };
 		7005A70409BA0FA90007E16E /* cTestCPUInterface.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7005A70209BA0FA90007E16E /* cTestCPUInterface.cc */; };
@@ -426,6 +427,7 @@
 				70B1A7430B7E3FFD00067486 /* instset-experimental.cfg in CopyFiles */,
 				70B1A75A0B7E431F00067486 /* experimental.org in CopyFiles */,
 				4233358B0BC067E3000DF681 /* cHardwareGX.h in CopyFiles */,
+				4201F39B0BE187F6006279B9 /* cTopology.h in CopyFiles */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -444,6 +446,7 @@
 /* Begin PBXFileReference section */
 		1097463D0AE9606E00929ED6 /* cDeme.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cDeme.cc; sourceTree = "<group>"; };
 		1097463E0AE9606E00929ED6 /* cDeme.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cDeme.h; sourceTree = "<group>"; };
+		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>"; };
 		7005A70109BA0FA90007E16E /* cTestCPUInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cTestCPUInterface.h; sourceTree = "<group>"; };
@@ -1520,6 +1523,7 @@
 				70B08B8D08FB2E5500FC65FE /* tMatrix.h */,
 				70B08B8E08FB2E5500FC65FE /* tMemTrack.h */,
 				70B08B8F08FB2E5500FC65FE /* tVector.h */,
+				4201F39A0BE187F6006279B9 /* cTopology.h */,
 				70B0891608F7630100FC65FE /* cHelpAlias.cc */,
 				70B0891708F7630100FC65FE /* cHelpManager.cc */,
 				70B0891808F7630100FC65FE /* cHelpType.cc */,

Modified: development/source/main/cAvidaConfig.h
===================================================================
--- development/source/main/cAvidaConfig.h	2007-04-26 20:53:19 UTC (rev 1503)
+++ development/source/main/cAvidaConfig.h	2007-04-27 02:49:56 UTC (rev 1504)
@@ -194,10 +194,10 @@
   CONFIG_ADD_GROUP(ARCH_GROUP, "Architecture Variables");
   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");
+  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");
+  CONFIG_ADD_VAR(HARDWARE_TYPE, int, 0, "0 = Original CPUs\n1 = New SMT CPUs\n2 = Transitional SMT\n3 = Experimental CPU\n4 = Gene Expression CPU");
   
   CONFIG_ADD_GROUP(CONFIG_FILE_GROUP, "Configuration Files");
   CONFIG_ADD_VAR(DATA_DIR, cString, "data", "Directory in which config files are found");

Modified: development/source/main/cPopulation.cc
===================================================================
--- development/source/main/cPopulation.cc	2007-04-26 20:53:19 UTC (rev 1503)
+++ development/source/main/cPopulation.cc	2007-04-27 02:49:56 UTC (rev 1504)
@@ -50,6 +50,7 @@
 #include "cSaleItem.h"
 #include "cSpecies.h"
 #include "cStats.h"
+#include "cTopology.h"
 #include "cWorld.h"
 
 #include <fstream>
@@ -76,85 +77,97 @@
   // Avida specific information.
   world_x = world->GetConfig().WORLD_X.Get();
   world_y = world->GetConfig().WORLD_Y.Get();
-  int geometry = world->GetConfig().WORLD_GEOMETRY.Get();
-  const int num_cells = world_x * world_y;
+	int num_demes = m_world->GetConfig().NUM_DEMES.Get();
+	const int num_cells = world_x * world_y;
+  const int geometry = world->GetConfig().WORLD_GEOMETRY.Get();
+	const int birth_method = m_world->GetConfig().BIRTH_METHOD.Get();
   
   // Print out world details
   if (world->GetVerbosity() > VERBOSE_NORMAL) {
     cout << "Building world " << world_x << "x" << world_y << " = " << num_cells << " organisms." << endl;
-    if (geometry == nGeometry::GRID) {
-      cout << "Geometry: Bounded grid" << endl;
-    } else if (geometry == nGeometry::TORUS) {
-      cout << "Geometry: Torus" << endl;
-    } else {
-      cout << "Geometry: Unknown" << endl;
+    switch(geometry) {
+      case nGeometry::GRID: { cout << "Geometry: Bounded grid" << endl;	break; }
+			case nGeometry::TORUS: { cout << "Geometry: Torus" << endl; break;	}
+			case nGeometry::CLIQUE: { cout << "Geometry: Clique" << endl; break; }
+			default: {
+        cout << "Unknown geometry!" << endl;
+        assert(false);
+      }        
     }
-    cout << endl;
   }
   
-  cell_array.Resize(num_cells);
-  resource_count.ResizeSpatialGrids(world_x, world_y);
-  market.Resize(MARKET_SIZE);
+  // Error checking for demes vs. non-demes setup.
+	if(num_demes > 0) {
+		assert(birth_method != POSITION_CHILD_FULL_SOUP_ELDEST);
+		assert(birth_method != POSITION_CHILD_FULL_SOUP_ELDEST);
+	} else {
+		assert(birth_method != POSITION_CHILD_DEME_RANDOM);
+		num_demes = 1; // One population == one deme.
+	}
+	
+  // Allocate the cells, resources, and market.
+	cell_array.Resize(num_cells);
+	resource_count.ResizeSpatialGrids(world_x, world_y);
+	market.Resize(MARKET_SIZE);
+	
+  // Setup the cells.  Do things that are not dependent upon topology here.
+	for(int i=0; i<num_cells; ++i) {
+		cell_array[i].Setup(world, i, environment.GetMutRates());
+    // Setup the reaper queue.
+		if (world->GetConfig().BIRTH_METHOD.Get() == POSITION_CHILD_FULL_SOUP_ELDEST) {
+			reaper_queue.Push(&(cell_array[i]));
+		}
+	}                         
+
+	// What are the sizes of the demes that we're creating?
+	const int deme_size_x = world_x;
+	const int deme_size_y = world_y / num_demes;
+	const int deme_size = deme_size_x * deme_size_y;
+	deme_array.Resize(num_demes);
+	
+  // Setup the deme structures.
+	tArray<int> deme_cells(deme_size);
+	for (int deme_id = 0; deme_id < num_demes; deme_id++) {
+		for (int offset = 0; offset < deme_size; offset++) {
+			int cell_id = deme_id * deme_size + offset;
+			deme_cells[offset] = cell_id;
+			cell_array[cell_id].SetDemeID(deme_id);
+		}
+		deme_array[deme_id].Setup(deme_cells, deme_size_x);
+	}
   
-  for (int cell_id = 0; cell_id < num_cells; cell_id++) {
-    int x = cell_id % world_x;
-    int y = cell_id / world_x;
-    cell_array[cell_id].Setup(world, cell_id, environment.GetMutRates());
-    
-    // If we're working with a bounded grid, we need to take care of it.
-    bool bottom_flag = true;
-    bool top_flag = true;
-    bool right_flag = true;
-    bool left_flag = true;
-    
-    if (geometry == nGeometry::GRID) {
-      if (y == 0)  bottom_flag = false;
-      if (y == world_y-1)  top_flag = false;
-      if (x == 0) left_flag = false;
-      if (x == world_x-1) right_flag = false;
-    }
-    
-    // Setup the connection list for each cell. (Clockwise from -1 to 1)
-    
-    tList<cPopulationCell> & conn_list=cell_array[cell_id].ConnectionList();
-    if (bottom_flag && left_flag) {
-      conn_list.Push(&(cell_array[GridNeighbor(cell_id,world_x,world_y, -1, -1)]));
-    }
-    if (bottom_flag) {
-      conn_list.Push(&(cell_array[GridNeighbor(cell_id,world_x,world_y,  0, -1)]));
-    }
-    if (bottom_flag && right_flag) {
-      conn_list.Push(&(cell_array[GridNeighbor(cell_id,world_x,world_y, +1, -1)]));
-    }
-    if (right_flag) {
-      conn_list.Push(&(cell_array[GridNeighbor(cell_id,world_x,world_y, +1,  0)]));
-    }
-    if (top_flag && right_flag) {
-      conn_list.Push(&(cell_array[GridNeighbor(cell_id,world_x,world_y, +1, +1)]));
-    }
-    if (top_flag) {
-      conn_list.Push(&(cell_array[GridNeighbor(cell_id,world_x,world_y,  0, +1)]));
-    }
-    if (top_flag && left_flag) {
-      conn_list.Push(&(cell_array[GridNeighbor(cell_id,world_x,world_y, -1, +1)]));
-    }
-    if (left_flag) {
-      conn_list.Push(&(cell_array[GridNeighbor(cell_id,world_x,world_y, -1,  0)]));
-    }
-    
-    // Setup the reaper queue...
-    if (world->GetConfig().BIRTH_METHOD.Get() == POSITION_CHILD_FULL_SOUP_ELDEST) {
-      reaper_queue.Push(&(cell_array[cell_id]));
-    }
-  }
+  // Setup the topology.
+  // What we're doing here is chopping the cell_array up into num_demes pieces.
+  // Note that having 0 demes (one population) is the same as having 1 deme.  Then
+  // we send the cells that comprise each deme into the topology builder.
+	for(int i=0; i<num_cells; i+=deme_size) {
+		switch(geometry) {
+      // We're cheating here; we're using the random access nature of an iterator
+      // to index beyond the end of the cell_array.
+			case nGeometry::GRID: {
+				build_grid(&cell_array.begin()[i], &cell_array.begin()[i+deme_size], 
+                   deme_size_x, deme_size_y);
+				break;
+			}
+			case nGeometry::TORUS: {
+				build_torus(&cell_array.begin()[i], &cell_array.begin()[i+deme_size], 
+                    deme_size_x, deme_size_y);
+				break;
+			}
+			case nGeometry::CLIQUE: {
+				build_clique(&cell_array.begin()[i], &cell_array.begin()[i+deme_size], 
+                     deme_size_x, deme_size_y);
+				break;
+			}
+			default: {
+				assert(false);
+			}
+		}
+	}
   
+  
   BuildTimeSlicer(0);
   
-  if (SetupDemes() == false) {
-    cerr << "Error: Failed to setup demes.  Exiting..." << endl;
-    exit(1);
-  }
-  
   // Setup the resources...
   const cResourceLib & resource_lib = environment.GetResourceLib();
   for (int i = 0; i < resource_lib.GetSize(); i++) {
@@ -203,84 +216,6 @@
 }
 
 
-// This method configures demes in the population.  Demes are subgroups of
-// organisms evolved together and used in group selection experiments.
-
-bool cPopulation::SetupDemes()
-{
-  const int num_demes = m_world->GetConfig().NUM_DEMES.Get();
-  const int birth_method = m_world->GetConfig().BIRTH_METHOD.Get();
-  
-  // If we are not using demes, stop here.
-  if (num_demes == 0) {
-    if (birth_method == POSITION_CHILD_DEME_RANDOM) {
-      cerr << "Using position method that requires demes, but demes are off."
-      << endl;
-      return false;
-    }
-    return true;
-  }
-  
-  deme_array.Resize(num_demes);
-  
-  // Check to make sure all other settings are reasonable to have demes.
-  // ...make sure populaiton can be divided up evenly.
-  if (world_y % num_demes != 0) {
-    cerr << "World Y size of " << world_y
-    << " cannot be divided into " << num_demes << " demes." << endl;
-    return false;
-  }
-  
-  // ...make sure we are using a legal birth method.
-  if (birth_method == POSITION_CHILD_FULL_SOUP_ELDEST ||
-      birth_method == POSITION_CHILD_FULL_SOUP_RANDOM) {
-    cerr << "Illegal birth method " << birth_method << " for use with demes." << endl;
-    return false;
-  }
-  
-  const int deme_size_x = world_x;
-  const int deme_size_y = world_y / num_demes;
-  const int deme_size = deme_size_x * deme_size_y;
-  
-  
-  // Setup the deme structures.
-  tArray<int> deme_cells(deme_size);
-  for (int deme_id = 0; deme_id < num_demes; deme_id++) {
-    for (int offset = 0; offset < deme_size; offset++) {
-      int cell_id = deme_id * deme_size + offset;
-      deme_cells[offset] = cell_id;
-      cell_array[cell_id].SetDemeID(deme_id);
-    }
-    deme_array[deme_id].Setup(deme_cells);
-  }
-  
-  
-  // Build walls in the population.
-  for (int row_id = 0; row_id < world_y; row_id += deme_size_y) {
-    // Loop through all of the cols and make the cut on each...
-    for (int col_id = 0; col_id < world_x; col_id++) {
-      int idA = row_id * world_x + col_id;
-      int idB  = GridNeighbor(idA, world_x, world_y,  0, -1);
-      int idA0 = GridNeighbor(idA, world_x, world_y, -1,  0);
-      int idA1 = GridNeighbor(idA, world_x, world_y,  1,  0);
-      int idB0 = GridNeighbor(idA, world_x, world_y, -1, -1);
-      int idB1 = GridNeighbor(idA, world_x, world_y,  1, -1);
-      cPopulationCell & cellA = GetCell(idA);
-      cPopulationCell & cellB = GetCell(idB);
-      tList<cPopulationCell> & cellA_list = cellA.ConnectionList();
-      tList<cPopulationCell> & cellB_list = cellB.ConnectionList();
-      cellA_list.Remove(&GetCell(idB));
-      cellA_list.Remove(&GetCell(idB0));
-      cellA_list.Remove(&GetCell(idB1));
-      cellB_list.Remove(&GetCell(idA));
-      cellB_list.Remove(&GetCell(idA0));
-      cellB_list.Remove(&GetCell(idA1));
-    }
-  }
-  
-  return true;
-}
-
 // Activate the child, given information from the parent.
 // Return true if parent lives through this process.
 

Modified: development/source/main/cPopulation.h
===================================================================
--- development/source/main/cPopulation.h	2007-04-26 20:53:19 UTC (rev 1503)
+++ development/source/main/cPopulation.h	2007-04-27 02:49:56 UTC (rev 1504)
@@ -143,9 +143,6 @@
   cPopulation(cWorld* world);
   ~cPopulation();
 
-  // Extra Setup...
-  bool SetupDemes();
-
   // Activate the offspring of an organism in the population
   bool ActivateOffspring(cAvidaContext& ctx, cGenome& child_genome, cOrganism& parent_organism);
   bool ActivateParasite(cOrganism& parent, const cCodeLabel& label, const cGenome& injected_code);

Modified: development/source/main/nGeometry.h
===================================================================
--- development/source/main/nGeometry.h	2007-04-26 20:53:19 UTC (rev 1503)
+++ development/source/main/nGeometry.h	2007-04-27 02:49:56 UTC (rev 1504)
@@ -29,7 +29,8 @@
   enum {
     GLOBAL = 0,
     GRID,
-    TORUS
+    TORUS,
+    CLIQUE
   };
 }
 

Added: development/source/tools/cTopology.h
===================================================================
--- development/source/tools/cTopology.h	                        (rev 0)
+++ development/source/tools/cTopology.h	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,88 @@
+/*! Builds different topologies out of ranges of cells.
+
+Avida; cTopology.h
+Copyright 2005-2006 Michigan State University. All rights reserved.
+
+This file contains templated algorithms that create a particular cell
+topology out of a given range of cells.  In every case, the range of cells is 
+specified by a begin/end iterator pair.
+*/
+
+
+/*! 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.
+*/
+template< typename InputIterator >
+void build_torus(InputIterator begin, InputIterator end, unsigned int rowSize, unsigned int colSize) {
+  // Get the offset from the start of this range.  This is used to modify the 
+  // parameters and return for GridNeighbor.
+  int offset = begin->GetID();
+  
+  for(InputIterator i=begin; i!=end; ++i) {
+    // The majority of all connections.
+    i->ConnectionList().Push(&begin[GridNeighbor(i->GetID()-offset, colSize, rowSize, -1, -1)]);
+    i->ConnectionList().Push(&begin[GridNeighbor(i->GetID()-offset, colSize, rowSize, 0, -1)]);
+    i->ConnectionList().Push(&begin[GridNeighbor(i->GetID()-offset, colSize, rowSize, 1, -1)]);
+    i->ConnectionList().Push(&begin[GridNeighbor(i->GetID()-offset, colSize, rowSize, 1, 0)]);
+    i->ConnectionList().Push(&begin[GridNeighbor(i->GetID()-offset, colSize, rowSize, 1, 1)]);
+    i->ConnectionList().Push(&begin[GridNeighbor(i->GetID()-offset, colSize, rowSize, 0, 1)]);
+    i->ConnectionList().Push(&begin[GridNeighbor(i->GetID()-offset, colSize, rowSize, -1, 1)]);
+    i->ConnectionList().Push(&begin[GridNeighbor(i->GetID()-offset, colSize, rowSize, -1, 0)]);
+  }
+}
+
+
+/*! Builds a grid topology out of the cells betwen the iterators.
+In a grid, each cell is connected to up to 8 neighbors (including diagonals), 
+and connections do NOT wrap around the logical edges of the grid.
+*/
+template< typename InputIterator >
+void build_grid(InputIterator begin, InputIterator end, unsigned int rowSize, unsigned int colSize) {
+  // Start with a torus.
+  build_torus(begin, end, rowSize, colSize);
+  int offset = begin->GetID();
+
+  // And now remove the connections that wrap around.
+  for(InputIterator i=begin; i!=end; ++i) {
+    int id = i->GetID();
+    unsigned int x = (id-offset) % colSize;
+    unsigned int y = (id-offset) / colSize;
+    
+    if(x==0) {
+      i->ConnectionList().Remove(&begin[GridNeighbor(i->GetID()-offset, colSize, rowSize, -1, -1)]);
+      i->ConnectionList().Remove(&begin[GridNeighbor(i->GetID()-offset, colSize, rowSize, -1, 0)]);
+      i->ConnectionList().Remove(&begin[GridNeighbor(i->GetID()-offset, colSize, rowSize, -1, 1)]);
+    }
+    if(x==(colSize-1)) {
+      i->ConnectionList().Remove(&begin[GridNeighbor(i->GetID()-offset, colSize, rowSize, 1, -1)]);
+      i->ConnectionList().Remove(&begin[GridNeighbor(i->GetID()-offset, colSize, rowSize, 1, 0)]);
+      i->ConnectionList().Remove(&begin[GridNeighbor(i->GetID()-offset, colSize, rowSize, 1, 1)]);      
+    }
+    if(y==0) {
+      i->ConnectionList().Remove(&begin[GridNeighbor(i->GetID()-offset, colSize, rowSize, -1, -1)]);
+      i->ConnectionList().Remove(&begin[GridNeighbor(i->GetID()-offset, colSize, rowSize, 0, -1)]);
+      i->ConnectionList().Remove(&begin[GridNeighbor(i->GetID()-offset, colSize, rowSize, 1, -1)]);      
+    }
+    if(y==(rowSize-1)) {
+      i->ConnectionList().Remove(&begin[GridNeighbor(i->GetID()-offset, colSize, rowSize, -1, 1)]);
+      i->ConnectionList().Remove(&begin[GridNeighbor(i->GetID()-offset, colSize, rowSize, 0, 1)]);
+      i->ConnectionList().Remove(&begin[GridNeighbor(i->GetID()-offset, colSize, rowSize, 1, 1)]);      
+    }
+  }
+}
+
+
+/*! Builds a clique topology out of the cells betwen the iterators.
+In a clique, each cell is connected to all other cells in the given range.
+*/
+template< typename InputIterator >
+void build_clique(InputIterator begin, InputIterator end, unsigned int rowSize, unsigned int colSize) {
+  for(InputIterator i=begin; i!=end; ++i) {
+    for(InputIterator j=begin; j!=end; ++j) {
+      if(j!=i) {
+        i->ConnectionList().Push(j);
+      }
+    }
+  }
+}

Modified: development/source/tools/tArray.h
===================================================================
--- development/source/tools/tArray.h	2007-04-26 20:53:19 UTC (rev 1503)
+++ development/source/tools/tArray.h	2007-04-27 02:49:56 UTC (rev 1504)
@@ -48,12 +48,27 @@
   int m_size; // Number of Elements
 
 public:
+  typedef T* iterator; //!< STL-compatible iterator.
+  typedef const T* const_iterator; //!< STL-compatible const_iterator.
+
   explicit tArray(const int size = 0) : m_data(NULL), m_size(0) { ResizeClear(size); }
   //explicit tArray(const int size = 0, const T& init_val) : m_data(NULL), m_size(0) { Resize(size, init_val); }
 	tArray(const tArray& rhs) : m_data(NULL), m_size(0) { this->operator=(rhs); }
 
   ~tArray() { delete [] m_data; }
-
+  
+  //! Returns an iterator to the beginning of the tArray.
+  inline iterator begin() { return m_data; }
+  
+  //! Returns an iterator just past the end of the tArray.
+  inline iterator end() { return m_data + m_size; }
+  
+  //! Returns a const_iterator to the beginning of the tArray.
+  inline const_iterator begin() const { return m_data; }
+  
+  //! Returns a const_iterator just past the end of the tArray.
+  inline const_iterator end() const { return m_data + m_size; }  
+  
   tArray& operator=(const tArray& rhs) {
     if (m_size != rhs.GetSize())  ResizeClear(rhs.GetSize());
     for(int i = 0; i < m_size; i++) m_data[i] = rhs[i];

Modified: development/support/config/avida.cfg
===================================================================
--- development/support/config/avida.cfg	2007-04-26 20:53:19 UTC (rev 1503)
+++ development/support/config/avida.cfg	2007-04-27 02:49:56 UTC (rev 1504)
@@ -20,6 +20,7 @@
 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
 RANDOM_SEED 0     # Random number seed (0 for based on time)
 HARDWARE_TYPE 0   # 0 = Original CPUs

Added: development/tests/demes_classic_clique/config/avida.cfg
===================================================================
--- development/tests/demes_classic_clique/config/avida.cfg	                        (rev 0)
+++ development/tests/demes_classic_clique/config/avida.cfg	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,217 @@
+#############################################################################
+# 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
+NUM_DEMES 100     # Number of independed groups in the population; 0=off
+RANDOM_SEED 0     # Random number seed (0 for based on time)
+HARDWARE_TYPE 0   # 0 = Original CPUs
+                  # 1 = New SMT CPUs
+                  # 2 = Transitional SMT
+
+### 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
+
+### 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)
+PREFER_EMPTY 1           # Give empty cells preference in offsping placement?
+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)
+
+### 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
+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?
+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.
+
+### 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_classic_clique/config/default-classic.org
===================================================================
--- development/tests/demes_classic_clique/config/default-classic.org	                        (rev 0)
+++ development/tests/demes_classic_clique/config/default-classic.org	2007-04-27 02:49:56 UTC (rev 1504)
@@ -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_classic_clique/config/environment.cfg
===================================================================
--- development/tests/demes_classic_clique/config/environment.cfg	                        (rev 0)
+++ development/tests/demes_classic_clique/config/environment.cfg	2007-04-27 02:49:56 UTC (rev 1504)
@@ -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_classic_clique/config/events.cfg
===================================================================
--- development/tests/demes_classic_clique/config/events.cfg	                        (rev 0)
+++ development/tests/demes_classic_clique/config/events.cfg	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,16 @@
+# Print all of the standard data files...
+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
+
+# 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_classic_clique/config/instset-classic.cfg
===================================================================
--- development/tests/demes_classic_clique/config/instset-classic.cfg	                        (rev 0)
+++ development/tests/demes_classic_clique/config/instset-classic.cfg	2007-04-27 02:49:56 UTC (rev 1504)
@@ -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_classic_clique/expected/data/archive/100-aaaaa.org
===================================================================
--- development/tests/demes_classic_clique/expected/data/archive/100-aaaaa.org	                        (rev 0)
+++ development/tests/demes_classic_clique/expected/data/archive/100-aaaaa.org	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,134 @@
+# Thu Apr 26 22:14: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_classic_clique/expected/data/average.dat
===================================================================
--- development/tests/demes_classic_clique/expected/data/average.dat	                        (rev 0)
+++ development/tests/demes_classic_clique/expected/data/average.dat	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,30 @@
+# Avida Average Data
+# Thu Apr 26 22:14:51 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 1.000000 1.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 
+20 97 389 0.249357 0 100 100 97 0 0 0 0 1 -2.13704 0 0 
+30 97 389 0.249357 0 100 100 97 2 0 0 0.25 2 -1.87486 0 0 
+40 97 388.75 0.249518 0 100 100 97 2.66667 0.125 0.125 0.375 3 -2.48993 0 0 
+50 97 388.75 0.249518 0 100 100 97 2.66667 0 0 0.375 3 -2.48993 0 0 
+60 97 388.8 0.249486 0 100.067 100 97 2.14286 0 0 0.533333 3.93333 -2.17444 0 0 
+70 96.3571 388.107 0.248236 0 100.071 100.036 96.3571 2.15385 0 0 0.678571 4.89286 -1.72687 0 0 
+80 94.4694 383.959 0.245207 0 99.9796 99 94.4694 1.88462 0.0204082 0 0.857143 5.79592 -1.77146 0 0 
+90 94.7627 384.678 0.245639 0 100.017 99.2034 94.7627 1.96667 0.0847458 0.0508475 0.864407 6.11864 -1.79841 0 0 
+100 95.2737 385.537 0.246663 0 100.053 99.5158 95.2737 1.93878 0 0 1.07368 6.83158 -1.29329 0 0 

Added: development/tests/demes_classic_clique/expected/data/count.dat
===================================================================
--- development/tests/demes_classic_clique/expected/data/count.dat	                        (rev 0)
+++ development/tests/demes_classic_clique/expected/data/count.dat	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,30 @@
+# Avida count data
+# Thu Apr 26 22:14:51 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 1 0 1 1 1 1 0 0 
+10 30 1 1 1 0 0 0 0 0 0 1 1 1 0 0 
+20 60 2 1 1 0 0 0 0 0 0 2 1 2 0 0 
+30 120 4 2 1 0 0 0 0 0 0 3 2 4 0 0 
+40 210 8 3 1 0 0 0 1 0 1 6 4 8 0 0 
+50 240 8 3 1 0 0 0 0 0 0 6 4 8 0 0 
+60 450 15 7 1 0 0 0 0 0 0 9 8 15 0 0 
+70 840 28 13 2 0 0 0 0 0 0 16 15 28 0 0 
+80 1440 49 26 2 0 0 0 1 0 0 24 27 49 0 0 
+90 1620 59 30 2 0 0 0 5 0 3 30 32 59 0 0 
+100 2850 95 49 6 0 0 0 0 0 0 47 51 95 0 0 

Added: development/tests/demes_classic_clique/expected/data/detail-100.pop
===================================================================
--- development/tests/demes_classic_clique/expected/data/detail-100.pop	                        (rev 0)
+++ development/tests/demes_classic_clique/expected/data/detail-100.pop	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,66 @@
+#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 21 21 100 97 389 0.249357 -1 -1 0 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+2 1 1 11 11 100 97 388 0.25 26 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccfcccccccutycasvab 
+10 1 1 3 3 100 97 388 0.25 65 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccicccutycasvab 
+6 1 2 3 3 101 98 392 0.25 53 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccczcccccccccccccccccacccccccccccutycasvab 
+13 6 1 3 3 101 98 392 0.25 68 -1 2 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccczcccccccccccccccccaccccccccsccutycasvab 
+5 1 2 3 3 100 87 377 0.230769 52 -1 1 rucavcccccccccccccccccccccccccycccccccccccccccccccccccccccccmccccccccccccccccccccccccccccccutycasvab 
+11 1 1 2 2 100 97 389 0.249357 66 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccacccccccccccccccccccccccutycasvab 
+18 1 1 2 2 100 0 0 0 78 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccutycasvab 
+20 7 1 2 2 100 0 0 0 79 -1 2 rucavccccccccccccccccccecccccccgcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+7 1 1 2 2 100 97 388 0.25 53 -1 1 rucavccccccccccccccccccecccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+19 2 2 2 2 99 0 0 0 78 -1 2 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccxcccfcccccccutycasvab 
+24 1 1 2 2 100 0 0 0 79 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccmccccccccccutycasvab 
+25 1 3 2 2 99 0 0 0 79 -1 1 rucavccccccccccccccccccccccccccccccccccccccccsccccccccccccccccccccccccccccccccccccccccccclutycasvab 
+27 5 1 2 2 100 0 0 0 81 -1 2 rucavcccccccccccccccccccccccccycccccccccccccccccccccccccccccmcccccccccccccpccccccccccccccccutycasvab 
+3 2 1 1 1 100 0 0 0 38 -1 2 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccfcccccccutycasgab 
+4 1 1 1 1 100 0 0 0 52 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccyccutycasvab 
+8 1 2 1 1 100 0 0 0 64 -1 1 rucavucccccccccccccccccccccccccccccccccccccccccccccccccccccccccckccccccccccccccccccccccccccutycasvab 
+9 1 1 1 1 100 0 0 0 64 -1 1 rumavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+12 7 1 1 1 100 0 0 0 66 -1 2 rucavccccccccccccccccccecccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycssvab 
+14 1 1 1 1 100 0 0 0 76 -1 1 rucbvccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+15 12 26 1 1 100 0 0 0 77 -1 3 cccccccccccccccccccccccccccccccccccccccccutycssvabrucavccccccccccccccccccecccccccccccccccccccccccccc 
+16 1 1 1 1 100 0 0 0 78 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccjccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+17 1 2 1 1 100 0 0 0 78 -1 1 rucavcccccccccccccccccccccccccccccuccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycaxvab 
+21 1 1 1 1 100 0 0 0 79 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccfcccccccccccccccccccccccccutycasvab 
+22 1 1 1 1 99 0 0 0 79 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+23 1 1 1 1 100 0 0 0 79 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccvcutycasvab 
+26 5 4 1 1 100 0 0 0 80 -1 2 rucavccccccccccccccccccnccccccycccccacccccccccccccccccccccccmcccccccccccccccdccccccccccccccutycasgab 
+28 1 1 1 1 100 0 0 0 88 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccicccccccccccccccccccutycasvab 
+29 1 1 1 1 100 0 0 0 90 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccpcccccccccccccccccccccccccccccutycasvab 
+30 1 1 1 1 100 0 0 0 90 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccrccccccccccccccccccccccccutycasvab 
+31 2 1 1 1 101 0 0 0 91 -1 2 rucavccccccccccccccccccnccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccfcccccccutycasvab 
+32 1 3 1 1 100 0 0 0 91 -1 1 rucavcccccoccccccccccccccccccncccccccccccccccccwcccccccccccccccccccccccccccccccccccccccccccutycasvab 
+33 23 1 1 1 100 0 0 0 91 -1 2 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccvcunycasvab 
+34 1 3 1 1 100 0 0 0 91 -1 1 rucavccccccccccchccccccccccccccccccccccccccccccccccccccccccccjcccccccccccccccncccccccccccccutycasvab 
+35 1 1 1 1 100 0 0 0 91 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccrccccccccccccccccccccccccccccccccccccccutycasvab 
+36 16 1 1 1 100 0 0 0 91 -1 2 rucavcccccccccccccccccccccccccccccccccccccccccjccccccccccccccccccccccccccccccccccycccccccccutycasvab 
+37 11 1 1 1 100 0 0 0 91 -1 2 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccmcccccccacccccccccccccccccccccccutycasvab 
+38 10 1 1 1 100 0 0 0 91 -1 2 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccicccutycasvab 
+39 21 1 1 1 100 0 0 0 91 -1 2 rucavccccccccfcccccccccccccccccccccccccccccccccccccccccccccccccccfcccccccccccccccccccccccccutycasvab 
+40 1 3 1 1 101 0 0 0 91 -1 1 rucavcccycccccccccucccccccccccccccccccccccccccccccccccccccccccccccccccccccccccmcccccccccccccutycasvab 
+41 2 1 1 1 100 0 0 0 92 -1 2 rucavccccccccccccccccccccccclccccccccccccccccccccccccccccccccccccccccccccccccccccccfcccccccutycasvab 
+42 1 1 1 1 100 0 0 0 92 -1 1 rucavccccccccccccccccccccccccccclccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+43 11 2 1 1 101 0 0 0 92 -1 2 rucavcccccmcccccccccccccccccccccccccccccccccccclccccccccccccccccccccacccccccccccccccccccccccutycasvab 
+44 2 2 1 1 100 0 0 0 92 -1 2 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccfcccgcjcutycasvab 
+45 1 1 1 1 100 0 0 0 92 -1 1 rucavcccccccccccccccccccccccccccccccccccccxccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+46 22 1 1 1 99 0 0 0 93 -1 2 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccctcccccccccutycasvab 
+47 13 1 1 1 101 0 0 0 94 -1 3 rucavccccccccccccccccccccccccccccccccccccccccccjcccccccccccccczcccccccccccccccccaccccccccsccutycasvab 
+48 6 2 1 1 101 0 0 0 94 -1 2 rucavccccccccccccccccccccccccccccccrcccccccccccccccccccccccgcczcccccccccccccccccacccccccccccutycasvab 
+49 5 1 1 1 100 0 0 0 94 -1 2 rucavcccccccccccccccccccccccccycccccccccccccccccccccccccccccmccccccccccccccccccccccccccceccutycasvab 

Added: development/tests/demes_classic_clique/expected/data/dominant.dat
===================================================================
--- development/tests/demes_classic_clique/expected/data/dominant.dat	                        (rev 0)
+++ development/tests/demes_classic_clique/expected/data/dominant.dat	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,30 @@
+# Avida Dominant Data
+# Thu Apr 26 22:14:51 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 1 0 0 0 0 0 1 100-aaaaa 
+20 0 0 0 0 100 0 0 2 0 0 0 0 0.249357 1 100-aaaaa 
+30 97 389 0.249357 0.00257069 100 100 97 3 0 0 0 0 0.249357 1 100-aaaaa 
+40 97 389 0.249357 0.00257069 100 100 97 6 1 1 0 0 0.25 1 100-aaaaa 
+50 97 389 0.249357 0.00257069 100 100 97 6 0 0 0 0 0.25 1 100-aaaaa 
+60 97 389 0.249357 0.00257069 100 100 97 8 0 0 0 0 0.25 1 100-aaaaa 
+70 97 389 0.249357 0.00257069 100 100 97 12 0 0 0 0 0.25 1 100-aaaaa 
+80 97 389 0.249357 0.00257069 100 100 97 15 0 0 0 0 0.25 1 100-aaaaa 
+90 97 389 0.249357 0.00257069 100 100 97 18 4 2 0 0 0.25 1 100-aaaaa 
+100 97 389 0.249357 0.00257069 100 100 97 21 0 0 0 0 0.250653 1 100-aaaaa 

Added: development/tests/demes_classic_clique/expected/data/historic-100.pop
===================================================================
--- development/tests/demes_classic_clique/expected/data/historic-100.pop	                        (rev 0)
+++ development/tests/demes_classic_clique/expected/data/historic-100.pop	2007-04-27 02:49:56 UTC (rev 1504)
@@ -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_classic_clique/expected/data/resource.dat
===================================================================
--- development/tests/demes_classic_clique/expected/data/resource.dat	                        (rev 0)
+++ development/tests/demes_classic_clique/expected/data/resource.dat	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,17 @@
+# Avida resource data
+# Thu Apr 26 22:14:51 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_classic_clique/expected/data/stats.dat
===================================================================
--- development/tests/demes_classic_clique/expected/data/stats.dat	                        (rev 0)
+++ development/tests/demes_classic_clique/expected/data/stats.dat	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,26 @@
+# Generic Statistics Data
+# Thu Apr 26 22:14:51 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.0975 0.562358 0.102587 0.826353 0 0 0 0 0 0 
+20 0 0.562358 0.562358 0.826353 0.826353 0 0 0 0 0 0 
+30 0 0.562358 0.562358 0.826353 0.826353 0 0.562335 0 0 0 0 
+40 -0.000644122 0.562358 0.562358 0.826353 0.826353 0 0.735622 0 0 0 0 
+50 -0.000644122 0.562358 0.562358 0.826353 0.826353 0 0.735622 0 0 0 0 
+60 -0.000515331 0.562569 0.562358 0.826836 0.826353 0 1.5066 0 0 0 0 
+70 0.00450629 0.562584 0.562358 0.82687 0.826353 0 2.01969 0 0 0 0 
+80 0.0167849 0.562293 0.562358 0.826206 0.826353 1 2.69996 0 0 0 0 
+90 0.0150247 0.562411 0.562358 0.826476 0.826353 2 2.82388 0 0 0 0 
+100 0.0108628 0.562524 0.562358 0.826734 0.826353 0 3.34771 0 0 0 0 

Added: development/tests/demes_classic_clique/expected/data/tasks.dat
===================================================================
--- development/tests/demes_classic_clique/expected/data/tasks.dat	                        (rev 0)
+++ development/tests/demes_classic_clique/expected/data/tasks.dat	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,26 @@
+# Avida tasks data
+# Thu Apr 26 22:14:51 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_classic_clique/expected/data/tasks_exe.dat
===================================================================
--- development/tests/demes_classic_clique/expected/data/tasks_exe.dat	                        (rev 0)
+++ development/tests/demes_classic_clique/expected/data/tasks_exe.dat	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,26 @@
+# Avida tasks execution data
+# Thu Apr 26 22:14:51 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_classic_clique/expected/data/tasks_quality.dat
===================================================================
--- development/tests/demes_classic_clique/expected/data/tasks_quality.dat	                        (rev 0)
+++ development/tests/demes_classic_clique/expected/data/tasks_quality.dat	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,34 @@
+# Avida tasks quality data
+# Thu Apr 26 22:14:51 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_classic_clique/expected/data/time.dat
===================================================================
--- development/tests/demes_classic_clique/expected/data/time.dat	                        (rev 0)
+++ development/tests/demes_classic_clique/expected/data/time.dat	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,18 @@
+# Avida time data
+# Thu Apr 26 22:14:51 2007
+#  1: update
+#  2: avida time
+#  3: average generation
+#  4: num_executed?
+
+0 0.000000 0.000000 30 
+10 0 0 30 
+20 0.0824742 1 60 
+30 0.185567 2 120 
+40 0.28866 3 210 
+50 0.391753 3 240 
+60 0.494845 3.93333 450 
+70 0.598234 4.89286 840 
+80 0.702787 5.79592 1440 
+90 0.808641 6.11864 1620 
+100 0.913615 6.83158 2850 

Added: development/tests/demes_classic_clique/test_list
===================================================================
--- development/tests/demes_classic_clique/test_list	                        (rev 0)
+++ development/tests/demes_classic_clique/test_list	2007-04-27 02:49:56 UTC (rev 1504)
@@ -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_classic_grid/config/avida.cfg
===================================================================
--- development/tests/demes_classic_grid/config/avida.cfg	                        (rev 0)
+++ development/tests/demes_classic_grid/config/avida.cfg	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,217 @@
+#############################################################################
+# 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
+NUM_DEMES 100     # Number of independed groups in the population; 0=off
+RANDOM_SEED 0     # Random number seed (0 for based on time)
+HARDWARE_TYPE 0   # 0 = Original CPUs
+                  # 1 = New SMT CPUs
+                  # 2 = Transitional SMT
+
+### 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
+
+### 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)
+PREFER_EMPTY 1           # Give empty cells preference in offsping placement?
+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)
+
+### 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
+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?
+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.
+
+### 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_classic_grid/config/default-classic.org
===================================================================
--- development/tests/demes_classic_grid/config/default-classic.org	                        (rev 0)
+++ development/tests/demes_classic_grid/config/default-classic.org	2007-04-27 02:49:56 UTC (rev 1504)
@@ -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_classic_grid/config/environment.cfg
===================================================================
--- development/tests/demes_classic_grid/config/environment.cfg	                        (rev 0)
+++ development/tests/demes_classic_grid/config/environment.cfg	2007-04-27 02:49:56 UTC (rev 1504)
@@ -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_classic_grid/config/events.cfg
===================================================================
--- development/tests/demes_classic_grid/config/events.cfg	                        (rev 0)
+++ development/tests/demes_classic_grid/config/events.cfg	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,16 @@
+# Print all of the standard data files...
+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
+
+# 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_classic_grid/config/instset-classic.cfg
===================================================================
--- development/tests/demes_classic_grid/config/instset-classic.cfg	                        (rev 0)
+++ development/tests/demes_classic_grid/config/instset-classic.cfg	2007-04-27 02:49:56 UTC (rev 1504)
@@ -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_classic_grid/expected/data/archive/100-aaaaa.org
===================================================================
--- development/tests/demes_classic_grid/expected/data/archive/100-aaaaa.org	                        (rev 0)
+++ development/tests/demes_classic_grid/expected/data/archive/100-aaaaa.org	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,134 @@
+# Thu Apr 26 22:11:39 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_classic_grid/expected/data/average.dat
===================================================================
--- development/tests/demes_classic_grid/expected/data/average.dat	                        (rev 0)
+++ development/tests/demes_classic_grid/expected/data/average.dat	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,30 @@
+# Avida Average Data
+# Thu Apr 26 22:11:38 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 1.000000 1.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 
+20 97 389 0.249357 0 100 100 97 0 0 0 0 1 -2.13704 0 0 
+30 97 389 0.249357 0 100 100 97 2 0 0 0.25 2 -1.87486 0 0 
+40 97 388.75 0.249518 0 100 100 97 2.66667 0.125 0 0.375 3 -1.37465 0 0 
+50 97 388.778 0.2495 0 100 100 97 2.25 0.111111 0 0.444444 3.22222 -1.04098 0 0 
+60 97 388.583 0.249625 0 100.083 100 97 1.71429 0 0 0.75 4 -0.199284 0 0 
+70 95.8125 387.188 0.247395 0 100.062 100.062 95.8125 1.45455 0 0 1 4.9375 -0.0818072 0 0 
+80 95.2727 386.318 0.246533 0 100.091 100.091 95.2727 1.375 0.0909091 0 1.45455 5.90909 0.112005 0 0 
+90 94.2917 385.458 0.244507 0 100.083 100.125 94.2917 1.2 0.208333 0 1.625 6.45833 0.487128 0 0 
+100 93.6786 384.607 0.243446 0 100.143 100.143 93.6786 1.27273 0 0 1.78571 6.78571 0.955322 0 0 

Added: development/tests/demes_classic_grid/expected/data/count.dat
===================================================================
--- development/tests/demes_classic_grid/expected/data/count.dat	                        (rev 0)
+++ development/tests/demes_classic_grid/expected/data/count.dat	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,30 @@
+# Avida count data
+# Thu Apr 26 22:11:38 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 1 0 1 1 1 1 0 0 
+10 30 1 1 1 0 0 0 0 0 0 1 1 1 0 0 
+20 60 2 1 1 0 0 0 0 0 0 2 1 2 0 0 
+30 120 4 2 1 0 0 0 0 0 0 3 2 4 0 0 
+40 210 8 3 1 0 0 0 1 0 0 6 4 8 0 0 
+50 240 9 4 1 0 0 0 1 0 0 6 4 9 0 0 
+60 360 12 7 2 0 0 0 0 0 0 6 6 12 0 0 
+70 480 16 11 2 0 0 0 0 0 0 8 9 16 0 0 
+80 660 22 16 3 0 0 0 2 2 0 8 12 22 0 0 
+90 690 24 20 3 0 0 0 5 4 0 6 13 24 0 0 
+100 840 28 22 3 0 0 0 0 0 0 8 15 28 0 0 

Added: development/tests/demes_classic_grid/expected/data/detail-100.pop
===================================================================
--- development/tests/demes_classic_grid/expected/data/detail-100.pop	                        (rev 0)
+++ development/tests/demes_classic_grid/expected/data/detail-100.pop	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,39 @@
+#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 3 9 100 97 389 0.249357 -1 -1 0 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+7 1 2 3 3 100 87 377 0.230769 52 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccmccccccccccccccccccccccyccccccccccccccccutycasvab 
+18 7 2 2 2 101 0 0 0 78 -1 2 rucavccccccccccccccccccccccccccccccccccccccccccccccmcccccctccccccccccccccccycccaccccccccccccutycasvab 
+10 3 1 2 2 100 97 388 0.25 66 -1 2 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgcscccccccccccutycasvab 
+3 1 1 1 3 100 97 388 0.25 40 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgcccccccccccccutycasvab 
+8 2 1 1 2 101 98 391 0.250639 52 -1 2 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccnccccccfcccccccutycasvab 
+4 1 1 1 1 100 97 388 0.25 50 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccecccccccccccccccccccccccccccccccccccccccccutycasvab 
+6 1 1 1 1 100 0 0 0 51 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvaq 
+14 4 1 1 1 100 0 0 0 76 -1 2 rucavcccccccccccccccccccccccccccccccccccccccccccceccccccccccccccccccuccccccccccccccccccccccutycasvab 
+16 9 1 1 1 100 0 0 0 77 -1 3 rucavsccccccccccccccccccccccccccccccccccccccccccceccccccccckcccccccccccccccccccccccccccccccutycasvab 
+19 8 1 1 1 101 0 0 0 78 -1 3 rbcavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccnccccccfcccccccutycasvab 
+20 10 1 1 1 100 0 0 0 79 -1 3 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccjccccccccccccccccgcscccccccccccutycasvab 
+21 2 1 1 1 99 0 0 0 79 -1 2 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccfcccccccutyasvab 
+25 14 1 1 1 100 0 0 0 89 -1 3 rucdvcccccccccccccccccccccccccccccccccccccccccccceccccccccccccccccccuccccccccccccccccccccccutycasvab 
+27 4 2 1 1 100 0 0 0 90 -1 2 rucavcccccccfcccccccccccccccccccccccccccccccccccceccccccccccccccccccccccccccccoccccccccccccutycasvab 
+29 8 1 1 1 101 0 0 0 90 -1 3 rucavccccccccccccccccccccccvcccccccccccccccccccccccccccccccccccccccccccccccccnccccccfcccccccutycasvab 
+30 7 1 1 1 100 0 0 0 90 -1 2 rucavccccccccccccccccccccccccccccccccccccccccccccccmccccccccccccccccccccvcyccccccccccccccccutycasvab 
+31 7 2 1 1 100 0 0 0 91 -1 2 rucavcccccccccccccccccccccccccccccdcccccccccccccnccmccccccccccccccccccccccyccccccccccccccccutycasvab 
+32 7 1 1 1 100 0 0 0 91 -1 2 rucavccccccccccccccccccccccccccccccccccpcccccccccccmccccccccccccccccccccccyccccccccccccccccutycasvab 
+33 3 1 1 1 100 0 0 0 91 -1 2 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgcccccccccucccutycasvab 
+34 1 1 1 1 99 0 0 0 92 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+35 20 3 1 1 101 0 0 0 92 -1 4 rvucavccccccccxccccccccccccccccccccccccccccccccccccccccccccccjccccccccccccccccgcscccccccccccutyjasvab 

Added: development/tests/demes_classic_grid/expected/data/dominant.dat
===================================================================
--- development/tests/demes_classic_grid/expected/data/dominant.dat	                        (rev 0)
+++ development/tests/demes_classic_grid/expected/data/dominant.dat	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,30 @@
+# Avida Dominant Data
+# Thu Apr 26 22:11:38 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 1 0 0 0 0 0 1 100-aaaaa 
+20 0 0 0 0 100 0 0 2 0 0 0 0 0.249357 1 100-aaaaa 
+30 97 389 0.249357 0.00257069 100 100 97 3 0 0 0 0 0.249357 1 100-aaaaa 
+40 97 389 0.249357 0.00257069 100 100 97 5 1 0 0 0 0.25 1 100-aaaaa 
+50 97 389 0.249357 0.00257069 100 100 97 5 1 0 0 0 0.25 1 100-aaaaa 
+60 97 389 0.249357 0.00257069 100 100 97 4 0 0 0 0 0.25 1 100-aaaaa 
+70 97 389 0.249357 0.00257069 100 100 97 5 0 0 0 0 0.250639 1 100-aaaaa 
+80 97 389 0.249357 0.00257069 100 100 97 4 0 0 0 0 0.251295 1 100-aaaaa 
+90 97 389 0.249357 0.00257069 100 100 97 3 1 0 0 0 0.250646 1 100-aaaaa 
+100 97 389 0.249357 0.00257069 100 100 97 3 0 0 0 0 0.250646 1 100-aaaaa 

Added: development/tests/demes_classic_grid/expected/data/historic-100.pop
===================================================================
--- development/tests/demes_classic_grid/expected/data/historic-100.pop	                        (rev 0)
+++ development/tests/demes_classic_grid/expected/data/historic-100.pop	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,19 @@
+#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
+
+2 1 1 0 3 100 97 388 0.25 26 79 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccfcccccccutycasvab 
+9 4 1 0 1 100 0 0 0 64 79 2 rucavcccccccccccccccccccccccccccccccccccccccccccceccccccccckcccccccccccccccccccccccccccccccutycasvab 

Added: development/tests/demes_classic_grid/expected/data/resource.dat
===================================================================
--- development/tests/demes_classic_grid/expected/data/resource.dat	                        (rev 0)
+++ development/tests/demes_classic_grid/expected/data/resource.dat	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,17 @@
+# Avida resource data
+# Thu Apr 26 22:11:38 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_classic_grid/expected/data/stats.dat
===================================================================
--- development/tests/demes_classic_grid/expected/data/stats.dat	                        (rev 0)
+++ development/tests/demes_classic_grid/expected/data/stats.dat	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,26 @@
+# Generic Statistics Data
+# Thu Apr 26 22:11:38 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.0975 0.562358 0.102587 0.826353 0 0 0 0 0 0 
+20 0 0.562358 0.562358 0.826353 0.826353 0 0 0 0 0 0 
+30 0 0.562358 0.562358 0.826353 0.826353 0 0.562335 0 0 0 0 
+40 -0.000644122 0.562358 0.562358 0.826353 0.826353 1 0.900256 0 0 0 0 
+50 -0.000572574 0.562358 0.562358 0.826353 0.826353 1 1.14906 0 0 0 0 
+60 -0.00107331 0.562622 0.562358 0.826956 0.826353 0 1.79176 0 0 0 0 
+70 0.00790021 0.562556 0.562358 0.826806 0.826353 0 2.183 0 0 0 0 
+80 0.0113892 0.562646 0.562358 0.827011 0.826353 0 2.62616 0 0 0 0 
+90 0.0196439 0.562622 0.562358 0.826956 0.826353 3 2.9034 0 0 0 0 
+100 0.0239937 0.56281 0.562358 0.827387 0.826353 0 2.99777 0 0 0 0 

Added: development/tests/demes_classic_grid/expected/data/tasks.dat
===================================================================
--- development/tests/demes_classic_grid/expected/data/tasks.dat	                        (rev 0)
+++ development/tests/demes_classic_grid/expected/data/tasks.dat	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,26 @@
+# Avida tasks data
+# Thu Apr 26 22:11:38 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_classic_grid/expected/data/tasks_exe.dat
===================================================================
--- development/tests/demes_classic_grid/expected/data/tasks_exe.dat	                        (rev 0)
+++ development/tests/demes_classic_grid/expected/data/tasks_exe.dat	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,26 @@
+# Avida tasks execution data
+# Thu Apr 26 22:11:38 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_classic_grid/expected/data/tasks_quality.dat
===================================================================
--- development/tests/demes_classic_grid/expected/data/tasks_quality.dat	                        (rev 0)
+++ development/tests/demes_classic_grid/expected/data/tasks_quality.dat	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,34 @@
+# Avida tasks quality data
+# Thu Apr 26 22:11:38 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_classic_grid/expected/data/time.dat
===================================================================
--- development/tests/demes_classic_grid/expected/data/time.dat	                        (rev 0)
+++ development/tests/demes_classic_grid/expected/data/time.dat	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,18 @@
+# Avida time data
+# Thu Apr 26 22:11:38 2007
+#  1: update
+#  2: avida time
+#  3: average generation
+#  4: num_executed?
+
+0 0.000000 0.000000 30 
+10 0 0 30 
+20 0.0824742 1 60 
+30 0.185567 2 120 
+40 0.28866 3 210 
+50 0.391753 3.22222 240 
+60 0.494845 4 360 
+70 0.598707 4.9375 480 
+80 0.703279 5.90909 660 
+90 0.80832 6.45833 690 
+100 0.914992 6.78571 840 

Added: development/tests/demes_classic_grid/test_list
===================================================================
--- development/tests/demes_classic_grid/test_list	                        (rev 0)
+++ development/tests/demes_classic_grid/test_list	2007-04-27 02:49:56 UTC (rev 1504)
@@ -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_classic_torus/config/avida.cfg
===================================================================
--- development/tests/demes_classic_torus/config/avida.cfg	                        (rev 0)
+++ development/tests/demes_classic_torus/config/avida.cfg	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,217 @@
+#############################################################################
+# 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
+NUM_DEMES 100     # Number of independed groups in the population; 0=off
+RANDOM_SEED 0     # Random number seed (0 for based on time)
+HARDWARE_TYPE 0   # 0 = Original CPUs
+                  # 1 = New SMT CPUs
+                  # 2 = Transitional SMT
+
+### 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
+
+### 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)
+PREFER_EMPTY 1           # Give empty cells preference in offsping placement?
+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)
+
+### 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
+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?
+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.
+
+### 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_classic_torus/config/default-classic.org
===================================================================
--- development/tests/demes_classic_torus/config/default-classic.org	                        (rev 0)
+++ development/tests/demes_classic_torus/config/default-classic.org	2007-04-27 02:49:56 UTC (rev 1504)
@@ -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_classic_torus/config/environment.cfg
===================================================================
--- development/tests/demes_classic_torus/config/environment.cfg	                        (rev 0)
+++ development/tests/demes_classic_torus/config/environment.cfg	2007-04-27 02:49:56 UTC (rev 1504)
@@ -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_classic_torus/config/events.cfg
===================================================================
--- development/tests/demes_classic_torus/config/events.cfg	                        (rev 0)
+++ development/tests/demes_classic_torus/config/events.cfg	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,16 @@
+# Print all of the standard data files...
+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
+
+# 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_classic_torus/config/instset-classic.cfg
===================================================================
--- development/tests/demes_classic_torus/config/instset-classic.cfg	                        (rev 0)
+++ development/tests/demes_classic_torus/config/instset-classic.cfg	2007-04-27 02:49:56 UTC (rev 1504)
@@ -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_classic_torus/expected/data/archive/100-aaaaa.org
===================================================================
--- development/tests/demes_classic_torus/expected/data/archive/100-aaaaa.org	                        (rev 0)
+++ development/tests/demes_classic_torus/expected/data/archive/100-aaaaa.org	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,134 @@
+# Thu Apr 26 22:13:14 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_classic_torus/expected/data/average.dat
===================================================================
--- development/tests/demes_classic_torus/expected/data/average.dat	                        (rev 0)
+++ development/tests/demes_classic_torus/expected/data/average.dat	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,30 @@
+# Avida Average Data
+# Thu Apr 26 22:13:13 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 1.000000 1.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 
+20 97 389 0.249357 0 100 100 97 0 0 0 0 1 -2.13704 0 0 
+30 97 389 0.249357 0 100 100 97 2 0 0 0.25 2 -1.87486 0 0 
+40 97 388.75 0.249518 0 100 100 97 2.66667 0.125 0.125 0.375 3 -0.855175 0 0 
+50 97 388.778 0.2495 0 100 100 97 2.25 0.111111 0 0.444444 3.22222 0.105989 0 0 
+60 97 388.733 0.249529 0 100 100 97 2.14286 0 0 0.6 3.93333 -0.476485 0 0 
+70 95.5714 387.036 0.246867 0 100.036 100 95.5714 1.55556 0 0 0.964286 4.92857 -0.618666 0 0 
+80 93.2979 384.489 0.242009 0 100.128 98.9574 93.2979 1.56667 0.0851064 0.0425532 1.2766 5.97872 -0.599194 0 0 
+90 93.6441 384.831 0.242768 0 100.153 99.2034 93.6441 1.55263 0.169492 0.0508475 1.42373 6.54237 -0.650241 0 0 
+100 94.9577 386.324 0.245491 0 100.169 100.099 94.9577 1.65116 0.028169 0.0140845 1.49296 7.02817 -0.601597 0 0 

Added: development/tests/demes_classic_torus/expected/data/count.dat
===================================================================
--- development/tests/demes_classic_torus/expected/data/count.dat	                        (rev 0)
+++ development/tests/demes_classic_torus/expected/data/count.dat	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,30 @@
+# Avida count data
+# Thu Apr 26 22:13:13 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 1 0 1 1 1 1 0 0 
+10 30 1 1 1 0 0 0 0 0 0 1 1 1 0 0 
+20 60 2 1 1 0 0 0 0 0 0 2 1 2 0 0 
+30 120 4 2 1 0 0 0 0 0 0 3 2 4 0 0 
+40 210 8 3 1 0 0 0 1 0 1 6 4 8 0 0 
+50 240 9 4 1 0 0 0 1 0 0 6 4 9 0 0 
+60 450 15 7 2 0 0 0 0 0 0 9 8 15 0 0 
+70 840 28 18 2 0 0 0 0 0 0 11 15 28 0 0 
+80 1320 47 30 2 0 0 0 4 1 2 19 27 47 0 0 
+90 1530 59 38 3 0 0 0 10 2 3 25 30 59 0 0 
+100 2100 71 43 7 0 0 0 2 1 1 34 37 71 0 0 

Added: development/tests/demes_classic_torus/expected/data/detail-100.pop
===================================================================
--- development/tests/demes_classic_torus/expected/data/detail-100.pop	                        (rev 0)
+++ development/tests/demes_classic_torus/expected/data/detail-100.pop	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,60 @@
+#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 10 16 100 97 389 0.249357 -1 -1 0 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+15 1 1 4 4 100 97 389 0.249357 66 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccsutycasvab 
+13 6 1 3 3 100 97 387 0.250646 65 -1 2 rucavccccccccccccccccccccccccccccccccccccccccckcccccccccccmccccccccccccccccccccccccccccccccutycasvab 
+5 1 1 3 3 100 97 388 0.25 51 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccecccccccccccccccccccccccccccccccccccccccccutycasvab 
+18 2 1 3 3 101 98 391 0.250639 67 -1 2 rucavccccccccccccccccccccpccccccccccccccccccccccccccccccccccccccccccccccccccccccccccfcccccccutycasvab 
+9 1 1 2 3 100 97 388 0.25 63 -1 1 rucavcmccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+8 4 1 2 2 100 78 368 0.211957 62 -1 2 rucavcccccccccccuccccccccccccccccccccccccccccycccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+10 1 1 2 2 100 97 388 0.25 64 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccjcccccccccccccccccccccccccccccccccccccccccccutycasvab 
+20 10 1 2 2 100 0 0 0 76 -1 2 rucavccccccccccccccccccccccccccccccccccccccccccjccccccccccccccccccdccccccccccccccccccccccccutycasvab 
+25 1 1 2 2 100 0 0 0 79 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccpccccccutycasvab 
+26 1 1 2 2 100 0 0 0 79 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccpccccccccccccutycasvab 
+17 2 1 2 2 100 97 388 0.25 66 -1 2 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccscccccccccccfcccccccutycasvab 
+24 17 3 2 2 101 0 0 0 79 -1 3 roucavcccccccccccccccccccccccccaccccccccccccccccccccccccccccccccccccccccscccccccccccfclcccccutycasvab 
+31 16 2 2 2 100 0 0 0 80 -1 3 rucavcccccccccccccccccccccscccccccccccccccccccccccccccccaccccxcccccccccccyciccaccccccccccccutycasvab 
+2 1 1 2 8 100 97 388 0.25 26 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccfcccccccutycasvab 
+7 1 2 1 1 100 87 378 0.230159 53 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccyccccaccccccccccccutycasvab 
+11 5 1 1 1 100 0 0 0 65 -1 2 rucavccccccccccccccccccccccccccccccccccccccccccccecccccccccccccccccccccccccccccccccccccccccutpcasvab 
+14 2 1 1 1 100 0 0 0 65 -1 2 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccfcccccccutycasvsb 
+21 12 4 1 1 102 0 0 0 78 -1 2 aarucavcccccccccccbccccccccccccccccccccccccccccccccccccwcccccccccccccccccccccccmcccccccccccccutycasvab 
+22 1 3 1 1 100 0 0 0 78 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccxcccccccccccccvcccccccccccccccuutycasvab 
+23 1 1 1 1 101 0 0 0 78 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccsccccccccccccccccccccccccutycasvab 
+6 1 1 1 2 100 97 388 0.25 53 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccmccccccccccccccccccccccccccccccccutycasvab 
+28 2 2 1 1 100 0 0 0 79 -1 2 rucavcccccccccccccccccccccccccccccccccccccfccccccccccccccccccccccccccccccccccccncccfcccccccutycasvab 
+29 2 2 1 1 100 0 0 0 79 -1 2 rucagccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccfcccccccutyoasvab 
+32 9 2 1 1 100 0 0 0 89 -1 2 rucavcmcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccrcccccccccccccccccyutycasvab 
+34 13 2 1 1 100 0 0 0 89 -1 3 rucavcccccccccccccccccccfccccccccccccccccccccckcccccccccccmccccrcccccccccccccccccccccccccccutycasvab 
+35 22 3 1 1 100 0 0 0 90 -1 2 rucavccccnccjccccccccccccccccccccccccccccccccccccccccccccccjxcccccccccccccvcccccccccccccccuutycasvab 
+36 6 1 1 1 100 0 0 0 90 -1 2 rucavcccmcccccccccccccccccccccccccccccccccccccccccccccccccmccccccccccccccccccccccccccccccccutycasvab 
+37 8 2 1 1 100 0 0 0 90 -1 3 rucavcccccccccccuccccccccccccccccccccccccccccyccccccccccccccccccccccccccccccccccjmcccccccccutycasvab 
+38 8 1 1 1 100 0 0 0 90 -1 3 rucavcccccccccccuccccccccccccccccccccccccccccycccccccccccccccccrcccccccccccccccccccccccccccutycasvab 
+39 1 1 1 1 100 0 0 0 90 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccmccccccccccccccccccccccccccccccutycasvab 
+40 5 1 1 1 100 0 0 0 90 -1 2 ruchvccccccccccccccccccccccccccccccccccccccccccccecccccccccccccccccccccccccccccccccccccccccutycasvab 
+41 21 4 1 1 103 0 0 0 90 -1 3 aaaarucavcccccccccccbcccccccccccccccccccccccccccccccccccwcccccccccccccccccccccccmcccccccccccccutycasgab 
+42 1 1 1 1 100 0 0 0 91 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccutycasvab 
+43 23 1 1 1 101 0 0 0 91 -1 2 rucuvccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccsccccccccccccccccccccccccutycasvab 
+30 1 1 1 2 100 0 0 0 80 -1 1 rucavcccccccccccccnccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+44 7 1 1 1 100 0 0 0 92 -1 2 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccncccccccccccyccccaccccccccccccutycasvab 
+46 18 1 1 1 101 0 0 0 93 -1 3 rucavcccccclcccccccccccccpccccccccccccccccccccccccccccccccccccccccccccccccccccccccccfcccccccutycasvab 
+16 7 2 1 2 100 96 387 0.248062 66 -1 2 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccaccccccccccccccccyciccaccccccccccccutycasvab 
+47 28 3 1 1 99 0 0 0 93 -1 3 rucavcccccccccccccccccccccccccccccccccccccfccccccccccccccccccccccccccccccaccccncccfcccecccutycasvab 
+48 10 2 1 1 100 0 0 0 99 -1 2 rucavccccccccccccicccccccccccccccccccccccccccccjcccccccccccccccccccccccccccccccccccccccccccctycasvab 
+4 1 1 1 3 100 87 378 0.230159 50 -1 1 rucavccccccccccccccccccccccccccccccccccccccccycccccccccccccccccccccccccccccccccccccccccccccutycasvab 
+49 1 1 1 1 100 0 0 0 100 -1 1 rgcavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab 

Added: development/tests/demes_classic_torus/expected/data/dominant.dat
===================================================================
--- development/tests/demes_classic_torus/expected/data/dominant.dat	                        (rev 0)
+++ development/tests/demes_classic_torus/expected/data/dominant.dat	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,30 @@
+# Avida Dominant Data
+# Thu Apr 26 22:13:13 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 1 0 0 0 0 0 1 100-aaaaa 
+20 0 0 0 0 100 0 0 2 0 0 0 0 0.249357 1 100-aaaaa 
+30 97 389 0.249357 0.00257069 100 100 97 3 0 0 0 0 0.249357 1 100-aaaaa 
+40 97 389 0.249357 0.00257069 100 100 97 5 1 1 0 0 0.25 1 100-aaaaa 
+50 97 389 0.249357 0.00257069 100 100 97 5 1 0 0 0 0.25 1 100-aaaaa 
+60 97 389 0.249357 0.00257069 100 100 97 6 0 0 0 0 0.25 1 100-aaaaa 
+70 97 389 0.249357 0.00257069 100 100 97 8 0 0 0 0 0.25 1 100-aaaaa 
+80 97 389 0.249357 0.00257069 100 100 97 8 1 0 0 0 0.250646 1 100-aaaaa 
+90 97 389 0.249357 0.00257069 100 100 97 9 2 1 0 0 0.250646 1 100-aaaaa 
+100 97 389 0.249357 0.00257069 100 100 97 10 2 1 0 0 0.251295 1 100-aaaaa 

Added: development/tests/demes_classic_torus/expected/data/historic-100.pop
===================================================================
--- development/tests/demes_classic_torus/expected/data/historic-100.pop	                        (rev 0)
+++ development/tests/demes_classic_torus/expected/data/historic-100.pop	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,18 @@
+#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
+
+12 1 1 0 1 100 0 0 0 65 90 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccwcccccccccccccccccccccccccccccccccccccutycasvab 

Added: development/tests/demes_classic_torus/expected/data/resource.dat
===================================================================
--- development/tests/demes_classic_torus/expected/data/resource.dat	                        (rev 0)
+++ development/tests/demes_classic_torus/expected/data/resource.dat	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,17 @@
+# Avida resource data
+# Thu Apr 26 22:13:13 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_classic_torus/expected/data/stats.dat
===================================================================
--- development/tests/demes_classic_torus/expected/data/stats.dat	                        (rev 0)
+++ development/tests/demes_classic_torus/expected/data/stats.dat	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,26 @@
+# Generic Statistics Data
+# Thu Apr 26 22:13:13 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.0975 0.562358 0.102587 0.826353 0 0 0 0 0 0 
+20 0 0.562358 0.562358 0.826353 0.826353 0 0 0 0 0 0 
+30 0 0.562358 0.562358 0.826353 0.826353 0 0.562335 0 0 0 0 
+40 -0.000644122 0.562358 0.562358 0.826353 0.826353 0 0.900256 0 0 0 0 
+50 -0.000572574 0.562358 0.562358 0.826353 0.826353 1 1.14906 0 0 0 0 
+60 -0.000687049 0.562358 0.562358 0.826353 0.826353 0 1.62167 0 0 0 0 
+70 0.0100366 0.562471 0.562358 0.826612 0.826353 0 2.54004 0 0 0 0 
+80 0.0299137 0.562762 0.562358 0.827277 0.826353 2 3.17175 0 0 0 0 
+90 0.0267817 0.562841 0.562358 0.827457 0.826353 5 3.41918 0 0 0 0 
+100 0.015628 0.562893 0.562358 0.827577 0.826353 1 3.52576 0 0 0 0 

Added: development/tests/demes_classic_torus/expected/data/tasks.dat
===================================================================
--- development/tests/demes_classic_torus/expected/data/tasks.dat	                        (rev 0)
+++ development/tests/demes_classic_torus/expected/data/tasks.dat	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,26 @@
+# Avida tasks data
+# Thu Apr 26 22:13:13 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_classic_torus/expected/data/tasks_exe.dat
===================================================================
--- development/tests/demes_classic_torus/expected/data/tasks_exe.dat	                        (rev 0)
+++ development/tests/demes_classic_torus/expected/data/tasks_exe.dat	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,26 @@
+# Avida tasks execution data
+# Thu Apr 26 22:13:13 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_classic_torus/expected/data/tasks_quality.dat
===================================================================
--- development/tests/demes_classic_torus/expected/data/tasks_quality.dat	                        (rev 0)
+++ development/tests/demes_classic_torus/expected/data/tasks_quality.dat	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,34 @@
+# Avida tasks quality data
+# Thu Apr 26 22:13:13 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_classic_torus/expected/data/time.dat
===================================================================
--- development/tests/demes_classic_torus/expected/data/time.dat	                        (rev 0)
+++ development/tests/demes_classic_torus/expected/data/time.dat	2007-04-27 02:49:56 UTC (rev 1504)
@@ -0,0 +1,18 @@
+# Avida time data
+# Thu Apr 26 22:13:13 2007
+#  1: update
+#  2: avida time
+#  3: average generation
+#  4: num_executed?
+
+0 0.000000 0.000000 30 
+10 0 0 30 
+20 0.0824742 1 60 
+30 0.185567 2 120 
+40 0.28866 3 210 
+50 0.391753 3.22222 240 
+60 0.494845 3.93333 450 
+70 0.59903 4.92857 840 
+80 0.705207 5.97872 1320 
+90 0.812301 6.54237 1530 
+100 0.918126 7.02817 2100 

Added: development/tests/demes_classic_torus/test_list
===================================================================
--- development/tests/demes_classic_torus/test_list	                        (rev 0)
+++ development/tests/demes_classic_torus/test_list	2007-04-27 02:49:56 UTC (rev 1504)
@@ -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