[Avida-SVN] r1422 - in development: . source/main tests tests/_testrunner tests/default_classic_100u tests/default_classic_100u/config tests/default_classic_100u/expected tests/default_classic_100u/expected/data tests/default_classic_100u/expected/data/archive tests/default_transsmt_100u tests/default_transsmt_100u/config tests/default_transsmt_100u/expected tests/default_transsmt_100u/expected/data tests/default_transsmt_100u/expected/data/archive
brysonda at myxo.css.msu.edu
brysonda at myxo.css.msu.edu
Thu Mar 22 19:54:38 PDT 2007
Author: brysonda
Date: 2007-03-22 22:54:38 -0400 (Thu, 22 Mar 2007)
New Revision: 1422
Added:
development/run_tests
development/tests/
development/tests/_testrunner/
development/tests/_testrunner/testrunner.cfg
development/tests/_testrunner/testrunner.py
development/tests/default_classic_100u/
development/tests/default_classic_100u/config/
development/tests/default_classic_100u/config/avida.cfg
development/tests/default_classic_100u/config/default-classic.org
development/tests/default_classic_100u/config/environment.cfg
development/tests/default_classic_100u/config/events.cfg
development/tests/default_classic_100u/config/instset-classic.cfg
development/tests/default_classic_100u/expected/
development/tests/default_classic_100u/expected/data/
development/tests/default_classic_100u/expected/data/archive/
development/tests/default_classic_100u/expected/data/archive/100-aaaaa.org
development/tests/default_classic_100u/expected/data/average.dat
development/tests/default_classic_100u/expected/data/count.dat
development/tests/default_classic_100u/expected/data/detail-100.pop
development/tests/default_classic_100u/expected/data/dominant.dat
development/tests/default_classic_100u/expected/data/historic-100.pop
development/tests/default_classic_100u/expected/data/resource.dat
development/tests/default_classic_100u/expected/data/stats.dat
development/tests/default_classic_100u/expected/data/tasks.dat
development/tests/default_classic_100u/expected/data/tasks_exe.dat
development/tests/default_classic_100u/expected/data/tasks_quality.dat
development/tests/default_classic_100u/expected/data/time.dat
development/tests/default_classic_100u/test_list
development/tests/default_transsmt_100u/
development/tests/default_transsmt_100u/config/
development/tests/default_transsmt_100u/config/avida.cfg
development/tests/default_transsmt_100u/config/default-transsmt.org
development/tests/default_transsmt_100u/config/environment.cfg
development/tests/default_transsmt_100u/config/events.cfg
development/tests/default_transsmt_100u/config/instset-transsmt.cfg
development/tests/default_transsmt_100u/expected/
development/tests/default_transsmt_100u/expected/data/
development/tests/default_transsmt_100u/expected/data/archive/
development/tests/default_transsmt_100u/expected/data/archive/100-aaaaa.org
development/tests/default_transsmt_100u/expected/data/average.dat
development/tests/default_transsmt_100u/expected/data/count.dat
development/tests/default_transsmt_100u/expected/data/detail-100.pop
development/tests/default_transsmt_100u/expected/data/dominant.dat
development/tests/default_transsmt_100u/expected/data/historic-100.pop
development/tests/default_transsmt_100u/expected/data/resource.dat
development/tests/default_transsmt_100u/expected/data/stats.dat
development/tests/default_transsmt_100u/expected/data/tasks.dat
development/tests/default_transsmt_100u/expected/data/tasks_exe.dat
development/tests/default_transsmt_100u/expected/data/tasks_quality.dat
development/tests/default_transsmt_100u/expected/data/time.dat
development/tests/default_transsmt_100u/test_list
Modified:
development/source/main/cInstruction.cc
development/source/main/cStats.cc
Log:
Add intial setup of TestRunner v1.0 into development branch. Also add two basic consistency tests, 100 update fresh start runs for 'classic' and 'transsmt' hardware types.
Added: development/run_tests
===================================================================
--- development/run_tests 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/run_tests 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+python tests/_testrunner/testrunner.py $@ ---testrunner-name=./run_tests
+
Property changes on: development/run_tests
___________________________________________________________________
Name: svn:executable
+ *
Modified: development/source/main/cInstruction.cc
===================================================================
--- development/source/main/cInstruction.cc 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/source/main/cInstruction.cc 2007-03-23 02:54:38 UTC (rev 1422)
@@ -51,4 +51,4 @@
else if (symbol >= '0' && symbol <= '9') retval = symbol - '0' + 52;
else retval = 254;
return retval;
-}
\ No newline at end of file
+}
Modified: development/source/main/cStats.cc
===================================================================
--- development/source/main/cStats.cc 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/source/main/cStats.cc 2007-03-23 02:54:38 UTC (rev 1422)
@@ -47,11 +47,11 @@
, avida_time(0)
, data_manager(this, "population_data")
, rave_true_replication_rate( 500 )
- , entropy(0)
- , species_entropy(0)
- , energy(0)
- , dom_fidelity(0)
- , ave_fidelity(0)
+ , entropy(0.0)
+ , species_entropy(0.0)
+ , energy(0.0)
+ , dom_fidelity(0.0)
+ , ave_fidelity(0.0)
, max_viable_fitness(0)
, dom_genotype(NULL)
, dom_merit(0)
Added: development/tests/_testrunner/testrunner.cfg
===================================================================
--- development/tests/_testrunner/testrunner.cfg 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/_testrunner/testrunner.cfg 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,14 @@
+[testrunner]
+builddir = cbuild
+mode = local
+svn = svn
+svnversion = svnversion
+svnmetadir = .svn
+testdir = tests
+
+[main]
+app = %(builddir)s/work/avida
+
+[performance]
+margin = .05
+repeat = 5
Added: development/tests/_testrunner/testrunner.py
===================================================================
--- development/tests/_testrunner/testrunner.py 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/_testrunner/testrunner.py 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,1005 @@
+#!/usr/bin/python
+
+# Copyright 2007 David Michael Bryson, all rights reserved.
+# http://www.programerror.com/
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following
+# disclaimer in the documentation and/or other materials provided
+# with the distribution.
+# 3. Neither the name of David Michael Bryson, nor the names of
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY DAVID MICHAEL BRYSON AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DAVID
+# MICHAEL BRYSON OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+# OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+import ConfigParser
+import difflib
+import dircache
+import getopt
+import os
+import popen2
+import shutil
+import string
+import sys
+import tempfile
+import threading
+import time
+import xml.dom.minidom
+
+
+# This file has been formatted for editors/terminals 125 characters wide
+
+
+# Global Constants
+# ---------------------------------------------------------------------------------------------------------------------------
+TESTRUNNER_VERSION = "1.0"
+TESTRUNNER_COPYRIGHT = "2007"
+
+TRUE_STRINGS = ("y","Y","yes","Yes","true","True","1")
+RESAVAIL = True
+
+# -- Directory/Filename Definitions
+CONFIGDIR = "config"
+EXPECTDIR = "expected"
+PERFDIR = "perf~" # subversion, by default, ignores files/dirs with ~ at the end
+TEST_LIST = "test_list"
+PERF_BASE = "baseline"
+
+
+# Global Variables
+# ---------------------------------------------------------------------------------------------------------------------------
+cfg = None # ConfigParser.ConfigParser
+settings = {} # {string:string}
+tmpdir = None # string
+
+
+
+# Conditional Imports
+# ---------------------------------------------------------------------------------------------------------------------------
+try:
+ import resource
+except ImportError:
+ RESAVAIL = False
+
+
+
+# Global Helper Functions
+# ---------------------------------------------------------------------------------------------------------------------------
+
+# void usage() {
+def usage():
+ global settings
+ usagestr = """
+Usage: %(_testrunner_name)s [options] [testname ...]
+
+ Runs the specified tests. If no tests are specified all available tests will
+ be run and new expected results generated, where applicable.
+
+ Options:
+ -h | --help
+ Display this message
+
+ --builddir=dir [%(builddir)s]
+ Set the path to the build directory.
+
+ --disable-svn
+ Disable all Subversion usage.
+
+ -f | --force-perf
+ Force active tests to be treated as peformance tests, regardless of
+ individual test configuration.
+
+ -j number [%(cpus)d]
+ Set the number of concurrent tests to run. i.e. - the number of CPUs
+ that are availabile.
+
+ -l | --list-tests
+ List all available tests and exits. Tests that will require new
+ expected results will have an asterisk preceeding the name.
+
+ --long-tests
+ Run tests that have been marked as 'long' running.
+
+ --mode=option [%(mode)s]
+ Set the test runner mode. Options are 'local', 'master', and 'slave'.
+
+ Local mode generates expected results and adds them to the repository,
+ if subversion metadata has been found. Master mode does the same as
+ local, but also commits the generated expected results automatically.
+ Slave mode disables expected results generation completely.
+
+ -p | --run-perf-tests
+ Run available performance tests.
+
+ --reset-perf-base
+ Reset performance test baseline results. Old baseline results are
+ saved in the 'perf' directory.
+
+ --skip-tests
+ Do not run tests. Only generate new results, where applicable.
+
+ -s path | --svn=path [%(svn)s]
+ Set the path to the Subversion command line utility.
+
+ --svnversion=path [%(svnversion)s]
+ Set the path to the Subversion 'svnversion' command line utility.
+
+ --svnmetadir=dir [%(svnmetadir)s]
+ Set the name of the Subversion metadata directory.
+
+ --testdir=dir [%(testdir)s]
+ Set the path to the directory containing tests.
+
+ -v | --verbose
+ Enable verbose output, showing all test output.
+
+ --version
+ Show version information.
+""" % settings
+ print usagestr
+# } // End of usage()
+
+
+
+# void version() {
+def version():
+ global TESTRUNNER_VERSION, TESTRUNNER_COPYRIGHT
+ versionstr = """
+TestRunner v%s
+Copyright %s David Michael Bryson, all rights reserved.
+
+This software is open source, subject to certain conditions.
+See the supplied license for details.
+
+http://www.programerror.com
+""" % (TESTRUNNER_VERSION, TESTRUNNER_COPYRIGHT)
+ print versionstr
+# } // End of version()
+
+
+
+# // Calculate the median of a sequence
+# int med(int[] seq) {
+def med(seq):
+ seq.sort()
+ idx = len(seq) / 2
+ if len(seq) % 2 == 1: return seq[idx]
+ else: return (seq[idx] + seq[idx - 1]) / 2
+# } // End of med()
+
+
+
+# Main Test Class - does the actual work for performing individual tests and reporting results
+# ---------------------------------------------------------------------------------------------------------------------------
+
+# class cTest {
+class cTest:
+ NOTFOUND = "file not found"
+ DONOTMATCH = "content does not match"
+
+
+ # cTest::cTest(string name, string tdir) {
+ def __init__(self, name, tdir):
+ global settings, TRUE_STRINGS, RESAVAIL, EXPECTDIR, PERFDIR, TEST_LIST, PERF_BASE
+ self.name = name
+ self.tdir = tdir
+
+ if os.path.exists(os.path.join(tdir, settings["svnmetadir"])) and not settings.has_key("disable-svn"): self.usesvn = True
+ else: self.usesvn = False
+
+ if settings.has_key("skip-tests"): self.skip = True
+ else: self.skip = False
+
+ self.cfg = ConfigParser.ConfigParser(settings)
+ self.cfg.read([os.path.join(tdir, TEST_LIST)])
+
+ expectdir = os.path.join(tdir, EXPECTDIR)
+ if os.path.exists(expectdir) and os.path.isdir(expectdir): self.has_expected = True
+ else: self.has_expected = False
+
+ perfdir = os.path.join(tdir, PERFDIR)
+ if os.path.exists(perfdir) and os.path.isdir(perfdir) and os.path.isfile(os.path.join(perfdir, PERF_BASE)):
+ self.has_perf_base = True
+ else: self.has_perf_base = False
+
+ if self.has_perf_base and settings.has_key("reset-perf-base"):
+ try:
+ rev = "exported"
+ if self.usesvn:
+ sverp = os.popen("cd %s; %s" % (self.tdir, settings["svnversion"]))
+ rev = sverp.readline().strip()
+ sverp.close()
+ if rev == "": rev = "exported"
+
+ oname = "perf-%s-reset-%s" % (time.strftime("%Y-%m-%d-%H.%M.%S"), rev)
+
+ shutil.move(os.path.join(perfdir, PERF_BASE), os.path.join(perfdir, oname))
+ print "%s : performance baseline reset" % name
+ except (IOError, OSError, shutil.Error): pass
+
+
+ self.app = self.getSetting("main", "app")
+ self.args = self.getConfig("main", "args", "")
+
+ if self.getConfig("consistency", "enabled", "yes") in TRUE_STRINGS: self.consistency_enabled = True
+ else: self.consistency_enabled = False
+ if self.getConfig("performance", "enabled", "no") in TRUE_STRINGS and RESAVAIL: self.performance_enabled = True
+ else: self.performance_enabled = False
+
+ self.success = True
+ self.result = "passed"
+ self.exitcode = 0
+ self.errors = []
+
+ self.psuccess = True
+ self.presult = "passed"
+ # } // End of cTest::cTest()
+
+
+
+ # string cTest::getConfig(string sect, string opt, string default)
+ def getConfig(self, sect, opt, default):
+ global settings
+ try:
+ return self.cfg.get(sect, opt, False, settings)
+ except:
+ return default
+ # } // End of cTest::getConfig()
+
+
+
+ # string cTest::getSetting(string sect, string opt) {
+ def getSetting(self, sect, opt):
+ global settings
+ try:
+ return self.cfg.get(sect, opt, False, settings)
+ except:
+ return settings[opt]
+ # } // End of cTest::getSetting()
+
+
+
+ # bool cTest::isConsistencyTest() {
+ def isConsistencyTest(self): return self.consistency_enabled
+ # } // End of isConsistencyTest()
+
+ # bool cTest::isPerformanceTest() {
+ def isPerformanceTest(self): return self.performance_enabled
+ # } // End of isPerformanceTest()
+
+
+
+ # void cTest::runConsistencyTest() {
+ def runConsistencyTest(self, dolongtest):
+ global settings, tmpdir, CONFIGDIR, EXPECTDIR
+
+ if not self.isConsistencyTest():
+ self.result = "skipped (not a consistency test)"
+ return
+
+ # If no expected results exist and in slave mode, or in master mode and
+ # subversion usage has been disabled then skip execution
+ if not self.has_expected and (settings["mode"] == "slave" or \
+ (settings["mode"] == "master" and not self.usesvn)):
+ self.result = "skipped (no expected results)"
+ return
+
+ if self.has_expected and self.skip:
+ self.result = "skipped"
+ return
+
+ if self.getConfig("consistency", "long", "no") in TRUE_STRINGS and not dolongtest:
+ self.result = "skipped (long)"
+ return
+
+ confdir = os.path.join(self.tdir, CONFIGDIR)
+ rundir = os.path.join(tmpdir, self.name)
+ expectdir = os.path.join(self.tdir, EXPECTDIR)
+ svnmetadir = settings["svnmetadir"]
+
+ # Create test directory and populate with config
+ try:
+ shutil.copytree(confdir, rundir)
+ except (IOError, OSError):
+ self.success = False
+ return
+
+
+ # Remove copied svn metadata directories
+ for root, dirs, files in os.walk(rundir):
+ if svnmetadir in dirs: dirs.remove(svnmetadir)
+ try:
+ shutil.rmtree(os.path.join(root, svnmetadir))
+ except (IOError, OSError): pass
+
+
+ # Run test app, capturing output and exitcode
+ p = popen2.Popen4("cd %s; %s %s" % (rundir, self.app, self.args))
+
+ # Process output from app
+ # Note: must at least swallow app output so that the process output buffer does not fill and block execution
+ if settings.has_key("verbose"): print
+ for line in p.fromchild:
+ if settings.has_key("verbose"):
+ sys.stdout.write("%s output: %s" % (self.name, line))
+ sys.stdout.flush()
+
+ self.exitcode = p.wait()
+
+
+ # Non-zero exit code indicates failure, set so and return
+ if self.exitcode != 0:
+ self.success = False
+ try:
+ shutil.rmtree(rundir, True) # Clean up test directory
+ except (IOError, OSError): pass
+ return
+
+
+ # Build dictionary of config structure
+ confstruct = {}
+ for root, dirs, files in os.walk(confdir):
+ if svnmetadir in dirs: dirs.remove(svnmetadir)
+ for file in files:
+ path = os.path.abspath(os.path.join(root, file))
+ key = path[len(confdir) + 1:] # remove confdir from path
+ confstruct[key] = path
+
+
+ # If no expected results exist, defer processing of new expected results to results phase
+ if not self.has_expected:
+ self.confstruct = confstruct
+ return
+
+ # Build dicitonary of expected structure
+ expectstruct = {}
+ for root, dirs, files in os.walk(expectdir):
+ if svnmetadir in dirs: dirs.remove(svnmetadir)
+ for file in files:
+ path = os.path.abspath(os.path.join(root, file))
+ key = path[len(expectdir) + 1:] # remove confdir from path
+ expectstruct[key] = [path, False, cTest.NOTFOUND]
+
+ # Traverse results, comparing with expected
+ for root, dirs, files in os.walk(rundir):
+ for file in files:
+ path = os.path.abspath(os.path.join(root, file))
+ key = path[len(rundir) + 1:] # remove confdir from path
+ if expectstruct.has_key(key):
+ # string[] getStippedLines(string filename) {
+ def getStrippedLines(filename):
+ fp = open(filename, "U")
+ filelines = fp.readlines()
+ fp.close()
+
+ retlines = []
+ for line in filelines:
+ line = string.lstrip(line)
+ if len(line) != 0 and line[0] != "#": retlines.append(line)
+ return retlines
+ # } // End of getStrippedLines()
+
+ # Generate the diff between the two files, ignoring comments and blank lines
+ differ = difflib.Differ()
+ elines = getStrippedLines(path)
+ tlines = getStrippedLines(expectstruct[key][0])
+ diff = list(differ.compare(elines, tlines))
+
+ match = True
+ for line in diff:
+ if line[0] != ' ':
+ expectstruct[key][2] = cTest.DONOTMATCH
+ match = False
+ break
+
+ expectstruct[key][1] = match
+
+ for key in expectstruct.keys():
+ entry = expectstruct[key]
+ if not entry[1]:
+ self.errors.append("%s : %s" % (key, entry[2]))
+ self.success = False
+
+ # Clean up test directory
+ try:
+ shutil.rmtree(rundir, True)
+ except (IOError, OSError): pass
+ # } // End of cTest::runConsistencyTest()
+
+
+
+ # void cTest::runPerformanceTest() {
+ def runPerformanceTest(self, dolongtest):
+ global settings, tmpdir, CONFIGDIR, PERFDIR, TRUE_STRINGS, PERF_BASE
+
+ if self.has_perf_base and self.skip:
+ self.presult = "skipped"
+ return
+
+ if self.getConfig("performance", "long", "no") in TRUE_STRINGS and not dolongtest:
+ self.presult = "skipped (long)"
+ return
+
+ confdir = os.path.join(self.tdir, CONFIGDIR)
+ rundir = os.path.join(tmpdir, self.name)
+ perfdir = os.path.join(self.tdir, PERFDIR)
+ svnmetadir = settings["svnmetadir"]
+
+ # Create test directory and populate with config
+ try:
+ shutil.copytree(confdir, rundir)
+ except (IOError, OSError):
+ self.psuccess = False
+ self.presult = "error occured creating run directory"
+ return
+
+
+ # Remove copied svn metadata directories
+ for root, dirs, files in os.walk(rundir):
+ if svnmetadir in dirs: dirs.remove(svnmetadir)
+ try:
+ shutil.rmtree(os.path.join(root, svnmetadir))
+ except (IOError, OSError): pass
+
+
+ # Run warm up
+ p = popen2.Popen4("cd %s; %s %s" % (rundir, self.app, self.args))
+
+ # Process output from app
+ # Note: must at least swallow app output so that the process output buffer does not fill and block execution
+ if settings.has_key("verbose"): print
+ for line in p.fromchild:
+ if settings.has_key("verbose"):
+ sys.stdout.write("%s output: %s" % (self.name, line))
+ sys.stdout.flush()
+
+ exitcode = p.wait()
+
+ # Non-zero exit code indicates failure, set so and return
+ if exitcode != 0:
+ try:
+ shutil.rmtree(rundir, True) # Clean up test directory
+ except (IOError, OSError): pass
+ self.psuccess = False
+ self.presult = "test app returned non-zero exit code"
+ return
+
+
+ # Run test X times, take min value
+ times = []
+ for i in range(settings["perf_repeat"]):
+ res_start = resource.getrusage(resource.RUSAGE_CHILDREN)
+
+ # Run test app, capturing output and exitcode
+ p = popen2.Popen4("cd %s; %s %s" % (rundir, self.app, self.args))
+
+ # Process output from app
+ # Note: must at least swallow app output so that the process output buffer does not fill and block execution
+ if settings.has_key("verbose"): print
+ for line in p.fromchild:
+ if settings.has_key("verbose"):
+ sys.stdout.write("%s output: %s" % (self.name, line))
+ sys.stdout.flush()
+
+ exitcode = p.wait()
+ res_end = resource.getrusage(resource.RUSAGE_CHILDREN)
+
+ # Non-zero exit code indicates failure, set so and return
+ if exitcode != 0:
+ try:
+ shutil.rmtree(rundir, True) # Clean up test directory
+ except (IOError, OSError): pass
+ self.psuccess = False
+ self.presult = "test app returned non-zero exit code"
+ return
+
+ times.append(res_end.ru_utime - res_start.ru_utime)
+
+
+ # Load baseline results
+ baseline = 0.0
+ basepath = os.path.join(perfdir, PERF_BASE)
+ if self.has_perf_base:
+ try:
+ fp = open(basepath, "r")
+ line = fp.readline()
+ baseline = float(line.split(',')[0].strip())
+ fp.close()
+ except (IOError):
+ self.has_perf_base = False
+
+
+ tmin = min(times)
+ tmax = max(times)
+ tave = sum(times) / len(times)
+ tmed = med(times)
+
+ # If no baseline results exist, write out results
+ if not self.has_perf_base:
+ try:
+ if not os.path.exists(perfdir):
+ os.mkdir(perfdir)
+ if not os.path.isdir(perfdir):
+ try:
+ shutil.rmtree(rundir, True) # Clean up test directory
+ except (IOError, OSError): pass
+ self.psuccess = False
+ self.presult = "unable to write out baseline, file exists"
+ return
+
+ fp = open(basepath, "w")
+ fp.write("%f,%f,%f,%f\n" % (tmin, tmax, tave, tmed))
+ fp.flush()
+ fp.close()
+ except (IOError):
+ try:
+ shutil.rmtree(rundir, True) # Clean up test directory
+ except (IOError, OSError): pass
+ self.psuccess = False
+ self.presult = "error occurred writing baseline results"
+ return
+
+ try:
+ shutil.rmtree(rundir, True) # Clean up test directory
+ except (IOError, OSError): pass
+ self.presult = "new baseline - min: %3.4f max: %3.4f ave: %3.4f med: %3.4f" % (tmin, tmax, tave, tmed)
+ return
+
+ # Compare results with baseline
+ margin = settings["perf_margin"] * baseline
+ umargin = baseline + margin
+ lmargin = baseline - margin
+
+ if tmin > umargin:
+ self.psuccess = False
+ self.presult = "failed - base: %3.4f test: %3.4f" % (baseline, tmin)
+ elif tmin < lmargin:
+ # new baseline, move old baseline and write out new results
+ try:
+ rev = "exported"
+ if self.usesvn:
+ sverp = os.popen("cd %s; %s" % (self.tdir, settings["svnversion"]))
+ rev = sverp.readline().strip()
+ sverp.close()
+ if rev == "": rev = "exported"
+
+ oname = "perf-%s-prev-%s" % (time.strftime("%Y-%m-%d-%H.%M.%S"), rev)
+
+ shutil.move(basepath, os.path.join(perfdir, oname))
+
+ fp = open(basepath, "w")
+ fp.write("%f,%f,%f,%f\n" % (tmin, tmax, tave, tmed))
+ fp.flush()
+ fp.close()
+ except (IOError, OSError, shutil.Error):
+ try:
+ shutil.rmtree(rundir, True) # Clean up test directory
+ except (IOError, OSError): pass
+ self.presult = "exceeded - base: %3.4f test: %3.4f - failed to update" % (baseline, tmin)
+ return
+
+ self.presult = "exceeded - base: %3.4f test: %3.4f - updated baseline" % (baseline, tmin)
+
+ # Clean up test directory
+ try:
+ shutil.rmtree(rundir, True)
+ except (IOError, OSError): pass
+ # } // End of cTest::runPerformanceTest()
+
+
+
+ # string cTest::getRepositoryPath(string ) {
+ def getRepositoryPath(self):
+ global settings
+
+ ifp = os.popen("%s info --xml %s" % (settings["svn"], settings["testdir"]))
+ doc = xml.dom.minidom.parse(ifp)
+ if doc.documentElement.tagName != "info": return ""
+
+ urltags = doc.getElementsByTagName("url")
+ if len(urltags) < 1 or urltags[0].firstChild.nodeType != urltags[0].firstChild.TEXT_NODE: return ""
+ return urltags[0].firstChild.data
+ # } // End of cTest::getRepositoryPath()
+
+
+
+ # bool cTest::handleNewExpected() {
+ def handleNewExpected(self):
+ global settings, EXPECTDIR
+
+ if settings["mode"] == "slave": return True
+
+ rundir = os.path.join(tmpdir, self.name)
+ expectdir = os.path.join(self.tdir, EXPECTDIR)
+
+ svn = settings["svn"]
+
+ if settings["mode"] == "master":
+ if not self.usesvn: return True
+ svndir = os.path.join(tmpdir, "_svn_tests")
+ if not os.path.exists(svndir):
+ ecode = os.spawnlp(os.P_WAIT, svn, svn, "checkout", "-q", self.getRepositoryPath(), svndir)
+ if ecode != 0: return False
+ expectdir = os.path.join(svndir, self.name, EXPECTDIR)
+
+ try:
+ shutil.copytree(rundir, expectdir)
+ except (IOError, OSError):
+ return False
+
+ for cfile in self.confstruct.keys():
+ try:
+ os.remove(os.path.join(expectdir, cfile))
+ except OSError, e:
+ print "Warning: failed to remove conf file (%s) from expected" % cfile
+ print " -- root cause: %s" % e
+ try:
+ shutil.rmtree(rundir, True) # Clean up test directory
+ except (IOError, OSError): pass
+ if self.usesvn:
+ ecode = os.spawnlp(os.P_WAIT, svn, svn, "add", expectdir)
+ if ecode != 0: return False
+
+ return True
+
+ # } // End of cTest::handleNewExpected()
+
+
+
+ # bool cTest::reportConsistencyResults() {
+ def reportConsistencyResults(self):
+ global settings
+ print "%s :" % self.name,
+ if self.success:
+ if self.has_expected:
+ print self.result
+ else:
+ if self.handleNewExpected():
+ if settings["mode"] == "slave":
+ print "skipped (no expected results)"
+ else:
+ print "new expected results generated"
+ else:
+ print "unable to process new expected results"
+ self.success = False
+ else:
+ print "failed\n"
+ if self.exitcode != 0:
+ print "exit code: %d" % self.exitcode
+ else:
+ print "output variance(s):"
+ for err in self.errors: print err
+ print "\n"
+
+ return self.success
+ # } // End of cTest::reportConsistencyResults()
+
+
+
+ # bool cTest::reportPerformanceResults() {
+ def reportPerformanceResults(self):
+ print "%s : %s" % (self.name, self.presult)
+ return self.psuccess
+ # } // End of cTest::reportPerformanceResults()
+
+
+
+ # void cTest::describe() {
+ def describe(self):
+ if self.has_expected: print " ",
+ else: print "* ",
+ print self.name
+ # } // End of cTest::describe()
+
+# } // End of class cTest
+
+
+
+# Main Test Running Functions - subroutines called by main to do the testing work
+# ---------------------------------------------------------------------------------------------------------------------------
+
+# (int, int) runConsistencyTests(cTest[] tests) {
+def runConsistencyTests(alltests, dolongtests):
+ global settings, tmpdir
+
+ tests = []
+ for test in alltests:
+ if test.isConsistencyTest(): tests.append(test)
+
+ if len(tests) == 0:
+ print "No Consistency Tests Available (or Specified)."
+ return (0, 0)
+
+ print "\nRunning Consistency Tests..."
+
+ # Run Tests
+ sem = threading.BoundedSemaphore(settings["cpus"])
+ ti = 0
+ sys.stdout.write("Performing Test:")
+ sys.stdout.flush()
+ for test in tests:
+ # void runTestWrapper(cTest test, Semaphore sem) {
+ def runTestWrapper(test, sem):
+ test.runConsistencyTest(dolongtests)
+ sem.release()
+ # } // End of runTestWrapper()
+
+ sem.acquire()
+ ti += 1
+ sys.stdout.write("\rPerforming Test: % 4d of %d" % (ti, len(tests)))
+ sys.stdout.flush()
+ tthread = threading.Thread(target=runTestWrapper, args=(test, sem))
+ tthread.start()
+
+ for i in range(settings["cpus"]): sem.acquire()
+
+ sys.stdout.write("\n\n")
+ sys.stdout.flush()
+
+
+ # Report Results
+ success = 0
+ fail = 0
+ for test in tests:
+ if test.reportConsistencyResults(): success += 1
+ else: fail += 1
+
+ svndir = os.path.join(tmpdir, "_svn_tests")
+ if os.path.exists(svndir) and not settings.has_key("disable-svn"):
+ print "\nAdding new expected results to the repository..."
+ svn = settings["svn"]
+ ecode = os.spawnlp(os.P_WAIT, svn, svn, "commit", svndir, "-m", "Adding new expected results.")
+ if ecode != 0: print "Error: Failed to add new expected results."
+
+ return (success, fail)
+# } // End of runConsistencyTests()
+
+
+
+# (int, int) runPerformanceTests(cTest[] tests) {
+def runPerformanceTests(alltests, dolongtests, force):
+ global settings, tmpdir
+
+ tests = []
+ if force: tests = alltests
+ else:
+ for test in alltests:
+ if test.isPerformanceTest(): tests.append(test)
+
+ if len(tests) == 0:
+ print "No Performance Tests Available (or Specified)."
+ return (0, 0)
+
+ print "\nRunning Performance Tests..."
+
+ # Run Tests
+ ti = 0
+ sys.stdout.write("Performing Test:")
+ sys.stdout.flush()
+ for test in tests:
+ ti += 1
+ sys.stdout.write("\rPerforming Test: % 4d of %d" % (ti, len(tests)))
+ sys.stdout.flush()
+ test.runPerformanceTest(dolongtests)
+
+ sys.stdout.write("\n\n")
+ sys.stdout.flush()
+
+
+ # Report Results
+ success = 0
+ fail = 0
+ for test in tests:
+ if test.reportPerformanceResults(): success += 1
+ else: fail += 1
+
+ return (success, fail)
+# } // End of runPerformanceTests()
+
+
+
+# Main - load configuration and call the workhorse routines
+# ---------------------------------------------------------------------------------------------------------------------------
+
+# int main(string[] argv) {
+def main(argv):
+ global cfg, settings, tmpdir, CONFIGDIR
+
+ scriptdir = os.path.abspath(os.path.dirname(argv[0]))
+
+ # Read Configuration File
+ cfg = ConfigParser.ConfigParser(settings)
+ cfg.read([os.path.join(scriptdir, "testrunner.cfg")])
+
+
+ # getConfig - embedded function to wrap loading configuration settings w/defaults
+ # -------------------------------------------------------------------------------
+ # string getConfig(string sect, string opt, string default) {
+ def getConfig(sect, opt, default):
+ try:
+ global cfg, settings
+ val = cfg.get(sect, opt, False, settings)
+ return val
+ except:
+ return default
+ # } // End of getConfig()
+
+
+ # Setup Global Settings
+ # - settings that begin with an underscore (i.e. _testrunner_name) are for internal use and are not intended for
+ # use as variables in test_list configuration files
+ settings["builddir"] = getConfig("testrunner", "builddir", "build")
+ settings["mode"] = getConfig("testrunner", "mode", "local")
+ settings["svn"] = getConfig("testrunner", "svn", "svn")
+ settings["svnversion"] = getConfig("testrunner", "svnversion", "svnversion")
+ settings["svnmetadir"] = getConfig("testrunner", "svnmetadir", ".svn")
+ settings["testdir"] = getConfig("testrunner", "testdir", "tests")
+
+ settings["_testrunner_name"] = "testrunner.py"
+
+ settings["perf_margin"] = float(getConfig("performance","maring",.05))
+ settings["perf_repeat"] = int(getConfig("performance","repeat",5))
+
+ settings["cpus"] = 1
+
+ # Process Command Line Arguments
+ try:
+ opts, args = getopt.getopt(argv[1:], "fhj:lm:ps:v", \
+ ["builddir=", "disable-svn", "force-perf", "help", "list-tests", "long-tests", "mode=", "reset-perf-base", \
+ "run-perf-tests", "skip-tests", "svnmetadir=", "svn=", "svnversion=", "testdir=", "verbose", "version", \
+ "-testrunner-name="])
+ except getopt.GetoptError:
+ usage()
+ return -1
+
+ # Define Option Flags
+ opt_forceperf = False
+ opt_listtests = False
+ opt_long = False
+ opt_runperf = False
+ opt_showhelp = False
+ opt_showversion = False
+
+ # Process Supplied Options
+ for opt, arg in opts:
+ if opt in ("-h", "--help"):
+ opt_showhelp = True
+ elif opt == "--builddir":
+ settings["builddir"] = arg
+ elif opt == "-j":
+ cpus = int(arg)
+ if cpus < 1: cpus = 1
+ settings["cpus"] = cpus
+ elif opt == "--disable-svn":
+ settings["disable-svn"] = ""
+ elif opt in ("-f", "--force-perf"):
+ opt_forceperf = True
+ elif opt in ("-l", "--list-tests"):
+ opt_listtests = True
+ elif opt == "--long-tests":
+ opt_long = True
+ elif opt in ("-m", "--mode"):
+ settings["mode"] = arg
+ elif opt == "--reset-perf-base":
+ settings["reset-perf-base"] = ""
+ elif opt in ("-p", "--run-perf-tests"):
+ opt_runperf = True
+ elif opt == "--skip-tests":
+ settings["skip-tests"] = ""
+ elif opt == "--svnmetadir":
+ settings["svnmetadir"] = arg
+ elif opt in ("-s", "--svn"):
+ settings["svn"] = arg
+ elif opt == "--svnversion":
+ settings["svnversion"] = arg
+ elif opt == "--testdir":
+ settings["testdir"] = arg
+ elif opt in ("-v", "--verbose"):
+ settings["verbose"] = ""
+ elif opt == "--version":
+ opt_showversion = True
+ elif opt == "---testrunner-name":
+ settings["_testrunner_name"] = arg
+
+ # Show help or version and exit, if requested to do so
+ if opt_showhelp:
+ usage()
+ return 0
+ elif opt_showversion:
+ version()
+ return 0
+
+
+ # Load the app to test, check for its existance
+ app = getConfig("main", "app", "")
+ if app == "":
+ print "Warning: No default test app configured"
+ else:
+ app = os.path.abspath(app)
+ if not os.path.exists(app) and not os.path.isfile(app):
+ print "Error: invalid test app"
+ return -1
+ settings['app'] = app
+
+
+ testdir = os.path.abspath(getConfig("main", "testdir", "."))
+ settings["testdir"] = testdir
+
+
+ # Load in all tests
+ print "Reading Test Configurations..."
+ tests = []
+
+ dlist = args
+ if len(dlist) == 0: dlist = dircache.listdir(testdir)
+
+ dircache.annotate(testdir, dlist)
+ for d in dlist:
+ # Directories with preceeding underscore or period are ignored, as are files
+ if d[0] == "_" or d[0] == "." or d[len(d) - 1] != "/": continue
+
+ name = d[:len(d) - 1]
+ curtdir = os.path.join(testdir, name)
+ contents = dircache.listdir(curtdir)
+ if CONFIGDIR in contents:
+ tests.append(cTest(name, curtdir))
+
+
+ # If selected, display available tests and exit
+ if opt_listtests:
+ print "Available Tests:\n"
+ for test in tests: test.describe()
+ return 0
+
+ # Make temp directory to hold active tests
+ tmpdir = tempfile.mkdtemp("_testrunner")
+
+
+ # Run Consistency Tests
+ (success, fail) = runConsistencyTests(tests, opt_long)
+
+ if fail == 0 and opt_runperf:
+ (psuccess, pfail) = runPerformanceTests(tests, opt_long, opt_forceperf)
+ success += psuccess
+ fail += pfail
+
+ # Clean up test directory
+ try:
+ shutil.rmtree(tmpdir, True)
+ except (IOError, OSError): pass
+
+
+ if fail == 0:
+ print "\nAll tests passed."
+ return 0
+ else:
+ print "\n%d of %d tests failed." % (fail, fail + success)
+ return fail
+
+# } // End of main()
+
+
+
+# void _main() { // Main entry point when called as standalone script
+if __name__ == "__main__":
+ sys.exit(main(sys.argv))
+# } // End of _main()
Property changes on: development/tests/_testrunner/testrunner.py
___________________________________________________________________
Name: svn:executable
+ *
Added: development/tests/default_classic_100u/config/avida.cfg
===================================================================
--- development/tests/default_classic_100u/config/avida.cfg 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_classic_100u/config/avida.cfg 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,216 @@
+#############################################################################
+# 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 60 # Width of the Avida world
+WORLD_Y 60 # Height of the Avida world
+WORLD_GEOMETRY 2 # 1 = Bounded Grid
+ # 2 = Torus
+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
+ # 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/default_classic_100u/config/default-classic.org
===================================================================
--- development/tests/default_classic_100u/config/default-classic.org 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_classic_100u/config/default-classic.org 2007-03-23 02:54:38 UTC (rev 1422)
@@ -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/default_classic_100u/config/environment.cfg
===================================================================
--- development/tests/default_classic_100u/config/environment.cfg 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_classic_100u/config/environment.cfg 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,23 @@
+##############################################################################
+#
+# This is the setup file for the task/resource system. From here, you can
+# setup the available resources (including their inflow and outflow rates) as
+# well as the reactions that the organisms can trigger by performing tasks.
+#
+# This file is currently setup to reward 9 tasks, all of which use the
+# "infinite" resource, which is undepletable.
+#
+# For information on how to use this file, see: doc/environment.html
+# For other sample environments, see: source/support/config/
+#
+##############################################################################
+
+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/default_classic_100u/config/events.cfg
===================================================================
--- development/tests/default_classic_100u/config/events.cfg 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_classic_100u/config/events.cfg 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,31 @@
+##############################################################################
+#
+# This is the setup file for the events system. From here, you can
+# configure any actions that you want to have happen during the course of
+# an experiment, including setting the times for data collection.
+#
+# basic syntax: [trigger] [start:interval:stop] [action/event] [arguments...]
+#
+# This file is currently setup to record key information every 100 updates.
+#
+# For information on how to use this file, see: doc/events.html
+# For other sample event configurations, see: support/config/
+#
+##############################################################################
+
+# 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/default_classic_100u/config/instset-classic.cfg
===================================================================
--- development/tests/default_classic_100u/config/instset-classic.cfg 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_classic_100u/config/instset-classic.cfg 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,52 @@
+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?
+
+#adv-head 1
+#jump-f 1
+#jump-b 1
+#call 1
+#return 1
+#if-bit-1 1
+#get 1
+#put 1
+#h-read 1
+#h-write 1
+#set-head 1
+#search-f 1
+#search-b 1
+
+
+# Works on multiple nops: pop push inc dec IO adv-head
+
+# What if we add a new head. Search will return the location of something,
+# and put the new head there. Then set-head will move another head to that
+# point. In the case of the copy loop, it only needs to be set once and
+# this will speed up the code quite a bit!
+
+# Search with no template returns current position (abs line number) in
+# genome.
\ No newline at end of file
Added: development/tests/default_classic_100u/expected/data/archive/100-aaaaa.org
===================================================================
--- development/tests/default_classic_100u/expected/data/archive/100-aaaaa.org 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_classic_100u/expected/data/archive/100-aaaaa.org 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,134 @@
+# Thu Mar 22 22:40:59 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/default_classic_100u/expected/data/average.dat
===================================================================
--- development/tests/default_classic_100u/expected/data/average.dat 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_classic_100u/expected/data/average.dat 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,30 @@
+# Avida Average Data
+# Thu Mar 22 22:40:59 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.53167 0 0
+50 97 388.75 0.249518 0 100 100 97 2.66667 0 0 0.375 3 -2.53167 0 0
+60 97 388.8 0.249486 0 100 100 97 2.5 0 0 0.466667 3.93333 -2.00077 0 0
+70 95.6207 387.172 0.246829 0 100.034 100 95.6207 2.41667 0 0 0.62069 4.93103 -1.87587 0 0
+80 96.5349 388.047 0.248722 0 100.047 100 96.5349 1.86957 0.116279 0.0465116 0.790698 5.81395 -1.91443 0 0
+90 94.2245 385.347 0.243865 0 100.102 98.9796 94.2245 1.75 0.102041 0 0.857143 6.18367 -1.84457 0 0
+100 93.5672 384.522 0.242764 0 100.09 99.2687 93.5672 1.59524 0.0298507 0 1.08955 6.92537 -1.98729 0 0
Added: development/tests/default_classic_100u/expected/data/count.dat
===================================================================
--- development/tests/default_classic_100u/expected/data/count.dat 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_classic_100u/expected/data/count.dat 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,30 @@
+# Avida count data
+# Thu Mar 22 22:40:59 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 6 1 0 0 0 0 0 0 10 8 15 0 0
+70 870 29 12 1 0 0 0 0 0 0 18 15 29 0 0
+80 1140 43 23 2 0 0 0 5 0 2 22 24 43 0 0
+90 1410 49 28 2 0 0 0 5 3 0 23 27 49 0 0
+100 1950 67 42 5 0 0 0 2 0 0 28 36 67 0 0
Added: development/tests/default_classic_100u/expected/data/detail-100.pop
===================================================================
--- development/tests/default_classic_100u/expected/data/detail-100.pop 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_classic_100u/expected/data/detail-100.pop 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,59 @@
+#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 14 22 100 97 389 0.249357 -1 -1 0 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab
+11 1 2 4 4 100 97 387 0.250646 67 -1 1 rucavcccccccccccccccccccccccjccccccccccccccccccccccccccccccccccccccccccccccccccpcccccccccccutycasvab
+5 1 1 3 3 100 97 388 0.25 52 -1 1 rucavccccccccccccccccccccccccccccccccecccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab
+12 1 1 3 3 100 97 388 0.25 67 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgcutycasvab
+2 1 1 2 3 100 97 388 0.25 26 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccfcccccccutycasvab
+6 1 2 2 3 100 77 367 0.209809 53 -1 1 rucavccccccccccccccccccyccccccccccccccccccccccccccccccccccccccccccccccccccccccyccccccccccccutycasvab
+14 1 1 2 2 100 0 0 0 77 -1 1 rucavccccccccccccccccccccccccccucccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab
+17 2 2 2 2 100 0 0 0 78 -1 2 rucavccccccccccccccccccccccccccccccccccccccacccccccccccccccccccccccccccccccccccccccfccccccdutycasvab
+21 1 1 2 2 100 0 0 0 79 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccutycasvab
+4 1 1 1 3 100 97 388 0.25 52 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccmccccccccccccccccccccccccccccutycasvab
+3 2 1 1 1 100 0 0 0 38 -1 2 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccfcccccccutycasgab
+7 1 2 1 1 100 0 0 0 64 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccstycasiab
+9 2 3 1 1 100 0 0 0 64 -1 2 uucmvcccccccccccccccccccccccccccccccccccccccccccccccccccccccccwccccccccccccccccccccfcccccccutycasvab
+15 1 1 1 1 100 0 0 0 77 -1 1 rucavccccccccccccccccccccccccccncccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab
+16 1 1 1 1 100 0 0 0 78 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutyvasvab
+19 5 2 1 1 100 0 0 0 79 -1 2 rupavccccccccccccccccccccccccccccccccecccccccccccccccccccccccccccccccccccmcccccccccccccccccutycasvab
+20 1 1 1 1 100 0 0 0 79 -1 1 rucavccccccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab
+22 1 3 1 1 100 0 0 0 80 -1 1 rucavcccccccccccccccccgccccjccccccccccccccccccccccccccccccccccccccccccccccccccccccccccnccccutycasvab
+23 1 1 1 1 100 0 0 0 80 -1 1 rucavccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab
+24 1 2 1 1 100 0 0 0 80 -1 1 rucavcccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccccccccclcccccccccutycasvab
+25 1 2 1 1 101 0 0 0 88 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccucccccccccccccccyccccccccccccccccccccccccccutycasvab
+26 16 26 1 1 100 0 0 0 88 -1 2 cccccccccccccccccccccccccccccccccccccccccutyvasvabrucavccccccccccccccccccccccccccccccccccccccccccccc
+28 2 2 1 1 100 0 0 0 90 -1 2 rucvvcccccccccccccccccccccccccccnccccccccccccccccccccccccccccccccccccccccccccccccccfcccccccutycasvab
+29 15 2 1 1 101 0 0 0 90 -1 2 ruicavccccccccccccccccccccccccccnccccccccccccccccccccccccccccccccccccccccccccccccccccmccccccutycasvab
+30 1 1 1 1 101 0 0 0 90 -1 1 rucavcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccmcccccccccccccccccccccutycasvab
+31 1 1 1 1 100 0 0 0 90 -1 1 rucavccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycajvab
+32 20 1 1 1 100 0 0 0 91 -1 2 rucavccccccccmcccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab
+33 1 2 1 1 101 0 0 0 91 -1 1 rucavccccccccccccccccccccccccccccccccccccccccoccccccccwcccccccccccccccccccccccccccccccccccccutycasvab
+34 4 1 1 1 100 0 0 0 92 -1 2 rucavccccccccccccccchcccccccccccccccccccccccccccccccccccccccccmccccccccccccccccccccccccccccutycasvab
+35 5 1 1 1 101 0 0 0 92 -1 2 rucavcccccccccccccccccccccccccccmcccccecccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab
+36 5 2 1 1 100 0 0 0 92 -1 2 rucavcccccccccccccccccccccccccccccccceccccccccccccccccccccccccccrcccccccccjccccccccccccccccutycasvab
+37 24 1 1 1 100 0 0 0 92 -1 2 rucavccccccjccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccccccccclcccccccccutycasvab
+38 5 1 1 1 100 0 0 0 92 -1 2 rucavcccccccccccccccccccccccccccccccceccccccccccccccccccccccccccccccccccccccccccccccccgccccutycasvab
+39 23 1 1 1 100 0 0 0 92 -1 2 rucavccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccncccccccccccutycasvab
+40 12 1 1 1 100 0 0 0 93 -1 2 rucavcccccccccccclcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgcutycasvab
+41 1 3 1 1 100 0 0 0 93 -1 1 rucavcccccccfcccccccccccclccccccccccccccccccccccccrccccccccccccccccccccccccccccccccccccccccutycasvab
+42 1 2 1 1 100 0 0 0 93 -1 1 rucavcccccccccccccccccccccccccccccccccccciccccxccccccccccccccccccccccccccccccccccccccccccccutycasvab
+43 22 2 1 1 100 0 0 0 93 -1 2 rucavcccccccccccccccccgccccjccccccccccccrcccccccccccccccccccccdcccccccccccccccccccccccnccccutycasvab
+44 6 1 1 1 100 0 0 0 96 -1 2 rucavccccccccccccccccccyccccccccccccccccccccccccccccccccccccccccccccccccccccccyccccccgcccccutycasvab
+45 6 1 1 1 100 0 0 0 96 -1 2 rucavccccccccccccccccccyccccccccccccccccccccccccccccmcccccccccccccccccccccccccyccccccccccccutycasvab
+46 1 1 1 1 100 0 0 0 100 -1 1 rucavccccccccccccccccgcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccutycasvab
+47 25 1 1 1 101 0 0 0 100 -1 2 rucavccccccccccccccccccccccccccccccccccccccccccccuccccccctcccccccyccccccccccccccccccccccccccutycasvab
Added: development/tests/default_classic_100u/expected/data/dominant.dat
===================================================================
--- development/tests/default_classic_100u/expected/data/dominant.dat 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_classic_100u/expected/data/dominant.dat 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,30 @@
+# Avida Dominant Data
+# Thu Mar 22 22:40:59 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 9 0 0 0 0 0.25 1 100-aaaaa
+70 97 389 0.249357 0.00257069 100 100 97 15 0 0 0 0 0.25 1 100-aaaaa
+80 97 389 0.249357 0.00257069 100 100 97 15 3 0 0 0 0.250646 1 100-aaaaa
+90 97 389 0.249357 0.00257069 100 100 97 15 3 0 0 0 0.250646 1 100-aaaaa
+100 97 389 0.249357 0.00257069 100 100 97 14 1 0 0 0 0.251295 1 100-aaaaa
Added: development/tests/default_classic_100u/expected/data/historic-100.pop
===================================================================
--- development/tests/default_classic_100u/expected/data/historic-100.pop 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_classic_100u/expected/data/historic-100.pop 2007-03-23 02:54:38 UTC (rev 1422)
@@ -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/default_classic_100u/expected/data/resource.dat
===================================================================
--- development/tests/default_classic_100u/expected/data/resource.dat 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_classic_100u/expected/data/resource.dat 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,17 @@
+# Avida resource data
+# Thu Mar 22 22:40:59 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/default_classic_100u/expected/data/stats.dat
===================================================================
--- development/tests/default_classic_100u/expected/data/stats.dat 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_classic_100u/expected/data/stats.dat 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,26 @@
+# Generic Statistics Data
+# Thu Mar 22 22:40:59 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 1 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.562358 0.562358 0.826353 0.826353 0 1.2973 0 0 0 0
+70 0.0101898 0.562467 0.562358 0.826603 0.826353 0 1.82317 0 0 0 0
+80 0.00255219 0.562505 0.562358 0.82669 0.826353 3 2.61093 0 0 0 0
+90 0.0222724 0.562681 0.562358 0.827092 0.826353 3 2.8541 0 0 0 0
+100 0.0267955 0.562641 0.562358 0.827001 0.826353 2 3.36865 0 0 0 0
Added: development/tests/default_classic_100u/expected/data/tasks.dat
===================================================================
--- development/tests/default_classic_100u/expected/data/tasks.dat 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_classic_100u/expected/data/tasks.dat 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,26 @@
+# Avida tasks data
+# Thu Mar 22 22:40:59 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/default_classic_100u/expected/data/tasks_exe.dat
===================================================================
--- development/tests/default_classic_100u/expected/data/tasks_exe.dat 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_classic_100u/expected/data/tasks_exe.dat 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,26 @@
+# Avida tasks execution data
+# Thu Mar 22 22:40:59 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/default_classic_100u/expected/data/tasks_quality.dat
===================================================================
--- development/tests/default_classic_100u/expected/data/tasks_quality.dat 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_classic_100u/expected/data/tasks_quality.dat 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,34 @@
+# Avida tasks quality data
+# Thu Mar 22 22:40:59 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/default_classic_100u/expected/data/time.dat
===================================================================
--- development/tests/default_classic_100u/expected/data/time.dat 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_classic_100u/expected/data/time.dat 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,18 @@
+# Avida time data
+# Thu Mar 22 22:40:59 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.598744 4.93103 870
+80 0.703182 5.81395 1140
+90 0.807649 6.18367 1410
+100 0.913783 6.92537 1950
Added: development/tests/default_classic_100u/test_list
===================================================================
--- development/tests/default_classic_100u/test_list 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_classic_100u/test_list 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,11 @@
+[main]
+args = -s 100
+
+[consistency]
+enabled = yes
+long = no
+
+[performance]
+enabled = no
+long = no
+
Added: development/tests/default_transsmt_100u/config/avida.cfg
===================================================================
--- development/tests/default_transsmt_100u/config/avida.cfg 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_transsmt_100u/config/avida.cfg 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,216 @@
+#############################################################################
+# 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 60 # Width of the Avida world
+WORLD_Y 60 # Height of the Avida world
+WORLD_GEOMETRY 2 # 1 = Bounded Grid
+ # 2 = Torus
+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 2 # 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-transsmt.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/default_transsmt_100u/config/default-transsmt.org
===================================================================
--- development/tests/default_transsmt_100u/config/default-transsmt.org 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_transsmt_100u/config/default-transsmt.org 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,100 @@
+Search # 1: Find organism end.
+Nop-C # 2: - Match CD:AB
+Nop-D
+Push-Prev # 5: Move end position to Stack-A
+SetMemory # 6: Place FLOW-head in memory space for offspring
+Nop-A # - Memory space labeled Nop-A Nop-A Nop-A
+Head-Move # 7: Move Write head to flow head position
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Nop-C # 8:
+Search # 9: Drop flow head at start of copy loop
+Inst-Read # 10:
+Inst-Write # 11:
+Head-Push # 12: Get current position of...
+Nop-C # 13: - Read-Head
+If-Equal # 14: Test if we are done copying...
+Divide # 15: ...If so, divide.
+Head-Move # 16: ...If not, continue with loop.
+Nop-A # 17:
+Nop-B
Added: development/tests/default_transsmt_100u/config/environment.cfg
===================================================================
--- development/tests/default_transsmt_100u/config/environment.cfg 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_transsmt_100u/config/environment.cfg 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,23 @@
+##############################################################################
+#
+# This is the setup file for the task/resource system. From here, you can
+# setup the available resources (including their inflow and outflow rates) as
+# well as the reactions that the organisms can trigger by performing tasks.
+#
+# This file is currently setup to reward 9 tasks, all of which use the
+# "infinite" resource, which is undepletable.
+#
+# For information on how to use this file, see: doc/environment.html
+# For other sample environments, see: source/support/config/
+#
+##############################################################################
+
+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/default_transsmt_100u/config/events.cfg
===================================================================
--- development/tests/default_transsmt_100u/config/events.cfg 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_transsmt_100u/config/events.cfg 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,31 @@
+##############################################################################
+#
+# This is the setup file for the events system. From here, you can
+# configure any actions that you want to have happen during the course of
+# an experiment, including setting the times for data collection.
+#
+# basic syntax: [trigger] [start:interval:stop] [action/event] [arguments...]
+#
+# This file is currently setup to record key information every 100 updates.
+#
+# For information on how to use this file, see: doc/events.html
+# For other sample event configurations, see: support/config/
+#
+##############################################################################
+
+# 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/default_transsmt_100u/config/instset-transsmt.cfg
===================================================================
--- development/tests/default_transsmt_100u/config/instset-transsmt.cfg 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_transsmt_100u/config/instset-transsmt.cfg 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,50 @@
+# Core Instruction Set
+Nop-A 1 #1 (a)
+Nop-B 1 #2 (b)
+Nop-C 1 #3 (c)
+Nop-D 1 #4 (d)
+Val-Shift-R 1 #5 (e)
+Val-Shift-L 1 #6 (f)
+Val-Nand 1 #7 (g)
+Val-Add 1 #8 (h)
+Val-Sub 1 #9 (i)
+Val-Mult 1 #10 (j)
+Val-Div 1 #11 (k)
+Val-Mod 1 #12 (l)
+Val-Inc 1 #13 (m)
+Val-Dec 1 #14 (n)
+SetMemory 1 #15 (o)
+Divide 1 #16 (p)
+Inst-Read 1 #17 (q)
+Inst-Write 1 #18 (r)
+If-Equal 1 #19 (s)
+If-Not-Equal 1 #20 (t)
+If-Less 1 #21 (u)
+If-Greater 1 #22 (v)
+Head-Push 1 #23 (w)
+Head-Pop 1 #24 (x)
+Head-Move 1 #25 (y)
+Search 1 #26 (z)
+Push-Next 1 #27 (A)
+Push-Prev 1 #28 (B)
+Push-Comp 1 #29 (C)
+Val-Delete 1 #30 (D)
+Val-Copy 1 #31 (E)
+IO 1 #32 (F)
+
+# Additional Instructions - Disabled by Default
+#Nop-X 1 #33 ()
+#Thread-Create 1 #34 ()
+#Thread-Cancel 1 #35 ()
+#Thread-Kill 1 #36 ()
+#Inject 1 #37 ()
+#Apoptosis 1 #38 ()
+#Net-Get 1 #39 ()
+#Net-Send 1 #40 ()
+#Net-Receive 1 #41 ()
+#Net-Last 1 #42 ()
+#Rotate-Left 1 #43 ()
+#Rotate-Right 1 #44 ()
+#Call-Flow 1 #45 ()
+#Call-Label 1 #46 ()
+#Return 1 #47 ()
Added: development/tests/default_transsmt_100u/expected/data/archive/100-aaaaa.org
===================================================================
--- development/tests/default_transsmt_100u/expected/data/archive/100-aaaaa.org 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_transsmt_100u/expected/data/archive/100-aaaaa.org 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,134 @@
+# Thu Mar 22 22:44:48 2007
+# Filename........: archive/100-aaaaa.org
+# Update Output...: 100
+# Is Viable.......: 1
+# Repro Cycle Size: 0
+# Depth to Viable.: 0
+# Update Created..: -1
+# Genotype ID.....: 1
+# Parent Gen ID...: -1
+# Tree Depth......: 0
+# Parent Distance.: -1
+#
+# Generation: 0
+# Merit...........: 98.000000
+# Gestation Time..: 587
+# Fitness.........: 0.166951
+# Errors..........: 0
+# Genome Size.....: 100
+# Copied Size.....: 100
+# Executed Size...: 98
+# 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)
+
+
+Search
+Nop-C
+Nop-D
+Push-Prev
+SetMemory
+Nop-A
+Head-Move
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Nop-C
+Search
+Inst-Read
+Inst-Write
+Head-Push
+Nop-C
+If-Equal
+Divide
+Head-Move
+Nop-A
+Nop-B
Added: development/tests/default_transsmt_100u/expected/data/average.dat
===================================================================
--- development/tests/default_transsmt_100u/expected/data/average.dat 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_transsmt_100u/expected/data/average.dat 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,30 @@
+# Avida Average Data
+# Thu Mar 22 22:44:48 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 98 587 0.166951 0 100 100 98 0 0 0 0 1 -2.13704 0 0
+30 98 587 0.166951 0 100 100 98 0 0 0 0 1 -2.13704 0 0
+40 98 587 0.166951 0 99.75 100 98 1.33333 0 0 0.5 2 -2.63622 0 0
+50 98 587 0.166951 0 99.75 100 98 1.33333 0 0 0.5 2 -2.63622 0 0
+60 97.75 585 0.167094 0 99.75 99.875 97.75 2.66667 0.25 0.25 0.5 3 -3.16955 0 0
+70 97.75 585 0.167094 0 99.75 99.875 97.75 2.66667 0 0 0.5 3 -3.16955 0 0
+80 97.75 585 0.167094 0 99.6875 99.8125 97.75 2.66667 0.0625 0.0625 0.6875 4 -3.5277 0 0
+90 97.75 585 0.167094 0 99.6875 99.8125 97.75 2.66667 0 0 0.6875 4 -3.5277 0 0
+100 97.0667 583.733 0.166274 0 99.7333 99.7667 97.0667 2 0.0666667 0 1 5 -2.90949 0 0
Added: development/tests/default_transsmt_100u/expected/data/count.dat
===================================================================
--- development/tests/default_transsmt_100u/expected/data/count.dat 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_transsmt_100u/expected/data/count.dat 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,30 @@
+# Avida count data
+# Thu Mar 22 22:44:48 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 60 2 1 1 0 0 0 0 0 0 2 1 2 0 0
+40 120 4 3 1 0 0 0 0 0 0 2 2 4 0 0
+50 120 4 3 1 0 0 0 0 0 0 2 2 4 0 0
+60 180 8 3 1 0 0 0 2 0 2 6 4 8 0 0
+70 240 8 3 1 0 0 0 0 0 0 6 4 8 0 0
+80 450 16 6 3 0 0 0 1 0 1 11 8 16 0 0
+90 480 16 6 3 0 0 0 0 0 0 11 8 16 0 0
+100 870 30 15 3 0 0 0 2 1 0 16 15 30 0 0
Added: development/tests/default_transsmt_100u/expected/data/detail-100.pop
===================================================================
--- development/tests/default_transsmt_100u/expected/data/detail-100.pop 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_transsmt_100u/expected/data/detail-100.pop 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,32 @@
+#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 9 9 100 98 587 0.166951 -1 -1 0 zcdBoayccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccczqrwcspyab
+2 1 1 4 5 99 97 581 0.166954 38 -1 1 zcdBoaycccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccczqrwcspyab
+3 1 1 3 3 100 98 585 0.167521 39 -1 1 zcdBoayccccccccccccccccccccccccccccccccccccccccccccccccccecccccccccccccccccccccccccccccccczqrwcspyab
+5 1 3 2 2 99 0 0 0 79 -1 1 zcdBoaycccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccctccccpcccccccccccccczqrwcspyab
+6 3 1 2 2 100 0 0 0 79 -1 2 zcdBoayccccccccccccccccccccccccccccccccccccccccccccccccccecccccccccccczccccccccccccccccccczqrwcspyab
+4 2 3 1 1 99 0 0 0 78 -1 2 zcdBoayccccfccccccccccccccccccccccpccccccccccccccccEccccccccccccccccccccccccccccccccccccczqrwcspyab
+8 3 2 1 1 100 0 0 0 97 -1 2 zcdBoayccccccccccmcccccccccccccccccccccccccccccccccccwcccecccccccccccccccccccccccccccccccczqrwcspyab
+9 3 1 1 1 100 0 0 0 99 -1 2 zcdBoayccccccccccccccccccccccccccccccccccccccccccccccccccecccccccccccccccccccccccccccscccczqrwcspyab
+10 4 1 1 1 99 0 0 0 99 -1 3 zcdBoayccccfccccccccccccccccccccccpccccccccccccccccEcccccccccccccbccccccccccccccccccccccczqrwcspyab
+11 1 1 1 1 100 0 0 0 99 -1 1 zcdBoaycccccccccccccccccccccccccccccccccccccccccckcccccccccccccccccccccccccccccccccccccccczqrwcspyab
+12 2 1 1 1 99 0 0 0 99 -1 2 zcdBoayccccccccccccccccccccccccccccccccccccccccccccccccccccccccwccccccccccccccccccccccccczqrwcspyab
+13 3 3 1 1 101 0 0 0 99 -1 2 zcdBorayccccccccccccccccccccccccccccccccaccccccccccccccccceccccccccccccccdccccccccccccccccczqrwcspyab
+14 1 1 1 1 100 0 0 0 99 -1 1 zcdBoaycccclcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccczqrwcspyab
+15 1 1 1 1 100 0 0 0 100 -1 1 zcdBoayBcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccczqrwcspyab
+16 1 1 1 1 100 0 0 0 100 -1 1 zcdBoaycccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccccccczqrwcspyab
Added: development/tests/default_transsmt_100u/expected/data/dominant.dat
===================================================================
--- development/tests/default_transsmt_100u/expected/data/dominant.dat 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_transsmt_100u/expected/data/dominant.dat 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,30 @@
+# Avida Dominant Data
+# Thu Mar 22 22:44:48 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.166951 1 100-aaaaa
+30 0 0 0 0 100 0 0 2 0 0 0 0 0.166951 1 100-aaaaa
+40 98 587 0.166951 0.00170358 100 100 98 2 0 0 0 0 0.166951 1 100-aaaaa
+50 98 587 0.166951 0.00170358 100 100 98 2 0 0 0 0 0.166951 1 100-aaaaa
+60 98 587 0.166951 0.00170358 100 100 98 4 2 2 0 0 0.167521 1 100-aaaaa
+70 98 587 0.166951 0.00170358 100 100 98 4 0 0 0 0 0.167521 1 100-aaaaa
+80 98 587 0.166951 0.00170358 100 100 98 7 1 1 0 0 0.167521 1 100-aaaaa
+90 98 587 0.166951 0.00170358 100 100 98 7 0 0 0 0 0.167521 1 100-aaaaa
+100 98 587 0.166951 0.00170358 100 100 98 9 2 0 0 0 0.168111 1 100-aaaaa
Added: development/tests/default_transsmt_100u/expected/data/historic-100.pop
===================================================================
--- development/tests/default_transsmt_100u/expected/data/historic-100.pop 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_transsmt_100u/expected/data/historic-100.pop 2007-03-23 02:54:38 UTC (rev 1422)
@@ -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/default_transsmt_100u/expected/data/resource.dat
===================================================================
--- development/tests/default_transsmt_100u/expected/data/resource.dat 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_transsmt_100u/expected/data/resource.dat 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,17 @@
+# Avida resource data
+# Thu Mar 22 22:44:48 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/default_transsmt_100u/expected/data/stats.dat
===================================================================
--- development/tests/default_transsmt_100u/expected/data/stats.dat 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_transsmt_100u/expected/data/stats.dat 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,26 @@
+# Generic Statistics Data
+# Thu Mar 22 22:44:48 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.564736 0.102587 0.831801 1 -0.000000 0.000000 0 6395120 27
+10 0 0.0975 0.564736 0.102587 0.831801 0 -0 0 0 0 0
+20 0 0.564736 0.564736 0.831801 0.831801 0 -0 0 0 0 0
+30 0 0.564736 0.564736 0.831801 0.831801 0 -0 0 0 0 0
+40 0 0.563941 0.564736 0.829978 0.831801 0 1.03972 0 0 0 0
+50 0 0.563941 0.564736 0.829978 0.831801 0 1.03972 0 0 0 0
+60 -0.000858723 0.563941 0.564736 0.829978 0.831801 0 1.03972 0 0 0 0
+70 -0.000858723 0.563941 0.564736 0.829978 0.831801 0 1.03972 0 0 0 0
+80 -0.000858723 0.563742 0.564736 0.829523 0.831801 0 1.50927 0 0 0 0
+90 -0.000858723 0.563742 0.564736 0.829523 0.831801 0 1.50927 0 0 0 0
+100 0.00406138 0.563888 0.564736 0.829857 0.831801 1 2.35491 0 0 0 0
Added: development/tests/default_transsmt_100u/expected/data/tasks.dat
===================================================================
--- development/tests/default_transsmt_100u/expected/data/tasks.dat 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_transsmt_100u/expected/data/tasks.dat 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,26 @@
+# Avida tasks data
+# Thu Mar 22 22:44:48 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/default_transsmt_100u/expected/data/tasks_exe.dat
===================================================================
--- development/tests/default_transsmt_100u/expected/data/tasks_exe.dat 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_transsmt_100u/expected/data/tasks_exe.dat 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,26 @@
+# Avida tasks execution data
+# Thu Mar 22 22:44:48 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/default_transsmt_100u/expected/data/tasks_quality.dat
===================================================================
--- development/tests/default_transsmt_100u/expected/data/tasks_quality.dat 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_transsmt_100u/expected/data/tasks_quality.dat 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,34 @@
+# Avida tasks quality data
+# Thu Mar 22 22:44:48 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/default_transsmt_100u/expected/data/time.dat
===================================================================
--- development/tests/default_transsmt_100u/expected/data/time.dat 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_transsmt_100u/expected/data/time.dat 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,18 @@
+# Avida time data
+# Thu Mar 22 22:44:48 2007
+# 1: update
+# 2: avida time
+# 3: average generation
+# 4: num_executed?
+
+0 0.000000 0.000000 30
+10 0 0 30
+20 0.0102041 1 60
+30 0.112245 1 60
+40 0.214286 2 120
+50 0.316327 2 120
+60 0.418479 3 180
+70 0.520781 3 240
+80 0.623102 4 450
+90 0.725403 4 480
+100 0.8279 5 870
Added: development/tests/default_transsmt_100u/test_list
===================================================================
--- development/tests/default_transsmt_100u/test_list 2007-03-22 18:48:17 UTC (rev 1421)
+++ development/tests/default_transsmt_100u/test_list 2007-03-23 02:54:38 UTC (rev 1422)
@@ -0,0 +1,11 @@
+[main]
+args = -s 100
+
+[consistency]
+enabled = yes
+long = no
+
+[performance]
+enabled = no
+long = no
+
More information about the Avida-cvs
mailing list