From e85c722dc0efea53b7d7502fa38469736a240ce5 Mon Sep 17 00:00:00 2001 From: Matthew Andres Moreno Date: Tue, 14 Nov 2023 14:30:43 -0500 Subject: [PATCH 01/17] Impl cActionKillDemesHighestParasiteLoad action --- .../source/actions/PopulationActions.cc | 83 +++++++++++++++++++ avida-core/source/main/cDeme.cc | 14 ++++ avida-core/source/main/cDeme.h | 5 ++ 3 files changed, 102 insertions(+) diff --git a/avida-core/source/actions/PopulationActions.cc b/avida-core/source/actions/PopulationActions.cc index f3e1dddbc..4a25b38ad 100644 --- a/avida-core/source/actions/PopulationActions.cc +++ b/avida-core/source/actions/PopulationActions.cc @@ -5168,6 +5168,88 @@ class cActionKillDemePercent : public cAction }; +/* + Kill deme(s) with the highest parasite load + + Parameters: + - The percent of living organisms to kill (default: 0) + */ + +class cActionKillDemesHighestParasiteLoad : public cAction +{ +private: + double m_killprob; +public: + cActionKillDemesHighestParasiteLoad(cWorld *world, const cString &args, Feedback &) : cAction(world, args), m_killprob(0.01) + { + cString largs(args); + if (largs.GetSize()) m_killprob = largs.PopWord().AsDouble(); + + assert(m_killprob >= 0); + } + + static const cString GetDescription() { return "Arguments: [int prob=1]"; } + + void Process(cAvidaContext& ctx) + { + + int target_cell; + cPopulation& pop = m_world->GetPopulation(); + + long cells_scanned = 0; + long orgs_killed = 0; + long cells_empty = 0; + + const int num_demes = pop.GetNumDemes(); + const int kill_quota = ctx.GetRandom().GetRandBinomial( + num_demes, + m_killprob + ); + if (kill_quota == 0) return; + + double kill_thresh = 1.0; + int init_countdown = kill_quota; + int d; + int _num_eligible = 0; + for (int d = 0; d < pop.GetNumDemes(); d++) { + cDeme &deme = pop.GetDeme(d); + if (deme.IsTreatableNow() && not deme.IsEmpty()) { + { + _num_eligible++; + if (init_countdown > 0) { + kill_thresh = std::min( + kill_thresh, + deme.GetParasiteLoad() + ); + init_countdown--; + } else { + kill_thresh = std::max( + deme.GetParasiteLoad(), kill_thresh + ); + } + } // End if deme is treatable + } //End iterating through all demes + + // go through and kill cells + int _num_killed = 0; + for (int d = 0; d < pop.GetNumDemes(); d++) + { + cDeme &deme = pop.GetDeme(d); + if ( + deme.IsTreatableNow() && not deme.IsEmpty() && (deme.GetParasiteLoad() >= kill_thresh)) + { + _num_killed += 1; + deme.KillAll(ctx); + } // End if deme is eligible + } //End iterating through all demes + } + + const auto _expected_killed = std::min(_num_eligible, kill_quota); + assert(_num_killed == _expected_killed); +} // End Process() +}; + + /* Set the ages at which treatable demes can be treated @@ -5834,6 +5916,7 @@ void RegisterPopulationActions(cActionLibrary* action_lib) action_lib->Register("KillWithinRadiusBelowResourceThreshold"); action_lib->Register("KillWithinRadiusMeanBelowResourceThreshold"); action_lib->Register("KillWithinRadiusBelowResourceThresholdTestAll"); + action_lib->Register("KillDemesHighestParasiteLoad"); action_lib->Register("KillMeanBelowThresholdPaintable"); action_lib->Register("DiffuseHGTGenomeFragments"); diff --git a/avida-core/source/main/cDeme.cc b/avida-core/source/main/cDeme.cc index 7d7855908..feefc1784 100644 --- a/avida-core/source/main/cDeme.cc +++ b/avida-core/source/main/cDeme.cc @@ -333,6 +333,20 @@ int cDeme::GetNumOrgsWithOpinion() const return count; } +int cDeme::GetNumParasites() const +{ + const int demeSize = GetSize(); + int count = 0; + + for (int pos = 0; pos < demeSize; ++pos) + { + const cPopulationCell &cell = GetCell(pos); + if (cell.IsOccupied()) count += cell.GetOrganism()->GetNumParasites(); + } + + return count; +} + void cDeme::ProcessPreUpdate() { deme_resource_count.SetSpatialUpdate(m_world->GetStats().GetUpdate()); diff --git a/avida-core/source/main/cDeme.h b/avida-core/source/main/cDeme.h index 979b6932c..882dc13de 100644 --- a/avida-core/source/main/cDeme.h +++ b/avida-core/source/main/cDeme.h @@ -182,6 +182,11 @@ class cDeme double GetDensity() const { return static_cast(cur_org_count) / static_cast(GetSize()); } int GetNumOrgsWithOpinion() const; + + int GetNumParasites() const; + double GetParasiteLoad() const { + return static_cast(GetNumParasites()) / GetOrgCount(); + } void IncOrgCount() { cur_org_count++; } void DecOrgCount() { cur_org_count--; } From 7c948334abdf151915457945db86e5c762e6ebc0 Mon Sep 17 00:00:00 2001 From: Matthew Andres Moreno Date: Tue, 14 Nov 2023 14:33:44 -0500 Subject: [PATCH 02/17] Bugfix: add missing KillDemePercent hook --- avida-core/source/actions/PopulationActions.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/avida-core/source/actions/PopulationActions.cc b/avida-core/source/actions/PopulationActions.cc index 4a25b38ad..01ed29c38 100644 --- a/avida-core/source/actions/PopulationActions.cc +++ b/avida-core/source/actions/PopulationActions.cc @@ -5916,6 +5916,7 @@ void RegisterPopulationActions(cActionLibrary* action_lib) action_lib->Register("KillWithinRadiusBelowResourceThreshold"); action_lib->Register("KillWithinRadiusMeanBelowResourceThreshold"); action_lib->Register("KillWithinRadiusBelowResourceThresholdTestAll"); + action_lib->Register("KillDemePercent"); action_lib->Register("KillDemesHighestParasiteLoad"); action_lib->Register("KillMeanBelowThresholdPaintable"); From 71834d3ce898eb214dc754c138af41a6a247ca1a Mon Sep 17 00:00:00 2001 From: Matthew Andres Moreno Date: Tue, 14 Nov 2023 14:36:13 -0500 Subject: [PATCH 03/17] Update action argument description --- avida-core/source/actions/PopulationActions.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/avida-core/source/actions/PopulationActions.cc b/avida-core/source/actions/PopulationActions.cc index 01ed29c38..dbe14f3b7 100644 --- a/avida-core/source/actions/PopulationActions.cc +++ b/avida-core/source/actions/PopulationActions.cc @@ -5188,7 +5188,7 @@ class cActionKillDemesHighestParasiteLoad : public cAction assert(m_killprob >= 0); } - static const cString GetDescription() { return "Arguments: [int prob=1]"; } + static const cString GetDescription() { return "Arguments: [double killprob=0.01]"; } void Process(cAvidaContext& ctx) { From 25b246871d0bce460a0cd38c8a1b658ed8ae83ea Mon Sep 17 00:00:00 2001 From: Matthew Andres Moreno Date: Tue, 14 Nov 2023 14:42:27 -0500 Subject: [PATCH 04/17] Add killmax param Useful for testing, maybe for experiments --- avida-core/source/actions/PopulationActions.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/avida-core/source/actions/PopulationActions.cc b/avida-core/source/actions/PopulationActions.cc index dbe14f3b7..b37aec862 100644 --- a/avida-core/source/actions/PopulationActions.cc +++ b/avida-core/source/actions/PopulationActions.cc @@ -54,6 +54,7 @@ #include #include #include +#include #include #include @@ -5179,16 +5180,18 @@ class cActionKillDemesHighestParasiteLoad : public cAction { private: double m_killprob; + int m_killmax; public: - cActionKillDemesHighestParasiteLoad(cWorld *world, const cString &args, Feedback &) : cAction(world, args), m_killprob(0.01) + cActionKillDemesHighestParasiteLoad(cWorld *world, const cString &args, Feedback &) : cAction(world, args), m_killprob(0.01), m_killmax(std::numeric_limits::max()) { cString largs(args); if (largs.GetSize()) m_killprob = largs.PopWord().AsDouble(); + if (largs.GetSize()) m_killmax = largs.PopWord().AsInt(); assert(m_killprob >= 0); } - static const cString GetDescription() { return "Arguments: [double killprob=0.01]"; } + static const cString GetDescription() { return "Arguments: [double killprob=0.01] [int killmax = intmax]"; } void Process(cAvidaContext& ctx) { @@ -5201,10 +5204,11 @@ class cActionKillDemesHighestParasiteLoad : public cAction long cells_empty = 0; const int num_demes = pop.GetNumDemes(); - const int kill_quota = ctx.GetRandom().GetRandBinomial( + const int binomial_draw = ctx.GetRandom().GetRandBinomial( num_demes, m_killprob ); + const int kill_quota = std::min(binomial_draw, m_killmax); if (kill_quota == 0) return; double kill_thresh = 1.0; From e401aca5ecebef832bda703f784c0f74df843540 Mon Sep 17 00:00:00 2001 From: Matthew Andres Moreno Date: Tue, 14 Nov 2023 20:23:01 -0500 Subject: [PATCH 05/17] Fix kill demes highest para load, write tests --- .../source/actions/PopulationActions.cc | 79 +- .../config/avida.cfg | 689 ++++++++++++++++++ .../config/environment.cfg | 9 + .../config/events.cfg | 10 + .../config/evolved-not.org | 321 ++++++++ .../config/instset-transsmt.cfg | 35 + .../config/parasite-smt.org | 80 ++ .../expected/.gitignore | 0 .../expected/data/detail--1.spop | 27 + .../expected/data/detail-2.spop | 27 + .../expected/data/detail-3.spop | 27 + .../test_list | 36 + 12 files changed, 1297 insertions(+), 43 deletions(-) create mode 100644 avida-core/tests/demes_KillDemesHighestParasiteLoad/config/avida.cfg create mode 100644 avida-core/tests/demes_KillDemesHighestParasiteLoad/config/environment.cfg create mode 100644 avida-core/tests/demes_KillDemesHighestParasiteLoad/config/events.cfg create mode 100644 avida-core/tests/demes_KillDemesHighestParasiteLoad/config/evolved-not.org create mode 100644 avida-core/tests/demes_KillDemesHighestParasiteLoad/config/instset-transsmt.cfg create mode 100644 avida-core/tests/demes_KillDemesHighestParasiteLoad/config/parasite-smt.org create mode 100644 avida-core/tests/demes_KillDemesHighestParasiteLoad/expected/.gitignore create mode 100644 avida-core/tests/demes_KillDemesHighestParasiteLoad/expected/data/detail--1.spop create mode 100644 avida-core/tests/demes_KillDemesHighestParasiteLoad/expected/data/detail-2.spop create mode 100644 avida-core/tests/demes_KillDemesHighestParasiteLoad/expected/data/detail-3.spop create mode 100644 avida-core/tests/demes_KillDemesHighestParasiteLoad/test_list diff --git a/avida-core/source/actions/PopulationActions.cc b/avida-core/source/actions/PopulationActions.cc index b37aec862..1f67dbb94 100644 --- a/avida-core/source/actions/PopulationActions.cc +++ b/avida-core/source/actions/PopulationActions.cc @@ -5195,61 +5195,54 @@ class cActionKillDemesHighestParasiteLoad : public cAction void Process(cAvidaContext& ctx) { - - int target_cell; cPopulation& pop = m_world->GetPopulation(); + const int num_demes = pop.GetNumDemes(); + std::vector parasite_loads(num_demes); + int num_eligible = 0; - long cells_scanned = 0; - long orgs_killed = 0; - long cells_empty = 0; + const int deme_size = m_world->GetConfig().WORLD_X.Get() * (m_world->GetConfig().WORLD_Y.Get() / num_demes); + const double smudge_delta = 0.09 / deme_size; + int smudge_index = ctx.GetRandom().GetInt(0, num_demes - 1); + for (int d = 0; d < num_demes; d++) + { + cDeme &deme = pop.GetDeme(d); + if (not deme.IsEmpty()) + { + num_eligible++; + const auto parasite_load = deme.GetParasiteLoad(); + if (parasite_load == 0.0) continue; + // need to guarantee that parasite_loads are distinct to set threshold + parasite_loads[d] = parasite_load + smudge_delta * smudge_index; + ++smudge_index; + if (smudge_index >= num_demes) smudge_index -= num_demes; + } + } - const int num_demes = pop.GetNumDemes(); const int binomial_draw = ctx.GetRandom().GetRandBinomial( - num_demes, - m_killprob + num_eligible, + m_killprob ); const int kill_quota = std::min(binomial_draw, m_killmax); if (kill_quota == 0) return; + std::cout << "kill quota " << kill_quota << std::endl; - double kill_thresh = 1.0; - int init_countdown = kill_quota; - int d; - int _num_eligible = 0; - for (int d = 0; d < pop.GetNumDemes(); d++) { - cDeme &deme = pop.GetDeme(d); - if (deme.IsTreatableNow() && not deme.IsEmpty()) { - { - _num_eligible++; - if (init_countdown > 0) { - kill_thresh = std::min( - kill_thresh, - deme.GetParasiteLoad() - ); - init_countdown--; - } else { - kill_thresh = std::max( - deme.GetParasiteLoad(), kill_thresh - ); - } - } // End if deme is treatable - } //End iterating through all demes - - // go through and kill cells - int _num_killed = 0; - for (int d = 0; d < pop.GetNumDemes(); d++) + std::vector top_n(kill_quota); + const auto partial_sort_end = std::partial_sort_copy( + parasite_loads.begin(), parasite_loads.end(), + top_n.begin(), top_n.end(), + std::greater() + ); + const auto kill_thresh = *std::prev(partial_sort_end); + std::cout << "kill thresh " << kill_thresh << std::endl; + for (int d = 0; d < num_demes; d++) { - cDeme &deme = pop.GetDeme(d); - if ( - deme.IsTreatableNow() && not deme.IsEmpty() && (deme.GetParasiteLoad() >= kill_thresh)) + if (parasite_loads[d] and parasite_loads[d] >= kill_thresh) { - _num_killed += 1; + std::cout << "bump" << std::endl; + cDeme &deme = pop.GetDeme(d); deme.KillAll(ctx); - } // End if deme is eligible - } //End iterating through all demes + } } - - const auto _expected_killed = std::min(_num_eligible, kill_quota); - assert(_num_killed == _expected_killed); } // End Process() }; diff --git a/avida-core/tests/demes_KillDemesHighestParasiteLoad/config/avida.cfg b/avida-core/tests/demes_KillDemesHighestParasiteLoad/config/avida.cfg new file mode 100644 index 000000000..a946e92e1 --- /dev/null +++ b/avida-core/tests/demes_KillDemesHighestParasiteLoad/config/avida.cfg @@ -0,0 +1,689 @@ +############################################################################# +# This file includes all the basic run-time defines for Avida. +# For more information, see doc/config.html +############################################################################# + +VERSION_ID 2.11.0 # Do not change this value. + +### GENERAL_GROUP ### +# General Settings +VERBOSITY 3 # 0 = No output at all + # 1 = Normal output + # 2 = Verbose output, detailing progress + # 3 = High level of details, as available + # 4 = Print Debug Information, as applicable +RANDOM_SEED 1 # Random number seed (0 for based on time) +SPECULATIVE 1 # Enable speculative execution + # (pre-execute instructions that don't affect other organisms) +POPULATION_CAP 0 # Carrying capacity in number of organisms (use 0 for no cap) + +### TOPOLOGY_GROUP ### +# World topology +WORLD_X 10 +WORLD_Y 30 +NUM_DEMES 3 +RANDOM_SEED 1WORLD_GEOMETRY 2 # 1 = Bounded Grid (WOLRD_X x WORLD_Y) + # 2 = Toroidal Grid (WOLRD_X x WORLD_Y; wraps at edges + # 3 = Clique (all population cells are connected) + # 4 = Hexagonal grid + # 5 = Partial + # 6 = 3D Lattice (under development) + # 7 = Random connected + # 8 = Scale-free (detailed below) +SCALE_FREE_M 3 # Number of connections per cell in a scale-free geometry +SCALE_FREE_ALPHA 1.0 # Attachment power (1=linear) +SCALE_FREE_ZERO_APPEAL 0.0 # Appeal of cells with zero connections + +### CONFIG_FILE_GROUP ### +# Other configuration Files +DATA_DIR data # Directory in which config files are found +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 + +#include INST_SET=instset-transsmt.cfg + +### MUTATION_GROUP ### +# Mutation rates +COPY_MUT_PROB 0.000 # Mutation rate (per copy) +COPY_INS_PROB 0.0 # Insertion rate (per copy) +COPY_DEL_PROB 0.0 # Deletion rate (per copy) +COPY_UNIFORM_PROB 0.0 # Uniform mutation probability (per copy) + # - Randomly apply insertion, deletion or point mutation +COPY_SLIP_PROB 0.0 # Slip rate (per copy) +POINT_MUT_PROB 0.0 # Mutation rate (per-location per update) +DIV_MUT_PROB 0.000703 # Mutation rate (per site, applied on divide) +DIV_INS_PROB 0.00003906 # Insertion rate (per site, applied on divide) +DIV_DEL_PROB 0.00003906 # Deletion rate (per site, applied on divide) +DIV_UNIFORM_PROB 0.0 # Uniform mutation probability (per site, applied on divide) + # - Randomly apply insertion, deletion or point mutation +DIV_SLIP_PROB 0.0 # Slip rate (per site, applied on divide) +DIVIDE_MUT_PROB 0.0 # Mutation rate (max one, per divide) +DIVIDE_INS_PROB 0.0#5 # Insertion rate (max one, per divide) +DIVIDE_DEL_PROB 0.0#5 # Deletion rate (max one, per divide) +DIVIDE_UNIFORM_PROB 0.0 # Uniform mutation probability (per divide) + # - Randomly apply insertion, deletion or point mutation +DIVIDE_SLIP_PROB 0.0 # Slip rate (per divide) - creates large deletions/duplications +DIVIDE_POISSON_MUT_MEAN 0.0 # Mutation rate (Poisson distributed, per divide) +DIVIDE_POISSON_INS_MEAN 0.0 # Insertion rate (Poisson distributed, per divide) +DIVIDE_POISSON_DEL_MEAN 0.0 # Deletion rate (Poisson distributed, per divide) +DIVIDE_POISSON_SLIP_MEAN 0.0 # Slip rate (Poisson distributed, per divide) +INJECT_INS_PROB 0.000825 # Insertion rate (per site, applied on inject) +INJECT_DEL_PROB 0.000825 # Deletion rate (per site, applied on inject) +INJECT_MUT_PROB 0.0075 # Mutation rate (per site, applied on inject) +SLIP_FILL_MODE 0 # Fill insertions from slip mutations with: + # 0 = Duplication + # 1 = nop-X + # 2 = Random + # 3 = scrambled + # 4 = nop-C +SLIP_COPY_MODE 0 # How to handle 'on-copy' slip mutations: + # 0 = actual read head slip + # 1 = instant large mutation (obeys slip mode) +PARENT_MUT_PROB 0.0 # Per-site, in parent, on divide +SPECIAL_MUT_LINE -1 # If this is >= 0, ONLY this line is mutated +META_COPY_MUT 0.2 # Prob. of copy mutation rate changing (per gen) +META_STD_DEV 0.1 # Standard deviation of meta mutation size. +MUT_RATE_SOURCE 1 # 1 = Mutation rates determined by environment. + # 2 = Mutation rates inherited from parent. + +### REPRODUCTION_GROUP ### +# Birth and Death config options +DIVIDE_FAILURE_RESETS 0 # When Divide fails, organisms are interally reset +BIRTH_METHOD 4 # Which organism should be replaced when a birth occurs? + # 0 = Random organism in neighborhood + # 1 = Oldest in neighborhood + # 2 = Largest Age/Merit in neighborhood + # 3 = None (use only empty cells in neighborhood) + # 4 = Random from population (Mass Action) + # 5 = Oldest in entire population + # 6 = Random within deme + # 7 = Organism faced by parent + # 8 = Next grid cell (id+1) + # 9 = Largest energy used in entire population + # 10 = Largest energy used in neighborhood + # 11 = Local neighborhood dispersal +PREFER_EMPTY 0 # Overide BIRTH_METHOD to preferentially choose empty cells for offsping? +ALLOW_PARENT 1 # Should parents be considered when deciding where to place offspring? +DISPERSAL_RATE 0.0 # Rate of dispersal under birth method 11 + # (poisson distributed random connection list hops) +DEATH_PROB 0.0 # Probability of death when dividing. +DEATH_METHOD 2 # When should death by old age occur? + # 0 = Never + # 1 = When executed AGE_LIMIT (+deviation) total instructions + # 2 = When executed genome_length * AGE_LIMIT (+dev) instructions +AGE_LIMIT 30 # See DEATH_METHOD +AGE_DEVIATION 0 # Creates a normal distribution around AGE_LIMIT for time of death +ALLOC_METHOD 0 # When allocating blank tape, how should it be initialized? + # 0 = Allocated space is set to default instruction. + # 1 = Set to section of dead genome (creates potential for recombination) + # 2 = Allocated space is set to random instruction. +DIVIDE_METHOD 1 # 0 = Divide leaves state of mother untouched. + # 1 = Divide resets state of mother(effectively creating 2 offspring) + # 2 = Divide resets state of current thread only (use with parasites) +EPIGENETIC_METHOD 0 # Inheritance of state information other than genome + # 0 = none + # 1 = offspring inherits registers and stacks of first thread + # 1 = parent maintains registers and stacks of first thread + # + # 1 = offspring and parent keep state information +GENERATION_INC_METHOD 1 # 0 = Only increase generation of offspring on divide. + # 1 = Increase generation of both parent and offspring + # (suggested with DIVIDE_METHOD 1). +RESET_INPUTS_ON_DIVIDE 0 # Reset environment inputs of parent upon successful divide. +INHERIT_MERIT 0 # Should merit be inhereted from mother parent? (in asexual) +INHERIT_MULTITHREAD 0 # Should offspring of parents with multiple threads be marked multithreaded? + +### DIVIDE_GROUP ### +# Divide restrictions and triggers - settings describe conditions for a successful divide +OFFSPRING_SIZE_RANGE 2.0 # Maximal differential between offspring and parent length. + # (Checked BEFORE mutations applied on divide.) +MIN_COPIED_LINES 0.5 # Code fraction that must be copied before divide +MIN_EXE_LINES 0.5 # Code fraction that must be executed before divide +MIN_GENOME_SIZE 0 # Minimum number of instructions allowed in a genome. 0 = OFF +MAX_GENOME_SIZE 0 # Maximum number of instructions allowed in a genome. 0 = OFF +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 +IMMUNITY_REACTION -1 # Reaction ID that provides immunity for successful divide +REQUIRE_SINGLE_REACTION 1 # If set to 1, at least one reaction is required for a successful divide +REQUIRED_BONUS 0.0 # Required bonus to divide +REQUIRE_EXACT_COPY 0 # Require offspring to be an exact copy (checked before divide mutations) +REQUIRED_RESOURCE -1 # ID of resource required in organism's internal bins for successful + # divide (resource not consumed) +REQUIRED_RESOURCE_LEVEL 0.0 # Level of resource needed for REQUIRED_RESOURCE +IMPLICIT_REPRO_BONUS 0 # Call Inst_Repro to divide upon achieving this bonus. 0 = OFF +IMPLICIT_REPRO_CPU_CYCLES 0 # Call Inst_Repro after this many cpu cycles. 0 = OFF +IMPLICIT_REPRO_TIME 0 # Call Inst_Repro after this time used. 0 = OFF +IMPLICIT_REPRO_END 0 # Call Inst_Repro after executing the last instruction in the genome. +IMPLICIT_REPRO_ENERGY 0.0 # Call Inst_Repro if organism accumulates this amount of energy. + +### 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 (-1 = unlimited) +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 # 0 = Both offspring are born (no two-fold cost) + # 1 = only one recombined offspring is born. +SAME_LENGTH_SEX 0 # 0 = Recombine with any genome + # 1 = Recombine only w/ same length +ALLOW_MATE_SELECTION 0 # Allow organisms to select mates (requires instruction set support) + +### PARASITE_GROUP ### +# Parasite config options +INJECT_METHOD 1 # What should happen to a parasite when it gives birth? + # 0 = Leave the parasite thread state untouched. + # 1 = Resets the state of the calling thread (for SMT parasites, this must be 1) +INJECT_PROB_FROM_TASKS 0 # Inject occurs based on probability from performing tasks - 11*numTasks +INJECT_STERILIZES_HOST 0 # Infection causes host steralization +INJECT_IS_VIRULENT 0 # Infection causes host steralization and takes all cpu cycles (setting this to 1 will override inject_virulence) +PARASITE_SKIP_REACTIONS 1 # Parasite tasks do not get processed in the environment (1) or they do trigger reactions (0) +INJECT_IS_TASK_SPECIFIC 1 # Parasites must match a task done by the host they are trying to infect +INJECT_SKIP_FIRST_TASK 0 # They cannot match the first task the host is doing to infect +INJECT_DEFAULT_SUCCESS 0.0 # If injection is task specific, with what probability should non-matching parasites infect the host +PARASITE_VIRULENCE 0.85 # The probabalistic percentage of cpu cycles allocated to the parasite instead of the host. Ensure INJECT_IS_VIRULENT is set to 0. This only works for single infection at the moment +PARASITE_MEM_SPACES 1 # Parasites get their own memory spaces +PARASITE_NO_COPY_MUT 1 # Parasites do not get copy mutation rates + +### ARCHETECTURE_GROUP ### +# Details on how CPU should work +IO_EXPIRE 1 # Is the expiration functionality of '-expire' I/O instructions enabled? + +### MP_GROUP ### +# Config options for multiple, distributed populations +ENABLE_MP 0 # Enable multi-process Avida; 0=disabled (default), + # 1=enabled. +MP_SCHEDULING_STYLE 0 # Style of scheduling: + # 0=non-MP aware (default) + # 1=MP aware, integrated across worlds. + +### DEME_GROUP ### +# Demes and Germlines +DEMES_COMPETITION_STYLE 0 # How should demes compete? + # 0=Fitness proportional selection + # 1=Tournament selection +DEMES_TOURNAMENT_SIZE 0 # Number of demes that participate in a tournament +DEMES_OVERRIDE_FITNESS 0 # Should the calculated fitness is used? + # 0=yes (default) + # 1=no (all fitnesses=1) +DEMES_USE_GERMLINE 0 # Should demes use a distinct germline? +DEMES_PREVENT_STERILE 0 # Prevent sterile demes from replicating? +DEMES_RESET_RESOURCES 0 # Reset resources in demes on replication? + # 0 = reset both demes + # 1 = reset target deme + # 2 = deme resources remain unchanged +DEMES_REPLICATE_SIZE 1 # Number of identical organisms to create or copy from the + # source deme to the target deme +LOG_DEMES_REPLICATE 0 # Log deme replications? +DEMES_REPLICATE_LOG_START 0 # Update at which to start logging deme replications +DEMES_PROB_ORG_TRANSFER 0.0 # Probablity of an organism being transferred from the + # source deme to the target deme +DEMES_ORGANISM_SELECTION 0 # How should organisms be selected for transfer from + # source to target during deme replication? + # 0 = random with replacement + # 1 = sequential +DEMES_ORGANISM_PLACEMENT 0 # How should organisms be placed during deme replication. + # 0 = cell-array middle + # 1 = deme center + # 2 = random placement + # 3 = sequential +DEMES_ORGANISM_FACING 0 # Which direction should organisms face after deme replication. + # 0 = unchanged + # 1 = northwest. + # 2 = random. +DEMES_MAX_AGE 500 # The maximum age of a deme (in updates) to be + # used for age-based replication +DEMES_MAX_BIRTHS 100 # Max number of births that can occur within a deme; + # used with birth-count replication +DEMES_MIM_EVENTS_KILLED_RATIO 0.7 # Minimum ratio of events killed required for event period to be a success. +DEMES_MIM_SUCCESSFUL_EVENT_PERIODS 1 # Minimum number of consecutive event periods that must be a success. +GERMLINE_COPY_MUT 0.0075 # Prob. of copy mutations during germline replication +GERMLINE_INS_MUT 0.05 # Prob. of insertion mutations during germline replication +GERMLINE_DEL_MUT 0.05 # Prob. of deletion mutations during germline replication +DEMES_REPLICATE_CPU_CYCLES 0.0 # Replicate a deme immediately after it has used this many + # cpu cycles per org in deme (0 = OFF). +DEMES_REPLICATE_TIME 0.0 # Number of CPU cycles used by a deme to trigger its replication + # (normalized by number of orgs in deme and organism merit; 0 = OFF). +DEMES_REPLICATE_BIRTHS 0 # Number of offspring produced by a deme to trigger its replication (0 = OFF). +DEMES_REPLICATE_ORGS 0 # Number of organisms in a deme to trigger its replication (0 = OFF). +DEMES_REPLICATION_ONLY_RESETS 0 # Kin selection mode. On replication: + # 0 = Nothing extra + # 1 = reset deme resources + # 2 = reset resources and re-inject organisms +DEMES_MIGRATION_RATE 0.0 # Probability of an offspring being born in a different deme. +DEMES_MIGRATION_METHOD 0 # Which demes can an org land in when it migrates? + # 0 = Any other deme + # 1 = Eight neighboring demes + # 2 = Two adjacent demes in list + # 3 = Proportional based on the number of points +DEMES_NUM_X 0 # Simulated number of demes in X dimension. Used only for migration. +DEMES_SEED_METHOD 0 # Deme seeding method. + # 0 = Maintain old consistency + # 1 = New method using genotypes +DEMES_DIVIDE_METHOD 0 # Deme divide method. Only works with DEMES_SEED_METHOD 1 + # 0 = Replace and target demes + # 1 = Replace target deme, reset source deme to founders + # 2 = Replace target deme, leave source deme unchanged +DEMES_DEFAULT_GERMLINE_PROPENSITY 0.0 # Default germline propensity of organisms in deme. + # For use with DEMES_DIVIDE_METHOD 2. +DEMES_FOUNDER_GERMLINE_PROPENSITY -1.0 # Default germline propensity of founder organisms in deme. + # For use with DEMES_DIVIDE_METHOD 2. + # <0 = OFF +DEMES_PREFER_EMPTY 0 # Give empty demes preference as targets of deme replication? +DEMES_PROTECTION_POINTS 0 # The number of points a deme receives for each suicide. +MIGRATION_RATE 0.0 # Uniform probability of offspring migrating to a new deme. +DEMES_TRACK_SHANNON_INFO 0 # Enable shannon mutual information tracking for demes. + +### REVERSION_GROUP ### +# Mutation Reversion +# Most of these slow down avida a lot, and should be set to 0.0 normally. +REVERT_FATAL 0.0 # Prob of lethal mutations being reverted on birth +REVERT_DETRIMENTAL 0.0 # Prob of harmful (but non-lethal) mutations reverting on birth +REVERT_NEUTRAL 0.0 # Prob of neutral mutations being reverted on birth +REVERT_BENEFICIAL 0.0 # Prob of beneficial mutations being reverted on birth +REVERT_TASKLOSS 0.0 # Prob of mutations that cause task loss (without any gains) being reverted +STERILIZE_FATAL 0.0 # Prob of lethal mutations steralizing an offspring (typically no effect!) +STERILIZE_DETRIMENTAL 0.0 # Prob of harmful (but non-lethal) mutations steralizing an offspring +STERILIZE_NEUTRAL 0.0 # Prob of neutral mutations steralizing an offspring +STERILIZE_BENEFICIAL 0.0 # Prob of beneficial mutations steralizing an offspring +STERILIZE_TASKLOSS 0.0 # Prob of mutations causing task loss steralizing an offspring +STERILIZE_UNSTABLE 0 # Should genotypes that cannot replicate perfectly not be allowed to replicate? +NEUTRAL_MAX 0.0 # Percent benifical change from parent fitness to be considered neutral. +NEUTRAL_MIN 0.0 # Percent deleterious change from parent fitness to be considered neutral. + +### TIME_GROUP ### +# Time Slicing +AVE_TIME_SLICE 30 # Average number of CPU-cycles per org per update +SLICING_METHOD 1 # 0 = CONSTANT: all organisms receive equal number of CPU cycles + # 1 = PROBABILISTIC: CPU cycles distributed randomly, proportional to merit. + # 2 = INTEGRATED: CPU cycles given out deterministicly, proportional to merit + # 3 = DEME_PROBABALISTIC: Demes receive fixed number of CPU cycles, awarded probabalistically to members + # 4 = CROSS_DEME_PROBABALISTIC: Demes receive CPU cycles proportional to living population size, awarded probabalistically to members + # 5 = CONSTANT BURST: all organisms receive equal number of CPU cycles, in SLICING_BURST_SIZE chunks +SLICING_BURST_SIZE 1 # Sets the scheduler burst size for SLICING_METHOD 5. +BASE_MERIT_METHOD 4 # How should merit be initialized? + # 0 = Constant (merit independent of size) + # 1 = Merit proportional to copied size + # 2 = Merit prop. to executed size + # 3 = Merit prop. to full size + # 4 = Merit prop. to min of executed or copied size + # 5 = Merit prop. to sqrt of the minimum size + # 6 = Merit prop. to num times MERIT_BONUS_INST is in genome. +BASE_CONST_MERIT 100 # Base merit valse for BASE_MERIT_METHOD 0 +MERIT_BONUS_INST 0 # Instruction ID to count for BASE_MERIT_METHOD 6 +MERIT_BONUS_EFFECT 0 # Amount of merit earn per instruction for BASE_MERIT_METHOD 6 (-1 = penalty, 0 = no effect) +FITNESS_VALLEY 0 # in BASE_MERIT_METHOD 6, this creates valleys from + # FITNESS_VALLEY_START to FITNESS_VALLEY_STOP + # (0 = off, 1 = on) +FITNESS_VALLEY_START 0 # if FITNESS_VALLEY = 1, orgs with num_key_instructions + # from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP + # get fitness 1 (lowest) +FITNESS_VALLEY_STOP 0 # if FITNESS_VALLEY = 1, orgs with num_key_instructions + # from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP + # get fitness 1 (lowest) +DEFAULT_BONUS 1.0 # Initial bonus before any tasks +MERIT_DEFAULT_BONUS 0 # Instead of inheriting bonus from parent, use this value instead (0 = off) +MERIT_INC_APPLY_IMMEDIATE 1 # Should merit increases (above current) be applied immediately, or delayed until divide? +TASK_REFRACTORY_PERIOD 0.0 # Number of updates after taske until regain full value +FITNESS_METHOD 0 # 0 = default, 1 = sigmoidal, +FITNESS_COEFF_1 1.0 # 1st FITNESS_METHOD parameter +FITNESS_COEFF_2 1.0 # 2nd FITNESS_METHOD parameter +MAX_CPU_THREADS 2 # Maximum number of Threads a CPU can spawn +THREAD_SLICING_METHOD 0 # Formula for allocating CPU cycles across threads in an organism + # (num_threads-1) * THREAD_SLICING_METHOD + 1 + # 0 = One thread executed per time slice. + # 1 = All threads executed each time slice. +NO_CPU_CYCLE_TIME 0 # Don't count each CPU cycle as part of gestation time +MAX_LABEL_EXE_SIZE 1 # Max nops marked as executed when labels are used +PRECALC_PHENOTYPE 0 # 0 = Disabled + # 1 = Assign precalculated merit at birth (unlimited resources only) + # 2 = Assign precalculated gestation time + # 3 = Assign precalculated merit AND gestation time. + # 4 = Assign last instruction counts + # 5 = Assign last instruction counts and merit + # 6 = Assign last instruction counts and gestation time + # 7 = Assign everything currently supported + # Fitness will be evaluated for organism based on these settings. +FASTFORWARD_UPDATES 0 # Fast-forward if the average generation has not changed in this many updates. (0 = off) +FASTFORWARD_NUM_ORGS 0 # Fast-forward if population is equal to this +GENOTYPE_PHENPLAST_CALC 100 # Number of times to test a genotype's + # plasticity during runtime. + +### ALTRUISM_GROUP ### +# Altrusim +MERIT_GIVEN 0.0 # Fraction of merit donated with 'donate' command +MERIT_RECEIVED 0.0 # Multiplier of merit given with 'donate' command +MAX_DONATE_KIN_DIST -1 # Limit on distance of relation for donate; -1=no max +MAX_DONATE_EDIT_DIST -1 # Limit on genetic (edit) distance for donate; -1=no max +MIN_GB_DONATE_THRESHOLD -1 # threshold green beard donates only to orgs above this + # donation attempt threshold; -1=no thresh +DONATE_THRESH_QUANTA 10 # The size of steps between quanta donate thresholds +MAX_DONATES 1000000 # Limit on number of donates organisms are allowed. + +### GENEOLOGY_GROUP ### +# Geneology +THRESHOLD 3 # Number of organisms in a genotype needed for it + # to be considered viable. +TEST_CPU_TIME_MOD 20 # Time allocated in test CPUs (multiple of length) + +### LOG_GROUP ### +# Log Files +LOG_GENOTYPES 0 # 0 = off, 1 = print ALL, 2 = print threshold ONLY. +LOG_THRESHOLD 0 # 0/1 (off/on) toggle to print file. +LOG_LINEAGES 0 # Track lineages over time? + # WARNING: Can slow Avida a lot! +LINEAGE_CREATION_METHOD 0 # Requires LOG_LINEAGES = 1 + # 0 = Manual creation (on inject) + # 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 +TRACE_EXECUTION 0 # Trace the execution of all organisms in the population (WARNING: SLOW!) + +### 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 +NET_LOG_MESSAGES 0 # Whether all messages are logged; 0=false (default), 1=true. + +### ORGANISM_MESSAGING_GROUP ### +# Organism Message-Based Communication +MESSAGE_SEND_BUFFER_SIZE 1 # Size of message send buffer (stores messages that were sent) + # TASKS NOT CHECKED ON 0! + # -1=inf, default=1. +MESSAGE_RECV_BUFFER_SIZE 8 # Size of message receive buffer (stores messages that are received); -1=inf, default=8. +MESSAGE_RECV_BUFFER_BEHAVIOR 0 # Behavior of message receive buffer; 0=drop oldest (default), 1=drop incoming +ACTIVE_MESSAGES_ENABLED 0 # Enable active messages. + # 0 = off + # 2 = message creates parallel thread + +### 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 + +### HOARD_RESOURCE_GROUP ### +# Resource Hoarding Parameters +USE_RESOURCE_BINS 0 # Enable resource bin use. This serves as a guard on most resource hoarding code. +ABSORB_RESOURCE_FRACTION .0025 # Fraction of available environmental resource an organism absorbs. +MULTI_ABSORB_TYPE 0 # What to do if a collect instruction is called on a range of resources. + # 0 = absorb a random resource in the range + # 1 = absorb the first resource in the range + # 2 = absorb the last resource in the range + # 3 = absorb ABSORB_RESOURCE_FRACTION / (# of resources in range) of each resource in the range +MAX_TOTAL_STORED -1 # Maximum total amount of all resources an organism can store. + # <0 = no maximum +USE_STORED_FRACTION 1.0 # The fraction of stored resource to use. +ENV_FRACTION_THRESHOLD 1.0 # The fraction of available environmental resource to compare available stored resource to when deciding whether to use stored resource. +RETURN_STORED_ON_DEATH 1 # Return an organism's stored resources to the world when it dies? +SPLIT_ON_DIVIDE 1 # Split mother cell's resources between two daughter cells on division? +COLLECT_SPECIFIC_RESOURCE 0 # Resource to be collected by the "collect-specific" instruction + +### ANALYZE_GROUP ### +# Analysis Settings +MAX_CONCURRENCY -1 # Maximum number of analyze threads, -1 == use all available. +ANALYZE_OPTION_1 # String variable accessible from analysis scripts +ANALYZE_OPTION_2 # String variable accessible from analysis scripts + +### ENERGY_GROUP ### +# Energy Settings +ENERGY_ENABLED 0 # Enable Energy Model. 0/1 (off/on) +ENERGY_GIVEN_ON_INJECT 0.0 # Energy given to organism upon injection. +ENERGY_GIVEN_AT_BIRTH 0.0 # Energy given to offspring upon birth. +FRAC_PARENT_ENERGY_GIVEN_TO_ORG_AT_BIRTH 0.5 # Fraction of parent's energy given to offspring organism. +FRAC_PARENT_ENERGY_GIVEN_TO_DEME_AT_BIRTH 0.5 # Fraction of parent's energy given to offspring deme. +FRAC_ENERGY_DECAY_AT_ORG_BIRTH 0.0 # Fraction of energy lost due to decay during organism reproduction. +FRAC_ENERGY_DECAY_AT_DEME_BIRTH 0.0 # Fraction of energy lost due to decay during deme reproduction. +NUM_CYCLES_EXC_BEFORE_0_ENERGY 0 # Number of virtual CPU cycles executed before energy is exhausted. +ENERGY_CAP -1.0 # Maximum amount of energy that can be stored in an organism. -1 = no max +APPLY_ENERGY_METHOD 0 # When should rewarded energy be applied to current energy? + # 0 = on divide + # 1 = on completion of task + # 2 = on sleep +FIX_METABOLIC_RATE -1.0 # Fix organism metobolic rate to value. This value is static. Feature disabled by default (value == -1) +FRAC_ENERGY_TRANSFER 0.0 # Fraction of replaced organism's energy take by new resident +LOG_SLEEP_TIMES 0 # Log sleep start and end times. 0/1 (off/on) + # WARNING: may use lots of memory. +FRAC_ENERGY_RELINQUISH 1.0 # Fraction of organisms energy to relinquish +ENERGY_PASSED_ON_DEME_REPLICATION_METHOD 0 # Who get energy passed from a parent deme + # 0 = Energy divided among organisms injected to offspring deme + # 1 = Energy divided among cells in offspring deme +INHERIT_EXE_RATE 0 # Inherit energy rate from parent? 0=no 1=yes +ATTACK_DECAY_RATE 0.0 # Percent of cell's energy decayed by attack +ENERGY_THRESH_LOW .33 # Threshold percent below which energy level is considered low. Requires ENERGY_CAP. +ENERGY_THRESH_HIGH .75 # Threshold percent above which energy level is considered high. Requires ENERGY_CAP. +ENERGY_COMPARISON_EPSILON 0.0 # Percent difference (relative to executing organism) required in energy level comparisons +ENERGY_REQUEST_RADIUS 1 # Radius of broadcast energy request messages. + +### ENERGY_SHARING_GROUP ### +# Energy Sharing Settings +ENERGY_SHARING_METHOD 0 # Method for sharing energy. 0=receiver must actively receive/request, 1=energy pushed on receiver +ENERGY_SHARING_PCT 0.0 # Percent of energy to share +ENERGY_SHARING_INCREMENT 0.01 # Amount to change percent energy shared +RESOURCE_SHARING_LOSS 0.0 # Fraction of shared resource lost in transfer +ENERGY_SHARING_UPDATE_METABOLIC 0 # 0/1 (off/on) - Whether to update an organism's metabolic rate on donate or reception/application of energy +LOG_ENERGY_SHARING 0 # Whether or not to log energy shares. 0/1 (off/on) + +### SECOND_PASS_GROUP ### +# Tracking metrics known after the running experiment previously +TRACK_CCLADES 0 # Enable tracking of coalescence clades +TRACK_CCLADES_IDS coalescence.ids # File storing coalescence IDs + +### GX_GROUP ### +# Gene Expression CPU Settings +MAX_PROGRAMIDS 16 # Maximum number of programids an organism can create. +MAX_PROGRAMID_AGE 2000 # Max number of CPU cycles a programid executes before it is removed. +IMPLICIT_GENE_EXPRESSION 0 # Create executable programids from the genome without explicit allocation and copying? +IMPLICIT_BG_PROMOTER_RATE 0.0 # Relative rate of non-promoter sites creating programids. +IMPLICIT_TURNOVER_RATE 0.0 # Number of programids recycled per CPU cycle. 0 = OFF +IMPLICIT_MAX_PROGRAMID_LENGTH 0 # Creation of an executable programid terminates after this many instructions. 0 = disabled + +### PROMOTER_GROUP ### +# Promoters +PROMOTERS_ENABLED 0 # Use the promoter/terminator execution scheme. + # Certain instructions must also be included. +PROMOTER_INST_MAX 0 # Maximum number of instructions to execute before terminating. 0 = off +PROMOTER_PROCESSIVITY 1.0 # Chance of not terminating after each cpu cycle. +PROMOTER_PROCESSIVITY_INST 1.0 # Chance of not terminating after each instruction. +PROMOTER_TO_REGISTER 0 # Place a promoter's base bit code in register BX when starting execution from it? +TERMINATION_RESETS 0 # Does termination reset the thread's state? +NO_ACTIVE_PROMOTER_EFFECT 0 # What happens when there are no active promoters? + # 0 = Start execution at the beginning of the genome. + # 1 = Kill the organism. + # 2 = Stop the organism from executing any further instructions. +PROMOTER_CODE_SIZE 24 # Size of a promoter code in bits. (Maximum value is 32) +PROMOTER_EXE_LENGTH 3 # Length of promoter windows used to determine execution. +PROMOTER_EXE_THRESHOLD 2 # Minimum number of bits that must be set in a promoter window to allow execution. +INST_CODE_LENGTH 3 # Instruction binary code length (number of bits) +INST_CODE_DEFAULT_TYPE 0 # Default value of instruction binary code value. + # 0 = All zeros + # 1 = Based off the instruction number +CONSTITUTIVE_REGULATION 0 # Sense a new regulation value before each CPU cycle? + +### COLORS_GROUP ### +# Output colors for when data files are printed in HTML mode. +# There are two sets of these; the first are for lineages, +# and the second are for mutation tests. +COLOR_DIFF CCCCFF # Color to flag stat that has changed since parent. +COLOR_SAME FFFFFF # Color to flag stat that has NOT changed since parent. +COLOR_NEG2 FF0000 # Color to flag stat that is significantly worse than parent. +COLOR_NEG1 FFCCCC # Color to flag stat that is minorly worse than parent. +COLOR_POS1 CCFFCC # Color to flag stat that is minorly better than parent. +COLOR_POS2 00FF00 # Color to flag stat that is significantly better than parent. +COLOR_MUT_POS 00FF00 # Color to flag stat that has changed since parent. +COLOR_MUT_NEUT FFFFFF # Color to flag stat that has changed since parent. +COLOR_MUT_NEG FFFF00 # Color to flag stat that has changed since parent. +COLOR_MUT_LETHAL FF0000 # Color to flag stat that has changed since parent. + +### MOVEMENT_GROUP ### +# Movement Features Settings +MOVEMENT_COLLISIONS_LETHAL 0 # Are collisions during movement lethal? +MOVEMENT_COLLISIONS_SELECTION_TYPE 0 # 0 = 50% chance + # 1 = binned vitality based +VITALITY_BIN_EXTREMES 1.0 # vitality multiplier for extremes (> 1 stddev from the mean population age) +VITALITY_BIN_CENTER 5.0 # vitality multiplier for center bin (with 1 stddev of the mean population age) + +### PHEROMONE_GROUP ### +# Pheromone Settings +PHEROMONE_ENABLED 0 # Enable pheromone usage. 0/1 (off/on) +PHEROMONE_AMOUNT 1.0 # Amount of pheromone to add per drop +PHEROMONE_DROP_MODE 0 # Where to drop pheromone + # 0 = Half amount at src, half at dest + # 1 = All at source + # 2 = All at dest +EXPLOIT_EXPLORE_PROB 0.00 # Probability of random exploration + # instead of pheromone trail following +LOG_PHEROMONE 0 # Log pheromone drops. 0/1 (off/on) +PHEROMONE_LOG_START 0 # Update at which to start logging pheromone drops +EXPLOIT_LOG_START 0 # Update at which to start logging exploit moves +EXPLORE_LOG_START 0 # Update at which to start logging explore moves +MOVETARGET_LOG_START 0 # Update at which to start logging movetarget moves +LOG_INJECT 0 # Log injection of organisms. 0/1 (off/on) +INJECT_LOG_START 0 # Update at which to start logging injection of + # organisms + +### SYNCHRONIZATION_GROUP ### +# Synchronization settings +SYNC_FITNESS_WINDOW 100 # Number of updates over which to calculate fitness (default=100). +SYNC_FLASH_LOSSRATE 0.0 # P() to lose a flash send (0.0==off). +SYNC_TEST_FLASH_ARRIVAL -1 # CPU cycle at which an organism will receive a flash (off=-1, default=-1, analyze mode only.) + +### CONSENSUS_GROUP ### +# Consensus settings +CONSENSUS_HOLD_TIME 1 # Number of updates that consensus must be held for. + +### REPUTATION_GROUP ### +# Reputation Settings +RAW_MATERIAL_AMOUNT 100 # Number of raw materials an organism starts with +AUTO_REPUTATION 0 # Is an organism's reputation automatically computed based on its donations + # 0=no + # 1=increment for each donation + standing + # 2=+1 for donations given -1 for donations received + # 3=1 for donors -1 for recivers who have not donated + # 4=+1 for donors + # 5=+1 for donors during task check +ALT_BENEFIT 1.00 # Number multiplied by the number of raw materials received from another organism to compute reward +ALT_COST 1.00 # Number multiplied by the number of your raw materials +ROTATE_ON_DONATE 0 # Rotate an organism to face its donor 0/1 (off/on) +REPUTATION_REWARD 0 # Reward an organism for having a good reputation +DONATION_FAILURE_PERCENT 0 # Percentage of times that a donation fails +RANDOMIZE_RAW_MATERIAL_AMOUNT 0 # Should all the organisms receive the same amount 0/1 (off/on) +DONATION_RESTRICTIONS 0 # 0=none + # 1=inter-species only + # 2=different tag only +INHERIT_REPUTATION 0 # 0=reputations are not inherited + # 1=reputations are inherited + # 2=tags are inherited +SPECIALISTS 0 # 0=generalists allowed + # 1=only specialists +STRING_AMOUNT_CAP -1 # -1=no cap on string amounts + # #=CAP +MATCH_ALREADY_PRODUCED 0 # 0=off + # 1=on + +### GROUP_FORMATION_GROUP ### +# Group Formation Settings +USE_FORM_GROUPS 0 # Enable organisms to form groups. 0=off, + # 1=on no restrict, + # 2=on restrict to defined +DEFAULT_GROUP -1 # Default group to assign to organisms not asserting a group membership (-1 indicates disabled) + +### DEME_NETWORK_GROUP ### +# Deme network settings +DEME_NETWORK_TYPE 0 # 0=topology, structure of network determines fitness. +DEME_NETWORK_REQUIRES_CONNECTEDNESS 1 # Whether the deme's network must be connected before an actual fitness is calculated. +DEME_NETWORK_TOPOLOGY_FITNESS 0 # Network measure used to determine fitness; see cDemeTopologyNetwork.h. +DEME_NETWORK_LINK_DECAY 0 # Number of updates after which a link decays; 0=no decay (default). +DEME_NETWORK_REMOVE_NODE_ON_DEATH 0 # Whether death of an organism in + # the deme removes its links; + # 0=no (default); + # 1=yes. + +### HGT_GROUP ### +# Horizontal gene transfer settings +ENABLE_HGT 0 # Whether HGT is enabled; 0=false (default), + # 1=true. +HGT_SOURCE 0 # Source of HGT fragments; 0=dead organisms (default), + # 1=parent. +HGT_FRAGMENT_SELECTION 0 # Method used to select fragments for HGT mutation; 0=random (default), + # 1=trimmed selection + # 2=random placement. +HGT_FRAGMENT_SIZE_MEAN 10 # Mean size of fragments (default=10). +HGT_FRAGMENT_SIZE_VARIANCE 2 # Variance of fragments (default=2). +HGT_MAX_FRAGMENTS_PER_CELL 100 # Max. allowed number of fragments per cell (default=100). +HGT_DIFFUSION_METHOD 0 # Method to use for diffusion of genome fragments; 0=none (default). +HGT_COMPETENCE_P 0.0 # Probability that an HGT 'natural competence' mutation will occur on divide (default=0.0). +HGT_INSERTION_MUT_P 0.0 # Probability that an HGT mutation will result in an insertion (default=0.0). +HGT_CONJUGATION_METHOD 0 # Method used to select the receiver and/or donor of an HGT conjugation; + # 0=random from neighborhood (default); + # 1=faced. +HGT_CONJUGATION_P 0.0 # Probability that an HGT conjugation mutation will occur on divide (default=0.0). +HGT_FRAGMENT_XFORM 0 # Transformation to apply to each fragment prior to incorporation into offspring's genome; 0=none (default), + # 1=random shuffle, + # 2=replace with random instructions. + +### INST_RES_GROUP ### +# Resource-Dependent Instructions Settings +INST_RES # Resource upon which the execution of certain instruction depends +INST_RES_FLOOR 0.0 # Assumed lower level of resource in environment. Used for probability dist. +INST_RES_CEIL 0.0 # Assumed upper level of resource in environment. Used for probability dist. + +### OPINION_GROUP ### +# Organism opinion settings +OPINION_BUFFER_SIZE 1 # Size of the opinion buffer (stores opinions set over the organism's lifetime); -1=inf, default=1, cannot be 0. + +### ALARM_GROUP ### +# Alarm Settings +BCAST_HOPS 1 # Number of hops to broadcast an alarm +ALARM_SELF 0 # Does sending an alarm move sender IP to alarm label? + # 0=no + # 1=yes + +### DIVISION_OF_LABOR_GROUP ### +# Division of Labor settings +AGE_POLY_TRACKING 0 # Print data for an age-task histogram +REACTION_THRESH 0 # The number of times the deme must perform each reaction in order to replicate +TASK_SWITCH_PENALTY 0 # Cost of task switching in cycles +TASK_SWITCH_PENALTY_TYPE 0 # Type of task switch cost: (0) none (1) learning, (2) retooling or context, (3) centrifuge +RES_FOR_DEME_REP 0 # The amount of resources that must be consumed prior to automatic deme replication + +### DEPRECATED_GROUP ### +# DEPRECATED (New functionality listed in comments) +ANALYZE_MODE 0 # 0 = Disabled + # 1 = Enabled + # 2 = Interactive + # DEPRECATED: use command line options -a[nalyze] or -i[nteractive]) +REPRO_METHOD 1 # Replace existing organism: 1=yes + # DEPRECATED: Use BIRTH_METHOD 3 instead. +LEGACY_GRID_LOCAL_SELECTION 0 # Enable legacy grid local mate selection. + # DEPRECATED: Birth chameber now uses population structure) +HARDWARE_TYPE 2 # 0 = Default, heads-based CPUs + # 1 = New SMT CPUs + # 2 = Transitional SMT + # 3 = Experimental CPU + # 4 = Gene Expression CPU +INST_SET - # Instruction set file ('-' = use default for hardware type) +INST_SET_LOAD_LEGACY 0 # Load legacy format instruction set file format + +### DEVEL_GROUP ### +# IN DEVELOPMENT (May not function correctly) +WORLD_Z 1 # Depth of the Avida world + +#include INST_SET=instset-transsmt.cfg diff --git a/avida-core/tests/demes_KillDemesHighestParasiteLoad/config/environment.cfg b/avida-core/tests/demes_KillDemesHighestParasiteLoad/config/environment.cfg new file mode 100644 index 000000000..a68e81b37 --- /dev/null +++ b/avida-core/tests/demes_KillDemesHighestParasiteLoad/config/environment.cfg @@ -0,0 +1,9 @@ +REACTION NOT not process:value=1.0:type=pow requisite:max_count=1 +REACTION NAND nand process:value=1.0:type=pow requisite:max_count=1 +REACTION AND and process:value=2.0:type=pow requisite:max_count=1 +REACTION ORN orn process:value=2.0:type=pow requisite:max_count=1 +REACTION OR or process:value=3.0:type=pow requisite:max_count=1 +REACTION ANDN andn process:value=3.0:type=pow requisite:max_count=1 +REACTION NOR nor process:value=4.0:type=pow requisite:max_count=1 +REACTION XOR xor process:value=4.0:type=pow requisite:max_count=1 +REACTION EQU equ process:value=5.0:type=pow requisite:max_count=1 diff --git a/avida-core/tests/demes_KillDemesHighestParasiteLoad/config/events.cfg b/avida-core/tests/demes_KillDemesHighestParasiteLoad/config/events.cfg new file mode 100644 index 000000000..6e24d8047 --- /dev/null +++ b/avida-core/tests/demes_KillDemesHighestParasiteLoad/config/events.cfg @@ -0,0 +1,10 @@ +u begin InjectAll filename=evolved-not.org +u begin InjectParasite parasite-smt.org ABB 0 3 +u begin InjectParasite parasite-smt.org ABB 17 +u begin InjectParasite parasite-smt.org ABB 170 +u begin InjectParasite parasite-smt.org ABB 200 203 +u begin SavePopulation +u 2 KillDemesHighestParasiteLoad 1.0 1 +u 2 SavePopulation +u 3 SavePopulation +u 3 Exit diff --git a/avida-core/tests/demes_KillDemesHighestParasiteLoad/config/evolved-not.org b/avida-core/tests/demes_KillDemesHighestParasiteLoad/config/evolved-not.org new file mode 100644 index 000000000..9680c6f66 --- /dev/null +++ b/avida-core/tests/demes_KillDemesHighestParasiteLoad/config/evolved-not.org @@ -0,0 +1,321 @@ +Search +Nop-C +Nop-D +Push-Prev +SetMemory +Nop-A +Nop-D +Nop-D +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 +IO +IO +IO +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Val-Nand +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +IO +Nop-C +Nop-C +Nop-C +Nop-C +Val-Copy +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-D +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +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 +Push-Prev +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +If-Greater +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +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-Erase +Head-Move +Nop-A +Nop-B + diff --git a/avida-core/tests/demes_KillDemesHighestParasiteLoad/config/instset-transsmt.cfg b/avida-core/tests/demes_KillDemesHighestParasiteLoad/config/instset-transsmt.cfg new file mode 100644 index 000000000..aa2a05df2 --- /dev/null +++ b/avida-core/tests/demes_KillDemesHighestParasiteLoad/config/instset-transsmt.cfg @@ -0,0 +1,35 @@ +INSTSET transsmt:hw_type=2 + +INST Nop-A +INST Nop-B +INST Nop-C +INST Nop-D +INST Val-Shift-R +INST Val-Shift-L +INST Val-Nand +INST Val-Add +INST Val-Sub +INST Val-Mult +INST Val-Div +INST Val-Mod +INST Val-Inc +INST Val-Dec +INST SetMemory +INST Inst-Read +INST Inst-Write +INST If-Equal +INST If-Not-Equal +INST If-Less +INST If-Greater +INST Head-Push +INST Head-Pop +INST Head-Move +INST Search +INST Push-Next +INST Push-Prev +INST Push-Comp +INST Val-Delete +INST Val-Copy +INST IO +INST Inject +INST Divide-Erase diff --git a/avida-core/tests/demes_KillDemesHighestParasiteLoad/config/parasite-smt.org b/avida-core/tests/demes_KillDemesHighestParasiteLoad/config/parasite-smt.org new file mode 100644 index 000000000..3cdf90d52 --- /dev/null +++ b/avida-core/tests/demes_KillDemesHighestParasiteLoad/config/parasite-smt.org @@ -0,0 +1,80 @@ +Search +Nop-C +Nop-D +Push-Prev +IO +Nop-C +If-Equal +Val-Mod +Val-Shift-R +Val-Dec +Nop-B +Val-Sub +IO +If-Equal +Val-Dec +IO +Nop-C +IO +Val-Nand +Nop-C +If-Less +If-Greater +Nop-C +Nop-C +Head-Pop +Head-Pop +Nop-C +Val-Nand +IO +SetMemory +Nop-C +Nop-A +IO +Nop-C +Head-Move +Nop-C +Head-Move +Nop-D +Val-Inc +Search +IO +Val-Shift-L +Val-Sub +Val-Delete +Val-Inc +Val-Delete +IO +Head-Push +Nop-A +Val-Dec +Head-Push +Nop-B +Val-Shift-R +Nop-C +Head-Push +Val-Inc +If-Not-Equal +Nop-B +IO +Nop-C +Nop-A +Nop-C +Nop-C +Val-Dec +Nop-C +Nop-D +SetMemory +Search +Inst-Read +Inst-Write +Head-Push +Nop-C +If-Equal +Inject +Head-Move +Inst-Read +Inst-Read +Head-Move +Nop-A +Nop-B diff --git a/avida-core/tests/demes_KillDemesHighestParasiteLoad/expected/.gitignore b/avida-core/tests/demes_KillDemesHighestParasiteLoad/expected/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/avida-core/tests/demes_KillDemesHighestParasiteLoad/expected/data/detail--1.spop b/avida-core/tests/demes_KillDemesHighestParasiteLoad/expected/data/detail--1.spop new file mode 100644 index 000000000..28aa5e964 --- /dev/null +++ b/avida-core/tests/demes_KillDemesHighestParasiteLoad/expected/data/detail--1.spop @@ -0,0 +1,27 @@ +#filetype genotype_data +#format id src src_args parents num_units total_units length merit gest_time fitness gen_born update_born update_deactivated depth hw_type inst_set sequence cells gest_offset lineage +# Structured Population Save +# Tue Nov 14 20:22:00 2023 +# 1: ID +# 2: Source +# 3: Source Args +# 4: Parent ID(s) +# 5: Number of currently living organisms +# 6: Total number of organisms that ever existed +# 7: Genome Length +# 8: Average Merit +# 9: Average Gestation Time +# 10: Average Fitness +# 11: Generation Born +# 12: Update Born +# 13: Update Deactivated +# 14: Phylogenetic Depth +# 15: Hardware Type ID +# 16: Inst Set Name +# 17: Genome Sequence +# 18: Occupied Cell IDs +# 19: Gestation (CPU) Cycle Offsets +# 20: Lineage Label + +1 div:ext (none) (none) 300 300 320 0 0 0 0 -1 -1 0 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2 horz:int ABB (none) 8 8 80 0 0 0 0 -1 -1 0 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 0,1,2,17,170,200,201,202 -1,-1,-1,-1,-1,-1,-1,-1 diff --git a/avida-core/tests/demes_KillDemesHighestParasiteLoad/expected/data/detail-2.spop b/avida-core/tests/demes_KillDemesHighestParasiteLoad/expected/data/detail-2.spop new file mode 100644 index 000000000..37ff3b414 --- /dev/null +++ b/avida-core/tests/demes_KillDemesHighestParasiteLoad/expected/data/detail-2.spop @@ -0,0 +1,27 @@ +#filetype genotype_data +#format id src src_args parents num_units total_units length merit gest_time fitness gen_born update_born update_deactivated depth hw_type inst_set sequence cells gest_offset lineage +# Structured Population Save +# Tue Nov 14 20:22:00 2023 +# 1: ID +# 2: Source +# 3: Source Args +# 4: Parent ID(s) +# 5: Number of currently living organisms +# 6: Total number of organisms that ever existed +# 7: Genome Length +# 8: Average Merit +# 9: Average Gestation Time +# 10: Average Fitness +# 11: Generation Born +# 12: Update Born +# 13: Update Deactivated +# 14: Phylogenetic Depth +# 15: Hardware Type ID +# 16: Inst Set Name +# 17: Genome Sequence +# 18: Occupied Cell IDs +# 19: Gestation (CPU) Cycle Offsets +# 20: Lineage Label + +1 div:ext (none) (none) 200 300 320 0 0 0 0 -1 -1 0 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2 horz:int ABB (none) 4 8 80 0 0 0 0 -1 -1 0 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 170,200,201,202 -1,-1,-1,-1 diff --git a/avida-core/tests/demes_KillDemesHighestParasiteLoad/expected/data/detail-3.spop b/avida-core/tests/demes_KillDemesHighestParasiteLoad/expected/data/detail-3.spop new file mode 100644 index 000000000..37ff3b414 --- /dev/null +++ b/avida-core/tests/demes_KillDemesHighestParasiteLoad/expected/data/detail-3.spop @@ -0,0 +1,27 @@ +#filetype genotype_data +#format id src src_args parents num_units total_units length merit gest_time fitness gen_born update_born update_deactivated depth hw_type inst_set sequence cells gest_offset lineage +# Structured Population Save +# Tue Nov 14 20:22:00 2023 +# 1: ID +# 2: Source +# 3: Source Args +# 4: Parent ID(s) +# 5: Number of currently living organisms +# 6: Total number of organisms that ever existed +# 7: Genome Length +# 8: Average Merit +# 9: Average Gestation Time +# 10: Average Fitness +# 11: Generation Born +# 12: Update Born +# 13: Update Deactivated +# 14: Phylogenetic Depth +# 15: Hardware Type ID +# 16: Inst Set Name +# 17: Genome Sequence +# 18: Occupied Cell IDs +# 19: Gestation (CPU) Cycle Offsets +# 20: Lineage Label + +1 div:ext (none) (none) 200 300 320 0 0 0 0 -1 -1 0 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2 horz:int ABB (none) 4 8 80 0 0 0 0 -1 -1 0 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 170,200,201,202 -1,-1,-1,-1 diff --git a/avida-core/tests/demes_KillDemesHighestParasiteLoad/test_list b/avida-core/tests/demes_KillDemesHighestParasiteLoad/test_list new file mode 100644 index 000000000..2f7282cca --- /dev/null +++ b/avida-core/tests/demes_KillDemesHighestParasiteLoad/test_list @@ -0,0 +1,36 @@ +;--- Begin Test Configuration File (test_list) --- +[main] +; Command line arguments to pass to the application +args = -s 100 +app = %(default_app)s +nonzeroexit = disallow ; Exit code handling (disallow, allow, or require) + ; disallow - treat non-zero exit codes as failures + ; allow - all exit codes are acceptable + ; require - treat zero exit codes as failures, useful + ; for creating tests for app error checking +createdby = Dave Knoester ; Who created the test +email = dk@cse.msu.edu ; Email address for the test's creator + +[consistency] +enabled = yes ; Is this test a consistency test? +long = no ; Is this test a long test? + +[performance] +enabled = no ; Is this test a performance test? +long = no ; Is this test a long test? + +; The following variables can be used in constructing setting values by calling +; them with %(variable_name)s. For example see 'app' above. +; +; app +; builddir +; cpus +; mode +; perf_repeat +; perf_user_margin +; perf_wall_margin +; svn +; svnmetadir +; svnversion +; testdir +;--- End Test Configuration File --- From cfa5a8514bb9613ec673e67e7047b98fd42eb817 Mon Sep 17 00:00:00 2001 From: Matthew Andres Moreno Date: Tue, 14 Nov 2023 20:24:25 -0500 Subject: [PATCH 06/17] Try switching syntax to placate mac CI --- avida-core/source/main/cPopulation.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/avida-core/source/main/cPopulation.cc b/avida-core/source/main/cPopulation.cc index b3ef07548..8b4765198 100644 --- a/avida-core/source/main/cPopulation.cc +++ b/avida-core/source/main/cPopulation.cc @@ -6705,9 +6705,9 @@ struct sTmpGenotype Apto::Array parent_teacher; Apto::Array parent_ft; - Systematics::Source source{Systematics::TransmissionType::UNKNOWN, "", true}; + Systematics::Source source = Systematics::Source(Systematics::TransmissionType::UNKNOWN, "", true); Systematics::GroupPtr bg; - + inline sTmpGenotype() : id_num(-1), props(NULL) { ; } inline bool operator<(const sTmpGenotype& rhs) const { From 58f0e4059a0e43935a1eda96b39433a7363f7191 Mon Sep 17 00:00:00 2001 From: Matthew Andres Moreno Date: Tue, 14 Nov 2023 22:25:36 -0500 Subject: [PATCH 07/17] Impl, test save/load birth counts --- avida-core/source/actions/SaveLoadActions.cc | 61 ++++++- avida-core/source/main/cDeme.h | 1 + .../demes_loadbirthcounts/config/avida.cfg | 168 ++++++++++++++++++ .../config/detailgermlines-500.sgerm | 11 ++ .../config/environment.cfg | 9 + .../demes_loadbirthcounts/config/events.cfg | 10 ++ .../config/instset-transsmt.cfg | 35 ++++ .../demes_loadbirthcounts/expected/.gitignore | 0 .../expected/data/deme_replication.dat | 1 + .../expected/data/injectlog.dat | 7 + .../expected/data/out-10.sgerm | 12 ++ .../expected/data/out-10.spop | 26 +++ .../tests/demes_loadbirthcounts/test_list | 36 ++++ 13 files changed, 376 insertions(+), 1 deletion(-) create mode 100644 avida-core/tests/demes_loadbirthcounts/config/avida.cfg create mode 100644 avida-core/tests/demes_loadbirthcounts/config/detailgermlines-500.sgerm create mode 100644 avida-core/tests/demes_loadbirthcounts/config/environment.cfg create mode 100644 avida-core/tests/demes_loadbirthcounts/config/events.cfg create mode 100644 avida-core/tests/demes_loadbirthcounts/config/instset-transsmt.cfg create mode 100644 avida-core/tests/demes_loadbirthcounts/expected/.gitignore create mode 100644 avida-core/tests/demes_loadbirthcounts/expected/data/deme_replication.dat create mode 100644 avida-core/tests/demes_loadbirthcounts/expected/data/injectlog.dat create mode 100644 avida-core/tests/demes_loadbirthcounts/expected/data/out-10.sgerm create mode 100644 avida-core/tests/demes_loadbirthcounts/expected/data/out-10.spop create mode 100644 avida-core/tests/demes_loadbirthcounts/test_list diff --git a/avida-core/source/actions/SaveLoadActions.cc b/avida-core/source/actions/SaveLoadActions.cc index 3dfee1bd8..88b45e775 100644 --- a/avida-core/source/actions/SaveLoadActions.cc +++ b/avida-core/source/actions/SaveLoadActions.cc @@ -187,20 +187,23 @@ class cActionSaveGermlines : public cAction { private: cString m_filename; + bool m_birthcounts; public: cActionSaveGermlines(cWorld* world, const cString& args, Feedback& feedback) - : cAction(world, args), m_filename("") + : cAction(world, args), m_filename(""), m_birthcounts(false) { cArgSchema schema(':','='); // String Entries schema.AddEntry("filename", 0, "detailgermlines"); + schema.AddEntry("birthcounts", 0, false); cArgContainer* argc = cArgContainer::Load(args, schema, feedback); if (argc) { m_filename = argc->GetString(0); + m_birthcounts = argc->GetInt(1); } delete argc; @@ -223,6 +226,11 @@ class cActionSaveGermlines : public cAction const auto& genome = germline.GetLatest(); df->Write(i, "Deme ID", "deme_id"); genome.LegacySave(Apto::GetInternalPtr(df)); + if (m_birthcounts) { + df->Write( + deme.GetBirthCount(), "Deme Birth Count", "deme_birth_count" + ); + } df->Endl(); } @@ -302,6 +310,56 @@ class cActionLoadGermlines : public cAction } }; +class cActionLoadBirthCounts : public cAction +{ +private: + cString m_filename; + bool m_verbose; + +public: + cActionLoadBirthCounts(cWorld* world, const cString& args, Feedback& feedback) + : cAction(world, args), m_filename(""), m_verbose(false) + { + cString largs(args); + if (largs.GetSize()) m_filename = largs.PopWord(); + if (largs.GetSize()) m_verbose = largs.PopWord().AsInt(); + } + + static const cString GetDescription() { return "Arguments: [string filename='detailgermlines']"; } + + void Process(cAvidaContext& ctx) { + cInitFile input_file( + m_filename, + m_world->GetWorkingDir(), + ctx.Driver().Feedback() + ); + assert(input_file.WasOpened()); + if (m_verbose) printf( + "LoadBirthCounts input file %s has %d lines.\n", + (const char*)m_filename, + input_file.GetNumLines() + ); + + for (int line_id = 0; line_id < input_file.GetNumLines(); line_id++) { + auto file_props = input_file.GetLineAsDict(line_id); + const int deme_id = Apto::StrAs(file_props->Get("deme_id")); + const int deme_birth_count = Apto::StrAs(file_props->Get("deme_birth_count")); + if (m_verbose) + printf( + "LoadBirthCounts deme %d has %d births.\n", deme_id, deme_birth_count + ); + + auto& deme = m_world->GetPopulation().GetDeme(deme_id); + deme.SetBirthCount(deme_birth_count); + printf( + "LoadBirthCounts set deme %d birth counts to %d.\n", + deme_id, + deme.GetBirthCount() + ); + } + } +}; + class cActionLoadStructuredSystematicsGroup : public cAction { @@ -416,6 +474,7 @@ void RegisterSaveLoadActions(cActionLibrary* action_lib) action_lib->Register("SavePopulation"); action_lib->Register("LoadGermlines"); action_lib->Register("SaveGermlines"); + action_lib->Register("LoadBirthCounts"); action_lib->Register("LoadStructuredSystematicsGroup"); action_lib->Register("SaveStructuredSystematicsGroup"); action_lib->Register("SaveFlameData"); diff --git a/avida-core/source/main/cDeme.h b/avida-core/source/main/cDeme.h index 882dc13de..94c583019 100644 --- a/avida-core/source/main/cDeme.h +++ b/avida-core/source/main/cDeme.h @@ -176,6 +176,7 @@ class cDeme int GetBirthCount() const { return cur_birth_count; } int GetLastBirthCount() const { return last_birth_count; } void IncBirthCount() { cur_birth_count++; birth_count_perslot++;} + void SetBirthCount(const int count) { cur_birth_count = count; } int GetOrgCount() const { return cur_org_count; } int GetLastOrgCount() const { return last_org_count; } diff --git a/avida-core/tests/demes_loadbirthcounts/config/avida.cfg b/avida-core/tests/demes_loadbirthcounts/config/avida.cfg new file mode 100644 index 000000000..8e871e23d --- /dev/null +++ b/avida-core/tests/demes_loadbirthcounts/config/avida.cfg @@ -0,0 +1,168 @@ +############################################################################# +# This file includes all the basic run-time defines for Avida. +# For more information, see doc/config.html +############################################################################# + +# Let's output a bit about the threads and parasites to stdout +VERBOSITY 3 +# We use a bigger world than default +WORLD_X 10 +WORLD_Y 20 +NUM_DEMES 2 +RANDOM_SEED 1 + +# DEME CONFIGURATION +#------------------------------------------------------------------------------ + +# Deme seeding method. +# 0 = Maintain old consistency +# 1 = New method using genotypes +DEMES_SEED_METHOD 0 + +# Number of organisms in a deme to trigger its replication (0 = OFF). +DEMES_REPLICATE_ORGS 100 + +# Deme divide method. +# Only works with DEMES_SEED_METHOD 1 +# 0 = Replace source and target demes +# 1 = Replace target deme, reset source deme to founders +# 2 = Replace target deme, leave source deme unchanged +# 3 = Replace the target deme, and reset the number of resources consumed by the source deme. +# 4 = Replace the target deme, reset the number of resources consumed by the source deme, and kill the germ line organisms of the source deme +DEMES_DIVIDE_METHOD 0 + +# one deme population +DEMES_PARTITION_INTERVAL 0 + +# Should demes use a distinct germline? +# 0: No +# 1: Traditional germ lines +# 2: Genotype tracking +# 3: Organism flagging germline +DEMES_USE_GERMLINE 1 + +# Give empty demes preference as targets of deme replication? +DEMES_PREFER_EMPTY 1 + +# Reset resources in demes on replication? +# 0 = reset both demes +# 1 = reset target deme +# 2 = deme resources remain unchanged +DEMES_RESET_RESOURCES 2 + +# Number of offspring produced by a deme to trigger its replication. +# 0 = OFF +DEMES_REPLICATE_BIRTHS 0 + +# Max number of births that can occur within a deme; +# used with birth-count replication +DEMES_MAX_BIRTHS 0 + +# Give empty demes preference as targets of deme replication? +DEMES_PREFER_EMPTY 1 + +# Which demes can an offspring land in when it migrates? +# 0 = Any other deme +# 1 = Eight neighboring demes +# 2 = Two adjacent demes in list +# 3 = Proportional based on the number of points +# 4 = Use the weight matrix specified in MIGRATION_FILE +DEMES_MIGRATION_METHOD 0 + +# Probability of a parasite migrating to a different deme +DEMES_PARASITE_MIGRATION_RATE 0 + +# Probability of an offspring being born in a different deme. +DEMES_MIGRATION_RATE 0 + +# Log deme replications? +LOG_DEMES_REPLICATE 1 + +# Log injection of organisms. 0/1 (off/on) +LOG_INJECT 1 + + +# Cell Configuration +#------------------------------------------------------------------------------ + +# Make birth non-spatial +# Which organism should be replaced when a birth occurs? +# 0 = Random organism in neighborhood +# 1 = Oldest in neighborhood +# 2 = Largest Age/Merit in neighborhood +# 3 = None (use only empty cells in neighborhood) +# 4 = Random from population (Mass Action) +# 5 = Oldest in entire population +# 6 = Random within deme +# 7 = Organism faced by parent +# 8 = Next grid cell (id+1) +# 9 = Largest energy used in entire population +# 10 = Largest energy used in neighborhood +# 11 = Local neighborhood dispersal +# 12 = Kill offpsring after recording birth stats (for behavioral trials) +# 13 = Kill parent and offpsring (for behavioral trials) +BIRTH_METHOD 6 # random within deme +# Overide BIRTH_METHOD to preferentially choose empty cells for offsping? +PREFER_EMPTY 0 + +# Hosts get to live a bit longer than usual +# When should death by old age occur? +# When executed genome_length * AGE_LIMIT (+dev) instructions +AGE_LIMIT 30 + + + +# MUTATION CONFIGURATION --- no mutation +#------------------------------------------------------------------------------ + +# Substitution rate (per copy) +# We assign mtuation rates independently for hosts/parasites +COPY_MUT_PROB 0 +# Insertion rate (per copy) +COPY_INS_PROB 0 +# Deletion rate (per copy) +COPY_DEL_PROB 0 +# Uniform mutation probability (per copy) +# Randomly apply insertion, deletion or substition mutation +COPY_UNIFORM_PROB 0 +# Slip rate (per copy) +COPY_SLIP_PROB 0 + +# Substitution rate (per site, applied on divide) +DIV_MUT_PROB 0.001000 +# Insertion rate (per site, applied on divide) +DIV_INS_PROB 0.0 +# Deletion rate (per site, applied on divide) +DIV_DEL_PROB 0.0 +# Uniform mutation probability (per site, applied on divide)\n- Randomly apply insertion, deletion or point mutation +DIV_UNIFORM_PROB 0.0 +# Slip rate (per site, applied on divide) +DIV_SLIP_PROB 0.0 + +# Substitution rate (max one, per divide +DIVIDE_MUT_PROB 0 +# Insertion rate (max one, per divide) +DIVIDE_INS_PROB 0 +# Deletion rate (max one, per divide) +DIVIDE_DEL_PROB 0 + +# Substitution rate (per site, applied on inject) +INJECT_MUT_PROB 0.0 +# Insertion rate (per site, applied on inject) +INJECT_INS_PROB 0.0 +# Deletion rate (per site, applied on inject) +INJECT_DEL_PROB 0.0 + +# Prob. of copy mutations during germline replication +GERMLINE_COPY_MUT ${GERMLINE_COPY_MUT} +# Prob. of insertion mutations during germline replication +GERMLINE_INS_MUT 0.0 +# Prob. of deletion mutations during germline replication +GERMLINE_DEL_MUT 0.0 + +# Keep genomes from programatically creating their own variation +# ...because it's complicated enough as is +# Should genotypes that cannot replicate perfectly not be allowed to replicate? +STERILIZE_UNSTABLE 1 + +#include INST_SET=instset-transsmt.cfg diff --git a/avida-core/tests/demes_loadbirthcounts/config/detailgermlines-500.sgerm b/avida-core/tests/demes_loadbirthcounts/config/detailgermlines-500.sgerm new file mode 100644 index 000000000..14f8eff7f --- /dev/null +++ b/avida-core/tests/demes_loadbirthcounts/config/detailgermlines-500.sgerm @@ -0,0 +1,11 @@ +#filetype germline_data +#format deme_id hw_type inst_set sequence deme_birth_count +# Mode 1 Germline Save +# Tue Aug 29 01:14:50 2023 +# 1: Deme ID +# 2: Hardware Type ID +# 3: Inst Set Name +# 4: Genome Sequence +# 5: Deme Birth Count + +0 2 transsmt ycdBCiEdimFjfCDaknmsAjemEEcgccgssmhEEcsdseDcAcBcggclEEcDEgcvrsAmlzessjhcdcggkhamtmciEEvjDdhjidzoAyndvmEdbgznjDmcjohohooayaxdyalbcekzebjcogEtjgjacblDvubADnslyyocgsAcjCbobffhmvnnAdbDfkmxcagBFfndytqhutjdzfdjsnflfoqCwcvhsjcvbmlsqcjrgyiDivvnFhrArcsmifbClvluDqmCBbtiDhiEfACcarpEczijdljujACbfzuDEFyaqqekizDosbbzjgmpczypqvcrGxab 42 diff --git a/avida-core/tests/demes_loadbirthcounts/config/environment.cfg b/avida-core/tests/demes_loadbirthcounts/config/environment.cfg new file mode 100644 index 000000000..a68e81b37 --- /dev/null +++ b/avida-core/tests/demes_loadbirthcounts/config/environment.cfg @@ -0,0 +1,9 @@ +REACTION NOT not process:value=1.0:type=pow requisite:max_count=1 +REACTION NAND nand process:value=1.0:type=pow requisite:max_count=1 +REACTION AND and process:value=2.0:type=pow requisite:max_count=1 +REACTION ORN orn process:value=2.0:type=pow requisite:max_count=1 +REACTION OR or process:value=3.0:type=pow requisite:max_count=1 +REACTION ANDN andn process:value=3.0:type=pow requisite:max_count=1 +REACTION NOR nor process:value=4.0:type=pow requisite:max_count=1 +REACTION XOR xor process:value=4.0:type=pow requisite:max_count=1 +REACTION EQU equ process:value=5.0:type=pow requisite:max_count=1 diff --git a/avida-core/tests/demes_loadbirthcounts/config/events.cfg b/avida-core/tests/demes_loadbirthcounts/config/events.cfg new file mode 100644 index 000000000..e7b452b0a --- /dev/null +++ b/avida-core/tests/demes_loadbirthcounts/config/events.cfg @@ -0,0 +1,10 @@ +i InjectSequence ycdBCiEdimFjfCDaknmsAjemEEcgccgssmhEEcsdseDcAcBcggclEEcDEgcvrsAmlzessjhcdcggkhamtmciEEvjDdhjidzoAyndvmEdbgznjDmcjohohooayaxdyalbcekzebjcogEtjgjacblDvubADnslyyocgsAcjCbobffhmvnnAdbDfkmxcagBFfndytqhutjdzfdjsnflfoqCwcvhsjcvbmlsqcjrgyiDivvnFhrArcsmifbClvluDqmCBbtiDhiEfACcarpEczijdljujACbfzuDEFyaqqekizDosbbzjgmpczypqvcrGxab 101 +i LoadGermlines detailgermlines-500.sgerm +i LoadBirthCounts detailgermlines-500.sgerm 1 + +u 5 ReplicateDeme 1 + +u 10 SavePopulation filename=out +u 10 SaveGermlines filename=out:birthcounts=1 + +u 10 Exit diff --git a/avida-core/tests/demes_loadbirthcounts/config/instset-transsmt.cfg b/avida-core/tests/demes_loadbirthcounts/config/instset-transsmt.cfg new file mode 100644 index 000000000..aa2a05df2 --- /dev/null +++ b/avida-core/tests/demes_loadbirthcounts/config/instset-transsmt.cfg @@ -0,0 +1,35 @@ +INSTSET transsmt:hw_type=2 + +INST Nop-A +INST Nop-B +INST Nop-C +INST Nop-D +INST Val-Shift-R +INST Val-Shift-L +INST Val-Nand +INST Val-Add +INST Val-Sub +INST Val-Mult +INST Val-Div +INST Val-Mod +INST Val-Inc +INST Val-Dec +INST SetMemory +INST Inst-Read +INST Inst-Write +INST If-Equal +INST If-Not-Equal +INST If-Less +INST If-Greater +INST Head-Push +INST Head-Pop +INST Head-Move +INST Search +INST Push-Next +INST Push-Prev +INST Push-Comp +INST Val-Delete +INST Val-Copy +INST IO +INST Inject +INST Divide-Erase diff --git a/avida-core/tests/demes_loadbirthcounts/expected/.gitignore b/avida-core/tests/demes_loadbirthcounts/expected/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/avida-core/tests/demes_loadbirthcounts/expected/data/deme_replication.dat b/avida-core/tests/demes_loadbirthcounts/expected/data/deme_replication.dat new file mode 100644 index 000000000..fcf473520 --- /dev/null +++ b/avida-core/tests/demes_loadbirthcounts/expected/data/deme_replication.dat @@ -0,0 +1 @@ +5,1,0 diff --git a/avida-core/tests/demes_loadbirthcounts/expected/data/injectlog.dat b/avida-core/tests/demes_loadbirthcounts/expected/data/injectlog.dat new file mode 100644 index 000000000..c4648f141 --- /dev/null +++ b/avida-core/tests/demes_loadbirthcounts/expected/data/injectlog.dat @@ -0,0 +1,7 @@ +# 1: Update +# 2: Organism ID +# 3: Deme ID +# 4: Facing + +5 1 1 3 +5 2 0 3 diff --git a/avida-core/tests/demes_loadbirthcounts/expected/data/out-10.sgerm b/avida-core/tests/demes_loadbirthcounts/expected/data/out-10.sgerm new file mode 100644 index 000000000..854e6c880 --- /dev/null +++ b/avida-core/tests/demes_loadbirthcounts/expected/data/out-10.sgerm @@ -0,0 +1,12 @@ +#filetype germline_data +#format deme_id hw_type inst_set sequence deme_birth_count +# Mode 1 Germline Save +# Tue Nov 14 22:24:30 2023 +# 1: Deme ID +# 2: Hardware Type ID +# 3: Inst Set Name +# 4: Genome Sequence +# 5: Deme Birth Count + +0 2 transsmt ycdBCiEdimFjfCDaknmsAjemEEcgccgssmhEEcsdseDcAcBcggclEEcDEgcvrsAmlzessjhcdcggkhamtmciEEvjDdhjidzoAyndvmEdbgznjDmcjohohooayaxdyalbcekzebjcogEtjgjacblDvubADnslyyocgsAcjCbobffhmvnnAdbDfkmxcagBFfndytqhutjdzfdjsnflfoqCwcvhsjcvbmlsqcjrgyiDivvnFhrArcsmifbClvluDqmCBbtiDhiEfACcarpEczijdljujACbfzuDEFyaqqekizDosbbzjgmpczypqvcrGxab 0 +1 2 transsmt ycdBCiEdimFjfCDaknmsAjemEEcgccgssmhEEcsdseDcAcBcggclEEcDEgcvrsAmlzessjhcdcggkhamtmciEEvjDdhjidzoAyndvmEdbgznjDmcjohohooayaxdyalbcekzebjcogEtjgjacblDvubADnslyyocgsAcjCbobffhmvnnAdbDfkmxcagBFfndytqhutjdzfdjsnflfoqCwcvhsjcvbmlsqcjrgyiDivvnFhrArcsmifbClvluDqmCBbtiDhiEfACcarpEczijdljujACbfzuDEFyaqqekizDosbbzjgmpczypqvcrGxab 0 diff --git a/avida-core/tests/demes_loadbirthcounts/expected/data/out-10.spop b/avida-core/tests/demes_loadbirthcounts/expected/data/out-10.spop new file mode 100644 index 000000000..e6d371635 --- /dev/null +++ b/avida-core/tests/demes_loadbirthcounts/expected/data/out-10.spop @@ -0,0 +1,26 @@ +#filetype genotype_data +#format id src src_args parents num_units total_units length merit gest_time fitness gen_born update_born update_deactivated depth hw_type inst_set sequence cells gest_offset lineage +# Structured Population Save +# Tue Nov 14 22:24:30 2023 +# 1: ID +# 2: Source +# 3: Source Args +# 4: Parent ID(s) +# 5: Number of currently living organisms +# 6: Total number of organisms that ever existed +# 7: Genome Length +# 8: Average Merit +# 9: Average Gestation Time +# 10: Average Fitness +# 11: Generation Born +# 12: Update Born +# 13: Update Deactivated +# 14: Phylogenetic Depth +# 15: Hardware Type ID +# 16: Inst Set Name +# 17: Genome Sequence +# 18: Occupied Cell IDs +# 19: Gestation (CPU) Cycle Offsets +# 20: Lineage Label + +2 dup:int germline (none) 2 2 320 0 0 0 0 6 -1 0 2 transsmt ycdBCiEdimFjfCDaknmsAjemEEcgccgssmhEEcsdseDcAcBcggclEEcDEgcvrsAmlzessjhcdcggkhamtmciEEvjDdhjidzoAyndvmEdbgznjDmcjohohooayaxdyalbcekzebjcogEtjgjacblDvubADnslyyocgsAcjCbobffhmvnnAdbDfkmxcagBFfndytqhutjdzfdjsnflfoqCwcvhsjcvbmlsqcjrgyiDivvnFhrArcsmifbClvluDqmCBbtiDhiEfACcarpEczijdljujACbfzuDEFyaqqekizDosbbzjgmpczypqvcrGxab 50,150 0,0 0,0 diff --git a/avida-core/tests/demes_loadbirthcounts/test_list b/avida-core/tests/demes_loadbirthcounts/test_list new file mode 100644 index 000000000..2f7282cca --- /dev/null +++ b/avida-core/tests/demes_loadbirthcounts/test_list @@ -0,0 +1,36 @@ +;--- Begin Test Configuration File (test_list) --- +[main] +; Command line arguments to pass to the application +args = -s 100 +app = %(default_app)s +nonzeroexit = disallow ; Exit code handling (disallow, allow, or require) + ; disallow - treat non-zero exit codes as failures + ; allow - all exit codes are acceptable + ; require - treat zero exit codes as failures, useful + ; for creating tests for app error checking +createdby = Dave Knoester ; Who created the test +email = dk@cse.msu.edu ; Email address for the test's creator + +[consistency] +enabled = yes ; Is this test a consistency test? +long = no ; Is this test a long test? + +[performance] +enabled = no ; Is this test a performance test? +long = no ; Is this test a long test? + +; The following variables can be used in constructing setting values by calling +; them with %(variable_name)s. For example see 'app' above. +; +; app +; builddir +; cpus +; mode +; perf_repeat +; perf_user_margin +; perf_wall_margin +; svn +; svnmetadir +; svnversion +; testdir +;--- End Test Configuration File --- From 436b34765757f34dd1e810fedee6c934c8859e72 Mon Sep 17 00:00:00 2001 From: Matthew Andres Moreno Date: Tue, 14 Nov 2023 22:41:58 -0500 Subject: [PATCH 08/17] Bugfix: don't duplicate schema index --- avida-core/source/actions/SaveLoadActions.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/avida-core/source/actions/SaveLoadActions.cc b/avida-core/source/actions/SaveLoadActions.cc index 88b45e775..b2e459b4a 100644 --- a/avida-core/source/actions/SaveLoadActions.cc +++ b/avida-core/source/actions/SaveLoadActions.cc @@ -197,7 +197,7 @@ class cActionSaveGermlines : public cAction // String Entries schema.AddEntry("filename", 0, "detailgermlines"); - schema.AddEntry("birthcounts", 0, false); + schema.AddEntry("birthcounts", 1, false); cArgContainer* argc = cArgContainer::Load(args, schema, feedback); From 8a4bfc718c7f44f2273467e1316ff757c7ebe7ea Mon Sep 17 00:00:00 2001 From: Matthew Andres Moreno Date: Tue, 14 Nov 2023 22:53:19 -0500 Subject: [PATCH 09/17] Break long conditional across lines --- avida-core/source/main/cPopulation.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/avida-core/source/main/cPopulation.cc b/avida-core/source/main/cPopulation.cc index 8b4765198..5b7bb9435 100644 --- a/avida-core/source/main/cPopulation.cc +++ b/avida-core/source/main/cPopulation.cc @@ -1203,7 +1203,12 @@ bool cPopulation::ActivateParasite(cOrganism* host, Systematics::UnitPtr parent, // @TODO - activate parasite target selection should account for hardware type cOrganism* target_organism = NULL; // If there's any migration turned on ... try this first - if(m_world->GetConfig().NUM_DEMES.Get() > 0 && m_world->GetConfig().DEMES_PARASITE_MIGRATION_RATE.Get() > 0.0 && m_world->GetConfig().DEMES_MIGRATION_METHOD.Get() == 4 && m_world->GetRandom().P(m_world->GetConfig().DEMES_PARASITE_MIGRATION_RATE.Get())){ + if( + m_world->GetConfig().NUM_DEMES.Get() > 0 + && m_world->GetConfig().DEMES_PARASITE_MIGRATION_RATE.Get() > 0.0 + && m_world->GetConfig().DEMES_MIGRATION_METHOD.Get() == 4 + && m_world->GetRandom().P(m_world->GetConfig().DEMES_PARASITE_MIGRATION_RATE.Get()) + ){ cDeme& deme = GetDeme(m_world->GetMigrationMatrix().GetProbabilisticDemeID(host_cell.GetDemeID(), m_world->GetRandom(),true)); // Implementation #1 - Picks randomly of ALL cells in to-deme and then finds if the one it chose was occupied From 51c3ee99f4ca7f57d90f1f63dce0cd20f1f7ad9d Mon Sep 17 00:00:00 2001 From: Matthew Andres Moreno Date: Tue, 14 Nov 2023 23:25:14 -0500 Subject: [PATCH 10/17] Impl para migration method guaranteeing infection --- avida-core/source/main/cAvidaConfig.h | 1 + avida-core/source/main/cPopulation.cc | 23 +- .../demes_parasite_migration/config/avida.cfg | 691 ++++++++++++++++++ .../config/environment.cfg | 9 + .../config/events.cfg | 6 + .../config/evolved-not.org | 321 ++++++++ .../config/instset-transsmt.cfg | 35 + .../config/parasite-smt.org | 80 ++ .../expected/.gitignore | 0 .../expected/data/detail--1.spop | 27 + .../expected/data/detail-500.spop | 285 ++++++++ .../tests/demes_parasite_migration/test_list | 36 + 12 files changed, 1512 insertions(+), 2 deletions(-) create mode 100644 avida-core/tests/demes_parasite_migration/config/avida.cfg create mode 100644 avida-core/tests/demes_parasite_migration/config/environment.cfg create mode 100644 avida-core/tests/demes_parasite_migration/config/events.cfg create mode 100644 avida-core/tests/demes_parasite_migration/config/evolved-not.org create mode 100644 avida-core/tests/demes_parasite_migration/config/instset-transsmt.cfg create mode 100644 avida-core/tests/demes_parasite_migration/config/parasite-smt.org create mode 100644 avida-core/tests/demes_parasite_migration/expected/.gitignore create mode 100644 avida-core/tests/demes_parasite_migration/expected/data/detail--1.spop create mode 100644 avida-core/tests/demes_parasite_migration/expected/data/detail-500.spop create mode 100644 avida-core/tests/demes_parasite_migration/test_list diff --git a/avida-core/source/main/cAvidaConfig.h b/avida-core/source/main/cAvidaConfig.h index 3b4669e22..6e18d7027 100644 --- a/avida-core/source/main/cAvidaConfig.h +++ b/avida-core/source/main/cAvidaConfig.h @@ -506,6 +506,7 @@ class cAvidaConfig { CONFIG_ADD_VAR(DEMES_MIGRATION_RATE, double, 0.0, "Probability of an offspring being born in a different deme."); CONFIG_ADD_VAR(DEMES_PARASITE_MIGRATION_RATE, double, 0.0, "Probability of a parasite migrating to a different deme. Note: only works with DEMES_MIGRATION_METHOD 4."); CONFIG_ADD_VAR(DEMES_MIGRATION_METHOD, int, 0, "Which demes can an offspring land in when it migrates?\n0 = Any other deme\n1 = Eight neighboring demes\n2 = Two adjacent demes in list\n3 = Proportional based on the number of points\n4 = Use the weight matrix specified in MIGRATION_FILE"); + CONFIG_ADD_VAR(DEMES_PARASITE_MIGRATION_TARGET_SELECTION_METHOD, int, 0, "How should a target cell be chosen in the migrated-to deme?\n0 = Select a cell randomly, if it is not occupied infection fails\n1 = Select an occupied cell randomly"); CONFIG_ADD_VAR(DEMES_NUM_X, int, 0, "Simulated number of demes in X dimension. Used only for migration. "); CONFIG_ADD_VAR(DEMES_PARTITION_INTERVAL, int, 0, "Restrict deme replication to within partitions of DEMES_PARTITION_INTERVAL consecutive deme ids. No restriction if 0. Partition size cannot be smaller than two. Does not affect migration."); CONFIG_ADD_VAR(DEMES_SEED_METHOD, int, 0, "Deme seeding method.\n0 = Maintain old consistency\n1 = New method using genotypes"); diff --git a/avida-core/source/main/cPopulation.cc b/avida-core/source/main/cPopulation.cc index 5b7bb9435..37a81b395 100644 --- a/avida-core/source/main/cPopulation.cc +++ b/avida-core/source/main/cPopulation.cc @@ -1210,13 +1210,32 @@ bool cPopulation::ActivateParasite(cOrganism* host, Systematics::UnitPtr parent, && m_world->GetRandom().P(m_world->GetConfig().DEMES_PARASITE_MIGRATION_RATE.Get()) ){ cDeme& deme = GetDeme(m_world->GetMigrationMatrix().GetProbabilisticDemeID(host_cell.GetDemeID(), m_world->GetRandom(),true)); - + deme. + const int infection_mode = m_world->GetConfig().DEMES_PARASITE_MIGRATION_TARGET_SELECTION_METHOD.Get(); + if (infection_mode == 0) { // Implementation #1 - Picks randomly of ALL cells in to-deme and then finds if the one it chose was occupied // -- Not ensured to infect an individual cPopulationCell& rand_cell = deme.GetCell(m_world->GetRandom().GetInt(deme.GetSize())); if(rand_cell.IsOccupied()){ target_organism = rand_cell.GetOrganism(); - } + } + } else if (infection_mode == 1) { + // Implementation #2 - Picks randomly, guaranteeing an infection + const int num_occupied_cells = deme.GetOrgCount(); + int which_cell = m_world->GetRandom().GetInt(num_occupied_cells); + for (int i = 0; i < deme.GetSize(); i++) { + if (deme.GetCell(i).IsOccupied()) { + if (which_cell == 0) { + target_organism = deme.GetCell(i).GetOrganism(); + break; + } + which_cell--; + } + } + } else { + std::cout << "bad demes parasite migration infection mode " << infection_mode << std::endl; + std::abort(); + } } else{ // Else there was no migration ... Resort to the default BIRTH_METHOD diff --git a/avida-core/tests/demes_parasite_migration/config/avida.cfg b/avida-core/tests/demes_parasite_migration/config/avida.cfg new file mode 100644 index 000000000..9077ddde1 --- /dev/null +++ b/avida-core/tests/demes_parasite_migration/config/avida.cfg @@ -0,0 +1,691 @@ +############################################################################# +# This file includes all the basic run-time defines for Avida. +# For more information, see doc/config.html +############################################################################# + +VERSION_ID 2.11.0 # Do not change this value. + +### GENERAL_GROUP ### +# General Settings +VERBOSITY 3 # 0 = No output at all + # 1 = Normal output + # 2 = Verbose output, detailing progress + # 3 = High level of details, as available + # 4 = Print Debug Information, as applicable +RANDOM_SEED 1 # Random number seed (0 for based on time) +SPECULATIVE 1 # Enable speculative execution + # (pre-execute instructions that don't affect other organisms) +POPULATION_CAP 0 # Carrying capacity in number of organisms (use 0 for no cap) + +### TOPOLOGY_GROUP ### +# World topology +WORLD_X 10 +WORLD_Y 30 +NUM_DEMES 3 +RANDOM_SEED 1WORLD_GEOMETRY 2 # 1 = Bounded Grid (WOLRD_X x WORLD_Y) + # 2 = Toroidal Grid (WOLRD_X x WORLD_Y; wraps at edges + # 3 = Clique (all population cells are connected) + # 4 = Hexagonal grid + # 5 = Partial + # 6 = 3D Lattice (under development) + # 7 = Random connected + # 8 = Scale-free (detailed below) +SCALE_FREE_M 3 # Number of connections per cell in a scale-free geometry +SCALE_FREE_ALPHA 1.0 # Attachment power (1=linear) +SCALE_FREE_ZERO_APPEAL 0.0 # Appeal of cells with zero connections + +### CONFIG_FILE_GROUP ### +# Other configuration Files +DATA_DIR data # Directory in which config files are found +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 + +#include INST_SET=instset-transsmt.cfg + +### MUTATION_GROUP ### +# Mutation rates +COPY_MUT_PROB 0.000 # Mutation rate (per copy) +COPY_INS_PROB 0.0 # Insertion rate (per copy) +COPY_DEL_PROB 0.0 # Deletion rate (per copy) +COPY_UNIFORM_PROB 0.0 # Uniform mutation probability (per copy) + # - Randomly apply insertion, deletion or point mutation +COPY_SLIP_PROB 0.0 # Slip rate (per copy) +POINT_MUT_PROB 0.0 # Mutation rate (per-location per update) +DIV_MUT_PROB 0.000703 # Mutation rate (per site, applied on divide) +DIV_INS_PROB 0.00003906 # Insertion rate (per site, applied on divide) +DIV_DEL_PROB 0.00003906 # Deletion rate (per site, applied on divide) +DIV_UNIFORM_PROB 0.0 # Uniform mutation probability (per site, applied on divide) + # - Randomly apply insertion, deletion or point mutation +DIV_SLIP_PROB 0.0 # Slip rate (per site, applied on divide) +DIVIDE_MUT_PROB 0.0 # Mutation rate (max one, per divide) +DIVIDE_INS_PROB 0.0#5 # Insertion rate (max one, per divide) +DIVIDE_DEL_PROB 0.0#5 # Deletion rate (max one, per divide) +DIVIDE_UNIFORM_PROB 0.0 # Uniform mutation probability (per divide) + # - Randomly apply insertion, deletion or point mutation +DIVIDE_SLIP_PROB 0.0 # Slip rate (per divide) - creates large deletions/duplications +DIVIDE_POISSON_MUT_MEAN 0.0 # Mutation rate (Poisson distributed, per divide) +DIVIDE_POISSON_INS_MEAN 0.0 # Insertion rate (Poisson distributed, per divide) +DIVIDE_POISSON_DEL_MEAN 0.0 # Deletion rate (Poisson distributed, per divide) +DIVIDE_POISSON_SLIP_MEAN 0.0 # Slip rate (Poisson distributed, per divide) +INJECT_INS_PROB 0.000825 # Insertion rate (per site, applied on inject) +INJECT_DEL_PROB 0.000825 # Deletion rate (per site, applied on inject) +INJECT_MUT_PROB 0.0075 # Mutation rate (per site, applied on inject) +SLIP_FILL_MODE 0 # Fill insertions from slip mutations with: + # 0 = Duplication + # 1 = nop-X + # 2 = Random + # 3 = scrambled + # 4 = nop-C +SLIP_COPY_MODE 0 # How to handle 'on-copy' slip mutations: + # 0 = actual read head slip + # 1 = instant large mutation (obeys slip mode) +PARENT_MUT_PROB 0.0 # Per-site, in parent, on divide +SPECIAL_MUT_LINE -1 # If this is >= 0, ONLY this line is mutated +META_COPY_MUT 0.2 # Prob. of copy mutation rate changing (per gen) +META_STD_DEV 0.1 # Standard deviation of meta mutation size. +MUT_RATE_SOURCE 1 # 1 = Mutation rates determined by environment. + # 2 = Mutation rates inherited from parent. + +### REPRODUCTION_GROUP ### +# Birth and Death config options +DIVIDE_FAILURE_RESETS 0 # When Divide fails, organisms are interally reset +BIRTH_METHOD 4 # Which organism should be replaced when a birth occurs? + # 0 = Random organism in neighborhood + # 1 = Oldest in neighborhood + # 2 = Largest Age/Merit in neighborhood + # 3 = None (use only empty cells in neighborhood) + # 4 = Random from population (Mass Action) + # 5 = Oldest in entire population + # 6 = Random within deme + # 7 = Organism faced by parent + # 8 = Next grid cell (id+1) + # 9 = Largest energy used in entire population + # 10 = Largest energy used in neighborhood + # 11 = Local neighborhood dispersal +PREFER_EMPTY 0 # Overide BIRTH_METHOD to preferentially choose empty cells for offsping? +ALLOW_PARENT 1 # Should parents be considered when deciding where to place offspring? +DISPERSAL_RATE 0.0 # Rate of dispersal under birth method 11 + # (poisson distributed random connection list hops) +DEATH_PROB 0.0 # Probability of death when dividing. +DEATH_METHOD 2 # When should death by old age occur? + # 0 = Never + # 1 = When executed AGE_LIMIT (+deviation) total instructions + # 2 = When executed genome_length * AGE_LIMIT (+dev) instructions +AGE_LIMIT 30 # See DEATH_METHOD +AGE_DEVIATION 0 # Creates a normal distribution around AGE_LIMIT for time of death +ALLOC_METHOD 0 # When allocating blank tape, how should it be initialized? + # 0 = Allocated space is set to default instruction. + # 1 = Set to section of dead genome (creates potential for recombination) + # 2 = Allocated space is set to random instruction. +DIVIDE_METHOD 1 # 0 = Divide leaves state of mother untouched. + # 1 = Divide resets state of mother(effectively creating 2 offspring) + # 2 = Divide resets state of current thread only (use with parasites) +EPIGENETIC_METHOD 0 # Inheritance of state information other than genome + # 0 = none + # 1 = offspring inherits registers and stacks of first thread + # 1 = parent maintains registers and stacks of first thread + # + # 1 = offspring and parent keep state information +GENERATION_INC_METHOD 1 # 0 = Only increase generation of offspring on divide. + # 1 = Increase generation of both parent and offspring + # (suggested with DIVIDE_METHOD 1). +RESET_INPUTS_ON_DIVIDE 0 # Reset environment inputs of parent upon successful divide. +INHERIT_MERIT 0 # Should merit be inhereted from mother parent? (in asexual) +INHERIT_MULTITHREAD 0 # Should offspring of parents with multiple threads be marked multithreaded? + +### DIVIDE_GROUP ### +# Divide restrictions and triggers - settings describe conditions for a successful divide +OFFSPRING_SIZE_RANGE 2.0 # Maximal differential between offspring and parent length. + # (Checked BEFORE mutations applied on divide.) +MIN_COPIED_LINES 0.5 # Code fraction that must be copied before divide +MIN_EXE_LINES 0.5 # Code fraction that must be executed before divide +MIN_GENOME_SIZE 0 # Minimum number of instructions allowed in a genome. 0 = OFF +MAX_GENOME_SIZE 0 # Maximum number of instructions allowed in a genome. 0 = OFF +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 +IMMUNITY_REACTION -1 # Reaction ID that provides immunity for successful divide +REQUIRE_SINGLE_REACTION 1 # If set to 1, at least one reaction is required for a successful divide +REQUIRED_BONUS 0.0 # Required bonus to divide +REQUIRE_EXACT_COPY 0 # Require offspring to be an exact copy (checked before divide mutations) +REQUIRED_RESOURCE -1 # ID of resource required in organism's internal bins for successful + # divide (resource not consumed) +REQUIRED_RESOURCE_LEVEL 0.0 # Level of resource needed for REQUIRED_RESOURCE +IMPLICIT_REPRO_BONUS 0 # Call Inst_Repro to divide upon achieving this bonus. 0 = OFF +IMPLICIT_REPRO_CPU_CYCLES 0 # Call Inst_Repro after this many cpu cycles. 0 = OFF +IMPLICIT_REPRO_TIME 0 # Call Inst_Repro after this time used. 0 = OFF +IMPLICIT_REPRO_END 0 # Call Inst_Repro after executing the last instruction in the genome. +IMPLICIT_REPRO_ENERGY 0.0 # Call Inst_Repro if organism accumulates this amount of energy. + +### 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 (-1 = unlimited) +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 # 0 = Both offspring are born (no two-fold cost) + # 1 = only one recombined offspring is born. +SAME_LENGTH_SEX 0 # 0 = Recombine with any genome + # 1 = Recombine only w/ same length +ALLOW_MATE_SELECTION 0 # Allow organisms to select mates (requires instruction set support) + +### PARASITE_GROUP ### +# Parasite config options +INJECT_METHOD 1 # What should happen to a parasite when it gives birth? + # 0 = Leave the parasite thread state untouched. + # 1 = Resets the state of the calling thread (for SMT parasites, this must be 1) +INJECT_PROB_FROM_TASKS 0 # Inject occurs based on probability from performing tasks - 11*numTasks +INJECT_STERILIZES_HOST 0 # Infection causes host steralization +INJECT_IS_VIRULENT 0 # Infection causes host steralization and takes all cpu cycles (setting this to 1 will override inject_virulence) +PARASITE_SKIP_REACTIONS 1 # Parasite tasks do not get processed in the environment (1) or they do trigger reactions (0) +INJECT_IS_TASK_SPECIFIC 1 # Parasites must match a task done by the host they are trying to infect +INJECT_SKIP_FIRST_TASK 0 # They cannot match the first task the host is doing to infect +INJECT_DEFAULT_SUCCESS 0.0 # If injection is task specific, with what probability should non-matching parasites infect the host +PARASITE_VIRULENCE 0.85 # The probabalistic percentage of cpu cycles allocated to the parasite instead of the host. Ensure INJECT_IS_VIRULENT is set to 0. This only works for single infection at the moment +PARASITE_MEM_SPACES 1 # Parasites get their own memory spaces +PARASITE_NO_COPY_MUT 1 # Parasites do not get copy mutation rates + +### ARCHETECTURE_GROUP ### +# Details on how CPU should work +IO_EXPIRE 1 # Is the expiration functionality of '-expire' I/O instructions enabled? + +### MP_GROUP ### +# Config options for multiple, distributed populations +ENABLE_MP 0 # Enable multi-process Avida; 0=disabled (default), + # 1=enabled. +MP_SCHEDULING_STYLE 0 # Style of scheduling: + # 0=non-MP aware (default) + # 1=MP aware, integrated across worlds. + +### DEME_GROUP ### +# Demes and Germlines +DEMES_COMPETITION_STYLE 0 # How should demes compete? + # 0=Fitness proportional selection + # 1=Tournament selection +DEMES_TOURNAMENT_SIZE 0 # Number of demes that participate in a tournament +DEMES_OVERRIDE_FITNESS 0 # Should the calculated fitness is used? + # 0=yes (default) + # 1=no (all fitnesses=1) +DEMES_USE_GERMLINE 0 # Should demes use a distinct germline? +DEMES_PREVENT_STERILE 0 # Prevent sterile demes from replicating? +DEMES_RESET_RESOURCES 0 # Reset resources in demes on replication? + # 0 = reset both demes + # 1 = reset target deme + # 2 = deme resources remain unchanged +DEMES_REPLICATE_SIZE 1 # Number of identical organisms to create or copy from the + # source deme to the target deme +LOG_DEMES_REPLICATE 0 # Log deme replications? +DEMES_REPLICATE_LOG_START 0 # Update at which to start logging deme replications +DEMES_PROB_ORG_TRANSFER 0.0 # Probablity of an organism being transferred from the + # source deme to the target deme +DEMES_ORGANISM_SELECTION 0 # How should organisms be selected for transfer from + # source to target during deme replication? + # 0 = random with replacement + # 1 = sequential +DEMES_ORGANISM_PLACEMENT 0 # How should organisms be placed during deme replication. + # 0 = cell-array middle + # 1 = deme center + # 2 = random placement + # 3 = sequential +DEMES_ORGANISM_FACING 0 # Which direction should organisms face after deme replication. + # 0 = unchanged + # 1 = northwest. + # 2 = random. +DEMES_MAX_AGE 500 # The maximum age of a deme (in updates) to be + # used for age-based replication +DEMES_MAX_BIRTHS 100 # Max number of births that can occur within a deme; + # used with birth-count replication +DEMES_MIM_EVENTS_KILLED_RATIO 0.7 # Minimum ratio of events killed required for event period to be a success. +DEMES_MIM_SUCCESSFUL_EVENT_PERIODS 1 # Minimum number of consecutive event periods that must be a success. +GERMLINE_COPY_MUT 0.0075 # Prob. of copy mutations during germline replication +GERMLINE_INS_MUT 0.05 # Prob. of insertion mutations during germline replication +GERMLINE_DEL_MUT 0.05 # Prob. of deletion mutations during germline replication +DEMES_REPLICATE_CPU_CYCLES 0.0 # Replicate a deme immediately after it has used this many + # cpu cycles per org in deme (0 = OFF). +DEMES_REPLICATE_TIME 0.0 # Number of CPU cycles used by a deme to trigger its replication + # (normalized by number of orgs in deme and organism merit; 0 = OFF). +DEMES_REPLICATE_BIRTHS 0 # Number of offspring produced by a deme to trigger its replication (0 = OFF). +DEMES_REPLICATE_ORGS 0 # Number of organisms in a deme to trigger its replication (0 = OFF). +DEMES_REPLICATION_ONLY_RESETS 0 # Kin selection mode. On replication: + # 0 = Nothing extra + # 1 = reset deme resources + # 2 = reset resources and re-inject organisms +DEMES_MIGRATION_RATE 0.0 # Probability of an offspring being born in a different deme. +DEMES_PARASITE_MIGRATION_RATE 0.5 # Probability of an offspring being born in a different deme. +DEMES_PARASITE_MIGRATION_TARGET_SELECTION_METHOD 1 +DEMES_MIGRATION_METHOD 0 # Which demes can an org land in when it migrates? + # 0 = Any other deme + # 1 = Eight neighboring demes + # 2 = Two adjacent demes in list + # 3 = Proportional based on the number of points +DEMES_NUM_X 0 # Simulated number of demes in X dimension. Used only for migration. +DEMES_SEED_METHOD 0 # Deme seeding method. + # 0 = Maintain old consistency + # 1 = New method using genotypes +DEMES_DIVIDE_METHOD 0 # Deme divide method. Only works with DEMES_SEED_METHOD 1 + # 0 = Replace and target demes + # 1 = Replace target deme, reset source deme to founders + # 2 = Replace target deme, leave source deme unchanged +DEMES_DEFAULT_GERMLINE_PROPENSITY 0.0 # Default germline propensity of organisms in deme. + # For use with DEMES_DIVIDE_METHOD 2. +DEMES_FOUNDER_GERMLINE_PROPENSITY -1.0 # Default germline propensity of founder organisms in deme. + # For use with DEMES_DIVIDE_METHOD 2. + # <0 = OFF +DEMES_PREFER_EMPTY 0 # Give empty demes preference as targets of deme replication? +DEMES_PROTECTION_POINTS 0 # The number of points a deme receives for each suicide. +MIGRATION_RATE 0.0 # Uniform probability of offspring migrating to a new deme. +DEMES_TRACK_SHANNON_INFO 0 # Enable shannon mutual information tracking for demes. + +### REVERSION_GROUP ### +# Mutation Reversion +# Most of these slow down avida a lot, and should be set to 0.0 normally. +REVERT_FATAL 0.0 # Prob of lethal mutations being reverted on birth +REVERT_DETRIMENTAL 0.0 # Prob of harmful (but non-lethal) mutations reverting on birth +REVERT_NEUTRAL 0.0 # Prob of neutral mutations being reverted on birth +REVERT_BENEFICIAL 0.0 # Prob of beneficial mutations being reverted on birth +REVERT_TASKLOSS 0.0 # Prob of mutations that cause task loss (without any gains) being reverted +STERILIZE_FATAL 0.0 # Prob of lethal mutations steralizing an offspring (typically no effect!) +STERILIZE_DETRIMENTAL 0.0 # Prob of harmful (but non-lethal) mutations steralizing an offspring +STERILIZE_NEUTRAL 0.0 # Prob of neutral mutations steralizing an offspring +STERILIZE_BENEFICIAL 0.0 # Prob of beneficial mutations steralizing an offspring +STERILIZE_TASKLOSS 0.0 # Prob of mutations causing task loss steralizing an offspring +STERILIZE_UNSTABLE 0 # Should genotypes that cannot replicate perfectly not be allowed to replicate? +NEUTRAL_MAX 0.0 # Percent benifical change from parent fitness to be considered neutral. +NEUTRAL_MIN 0.0 # Percent deleterious change from parent fitness to be considered neutral. + +### TIME_GROUP ### +# Time Slicing +AVE_TIME_SLICE 30 # Average number of CPU-cycles per org per update +SLICING_METHOD 1 # 0 = CONSTANT: all organisms receive equal number of CPU cycles + # 1 = PROBABILISTIC: CPU cycles distributed randomly, proportional to merit. + # 2 = INTEGRATED: CPU cycles given out deterministicly, proportional to merit + # 3 = DEME_PROBABALISTIC: Demes receive fixed number of CPU cycles, awarded probabalistically to members + # 4 = CROSS_DEME_PROBABALISTIC: Demes receive CPU cycles proportional to living population size, awarded probabalistically to members + # 5 = CONSTANT BURST: all organisms receive equal number of CPU cycles, in SLICING_BURST_SIZE chunks +SLICING_BURST_SIZE 1 # Sets the scheduler burst size for SLICING_METHOD 5. +BASE_MERIT_METHOD 4 # How should merit be initialized? + # 0 = Constant (merit independent of size) + # 1 = Merit proportional to copied size + # 2 = Merit prop. to executed size + # 3 = Merit prop. to full size + # 4 = Merit prop. to min of executed or copied size + # 5 = Merit prop. to sqrt of the minimum size + # 6 = Merit prop. to num times MERIT_BONUS_INST is in genome. +BASE_CONST_MERIT 100 # Base merit valse for BASE_MERIT_METHOD 0 +MERIT_BONUS_INST 0 # Instruction ID to count for BASE_MERIT_METHOD 6 +MERIT_BONUS_EFFECT 0 # Amount of merit earn per instruction for BASE_MERIT_METHOD 6 (-1 = penalty, 0 = no effect) +FITNESS_VALLEY 0 # in BASE_MERIT_METHOD 6, this creates valleys from + # FITNESS_VALLEY_START to FITNESS_VALLEY_STOP + # (0 = off, 1 = on) +FITNESS_VALLEY_START 0 # if FITNESS_VALLEY = 1, orgs with num_key_instructions + # from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP + # get fitness 1 (lowest) +FITNESS_VALLEY_STOP 0 # if FITNESS_VALLEY = 1, orgs with num_key_instructions + # from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP + # get fitness 1 (lowest) +DEFAULT_BONUS 1.0 # Initial bonus before any tasks +MERIT_DEFAULT_BONUS 0 # Instead of inheriting bonus from parent, use this value instead (0 = off) +MERIT_INC_APPLY_IMMEDIATE 1 # Should merit increases (above current) be applied immediately, or delayed until divide? +TASK_REFRACTORY_PERIOD 0.0 # Number of updates after taske until regain full value +FITNESS_METHOD 0 # 0 = default, 1 = sigmoidal, +FITNESS_COEFF_1 1.0 # 1st FITNESS_METHOD parameter +FITNESS_COEFF_2 1.0 # 2nd FITNESS_METHOD parameter +MAX_CPU_THREADS 2 # Maximum number of Threads a CPU can spawn +THREAD_SLICING_METHOD 0 # Formula for allocating CPU cycles across threads in an organism + # (num_threads-1) * THREAD_SLICING_METHOD + 1 + # 0 = One thread executed per time slice. + # 1 = All threads executed each time slice. +NO_CPU_CYCLE_TIME 0 # Don't count each CPU cycle as part of gestation time +MAX_LABEL_EXE_SIZE 1 # Max nops marked as executed when labels are used +PRECALC_PHENOTYPE 0 # 0 = Disabled + # 1 = Assign precalculated merit at birth (unlimited resources only) + # 2 = Assign precalculated gestation time + # 3 = Assign precalculated merit AND gestation time. + # 4 = Assign last instruction counts + # 5 = Assign last instruction counts and merit + # 6 = Assign last instruction counts and gestation time + # 7 = Assign everything currently supported + # Fitness will be evaluated for organism based on these settings. +FASTFORWARD_UPDATES 0 # Fast-forward if the average generation has not changed in this many updates. (0 = off) +FASTFORWARD_NUM_ORGS 0 # Fast-forward if population is equal to this +GENOTYPE_PHENPLAST_CALC 100 # Number of times to test a genotype's + # plasticity during runtime. + +### ALTRUISM_GROUP ### +# Altrusim +MERIT_GIVEN 0.0 # Fraction of merit donated with 'donate' command +MERIT_RECEIVED 0.0 # Multiplier of merit given with 'donate' command +MAX_DONATE_KIN_DIST -1 # Limit on distance of relation for donate; -1=no max +MAX_DONATE_EDIT_DIST -1 # Limit on genetic (edit) distance for donate; -1=no max +MIN_GB_DONATE_THRESHOLD -1 # threshold green beard donates only to orgs above this + # donation attempt threshold; -1=no thresh +DONATE_THRESH_QUANTA 10 # The size of steps between quanta donate thresholds +MAX_DONATES 1000000 # Limit on number of donates organisms are allowed. + +### GENEOLOGY_GROUP ### +# Geneology +THRESHOLD 3 # Number of organisms in a genotype needed for it + # to be considered viable. +TEST_CPU_TIME_MOD 20 # Time allocated in test CPUs (multiple of length) + +### LOG_GROUP ### +# Log Files +LOG_GENOTYPES 0 # 0 = off, 1 = print ALL, 2 = print threshold ONLY. +LOG_THRESHOLD 0 # 0/1 (off/on) toggle to print file. +LOG_LINEAGES 0 # Track lineages over time? + # WARNING: Can slow Avida a lot! +LINEAGE_CREATION_METHOD 0 # Requires LOG_LINEAGES = 1 + # 0 = Manual creation (on inject) + # 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 +TRACE_EXECUTION 0 # Trace the execution of all organisms in the population (WARNING: SLOW!) + +### 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 +NET_LOG_MESSAGES 0 # Whether all messages are logged; 0=false (default), 1=true. + +### ORGANISM_MESSAGING_GROUP ### +# Organism Message-Based Communication +MESSAGE_SEND_BUFFER_SIZE 1 # Size of message send buffer (stores messages that were sent) + # TASKS NOT CHECKED ON 0! + # -1=inf, default=1. +MESSAGE_RECV_BUFFER_SIZE 8 # Size of message receive buffer (stores messages that are received); -1=inf, default=8. +MESSAGE_RECV_BUFFER_BEHAVIOR 0 # Behavior of message receive buffer; 0=drop oldest (default), 1=drop incoming +ACTIVE_MESSAGES_ENABLED 0 # Enable active messages. + # 0 = off + # 2 = message creates parallel thread + +### 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 + +### HOARD_RESOURCE_GROUP ### +# Resource Hoarding Parameters +USE_RESOURCE_BINS 0 # Enable resource bin use. This serves as a guard on most resource hoarding code. +ABSORB_RESOURCE_FRACTION .0025 # Fraction of available environmental resource an organism absorbs. +MULTI_ABSORB_TYPE 0 # What to do if a collect instruction is called on a range of resources. + # 0 = absorb a random resource in the range + # 1 = absorb the first resource in the range + # 2 = absorb the last resource in the range + # 3 = absorb ABSORB_RESOURCE_FRACTION / (# of resources in range) of each resource in the range +MAX_TOTAL_STORED -1 # Maximum total amount of all resources an organism can store. + # <0 = no maximum +USE_STORED_FRACTION 1.0 # The fraction of stored resource to use. +ENV_FRACTION_THRESHOLD 1.0 # The fraction of available environmental resource to compare available stored resource to when deciding whether to use stored resource. +RETURN_STORED_ON_DEATH 1 # Return an organism's stored resources to the world when it dies? +SPLIT_ON_DIVIDE 1 # Split mother cell's resources between two daughter cells on division? +COLLECT_SPECIFIC_RESOURCE 0 # Resource to be collected by the "collect-specific" instruction + +### ANALYZE_GROUP ### +# Analysis Settings +MAX_CONCURRENCY -1 # Maximum number of analyze threads, -1 == use all available. +ANALYZE_OPTION_1 # String variable accessible from analysis scripts +ANALYZE_OPTION_2 # String variable accessible from analysis scripts + +### ENERGY_GROUP ### +# Energy Settings +ENERGY_ENABLED 0 # Enable Energy Model. 0/1 (off/on) +ENERGY_GIVEN_ON_INJECT 0.0 # Energy given to organism upon injection. +ENERGY_GIVEN_AT_BIRTH 0.0 # Energy given to offspring upon birth. +FRAC_PARENT_ENERGY_GIVEN_TO_ORG_AT_BIRTH 0.5 # Fraction of parent's energy given to offspring organism. +FRAC_PARENT_ENERGY_GIVEN_TO_DEME_AT_BIRTH 0.5 # Fraction of parent's energy given to offspring deme. +FRAC_ENERGY_DECAY_AT_ORG_BIRTH 0.0 # Fraction of energy lost due to decay during organism reproduction. +FRAC_ENERGY_DECAY_AT_DEME_BIRTH 0.0 # Fraction of energy lost due to decay during deme reproduction. +NUM_CYCLES_EXC_BEFORE_0_ENERGY 0 # Number of virtual CPU cycles executed before energy is exhausted. +ENERGY_CAP -1.0 # Maximum amount of energy that can be stored in an organism. -1 = no max +APPLY_ENERGY_METHOD 0 # When should rewarded energy be applied to current energy? + # 0 = on divide + # 1 = on completion of task + # 2 = on sleep +FIX_METABOLIC_RATE -1.0 # Fix organism metobolic rate to value. This value is static. Feature disabled by default (value == -1) +FRAC_ENERGY_TRANSFER 0.0 # Fraction of replaced organism's energy take by new resident +LOG_SLEEP_TIMES 0 # Log sleep start and end times. 0/1 (off/on) + # WARNING: may use lots of memory. +FRAC_ENERGY_RELINQUISH 1.0 # Fraction of organisms energy to relinquish +ENERGY_PASSED_ON_DEME_REPLICATION_METHOD 0 # Who get energy passed from a parent deme + # 0 = Energy divided among organisms injected to offspring deme + # 1 = Energy divided among cells in offspring deme +INHERIT_EXE_RATE 0 # Inherit energy rate from parent? 0=no 1=yes +ATTACK_DECAY_RATE 0.0 # Percent of cell's energy decayed by attack +ENERGY_THRESH_LOW .33 # Threshold percent below which energy level is considered low. Requires ENERGY_CAP. +ENERGY_THRESH_HIGH .75 # Threshold percent above which energy level is considered high. Requires ENERGY_CAP. +ENERGY_COMPARISON_EPSILON 0.0 # Percent difference (relative to executing organism) required in energy level comparisons +ENERGY_REQUEST_RADIUS 1 # Radius of broadcast energy request messages. + +### ENERGY_SHARING_GROUP ### +# Energy Sharing Settings +ENERGY_SHARING_METHOD 0 # Method for sharing energy. 0=receiver must actively receive/request, 1=energy pushed on receiver +ENERGY_SHARING_PCT 0.0 # Percent of energy to share +ENERGY_SHARING_INCREMENT 0.01 # Amount to change percent energy shared +RESOURCE_SHARING_LOSS 0.0 # Fraction of shared resource lost in transfer +ENERGY_SHARING_UPDATE_METABOLIC 0 # 0/1 (off/on) - Whether to update an organism's metabolic rate on donate or reception/application of energy +LOG_ENERGY_SHARING 0 # Whether or not to log energy shares. 0/1 (off/on) + +### SECOND_PASS_GROUP ### +# Tracking metrics known after the running experiment previously +TRACK_CCLADES 0 # Enable tracking of coalescence clades +TRACK_CCLADES_IDS coalescence.ids # File storing coalescence IDs + +### GX_GROUP ### +# Gene Expression CPU Settings +MAX_PROGRAMIDS 16 # Maximum number of programids an organism can create. +MAX_PROGRAMID_AGE 2000 # Max number of CPU cycles a programid executes before it is removed. +IMPLICIT_GENE_EXPRESSION 0 # Create executable programids from the genome without explicit allocation and copying? +IMPLICIT_BG_PROMOTER_RATE 0.0 # Relative rate of non-promoter sites creating programids. +IMPLICIT_TURNOVER_RATE 0.0 # Number of programids recycled per CPU cycle. 0 = OFF +IMPLICIT_MAX_PROGRAMID_LENGTH 0 # Creation of an executable programid terminates after this many instructions. 0 = disabled + +### PROMOTER_GROUP ### +# Promoters +PROMOTERS_ENABLED 0 # Use the promoter/terminator execution scheme. + # Certain instructions must also be included. +PROMOTER_INST_MAX 0 # Maximum number of instructions to execute before terminating. 0 = off +PROMOTER_PROCESSIVITY 1.0 # Chance of not terminating after each cpu cycle. +PROMOTER_PROCESSIVITY_INST 1.0 # Chance of not terminating after each instruction. +PROMOTER_TO_REGISTER 0 # Place a promoter's base bit code in register BX when starting execution from it? +TERMINATION_RESETS 0 # Does termination reset the thread's state? +NO_ACTIVE_PROMOTER_EFFECT 0 # What happens when there are no active promoters? + # 0 = Start execution at the beginning of the genome. + # 1 = Kill the organism. + # 2 = Stop the organism from executing any further instructions. +PROMOTER_CODE_SIZE 24 # Size of a promoter code in bits. (Maximum value is 32) +PROMOTER_EXE_LENGTH 3 # Length of promoter windows used to determine execution. +PROMOTER_EXE_THRESHOLD 2 # Minimum number of bits that must be set in a promoter window to allow execution. +INST_CODE_LENGTH 3 # Instruction binary code length (number of bits) +INST_CODE_DEFAULT_TYPE 0 # Default value of instruction binary code value. + # 0 = All zeros + # 1 = Based off the instruction number +CONSTITUTIVE_REGULATION 0 # Sense a new regulation value before each CPU cycle? + +### COLORS_GROUP ### +# Output colors for when data files are printed in HTML mode. +# There are two sets of these; the first are for lineages, +# and the second are for mutation tests. +COLOR_DIFF CCCCFF # Color to flag stat that has changed since parent. +COLOR_SAME FFFFFF # Color to flag stat that has NOT changed since parent. +COLOR_NEG2 FF0000 # Color to flag stat that is significantly worse than parent. +COLOR_NEG1 FFCCCC # Color to flag stat that is minorly worse than parent. +COLOR_POS1 CCFFCC # Color to flag stat that is minorly better than parent. +COLOR_POS2 00FF00 # Color to flag stat that is significantly better than parent. +COLOR_MUT_POS 00FF00 # Color to flag stat that has changed since parent. +COLOR_MUT_NEUT FFFFFF # Color to flag stat that has changed since parent. +COLOR_MUT_NEG FFFF00 # Color to flag stat that has changed since parent. +COLOR_MUT_LETHAL FF0000 # Color to flag stat that has changed since parent. + +### MOVEMENT_GROUP ### +# Movement Features Settings +MOVEMENT_COLLISIONS_LETHAL 0 # Are collisions during movement lethal? +MOVEMENT_COLLISIONS_SELECTION_TYPE 0 # 0 = 50% chance + # 1 = binned vitality based +VITALITY_BIN_EXTREMES 1.0 # vitality multiplier for extremes (> 1 stddev from the mean population age) +VITALITY_BIN_CENTER 5.0 # vitality multiplier for center bin (with 1 stddev of the mean population age) + +### PHEROMONE_GROUP ### +# Pheromone Settings +PHEROMONE_ENABLED 0 # Enable pheromone usage. 0/1 (off/on) +PHEROMONE_AMOUNT 1.0 # Amount of pheromone to add per drop +PHEROMONE_DROP_MODE 0 # Where to drop pheromone + # 0 = Half amount at src, half at dest + # 1 = All at source + # 2 = All at dest +EXPLOIT_EXPLORE_PROB 0.00 # Probability of random exploration + # instead of pheromone trail following +LOG_PHEROMONE 0 # Log pheromone drops. 0/1 (off/on) +PHEROMONE_LOG_START 0 # Update at which to start logging pheromone drops +EXPLOIT_LOG_START 0 # Update at which to start logging exploit moves +EXPLORE_LOG_START 0 # Update at which to start logging explore moves +MOVETARGET_LOG_START 0 # Update at which to start logging movetarget moves +LOG_INJECT 0 # Log injection of organisms. 0/1 (off/on) +INJECT_LOG_START 0 # Update at which to start logging injection of + # organisms + +### SYNCHRONIZATION_GROUP ### +# Synchronization settings +SYNC_FITNESS_WINDOW 100 # Number of updates over which to calculate fitness (default=100). +SYNC_FLASH_LOSSRATE 0.0 # P() to lose a flash send (0.0==off). +SYNC_TEST_FLASH_ARRIVAL -1 # CPU cycle at which an organism will receive a flash (off=-1, default=-1, analyze mode only.) + +### CONSENSUS_GROUP ### +# Consensus settings +CONSENSUS_HOLD_TIME 1 # Number of updates that consensus must be held for. + +### REPUTATION_GROUP ### +# Reputation Settings +RAW_MATERIAL_AMOUNT 100 # Number of raw materials an organism starts with +AUTO_REPUTATION 0 # Is an organism's reputation automatically computed based on its donations + # 0=no + # 1=increment for each donation + standing + # 2=+1 for donations given -1 for donations received + # 3=1 for donors -1 for recivers who have not donated + # 4=+1 for donors + # 5=+1 for donors during task check +ALT_BENEFIT 1.00 # Number multiplied by the number of raw materials received from another organism to compute reward +ALT_COST 1.00 # Number multiplied by the number of your raw materials +ROTATE_ON_DONATE 0 # Rotate an organism to face its donor 0/1 (off/on) +REPUTATION_REWARD 0 # Reward an organism for having a good reputation +DONATION_FAILURE_PERCENT 0 # Percentage of times that a donation fails +RANDOMIZE_RAW_MATERIAL_AMOUNT 0 # Should all the organisms receive the same amount 0/1 (off/on) +DONATION_RESTRICTIONS 0 # 0=none + # 1=inter-species only + # 2=different tag only +INHERIT_REPUTATION 0 # 0=reputations are not inherited + # 1=reputations are inherited + # 2=tags are inherited +SPECIALISTS 0 # 0=generalists allowed + # 1=only specialists +STRING_AMOUNT_CAP -1 # -1=no cap on string amounts + # #=CAP +MATCH_ALREADY_PRODUCED 0 # 0=off + # 1=on + +### GROUP_FORMATION_GROUP ### +# Group Formation Settings +USE_FORM_GROUPS 0 # Enable organisms to form groups. 0=off, + # 1=on no restrict, + # 2=on restrict to defined +DEFAULT_GROUP -1 # Default group to assign to organisms not asserting a group membership (-1 indicates disabled) + +### DEME_NETWORK_GROUP ### +# Deme network settings +DEME_NETWORK_TYPE 0 # 0=topology, structure of network determines fitness. +DEME_NETWORK_REQUIRES_CONNECTEDNESS 1 # Whether the deme's network must be connected before an actual fitness is calculated. +DEME_NETWORK_TOPOLOGY_FITNESS 0 # Network measure used to determine fitness; see cDemeTopologyNetwork.h. +DEME_NETWORK_LINK_DECAY 0 # Number of updates after which a link decays; 0=no decay (default). +DEME_NETWORK_REMOVE_NODE_ON_DEATH 0 # Whether death of an organism in + # the deme removes its links; + # 0=no (default); + # 1=yes. + +### HGT_GROUP ### +# Horizontal gene transfer settings +ENABLE_HGT 0 # Whether HGT is enabled; 0=false (default), + # 1=true. +HGT_SOURCE 0 # Source of HGT fragments; 0=dead organisms (default), + # 1=parent. +HGT_FRAGMENT_SELECTION 0 # Method used to select fragments for HGT mutation; 0=random (default), + # 1=trimmed selection + # 2=random placement. +HGT_FRAGMENT_SIZE_MEAN 10 # Mean size of fragments (default=10). +HGT_FRAGMENT_SIZE_VARIANCE 2 # Variance of fragments (default=2). +HGT_MAX_FRAGMENTS_PER_CELL 100 # Max. allowed number of fragments per cell (default=100). +HGT_DIFFUSION_METHOD 0 # Method to use for diffusion of genome fragments; 0=none (default). +HGT_COMPETENCE_P 0.0 # Probability that an HGT 'natural competence' mutation will occur on divide (default=0.0). +HGT_INSERTION_MUT_P 0.0 # Probability that an HGT mutation will result in an insertion (default=0.0). +HGT_CONJUGATION_METHOD 0 # Method used to select the receiver and/or donor of an HGT conjugation; + # 0=random from neighborhood (default); + # 1=faced. +HGT_CONJUGATION_P 0.0 # Probability that an HGT conjugation mutation will occur on divide (default=0.0). +HGT_FRAGMENT_XFORM 0 # Transformation to apply to each fragment prior to incorporation into offspring's genome; 0=none (default), + # 1=random shuffle, + # 2=replace with random instructions. + +### INST_RES_GROUP ### +# Resource-Dependent Instructions Settings +INST_RES # Resource upon which the execution of certain instruction depends +INST_RES_FLOOR 0.0 # Assumed lower level of resource in environment. Used for probability dist. +INST_RES_CEIL 0.0 # Assumed upper level of resource in environment. Used for probability dist. + +### OPINION_GROUP ### +# Organism opinion settings +OPINION_BUFFER_SIZE 1 # Size of the opinion buffer (stores opinions set over the organism's lifetime); -1=inf, default=1, cannot be 0. + +### ALARM_GROUP ### +# Alarm Settings +BCAST_HOPS 1 # Number of hops to broadcast an alarm +ALARM_SELF 0 # Does sending an alarm move sender IP to alarm label? + # 0=no + # 1=yes + +### DIVISION_OF_LABOR_GROUP ### +# Division of Labor settings +AGE_POLY_TRACKING 0 # Print data for an age-task histogram +REACTION_THRESH 0 # The number of times the deme must perform each reaction in order to replicate +TASK_SWITCH_PENALTY 0 # Cost of task switching in cycles +TASK_SWITCH_PENALTY_TYPE 0 # Type of task switch cost: (0) none (1) learning, (2) retooling or context, (3) centrifuge +RES_FOR_DEME_REP 0 # The amount of resources that must be consumed prior to automatic deme replication + +### DEPRECATED_GROUP ### +# DEPRECATED (New functionality listed in comments) +ANALYZE_MODE 0 # 0 = Disabled + # 1 = Enabled + # 2 = Interactive + # DEPRECATED: use command line options -a[nalyze] or -i[nteractive]) +REPRO_METHOD 1 # Replace existing organism: 1=yes + # DEPRECATED: Use BIRTH_METHOD 3 instead. +LEGACY_GRID_LOCAL_SELECTION 0 # Enable legacy grid local mate selection. + # DEPRECATED: Birth chameber now uses population structure) +HARDWARE_TYPE 2 # 0 = Default, heads-based CPUs + # 1 = New SMT CPUs + # 2 = Transitional SMT + # 3 = Experimental CPU + # 4 = Gene Expression CPU +INST_SET - # Instruction set file ('-' = use default for hardware type) +INST_SET_LOAD_LEGACY 0 # Load legacy format instruction set file format + +### DEVEL_GROUP ### +# IN DEVELOPMENT (May not function correctly) +WORLD_Z 1 # Depth of the Avida world + +#include INST_SET=instset-transsmt.cfg diff --git a/avida-core/tests/demes_parasite_migration/config/environment.cfg b/avida-core/tests/demes_parasite_migration/config/environment.cfg new file mode 100644 index 000000000..a68e81b37 --- /dev/null +++ b/avida-core/tests/demes_parasite_migration/config/environment.cfg @@ -0,0 +1,9 @@ +REACTION NOT not process:value=1.0:type=pow requisite:max_count=1 +REACTION NAND nand process:value=1.0:type=pow requisite:max_count=1 +REACTION AND and process:value=2.0:type=pow requisite:max_count=1 +REACTION ORN orn process:value=2.0:type=pow requisite:max_count=1 +REACTION OR or process:value=3.0:type=pow requisite:max_count=1 +REACTION ANDN andn process:value=3.0:type=pow requisite:max_count=1 +REACTION NOR nor process:value=4.0:type=pow requisite:max_count=1 +REACTION XOR xor process:value=4.0:type=pow requisite:max_count=1 +REACTION EQU equ process:value=5.0:type=pow requisite:max_count=1 diff --git a/avida-core/tests/demes_parasite_migration/config/events.cfg b/avida-core/tests/demes_parasite_migration/config/events.cfg new file mode 100644 index 000000000..bad0f451b --- /dev/null +++ b/avida-core/tests/demes_parasite_migration/config/events.cfg @@ -0,0 +1,6 @@ +u begin InjectAll filename=evolved-not.org +u begin InjectParasite parasite-smt.org ABB 0 3 +u begin InjectParasite parasite-smt.org ABB 17 +u begin SavePopulation +u 500 SavePopulation +u 500 Exit diff --git a/avida-core/tests/demes_parasite_migration/config/evolved-not.org b/avida-core/tests/demes_parasite_migration/config/evolved-not.org new file mode 100644 index 000000000..9680c6f66 --- /dev/null +++ b/avida-core/tests/demes_parasite_migration/config/evolved-not.org @@ -0,0 +1,321 @@ +Search +Nop-C +Nop-D +Push-Prev +SetMemory +Nop-A +Nop-D +Nop-D +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 +IO +IO +IO +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Val-Nand +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +IO +Nop-C +Nop-C +Nop-C +Nop-C +Val-Copy +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-D +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +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 +Push-Prev +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +If-Greater +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +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-Erase +Head-Move +Nop-A +Nop-B + diff --git a/avida-core/tests/demes_parasite_migration/config/instset-transsmt.cfg b/avida-core/tests/demes_parasite_migration/config/instset-transsmt.cfg new file mode 100644 index 000000000..aa2a05df2 --- /dev/null +++ b/avida-core/tests/demes_parasite_migration/config/instset-transsmt.cfg @@ -0,0 +1,35 @@ +INSTSET transsmt:hw_type=2 + +INST Nop-A +INST Nop-B +INST Nop-C +INST Nop-D +INST Val-Shift-R +INST Val-Shift-L +INST Val-Nand +INST Val-Add +INST Val-Sub +INST Val-Mult +INST Val-Div +INST Val-Mod +INST Val-Inc +INST Val-Dec +INST SetMemory +INST Inst-Read +INST Inst-Write +INST If-Equal +INST If-Not-Equal +INST If-Less +INST If-Greater +INST Head-Push +INST Head-Pop +INST Head-Move +INST Search +INST Push-Next +INST Push-Prev +INST Push-Comp +INST Val-Delete +INST Val-Copy +INST IO +INST Inject +INST Divide-Erase diff --git a/avida-core/tests/demes_parasite_migration/config/parasite-smt.org b/avida-core/tests/demes_parasite_migration/config/parasite-smt.org new file mode 100644 index 000000000..3cdf90d52 --- /dev/null +++ b/avida-core/tests/demes_parasite_migration/config/parasite-smt.org @@ -0,0 +1,80 @@ +Search +Nop-C +Nop-D +Push-Prev +IO +Nop-C +If-Equal +Val-Mod +Val-Shift-R +Val-Dec +Nop-B +Val-Sub +IO +If-Equal +Val-Dec +IO +Nop-C +IO +Val-Nand +Nop-C +If-Less +If-Greater +Nop-C +Nop-C +Head-Pop +Head-Pop +Nop-C +Val-Nand +IO +SetMemory +Nop-C +Nop-A +IO +Nop-C +Head-Move +Nop-C +Head-Move +Nop-D +Val-Inc +Search +IO +Val-Shift-L +Val-Sub +Val-Delete +Val-Inc +Val-Delete +IO +Head-Push +Nop-A +Val-Dec +Head-Push +Nop-B +Val-Shift-R +Nop-C +Head-Push +Val-Inc +If-Not-Equal +Nop-B +IO +Nop-C +Nop-A +Nop-C +Nop-C +Val-Dec +Nop-C +Nop-D +SetMemory +Search +Inst-Read +Inst-Write +Head-Push +Nop-C +If-Equal +Inject +Head-Move +Inst-Read +Inst-Read +Head-Move +Nop-A +Nop-B diff --git a/avida-core/tests/demes_parasite_migration/expected/.gitignore b/avida-core/tests/demes_parasite_migration/expected/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/avida-core/tests/demes_parasite_migration/expected/data/detail--1.spop b/avida-core/tests/demes_parasite_migration/expected/data/detail--1.spop new file mode 100644 index 000000000..0a9318260 --- /dev/null +++ b/avida-core/tests/demes_parasite_migration/expected/data/detail--1.spop @@ -0,0 +1,27 @@ +#filetype genotype_data +#format id src src_args parents num_units total_units length merit gest_time fitness gen_born update_born update_deactivated depth hw_type inst_set sequence cells gest_offset lineage +# Structured Population Save +# Tue Nov 14 23:23:19 2023 +# 1: ID +# 2: Source +# 3: Source Args +# 4: Parent ID(s) +# 5: Number of currently living organisms +# 6: Total number of organisms that ever existed +# 7: Genome Length +# 8: Average Merit +# 9: Average Gestation Time +# 10: Average Fitness +# 11: Generation Born +# 12: Update Born +# 13: Update Deactivated +# 14: Phylogenetic Depth +# 15: Hardware Type ID +# 16: Inst Set Name +# 17: Genome Sequence +# 18: Occupied Cell IDs +# 19: Gestation (CPU) Cycle Offsets +# 20: Lineage Label + +1 div:ext (none) (none) 300 300 320 0 0 0 0 -1 -1 0 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2 horz:int ABB (none) 4 4 80 0 0 0 0 -1 -1 0 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 0,1,2,17 -1,-1,-1,-1 diff --git a/avida-core/tests/demes_parasite_migration/expected/data/detail-500.spop b/avida-core/tests/demes_parasite_migration/expected/data/detail-500.spop new file mode 100644 index 000000000..4e52bf58d --- /dev/null +++ b/avida-core/tests/demes_parasite_migration/expected/data/detail-500.spop @@ -0,0 +1,285 @@ +#filetype genotype_data +#format id src src_args parents num_units total_units length merit gest_time fitness gen_born update_born update_deactivated depth hw_type inst_set sequence cells gest_offset lineage +# Structured Population Save +# Tue Nov 14 23:23:20 2023 +# 1: ID +# 2: Source +# 3: Source Args +# 4: Parent ID(s) +# 5: Number of currently living organisms +# 6: Total number of organisms that ever existed +# 7: Genome Length +# 8: Average Merit +# 9: Average Gestation Time +# 10: Average Fitness +# 11: Generation Born +# 12: Update Born +# 13: Update Deactivated +# 14: Phylogenetic Depth +# 15: Hardware Type ID +# 16: Inst Set Name +# 17: Genome Sequence +# 18: Occupied Cell IDs +# 19: Gestation (CPU) Cycle Offsets +# 20: Lineage Label + +115 div:int (none) 1 4 7 320 630 1890 0.333333 3 185 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccuccbccccccccccccccccccypqvcrGxab 3,45,198,209 0,0,0,0 0,0,0,0 +69 div:int (none) 1 2 4 321 630 2413.4 0.294275 2 124 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccoccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAccccccccccccccccccchcccccccccccccccccccccypqvcrGxab 12,258 0,0 0,0 +207 horz:int BBBB 47 6 6 80 0 0 0 0 289 -1 2 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvnnvbecvmsbEcaccncdoypqvcrFxppxab 24,43,53,84,92,243 -1,-1,-1,-1,-1,-1 +138 horz:int BBBB 47 5 11 81 0 0 0 0 227 -1 2 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppsxab 40,42,155,161,176 -1,-1,-1,-1,-1 +391 div:int (none) 277 1 1 320 0 0 0 6 391 -1 4 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccckccccccccccdccccccqcccccccccccccccCcccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAccccccjccccccccccccucccccccccccccccccccccypqvcrGxab 44 0 0 +184 horz:int BBBB 88 1 1 79 0 0 0 0 254 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwgEocaEcxcxdmyEfiCmCEvanCbecvmsbEcaccncdoypqvcrFxppxab 108 -1 +368 horz:int BBBB 186 1 1 24 0 0 0 0 374 -1 3 2 transsmt cdAEcrlenbiErnEcEgjtuccw 119 -1 +460 div:int (none) 1 1 1 320 0 0 0 7 455 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccAcccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccAcccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 130 0 0 +414 horz:int BBBB 211 1 1 80 0 0 0 0 413 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCbCEvanvbecvmsbEcaccxcdoypqvcrFxppxab 146 -1 +483 horz:int BBBB 456 1 1 81 0 0 0 0 481 -1 4 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEowcaEcxcxdmyEfiCmCEvanCbecvmsbEcaccDcdoypqvcrFxppxab 173 -1 +345 div:int (none) 168 1 1 320 0 0 0 6 370 -1 3 2 transsmt ycdAoaddxccccccccccccucEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDccaccccccccccccccccccccccccccccccccccccccccccccccchdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 274 0 0 +253 div:int (none) 1 1 1 320 630 2707 0.23273 5 310 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccfcccccccccypqvcrGxab 279 0 0 +1 div:ext (none) (none) 139 1011 320 630 2008.09 0.324947 0 -1 -1 0 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 1,5,9,11,15,18,20,21,23,24,25,28,32,35,37,38,43,49,55,59,60,63,64,66,67,70,71,72,76,78,79,83,86,87,89,93,94,96,97,101,102,108,112,113,116,118,119,120,122,123,125,126,131,132,133,135,136,139,141,142,149,150,152,153,154,156,158,163,165,167,168,169,171,172,173,178,179,182,185,186,187,189,190,193,194,196,197,199,202,203,204,205,210,214,215,216,217,220,221,225,227,228,229,230,231,232,233,234,235,236,238,239,242,245,247,252,255,256,257,259,260,261,263,267,270,271,272,273,276,277,281,282,288,291,292,293,295,296,298 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +47 horz:int BBBB 2 20 66 80 0 0 0 0 64 -1 1 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 7,27,31,50,56,60,62,63,87,121,132,138,147,150,163,179,195,247,291,292 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +461 horz:int BBBB 374 1 1 80 0 0 0 0 458 -1 5 2 transsmt ycdAEcDlenbiErngcEgctuccwwceEocaEcxcxdmyEfiCmCEvanCbecvmsbEcaccncdoypqvcrFxppxab 18 -1 +484 horz:int BBBB 47 1 1 80 0 0 0 0 483 -1 2 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEjanvbecvmsbEcaccncdoypqvcrFxppxab 32 -1 +185 horz:int BBBB 47 4 8 80 0 0 0 0 254 -1 2 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvaFvbecvmsbEcaccncdoypqvcrFxppxab 38,79,117,222 -1,-1,-1,-1 +116 div:int (none) 1 1 1 320 0 0 0 3 185 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccycccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccEccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 105 0 0 +346 horz:int BBBB 285 1 1 80 0 0 0 0 370 -1 4 2 transsmt ycdAEcrlenbiErnEcEgctuccwwwgEocaEcxcxdmyEfiCmCEvanvbecvmsDEcaccncdoypqvcrFxppuab 116 -1 +438 horz:int BBBB 383 1 1 24 0 0 0 0 431 -1 3 2 transsmt cdAEcrlenbiErnEcEgctuccp 151 -1 +369 div:int (none) 1 1 2 320 630 1888 0.333686 6 375 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccrcccucccccccccccccccccccccypqvcrGxab 176 0 0 +277 div:int (none) 195 1 1 320 630 1882 0.33475 5 332 -1 3 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccckccccccccccdccccccqcccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAccccccjccccccccccccucccccccccccccccccccccypqvcrGxab 289 0 0 +278 horz:int BBBB 228 5 5 80 0 0 0 0 334 -1 4 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanCbAcvhsbEcaccncdoypqvcrFxppxab 10,34,98,238,264 -1,-1,-1,-1,-1 +301 horz:int BBBB 47 1 3 80 0 0 0 0 352 -1 2 2 transsmt ycdAEcrlenbiErnEcEgctuccwxcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 28 -1 +117 div:int (none) 37 1 3 320 630 1887 0.333863 3 185 -1 2 2 transsmt ycdAoaddxccccccccccccccEEccccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccchcccccccccxccccccccccccccccccccccccccccccccccccccccccccccccoAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 40 0 0 +416 horz:int BBBB 226 1 1 79 0 0 0 0 414 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmbEvanvecvmsbEcpccncdoypqvcrFxppxab 44 -1 +255 div:int (none) 1 3 3 320 626 1887 0.331744 5 310 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccocccccccccccccccucccccccccccccccccccccypqvcrGxab 46,110,146 0,0,0 0,0,0 +439 horz:int BBBB 47 1 1 80 0 0 0 0 432 -1 2 2 transsmt ycdAEcrlenbiArnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 134 -1 +186 horz:int BBBB 47 1 1 80 0 0 0 0 255 -1 2 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcpEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 223 -1 +485 div:int (none) 1 1 1 320 0 0 0 6 486 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxccqccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 269 0 0 +347 horz:int BBBB 88 1 1 80 0 0 0 0 370 -1 3 2 transsmt ycdAEcrlenbiErnEcEgcxuccwwcgEocaEcxcxdmyEfiCmCEvanCbecvmsfEcaccncdoypqvcrFxppxab 274 -1 +462 horz:int BBBB 278 1 1 80 0 0 0 0 459 -1 5 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcncxdmyEfiCmCEvanCbAcvhsbEcaccncdoypqvcrFxppxab 287 -1 +486 div:int (none) 344 1 1 320 0 0 0 8 486 -1 2 2 transsmt ycdAoaddxccccccccccccccEEEccccccccccccccccccccccccccccAccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccdcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 13 0 0 +256 div:int (none) 1 1 2 320 630 1888 0.333686 5 310 -1 1 2 transsmt ycdAoaddxcccccccBccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 36 0 0 +302 horz:int BBBB 283 1 1 80 0 0 0 0 352 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfirmCEvanvbecvmsbEcaccncdoypqvcwFxppxab 64 -1 +417 horz:int BBBB 303 1 1 80 0 0 0 0 415 -1 5 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcmEocaEcxcxdmyEfiCmCEvanCbecvmsbEcuccncdoypqvcrFxppxan 90 -1 +440 horz:int BBBB 226 4 4 80 0 0 0 0 432 -1 3 2 transsmt ycdAEcrlenbiErnccEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcpccncdoypqvcrFxppxab 110,113,219,288 -1,-1,-1,-1 +463 horz:int BBBB 88 1 1 80 0 0 0 0 461 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanCbecvmsbicaccncdoypqvcrFxppxab 175 -1 +394 horz:int BBBB 226 1 2 80 0 0 0 0 396 -1 3 2 transsmt ycdAEcrlenbiErnEcEkctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcpccncdoypqvcrFxppxab 226 -1 +325 div:int (none) 56 1 1 320 0 0 0 6 367 -1 2 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccBcccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucecccccccccccccccccccypqvcrGxab 226 0 0 +326 div:int (none) 1 1 1 320 0 0 0 6 367 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEcccoDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 4 0 0 +349 div:int (none) 1 3 3 320 626 1889 0.331392 6 370 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDoccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 22,124,166 0,0,0 0,0,0 +487 div:int (none) 429 1 1 320 0 0 0 8 488 -1 2 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgcccccsccccccscccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 53 0 0 +372 div:int (none) 125 3 3 320 0 0 0 6 378 -1 3 2 transsmt aycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccgcccccccccccccccccccccccccccqcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxa 54,103,244 0,0,0 0,0,0 +234 horz:int BBBB 206 1 2 80 0 0 0 0 307 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcyEocaccxctdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 105 -1 +418 horz:int BBBB 403 1 1 80 0 0 0 0 416 -1 4 2 transsmt ycdAEcrlenbiErnEyEgctuccwwcgEacaEcxcxdmyEfiCmCEvanCbecvmsbEcaccncdoypqvcrFxppxab 118 -1 +280 horz:int BBBB 47 1 1 80 0 0 0 0 335 -1 2 2 transsmt ycdAGcrlenbiErnEcEgwtuccwwcgEocaEcxcxdmyEpiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 200 -1 +464 horz:int BBBB 382 1 1 79 0 0 0 0 462 -1 5 2 transsmt ycdAEcrnenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsDEcacccdoypqvcrFxppuab 294 -1 +373 horz:int BBBB 276 1 1 79 0 0 0 0 378 -1 5 2 transsmt ycdAEcqlenbiErnEcEgctccwwceEocaEcxcxdEyEfiCmCEvanCbecvmsbEcaccncdoypqvcrFxppxab 16 -1 +465 horz:int BBBB 226 1 1 79 0 0 0 0 462 -1 3 2 transsmt ycdAEcrleniErnEcEgctuccwwcgEocaEcjcxdmyEfiCmCEvanvbecvmsbEcpcsncdoypqvcrFxppxab 17 -1 +488 div:int (none) 1 1 1 320 0 0 0 8 490 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccoccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 52 0 0 +97 div:int (none) 1 3 4 320 630 1888 0.333686 3 182 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccpcccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 58,134,253 0,0,0 0,0,0 +212 div:int (none) 130 1 2 320 630 4999 0.126025 4 292 -1 2 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccaccccccccccccccccccccbEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 74 0 0 +419 horz:int BBBB 193 2 2 80 0 0 0 0 416 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbDcvmsbEcaccncdoypqvcrFxpjxab 104,299 -1,-1 +442 horz:int BBBB 138 1 1 81 0 0 0 0 433 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoyyqvcrFxppsxab 139 -1 +396 horz:int BBBB 376 1 1 81 0 0 0 0 398 -1 5 2 transsmt ycdAEcrlenbiErnEcEgctuccxwFceEocaEcxcxdmyEfiCmCEvanCbecvmsbEcaccncdoypqvcrFxppxab 233 -1 +190 horz:int BBBB 186 11 23 24 0 0 0 0 261 -1 3 2 transsmt cdAEcrlenbiErnEcEgctuccw 4,21,54,86,130,194,221,224,230,245,296 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +466 horz:int BBBB 451 1 1 80 0 0 0 0 462 -1 6 2 transsmt ycdAEcrlenbiErnecEgctuccwwcmEocEEcxckdmyEfiCmCEvanCbecvmsbEcuccncdoypqvcrFxppxab 9 -1 +420 horz:int BBBB 199 3 3 81 0 0 0 0 416 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwtwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEckccncdoypqvcrFxppxab 47,68,234 -1,-1,-1 +167 div:int (none) 1 2 2 320 630 8106 0.0777202 4 247 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdqcccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 61,75 0,0 0,0 +397 horz:int BBBB 262 1 1 79 0 0 0 0 398 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbwvmsbEcacxncdoypqvcrFxppxab 149 -1 +374 horz:int BBBB 191 1 1 80 0 0 0 0 381 -1 4 2 transsmt ycdAEcDlenbiErnEcEgctuccwwceEocaEcxcxdmyEfiCmCEvanCbecvmsbEcaccncdoypqvcrFxppxab 189 -1 +351 div:int (none) 1 1 1 320 0 0 0 6 370 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccFcccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 208 0 0 +259 horz:int BBBB 47 1 1 80 0 0 0 0 317 -1 2 2 transsmt ycdApcrlenbiErnEqEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 240 -1 +489 horz:int BBBB 467 3 3 10 0 0 0 0 490 -1 4 2 transsmt ydAEcrlenb 241,253,290 -1,-1,-1 +443 horz:int BBBB 285 1 1 80 0 0 0 0 433 -1 4 2 transsmt ycdAEcrlenDiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsDEcaccncdoypqvCrFxppuab 254 -1 +191 horz:int BBBB 88 4 11 80 0 0 0 0 268 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwceEocaEcxcxdmyEfiCmCEvanCbecvmsbEcaccncdoypqvcrFxppxab 29,35,36,164 -1,-1,-1,-1 +329 div:int (none) 1 1 1 320 0 0 0 6 367 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxccccccccccccccccccccccccccjccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 69 0 0 +237 div:int (none) 39 2 2 321 630 4628 0.136128 5 307 -1 2 2 transsmt ycdAoaddxccccccccccccucEEEcccccccccccccccccccccccccccccccccccBccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 73,248 0,0 0,0 +283 horz:int BBBB 47 3 3 80 0 0 0 0 335 -1 2 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfirmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 112,258,285 -1,-1,-1 +444 div:int (none) 1 1 1 320 0 0 0 4 435 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccFcccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 181 0 0 +375 horz:int BBBB 278 1 1 80 0 0 0 0 381 -1 5 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcwcxdmyEfiCmCEvanCbAcvhsbEcaccncdoypqvcrFxppxab 229 -1 +352 horz:int BBBB 47 1 1 81 0 0 0 0 370 -1 2 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxvab 236 -1 +168 div:int (none) 39 1 2 320 628 1888 0.332627 4 247 -1 2 2 transsmt ycdAoaddxccccccccccccucEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDccaccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 237 0 0 +467 horz:int BBBB 193 1 1 79 0 0 0 0 462 -1 3 2 transsmt ydAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxpjxab 252 -1 +490 div:int (none) 241 1 1 321 0 0 0 8 490 -1 3 2 transsmt ycdAoaddxccccccccccccccEEEccccccccccccccccccccccccccccccccEccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccuccccsccccxccccccccccccypqvcrGxab 265 0 0 +398 horz:int BBBB 88 1 1 81 0 0 0 0 398 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcCgEocaEcxcxdmyEfiCmCEvdnCbecvmsbEcaccncdoypqvcrFxppxab 295 -1 +215 div:int (none) 1 1 1 320 0 0 0 5 302 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccdcccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 10 0 0 +468 horz:int BBBB 377 1 1 79 0 0 0 0 462 -1 3 2 transsmt ycdAEcrFenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCCEvanvbecvmsbEcaccncdoypqvcrFxppxab 23 -1 +353 horz:int BBBB 308 2 2 80 0 0 0 0 370 -1 5 2 transsmt ycdAEcrlenFbiErnEcEgctuccwwcgEoaEcxcxdmyEfiCmCEvanCbecvmzbEcaccncdoypqvcrFxkpxab 59,278 -1,-1 +399 horz:int BBBB 303 1 1 80 0 0 0 0 398 -1 5 2 transsmt ycdAEcrlenbiErnEcEgctuccwxcmEocaEcxcxdmyEfiCmCEvanCbecvmsbEcuccncdoymqvcrFxppxab 78 -1 +422 horz:int BBBB 353 1 1 80 0 0 0 0 418 -1 6 2 transsmt ycdAEcrlenFbiErnEcEgctuccwwcgEoaEcxcxdmyEfCCmCEvanCbecvmzbEcaccncdoypqvcrjxkpxab 88 -1 +376 horz:int BBBB 191 1 1 80 0 0 0 0 381 -1 4 2 transsmt ycdAEcrlenbiErnEcEgctuccxwceEocaEcxcxdmyEfiCmCEvanCbecvmsbEcaccncdoypqvcrFxppxab 136 -1 +445 div:int (none) 331 1 1 320 0 0 0 7 436 -1 2 2 transsmt ycdAoaddxccccccccccccccEEEccccccccccccccccccccccccccccEccccccccccccccccccccccgcccccccccccccccccckcccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 137 0 0 +238 div:int (none) 31 1 1 320 0 0 0 5 307 -1 2 2 transsmt ycdAoaddxccccccccccccccEEEccccccccccccccccccjccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccrcccccccccccccccccAcccicccccccccccccccucccccccccccccccccccccypqvcrGxab 211 0 0 +491 horz:int BBBB 191 1 1 79 0 0 0 0 491 -1 4 2 transsmt ycdAEcrlenbirnEcEgctuccwwceEocaEcxcxdmyEfiCmCEvanCbecvmsbEcaccncdoypqvcrFxppxab 266 -1 +31 div:int (none) 1 1 5 320 630 1888 0.333686 1 62 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccrcccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 278 0 0 +285 horz:int BBBB 194 4 5 80 0 0 0 0 336 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsDEcaccncdoypqvcrFxppuab 2,57,129,160 -1,-1,-1,-1 +9 div:int (none) 1 3 8 320 630 2409.29 0.302004 1 60 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEcccnDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 27,106,129 0,0,0 0,0,0 +78 div:int (none) 1 1 2 320 630 3768 0.222537 2 125 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcrcccccccccccccccccucccccccccccccccccccccypqvcrGxab 77 0 0 +423 horz:int BBBB 88 1 1 80 0 0 0 0 418 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcycxdmyEfiCmCEvanCbecvmsbEcaccncdoypqvcrFxppxab 89 -1 +193 horz:int BBBB 47 3 10 80 0 0 0 0 272 -1 2 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxpjxab 96,128,159 -1,-1,-1 +469 horz:int BBBB 207 1 1 80 0 0 0 0 463 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvnnvbecvmsbucaccncdoyvqvcrFxppxab 111 -1 +239 horz:int BBBB 47 1 1 80 0 0 0 0 308 -1 2 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdfypqvcrFxppxab 127 -1 +147 div:int (none) 93 1 2 320 630 1884 0.334395 4 244 -1 2 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDccccccccccccccccccccccccccccccccckcccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxccccccccccgccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 127 0 0 +446 horz:int BBBB 88 1 1 80 0 0 0 0 436 -1 3 2 transsmt ycdAEcrlenbiEpnEcEgctucccwcgEocaEcxcxdmyEfiCmCEvanCbecvmsbEcaccncdoypqvcrFxppxab 137 -1 +492 horz:int BBBB 185 1 1 80 0 0 0 0 492 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvaFvbecvmsbEcacCncdoypqvcrFxppxab 145 -1 +331 div:int (none) 1 2 2 320 630 2028.5 0.312071 6 368 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEccccccccccccccccccccccccccccEccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 192,213 0,0 0,0 +354 horz:int BBBB 234 1 1 80 0 0 0 0 371 -1 4 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcynocaccxctdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 237 -1 +216 div:int (none) 1 1 1 320 0 0 0 5 303 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccvcccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 243 0 0 +377 horz:int BBBB 47 1 1 80 0 0 0 0 383 -1 2 2 transsmt ycdAEcrFenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 257 -1 +400 horz:int BBBB 47 1 1 80 0 0 0 0 399 -1 2 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyfBiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 289 -1 +424 horz:int BBBB 88 1 1 80 0 0 0 0 419 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEGxcxdmyEfiCmCEvanCbecvmsbEcaccncdoypqvcrFxppxab 5 -1 +355 div:int (none) 1 1 1 320 0 0 0 6 371 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgcccccccccccccccccccccccccccccccccccccwccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 31 0 0 +378 horz:int BBBB 88 2 4 80 0 0 0 0 383 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanCbecvlsgEcaccncdoypqvcrFxppxab 33,279 -1,-1 +171 div:int (none) 69 1 3 321 630 3294 0.233643 4 248 -1 2 2 transsmt ycdAoaddxcccccccqccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccoccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAccccccccccccccccccchcccccccccccccccccccccypqvcrGxab 33 0 0 +56 div:int (none) 1 6 10 320 632 2139.64 0.316385 2 121 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucecccccccccccccccccccypqvcrGxab 42,84,95,128,206,241 0,0,0,0,0,0 0,0,0,0,0,0 +447 horz:int BBBB 88 1 1 81 0 0 0 0 443 -1 3 2 transsmt ycdAEcilenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanCbecvmmsbEcaccncdoypdvcrFxppxab 46 -1 +401 horz:int BBBB 285 1 1 80 0 0 0 0 399 -1 4 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmAEfiCmCEvanvbecvmsDEcaccncdoypqvcrFxppuab 85 -1 +240 div:int (none) 1 1 1 320 0 0 0 5 308 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEccccccccccgccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 85 0 0 +194 horz:int BBBB 47 2 3 80 0 0 0 0 272 -1 2 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsDEcaccncdoypqvcrFxppxab 169,204 -1,-1 +286 horz:int BBBB 199 4 6 81 0 0 0 0 336 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwtwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccfcdoypqvcrFxppxab 181,184,188,199 -1,-1,-1,-1 +470 horz:int BBBB 239 1 1 80 0 0 0 0 465 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmlEfiCmCEvBnvbecvmsbEcaccncdfypqvcrFxppxab 248 -1 +493 horz:int BBBB 466 1 1 79 0 0 0 0 492 -1 7 2 transsmt ycdAEcrlenbiErnecEgctucwwcmEocEEcxckdmyEfiCmCEvanCbecvmsbEcuccncdoypqvcrFxppxab 271 -1 +125 div:int (none) 19 1 1 320 630 1953 0.324167 3 186 -1 2 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccgcccccccccccccccccccccccccccqcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 286 0 0 +494 div:int (none) 126 1 1 320 0 0 0 5 493 -1 2 2 transsmt ycdAoaddxccccccccccccecEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgcccccccccccccccccccccccccccccccccccvccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcEcccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 39 0 0 +172 horz:int BBBB 142 4 15 8 0 0 0 0 248 -1 4 2 transsmt ycdAEcrl 49,144,207,246 -1,-1,-1,-1 +264 horz:int BBBB 199 1 1 81 0 0 0 0 319 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwtwcgEocaEckcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 71 -1 +103 div:int (none) 1 3 3 320 630 5016 0.205606 3 183 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDccccccccccccccccccccccclcccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 91,174,184 0,0,0 0,0,0 +195 div:int (none) 77 2 3 320 630 1885 0.334218 4 272 -1 2 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccqcccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAccccccjccccccccccccucccccccccccccccccccccypqvcrGxab 99,219 0,0 0,0 +126 div:int (none) 1 1 2 320 630 4933 0.137886 3 186 -1 1 2 transsmt ycdAoaddxccccccccccccecEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 148 0 0 +356 div:int (none) 44 1 1 319 0 0 0 6 371 -1 2 2 transsmt ycdAoaddxBcccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccuccccccccccccccccccccypqvcrGxab 175 0 0 +241 div:int (none) 13 2 2 320 628 1893.67 0.331646 5 308 -1 2 2 transsmt ycdAoaddxccccccccccccccEEEccccccccccccccccccccccccccccccccEccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccuccccsccccccccccccccccypqvcrGxab 177,285 0,0 0,0 +471 horz:int BBBB 409 1 1 81 0 0 0 0 466 -1 5 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocdaEcxcxdmyEfiCmCEvanvbecvmsbEcacjncdcypqvcrFxppxab 206 -1 +402 horz:int BBBB 185 1 1 80 0 0 0 0 399 -1 3 2 transsmt CcdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvaFvbecvmsbEcaccncdoypqvcrFxppxab 208 -1 +448 horz:int BBBB 287 1 1 80 0 0 0 0 445 -1 4 2 transsmt ycdAEcrlenblErnEDEgctuccwwcgEocaEcxcxdmyEfiCmCEvanCbecvmsbEcaCcncdoypqvcrFxppxab 272 -1 +104 div:int (none) 1 4 5 320 630 1890 0.333333 3 184 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEccccccccccccccccccccccccccbccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 19,26,117,164 0,0,0,0 0,0,0,0 +449 horz:int BBBB 283 1 1 80 0 0 0 0 445 -1 3 2 transsmt ycdAEcrlenbiErnEcEgrtuccwwcgEocaEcxcxdmyEfirmCEvanvbecvmsbEcaccncdoypqvurFxppxab 20 -1 +380 horz:int BBBB 287 1 1 80 0 0 0 0 384 -1 4 2 transsmt ycdAEcrlenbiErnEDEgctuccwwcgEocaEcxcxdmyEfizmCEvanCbecvmsbEcaCcncdoypqvcrFxppxab 51 -1 +196 horz:int BBBB 88 1 1 80 0 0 0 0 272 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcydmyEfiCmCEvanCbecvmsbEcaccncdoypqvcrFxppxab 55 -1 +472 horz:int BBBB 270 1 1 80 0 0 0 0 468 -1 4 2 transsmt yjdAEcrlenbiErnEcEdctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvcsbEcaccncdoypqvcrFxppxab 67 -1 +495 horz:int BBBB 283 1 1 78 0 0 0 0 494 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcEocaEcxcxdmyEfirmCEvanvbecvmsbEcacncdoypqvcrFxppxab 114 -1 +357 horz:int BBBB 290 2 2 79 0 0 0 0 371 -1 4 2 transsmt ycdAEcrlenbiErnEcEgcuccwwcgEocaEcxcxdmyEfiCmCEvanCbecvmzbEcaccncdoypqvcrFxkpxab 168,242 -1,-1 +403 horz:int BBBB 88 1 1 80 0 0 0 0 400 -1 3 2 transsmt ycdAEcrlenbiErnEyEgctuccwwcgEocaEcxcxdmyEfiCmCEvanCbecvmsbEcaccncdoypqvcrFxppxab 263 -1 +404 horz:int BBBB 207 1 1 79 0 0 0 0 400 -1 3 2 transsmt ycdAEcrlenbiErnicEgvtuccwwcgEocaEcxcxdmyEfiCmCEvnnvbecvmscEcacccdoypqvcrFxppxab 0 -1 +243 div:int (none) 1 2 3 320 630 1932 0.326241 5 308 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccdcccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 48,100 0,0 0,0 +82 div:int (none) 1 2 6 320 630 2145.2 0.306647 2 125 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccqccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 62,284 0,0 0,0 +358 div:int (none) 1 1 1 320 0 0 0 6 371 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccubccccccccccccccccccccypqvcrGxab 82 0 0 +13 div:int (none) 1 4 9 320 628 2073.44 0.312157 1 61 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccuccccsccccccccccccccccypqvcrGxab 88,138,201,262 0,0,0,0 0,0,0,0 +473 horz:int BBBB 88 1 1 80 0 0 0 0 469 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvapCbecvmsbEcaccncdoypqvcrFxppxab 141 -1 +59 div:int (none) 29 3 6 321 632 1893 0.333862 2 122 -1 2 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccxccccccccccceccccxcccccccccccccccccccccccccccccccccccccccccccbcccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 161,222,240 0,0,0 0,0,0 +105 div:int (none) 1 1 1 320 0 0 0 3 184 -1 1 2 transsmt ncdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgcccccccccccccccccccccccckcccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 183 0 0 +197 horz:int BBBB 47 1 2 80 0 0 0 0 272 -1 2 2 transsmt ycdAEcrlenbiErnEcEgctmccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 210 -1 +289 horz:int BBBB 267 1 2 80 0 0 0 0 337 -1 4 2 transsmt ycdAEcrqenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanCbecvmsbEcuccncdoypqvcrFxppxab 211 -1 +266 horz:int BBBB 185 1 1 80 0 0 0 0 321 -1 3 2 transsmt ycdArcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvaFvbecvmsbEcaccncdoypqvcrFxppxab 228 -1 +381 horz:int BBBB 47 1 1 81 0 0 0 0 384 -1 2 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcxccncdoypqvcrFxmppxab 235 -1 +450 div:int (none) 160 1 1 320 0 0 0 6 445 -1 2 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccocccccccccccccEccccDeccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 246 0 0 +496 div:int (none) 154 1 1 320 0 0 0 5 495 -1 2 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgcbcccxcccccccccccccccccccccccccccrccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 290 0 0 +382 horz:int BBBB 285 2 2 80 0 0 0 0 384 -1 4 2 transsmt ycdAEcrnenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsDEcaccncdoypqvcrFxppuab 3,82 -1,-1 +175 div:int (none) 1 3 4 320 628 1887 0.332803 4 248 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccucccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 7,47,157 0,0,0 0,0,0 +497 horz:int BBBB 138 1 1 81 0 0 0 0 495 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmvEfiCmCEvanvbecAmsbEcaccncdoypqvcrFxppFxab 22 -1 +198 horz:int BBBB 88 1 1 80 0 0 0 0 272 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxtmyEfiCmCEvanCbecvmsbEcaccncdoypqvcrFxppxab 70 -1 +290 horz:int BBBB 88 1 1 80 0 0 0 0 337 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanCbecvmzbEcaccncdoypqvcrFxkpxab 131 -1 +474 div:int (none) 1 1 1 320 0 0 0 6 470 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccicccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 140 0 0 +37 div:int (none) 1 1 3 320 630 1890 0.333333 1 62 -1 1 2 transsmt ycdAoaddxccccccccccccccEEccccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxccccccccccccccccccccccccccccccccccccccccccccccccoAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 170 0 0 +336 div:int (none) 249 1 1 320 0 0 0 6 369 -1 2 2 transsmt abcdefghijklmnopqrstuvwxyzABCDEFGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 180 0 0 +291 horz:int BBBB 279 16 31 10 0 0 0 0 337 -1 4 2 transsmt yydApcrlen 8,48,58,81,126,143,158,170,171,183,186,190,218,231,232,261 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +383 horz:int BBBB 47 1 1 80 0 0 0 0 385 -1 2 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdpyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 45 -1 +452 horz:int BBBB 47 1 1 79 0 0 0 0 446 -1 2 2 transsmt ycdACcrlenbiErnEcEgctuccwvcEocaEcxcxdmyEfiCmCEvanvbecvmsbElaccncdoypqvcrFxppxas 72 -1 +406 horz:int BBBB 88 1 1 80 0 0 0 0 402 -1 3 2 transsmt ycdbEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanCbecvmsbEcaccncdoypqvcrFxppxab 80 -1 +153 div:int (none) 40 2 2 320 626 5262 0.118966 4 245 -1 2 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccFcccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxccccccccccccccccccccccccnccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 111,151 0,0 0,0 +314 div:int (none) 214 1 1 320 0 0 0 6 359 -1 3 2 transsmt ycdAoaddxccccccccccccccEEEccccccccccccccccccccccccccccccxccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDccccccccccccccccccccczcccccccccccccccccccccccccpcccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 160 0 0 +268 horz:int BBBB 88 1 1 81 0 0 0 0 322 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmxCEvanCbecvmsbEcaccncdoypqvcrFxppxab 165 -1 +475 horz:int BBBB 47 1 1 80 0 0 0 0 470 -1 2 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCyvanvbecvmsbEcaccncdoypqvcrFxppxab 167 -1 +498 div:int (none) 44 1 1 319 0 0 0 8 496 -1 2 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxccccccccccccctcccccccccccccccccccccccccccccccccccAcccccccccccccccccccuccccccccccccccccccccypqvcrGxab 280 0 0 +337 horz:int BBBB 88 1 1 79 0 0 0 0 369 -1 3 2 transsmt ycdAzcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanCbecvmsbEcaccncdospqvcrFxppxb 297 -1 +246 div:int (none) 44 1 1 319 0 0 0 5 308 -1 2 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccchccccccccccccccccccccccccccccAcccccccccccccccccccuccccccccccccccccccccypqvcrGxab 2 0 0 +430 div:int (none) 241 1 1 320 0 0 0 7 429 -1 3 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccmccccEccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccuccccsccccccccccccccccypqvcFGxab 17 0 0 +499 horz:int BBBB 47 1 1 80 0 0 0 0 497 -1 2 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoApqvcrFxppxab 73 -1 +361 horz:int BBBB 292 1 1 80 0 0 0 0 372 -1 4 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvawCbecvmsbEcaccncdoypqvcrFxpExab 76 -1 +338 div:int (none) 1 1 1 320 0 0 0 6 369 -1 1 2 transsmt ycdAoaddxcccccccAccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 90 0 0 +154 div:int (none) 1 1 1 320 630 8112 0.0776627 4 245 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgcbcccxccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 115 0 0 +223 horz:int BBBB 188 1 2 80 0 0 0 0 305 -1 4 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEixcxdmyEfiCmCEvrnCbecvmsbEcaccncdoypqvcrFxppxab 185 -1 +407 horz:int BBBB 88 1 1 80 0 0 0 0 404 -1 3 2 transsmt ccdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanCbecvmsbEcaccncdoypqvcrFxppxab 250 -1 +408 horz:int BBBB 47 1 2 80 0 0 0 0 404 -1 2 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxphxab 19 -1 +270 horz:int BBBB 213 1 2 80 0 0 0 0 322 -1 3 2 transsmt ycdAEcrlenbiErnEcEdctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvcsbEcaccncdoypqvcrFxppxab 26 -1 +316 div:int (none) 78 1 1 320 0 0 0 4 361 -1 2 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxccccuccccccccccccccccccccccccccccccccccccccccccccAcrcccccccccccccccccucccccccccccccccccccccypqvcrGxab 29 0 0 +109 div:int (none) 1 3 5 320 630 2611.5 0.282977 3 184 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxccccccccccccccccccccccccccccccccaccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 56,145,155 0,0,0 0,0,0 +454 div:int (none) 69 1 1 321 0 0 0 6 447 -1 2 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccoccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccscccccccccccccccccccccccccccccccccccccccccAccccccccccccccccccchcccccccccccccccccccccypqvcrGxab 104 0 0 +477 horz:int BBBB 470 2 2 47 0 0 0 0 476 -1 4 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmlEfiCmCE 106,216 -1,-1 +155 div:int (none) 1 2 5 319 628 1884 0.333333 4 245 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 121,254 0,0 0,0 +86 div:int (none) 1 2 4 320 630 2433 0.282066 2 126 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccfcccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 144,212 0,0 0,0 +362 horz:int BBBB 239 1 1 81 0 0 0 0 372 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocdaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdfypqvcrFxppxab 196 -1 +385 div:int (none) 1 1 1 320 0 0 0 5 385 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccecccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 207 0 0 +500 div:int (none) 1 1 1 320 0 0 0 7 497 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccwcypqvcrGxhb 224 0 0 +293 horz:int BBBB 88 1 1 80 0 0 0 0 339 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctgccwwcgEocaEcxcxdmyEfiCmCEvanCbecvmsbEcaccncdoypqvcrFxppxab 255 -1 +178 div:int (none) 1 1 1 320 0 0 0 4 249 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypFvcrGxab 297 0 0 +455 horz:int BBBB 446 3 3 24 0 0 0 0 448 -1 4 2 transsmt cdAEcrlenbiEpnEcEgctuccc 30,123,270 -1,-1,-1 +248 div:int (none) 1 2 2 320 630 1889 0.33351 4 309 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEcczcDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 57,80 0,0 0,0 +18 div:int (none) 1 3 16 319 628 2171.46 0.316286 1 61 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 68,147,266 0,0,0 0,0,0 +202 div:int (none) 1 1 1 320 0 0 0 2 287 -1 1 2 transsmt yhdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccBcccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 109 0 0 +363 horz:int BBBB 88 1 1 80 0 0 0 0 372 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanCbecvmsbEcaccncdoypqvcuFxppxab 203 -1 +478 horz:int BBBB 376 1 1 82 0 0 0 0 477 -1 5 2 transsmt ycadAEcrlenbiErnEcEgctuccxwceEocaEcxucxdmyEfiCmCEvanCbecvmsbEcaccncdoypqscrFxppxab 220 -1 +409 horz:int BBBB 362 1 1 81 0 0 0 0 405 -1 4 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocdaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdcypqvcrFxppxab 256 -1 +88 horz:int BBBB 47 23 60 80 0 0 0 0 160 -1 2 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanCbecvmsbEcaccncdoypqvcrFxppxab 6,11,13,15,37,41,74,83,100,109,124,125,133,142,153,157,182,202,205,227,260,277,282 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +249 div:int (none) 1 1 1 320 630 1890 0.333333 5 309 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccyBqvcrGxab 6 0 0 +456 horz:int BBBB 88 1 1 80 0 0 0 0 449 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanCbecvmsbEcaccDcdoypqvcrFxppxab 25 -1 +364 div:int (none) 1 2 2 320 630 4108 0.153359 6 372 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDccccccccccccccccccccccccccccccccccccccEccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 50,275 0,0 0,0 +318 horz:int BBBB 279 1 2 10 0 0 0 0 363 -1 4 2 transsmt yydApcrlon 69 -1 +226 horz:int BBBB 47 3 4 80 0 0 0 0 305 -1 2 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcpccncdoypqvcrFxppxab 93,97,212 -1,-1,-1 +479 horz:int BBBB 378 1 1 81 0 0 0 0 477 -1 4 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanCbecvlsgEcaCcnncdoypqvcrFxppxab 120 -1 +341 horz:int BBBB 138 1 1 80 0 0 0 0 369 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcacncdoypqvcrFxppsxab 225 -1 +111 div:int (none) 1 1 1 320 0 0 0 3 184 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccckccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 251 0 0 +157 div:int (none) 1 1 3 321 632 1894 0.333685 4 245 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccBccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 299 0 0 +66 div:int (none) 1 2 6 320 630 2361.33 0.30028 2 123 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAccccccczcccccccccccucccccccccccccccccccccypqvcrGxab 30,162 0,0 0,0 +43 div:int (none) 1 1 6 320 630 2112.33 0.31054 1 62 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccecccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 92 0 0 +480 horz:int BBBB 47 1 1 80 0 0 0 0 477 -1 2 2 transsmt ycdAEcrlenbiErrEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbesvmsbEcaccncdoypqvcrFxppxab 122 -1 +411 horz:int BBBB 47 1 1 80 0 0 0 0 406 -1 2 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcoFxppxab 187 -1 +319 div:int (none) 1 1 1 321 0 0 0 6 365 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgcccccccccccccjcccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 249 0 0 +457 horz:int BBBB 186 1 1 24 0 0 0 0 451 -1 3 2 transsmt cdAEcrlenbiErnEcEgGtuccx 284 -1 +250 div:int (none) 173 1 2 320 630 4490 0.140312 5 309 -1 3 2 transsmt ycdAoaddxccccccccccccccEEEccccccccAccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccEcccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccjcccypqvcrGxab 287 0 0 +44 div:int (none) 1 6 14 319 628 1897.06 0.331157 1 62 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccuccccccccccccccccccccypqvcrGxab 0,16,41,51,143,159 0,0,0,0,0,0 0,0,0,0,0,0 +435 div:int (none) 104 1 1 320 0 0 0 7 431 -1 2 2 transsmt ycdAoaddxccccccccccccccEEEccccccccccccccccccccccccccbccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccgcccccccccccucccccccccccccccccccccypqvcrGxab 8 0 0 +67 div:int (none) 1 4 6 320 630 3865.8 0.239015 2 123 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDccccccccccccccccccccccccccccccccccccdccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 14,34,188,283 0,0,0,0 0,0,0,0 +366 horz:int BBBB 88 1 1 80 0 0 0 0 373 -1 3 2 transsmt ycdAEcrlenbiErnFcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanCbecvmsbEcaccncdoypqvcrFxppxab 77 -1 +297 div:int (none) 43 3 3 320 630 2189 0.293425 5 348 -1 2 2 transsmt ycdAoaddxccfcccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccecccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 107,114,264 0,0,0 0,0,0 +481 horz:int BBBB 138 1 1 81 0 0 0 0 479 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfhCmCEvanvbecvmsbEcaccncdoypqvcrFxppsxab 178 -1 +389 horz:int BBBB 366 1 1 80 0 0 0 0 388 -1 4 2 transsmt ycdAEcrlenbiEdnFcEgctucFwwcgEocaEcxcxdmyEfiCmCEvanCbecvmsbEcaccncdoypqvcrFxppxab 180 -1 +182 div:int (none) 37 1 1 321 0 0 0 4 251 -1 2 2 transsmt ycdAoaddxccccccccccccccEEccccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccpcccccccccccccccccccccccxccccccccccccccccccccccccccccccccccccccccccccccccoAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 195 0 0 +320 horz:int BBBB 276 1 1 79 0 0 0 0 365 -1 5 2 transsmt ycmAEcrlenbiErnEcEgctccwwceEucaEcxcxdmyEfiCmCEvanCbecvmsbEcaccncdoypqvcrFxppxab 239 -1 +274 horz:int BBBB 261 2 4 32 0 0 0 0 325 -1 4 2 transsmt ycsAEcrlenbiErnEcEgctuccwwcgEoca 251,276 -1,-1 +412 horz:int BBBB 383 1 1 24 0 0 0 0 409 -1 3 2 transsmt cdAEcrlenbiErnEcEDctuccw 262 -1 +228 horz:int BBBB 88 1 1 80 0 0 0 0 306 -1 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanCbAcvmsbEcaccncdoypqvcrFxppxab 267 -1 +160 div:int (none) 1 2 3 320 626 3512.33 0.207088 4 245 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccocccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 81,294 0,0 0,0 +344 div:int (none) 1 1 2 320 630 1888 0.333686 6 369 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEccccccccccccccccccccccccccccAccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 98 0 0 +275 div:int (none) 1 1 1 320 0 0 0 5 331 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgAccccccccccccccfccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 200 0 0 +459 div:int (none) 1 1 1 320 0 0 0 7 453 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccpcccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 218 0 0 +45 div:int (none) 1 1 7 320 630 1890 0.333333 1 62 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgcccbccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 223 0 0 +436 horz:int BBBB 287 1 1 80 0 0 0 0 431 -1 4 2 transsmt ycdAEcrlenbiErnEDEgctaccwwcgDocaEcxcxdmyEfiCmCEvanCbecvmsbEcaCcncdoypqvcrFxppxab 244 -1 +321 div:int (none) 222 1 1 320 0 0 0 6 365 -1 4 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccrcccccccccccccccccccccccccccccccccccEccccDccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccxccccccccccceccccxcccccccccccccccccccccccccccccccccccccccccccbcccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 250 0 0 +482 div:int (none) 97 1 1 320 0 0 0 8 480 -1 2 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccdcccccccccccccccccccccpcccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 268 0 0 +214 div:int (none) 97 0 1 320 630 1887 0.333863 5 300 500 2 2 transsmt ycdAoaddxccccccccccccccEEEccccccccccccccccccccccccccccccxccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccpcccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab +279 horz:int BBBB 259 0 1 80 0 0 0 0 334 495 3 2 transsmt yydApcrlenbiErnEqEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab +451 horz:int BBBB 303 0 2 80 0 0 0 0 446 493 5 2 transsmt ycdAEcrlenbiErnecEgctuccwwcmEocEEcxcxdmyEfiCmCEvanCbecvmsbEcuccncdoypqvcrFxppxab +429 div:int (none) 1 0 1 320 628 1887 0.332803 7 428 489 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccscccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab +303 horz:int BBBB 267 0 2 80 0 0 0 0 352 470 4 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcmEocaEcxcxdmyEfiCmCEvanCbecvmsbEcuccncdoypqvcrFxppxab +276 horz:int BBBB 191 0 2 79 0 0 0 0 332 468 4 2 transsmt ycdAEcrlenbiErnEcEgctccwwceEocaEcxcxdmyEfiCmCEvanCbecvmsbEcaccncdoypqvcrFxppxab +292 horz:int BBBB 88 0 2 80 0 0 0 0 338 447 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanCbecvmsbEcaccncdoypqvcrFxpnxab +287 horz:int BBBB 88 0 1 80 0 0 0 0 337 445 3 2 transsmt ycdAEcrlenbiErnEDEgctuccwwcgEocaEcxcxdmyEfiCmCEvanCbecvmsbEcaCcncdoypqvcrFxppxab +262 horz:int BBBB 47 0 4 80 0 0 0 0 318 440 2 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbwcvmsbEcaccncdoypqvcrFxppxab +211 horz:int BBBB 47 0 5 80 0 0 0 0 291 440 2 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCbCEvanvbecvmsbEcaccncdoypqvcrFxppxab +199 horz:int BBBB 47 0 2 81 0 0 0 0 273 428 2 2 transsmt ycdAEcrlenbiErnEcEgctuccwtwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab +222 div:int (none) 59 0 1 320 630 1887 0.333863 5 304 373 3 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccxccccccccccceccccxcccccccccccccccccccccccccccccccccccccccccccbcccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab +39 div:int (none) 1 0 4 320 628 1892.8 0.331792 1 62 371 1 2 transsmt ycdAoaddxccccccccccccucEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab +308 horz:int BBBB 290 0 1 81 0 0 0 0 354 371 4 2 transsmt ycdAEcrlenFbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanCbecvmzbEcaccncdoypqvcrFxkpxab +261 horz:int BBBB 88 0 1 80 0 0 0 0 318 369 3 2 transsmt ycsAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanCbecvmsbEcaccncdoypqvcrFxppxab +267 horz:int BBBB 88 0 1 80 0 0 0 0 321 365 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanCbecvmsbEcuccncdoypqvcrFxppxab +213 horz:int BBBB 47 0 2 80 0 0 0 0 292 352 2 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvcsbEcaccncdoypqvcrFxppxab +188 horz:int BBBB 88 0 3 80 0 0 0 0 256 351 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEixcxdmyEfiCmCEvanCbecvmsbEcaccncdoypqvcrFxppxab +173 div:int (none) 118 0 1 320 630 1885 0.334218 4 248 310 2 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccEcccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccjcccypqvcrGxab +130 div:int (none) 1 0 1 320 630 3197 0.19706 3 188 308 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccacccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab +77 div:int (none) 1 0 2 320 630 2337 0.279956 2 124 308 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAccccccjccccccccccccucccccccccccccccccccccypqvcrGxab +206 horz:int BBBB 47 0 1 80 0 0 0 0 289 307 2 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaccxctdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab +40 div:int (none) 1 0 3 320 626 1887 0.331744 1 62 306 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccFcccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab +142 horz:int BBBB 88 0 1 80 0 0 0 0 241 281 3 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanCbecvmsbEcaccncdoypqvceFxppxab +118 div:int (none) 1 0 1 320 630 1888 0.333686 3 185 249 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccEcccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab +29 div:int (none) 1 0 2 320 630 1889 0.33351 1 62 248 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccxcccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccbcccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab +93 div:int (none) 1 0 1 320 630 1887 0.333863 3 182 247 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxccccccccccgccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab +19 div:int (none) 1 0 1 320 630 1887 0.333863 1 61 186 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccgcccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab +2 horz:int ABB (none) 0 4 80 0 0 0 0 -1 123 0 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab diff --git a/avida-core/tests/demes_parasite_migration/test_list b/avida-core/tests/demes_parasite_migration/test_list new file mode 100644 index 000000000..2f7282cca --- /dev/null +++ b/avida-core/tests/demes_parasite_migration/test_list @@ -0,0 +1,36 @@ +;--- Begin Test Configuration File (test_list) --- +[main] +; Command line arguments to pass to the application +args = -s 100 +app = %(default_app)s +nonzeroexit = disallow ; Exit code handling (disallow, allow, or require) + ; disallow - treat non-zero exit codes as failures + ; allow - all exit codes are acceptable + ; require - treat zero exit codes as failures, useful + ; for creating tests for app error checking +createdby = Dave Knoester ; Who created the test +email = dk@cse.msu.edu ; Email address for the test's creator + +[consistency] +enabled = yes ; Is this test a consistency test? +long = no ; Is this test a long test? + +[performance] +enabled = no ; Is this test a performance test? +long = no ; Is this test a long test? + +; The following variables can be used in constructing setting values by calling +; them with %(variable_name)s. For example see 'app' above. +; +; app +; builddir +; cpus +; mode +; perf_repeat +; perf_user_margin +; perf_wall_margin +; svn +; svnmetadir +; svnversion +; testdir +;--- End Test Configuration File --- From 6254f92586845da3331256b1ec6b241d2495ca43 Mon Sep 17 00:00:00 2001 From: Matthew Andres Moreno Date: Wed, 15 Nov 2023 00:04:50 -0500 Subject: [PATCH 11/17] Fix tests --- .../expected/data/detail--1.spop | 27 ------------------- .../expected/data/detail-2.spop | 27 ------------------- .../expected/data/detail-3.spop | 27 ------------------- .../expected/data/detail-0.spop | 2 +- .../expected/data/detailgermlines-0.sgerm | 2 +- .../expected/data/detailgermlines-500.sgerm | 2 +- 6 files changed, 3 insertions(+), 84 deletions(-) delete mode 100644 avida-core/tests/demes_KillDemesHighestParasiteLoad/expected/data/detail--1.spop delete mode 100644 avida-core/tests/demes_KillDemesHighestParasiteLoad/expected/data/detail-2.spop delete mode 100644 avida-core/tests/demes_KillDemesHighestParasiteLoad/expected/data/detail-3.spop diff --git a/avida-core/tests/demes_KillDemesHighestParasiteLoad/expected/data/detail--1.spop b/avida-core/tests/demes_KillDemesHighestParasiteLoad/expected/data/detail--1.spop deleted file mode 100644 index 28aa5e964..000000000 --- a/avida-core/tests/demes_KillDemesHighestParasiteLoad/expected/data/detail--1.spop +++ /dev/null @@ -1,27 +0,0 @@ -#filetype genotype_data -#format id src src_args parents num_units total_units length merit gest_time fitness gen_born update_born update_deactivated depth hw_type inst_set sequence cells gest_offset lineage -# Structured Population Save -# Tue Nov 14 20:22:00 2023 -# 1: ID -# 2: Source -# 3: Source Args -# 4: Parent ID(s) -# 5: Number of currently living organisms -# 6: Total number of organisms that ever existed -# 7: Genome Length -# 8: Average Merit -# 9: Average Gestation Time -# 10: Average Fitness -# 11: Generation Born -# 12: Update Born -# 13: Update Deactivated -# 14: Phylogenetic Depth -# 15: Hardware Type ID -# 16: Inst Set Name -# 17: Genome Sequence -# 18: Occupied Cell IDs -# 19: Gestation (CPU) Cycle Offsets -# 20: Lineage Label - -1 div:ext (none) (none) 300 300 320 0 0 0 0 -1 -1 0 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -2 horz:int ABB (none) 8 8 80 0 0 0 0 -1 -1 0 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 0,1,2,17,170,200,201,202 -1,-1,-1,-1,-1,-1,-1,-1 diff --git a/avida-core/tests/demes_KillDemesHighestParasiteLoad/expected/data/detail-2.spop b/avida-core/tests/demes_KillDemesHighestParasiteLoad/expected/data/detail-2.spop deleted file mode 100644 index 37ff3b414..000000000 --- a/avida-core/tests/demes_KillDemesHighestParasiteLoad/expected/data/detail-2.spop +++ /dev/null @@ -1,27 +0,0 @@ -#filetype genotype_data -#format id src src_args parents num_units total_units length merit gest_time fitness gen_born update_born update_deactivated depth hw_type inst_set sequence cells gest_offset lineage -# Structured Population Save -# Tue Nov 14 20:22:00 2023 -# 1: ID -# 2: Source -# 3: Source Args -# 4: Parent ID(s) -# 5: Number of currently living organisms -# 6: Total number of organisms that ever existed -# 7: Genome Length -# 8: Average Merit -# 9: Average Gestation Time -# 10: Average Fitness -# 11: Generation Born -# 12: Update Born -# 13: Update Deactivated -# 14: Phylogenetic Depth -# 15: Hardware Type ID -# 16: Inst Set Name -# 17: Genome Sequence -# 18: Occupied Cell IDs -# 19: Gestation (CPU) Cycle Offsets -# 20: Lineage Label - -1 div:ext (none) (none) 200 300 320 0 0 0 0 -1 -1 0 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -2 horz:int ABB (none) 4 8 80 0 0 0 0 -1 -1 0 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 170,200,201,202 -1,-1,-1,-1 diff --git a/avida-core/tests/demes_KillDemesHighestParasiteLoad/expected/data/detail-3.spop b/avida-core/tests/demes_KillDemesHighestParasiteLoad/expected/data/detail-3.spop deleted file mode 100644 index 37ff3b414..000000000 --- a/avida-core/tests/demes_KillDemesHighestParasiteLoad/expected/data/detail-3.spop +++ /dev/null @@ -1,27 +0,0 @@ -#filetype genotype_data -#format id src src_args parents num_units total_units length merit gest_time fitness gen_born update_born update_deactivated depth hw_type inst_set sequence cells gest_offset lineage -# Structured Population Save -# Tue Nov 14 20:22:00 2023 -# 1: ID -# 2: Source -# 3: Source Args -# 4: Parent ID(s) -# 5: Number of currently living organisms -# 6: Total number of organisms that ever existed -# 7: Genome Length -# 8: Average Merit -# 9: Average Gestation Time -# 10: Average Fitness -# 11: Generation Born -# 12: Update Born -# 13: Update Deactivated -# 14: Phylogenetic Depth -# 15: Hardware Type ID -# 16: Inst Set Name -# 17: Genome Sequence -# 18: Occupied Cell IDs -# 19: Gestation (CPU) Cycle Offsets -# 20: Lineage Label - -1 div:ext (none) (none) 200 300 320 0 0 0 0 -1 -1 0 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -2 horz:int ABB (none) 4 8 80 0 0 0 0 -1 -1 0 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 170,200,201,202 -1,-1,-1,-1 diff --git a/avida-core/tests/demes_savegermlines/expected/data/detail-0.spop b/avida-core/tests/demes_savegermlines/expected/data/detail-0.spop index ce840eb5f..4e00dc738 100644 --- a/avida-core/tests/demes_savegermlines/expected/data/detail-0.spop +++ b/avida-core/tests/demes_savegermlines/expected/data/detail-0.spop @@ -1,7 +1,7 @@ #filetype genotype_data #format id src src_args parents num_units total_units length merit gest_time fitness gen_born update_born update_deactivated depth hw_type inst_set sequence cells gest_offset lineage # Structured Population Save -# Tue Aug 29 01:45:53 2023 +# Tue Nov 14 23:59:36 2023 # 1: ID # 2: Source # 3: Source Args diff --git a/avida-core/tests/demes_savegermlines/expected/data/detailgermlines-0.sgerm b/avida-core/tests/demes_savegermlines/expected/data/detailgermlines-0.sgerm index 89739f580..625a050f5 100644 --- a/avida-core/tests/demes_savegermlines/expected/data/detailgermlines-0.sgerm +++ b/avida-core/tests/demes_savegermlines/expected/data/detailgermlines-0.sgerm @@ -1,7 +1,7 @@ #filetype germline_data #format deme_id hw_type inst_set sequence # Mode 1 Germline Save -# Tue Aug 29 01:45:53 2023 +# Tue Nov 14 23:59:36 2023 # 1: Deme ID # 2: Hardware Type ID # 3: Inst Set Name diff --git a/avida-core/tests/demes_savegermlines/expected/data/detailgermlines-500.sgerm b/avida-core/tests/demes_savegermlines/expected/data/detailgermlines-500.sgerm index 89739f580..625a050f5 100644 --- a/avida-core/tests/demes_savegermlines/expected/data/detailgermlines-500.sgerm +++ b/avida-core/tests/demes_savegermlines/expected/data/detailgermlines-500.sgerm @@ -1,7 +1,7 @@ #filetype germline_data #format deme_id hw_type inst_set sequence # Mode 1 Germline Save -# Tue Aug 29 01:45:53 2023 +# Tue Nov 14 23:59:36 2023 # 1: Deme ID # 2: Hardware Type ID # 3: Inst Set Name From f8e05598e4edb05c98b313281b23d12be9b27f63 Mon Sep 17 00:00:00 2001 From: Matthew Andres Moreno Date: Wed, 15 Nov 2023 00:24:34 -0500 Subject: [PATCH 12/17] Fix action arg specification --- avida-core/source/actions/SaveLoadActions.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/avida-core/source/actions/SaveLoadActions.cc b/avida-core/source/actions/SaveLoadActions.cc index b2e459b4a..6504c3ffc 100644 --- a/avida-core/source/actions/SaveLoadActions.cc +++ b/avida-core/source/actions/SaveLoadActions.cc @@ -197,13 +197,15 @@ class cActionSaveGermlines : public cAction // String Entries schema.AddEntry("filename", 0, "detailgermlines"); - schema.AddEntry("birthcounts", 1, false); + schema.AddEntry("birthcounts", 0, 0, 1, 0); cArgContainer* argc = cArgContainer::Load(args, schema, feedback); if (argc) { + // String Entries m_filename = argc->GetString(0); - m_birthcounts = argc->GetInt(1); + // Integer Entries + m_birthcounts = argc->GetInt(0); } delete argc; From d7b9d1b110e7cad521c572909258ec786de17f1a Mon Sep 17 00:00:00 2001 From: Matthew Andres Moreno Date: Wed, 15 Nov 2023 00:26:51 -0500 Subject: [PATCH 13/17] fixup! Impl para migration method guaranteeing infection --- avida-core/source/main/cPopulation.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/avida-core/source/main/cPopulation.cc b/avida-core/source/main/cPopulation.cc index 37a81b395..592b83377 100644 --- a/avida-core/source/main/cPopulation.cc +++ b/avida-core/source/main/cPopulation.cc @@ -1210,7 +1210,6 @@ bool cPopulation::ActivateParasite(cOrganism* host, Systematics::UnitPtr parent, && m_world->GetRandom().P(m_world->GetConfig().DEMES_PARASITE_MIGRATION_RATE.Get()) ){ cDeme& deme = GetDeme(m_world->GetMigrationMatrix().GetProbabilisticDemeID(host_cell.GetDemeID(), m_world->GetRandom(),true)); - deme. const int infection_mode = m_world->GetConfig().DEMES_PARASITE_MIGRATION_TARGET_SELECTION_METHOD.Get(); if (infection_mode == 0) { // Implementation #1 - Picks randomly of ALL cells in to-deme and then finds if the one it chose was occupied From bf9d3d9396b052f5632c31dca205f2eab677ca22 Mon Sep 17 00:00:00 2001 From: Matthew Andres Moreno Date: Wed, 15 Nov 2023 00:45:16 -0500 Subject: [PATCH 14/17] Implement, test demes parasite memory --- .../source/actions/PopulationActions.cc | 75 ++ avida-core/source/main/cAvidaConfig.h | 1 + avida-core/source/main/cDeme.cc | 4 + avida-core/source/main/cDeme.h | 9 +- .../demes_parasite_memory/config/avida.cfg | 691 ++++++++++++++++++ .../config/environment.cfg | 9 + .../demes_parasite_memory/config/events.cfg | 11 + .../config/evolved-not.org | 321 ++++++++ .../config/instset-transsmt.cfg | 35 + .../config/parasite-smt.org | 80 ++ .../demes_parasite_memory/expected/.gitignore | 0 .../expected/data/detail--1.spop | 27 + .../expected/data/detail-200.spop | 29 + .../expected/data/detail-201.spop | 28 + .../expected/data/detail-220.spop | 29 + .../expected/data/detail-240.spop | 29 + .../expected/data/detail-500.spop | 31 + .../tests/demes_parasite_memory/test_list | 36 + 18 files changed, 1444 insertions(+), 1 deletion(-) create mode 100644 avida-core/tests/demes_parasite_memory/config/avida.cfg create mode 100644 avida-core/tests/demes_parasite_memory/config/environment.cfg create mode 100644 avida-core/tests/demes_parasite_memory/config/events.cfg create mode 100644 avida-core/tests/demes_parasite_memory/config/evolved-not.org create mode 100644 avida-core/tests/demes_parasite_memory/config/instset-transsmt.cfg create mode 100644 avida-core/tests/demes_parasite_memory/config/parasite-smt.org create mode 100644 avida-core/tests/demes_parasite_memory/expected/.gitignore create mode 100644 avida-core/tests/demes_parasite_memory/expected/data/detail--1.spop create mode 100644 avida-core/tests/demes_parasite_memory/expected/data/detail-200.spop create mode 100644 avida-core/tests/demes_parasite_memory/expected/data/detail-201.spop create mode 100644 avida-core/tests/demes_parasite_memory/expected/data/detail-220.spop create mode 100644 avida-core/tests/demes_parasite_memory/expected/data/detail-240.spop create mode 100644 avida-core/tests/demes_parasite_memory/expected/data/detail-500.spop create mode 100644 avida-core/tests/demes_parasite_memory/test_list diff --git a/avida-core/source/actions/PopulationActions.cc b/avida-core/source/actions/PopulationActions.cc index 1f67dbb94..aeebbcb2c 100644 --- a/avida-core/source/actions/PopulationActions.cc +++ b/avida-core/source/actions/PopulationActions.cc @@ -1187,6 +1187,47 @@ class cActionKillProb : public cAction } }; +class cActionClearParasites : public cAction +{ +private: + int m_cell_start; + int m_cell_end; + +public: + cActionClearParasites(cWorld *world, const cString &args, Feedback &) : cAction(world, args), m_cell_start(0), m_cell_end(-1) + { + cString largs(args); + if (largs.GetSize()) + m_cell_start = largs.PopWord().AsInt(); + if (largs.GetSize()) + m_cell_end = largs.PopWord().AsInt(); + + if (m_cell_end == -1) + m_cell_end = m_cell_start + 1; + } + + static const cString GetDescription() { return "Arguments: [int cell_start=0] [int cell_end=-1]"; } + + void Process(cAvidaContext &ctx) + { + if (m_cell_start < 0 || m_cell_end > m_world->GetPopulation().GetSize() || m_cell_start >= m_cell_end) + { + ctx.Driver().Feedback().Warning("ClearParasites has invalid range!"); + } + else + { + cUserFeedback feedback; + const cInstSet &is = m_world->GetHardwareManager().GetDefaultInstSet(); + for (int i = m_cell_start; i < m_cell_end; i++) + { + auto &cell = m_world->GetPopulation().GetCell(i); + if (cell.IsOccupied()) cell.GetOrganism()->ClearParasites(); + } + m_world->GetPopulation().SetSyncEvents(true); + } + } +}; + /* Applies a fixed population bottleneck to the current population. Parameters: @@ -3970,6 +4011,38 @@ class cActionDecayPoints : public cAction } }; + +class cActionUpdateDemeParasiteMemoryScores : public cAction +{ +private: + double m_decay_rate; + bool m_verbose; + +public: + cActionUpdateDemeParasiteMemoryScores(cWorld* world, const cString& args, Feedback&) : cAction(world, args), m_decay_rate(0.99), m_verbose(false) + { + cString largs(args); + m_decay_rate = largs.PopWord().AsDouble(); + m_verbose = largs.PopWord().AsInt(); + } + + static const cString GetDescription() { return "Arguments: "; } + + void Process(cAvidaContext& ctx) + { + auto& pop = m_world->GetPopulation(); + const int numDemes = pop.GetNumDemes(); + for (int deme_id = 0; deme_id < numDemes; deme_id++) + { + auto &deme = pop.GetDeme(deme_id); + deme.UpdateParasiteMemoryScore(m_decay_rate); + if (m_verbose) std::cout << deme.GetParasiteMemoryScore() << " "; + } + if (m_verbose) std::cout << std::endl; + } +}; + + class cActionCompeteOrganisms : public cAction { private: @@ -5826,6 +5899,7 @@ void RegisterPopulationActions(cActionLibrary* action_lib) action_lib->Register("KillInstLimit"); action_lib->Register("KillInstPair"); action_lib->Register("KillProb"); + action_lib->Register("ClearParasites"); action_lib->Register("ApplyBottleneck"); action_lib->Register("KillDominantGenotype"); action_lib->Register("KillProbSequence"); @@ -5859,6 +5933,7 @@ void RegisterPopulationActions(cActionLibrary* action_lib) action_lib->Register("MixPopulation"); action_lib->Register("DecayPoints"); + action_lib->Register("UpdateDemeParasiteMemoryScores"); action_lib->Register("Flash"); diff --git a/avida-core/source/main/cAvidaConfig.h b/avida-core/source/main/cAvidaConfig.h index 6e18d7027..0e102b6dd 100644 --- a/avida-core/source/main/cAvidaConfig.h +++ b/avida-core/source/main/cAvidaConfig.h @@ -507,6 +507,7 @@ class cAvidaConfig { CONFIG_ADD_VAR(DEMES_PARASITE_MIGRATION_RATE, double, 0.0, "Probability of a parasite migrating to a different deme. Note: only works with DEMES_MIGRATION_METHOD 4."); CONFIG_ADD_VAR(DEMES_MIGRATION_METHOD, int, 0, "Which demes can an offspring land in when it migrates?\n0 = Any other deme\n1 = Eight neighboring demes\n2 = Two adjacent demes in list\n3 = Proportional based on the number of points\n4 = Use the weight matrix specified in MIGRATION_FILE"); CONFIG_ADD_VAR(DEMES_PARASITE_MIGRATION_TARGET_SELECTION_METHOD, int, 0, "How should a target cell be chosen in the migrated-to deme?\n0 = Select a cell randomly, if it is not occupied infection fails\n1 = Select an occupied cell randomly"); + CONFIG_ADD_VAR(DEMES_PARASITE_MIGRATION_MEMORY_SCORE_PROTECTIVE_THRESHOLD, double, 1.0, "Above what parasite memory score should hosts be protected from incoming parasite migration?"); CONFIG_ADD_VAR(DEMES_NUM_X, int, 0, "Simulated number of demes in X dimension. Used only for migration. "); CONFIG_ADD_VAR(DEMES_PARTITION_INTERVAL, int, 0, "Restrict deme replication to within partitions of DEMES_PARTITION_INTERVAL consecutive deme ids. No restriction if 0. Partition size cannot be smaller than two. Does not affect migration."); CONFIG_ADD_VAR(DEMES_SEED_METHOD, int, 0, "Deme seeding method.\n0 = Maintain old consistency\n1 = New method using genotypes"); diff --git a/avida-core/source/main/cDeme.cc b/avida-core/source/main/cDeme.cc index feefc1784..42907e25e 100644 --- a/avida-core/source/main/cDeme.cc +++ b/avida-core/source/main/cDeme.cc @@ -56,6 +56,7 @@ cDeme::cDeme() , birth_count_perslot(0) , _age(0) , generation(0) + , parasite_memory_score(0.0) , total_org_energy(0.0) , time_used(0) , gestation_time(0) @@ -117,6 +118,7 @@ cDeme& cDeme::operator=(const cDeme& in_deme) birth_count_perslot = in_deme.birth_count_perslot; _age = in_deme._age; generation = in_deme.generation; + parasite_memory_score = in_deme.parasite_memory_score; total_org_energy = in_deme.total_org_energy; time_used = in_deme.time_used; gestation_time = in_deme.gestation_time; @@ -202,6 +204,7 @@ void cDeme::Setup(int id, const Apto::Array & in_cells, int in_width, cWorl last_org_count = 0; birth_count_perslot = 0; m_world = world; + parasite_memory_score = 0.0; replicateDeme = false; @@ -513,6 +516,7 @@ void cDeme::Reset(cAvidaContext& ctx, bool resetResources, double deme_energy) time_used = 0; cur_birth_count = 0; cur_normalized_time_used = 0; + parasite_memory_score = 0.0; injected_count = 0; birth_count_perslot = 0; eventsTotal = 0; diff --git a/avida-core/source/main/cDeme.h b/avida-core/source/main/cDeme.h index 94c583019..ccbcbcb09 100644 --- a/avida-core/source/main/cDeme.h +++ b/avida-core/source/main/cDeme.h @@ -70,6 +70,7 @@ class cDeme int birth_count_perslot; int _age; //!< Age of this deme, in updates. int generation; //!< Generation of this deme + double parasite_memory_score; double total_org_energy; //! amount of energy in organisms in this deme int time_used; //!< number of cpu cycles this deme has used int gestation_time; // Time used during last generation @@ -188,7 +189,13 @@ class cDeme double GetParasiteLoad() const { return static_cast(GetNumParasites()) / GetOrgCount(); } - + + void UpdateParasiteMemoryScore(const double decay) { + parasite_memory_score += GetParasiteLoad(); + parasite_memory_score *= decay; + } + double GetParasiteMemoryScore() const { return parasite_memory_score; } + void IncOrgCount() { cur_org_count++; } void DecOrgCount() { cur_org_count--; } diff --git a/avida-core/tests/demes_parasite_memory/config/avida.cfg b/avida-core/tests/demes_parasite_memory/config/avida.cfg new file mode 100644 index 000000000..18b77546c --- /dev/null +++ b/avida-core/tests/demes_parasite_memory/config/avida.cfg @@ -0,0 +1,691 @@ +############################################################################# +# This file includes all the basic run-time defines for Avida. +# For more information, see doc/config.html +############################################################################# + +VERSION_ID 2.11.0 # Do not change this value. + +### GENERAL_GROUP ### +# General Settings +VERBOSITY 3 # 0 = No output at all + # 1 = Normal output + # 2 = Verbose output, detailing progress + # 3 = High level of details, as available + # 4 = Print Debug Information, as applicable +RANDOM_SEED 1 # Random number seed (0 for based on time) +SPECULATIVE 1 # Enable speculative execution + # (pre-execute instructions that don't affect other organisms) +POPULATION_CAP 0 # Carrying capacity in number of organisms (use 0 for no cap) + +### TOPOLOGY_GROUP ### +# World topology +WORLD_X 1 +WORLD_Y 6 +NUM_DEMES 3 +RANDOM_SEED 1WORLD_GEOMETRY 2 # 1 = Bounded Grid (WOLRD_X x WORLD_Y) + # 2 = Toroidal Grid (WOLRD_X x WORLD_Y; wraps at edges + # 3 = Clique (all population cells are connected) + # 4 = Hexagonal grid + # 5 = Partial + # 6 = 3D Lattice (under development) + # 7 = Random connected + # 8 = Scale-free (detailed below) +SCALE_FREE_M 3 # Number of connections per cell in a scale-free geometry +SCALE_FREE_ALPHA 1.0 # Attachment power (1=linear) +SCALE_FREE_ZERO_APPEAL 0.0 # Appeal of cells with zero connections + +### CONFIG_FILE_GROUP ### +# Other configuration Files +DATA_DIR data # Directory in which config files are found +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 + +#include INST_SET=instset-transsmt.cfg + +### MUTATION_GROUP ### +# Mutation rates +COPY_MUT_PROB 0.000 # Mutation rate (per copy) +COPY_INS_PROB 0.0 # Insertion rate (per copy) +COPY_DEL_PROB 0.0 # Deletion rate (per copy) +COPY_UNIFORM_PROB 0.0 # Uniform mutation probability (per copy) + # - Randomly apply insertion, deletion or point mutation +COPY_SLIP_PROB 0.0 # Slip rate (per copy) +POINT_MUT_PROB 0.0 # Mutation rate (per-location per update) +DIV_MUT_PROB 0.000703 # Mutation rate (per site, applied on divide) +DIV_INS_PROB 0.00003906 # Insertion rate (per site, applied on divide) +DIV_DEL_PROB 0.00003906 # Deletion rate (per site, applied on divide) +DIV_UNIFORM_PROB 0.0 # Uniform mutation probability (per site, applied on divide) + # - Randomly apply insertion, deletion or point mutation +DIV_SLIP_PROB 0.0 # Slip rate (per site, applied on divide) +DIVIDE_MUT_PROB 0.0 # Mutation rate (max one, per divide) +DIVIDE_INS_PROB 0.0#5 # Insertion rate (max one, per divide) +DIVIDE_DEL_PROB 0.0#5 # Deletion rate (max one, per divide) +DIVIDE_UNIFORM_PROB 0.0 # Uniform mutation probability (per divide) + # - Randomly apply insertion, deletion or point mutation +DIVIDE_SLIP_PROB 0.0 # Slip rate (per divide) - creates large deletions/duplications +DIVIDE_POISSON_MUT_MEAN 0.0 # Mutation rate (Poisson distributed, per divide) +DIVIDE_POISSON_INS_MEAN 0.0 # Insertion rate (Poisson distributed, per divide) +DIVIDE_POISSON_DEL_MEAN 0.0 # Deletion rate (Poisson distributed, per divide) +DIVIDE_POISSON_SLIP_MEAN 0.0 # Slip rate (Poisson distributed, per divide) +INJECT_INS_PROB 0.000825 # Insertion rate (per site, applied on inject) +INJECT_DEL_PROB 0.000825 # Deletion rate (per site, applied on inject) +INJECT_MUT_PROB 0.0075 # Mutation rate (per site, applied on inject) +SLIP_FILL_MODE 0 # Fill insertions from slip mutations with: + # 0 = Duplication + # 1 = nop-X + # 2 = Random + # 3 = scrambled + # 4 = nop-C +SLIP_COPY_MODE 0 # How to handle 'on-copy' slip mutations: + # 0 = actual read head slip + # 1 = instant large mutation (obeys slip mode) +PARENT_MUT_PROB 0.0 # Per-site, in parent, on divide +SPECIAL_MUT_LINE -1 # If this is >= 0, ONLY this line is mutated +META_COPY_MUT 0.2 # Prob. of copy mutation rate changing (per gen) +META_STD_DEV 0.1 # Standard deviation of meta mutation size. +MUT_RATE_SOURCE 1 # 1 = Mutation rates determined by environment. + # 2 = Mutation rates inherited from parent. + +### REPRODUCTION_GROUP ### +# Birth and Death config options +DIVIDE_FAILURE_RESETS 0 # When Divide fails, organisms are interally reset +BIRTH_METHOD 4 # Which organism should be replaced when a birth occurs? + # 0 = Random organism in neighborhood + # 1 = Oldest in neighborhood + # 2 = Largest Age/Merit in neighborhood + # 3 = None (use only empty cells in neighborhood) + # 4 = Random from population (Mass Action) + # 5 = Oldest in entire population + # 6 = Random within deme + # 7 = Organism faced by parent + # 8 = Next grid cell (id+1) + # 9 = Largest energy used in entire population + # 10 = Largest energy used in neighborhood + # 11 = Local neighborhood dispersal +PREFER_EMPTY 0 # Overide BIRTH_METHOD to preferentially choose empty cells for offsping? +ALLOW_PARENT 1 # Should parents be considered when deciding where to place offspring? +DISPERSAL_RATE 0.0 # Rate of dispersal under birth method 11 + # (poisson distributed random connection list hops) +DEATH_PROB 0.0 # Probability of death when dividing. +DEATH_METHOD 2 # When should death by old age occur? + # 0 = Never + # 1 = When executed AGE_LIMIT (+deviation) total instructions + # 2 = When executed genome_length * AGE_LIMIT (+dev) instructions +AGE_LIMIT 30 # See DEATH_METHOD +AGE_DEVIATION 0 # Creates a normal distribution around AGE_LIMIT for time of death +ALLOC_METHOD 0 # When allocating blank tape, how should it be initialized? + # 0 = Allocated space is set to default instruction. + # 1 = Set to section of dead genome (creates potential for recombination) + # 2 = Allocated space is set to random instruction. +DIVIDE_METHOD 1 # 0 = Divide leaves state of mother untouched. + # 1 = Divide resets state of mother(effectively creating 2 offspring) + # 2 = Divide resets state of current thread only (use with parasites) +EPIGENETIC_METHOD 0 # Inheritance of state information other than genome + # 0 = none + # 1 = offspring inherits registers and stacks of first thread + # 1 = parent maintains registers and stacks of first thread + # + # 1 = offspring and parent keep state information +GENERATION_INC_METHOD 1 # 0 = Only increase generation of offspring on divide. + # 1 = Increase generation of both parent and offspring + # (suggested with DIVIDE_METHOD 1). +RESET_INPUTS_ON_DIVIDE 0 # Reset environment inputs of parent upon successful divide. +INHERIT_MERIT 0 # Should merit be inhereted from mother parent? (in asexual) +INHERIT_MULTITHREAD 0 # Should offspring of parents with multiple threads be marked multithreaded? + +### DIVIDE_GROUP ### +# Divide restrictions and triggers - settings describe conditions for a successful divide +OFFSPRING_SIZE_RANGE 2.0 # Maximal differential between offspring and parent length. + # (Checked BEFORE mutations applied on divide.) +MIN_COPIED_LINES 0.5 # Code fraction that must be copied before divide +MIN_EXE_LINES 0.5 # Code fraction that must be executed before divide +MIN_GENOME_SIZE 0 # Minimum number of instructions allowed in a genome. 0 = OFF +MAX_GENOME_SIZE 0 # Maximum number of instructions allowed in a genome. 0 = OFF +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 +IMMUNITY_REACTION -1 # Reaction ID that provides immunity for successful divide +REQUIRE_SINGLE_REACTION 1 # If set to 1, at least one reaction is required for a successful divide +REQUIRED_BONUS 0.0 # Required bonus to divide +REQUIRE_EXACT_COPY 0 # Require offspring to be an exact copy (checked before divide mutations) +REQUIRED_RESOURCE -1 # ID of resource required in organism's internal bins for successful + # divide (resource not consumed) +REQUIRED_RESOURCE_LEVEL 0.0 # Level of resource needed for REQUIRED_RESOURCE +IMPLICIT_REPRO_BONUS 0 # Call Inst_Repro to divide upon achieving this bonus. 0 = OFF +IMPLICIT_REPRO_CPU_CYCLES 0 # Call Inst_Repro after this many cpu cycles. 0 = OFF +IMPLICIT_REPRO_TIME 0 # Call Inst_Repro after this time used. 0 = OFF +IMPLICIT_REPRO_END 0 # Call Inst_Repro after executing the last instruction in the genome. +IMPLICIT_REPRO_ENERGY 0.0 # Call Inst_Repro if organism accumulates this amount of energy. + +### 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 (-1 = unlimited) +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 # 0 = Both offspring are born (no two-fold cost) + # 1 = only one recombined offspring is born. +SAME_LENGTH_SEX 0 # 0 = Recombine with any genome + # 1 = Recombine only w/ same length +ALLOW_MATE_SELECTION 0 # Allow organisms to select mates (requires instruction set support) + +### PARASITE_GROUP ### +# Parasite config options +INJECT_METHOD 1 # What should happen to a parasite when it gives birth? + # 0 = Leave the parasite thread state untouched. + # 1 = Resets the state of the calling thread (for SMT parasites, this must be 1) +INJECT_PROB_FROM_TASKS 0 # Inject occurs based on probability from performing tasks - 11*numTasks +INJECT_STERILIZES_HOST 0 # Infection causes host steralization +INJECT_IS_VIRULENT 0 # Infection causes host steralization and takes all cpu cycles (setting this to 1 will override inject_virulence) +PARASITE_SKIP_REACTIONS 1 # Parasite tasks do not get processed in the environment (1) or they do trigger reactions (0) +INJECT_IS_TASK_SPECIFIC 1 # Parasites must match a task done by the host they are trying to infect +INJECT_SKIP_FIRST_TASK 0 # They cannot match the first task the host is doing to infect +INJECT_DEFAULT_SUCCESS 0.0 # If injection is task specific, with what probability should non-matching parasites infect the host +PARASITE_VIRULENCE 0.85 # The probabalistic percentage of cpu cycles allocated to the parasite instead of the host. Ensure INJECT_IS_VIRULENT is set to 0. This only works for single infection at the moment +PARASITE_MEM_SPACES 1 # Parasites get their own memory spaces +PARASITE_NO_COPY_MUT 1 # Parasites do not get copy mutation rates + +### ARCHETECTURE_GROUP ### +# Details on how CPU should work +IO_EXPIRE 1 # Is the expiration functionality of '-expire' I/O instructions enabled? + +### MP_GROUP ### +# Config options for multiple, distributed populations +ENABLE_MP 0 # Enable multi-process Avida; 0=disabled (default), + # 1=enabled. +MP_SCHEDULING_STYLE 0 # Style of scheduling: + # 0=non-MP aware (default) + # 1=MP aware, integrated across worlds. + +### DEME_GROUP ### +# Demes and Germlines +DEMES_COMPETITION_STYLE 0 # How should demes compete? + # 0=Fitness proportional selection + # 1=Tournament selection +DEMES_TOURNAMENT_SIZE 0 # Number of demes that participate in a tournament +DEMES_OVERRIDE_FITNESS 0 # Should the calculated fitness is used? + # 0=yes (default) + # 1=no (all fitnesses=1) +DEMES_USE_GERMLINE 0 # Should demes use a distinct germline? +DEMES_PREVENT_STERILE 0 # Prevent sterile demes from replicating? +DEMES_RESET_RESOURCES 0 # Reset resources in demes on replication? + # 0 = reset both demes + # 1 = reset target deme + # 2 = deme resources remain unchanged +DEMES_REPLICATE_SIZE 1 # Number of identical organisms to create or copy from the + # source deme to the target deme +LOG_DEMES_REPLICATE 0 # Log deme replications? +DEMES_REPLICATE_LOG_START 0 # Update at which to start logging deme replications +DEMES_PROB_ORG_TRANSFER 0.0 # Probablity of an organism being transferred from the + # source deme to the target deme +DEMES_ORGANISM_SELECTION 0 # How should organisms be selected for transfer from + # source to target during deme replication? + # 0 = random with replacement + # 1 = sequential +DEMES_ORGANISM_PLACEMENT 0 # How should organisms be placed during deme replication. + # 0 = cell-array middle + # 1 = deme center + # 2 = random placement + # 3 = sequential +DEMES_ORGANISM_FACING 0 # Which direction should organisms face after deme replication. + # 0 = unchanged + # 1 = northwest. + # 2 = random. +DEMES_MAX_AGE 500 # The maximum age of a deme (in updates) to be + # used for age-based replication +DEMES_MAX_BIRTHS 100 # Max number of births that can occur within a deme; + # used with birth-count replication +DEMES_MIM_EVENTS_KILLED_RATIO 0.7 # Minimum ratio of events killed required for event period to be a success. +DEMES_MIM_SUCCESSFUL_EVENT_PERIODS 1 # Minimum number of consecutive event periods that must be a success. +GERMLINE_COPY_MUT 0.0075 # Prob. of copy mutations during germline replication +GERMLINE_INS_MUT 0.05 # Prob. of insertion mutations during germline replication +GERMLINE_DEL_MUT 0.05 # Prob. of deletion mutations during germline replication +DEMES_REPLICATE_CPU_CYCLES 0.0 # Replicate a deme immediately after it has used this many + # cpu cycles per org in deme (0 = OFF). +DEMES_REPLICATE_TIME 0.0 # Number of CPU cycles used by a deme to trigger its replication + # (normalized by number of orgs in deme and organism merit; 0 = OFF). +DEMES_REPLICATE_BIRTHS 0 # Number of offspring produced by a deme to trigger its replication (0 = OFF). +DEMES_REPLICATE_ORGS 0 # Number of organisms in a deme to trigger its replication (0 = OFF). +DEMES_REPLICATION_ONLY_RESETS 0 # Kin selection mode. On replication: + # 0 = Nothing extra + # 1 = reset deme resources + # 2 = reset resources and re-inject organisms +DEMES_MIGRATION_RATE 0.0 # Probability of an offspring being born in a different deme. +DEMES_PARASITE_MIGRATION_RATE 0.5 # Probability of an offspring being born in a different deme. +DEMES_PARASITE_MIGRATION_TARGET_SELECTION_METHOD 1 +DEMES_MIGRATION_METHOD 0 # Which demes can an org land in when it migrates? + # 0 = Any other deme + # 1 = Eight neighboring demes + # 2 = Two adjacent demes in list + # 3 = Proportional based on the number of points +DEMES_NUM_X 0 # Simulated number of demes in X dimension. Used only for migration. +DEMES_SEED_METHOD 0 # Deme seeding method. + # 0 = Maintain old consistency + # 1 = New method using genotypes +DEMES_DIVIDE_METHOD 0 # Deme divide method. Only works with DEMES_SEED_METHOD 1 + # 0 = Replace and target demes + # 1 = Replace target deme, reset source deme to founders + # 2 = Replace target deme, leave source deme unchanged +DEMES_DEFAULT_GERMLINE_PROPENSITY 0.0 # Default germline propensity of organisms in deme. + # For use with DEMES_DIVIDE_METHOD 2. +DEMES_FOUNDER_GERMLINE_PROPENSITY -1.0 # Default germline propensity of founder organisms in deme. + # For use with DEMES_DIVIDE_METHOD 2. + # <0 = OFF +DEMES_PREFER_EMPTY 0 # Give empty demes preference as targets of deme replication? +DEMES_PROTECTION_POINTS 0 # The number of points a deme receives for each suicide. +MIGRATION_RATE 0.0 # Uniform probability of offspring migrating to a new deme. +DEMES_TRACK_SHANNON_INFO 0 # Enable shannon mutual information tracking for demes. + +### REVERSION_GROUP ### +# Mutation Reversion +# Most of these slow down avida a lot, and should be set to 0.0 normally. +REVERT_FATAL 0.0 # Prob of lethal mutations being reverted on birth +REVERT_DETRIMENTAL 0.0 # Prob of harmful (but non-lethal) mutations reverting on birth +REVERT_NEUTRAL 0.0 # Prob of neutral mutations being reverted on birth +REVERT_BENEFICIAL 0.0 # Prob of beneficial mutations being reverted on birth +REVERT_TASKLOSS 0.0 # Prob of mutations that cause task loss (without any gains) being reverted +STERILIZE_FATAL 0.0 # Prob of lethal mutations steralizing an offspring (typically no effect!) +STERILIZE_DETRIMENTAL 0.0 # Prob of harmful (but non-lethal) mutations steralizing an offspring +STERILIZE_NEUTRAL 0.0 # Prob of neutral mutations steralizing an offspring +STERILIZE_BENEFICIAL 0.0 # Prob of beneficial mutations steralizing an offspring +STERILIZE_TASKLOSS 0.0 # Prob of mutations causing task loss steralizing an offspring +STERILIZE_UNSTABLE 0 # Should genotypes that cannot replicate perfectly not be allowed to replicate? +NEUTRAL_MAX 0.0 # Percent benifical change from parent fitness to be considered neutral. +NEUTRAL_MIN 0.0 # Percent deleterious change from parent fitness to be considered neutral. + +### TIME_GROUP ### +# Time Slicing +AVE_TIME_SLICE 30 # Average number of CPU-cycles per org per update +SLICING_METHOD 1 # 0 = CONSTANT: all organisms receive equal number of CPU cycles + # 1 = PROBABILISTIC: CPU cycles distributed randomly, proportional to merit. + # 2 = INTEGRATED: CPU cycles given out deterministicly, proportional to merit + # 3 = DEME_PROBABALISTIC: Demes receive fixed number of CPU cycles, awarded probabalistically to members + # 4 = CROSS_DEME_PROBABALISTIC: Demes receive CPU cycles proportional to living population size, awarded probabalistically to members + # 5 = CONSTANT BURST: all organisms receive equal number of CPU cycles, in SLICING_BURST_SIZE chunks +SLICING_BURST_SIZE 1 # Sets the scheduler burst size for SLICING_METHOD 5. +BASE_MERIT_METHOD 4 # How should merit be initialized? + # 0 = Constant (merit independent of size) + # 1 = Merit proportional to copied size + # 2 = Merit prop. to executed size + # 3 = Merit prop. to full size + # 4 = Merit prop. to min of executed or copied size + # 5 = Merit prop. to sqrt of the minimum size + # 6 = Merit prop. to num times MERIT_BONUS_INST is in genome. +BASE_CONST_MERIT 100 # Base merit valse for BASE_MERIT_METHOD 0 +MERIT_BONUS_INST 0 # Instruction ID to count for BASE_MERIT_METHOD 6 +MERIT_BONUS_EFFECT 0 # Amount of merit earn per instruction for BASE_MERIT_METHOD 6 (-1 = penalty, 0 = no effect) +FITNESS_VALLEY 0 # in BASE_MERIT_METHOD 6, this creates valleys from + # FITNESS_VALLEY_START to FITNESS_VALLEY_STOP + # (0 = off, 1 = on) +FITNESS_VALLEY_START 0 # if FITNESS_VALLEY = 1, orgs with num_key_instructions + # from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP + # get fitness 1 (lowest) +FITNESS_VALLEY_STOP 0 # if FITNESS_VALLEY = 1, orgs with num_key_instructions + # from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP + # get fitness 1 (lowest) +DEFAULT_BONUS 1.0 # Initial bonus before any tasks +MERIT_DEFAULT_BONUS 0 # Instead of inheriting bonus from parent, use this value instead (0 = off) +MERIT_INC_APPLY_IMMEDIATE 1 # Should merit increases (above current) be applied immediately, or delayed until divide? +TASK_REFRACTORY_PERIOD 0.0 # Number of updates after taske until regain full value +FITNESS_METHOD 0 # 0 = default, 1 = sigmoidal, +FITNESS_COEFF_1 1.0 # 1st FITNESS_METHOD parameter +FITNESS_COEFF_2 1.0 # 2nd FITNESS_METHOD parameter +MAX_CPU_THREADS 2 # Maximum number of Threads a CPU can spawn +THREAD_SLICING_METHOD 0 # Formula for allocating CPU cycles across threads in an organism + # (num_threads-1) * THREAD_SLICING_METHOD + 1 + # 0 = One thread executed per time slice. + # 1 = All threads executed each time slice. +NO_CPU_CYCLE_TIME 0 # Don't count each CPU cycle as part of gestation time +MAX_LABEL_EXE_SIZE 1 # Max nops marked as executed when labels are used +PRECALC_PHENOTYPE 0 # 0 = Disabled + # 1 = Assign precalculated merit at birth (unlimited resources only) + # 2 = Assign precalculated gestation time + # 3 = Assign precalculated merit AND gestation time. + # 4 = Assign last instruction counts + # 5 = Assign last instruction counts and merit + # 6 = Assign last instruction counts and gestation time + # 7 = Assign everything currently supported + # Fitness will be evaluated for organism based on these settings. +FASTFORWARD_UPDATES 0 # Fast-forward if the average generation has not changed in this many updates. (0 = off) +FASTFORWARD_NUM_ORGS 0 # Fast-forward if population is equal to this +GENOTYPE_PHENPLAST_CALC 100 # Number of times to test a genotype's + # plasticity during runtime. + +### ALTRUISM_GROUP ### +# Altrusim +MERIT_GIVEN 0.0 # Fraction of merit donated with 'donate' command +MERIT_RECEIVED 0.0 # Multiplier of merit given with 'donate' command +MAX_DONATE_KIN_DIST -1 # Limit on distance of relation for donate; -1=no max +MAX_DONATE_EDIT_DIST -1 # Limit on genetic (edit) distance for donate; -1=no max +MIN_GB_DONATE_THRESHOLD -1 # threshold green beard donates only to orgs above this + # donation attempt threshold; -1=no thresh +DONATE_THRESH_QUANTA 10 # The size of steps between quanta donate thresholds +MAX_DONATES 1000000 # Limit on number of donates organisms are allowed. + +### GENEOLOGY_GROUP ### +# Geneology +THRESHOLD 3 # Number of organisms in a genotype needed for it + # to be considered viable. +TEST_CPU_TIME_MOD 20 # Time allocated in test CPUs (multiple of length) + +### LOG_GROUP ### +# Log Files +LOG_GENOTYPES 0 # 0 = off, 1 = print ALL, 2 = print threshold ONLY. +LOG_THRESHOLD 0 # 0/1 (off/on) toggle to print file. +LOG_LINEAGES 0 # Track lineages over time? + # WARNING: Can slow Avida a lot! +LINEAGE_CREATION_METHOD 0 # Requires LOG_LINEAGES = 1 + # 0 = Manual creation (on inject) + # 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 +TRACE_EXECUTION 0 # Trace the execution of all organisms in the population (WARNING: SLOW!) + +### 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 +NET_LOG_MESSAGES 0 # Whether all messages are logged; 0=false (default), 1=true. + +### ORGANISM_MESSAGING_GROUP ### +# Organism Message-Based Communication +MESSAGE_SEND_BUFFER_SIZE 1 # Size of message send buffer (stores messages that were sent) + # TASKS NOT CHECKED ON 0! + # -1=inf, default=1. +MESSAGE_RECV_BUFFER_SIZE 8 # Size of message receive buffer (stores messages that are received); -1=inf, default=8. +MESSAGE_RECV_BUFFER_BEHAVIOR 0 # Behavior of message receive buffer; 0=drop oldest (default), 1=drop incoming +ACTIVE_MESSAGES_ENABLED 0 # Enable active messages. + # 0 = off + # 2 = message creates parallel thread + +### 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 + +### HOARD_RESOURCE_GROUP ### +# Resource Hoarding Parameters +USE_RESOURCE_BINS 0 # Enable resource bin use. This serves as a guard on most resource hoarding code. +ABSORB_RESOURCE_FRACTION .0025 # Fraction of available environmental resource an organism absorbs. +MULTI_ABSORB_TYPE 0 # What to do if a collect instruction is called on a range of resources. + # 0 = absorb a random resource in the range + # 1 = absorb the first resource in the range + # 2 = absorb the last resource in the range + # 3 = absorb ABSORB_RESOURCE_FRACTION / (# of resources in range) of each resource in the range +MAX_TOTAL_STORED -1 # Maximum total amount of all resources an organism can store. + # <0 = no maximum +USE_STORED_FRACTION 1.0 # The fraction of stored resource to use. +ENV_FRACTION_THRESHOLD 1.0 # The fraction of available environmental resource to compare available stored resource to when deciding whether to use stored resource. +RETURN_STORED_ON_DEATH 1 # Return an organism's stored resources to the world when it dies? +SPLIT_ON_DIVIDE 1 # Split mother cell's resources between two daughter cells on division? +COLLECT_SPECIFIC_RESOURCE 0 # Resource to be collected by the "collect-specific" instruction + +### ANALYZE_GROUP ### +# Analysis Settings +MAX_CONCURRENCY -1 # Maximum number of analyze threads, -1 == use all available. +ANALYZE_OPTION_1 # String variable accessible from analysis scripts +ANALYZE_OPTION_2 # String variable accessible from analysis scripts + +### ENERGY_GROUP ### +# Energy Settings +ENERGY_ENABLED 0 # Enable Energy Model. 0/1 (off/on) +ENERGY_GIVEN_ON_INJECT 0.0 # Energy given to organism upon injection. +ENERGY_GIVEN_AT_BIRTH 0.0 # Energy given to offspring upon birth. +FRAC_PARENT_ENERGY_GIVEN_TO_ORG_AT_BIRTH 0.5 # Fraction of parent's energy given to offspring organism. +FRAC_PARENT_ENERGY_GIVEN_TO_DEME_AT_BIRTH 0.5 # Fraction of parent's energy given to offspring deme. +FRAC_ENERGY_DECAY_AT_ORG_BIRTH 0.0 # Fraction of energy lost due to decay during organism reproduction. +FRAC_ENERGY_DECAY_AT_DEME_BIRTH 0.0 # Fraction of energy lost due to decay during deme reproduction. +NUM_CYCLES_EXC_BEFORE_0_ENERGY 0 # Number of virtual CPU cycles executed before energy is exhausted. +ENERGY_CAP -1.0 # Maximum amount of energy that can be stored in an organism. -1 = no max +APPLY_ENERGY_METHOD 0 # When should rewarded energy be applied to current energy? + # 0 = on divide + # 1 = on completion of task + # 2 = on sleep +FIX_METABOLIC_RATE -1.0 # Fix organism metobolic rate to value. This value is static. Feature disabled by default (value == -1) +FRAC_ENERGY_TRANSFER 0.0 # Fraction of replaced organism's energy take by new resident +LOG_SLEEP_TIMES 0 # Log sleep start and end times. 0/1 (off/on) + # WARNING: may use lots of memory. +FRAC_ENERGY_RELINQUISH 1.0 # Fraction of organisms energy to relinquish +ENERGY_PASSED_ON_DEME_REPLICATION_METHOD 0 # Who get energy passed from a parent deme + # 0 = Energy divided among organisms injected to offspring deme + # 1 = Energy divided among cells in offspring deme +INHERIT_EXE_RATE 0 # Inherit energy rate from parent? 0=no 1=yes +ATTACK_DECAY_RATE 0.0 # Percent of cell's energy decayed by attack +ENERGY_THRESH_LOW .33 # Threshold percent below which energy level is considered low. Requires ENERGY_CAP. +ENERGY_THRESH_HIGH .75 # Threshold percent above which energy level is considered high. Requires ENERGY_CAP. +ENERGY_COMPARISON_EPSILON 0.0 # Percent difference (relative to executing organism) required in energy level comparisons +ENERGY_REQUEST_RADIUS 1 # Radius of broadcast energy request messages. + +### ENERGY_SHARING_GROUP ### +# Energy Sharing Settings +ENERGY_SHARING_METHOD 0 # Method for sharing energy. 0=receiver must actively receive/request, 1=energy pushed on receiver +ENERGY_SHARING_PCT 0.0 # Percent of energy to share +ENERGY_SHARING_INCREMENT 0.01 # Amount to change percent energy shared +RESOURCE_SHARING_LOSS 0.0 # Fraction of shared resource lost in transfer +ENERGY_SHARING_UPDATE_METABOLIC 0 # 0/1 (off/on) - Whether to update an organism's metabolic rate on donate or reception/application of energy +LOG_ENERGY_SHARING 0 # Whether or not to log energy shares. 0/1 (off/on) + +### SECOND_PASS_GROUP ### +# Tracking metrics known after the running experiment previously +TRACK_CCLADES 0 # Enable tracking of coalescence clades +TRACK_CCLADES_IDS coalescence.ids # File storing coalescence IDs + +### GX_GROUP ### +# Gene Expression CPU Settings +MAX_PROGRAMIDS 16 # Maximum number of programids an organism can create. +MAX_PROGRAMID_AGE 2000 # Max number of CPU cycles a programid executes before it is removed. +IMPLICIT_GENE_EXPRESSION 0 # Create executable programids from the genome without explicit allocation and copying? +IMPLICIT_BG_PROMOTER_RATE 0.0 # Relative rate of non-promoter sites creating programids. +IMPLICIT_TURNOVER_RATE 0.0 # Number of programids recycled per CPU cycle. 0 = OFF +IMPLICIT_MAX_PROGRAMID_LENGTH 0 # Creation of an executable programid terminates after this many instructions. 0 = disabled + +### PROMOTER_GROUP ### +# Promoters +PROMOTERS_ENABLED 0 # Use the promoter/terminator execution scheme. + # Certain instructions must also be included. +PROMOTER_INST_MAX 0 # Maximum number of instructions to execute before terminating. 0 = off +PROMOTER_PROCESSIVITY 1.0 # Chance of not terminating after each cpu cycle. +PROMOTER_PROCESSIVITY_INST 1.0 # Chance of not terminating after each instruction. +PROMOTER_TO_REGISTER 0 # Place a promoter's base bit code in register BX when starting execution from it? +TERMINATION_RESETS 0 # Does termination reset the thread's state? +NO_ACTIVE_PROMOTER_EFFECT 0 # What happens when there are no active promoters? + # 0 = Start execution at the beginning of the genome. + # 1 = Kill the organism. + # 2 = Stop the organism from executing any further instructions. +PROMOTER_CODE_SIZE 24 # Size of a promoter code in bits. (Maximum value is 32) +PROMOTER_EXE_LENGTH 3 # Length of promoter windows used to determine execution. +PROMOTER_EXE_THRESHOLD 2 # Minimum number of bits that must be set in a promoter window to allow execution. +INST_CODE_LENGTH 3 # Instruction binary code length (number of bits) +INST_CODE_DEFAULT_TYPE 0 # Default value of instruction binary code value. + # 0 = All zeros + # 1 = Based off the instruction number +CONSTITUTIVE_REGULATION 0 # Sense a new regulation value before each CPU cycle? + +### COLORS_GROUP ### +# Output colors for when data files are printed in HTML mode. +# There are two sets of these; the first are for lineages, +# and the second are for mutation tests. +COLOR_DIFF CCCCFF # Color to flag stat that has changed since parent. +COLOR_SAME FFFFFF # Color to flag stat that has NOT changed since parent. +COLOR_NEG2 FF0000 # Color to flag stat that is significantly worse than parent. +COLOR_NEG1 FFCCCC # Color to flag stat that is minorly worse than parent. +COLOR_POS1 CCFFCC # Color to flag stat that is minorly better than parent. +COLOR_POS2 00FF00 # Color to flag stat that is significantly better than parent. +COLOR_MUT_POS 00FF00 # Color to flag stat that has changed since parent. +COLOR_MUT_NEUT FFFFFF # Color to flag stat that has changed since parent. +COLOR_MUT_NEG FFFF00 # Color to flag stat that has changed since parent. +COLOR_MUT_LETHAL FF0000 # Color to flag stat that has changed since parent. + +### MOVEMENT_GROUP ### +# Movement Features Settings +MOVEMENT_COLLISIONS_LETHAL 0 # Are collisions during movement lethal? +MOVEMENT_COLLISIONS_SELECTION_TYPE 0 # 0 = 50% chance + # 1 = binned vitality based +VITALITY_BIN_EXTREMES 1.0 # vitality multiplier for extremes (> 1 stddev from the mean population age) +VITALITY_BIN_CENTER 5.0 # vitality multiplier for center bin (with 1 stddev of the mean population age) + +### PHEROMONE_GROUP ### +# Pheromone Settings +PHEROMONE_ENABLED 0 # Enable pheromone usage. 0/1 (off/on) +PHEROMONE_AMOUNT 1.0 # Amount of pheromone to add per drop +PHEROMONE_DROP_MODE 0 # Where to drop pheromone + # 0 = Half amount at src, half at dest + # 1 = All at source + # 2 = All at dest +EXPLOIT_EXPLORE_PROB 0.00 # Probability of random exploration + # instead of pheromone trail following +LOG_PHEROMONE 0 # Log pheromone drops. 0/1 (off/on) +PHEROMONE_LOG_START 0 # Update at which to start logging pheromone drops +EXPLOIT_LOG_START 0 # Update at which to start logging exploit moves +EXPLORE_LOG_START 0 # Update at which to start logging explore moves +MOVETARGET_LOG_START 0 # Update at which to start logging movetarget moves +LOG_INJECT 0 # Log injection of organisms. 0/1 (off/on) +INJECT_LOG_START 0 # Update at which to start logging injection of + # organisms + +### SYNCHRONIZATION_GROUP ### +# Synchronization settings +SYNC_FITNESS_WINDOW 100 # Number of updates over which to calculate fitness (default=100). +SYNC_FLASH_LOSSRATE 0.0 # P() to lose a flash send (0.0==off). +SYNC_TEST_FLASH_ARRIVAL -1 # CPU cycle at which an organism will receive a flash (off=-1, default=-1, analyze mode only.) + +### CONSENSUS_GROUP ### +# Consensus settings +CONSENSUS_HOLD_TIME 1 # Number of updates that consensus must be held for. + +### REPUTATION_GROUP ### +# Reputation Settings +RAW_MATERIAL_AMOUNT 100 # Number of raw materials an organism starts with +AUTO_REPUTATION 0 # Is an organism's reputation automatically computed based on its donations + # 0=no + # 1=increment for each donation + standing + # 2=+1 for donations given -1 for donations received + # 3=1 for donors -1 for recivers who have not donated + # 4=+1 for donors + # 5=+1 for donors during task check +ALT_BENEFIT 1.00 # Number multiplied by the number of raw materials received from another organism to compute reward +ALT_COST 1.00 # Number multiplied by the number of your raw materials +ROTATE_ON_DONATE 0 # Rotate an organism to face its donor 0/1 (off/on) +REPUTATION_REWARD 0 # Reward an organism for having a good reputation +DONATION_FAILURE_PERCENT 0 # Percentage of times that a donation fails +RANDOMIZE_RAW_MATERIAL_AMOUNT 0 # Should all the organisms receive the same amount 0/1 (off/on) +DONATION_RESTRICTIONS 0 # 0=none + # 1=inter-species only + # 2=different tag only +INHERIT_REPUTATION 0 # 0=reputations are not inherited + # 1=reputations are inherited + # 2=tags are inherited +SPECIALISTS 0 # 0=generalists allowed + # 1=only specialists +STRING_AMOUNT_CAP -1 # -1=no cap on string amounts + # #=CAP +MATCH_ALREADY_PRODUCED 0 # 0=off + # 1=on + +### GROUP_FORMATION_GROUP ### +# Group Formation Settings +USE_FORM_GROUPS 0 # Enable organisms to form groups. 0=off, + # 1=on no restrict, + # 2=on restrict to defined +DEFAULT_GROUP -1 # Default group to assign to organisms not asserting a group membership (-1 indicates disabled) + +### DEME_NETWORK_GROUP ### +# Deme network settings +DEME_NETWORK_TYPE 0 # 0=topology, structure of network determines fitness. +DEME_NETWORK_REQUIRES_CONNECTEDNESS 1 # Whether the deme's network must be connected before an actual fitness is calculated. +DEME_NETWORK_TOPOLOGY_FITNESS 0 # Network measure used to determine fitness; see cDemeTopologyNetwork.h. +DEME_NETWORK_LINK_DECAY 0 # Number of updates after which a link decays; 0=no decay (default). +DEME_NETWORK_REMOVE_NODE_ON_DEATH 0 # Whether death of an organism in + # the deme removes its links; + # 0=no (default); + # 1=yes. + +### HGT_GROUP ### +# Horizontal gene transfer settings +ENABLE_HGT 0 # Whether HGT is enabled; 0=false (default), + # 1=true. +HGT_SOURCE 0 # Source of HGT fragments; 0=dead organisms (default), + # 1=parent. +HGT_FRAGMENT_SELECTION 0 # Method used to select fragments for HGT mutation; 0=random (default), + # 1=trimmed selection + # 2=random placement. +HGT_FRAGMENT_SIZE_MEAN 10 # Mean size of fragments (default=10). +HGT_FRAGMENT_SIZE_VARIANCE 2 # Variance of fragments (default=2). +HGT_MAX_FRAGMENTS_PER_CELL 100 # Max. allowed number of fragments per cell (default=100). +HGT_DIFFUSION_METHOD 0 # Method to use for diffusion of genome fragments; 0=none (default). +HGT_COMPETENCE_P 0.0 # Probability that an HGT 'natural competence' mutation will occur on divide (default=0.0). +HGT_INSERTION_MUT_P 0.0 # Probability that an HGT mutation will result in an insertion (default=0.0). +HGT_CONJUGATION_METHOD 0 # Method used to select the receiver and/or donor of an HGT conjugation; + # 0=random from neighborhood (default); + # 1=faced. +HGT_CONJUGATION_P 0.0 # Probability that an HGT conjugation mutation will occur on divide (default=0.0). +HGT_FRAGMENT_XFORM 0 # Transformation to apply to each fragment prior to incorporation into offspring's genome; 0=none (default), + # 1=random shuffle, + # 2=replace with random instructions. + +### INST_RES_GROUP ### +# Resource-Dependent Instructions Settings +INST_RES # Resource upon which the execution of certain instruction depends +INST_RES_FLOOR 0.0 # Assumed lower level of resource in environment. Used for probability dist. +INST_RES_CEIL 0.0 # Assumed upper level of resource in environment. Used for probability dist. + +### OPINION_GROUP ### +# Organism opinion settings +OPINION_BUFFER_SIZE 1 # Size of the opinion buffer (stores opinions set over the organism's lifetime); -1=inf, default=1, cannot be 0. + +### ALARM_GROUP ### +# Alarm Settings +BCAST_HOPS 1 # Number of hops to broadcast an alarm +ALARM_SELF 0 # Does sending an alarm move sender IP to alarm label? + # 0=no + # 1=yes + +### DIVISION_OF_LABOR_GROUP ### +# Division of Labor settings +AGE_POLY_TRACKING 0 # Print data for an age-task histogram +REACTION_THRESH 0 # The number of times the deme must perform each reaction in order to replicate +TASK_SWITCH_PENALTY 0 # Cost of task switching in cycles +TASK_SWITCH_PENALTY_TYPE 0 # Type of task switch cost: (0) none (1) learning, (2) retooling or context, (3) centrifuge +RES_FOR_DEME_REP 0 # The amount of resources that must be consumed prior to automatic deme replication + +### DEPRECATED_GROUP ### +# DEPRECATED (New functionality listed in comments) +ANALYZE_MODE 0 # 0 = Disabled + # 1 = Enabled + # 2 = Interactive + # DEPRECATED: use command line options -a[nalyze] or -i[nteractive]) +REPRO_METHOD 1 # Replace existing organism: 1=yes + # DEPRECATED: Use BIRTH_METHOD 3 instead. +LEGACY_GRID_LOCAL_SELECTION 0 # Enable legacy grid local mate selection. + # DEPRECATED: Birth chameber now uses population structure) +HARDWARE_TYPE 2 # 0 = Default, heads-based CPUs + # 1 = New SMT CPUs + # 2 = Transitional SMT + # 3 = Experimental CPU + # 4 = Gene Expression CPU +INST_SET - # Instruction set file ('-' = use default for hardware type) +INST_SET_LOAD_LEGACY 0 # Load legacy format instruction set file format + +### DEVEL_GROUP ### +# IN DEVELOPMENT (May not function correctly) +WORLD_Z 1 # Depth of the Avida world + +#include INST_SET=instset-transsmt.cfg diff --git a/avida-core/tests/demes_parasite_memory/config/environment.cfg b/avida-core/tests/demes_parasite_memory/config/environment.cfg new file mode 100644 index 000000000..a68e81b37 --- /dev/null +++ b/avida-core/tests/demes_parasite_memory/config/environment.cfg @@ -0,0 +1,9 @@ +REACTION NOT not process:value=1.0:type=pow requisite:max_count=1 +REACTION NAND nand process:value=1.0:type=pow requisite:max_count=1 +REACTION AND and process:value=2.0:type=pow requisite:max_count=1 +REACTION ORN orn process:value=2.0:type=pow requisite:max_count=1 +REACTION OR or process:value=3.0:type=pow requisite:max_count=1 +REACTION ANDN andn process:value=3.0:type=pow requisite:max_count=1 +REACTION NOR nor process:value=4.0:type=pow requisite:max_count=1 +REACTION XOR xor process:value=4.0:type=pow requisite:max_count=1 +REACTION EQU equ process:value=5.0:type=pow requisite:max_count=1 diff --git a/avida-core/tests/demes_parasite_memory/config/events.cfg b/avida-core/tests/demes_parasite_memory/config/events.cfg new file mode 100644 index 000000000..aa224222f --- /dev/null +++ b/avida-core/tests/demes_parasite_memory/config/events.cfg @@ -0,0 +1,11 @@ +u begin InjectAll filename=evolved-not.org +u begin InjectParasite parasite-smt.org ABB 0 1 +u begin SavePopulation +u begin:10 UpdateDemeParasiteMemoryScores 0.95 1 +u 200 SavePopulation +u 200 ClearParasites 0 3 +u 201 SavePopulation +u 220 SavePopulation +u 240 SavePopulation +u 500 SavePopulation +u 500 Exit diff --git a/avida-core/tests/demes_parasite_memory/config/evolved-not.org b/avida-core/tests/demes_parasite_memory/config/evolved-not.org new file mode 100644 index 000000000..9680c6f66 --- /dev/null +++ b/avida-core/tests/demes_parasite_memory/config/evolved-not.org @@ -0,0 +1,321 @@ +Search +Nop-C +Nop-D +Push-Prev +SetMemory +Nop-A +Nop-D +Nop-D +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 +IO +IO +IO +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Val-Nand +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +IO +Nop-C +Nop-C +Nop-C +Nop-C +Val-Copy +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-D +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +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 +Push-Prev +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +If-Greater +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +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-Erase +Head-Move +Nop-A +Nop-B + diff --git a/avida-core/tests/demes_parasite_memory/config/instset-transsmt.cfg b/avida-core/tests/demes_parasite_memory/config/instset-transsmt.cfg new file mode 100644 index 000000000..aa2a05df2 --- /dev/null +++ b/avida-core/tests/demes_parasite_memory/config/instset-transsmt.cfg @@ -0,0 +1,35 @@ +INSTSET transsmt:hw_type=2 + +INST Nop-A +INST Nop-B +INST Nop-C +INST Nop-D +INST Val-Shift-R +INST Val-Shift-L +INST Val-Nand +INST Val-Add +INST Val-Sub +INST Val-Mult +INST Val-Div +INST Val-Mod +INST Val-Inc +INST Val-Dec +INST SetMemory +INST Inst-Read +INST Inst-Write +INST If-Equal +INST If-Not-Equal +INST If-Less +INST If-Greater +INST Head-Push +INST Head-Pop +INST Head-Move +INST Search +INST Push-Next +INST Push-Prev +INST Push-Comp +INST Val-Delete +INST Val-Copy +INST IO +INST Inject +INST Divide-Erase diff --git a/avida-core/tests/demes_parasite_memory/config/parasite-smt.org b/avida-core/tests/demes_parasite_memory/config/parasite-smt.org new file mode 100644 index 000000000..3cdf90d52 --- /dev/null +++ b/avida-core/tests/demes_parasite_memory/config/parasite-smt.org @@ -0,0 +1,80 @@ +Search +Nop-C +Nop-D +Push-Prev +IO +Nop-C +If-Equal +Val-Mod +Val-Shift-R +Val-Dec +Nop-B +Val-Sub +IO +If-Equal +Val-Dec +IO +Nop-C +IO +Val-Nand +Nop-C +If-Less +If-Greater +Nop-C +Nop-C +Head-Pop +Head-Pop +Nop-C +Val-Nand +IO +SetMemory +Nop-C +Nop-A +IO +Nop-C +Head-Move +Nop-C +Head-Move +Nop-D +Val-Inc +Search +IO +Val-Shift-L +Val-Sub +Val-Delete +Val-Inc +Val-Delete +IO +Head-Push +Nop-A +Val-Dec +Head-Push +Nop-B +Val-Shift-R +Nop-C +Head-Push +Val-Inc +If-Not-Equal +Nop-B +IO +Nop-C +Nop-A +Nop-C +Nop-C +Val-Dec +Nop-C +Nop-D +SetMemory +Search +Inst-Read +Inst-Write +Head-Push +Nop-C +If-Equal +Inject +Head-Move +Inst-Read +Inst-Read +Head-Move +Nop-A +Nop-B diff --git a/avida-core/tests/demes_parasite_memory/expected/.gitignore b/avida-core/tests/demes_parasite_memory/expected/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/avida-core/tests/demes_parasite_memory/expected/data/detail--1.spop b/avida-core/tests/demes_parasite_memory/expected/data/detail--1.spop new file mode 100644 index 000000000..dc5e75ba5 --- /dev/null +++ b/avida-core/tests/demes_parasite_memory/expected/data/detail--1.spop @@ -0,0 +1,27 @@ +#filetype genotype_data +#format id src src_args parents num_units total_units length merit gest_time fitness gen_born update_born update_deactivated depth hw_type inst_set sequence cells gest_offset lineage +# Structured Population Save +# Wed Nov 15 00:41:57 2023 +# 1: ID +# 2: Source +# 3: Source Args +# 4: Parent ID(s) +# 5: Number of currently living organisms +# 6: Total number of organisms that ever existed +# 7: Genome Length +# 8: Average Merit +# 9: Average Gestation Time +# 10: Average Fitness +# 11: Generation Born +# 12: Update Born +# 13: Update Deactivated +# 14: Phylogenetic Depth +# 15: Hardware Type ID +# 16: Inst Set Name +# 17: Genome Sequence +# 18: Occupied Cell IDs +# 19: Gestation (CPU) Cycle Offsets +# 20: Lineage Label + +1 div:ext (none) (none) 6 6 320 0 0 0 0 -1 -1 0 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 0,1,2,3,4,5 0,0,0,0,0,0 0,0,0,0,0,0 +2 horz:int ABB (none) 1 1 80 0 0 0 0 -1 -1 0 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 0 -1 diff --git a/avida-core/tests/demes_parasite_memory/expected/data/detail-200.spop b/avida-core/tests/demes_parasite_memory/expected/data/detail-200.spop new file mode 100644 index 000000000..185094414 --- /dev/null +++ b/avida-core/tests/demes_parasite_memory/expected/data/detail-200.spop @@ -0,0 +1,29 @@ +#filetype genotype_data +#format id src src_args parents num_units total_units length merit gest_time fitness gen_born update_born update_deactivated depth hw_type inst_set sequence cells gest_offset lineage +# Structured Population Save +# Wed Nov 15 00:41:57 2023 +# 1: ID +# 2: Source +# 3: Source Args +# 4: Parent ID(s) +# 5: Number of currently living organisms +# 6: Total number of organisms that ever existed +# 7: Genome Length +# 8: Average Merit +# 9: Average Gestation Time +# 10: Average Fitness +# 11: Generation Born +# 12: Update Born +# 13: Update Deactivated +# 14: Phylogenetic Depth +# 15: Hardware Type ID +# 16: Inst Set Name +# 17: Genome Sequence +# 18: Occupied Cell IDs +# 19: Gestation (CPU) Cycle Offsets +# 20: Lineage Label + +1 div:ext (none) (none) 5 10 320 630 2329.4 0.297496 0 -1 -1 0 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 0,1,2,4,5 0,0,0,0,0 0,0,0,0,0 +2 horz:int ABB (none) 1 1 80 0 0 0 0 -1 -1 0 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 0 -1 +3 div:int (none) 1 1 1 320 0 0 0 1 55 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAccccccccccmccccccccucccccccccccccccccccccypqvcrGxab 3 0 0 +4 horz:int BBBB 2 5 6 80 0 0 0 0 59 -1 1 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 1,2,3,4,5 -1,-1,-1,-1,-1 diff --git a/avida-core/tests/demes_parasite_memory/expected/data/detail-201.spop b/avida-core/tests/demes_parasite_memory/expected/data/detail-201.spop new file mode 100644 index 000000000..4e26b9131 --- /dev/null +++ b/avida-core/tests/demes_parasite_memory/expected/data/detail-201.spop @@ -0,0 +1,28 @@ +#filetype genotype_data +#format id src src_args parents num_units total_units length merit gest_time fitness gen_born update_born update_deactivated depth hw_type inst_set sequence cells gest_offset lineage +# Structured Population Save +# Wed Nov 15 00:41:57 2023 +# 1: ID +# 2: Source +# 3: Source Args +# 4: Parent ID(s) +# 5: Number of currently living organisms +# 6: Total number of organisms that ever existed +# 7: Genome Length +# 8: Average Merit +# 9: Average Gestation Time +# 10: Average Fitness +# 11: Generation Born +# 12: Update Born +# 13: Update Deactivated +# 14: Phylogenetic Depth +# 15: Hardware Type ID +# 16: Inst Set Name +# 17: Genome Sequence +# 18: Occupied Cell IDs +# 19: Gestation (CPU) Cycle Offsets +# 20: Lineage Label + +1 div:ext (none) (none) 5 10 320 630 2329.4 0.297496 0 -1 -1 0 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 0,1,2,4,5 0,0,0,0,0 0,0,0,0,0 +3 div:int (none) 1 1 1 320 0 0 0 1 55 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAccccccccccmccccccccucccccccccccccccccccccypqvcrGxab 3 0 0 +4 horz:int BBBB 2 5 6 80 0 0 0 0 59 -1 1 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 3,4,5 -1,-1,-1 diff --git a/avida-core/tests/demes_parasite_memory/expected/data/detail-220.spop b/avida-core/tests/demes_parasite_memory/expected/data/detail-220.spop new file mode 100644 index 000000000..b0dd0c872 --- /dev/null +++ b/avida-core/tests/demes_parasite_memory/expected/data/detail-220.spop @@ -0,0 +1,29 @@ +#filetype genotype_data +#format id src src_args parents num_units total_units length merit gest_time fitness gen_born update_born update_deactivated depth hw_type inst_set sequence cells gest_offset lineage +# Structured Population Save +# Wed Nov 15 00:41:57 2023 +# 1: ID +# 2: Source +# 3: Source Args +# 4: Parent ID(s) +# 5: Number of currently living organisms +# 6: Total number of organisms that ever existed +# 7: Genome Length +# 8: Average Merit +# 9: Average Gestation Time +# 10: Average Fitness +# 11: Generation Born +# 12: Update Born +# 13: Update Deactivated +# 14: Phylogenetic Depth +# 15: Hardware Type ID +# 16: Inst Set Name +# 17: Genome Sequence +# 18: Occupied Cell IDs +# 19: Gestation (CPU) Cycle Offsets +# 20: Lineage Label + +1 div:ext (none) (none) 4 10 320 630 2329.4 0.297496 0 -1 -1 0 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 0,1,2,4 0,0,0,0 0,0,0,0 +3 div:int (none) 1 2 2 320 630 6061 0.103943 1 55 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAccccccccccmccccccccucccccccccccccccccccccypqvcrGxab 3,5 0,0 0,0 +4 horz:int BBBB 2 4 7 80 0 0 0 0 59 -1 1 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 4,5 -1,-1 +6 horz:int BBBB 2 1 1 80 0 0 0 0 205 -1 1 2 transsmt ycdAEcrlenbiErnEmEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 3 -1 diff --git a/avida-core/tests/demes_parasite_memory/expected/data/detail-240.spop b/avida-core/tests/demes_parasite_memory/expected/data/detail-240.spop new file mode 100644 index 000000000..b0dd0c872 --- /dev/null +++ b/avida-core/tests/demes_parasite_memory/expected/data/detail-240.spop @@ -0,0 +1,29 @@ +#filetype genotype_data +#format id src src_args parents num_units total_units length merit gest_time fitness gen_born update_born update_deactivated depth hw_type inst_set sequence cells gest_offset lineage +# Structured Population Save +# Wed Nov 15 00:41:57 2023 +# 1: ID +# 2: Source +# 3: Source Args +# 4: Parent ID(s) +# 5: Number of currently living organisms +# 6: Total number of organisms that ever existed +# 7: Genome Length +# 8: Average Merit +# 9: Average Gestation Time +# 10: Average Fitness +# 11: Generation Born +# 12: Update Born +# 13: Update Deactivated +# 14: Phylogenetic Depth +# 15: Hardware Type ID +# 16: Inst Set Name +# 17: Genome Sequence +# 18: Occupied Cell IDs +# 19: Gestation (CPU) Cycle Offsets +# 20: Lineage Label + +1 div:ext (none) (none) 4 10 320 630 2329.4 0.297496 0 -1 -1 0 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 0,1,2,4 0,0,0,0 0,0,0,0 +3 div:int (none) 1 2 2 320 630 6061 0.103943 1 55 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAccccccccccmccccccccucccccccccccccccccccccypqvcrGxab 3,5 0,0 0,0 +4 horz:int BBBB 2 4 7 80 0 0 0 0 59 -1 1 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 4,5 -1,-1 +6 horz:int BBBB 2 1 1 80 0 0 0 0 205 -1 1 2 transsmt ycdAEcrlenbiErnEmEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 3 -1 diff --git a/avida-core/tests/demes_parasite_memory/expected/data/detail-500.spop b/avida-core/tests/demes_parasite_memory/expected/data/detail-500.spop new file mode 100644 index 000000000..090bbbb5c --- /dev/null +++ b/avida-core/tests/demes_parasite_memory/expected/data/detail-500.spop @@ -0,0 +1,31 @@ +#filetype genotype_data +#format id src src_args parents num_units total_units length merit gest_time fitness gen_born update_born update_deactivated depth hw_type inst_set sequence cells gest_offset lineage +# Structured Population Save +# Wed Nov 15 00:41:57 2023 +# 1: ID +# 2: Source +# 3: Source Args +# 4: Parent ID(s) +# 5: Number of currently living organisms +# 6: Total number of organisms that ever existed +# 7: Genome Length +# 8: Average Merit +# 9: Average Gestation Time +# 10: Average Fitness +# 11: Generation Born +# 12: Update Born +# 13: Update Deactivated +# 14: Phylogenetic Depth +# 15: Hardware Type ID +# 16: Inst Set Name +# 17: Genome Sequence +# 18: Occupied Cell IDs +# 19: Gestation (CPU) Cycle Offsets +# 20: Lineage Label + +1 div:ext (none) (none) 5 12 320 630 2836.25 0.275803 0 -1 -1 0 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 0,1,2,4,5 0,0,0,0,0 0,0,0,0,0 +4 horz:int BBBB 2 4 10 80 0 0 0 0 59 -1 1 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 1,4,5 -1,-1,-1 +7 div:int (none) 1 1 1 320 0 0 0 3 317 -1 1 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccclccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 3 0 0 +8 horz:int BBBB 4 1 1 80 0 0 0 0 324 -1 2 2 transsmt ycEAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab 3 -1 +9 horz:int BBBB 4 1 1 79 0 0 0 0 428 -1 2 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxpxab 0 -1 +2 horz:int ABB (none) 0 1 80 0 0 0 0 -1 422 0 2 transsmt ycdAEcrlenbiErnEcEgctuccwwcgEocaEcxcxdmyEfiCmCEvanvbecvmsbEcaccncdoypqvcrFxppxab diff --git a/avida-core/tests/demes_parasite_memory/test_list b/avida-core/tests/demes_parasite_memory/test_list new file mode 100644 index 000000000..2f7282cca --- /dev/null +++ b/avida-core/tests/demes_parasite_memory/test_list @@ -0,0 +1,36 @@ +;--- Begin Test Configuration File (test_list) --- +[main] +; Command line arguments to pass to the application +args = -s 100 +app = %(default_app)s +nonzeroexit = disallow ; Exit code handling (disallow, allow, or require) + ; disallow - treat non-zero exit codes as failures + ; allow - all exit codes are acceptable + ; require - treat zero exit codes as failures, useful + ; for creating tests for app error checking +createdby = Dave Knoester ; Who created the test +email = dk@cse.msu.edu ; Email address for the test's creator + +[consistency] +enabled = yes ; Is this test a consistency test? +long = no ; Is this test a long test? + +[performance] +enabled = no ; Is this test a performance test? +long = no ; Is this test a long test? + +; The following variables can be used in constructing setting values by calling +; them with %(variable_name)s. For example see 'app' above. +; +; app +; builddir +; cpus +; mode +; perf_repeat +; perf_user_margin +; perf_wall_margin +; svn +; svnmetadir +; svnversion +; testdir +;--- End Test Configuration File --- From 665dc58830ae232a9baf87f0695258c0b933a989 Mon Sep 17 00:00:00 2001 From: Matthew Andres Moreno Date: Wed, 15 Nov 2023 01:20:33 -0500 Subject: [PATCH 15/17] Impl, test load/save deme parasite memory score --- avida-core/source/actions/SaveLoadActions.cc | 62 ++++++++++++++++++- avida-core/source/main/cDeme.h | 3 + .../config/detailgermlines-500.sgerm | 5 +- .../demes_loadbirthcounts/config/events.cfg | 5 +- .../expected/data/deme_replication.dat | 1 - .../expected/data/injectlog.dat | 7 --- .../expected/data/out-10.sgerm | 9 +-- .../expected/data/out-10.spop | 4 +- 8 files changed, 76 insertions(+), 20 deletions(-) delete mode 100644 avida-core/tests/demes_loadbirthcounts/expected/data/deme_replication.dat delete mode 100644 avida-core/tests/demes_loadbirthcounts/expected/data/injectlog.dat diff --git a/avida-core/source/actions/SaveLoadActions.cc b/avida-core/source/actions/SaveLoadActions.cc index 6504c3ffc..5e4143862 100644 --- a/avida-core/source/actions/SaveLoadActions.cc +++ b/avida-core/source/actions/SaveLoadActions.cc @@ -188,16 +188,18 @@ class cActionSaveGermlines : public cAction private: cString m_filename; bool m_birthcounts; + bool m_parasitememoryscores; public: cActionSaveGermlines(cWorld* world, const cString& args, Feedback& feedback) - : cAction(world, args), m_filename(""), m_birthcounts(false) + : cAction(world, args), m_filename(""), m_birthcounts(false), m_parasitememoryscores(false) { cArgSchema schema(':','='); // String Entries schema.AddEntry("filename", 0, "detailgermlines"); schema.AddEntry("birthcounts", 0, 0, 1, 0); + schema.AddEntry("parasitememoryscores", 1, 0, 1, 0); cArgContainer* argc = cArgContainer::Load(args, schema, feedback); @@ -206,6 +208,7 @@ class cActionSaveGermlines : public cAction m_filename = argc->GetString(0); // Integer Entries m_birthcounts = argc->GetInt(0); + m_parasitememoryscores = argc->GetInt(1); } delete argc; @@ -233,6 +236,11 @@ class cActionSaveGermlines : public cAction deme.GetBirthCount(), "Deme Birth Count", "deme_birth_count" ); } + if (m_parasitememoryscores) { + df->Write( + deme.GetParasiteMemoryScore(), "Deme Parasite Memory Score", "deme_parasite_memory_score" + ); + } df->Endl(); } @@ -363,6 +371,57 @@ class cActionLoadBirthCounts : public cAction }; +class cActionLoadParasiteMemoryScores : public cAction +{ +private: + cString m_filename; + bool m_verbose; + +public: + cActionLoadParasiteMemoryScores(cWorld* world, const cString& args, Feedback& feedback) + : cAction(world, args), m_filename(""), m_verbose(false) + { + cString largs(args); + if (largs.GetSize()) m_filename = largs.PopWord(); + if (largs.GetSize()) m_verbose = largs.PopWord().AsInt(); + } + + static const cString GetDescription() { return "Arguments: [string filename='detailgermlines']"; } + + void Process(cAvidaContext& ctx) { + cInitFile input_file( + m_filename, + m_world->GetWorkingDir(), + ctx.Driver().Feedback() + ); + assert(input_file.WasOpened()); + if (m_verbose) printf( + "LoadParasiteMemoryScores input file %s has %d lines.\n", + (const char*)m_filename, + input_file.GetNumLines() + ); + + for (int line_id = 0; line_id < input_file.GetNumLines(); line_id++) { + auto file_props = input_file.GetLineAsDict(line_id); + const int deme_id = Apto::StrAs(file_props->Get("deme_id")); + const double deme_parasite_memory_score = Apto::StrAs(file_props->Get("deme_parasite_memory_score")); + if (m_verbose) + printf( + "LoadParasiteMemoryScores deme %d has %f score.\n", deme_id, deme_parasite_memory_score + ); + + auto& deme = m_world->GetPopulation().GetDeme(deme_id); + deme.SetParasiteMemoryScore(deme_parasite_memory_score); + printf( + "LoadParasiteMemoryScores set deme %d score to %f.\n", + deme_id, + deme.GetParasiteMemoryScore() + ); + } + } +}; + + class cActionLoadStructuredSystematicsGroup : public cAction { private: @@ -477,6 +536,7 @@ void RegisterSaveLoadActions(cActionLibrary* action_lib) action_lib->Register("LoadGermlines"); action_lib->Register("SaveGermlines"); action_lib->Register("LoadBirthCounts"); + action_lib->Register("LoadParasiteMemoryScores"); action_lib->Register("LoadStructuredSystematicsGroup"); action_lib->Register("SaveStructuredSystematicsGroup"); action_lib->Register("SaveFlameData"); diff --git a/avida-core/source/main/cDeme.h b/avida-core/source/main/cDeme.h index ccbcbcb09..e557f638a 100644 --- a/avida-core/source/main/cDeme.h +++ b/avida-core/source/main/cDeme.h @@ -195,6 +195,9 @@ class cDeme parasite_memory_score *= decay; } double GetParasiteMemoryScore() const { return parasite_memory_score; } + void SetParasiteMemoryScore(const double score) { + parasite_memory_score = score; + } void IncOrgCount() { cur_org_count++; } void DecOrgCount() { cur_org_count--; } diff --git a/avida-core/tests/demes_loadbirthcounts/config/detailgermlines-500.sgerm b/avida-core/tests/demes_loadbirthcounts/config/detailgermlines-500.sgerm index 14f8eff7f..2b12f58b3 100644 --- a/avida-core/tests/demes_loadbirthcounts/config/detailgermlines-500.sgerm +++ b/avida-core/tests/demes_loadbirthcounts/config/detailgermlines-500.sgerm @@ -1,5 +1,5 @@ #filetype germline_data -#format deme_id hw_type inst_set sequence deme_birth_count +#format deme_id hw_type inst_set sequence deme_birth_count deme_parasite_memory_score # Mode 1 Germline Save # Tue Aug 29 01:14:50 2023 # 1: Deme ID @@ -7,5 +7,6 @@ # 3: Inst Set Name # 4: Genome Sequence # 5: Deme Birth Count +# 6: Deme Parasite Memory Score -0 2 transsmt ycdBCiEdimFjfCDaknmsAjemEEcgccgssmhEEcsdseDcAcBcggclEEcDEgcvrsAmlzessjhcdcggkhamtmciEEvjDdhjidzoAyndvmEdbgznjDmcjohohooayaxdyalbcekzebjcogEtjgjacblDvubADnslyyocgsAcjCbobffhmvnnAdbDfkmxcagBFfndytqhutjdzfdjsnflfoqCwcvhsjcvbmlsqcjrgyiDivvnFhrArcsmifbClvluDqmCBbtiDhiEfACcarpEczijdljujACbfzuDEFyaqqekizDosbbzjgmpczypqvcrGxab 42 +0 2 transsmt ycdBCiEdimFjfCDaknmsAjemEEcgccgssmhEEcsdseDcAcBcggclEEcDEgcvrsAmlzessjhcdcggkhamtmciEEvjDdhjidzoAyndvmEdbgznjDmcjohohooayaxdyalbcekzebjcogEtjgjacblDvubADnslyyocgsAcjCbobffhmvnnAdbDfkmxcagBFfndytqhutjdzfdjsnflfoqCwcvhsjcvbmlsqcjrgyiDivvnFhrArcsmifbClvluDqmCBbtiDhiEfACcarpEczijdljujACbfzuDEFyaqqekizDosbbzjgmpczypqvcrGxab 42 24.8 diff --git a/avida-core/tests/demes_loadbirthcounts/config/events.cfg b/avida-core/tests/demes_loadbirthcounts/config/events.cfg index e7b452b0a..e7b21bc94 100644 --- a/avida-core/tests/demes_loadbirthcounts/config/events.cfg +++ b/avida-core/tests/demes_loadbirthcounts/config/events.cfg @@ -1,10 +1,9 @@ i InjectSequence ycdBCiEdimFjfCDaknmsAjemEEcgccgssmhEEcsdseDcAcBcggclEEcDEgcvrsAmlzessjhcdcggkhamtmciEEvjDdhjidzoAyndvmEdbgznjDmcjohohooayaxdyalbcekzebjcogEtjgjacblDvubADnslyyocgsAcjCbobffhmvnnAdbDfkmxcagBFfndytqhutjdzfdjsnflfoqCwcvhsjcvbmlsqcjrgyiDivvnFhrArcsmifbClvluDqmCBbtiDhiEfACcarpEczijdljujACbfzuDEFyaqqekizDosbbzjgmpczypqvcrGxab 101 i LoadGermlines detailgermlines-500.sgerm i LoadBirthCounts detailgermlines-500.sgerm 1 - -u 5 ReplicateDeme 1 +i LoadParasiteMemoryScores detailgermlines-500.sgerm 1 u 10 SavePopulation filename=out -u 10 SaveGermlines filename=out:birthcounts=1 +u 10 SaveGermlines filename=out:birthcounts=1:parasitememoryscores=1 u 10 Exit diff --git a/avida-core/tests/demes_loadbirthcounts/expected/data/deme_replication.dat b/avida-core/tests/demes_loadbirthcounts/expected/data/deme_replication.dat deleted file mode 100644 index fcf473520..000000000 --- a/avida-core/tests/demes_loadbirthcounts/expected/data/deme_replication.dat +++ /dev/null @@ -1 +0,0 @@ -5,1,0 diff --git a/avida-core/tests/demes_loadbirthcounts/expected/data/injectlog.dat b/avida-core/tests/demes_loadbirthcounts/expected/data/injectlog.dat deleted file mode 100644 index c4648f141..000000000 --- a/avida-core/tests/demes_loadbirthcounts/expected/data/injectlog.dat +++ /dev/null @@ -1,7 +0,0 @@ -# 1: Update -# 2: Organism ID -# 3: Deme ID -# 4: Facing - -5 1 1 3 -5 2 0 3 diff --git a/avida-core/tests/demes_loadbirthcounts/expected/data/out-10.sgerm b/avida-core/tests/demes_loadbirthcounts/expected/data/out-10.sgerm index 854e6c880..67b04966d 100644 --- a/avida-core/tests/demes_loadbirthcounts/expected/data/out-10.sgerm +++ b/avida-core/tests/demes_loadbirthcounts/expected/data/out-10.sgerm @@ -1,12 +1,13 @@ #filetype germline_data -#format deme_id hw_type inst_set sequence deme_birth_count +#format deme_id hw_type inst_set sequence deme_birth_count deme_parasite_memory_score # Mode 1 Germline Save -# Tue Nov 14 22:24:30 2023 +# Wed Nov 15 01:19:51 2023 # 1: Deme ID # 2: Hardware Type ID # 3: Inst Set Name # 4: Genome Sequence # 5: Deme Birth Count +# 6: Deme Parasite Memory Score -0 2 transsmt ycdBCiEdimFjfCDaknmsAjemEEcgccgssmhEEcsdseDcAcBcggclEEcDEgcvrsAmlzessjhcdcggkhamtmciEEvjDdhjidzoAyndvmEdbgznjDmcjohohooayaxdyalbcekzebjcogEtjgjacblDvubADnslyyocgsAcjCbobffhmvnnAdbDfkmxcagBFfndytqhutjdzfdjsnflfoqCwcvhsjcvbmlsqcjrgyiDivvnFhrArcsmifbClvluDqmCBbtiDhiEfACcarpEczijdljujACbfzuDEFyaqqekizDosbbzjgmpczypqvcrGxab 0 -1 2 transsmt ycdBCiEdimFjfCDaknmsAjemEEcgccgssmhEEcsdseDcAcBcggclEEcDEgcvrsAmlzessjhcdcggkhamtmciEEvjDdhjidzoAyndvmEdbgznjDmcjohohooayaxdyalbcekzebjcogEtjgjacblDvubADnslyyocgsAcjCbobffhmvnnAdbDfkmxcagBFfndytqhutjdzfdjsnflfoqCwcvhsjcvbmlsqcjrgyiDivvnFhrArcsmifbClvluDqmCBbtiDhiEfACcarpEczijdljujACbfzuDEFyaqqekizDosbbzjgmpczypqvcrGxab 0 +0 2 transsmt ycdBCiEdimFjfCDaknmsAjemEEcgccgssmhEEcsdseDcAcBcggclEEcDEgcvrsAmlzessjhcdcggkhamtmciEEvjDdhjidzoAyndvmEdbgznjDmcjohohooayaxdyalbcekzebjcogEtjgjacblDvubADnslyyocgsAcjCbobffhmvnnAdbDfkmxcagBFfndytqhutjdzfdjsnflfoqCwcvhsjcvbmlsqcjrgyiDivvnFhrArcsmifbClvluDqmCBbtiDhiEfACcarpEczijdljujACbfzuDEFyaqqekizDosbbzjgmpczypqvcrGxab 42 24.8 +1 2 transsmt ycdBCiEdimFjfCDaknmsAjemEEcgccgssmhEEcsdseDcAcBcggclEEcDEgcvrsAmlzessjhcdcggkhamtmciEEvjDdhjidzoAyndvmEdbgznjDmcjohohooayaxdyalbcekzebjcogEtjgjacblDvubADnslyyocgsAcjCbobffhmvnnAdbDfkmxcagBFfndytqhutjdzfdjsnflfoqCwcvhsjcvbmlsqcjrgyiDivvnFhrArcsmifbClvluDqmCBbtiDhiEfACcarpEczijdljujACbfzuDEFyaqqekizDosbbzjgmpczypqvcrGxab 0 0 diff --git a/avida-core/tests/demes_loadbirthcounts/expected/data/out-10.spop b/avida-core/tests/demes_loadbirthcounts/expected/data/out-10.spop index e6d371635..8ad5b0f5a 100644 --- a/avida-core/tests/demes_loadbirthcounts/expected/data/out-10.spop +++ b/avida-core/tests/demes_loadbirthcounts/expected/data/out-10.spop @@ -1,7 +1,7 @@ #filetype genotype_data #format id src src_args parents num_units total_units length merit gest_time fitness gen_born update_born update_deactivated depth hw_type inst_set sequence cells gest_offset lineage # Structured Population Save -# Tue Nov 14 22:24:30 2023 +# Wed Nov 15 01:19:51 2023 # 1: ID # 2: Source # 3: Source Args @@ -23,4 +23,4 @@ # 19: Gestation (CPU) Cycle Offsets # 20: Lineage Label -2 dup:int germline (none) 2 2 320 0 0 0 0 6 -1 0 2 transsmt ycdBCiEdimFjfCDaknmsAjemEEcgccgssmhEEcsdseDcAcBcggclEEcDEgcvrsAmlzessjhcdcggkhamtmciEEvjDdhjidzoAyndvmEdbgznjDmcjohohooayaxdyalbcekzebjcogEtjgjacblDvubADnslyyocgsAcjCbobffhmvnnAdbDfkmxcagBFfndytqhutjdzfdjsnflfoqCwcvhsjcvbmlsqcjrgyiDivvnFhrArcsmifbClvluDqmCBbtiDhiEfACcarpEczijdljujACbfzuDEFyaqqekizDosbbzjgmpczypqvcrGxab 50,150 0,0 0,0 +1 div:ext (none) (none) 1 1 320 0 0 0 0 -1 -1 0 2 transsmt ycdBCiEdimFjfCDaknmsAjemEEcgccgssmhEEcsdseDcAcBcggclEEcDEgcvrsAmlzessjhcdcggkhamtmciEEvjDdhjidzoAyndvmEdbgznjDmcjohohooayaxdyalbcekzebjcogEtjgjacblDvubADnslyyocgsAcjCbobffhmvnnAdbDfkmxcagBFfndytqhutjdzfdjsnflfoqCwcvhsjcvbmlsqcjrgyiDivvnFhrArcsmifbClvluDqmCBbtiDhiEfACcarpEczijdljujACbfzuDEFyaqqekizDosbbzjgmpczypqvcrGxab 101 0 0 From c7a802e196627de50968b0f2a921c40e149a95df Mon Sep 17 00:00:00 2001 From: Matthew Andres Moreno Date: Wed, 15 Nov 2023 01:35:13 -0500 Subject: [PATCH 16/17] Remove debugging cruft --- avida-core/source/actions/PopulationActions.cc | 3 --- 1 file changed, 3 deletions(-) diff --git a/avida-core/source/actions/PopulationActions.cc b/avida-core/source/actions/PopulationActions.cc index aeebbcb2c..21414d3a4 100644 --- a/avida-core/source/actions/PopulationActions.cc +++ b/avida-core/source/actions/PopulationActions.cc @@ -5297,7 +5297,6 @@ class cActionKillDemesHighestParasiteLoad : public cAction ); const int kill_quota = std::min(binomial_draw, m_killmax); if (kill_quota == 0) return; - std::cout << "kill quota " << kill_quota << std::endl; std::vector top_n(kill_quota); const auto partial_sort_end = std::partial_sort_copy( @@ -5306,12 +5305,10 @@ class cActionKillDemesHighestParasiteLoad : public cAction std::greater() ); const auto kill_thresh = *std::prev(partial_sort_end); - std::cout << "kill thresh " << kill_thresh << std::endl; for (int d = 0; d < num_demes; d++) { if (parasite_loads[d] and parasite_loads[d] >= kill_thresh) { - std::cout << "bump" << std::endl; cDeme &deme = pop.GetDeme(d); deme.KillAll(ctx); } From bd7ca0b1011e8d50de3a7a5a74dc798c1a6a0a1c Mon Sep 17 00:00:00 2001 From: Matthew Andres Moreno Date: Wed, 15 Nov 2023 02:13:30 -0500 Subject: [PATCH 17/17] Impl, test ReplicateDemesHighestBirthCount --- .../source/actions/PopulationActions.cc | 74 ++ .../config/avida.cfg | 689 ++++++++++++++++++ .../config/detailgermlines-500.sgerm | 14 + .../config/environment.cfg | 9 + .../config/events.cfg | 9 + .../config/evolved-not.org | 321 ++++++++ .../config/instset-transsmt.cfg | 35 + .../config/parasite-smt.org | 80 ++ .../expected/.gitignore | 0 .../expected/data/detail--1.spop | 26 + .../expected/data/detail-2.spop | 27 + .../expected/data/evolved.sgerm--1.sgerm | 13 + .../expected/data/evolved.sgerm-2.sgerm | 13 + .../test_list | 36 + 14 files changed, 1346 insertions(+) create mode 100644 avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/avida.cfg create mode 100644 avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/detailgermlines-500.sgerm create mode 100644 avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/environment.cfg create mode 100644 avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/events.cfg create mode 100644 avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/evolved-not.org create mode 100644 avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/instset-transsmt.cfg create mode 100644 avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/parasite-smt.org create mode 100644 avida-core/tests/demes_ReplicateDemesHighestBirthCount/expected/.gitignore create mode 100644 avida-core/tests/demes_ReplicateDemesHighestBirthCount/expected/data/detail--1.spop create mode 100644 avida-core/tests/demes_ReplicateDemesHighestBirthCount/expected/data/detail-2.spop create mode 100644 avida-core/tests/demes_ReplicateDemesHighestBirthCount/expected/data/evolved.sgerm--1.sgerm create mode 100644 avida-core/tests/demes_ReplicateDemesHighestBirthCount/expected/data/evolved.sgerm-2.sgerm create mode 100644 avida-core/tests/demes_ReplicateDemesHighestBirthCount/test_list diff --git a/avida-core/source/actions/PopulationActions.cc b/avida-core/source/actions/PopulationActions.cc index 21414d3a4..1b9ce83f0 100644 --- a/avida-core/source/actions/PopulationActions.cc +++ b/avida-core/source/actions/PopulationActions.cc @@ -5317,6 +5317,79 @@ class cActionKillDemesHighestParasiteLoad : public cAction }; +/* + Replicate deme(s) with the highest parasite load + */ +class cActionReplicateDemesHighestBirthCount : public cAction +{ +private: + double m_replprob; + int m_replmax; +public: + cActionReplicateDemesHighestBirthCount(cWorld *world, const cString &args, Feedback &) : cAction(world, args), m_replprob(0.01), m_replmax(std::numeric_limits::max()) + { + cString largs(args); + if (largs.GetSize()) m_replprob = largs.PopWord().AsDouble(); + if (largs.GetSize()) m_replmax = largs.PopWord().AsInt(); + + assert(m_replprob >= 0); + } + + static const cString GetDescription() { return "Arguments: [double replprob=0.01] [int replmax = intmax]"; } + + void Process(cAvidaContext& ctx) + { + cPopulation& pop = m_world->GetPopulation(); + const int num_demes = pop.GetNumDemes(); + int num_eligible = 0; + for (int d = 0; d < num_demes; d++) + { + cDeme &deme = pop.GetDeme(d); + num_eligible += (not deme.IsEmpty()); + } + + const int binomial_draw = ctx.GetRandom().GetRandBinomial( + num_eligible, + m_replprob + ); + const int repl_quota = std::min(binomial_draw, m_replmax); + if (repl_quota == 0) return; + + for (int i = 0; i < repl_quota; ++i) { + int most_births = 0; + int num_with_most_births = 0; + for (int d = 0; d < num_demes; d++) + { + cDeme &deme = pop.GetDeme(d); + if (deme.IsEmpty()) continue; + const int num_births = deme.GetBirthCount(); + if (num_births > most_births) { + most_births = num_births; + num_with_most_births = 1; + } else if (num_births == most_births) { + ++num_with_most_births; + } + } + int birth_index = ctx.GetRandom().GetInt( + 0, num_with_most_births - 1 + ); + for (int d = 0; d < num_demes; d++) { + cDeme &deme = pop.GetDeme(d); + if (deme.IsEmpty()) continue; + if (deme.GetBirthCount() == most_births) { + if (birth_index == 0) { + m_world->GetPopulation().ReplicateDeme(deme, ctx); + break; + } else { + --birth_index; + } + } + } + } + } // End Process() +}; + + /* Set the ages at which treatable demes can be treated @@ -5987,6 +6060,7 @@ void RegisterPopulationActions(cActionLibrary* action_lib) action_lib->Register("KillWithinRadiusBelowResourceThresholdTestAll"); action_lib->Register("KillDemePercent"); action_lib->Register("KillDemesHighestParasiteLoad"); + action_lib->Register("ReplicateDemesHighestBirthCount"); action_lib->Register("KillMeanBelowThresholdPaintable"); action_lib->Register("DiffuseHGTGenomeFragments"); diff --git a/avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/avida.cfg b/avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/avida.cfg new file mode 100644 index 000000000..10eccad28 --- /dev/null +++ b/avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/avida.cfg @@ -0,0 +1,689 @@ +############################################################################# +# This file includes all the basic run-time defines for Avida. +# For more information, see doc/config.html +############################################################################# + +VERSION_ID 2.11.0 # Do not change this value. + +### GENERAL_GROUP ### +# General Settings +VERBOSITY 3 # 0 = No output at all + # 1 = Normal output + # 2 = Verbose output, detailing progress + # 3 = High level of details, as available + # 4 = Print Debug Information, as applicable +RANDOM_SEED 1 # Random number seed (0 for based on time) +SPECULATIVE 1 # Enable speculative execution + # (pre-execute instructions that don't affect other organisms) +POPULATION_CAP 0 # Carrying capacity in number of organisms (use 0 for no cap) + +### TOPOLOGY_GROUP ### +# World topology +WORLD_X 10 +WORLD_Y 30 +NUM_DEMES 3 +RANDOM_SEED 1WORLD_GEOMETRY 2 # 1 = Bounded Grid (WOLRD_X x WORLD_Y) + # 2 = Toroidal Grid (WOLRD_X x WORLD_Y; wraps at edges + # 3 = Clique (all population cells are connected) + # 4 = Hexagonal grid + # 5 = Partial + # 6 = 3D Lattice (under development) + # 7 = Random connected + # 8 = Scale-free (detailed below) +SCALE_FREE_M 3 # Number of connections per cell in a scale-free geometry +SCALE_FREE_ALPHA 1.0 # Attachment power (1=linear) +SCALE_FREE_ZERO_APPEAL 0.0 # Appeal of cells with zero connections + +### CONFIG_FILE_GROUP ### +# Other configuration Files +DATA_DIR data # Directory in which config files are found +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 + +#include INST_SET=instset-transsmt.cfg + +### MUTATION_GROUP ### +# Mutation rates +COPY_MUT_PROB 0.000 # Mutation rate (per copy) +COPY_INS_PROB 0.0 # Insertion rate (per copy) +COPY_DEL_PROB 0.0 # Deletion rate (per copy) +COPY_UNIFORM_PROB 0.0 # Uniform mutation probability (per copy) + # - Randomly apply insertion, deletion or point mutation +COPY_SLIP_PROB 0.0 # Slip rate (per copy) +POINT_MUT_PROB 0.0 # Mutation rate (per-location per update) +DIV_MUT_PROB 0.000703 # Mutation rate (per site, applied on divide) +DIV_INS_PROB 0.00003906 # Insertion rate (per site, applied on divide) +DIV_DEL_PROB 0.00003906 # Deletion rate (per site, applied on divide) +DIV_UNIFORM_PROB 0.0 # Uniform mutation probability (per site, applied on divide) + # - Randomly apply insertion, deletion or point mutation +DIV_SLIP_PROB 0.0 # Slip rate (per site, applied on divide) +DIVIDE_MUT_PROB 0.0 # Mutation rate (max one, per divide) +DIVIDE_INS_PROB 0.0#5 # Insertion rate (max one, per divide) +DIVIDE_DEL_PROB 0.0#5 # Deletion rate (max one, per divide) +DIVIDE_UNIFORM_PROB 0.0 # Uniform mutation probability (per divide) + # - Randomly apply insertion, deletion or point mutation +DIVIDE_SLIP_PROB 0.0 # Slip rate (per divide) - creates large deletions/duplications +DIVIDE_POISSON_MUT_MEAN 0.0 # Mutation rate (Poisson distributed, per divide) +DIVIDE_POISSON_INS_MEAN 0.0 # Insertion rate (Poisson distributed, per divide) +DIVIDE_POISSON_DEL_MEAN 0.0 # Deletion rate (Poisson distributed, per divide) +DIVIDE_POISSON_SLIP_MEAN 0.0 # Slip rate (Poisson distributed, per divide) +INJECT_INS_PROB 0.000825 # Insertion rate (per site, applied on inject) +INJECT_DEL_PROB 0.000825 # Deletion rate (per site, applied on inject) +INJECT_MUT_PROB 0.0075 # Mutation rate (per site, applied on inject) +SLIP_FILL_MODE 0 # Fill insertions from slip mutations with: + # 0 = Duplication + # 1 = nop-X + # 2 = Random + # 3 = scrambled + # 4 = nop-C +SLIP_COPY_MODE 0 # How to handle 'on-copy' slip mutations: + # 0 = actual read head slip + # 1 = instant large mutation (obeys slip mode) +PARENT_MUT_PROB 0.0 # Per-site, in parent, on divide +SPECIAL_MUT_LINE -1 # If this is >= 0, ONLY this line is mutated +META_COPY_MUT 0.2 # Prob. of copy mutation rate changing (per gen) +META_STD_DEV 0.1 # Standard deviation of meta mutation size. +MUT_RATE_SOURCE 1 # 1 = Mutation rates determined by environment. + # 2 = Mutation rates inherited from parent. + +### REPRODUCTION_GROUP ### +# Birth and Death config options +DIVIDE_FAILURE_RESETS 0 # When Divide fails, organisms are interally reset +BIRTH_METHOD 4 # Which organism should be replaced when a birth occurs? + # 0 = Random organism in neighborhood + # 1 = Oldest in neighborhood + # 2 = Largest Age/Merit in neighborhood + # 3 = None (use only empty cells in neighborhood) + # 4 = Random from population (Mass Action) + # 5 = Oldest in entire population + # 6 = Random within deme + # 7 = Organism faced by parent + # 8 = Next grid cell (id+1) + # 9 = Largest energy used in entire population + # 10 = Largest energy used in neighborhood + # 11 = Local neighborhood dispersal +PREFER_EMPTY 0 # Overide BIRTH_METHOD to preferentially choose empty cells for offsping? +ALLOW_PARENT 1 # Should parents be considered when deciding where to place offspring? +DISPERSAL_RATE 0.0 # Rate of dispersal under birth method 11 + # (poisson distributed random connection list hops) +DEATH_PROB 0.0 # Probability of death when dividing. +DEATH_METHOD 2 # When should death by old age occur? + # 0 = Never + # 1 = When executed AGE_LIMIT (+deviation) total instructions + # 2 = When executed genome_length * AGE_LIMIT (+dev) instructions +AGE_LIMIT 30 # See DEATH_METHOD +AGE_DEVIATION 0 # Creates a normal distribution around AGE_LIMIT for time of death +ALLOC_METHOD 0 # When allocating blank tape, how should it be initialized? + # 0 = Allocated space is set to default instruction. + # 1 = Set to section of dead genome (creates potential for recombination) + # 2 = Allocated space is set to random instruction. +DIVIDE_METHOD 1 # 0 = Divide leaves state of mother untouched. + # 1 = Divide resets state of mother(effectively creating 2 offspring) + # 2 = Divide resets state of current thread only (use with parasites) +EPIGENETIC_METHOD 0 # Inheritance of state information other than genome + # 0 = none + # 1 = offspring inherits registers and stacks of first thread + # 1 = parent maintains registers and stacks of first thread + # + # 1 = offspring and parent keep state information +GENERATION_INC_METHOD 1 # 0 = Only increase generation of offspring on divide. + # 1 = Increase generation of both parent and offspring + # (suggested with DIVIDE_METHOD 1). +RESET_INPUTS_ON_DIVIDE 0 # Reset environment inputs of parent upon successful divide. +INHERIT_MERIT 0 # Should merit be inhereted from mother parent? (in asexual) +INHERIT_MULTITHREAD 0 # Should offspring of parents with multiple threads be marked multithreaded? + +### DIVIDE_GROUP ### +# Divide restrictions and triggers - settings describe conditions for a successful divide +OFFSPRING_SIZE_RANGE 2.0 # Maximal differential between offspring and parent length. + # (Checked BEFORE mutations applied on divide.) +MIN_COPIED_LINES 0.5 # Code fraction that must be copied before divide +MIN_EXE_LINES 0.5 # Code fraction that must be executed before divide +MIN_GENOME_SIZE 0 # Minimum number of instructions allowed in a genome. 0 = OFF +MAX_GENOME_SIZE 0 # Maximum number of instructions allowed in a genome. 0 = OFF +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 +IMMUNITY_REACTION -1 # Reaction ID that provides immunity for successful divide +REQUIRE_SINGLE_REACTION 1 # If set to 1, at least one reaction is required for a successful divide +REQUIRED_BONUS 0.0 # Required bonus to divide +REQUIRE_EXACT_COPY 0 # Require offspring to be an exact copy (checked before divide mutations) +REQUIRED_RESOURCE -1 # ID of resource required in organism's internal bins for successful + # divide (resource not consumed) +REQUIRED_RESOURCE_LEVEL 0.0 # Level of resource needed for REQUIRED_RESOURCE +IMPLICIT_REPRO_BONUS 0 # Call Inst_Repro to divide upon achieving this bonus. 0 = OFF +IMPLICIT_REPRO_CPU_CYCLES 0 # Call Inst_Repro after this many cpu cycles. 0 = OFF +IMPLICIT_REPRO_TIME 0 # Call Inst_Repro after this time used. 0 = OFF +IMPLICIT_REPRO_END 0 # Call Inst_Repro after executing the last instruction in the genome. +IMPLICIT_REPRO_ENERGY 0.0 # Call Inst_Repro if organism accumulates this amount of energy. + +### 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 (-1 = unlimited) +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 # 0 = Both offspring are born (no two-fold cost) + # 1 = only one recombined offspring is born. +SAME_LENGTH_SEX 0 # 0 = Recombine with any genome + # 1 = Recombine only w/ same length +ALLOW_MATE_SELECTION 0 # Allow organisms to select mates (requires instruction set support) + +### PARASITE_GROUP ### +# Parasite config options +INJECT_METHOD 1 # What should happen to a parasite when it gives birth? + # 0 = Leave the parasite thread state untouched. + # 1 = Resets the state of the calling thread (for SMT parasites, this must be 1) +INJECT_PROB_FROM_TASKS 0 # Inject occurs based on probability from performing tasks - 11*numTasks +INJECT_STERILIZES_HOST 0 # Infection causes host steralization +INJECT_IS_VIRULENT 0 # Infection causes host steralization and takes all cpu cycles (setting this to 1 will override inject_virulence) +PARASITE_SKIP_REACTIONS 1 # Parasite tasks do not get processed in the environment (1) or they do trigger reactions (0) +INJECT_IS_TASK_SPECIFIC 1 # Parasites must match a task done by the host they are trying to infect +INJECT_SKIP_FIRST_TASK 0 # They cannot match the first task the host is doing to infect +INJECT_DEFAULT_SUCCESS 0.0 # If injection is task specific, with what probability should non-matching parasites infect the host +PARASITE_VIRULENCE 0.85 # The probabalistic percentage of cpu cycles allocated to the parasite instead of the host. Ensure INJECT_IS_VIRULENT is set to 0. This only works for single infection at the moment +PARASITE_MEM_SPACES 1 # Parasites get their own memory spaces +PARASITE_NO_COPY_MUT 1 # Parasites do not get copy mutation rates + +### ARCHETECTURE_GROUP ### +# Details on how CPU should work +IO_EXPIRE 1 # Is the expiration functionality of '-expire' I/O instructions enabled? + +### MP_GROUP ### +# Config options for multiple, distributed populations +ENABLE_MP 0 # Enable multi-process Avida; 0=disabled (default), + # 1=enabled. +MP_SCHEDULING_STYLE 0 # Style of scheduling: + # 0=non-MP aware (default) + # 1=MP aware, integrated across worlds. + +### DEME_GROUP ### +# Demes and Germlines +DEMES_COMPETITION_STYLE 0 # How should demes compete? + # 0=Fitness proportional selection + # 1=Tournament selection +DEMES_TOURNAMENT_SIZE 0 # Number of demes that participate in a tournament +DEMES_OVERRIDE_FITNESS 0 # Should the calculated fitness is used? + # 0=yes (default) + # 1=no (all fitnesses=1) +DEMES_USE_GERMLINE 1 # Should demes use a distinct germline? +DEMES_PREVENT_STERILE 0 # Prevent sterile demes from replicating? +DEMES_RESET_RESOURCES 0 # Reset resources in demes on replication? + # 0 = reset both demes + # 1 = reset target deme + # 2 = deme resources remain unchanged +DEMES_REPLICATE_SIZE 1 # Number of identical organisms to create or copy from the + # source deme to the target deme +LOG_DEMES_REPLICATE 0 # Log deme replications? +DEMES_REPLICATE_LOG_START 0 # Update at which to start logging deme replications +DEMES_PROB_ORG_TRANSFER 0.0 # Probablity of an organism being transferred from the + # source deme to the target deme +DEMES_ORGANISM_SELECTION 0 # How should organisms be selected for transfer from + # source to target during deme replication? + # 0 = random with replacement + # 1 = sequential +DEMES_ORGANISM_PLACEMENT 0 # How should organisms be placed during deme replication. + # 0 = cell-array middle + # 1 = deme center + # 2 = random placement + # 3 = sequential +DEMES_ORGANISM_FACING 0 # Which direction should organisms face after deme replication. + # 0 = unchanged + # 1 = northwest. + # 2 = random. +DEMES_MAX_AGE 500 # The maximum age of a deme (in updates) to be + # used for age-based replication +DEMES_MAX_BIRTHS 100 # Max number of births that can occur within a deme; + # used with birth-count replication +DEMES_MIM_EVENTS_KILLED_RATIO 0.7 # Minimum ratio of events killed required for event period to be a success. +DEMES_MIM_SUCCESSFUL_EVENT_PERIODS 1 # Minimum number of consecutive event periods that must be a success. +GERMLINE_COPY_MUT 0.0075 # Prob. of copy mutations during germline replication +GERMLINE_INS_MUT 0.05 # Prob. of insertion mutations during germline replication +GERMLINE_DEL_MUT 0.05 # Prob. of deletion mutations during germline replication +DEMES_REPLICATE_CPU_CYCLES 0.0 # Replicate a deme immediately after it has used this many + # cpu cycles per org in deme (0 = OFF). +DEMES_REPLICATE_TIME 0.0 # Number of CPU cycles used by a deme to trigger its replication + # (normalized by number of orgs in deme and organism merit; 0 = OFF). +DEMES_REPLICATE_BIRTHS 0 # Number of offspring produced by a deme to trigger its replication (0 = OFF). +DEMES_REPLICATE_ORGS 0 # Number of organisms in a deme to trigger its replication (0 = OFF). +DEMES_REPLICATION_ONLY_RESETS 0 # Kin selection mode. On replication: + # 0 = Nothing extra + # 1 = reset deme resources + # 2 = reset resources and re-inject organisms +DEMES_MIGRATION_RATE 0.0 # Probability of an offspring being born in a different deme. +DEMES_MIGRATION_METHOD 0 # Which demes can an org land in when it migrates? + # 0 = Any other deme + # 1 = Eight neighboring demes + # 2 = Two adjacent demes in list + # 3 = Proportional based on the number of points +DEMES_NUM_X 0 # Simulated number of demes in X dimension. Used only for migration. +DEMES_SEED_METHOD 0 # Deme seeding method. + # 0 = Maintain old consistency + # 1 = New method using genotypes +DEMES_DIVIDE_METHOD 0 # Deme divide method. Only works with DEMES_SEED_METHOD 1 + # 0 = Replace and target demes + # 1 = Replace target deme, reset source deme to founders + # 2 = Replace target deme, leave source deme unchanged +DEMES_DEFAULT_GERMLINE_PROPENSITY 0.0 # Default germline propensity of organisms in deme. + # For use with DEMES_DIVIDE_METHOD 2. +DEMES_FOUNDER_GERMLINE_PROPENSITY -1.0 # Default germline propensity of founder organisms in deme. + # For use with DEMES_DIVIDE_METHOD 2. + # <0 = OFF +DEMES_PREFER_EMPTY 0 # Give empty demes preference as targets of deme replication? +DEMES_PROTECTION_POINTS 0 # The number of points a deme receives for each suicide. +MIGRATION_RATE 0.0 # Uniform probability of offspring migrating to a new deme. +DEMES_TRACK_SHANNON_INFO 0 # Enable shannon mutual information tracking for demes. + +### REVERSION_GROUP ### +# Mutation Reversion +# Most of these slow down avida a lot, and should be set to 0.0 normally. +REVERT_FATAL 0.0 # Prob of lethal mutations being reverted on birth +REVERT_DETRIMENTAL 0.0 # Prob of harmful (but non-lethal) mutations reverting on birth +REVERT_NEUTRAL 0.0 # Prob of neutral mutations being reverted on birth +REVERT_BENEFICIAL 0.0 # Prob of beneficial mutations being reverted on birth +REVERT_TASKLOSS 0.0 # Prob of mutations that cause task loss (without any gains) being reverted +STERILIZE_FATAL 0.0 # Prob of lethal mutations steralizing an offspring (typically no effect!) +STERILIZE_DETRIMENTAL 0.0 # Prob of harmful (but non-lethal) mutations steralizing an offspring +STERILIZE_NEUTRAL 0.0 # Prob of neutral mutations steralizing an offspring +STERILIZE_BENEFICIAL 0.0 # Prob of beneficial mutations steralizing an offspring +STERILIZE_TASKLOSS 0.0 # Prob of mutations causing task loss steralizing an offspring +STERILIZE_UNSTABLE 0 # Should genotypes that cannot replicate perfectly not be allowed to replicate? +NEUTRAL_MAX 0.0 # Percent benifical change from parent fitness to be considered neutral. +NEUTRAL_MIN 0.0 # Percent deleterious change from parent fitness to be considered neutral. + +### TIME_GROUP ### +# Time Slicing +AVE_TIME_SLICE 30 # Average number of CPU-cycles per org per update +SLICING_METHOD 1 # 0 = CONSTANT: all organisms receive equal number of CPU cycles + # 1 = PROBABILISTIC: CPU cycles distributed randomly, proportional to merit. + # 2 = INTEGRATED: CPU cycles given out deterministicly, proportional to merit + # 3 = DEME_PROBABALISTIC: Demes receive fixed number of CPU cycles, awarded probabalistically to members + # 4 = CROSS_DEME_PROBABALISTIC: Demes receive CPU cycles proportional to living population size, awarded probabalistically to members + # 5 = CONSTANT BURST: all organisms receive equal number of CPU cycles, in SLICING_BURST_SIZE chunks +SLICING_BURST_SIZE 1 # Sets the scheduler burst size for SLICING_METHOD 5. +BASE_MERIT_METHOD 4 # How should merit be initialized? + # 0 = Constant (merit independent of size) + # 1 = Merit proportional to copied size + # 2 = Merit prop. to executed size + # 3 = Merit prop. to full size + # 4 = Merit prop. to min of executed or copied size + # 5 = Merit prop. to sqrt of the minimum size + # 6 = Merit prop. to num times MERIT_BONUS_INST is in genome. +BASE_CONST_MERIT 100 # Base merit valse for BASE_MERIT_METHOD 0 +MERIT_BONUS_INST 0 # Instruction ID to count for BASE_MERIT_METHOD 6 +MERIT_BONUS_EFFECT 0 # Amount of merit earn per instruction for BASE_MERIT_METHOD 6 (-1 = penalty, 0 = no effect) +FITNESS_VALLEY 0 # in BASE_MERIT_METHOD 6, this creates valleys from + # FITNESS_VALLEY_START to FITNESS_VALLEY_STOP + # (0 = off, 1 = on) +FITNESS_VALLEY_START 0 # if FITNESS_VALLEY = 1, orgs with num_key_instructions + # from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP + # get fitness 1 (lowest) +FITNESS_VALLEY_STOP 0 # if FITNESS_VALLEY = 1, orgs with num_key_instructions + # from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP + # get fitness 1 (lowest) +DEFAULT_BONUS 1.0 # Initial bonus before any tasks +MERIT_DEFAULT_BONUS 0 # Instead of inheriting bonus from parent, use this value instead (0 = off) +MERIT_INC_APPLY_IMMEDIATE 1 # Should merit increases (above current) be applied immediately, or delayed until divide? +TASK_REFRACTORY_PERIOD 0.0 # Number of updates after taske until regain full value +FITNESS_METHOD 0 # 0 = default, 1 = sigmoidal, +FITNESS_COEFF_1 1.0 # 1st FITNESS_METHOD parameter +FITNESS_COEFF_2 1.0 # 2nd FITNESS_METHOD parameter +MAX_CPU_THREADS 2 # Maximum number of Threads a CPU can spawn +THREAD_SLICING_METHOD 0 # Formula for allocating CPU cycles across threads in an organism + # (num_threads-1) * THREAD_SLICING_METHOD + 1 + # 0 = One thread executed per time slice. + # 1 = All threads executed each time slice. +NO_CPU_CYCLE_TIME 0 # Don't count each CPU cycle as part of gestation time +MAX_LABEL_EXE_SIZE 1 # Max nops marked as executed when labels are used +PRECALC_PHENOTYPE 0 # 0 = Disabled + # 1 = Assign precalculated merit at birth (unlimited resources only) + # 2 = Assign precalculated gestation time + # 3 = Assign precalculated merit AND gestation time. + # 4 = Assign last instruction counts + # 5 = Assign last instruction counts and merit + # 6 = Assign last instruction counts and gestation time + # 7 = Assign everything currently supported + # Fitness will be evaluated for organism based on these settings. +FASTFORWARD_UPDATES 0 # Fast-forward if the average generation has not changed in this many updates. (0 = off) +FASTFORWARD_NUM_ORGS 0 # Fast-forward if population is equal to this +GENOTYPE_PHENPLAST_CALC 100 # Number of times to test a genotype's + # plasticity during runtime. + +### ALTRUISM_GROUP ### +# Altrusim +MERIT_GIVEN 0.0 # Fraction of merit donated with 'donate' command +MERIT_RECEIVED 0.0 # Multiplier of merit given with 'donate' command +MAX_DONATE_KIN_DIST -1 # Limit on distance of relation for donate; -1=no max +MAX_DONATE_EDIT_DIST -1 # Limit on genetic (edit) distance for donate; -1=no max +MIN_GB_DONATE_THRESHOLD -1 # threshold green beard donates only to orgs above this + # donation attempt threshold; -1=no thresh +DONATE_THRESH_QUANTA 10 # The size of steps between quanta donate thresholds +MAX_DONATES 1000000 # Limit on number of donates organisms are allowed. + +### GENEOLOGY_GROUP ### +# Geneology +THRESHOLD 3 # Number of organisms in a genotype needed for it + # to be considered viable. +TEST_CPU_TIME_MOD 20 # Time allocated in test CPUs (multiple of length) + +### LOG_GROUP ### +# Log Files +LOG_GENOTYPES 0 # 0 = off, 1 = print ALL, 2 = print threshold ONLY. +LOG_THRESHOLD 0 # 0/1 (off/on) toggle to print file. +LOG_LINEAGES 0 # Track lineages over time? + # WARNING: Can slow Avida a lot! +LINEAGE_CREATION_METHOD 0 # Requires LOG_LINEAGES = 1 + # 0 = Manual creation (on inject) + # 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 +TRACE_EXECUTION 0 # Trace the execution of all organisms in the population (WARNING: SLOW!) + +### 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 +NET_LOG_MESSAGES 0 # Whether all messages are logged; 0=false (default), 1=true. + +### ORGANISM_MESSAGING_GROUP ### +# Organism Message-Based Communication +MESSAGE_SEND_BUFFER_SIZE 1 # Size of message send buffer (stores messages that were sent) + # TASKS NOT CHECKED ON 0! + # -1=inf, default=1. +MESSAGE_RECV_BUFFER_SIZE 8 # Size of message receive buffer (stores messages that are received); -1=inf, default=8. +MESSAGE_RECV_BUFFER_BEHAVIOR 0 # Behavior of message receive buffer; 0=drop oldest (default), 1=drop incoming +ACTIVE_MESSAGES_ENABLED 0 # Enable active messages. + # 0 = off + # 2 = message creates parallel thread + +### 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 + +### HOARD_RESOURCE_GROUP ### +# Resource Hoarding Parameters +USE_RESOURCE_BINS 0 # Enable resource bin use. This serves as a guard on most resource hoarding code. +ABSORB_RESOURCE_FRACTION .0025 # Fraction of available environmental resource an organism absorbs. +MULTI_ABSORB_TYPE 0 # What to do if a collect instruction is called on a range of resources. + # 0 = absorb a random resource in the range + # 1 = absorb the first resource in the range + # 2 = absorb the last resource in the range + # 3 = absorb ABSORB_RESOURCE_FRACTION / (# of resources in range) of each resource in the range +MAX_TOTAL_STORED -1 # Maximum total amount of all resources an organism can store. + # <0 = no maximum +USE_STORED_FRACTION 1.0 # The fraction of stored resource to use. +ENV_FRACTION_THRESHOLD 1.0 # The fraction of available environmental resource to compare available stored resource to when deciding whether to use stored resource. +RETURN_STORED_ON_DEATH 1 # Return an organism's stored resources to the world when it dies? +SPLIT_ON_DIVIDE 1 # Split mother cell's resources between two daughter cells on division? +COLLECT_SPECIFIC_RESOURCE 0 # Resource to be collected by the "collect-specific" instruction + +### ANALYZE_GROUP ### +# Analysis Settings +MAX_CONCURRENCY -1 # Maximum number of analyze threads, -1 == use all available. +ANALYZE_OPTION_1 # String variable accessible from analysis scripts +ANALYZE_OPTION_2 # String variable accessible from analysis scripts + +### ENERGY_GROUP ### +# Energy Settings +ENERGY_ENABLED 0 # Enable Energy Model. 0/1 (off/on) +ENERGY_GIVEN_ON_INJECT 0.0 # Energy given to organism upon injection. +ENERGY_GIVEN_AT_BIRTH 0.0 # Energy given to offspring upon birth. +FRAC_PARENT_ENERGY_GIVEN_TO_ORG_AT_BIRTH 0.5 # Fraction of parent's energy given to offspring organism. +FRAC_PARENT_ENERGY_GIVEN_TO_DEME_AT_BIRTH 0.5 # Fraction of parent's energy given to offspring deme. +FRAC_ENERGY_DECAY_AT_ORG_BIRTH 0.0 # Fraction of energy lost due to decay during organism reproduction. +FRAC_ENERGY_DECAY_AT_DEME_BIRTH 0.0 # Fraction of energy lost due to decay during deme reproduction. +NUM_CYCLES_EXC_BEFORE_0_ENERGY 0 # Number of virtual CPU cycles executed before energy is exhausted. +ENERGY_CAP -1.0 # Maximum amount of energy that can be stored in an organism. -1 = no max +APPLY_ENERGY_METHOD 0 # When should rewarded energy be applied to current energy? + # 0 = on divide + # 1 = on completion of task + # 2 = on sleep +FIX_METABOLIC_RATE -1.0 # Fix organism metobolic rate to value. This value is static. Feature disabled by default (value == -1) +FRAC_ENERGY_TRANSFER 0.0 # Fraction of replaced organism's energy take by new resident +LOG_SLEEP_TIMES 0 # Log sleep start and end times. 0/1 (off/on) + # WARNING: may use lots of memory. +FRAC_ENERGY_RELINQUISH 1.0 # Fraction of organisms energy to relinquish +ENERGY_PASSED_ON_DEME_REPLICATION_METHOD 0 # Who get energy passed from a parent deme + # 0 = Energy divided among organisms injected to offspring deme + # 1 = Energy divided among cells in offspring deme +INHERIT_EXE_RATE 0 # Inherit energy rate from parent? 0=no 1=yes +ATTACK_DECAY_RATE 0.0 # Percent of cell's energy decayed by attack +ENERGY_THRESH_LOW .33 # Threshold percent below which energy level is considered low. Requires ENERGY_CAP. +ENERGY_THRESH_HIGH .75 # Threshold percent above which energy level is considered high. Requires ENERGY_CAP. +ENERGY_COMPARISON_EPSILON 0.0 # Percent difference (relative to executing organism) required in energy level comparisons +ENERGY_REQUEST_RADIUS 1 # Radius of broadcast energy request messages. + +### ENERGY_SHARING_GROUP ### +# Energy Sharing Settings +ENERGY_SHARING_METHOD 0 # Method for sharing energy. 0=receiver must actively receive/request, 1=energy pushed on receiver +ENERGY_SHARING_PCT 0.0 # Percent of energy to share +ENERGY_SHARING_INCREMENT 0.01 # Amount to change percent energy shared +RESOURCE_SHARING_LOSS 0.0 # Fraction of shared resource lost in transfer +ENERGY_SHARING_UPDATE_METABOLIC 0 # 0/1 (off/on) - Whether to update an organism's metabolic rate on donate or reception/application of energy +LOG_ENERGY_SHARING 0 # Whether or not to log energy shares. 0/1 (off/on) + +### SECOND_PASS_GROUP ### +# Tracking metrics known after the running experiment previously +TRACK_CCLADES 0 # Enable tracking of coalescence clades +TRACK_CCLADES_IDS coalescence.ids # File storing coalescence IDs + +### GX_GROUP ### +# Gene Expression CPU Settings +MAX_PROGRAMIDS 16 # Maximum number of programids an organism can create. +MAX_PROGRAMID_AGE 2000 # Max number of CPU cycles a programid executes before it is removed. +IMPLICIT_GENE_EXPRESSION 0 # Create executable programids from the genome without explicit allocation and copying? +IMPLICIT_BG_PROMOTER_RATE 0.0 # Relative rate of non-promoter sites creating programids. +IMPLICIT_TURNOVER_RATE 0.0 # Number of programids recycled per CPU cycle. 0 = OFF +IMPLICIT_MAX_PROGRAMID_LENGTH 0 # Creation of an executable programid terminates after this many instructions. 0 = disabled + +### PROMOTER_GROUP ### +# Promoters +PROMOTERS_ENABLED 0 # Use the promoter/terminator execution scheme. + # Certain instructions must also be included. +PROMOTER_INST_MAX 0 # Maximum number of instructions to execute before terminating. 0 = off +PROMOTER_PROCESSIVITY 1.0 # Chance of not terminating after each cpu cycle. +PROMOTER_PROCESSIVITY_INST 1.0 # Chance of not terminating after each instruction. +PROMOTER_TO_REGISTER 0 # Place a promoter's base bit code in register BX when starting execution from it? +TERMINATION_RESETS 0 # Does termination reset the thread's state? +NO_ACTIVE_PROMOTER_EFFECT 0 # What happens when there are no active promoters? + # 0 = Start execution at the beginning of the genome. + # 1 = Kill the organism. + # 2 = Stop the organism from executing any further instructions. +PROMOTER_CODE_SIZE 24 # Size of a promoter code in bits. (Maximum value is 32) +PROMOTER_EXE_LENGTH 3 # Length of promoter windows used to determine execution. +PROMOTER_EXE_THRESHOLD 2 # Minimum number of bits that must be set in a promoter window to allow execution. +INST_CODE_LENGTH 3 # Instruction binary code length (number of bits) +INST_CODE_DEFAULT_TYPE 0 # Default value of instruction binary code value. + # 0 = All zeros + # 1 = Based off the instruction number +CONSTITUTIVE_REGULATION 0 # Sense a new regulation value before each CPU cycle? + +### COLORS_GROUP ### +# Output colors for when data files are printed in HTML mode. +# There are two sets of these; the first are for lineages, +# and the second are for mutation tests. +COLOR_DIFF CCCCFF # Color to flag stat that has changed since parent. +COLOR_SAME FFFFFF # Color to flag stat that has NOT changed since parent. +COLOR_NEG2 FF0000 # Color to flag stat that is significantly worse than parent. +COLOR_NEG1 FFCCCC # Color to flag stat that is minorly worse than parent. +COLOR_POS1 CCFFCC # Color to flag stat that is minorly better than parent. +COLOR_POS2 00FF00 # Color to flag stat that is significantly better than parent. +COLOR_MUT_POS 00FF00 # Color to flag stat that has changed since parent. +COLOR_MUT_NEUT FFFFFF # Color to flag stat that has changed since parent. +COLOR_MUT_NEG FFFF00 # Color to flag stat that has changed since parent. +COLOR_MUT_LETHAL FF0000 # Color to flag stat that has changed since parent. + +### MOVEMENT_GROUP ### +# Movement Features Settings +MOVEMENT_COLLISIONS_LETHAL 0 # Are collisions during movement lethal? +MOVEMENT_COLLISIONS_SELECTION_TYPE 0 # 0 = 50% chance + # 1 = binned vitality based +VITALITY_BIN_EXTREMES 1.0 # vitality multiplier for extremes (> 1 stddev from the mean population age) +VITALITY_BIN_CENTER 5.0 # vitality multiplier for center bin (with 1 stddev of the mean population age) + +### PHEROMONE_GROUP ### +# Pheromone Settings +PHEROMONE_ENABLED 0 # Enable pheromone usage. 0/1 (off/on) +PHEROMONE_AMOUNT 1.0 # Amount of pheromone to add per drop +PHEROMONE_DROP_MODE 0 # Where to drop pheromone + # 0 = Half amount at src, half at dest + # 1 = All at source + # 2 = All at dest +EXPLOIT_EXPLORE_PROB 0.00 # Probability of random exploration + # instead of pheromone trail following +LOG_PHEROMONE 0 # Log pheromone drops. 0/1 (off/on) +PHEROMONE_LOG_START 0 # Update at which to start logging pheromone drops +EXPLOIT_LOG_START 0 # Update at which to start logging exploit moves +EXPLORE_LOG_START 0 # Update at which to start logging explore moves +MOVETARGET_LOG_START 0 # Update at which to start logging movetarget moves +LOG_INJECT 0 # Log injection of organisms. 0/1 (off/on) +INJECT_LOG_START 0 # Update at which to start logging injection of + # organisms + +### SYNCHRONIZATION_GROUP ### +# Synchronization settings +SYNC_FITNESS_WINDOW 100 # Number of updates over which to calculate fitness (default=100). +SYNC_FLASH_LOSSRATE 0.0 # P() to lose a flash send (0.0==off). +SYNC_TEST_FLASH_ARRIVAL -1 # CPU cycle at which an organism will receive a flash (off=-1, default=-1, analyze mode only.) + +### CONSENSUS_GROUP ### +# Consensus settings +CONSENSUS_HOLD_TIME 1 # Number of updates that consensus must be held for. + +### REPUTATION_GROUP ### +# Reputation Settings +RAW_MATERIAL_AMOUNT 100 # Number of raw materials an organism starts with +AUTO_REPUTATION 0 # Is an organism's reputation automatically computed based on its donations + # 0=no + # 1=increment for each donation + standing + # 2=+1 for donations given -1 for donations received + # 3=1 for donors -1 for recivers who have not donated + # 4=+1 for donors + # 5=+1 for donors during task check +ALT_BENEFIT 1.00 # Number multiplied by the number of raw materials received from another organism to compute reward +ALT_COST 1.00 # Number multiplied by the number of your raw materials +ROTATE_ON_DONATE 0 # Rotate an organism to face its donor 0/1 (off/on) +REPUTATION_REWARD 0 # Reward an organism for having a good reputation +DONATION_FAILURE_PERCENT 0 # Percentage of times that a donation fails +RANDOMIZE_RAW_MATERIAL_AMOUNT 0 # Should all the organisms receive the same amount 0/1 (off/on) +DONATION_RESTRICTIONS 0 # 0=none + # 1=inter-species only + # 2=different tag only +INHERIT_REPUTATION 0 # 0=reputations are not inherited + # 1=reputations are inherited + # 2=tags are inherited +SPECIALISTS 0 # 0=generalists allowed + # 1=only specialists +STRING_AMOUNT_CAP -1 # -1=no cap on string amounts + # #=CAP +MATCH_ALREADY_PRODUCED 0 # 0=off + # 1=on + +### GROUP_FORMATION_GROUP ### +# Group Formation Settings +USE_FORM_GROUPS 0 # Enable organisms to form groups. 0=off, + # 1=on no restrict, + # 2=on restrict to defined +DEFAULT_GROUP -1 # Default group to assign to organisms not asserting a group membership (-1 indicates disabled) + +### DEME_NETWORK_GROUP ### +# Deme network settings +DEME_NETWORK_TYPE 0 # 0=topology, structure of network determines fitness. +DEME_NETWORK_REQUIRES_CONNECTEDNESS 1 # Whether the deme's network must be connected before an actual fitness is calculated. +DEME_NETWORK_TOPOLOGY_FITNESS 0 # Network measure used to determine fitness; see cDemeTopologyNetwork.h. +DEME_NETWORK_LINK_DECAY 0 # Number of updates after which a link decays; 0=no decay (default). +DEME_NETWORK_REMOVE_NODE_ON_DEATH 0 # Whether death of an organism in + # the deme removes its links; + # 0=no (default); + # 1=yes. + +### HGT_GROUP ### +# Horizontal gene transfer settings +ENABLE_HGT 0 # Whether HGT is enabled; 0=false (default), + # 1=true. +HGT_SOURCE 0 # Source of HGT fragments; 0=dead organisms (default), + # 1=parent. +HGT_FRAGMENT_SELECTION 0 # Method used to select fragments for HGT mutation; 0=random (default), + # 1=trimmed selection + # 2=random placement. +HGT_FRAGMENT_SIZE_MEAN 10 # Mean size of fragments (default=10). +HGT_FRAGMENT_SIZE_VARIANCE 2 # Variance of fragments (default=2). +HGT_MAX_FRAGMENTS_PER_CELL 100 # Max. allowed number of fragments per cell (default=100). +HGT_DIFFUSION_METHOD 0 # Method to use for diffusion of genome fragments; 0=none (default). +HGT_COMPETENCE_P 0.0 # Probability that an HGT 'natural competence' mutation will occur on divide (default=0.0). +HGT_INSERTION_MUT_P 0.0 # Probability that an HGT mutation will result in an insertion (default=0.0). +HGT_CONJUGATION_METHOD 0 # Method used to select the receiver and/or donor of an HGT conjugation; + # 0=random from neighborhood (default); + # 1=faced. +HGT_CONJUGATION_P 0.0 # Probability that an HGT conjugation mutation will occur on divide (default=0.0). +HGT_FRAGMENT_XFORM 0 # Transformation to apply to each fragment prior to incorporation into offspring's genome; 0=none (default), + # 1=random shuffle, + # 2=replace with random instructions. + +### INST_RES_GROUP ### +# Resource-Dependent Instructions Settings +INST_RES # Resource upon which the execution of certain instruction depends +INST_RES_FLOOR 0.0 # Assumed lower level of resource in environment. Used for probability dist. +INST_RES_CEIL 0.0 # Assumed upper level of resource in environment. Used for probability dist. + +### OPINION_GROUP ### +# Organism opinion settings +OPINION_BUFFER_SIZE 1 # Size of the opinion buffer (stores opinions set over the organism's lifetime); -1=inf, default=1, cannot be 0. + +### ALARM_GROUP ### +# Alarm Settings +BCAST_HOPS 1 # Number of hops to broadcast an alarm +ALARM_SELF 0 # Does sending an alarm move sender IP to alarm label? + # 0=no + # 1=yes + +### DIVISION_OF_LABOR_GROUP ### +# Division of Labor settings +AGE_POLY_TRACKING 0 # Print data for an age-task histogram +REACTION_THRESH 0 # The number of times the deme must perform each reaction in order to replicate +TASK_SWITCH_PENALTY 0 # Cost of task switching in cycles +TASK_SWITCH_PENALTY_TYPE 0 # Type of task switch cost: (0) none (1) learning, (2) retooling or context, (3) centrifuge +RES_FOR_DEME_REP 0 # The amount of resources that must be consumed prior to automatic deme replication + +### DEPRECATED_GROUP ### +# DEPRECATED (New functionality listed in comments) +ANALYZE_MODE 0 # 0 = Disabled + # 1 = Enabled + # 2 = Interactive + # DEPRECATED: use command line options -a[nalyze] or -i[nteractive]) +REPRO_METHOD 1 # Replace existing organism: 1=yes + # DEPRECATED: Use BIRTH_METHOD 3 instead. +LEGACY_GRID_LOCAL_SELECTION 0 # Enable legacy grid local mate selection. + # DEPRECATED: Birth chameber now uses population structure) +HARDWARE_TYPE 2 # 0 = Default, heads-based CPUs + # 1 = New SMT CPUs + # 2 = Transitional SMT + # 3 = Experimental CPU + # 4 = Gene Expression CPU +INST_SET - # Instruction set file ('-' = use default for hardware type) +INST_SET_LOAD_LEGACY 0 # Load legacy format instruction set file format + +### DEVEL_GROUP ### +# IN DEVELOPMENT (May not function correctly) +WORLD_Z 1 # Depth of the Avida world + +#include INST_SET=instset-transsmt.cfg diff --git a/avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/detailgermlines-500.sgerm b/avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/detailgermlines-500.sgerm new file mode 100644 index 000000000..ad13246a9 --- /dev/null +++ b/avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/detailgermlines-500.sgerm @@ -0,0 +1,14 @@ +#filetype germline_data +#format deme_id hw_type inst_set sequence deme_birth_count deme_parasite_memory_score +# Mode 1 Germline Save +# Tue Aug 29 01:14:50 2023 +# 1: Deme ID +# 2: Hardware Type ID +# 3: Inst Set Name +# 4: Genome Sequence +# 5: Deme Birth Count +# 6: Deme Parasite Memory Score + +0 2 transsmt ycdBCiEdimFjfCDaknmsAjempczypqvcrGxab 42 24.8 +1 2 transsmt ycdBCiEdimFjfCDaknmsAjemEEcgccgssmhEEcsdseDcAcBcggclEEcDEgcvrsAmlzessjhcdcggkhamtmciEEvjDdhjidzoAyndvmEdbgznjDmcjohohooayaxdyalbcekzebjcogEtjgjacblDvubADnslyyocgsAcjCbobffhmvnnAdbDfkmxcagBFfndytqhutjdzfdjsnflfoqCwcvhsjcvbmlsqcjrgyiDivvnFhrArcsmifbClvluDqmCBbtiDhiEfACcarpEczijdljujACbfzuDEFyaqqekizDosbbzjgmpczypqvcrGxab 33 24.8 +1 2 transsmt ycdBCiEdimFjfCDaknmsAjemEEcgccgssmhEEcsdseDcAcBcggclEEcDEgcvrsAmlzessjhcdcggkhamtmciEEvjDdhjidzoAyndvmEdbgznjDmcjohohooayaxdyalbcekzebjcogEtjgjacblDvubADnslyyocgsAcjCbobffhmvnnAdbDfkmxcagBFfndytqhutjdzfdjsnflfoqCwcvhsjcvbmlsqcjrgyiDivvnFhrArcsmifbClvluDqmCBbtiDhiEfACcarpEczijdljujACbfzuDEFyaqqekizDosbbzjgmpczypqvcrGxab 33 24.8 diff --git a/avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/environment.cfg b/avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/environment.cfg new file mode 100644 index 000000000..a68e81b37 --- /dev/null +++ b/avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/environment.cfg @@ -0,0 +1,9 @@ +REACTION NOT not process:value=1.0:type=pow requisite:max_count=1 +REACTION NAND nand process:value=1.0:type=pow requisite:max_count=1 +REACTION AND and process:value=2.0:type=pow requisite:max_count=1 +REACTION ORN orn process:value=2.0:type=pow requisite:max_count=1 +REACTION OR or process:value=3.0:type=pow requisite:max_count=1 +REACTION ANDN andn process:value=3.0:type=pow requisite:max_count=1 +REACTION NOR nor process:value=4.0:type=pow requisite:max_count=1 +REACTION XOR xor process:value=4.0:type=pow requisite:max_count=1 +REACTION EQU equ process:value=5.0:type=pow requisite:max_count=1 diff --git a/avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/events.cfg b/avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/events.cfg new file mode 100644 index 000000000..7aaf4f428 --- /dev/null +++ b/avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/events.cfg @@ -0,0 +1,9 @@ +u begin InjectAll filename=evolved-not.org +u begin LoadGermlines detailgermlines-500.sgerm +u begin LoadBirthCounts detailgermlines-500.sgerm +u begin SavePopulation +u begin SaveGermlines filename=evolved.sgerm:birthcounts=1 +u 2 ReplicateDemesHighestBirthCount 1.0 1 +u 2 SaveGermlines filename=evolved.sgerm:birthcounts=1 +u 2 SavePopulation +u 3 Exit diff --git a/avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/evolved-not.org b/avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/evolved-not.org new file mode 100644 index 000000000..9680c6f66 --- /dev/null +++ b/avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/evolved-not.org @@ -0,0 +1,321 @@ +Search +Nop-C +Nop-D +Push-Prev +SetMemory +Nop-A +Nop-D +Nop-D +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 +IO +IO +IO +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Val-Nand +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +IO +Nop-C +Nop-C +Nop-C +Nop-C +Val-Copy +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-D +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +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 +Push-Prev +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +If-Greater +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +Nop-C +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-Erase +Head-Move +Nop-A +Nop-B + diff --git a/avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/instset-transsmt.cfg b/avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/instset-transsmt.cfg new file mode 100644 index 000000000..aa2a05df2 --- /dev/null +++ b/avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/instset-transsmt.cfg @@ -0,0 +1,35 @@ +INSTSET transsmt:hw_type=2 + +INST Nop-A +INST Nop-B +INST Nop-C +INST Nop-D +INST Val-Shift-R +INST Val-Shift-L +INST Val-Nand +INST Val-Add +INST Val-Sub +INST Val-Mult +INST Val-Div +INST Val-Mod +INST Val-Inc +INST Val-Dec +INST SetMemory +INST Inst-Read +INST Inst-Write +INST If-Equal +INST If-Not-Equal +INST If-Less +INST If-Greater +INST Head-Push +INST Head-Pop +INST Head-Move +INST Search +INST Push-Next +INST Push-Prev +INST Push-Comp +INST Val-Delete +INST Val-Copy +INST IO +INST Inject +INST Divide-Erase diff --git a/avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/parasite-smt.org b/avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/parasite-smt.org new file mode 100644 index 000000000..3cdf90d52 --- /dev/null +++ b/avida-core/tests/demes_ReplicateDemesHighestBirthCount/config/parasite-smt.org @@ -0,0 +1,80 @@ +Search +Nop-C +Nop-D +Push-Prev +IO +Nop-C +If-Equal +Val-Mod +Val-Shift-R +Val-Dec +Nop-B +Val-Sub +IO +If-Equal +Val-Dec +IO +Nop-C +IO +Val-Nand +Nop-C +If-Less +If-Greater +Nop-C +Nop-C +Head-Pop +Head-Pop +Nop-C +Val-Nand +IO +SetMemory +Nop-C +Nop-A +IO +Nop-C +Head-Move +Nop-C +Head-Move +Nop-D +Val-Inc +Search +IO +Val-Shift-L +Val-Sub +Val-Delete +Val-Inc +Val-Delete +IO +Head-Push +Nop-A +Val-Dec +Head-Push +Nop-B +Val-Shift-R +Nop-C +Head-Push +Val-Inc +If-Not-Equal +Nop-B +IO +Nop-C +Nop-A +Nop-C +Nop-C +Val-Dec +Nop-C +Nop-D +SetMemory +Search +Inst-Read +Inst-Write +Head-Push +Nop-C +If-Equal +Inject +Head-Move +Inst-Read +Inst-Read +Head-Move +Nop-A +Nop-B diff --git a/avida-core/tests/demes_ReplicateDemesHighestBirthCount/expected/.gitignore b/avida-core/tests/demes_ReplicateDemesHighestBirthCount/expected/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/avida-core/tests/demes_ReplicateDemesHighestBirthCount/expected/data/detail--1.spop b/avida-core/tests/demes_ReplicateDemesHighestBirthCount/expected/data/detail--1.spop new file mode 100644 index 000000000..b54ff9af9 --- /dev/null +++ b/avida-core/tests/demes_ReplicateDemesHighestBirthCount/expected/data/detail--1.spop @@ -0,0 +1,26 @@ +#filetype genotype_data +#format id src src_args parents num_units total_units length merit gest_time fitness gen_born update_born update_deactivated depth hw_type inst_set sequence cells gest_offset lineage +# Structured Population Save +# Wed Nov 15 02:11:54 2023 +# 1: ID +# 2: Source +# 3: Source Args +# 4: Parent ID(s) +# 5: Number of currently living organisms +# 6: Total number of organisms that ever existed +# 7: Genome Length +# 8: Average Merit +# 9: Average Gestation Time +# 10: Average Fitness +# 11: Generation Born +# 12: Update Born +# 13: Update Deactivated +# 14: Phylogenetic Depth +# 15: Hardware Type ID +# 16: Inst Set Name +# 17: Genome Sequence +# 18: Occupied Cell IDs +# 19: Gestation (CPU) Cycle Offsets +# 20: Lineage Label + +1 div:ext (none) (none) 300 300 320 0 0 0 0 -1 -1 0 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/avida-core/tests/demes_ReplicateDemesHighestBirthCount/expected/data/detail-2.spop b/avida-core/tests/demes_ReplicateDemesHighestBirthCount/expected/data/detail-2.spop new file mode 100644 index 000000000..da6f99003 --- /dev/null +++ b/avida-core/tests/demes_ReplicateDemesHighestBirthCount/expected/data/detail-2.spop @@ -0,0 +1,27 @@ +#filetype genotype_data +#format id src src_args parents num_units total_units length merit gest_time fitness gen_born update_born update_deactivated depth hw_type inst_set sequence cells gest_offset lineage +# Structured Population Save +# Wed Nov 15 02:11:54 2023 +# 1: ID +# 2: Source +# 3: Source Args +# 4: Parent ID(s) +# 5: Number of currently living organisms +# 6: Total number of organisms that ever existed +# 7: Genome Length +# 8: Average Merit +# 9: Average Gestation Time +# 10: Average Fitness +# 11: Generation Born +# 12: Update Born +# 13: Update Deactivated +# 14: Phylogenetic Depth +# 15: Hardware Type ID +# 16: Inst Set Name +# 17: Genome Sequence +# 18: Occupied Cell IDs +# 19: Gestation (CPU) Cycle Offsets +# 20: Lineage Label + +1 div:ext (none) (none) 100 300 320 0 0 0 0 -1 -1 0 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2 dup:int germline (none) 2 2 37 0 0 0 0 3 -1 0 2 transsmt ycdBCiEdimFjfCDaknmsAjempczypqvcrGxab 50,250 0,0 0,0 diff --git a/avida-core/tests/demes_ReplicateDemesHighestBirthCount/expected/data/evolved.sgerm--1.sgerm b/avida-core/tests/demes_ReplicateDemesHighestBirthCount/expected/data/evolved.sgerm--1.sgerm new file mode 100644 index 000000000..830e15cb7 --- /dev/null +++ b/avida-core/tests/demes_ReplicateDemesHighestBirthCount/expected/data/evolved.sgerm--1.sgerm @@ -0,0 +1,13 @@ +#filetype germline_data +#format deme_id hw_type inst_set sequence deme_birth_count +# Mode 1 Germline Save +# Wed Nov 15 02:11:54 2023 +# 1: Deme ID +# 2: Hardware Type ID +# 3: Inst Set Name +# 4: Genome Sequence +# 5: Deme Birth Count + +0 2 transsmt ycdBCiEdimFjfCDaknmsAjempczypqvcrGxab 42 +1 2 transsmt ycdBCiEdimFjfCDaknmsAjemEEcgccgssmhEEcsdseDcAcBcggclEEcDEgcvrsAmlzessjhcdcggkhamtmciEEvjDdhjidzoAyndvmEdbgznjDmcjohohooayaxdyalbcekzebjcogEtjgjacblDvubADnslyyocgsAcjCbobffhmvnnAdbDfkmxcagBFfndytqhutjdzfdjsnflfoqCwcvhsjcvbmlsqcjrgyiDivvnFhrArcsmifbClvluDqmCBbtiDhiEfACcarpEczijdljujACbfzuDEFyaqqekizDosbbzjgmpczypqvcrGxab 33 +2 2 transsmt ycdAoaddxccccccccccccccEEEcccccccccccccccccccccccccccccccccccccccccccccccccccgccccccccccccccccccccccccccccccccccccccccEccccDcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccxcccccccccccccccccccccccccccccccccccccccccccccccccAcccccccccccccccccccucccccccccccccccccccccypqvcrGxab 0 diff --git a/avida-core/tests/demes_ReplicateDemesHighestBirthCount/expected/data/evolved.sgerm-2.sgerm b/avida-core/tests/demes_ReplicateDemesHighestBirthCount/expected/data/evolved.sgerm-2.sgerm new file mode 100644 index 000000000..474a1a835 --- /dev/null +++ b/avida-core/tests/demes_ReplicateDemesHighestBirthCount/expected/data/evolved.sgerm-2.sgerm @@ -0,0 +1,13 @@ +#filetype germline_data +#format deme_id hw_type inst_set sequence deme_birth_count +# Mode 1 Germline Save +# Wed Nov 15 02:11:54 2023 +# 1: Deme ID +# 2: Hardware Type ID +# 3: Inst Set Name +# 4: Genome Sequence +# 5: Deme Birth Count + +0 2 transsmt ycdBCiEdimFjfCDaknmsAjempczypqvcrGxab 0 +1 2 transsmt ycdBCiEdimFjfCDaknmsAjemEEcgccgssmhEEcsdseDcAcBcggclEEcDEgcvrsAmlzessjhcdcggkhamtmciEEvjDdhjidzoAyndvmEdbgznjDmcjohohooayaxdyalbcekzebjcogEtjgjacblDvubADnslyyocgsAcjCbobffhmvnnAdbDfkmxcagBFfndytqhutjdzfdjsnflfoqCwcvhsjcvbmlsqcjrgyiDivvnFhrArcsmifbClvluDqmCBbtiDhiEfACcarpEczijdljujACbfzuDEFyaqqekizDosbbzjgmpczypqvcrGxab 33 +2 2 transsmt ycdBCiEdimFjfCDaknmsAjempczypqvcrGxab 0 diff --git a/avida-core/tests/demes_ReplicateDemesHighestBirthCount/test_list b/avida-core/tests/demes_ReplicateDemesHighestBirthCount/test_list new file mode 100644 index 000000000..2f7282cca --- /dev/null +++ b/avida-core/tests/demes_ReplicateDemesHighestBirthCount/test_list @@ -0,0 +1,36 @@ +;--- Begin Test Configuration File (test_list) --- +[main] +; Command line arguments to pass to the application +args = -s 100 +app = %(default_app)s +nonzeroexit = disallow ; Exit code handling (disallow, allow, or require) + ; disallow - treat non-zero exit codes as failures + ; allow - all exit codes are acceptable + ; require - treat zero exit codes as failures, useful + ; for creating tests for app error checking +createdby = Dave Knoester ; Who created the test +email = dk@cse.msu.edu ; Email address for the test's creator + +[consistency] +enabled = yes ; Is this test a consistency test? +long = no ; Is this test a long test? + +[performance] +enabled = no ; Is this test a performance test? +long = no ; Is this test a long test? + +; The following variables can be used in constructing setting values by calling +; them with %(variable_name)s. For example see 'app' above. +; +; app +; builddir +; cpus +; mode +; perf_repeat +; perf_user_margin +; perf_wall_margin +; svn +; svnmetadir +; svnversion +; testdir +;--- End Test Configuration File ---