Skip to content

Commit

Permalink
Merge branch 'master' into multicell-parasite
Browse files Browse the repository at this point in the history
  • Loading branch information
mmore500 committed Sep 6, 2023
2 parents e994448 + 9af51d2 commit 1074c32
Show file tree
Hide file tree
Showing 12 changed files with 26,610 additions and 11,377 deletions.
23,006 changes: 11,629 additions & 11,377 deletions avida-core/tests/demes_loadgermlines_systematics/expected/data/detail-5.spop

Large diffs are not rendered by default.

212 changes: 212 additions & 0 deletions avida-core/tests/loadpopulation_divdupbug_regression/config/avida.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,212 @@
# Let's output a bit about the threads and parasites to stdout
VERBOSITY 3
# We use a bigger world than default
WORLD_X 25
WORLD_Y 1000
NUM_DEMES 40
RANDOM_SEED 353548561



# DEME CONFIGURATION
#------------------------------------------------------------------------------

# Deme seeding method.
# 0 = Maintain old consistency
# 1 = New method using genotypes
DEMES_SEED_METHOD 0 # this doesn't matter for DEMES_USE_GERMLINE 1

# Number of organisms in a deme to trigger its replication (0 = OFF).
DEMES_REPLICATE_ORGS 625

# 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

# divide hosts into separate subpopulations of five deme slots
DEMES_PARTITION_INTERVAL 10

# 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 4 # necessary for parasite migration

# Probability of a parasite migrating to a different deme
# NOTE: only works with DEMES_MIGRATION_METHOD 4
DEMES_PARASITE_MIGRATION_RATE 0.002

# Probability of an offspring being born in a different deme.
DEMES_MIGRATION_RATE 0.0

MIGRATION_FILE migration.mat

# 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
#------------------------------------------------------------------------------

# should be redundant with disabling indel mutations, but
# parasites are somehow figuring out how to shrink anyways
# (likely due to bug in Avida :/)
# note: hosts have a larger genome size of 240 :)
MIN_GENOME_SIZE 80

# 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.005625
# 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 0.0075
# 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

GENOME_SIZE_RECOVERY 3 # sterilize too-small or too-large genomes


# PARASITE CONFIGURATION
#------------------------------------------------------------------------------

# Don't reset host thread upon infection
# 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_METHOD 1

# 0: Infection always succeeds.
# 1: Infection succeeds if parasite matches at least one host task
# 2: Infection succeeds if parasite does NOT match at least one task
# 3: Parasite tasks must match host tasks exactly (Matching Alleles)
INFECTION_MECHANISM 1

# If set to 1, at least one reaction is required for a successful divide
REQUIRE_SINGLE_REACTION 1

# Infection causes host steralization and takes all cpu cycles
# (setting this to 1 will override inject_virulence)
INJECT_IS_VIRULENT 0

# 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.
# Note that this should be set to a default even if virulence is evolving.
PARASITE_VIRULENCE 0.85

# Maximum number of Threads a CPU can spawn
MAX_CPU_THREADS 2

# Should inject instruction be a no-op for non-parasites?
# Prevents host-generated pseudo-parasites. 0 for no, 1 for yes.
TRANSSMT_DISABLE_NONPARASITE_INJECT 1

#Parasites use the TransSMT simulated hardware, which is setup in this weird way
#include INST_SET=instset-transsmt.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
RESOURCE resECHO:inflow=125:outflow=0.10
# disable host task rewards to avoid weirdness due to having "fast" and
# "slow" hosts at the same time

REACTION NAND nand process:resource=resECHO:value=0.0:type=add:frac=1.0:min=0:max=1: requisite:reaction_max_count=1
REACTION NOT not process:resource=resECHO:value=0.0:type=add:frac=1.0:min=0:max=1: requisite:reaction_max_count=1
REACTION ORN orn process:resource=resECHO:value=0.0:type=add:frac=1.0:min=0:max=1: requisite:reaction_max_count=1
REACTION LOG3BO logic_3BO process:resource=resECHO:value=0.0:type=add:frac=1.0:min=0:max=1: requisite:reaction_max_count=1
REACTION AND and process:resource=resECHO:value=0.0:type=add:frac=1.0:min=0:max=1: requisite:reaction_max_count=1
REACTION LOG3CI logic_3CI process:resource=resECHO:value=0.0:type=add:frac=1.0:min=0:max=1: requisite:reaction_max_count=1
REACTION ANDN andn process:resource=resECHO:value=0.0:type=add:frac=1.0:min=0:max=1: requisite:reaction_max_count=1
REACTION LOG3BZ logic_3BZ process:resource=resECHO:value=0.0:type=add:frac=1.0:min=0:max=1: requisite:reaction_max_count=1
REACTION LOG3AG logic_3AG process:resource=resECHO:value=0.0:type=add:frac=1.0:min=0:max=1: requisite:reaction_max_count=1
REACTION OR or process:resource=resECHO:value=0.0:type=add:frac=1.0:min=0:max=1: requisite:reaction_max_count=1
REACTION LOG3CP logic_3CP process:resource=resECHO:value=0.0:type=add:frac=1.0:min=0:max=1: requisite:reaction_max_count=1
REACTION LOG3BY logic_3BY process:resource=resECHO:value=0.0:type=add:frac=1.0:min=0:max=1: requisite:reaction_max_count=1
REACTION NOR nor process:resource=resECHO:value=0.0:type=add:frac=1.0:min=0:max=1: requisite:reaction_max_count=1
REACTION LOG3BS logic_3BS process:resource=resECHO:value=0.0:type=add:frac=1.0:min=0:max=1: requisite:reaction_max_count=1
REACTION LOG3BA logic_3BA process:resource=resECHO:value=0.0:type=add:frac=1.0:min=0:max=1: requisite:reaction_max_count=1
REACTION LOG3CJ logic_3CJ process:resource=resECHO:value=0.0:type=add:frac=1.0:min=0:max=1: requisite:reaction_max_count=1
REACTION LOG3AH logic_3AH process:resource=resECHO:value=0.0:type=add:frac=1.0:min=0:max=1: requisite:reaction_max_count=1
REACTION LOG3AQ logic_3AQ process:resource=resECHO:value=0.0:type=add:frac=1.0:min=0:max=1: requisite:reaction_max_count=1
REACTION LOG3CN logic_3CN process:resource=resECHO:value=0.0:type=add:frac=1.0:min=0:max=1: requisite:reaction_max_count=1
REACTION LOG3CB logic_3CB process:resource=resECHO:value=0.0:type=add:frac=1.0:min=0:max=1: requisite:reaction_max_count=1
REACTION LOG3AX logic_3AX process:resource=resECHO:value=0.0:type=add:frac=1.0:min=0:max=1: requisite:reaction_max_count=1
REACTION LOG3AR logic_3AR process:resource=resECHO:value=0.0:type=add:frac=1.0:min=0:max=1: requisite:reaction_max_count=1
REACTION LOG3AO logic_3AO process:resource=resECHO:value=0.0:type=add:frac=1.0:min=0:max=1: requisite:reaction_max_count=1
REACTION LOG3CH logic_3CH process:resource=resECHO:value=0.0:type=add:frac=1.0:min=0:max=1: requisite:reaction_max_count=1
REACTION LOG3CC logic_3CC process:resource=resECHO:value=0.0:type=add:frac=1.0:min=0:max=1: requisite:reaction_max_count=1
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
##############################################################################
#
# This is the setup file for the events system. From here, you can
# configure any actions that you want to have happen during the course of
# an experiment, including setting the times for data collection.
#
# basic syntax: [trigger] [start:interval:stop] [action/event] [arguments...]
#
# This file is currently setup to record key information every 100 updates.
#
# For information on how to use this file, see: doc/events.html
# For other sample event configurations, see: support/config/
#
##############################################################################

# need to prevent extinction abort on startup
i LoadPopulation host-parasite-smt.spop
i LoadGermlines host-smt.sgerm 1

u 5 Exit
Loading

0 comments on commit 1074c32

Please sign in to comment.