From ec5ddd2edf0779a6ccb39001c630485fa308d6eb Mon Sep 17 00:00:00 2001 From: Diane Blackwood Date: Sun, 21 Sep 2025 16:02:35 -0400 Subject: [PATCH] Added docs --- docs/Avida-ED-Error-Database.txt | 67 + docs/Avida-ED_workFlowTesting.txt | 1 + docs/Avida-Ed-TestingNotes.txt | 66 + docs/Avida-Resources.txt | 69 + docs/AvidaNotes.txt | 342 ++++ docs/AvidaResourcesNotebookNotes.txt | 90 + docs/AvidaSpacialResoureAnimation.txt | 215 +++ docs/C++notes.txt | 53 + docs/Evosphere_2017_1207.txt | 248 +++ docs/Ofria-Charles.1500-768x960.jpg | Bin 0 -> 61959 bytes docs/SettingUpAvida-EDonServer.txt | 10 + docs/documentation/About.md | 42 + docs/documentation/Analysis-settings.md | 3 + docs/documentation/Analyze-File.md | 1010 +++++++++++ ...alyze-mode-:-building-your-own-commands.md | 29 + .../Analyze-mode-:-finding-lineages.md | 18 + ...nalyze-mode-:-testing-a-genome-sequence.md | 14 + ...nalyze-mode-:-try-it-yourself-exercises.md | 12 + .../Analyze-mode-:-using-variables.md | 25 + .../Analyze-mode-:-working-with-batches.md | 17 + docs/documentation/Avida-3-API.md | 273 +++ docs/documentation/Avida.cfg.mediawiki | 19 + docs/documentation/Beginner-Documentation.md | 211 +++ .../Configuration-and-command-reference.md | 25 + .../Creating-a-flame-graph.mediawiki | 59 + .../Default-Ancestor-Guided-Tour.md | 228 +++ docs/documentation/Default-heads.org.md | 1 + .../documentation/Deme-introduction.mediawiki | 15 + docs/documentation/Deme-migration.mediawiki | 25 + docs/documentation/Developers-Guide.md | 23 + ...ment | Tutorial | Instruction Checklist.md | 303 ++++ .../Development-|-Coding-Style-Guide.md | 298 ++++ .../Development-|-Getting-Started.md | 59 + ...elopment-|-Tutorial-|-Birth-Death-Cycle.md | 228 +++ ...elopment-|-Tutorial-|-C-Plus-Plus-Intro.md | 395 +++++ .../Development-|-Tutorial-|-Environment.md | 268 +++ .../Development-|-Tutorial-|-Genome.md | 161 ++ .../Development-|-Tutorial-|-Life-Cycle.md | 233 +++ ...Development-|-Tutorial-|-Task-Checklist.md | 108 ++ docs/documentation/Divide-settings.md | 38 + .../Energy-model-configuration.md | 101 ++ docs/documentation/Environment-file.md | 902 ++++++++++ docs/documentation/Events-file.md | 28 + .../Experiment-and-analysis-guides.md | 2 + docs/documentation/File-settings.md | 13 + docs/documentation/General-settings.md | 18 + .../Gradient-resources.mediawiki | 243 +++ .../Hand-written-Logic-Nine-Programs.md | 170 ++ docs/documentation/Home.md | 29 + ...-create-a-deme-replication-event.mediawiki | 33 + .../Html-output-color-settings.md | 3 + docs/documentation/Instruction-Set.md | 333 ++++ docs/documentation/Instset-heads.cfg.md | 1 + docs/documentation/Internal-resources.md | 116 ++ .../Introduction-to-parasites.mediawiki | 48 + docs/documentation/List-of-actions.md | 1484 +++++++++++++++++ docs/documentation/LookSensor.md | 82 + docs/documentation/Mutation-settings.md | 23 + .../Mutations-reversion-settings.md | 17 + .../New-user-information.mediawiki | 50 + docs/documentation/Overview.mediawiki | 5 + docs/documentation/PrintData-Options.md | 59 + docs/documentation/Quirks.md | 9 + docs/documentation/Reproduction-settings.md | 28 + .../Resource-hoarding-settings.md | 5 + .../Sample-analyze-programs.mediawiki | 8 + ...etting-up-fixed-length-organisms.mediawiki | 21 + ...ings-for-genealogy-info-in-the-test-cpu.md | 13 + docs/documentation/Text-Viewer.mediawiki | 133 ++ docs/documentation/Time-slicing-settings.md | 27 + docs/documentation/Topology-settings.md | 12 + ...ng-mating-types-(separate-sexes).mediawiki | 66 + .../glossary/Glossary--Bitwise.md | 6 + .../glossary/Glossary--CPU-cycle.md | 6 + docs/documentation/glossary/Glossary--CPU.md | 6 + .../glossary/Glossary--Complement-Label.md | 10 + .../glossary/Glossary--Genome.md | 6 + .../glossary/Glossary--Genotype.md | 6 + .../documentation/glossary/Glossary--Heads.md | 6 + docs/documentation/glossary/Glossary--IO.md | 6 + .../glossary/Glossary--Input-Output.md | 6 + .../glossary/Glossary--Instruction.md | 6 + .../documentation/glossary/Glossary--Label.md | 12 + .../documentation/glossary/Glossary--Logic.md | 6 + .../glossary/Glossary--Memory.md | 6 + .../glossary/Glossary--Mutation.md | 6 + .../glossary/Glossary--Nop-Head-Notation.md | 6 + .../Glossary--Nop-Register-Notation.md | 6 + .../glossary/Glossary--Organism.md | 6 + .../glossary/Glossary--Population.md | 6 + .../glossary/Glossary--Registers.md | 10 + .../documentation/glossary/Glossary--Stack.md | 8 + .../documentation/glossary/Glossary--Tasks.md | 6 + docs/documentation/glossary/Glossary--add.md | 7 + docs/documentation/glossary/Glossary--dec.md | 6 + .../glossary/Glossary--h-alloc.md | 6 + .../glossary/Glossary--h-copy.md | 6 + .../glossary/Glossary--h-divide.md | 6 + .../glossary/Glossary--h-search.md | 6 + .../glossary/Glossary--if-label.md | 6 + .../glossary/Glossary--if-less.md | 6 + .../glossary/Glossary--if-n-equ.md | 6 + docs/documentation/glossary/Glossary--inc.md | 6 + .../glossary/Glossary--jmp-head.md | 6 + .../glossary/Glossary--mov-head.md | 6 + docs/documentation/glossary/Glossary--nand.md | 6 + .../glossary/Glossary--nop-instructions.md | 6 + docs/documentation/glossary/Glossary--pop.md | 6 + docs/documentation/glossary/Glossary--push.md | 6 + .../glossary/Glossary--set-flow.md | 6 + .../glossary/Glossary--shift-l.md | 6 + .../glossary/Glossary--shift-r.md | 6 + docs/documentation/glossary/Glossary--sub.md | 6 + .../glossary/Glossary--swap-stk.md | 6 + docs/documentation/glossary/Glossary--swap.md | 6 + docs/documentation/images/AvidaLogo.gif | Bin 0 -> 5946 bytes .../images/Text_View_Env_Mode_1.jpg | Bin 0 -> 49686 bytes .../images/Text_View_Env_Mode_2.jpg | Bin 0 -> 73006 bytes .../images/Text_View_Hist_Mode_1.jpg | Bin 0 -> 56967 bytes .../images/Text_View_Hist_Mode_2.jpg | Bin 0 -> 58726 bytes .../images/Text_View_Hist_Mode_3.jpg | Bin 0 -> 57534 bytes .../images/Text_View_Map_Mode.jpg | Bin 0 -> 112705 bytes .../images/Text_View_Navigation.jpg | Bin 0 -> 224024 bytes .../images/Text_View_Opt_Mode.jpg | Bin 0 -> 86933 bytes .../images/Text_View_Stats_Mode.jpg | Bin 0 -> 108245 bytes .../images/Text_View_Zoom_Mode_1.jpg | Bin 0 -> 79777 bytes .../images/Text_View_Zoom_Mode_2.jpg | Bin 0 -> 88047 bytes .../images/Text_View_Zoom_Mode_3.jpg | Bin 0 -> 74979 bytes docs/documentation/images/cpu2.gif | Bin 0 -> 27376 bytes .../images/host-parasite-both-small.png | Bin 0 -> 179709 bytes docs/documentation/images/inres_basic.gif | Bin 0 -> 5145 bytes .../images/inres_collect-specific.gif | Bin 0 -> 5604 bytes .../images/inres_collect-unit-prob.gif | Bin 0 -> 5836 bytes docs/documentation/images/inres_death.gif | Bin 0 -> 10180 bytes docs/documentation/images/inres_forcing.gif | Bin 0 -> 6014 bytes .../images/inres_nop-collect.gif | Bin 0 -> 5242 bytes .../images/inres_specification.gif | Bin 0 -> 12457 bytes docs/documentation/images/inres_split.gif | Bin 0 -> 5967 bytes docs/documentation/images/inres_using.gif | Bin 0 -> 6573 bytes docs/workFlowTesting.rtf | 144 ++ 140 files changed, 9802 insertions(+) create mode 100755 docs/Avida-ED-Error-Database.txt create mode 100755 docs/Avida-ED_workFlowTesting.txt create mode 100755 docs/Avida-Ed-TestingNotes.txt create mode 100755 docs/Avida-Resources.txt create mode 100755 docs/AvidaNotes.txt create mode 100755 docs/AvidaResourcesNotebookNotes.txt create mode 100755 docs/AvidaSpacialResoureAnimation.txt create mode 100755 docs/C++notes.txt create mode 100755 docs/Evosphere_2017_1207.txt create mode 100755 docs/Ofria-Charles.1500-768x960.jpg create mode 100755 docs/SettingUpAvida-EDonServer.txt create mode 100644 docs/documentation/About.md create mode 100644 docs/documentation/Analysis-settings.md create mode 100644 docs/documentation/Analyze-File.md create mode 100644 docs/documentation/Analyze-mode-:-building-your-own-commands.md create mode 100644 docs/documentation/Analyze-mode-:-finding-lineages.md create mode 100644 docs/documentation/Analyze-mode-:-testing-a-genome-sequence.md create mode 100644 docs/documentation/Analyze-mode-:-try-it-yourself-exercises.md create mode 100644 docs/documentation/Analyze-mode-:-using-variables.md create mode 100644 docs/documentation/Analyze-mode-:-working-with-batches.md create mode 100644 docs/documentation/Avida-3-API.md create mode 100644 docs/documentation/Avida.cfg.mediawiki create mode 100644 docs/documentation/Beginner-Documentation.md create mode 100644 docs/documentation/Configuration-and-command-reference.md create mode 100644 docs/documentation/Creating-a-flame-graph.mediawiki create mode 100644 docs/documentation/Default-Ancestor-Guided-Tour.md create mode 100644 docs/documentation/Default-heads.org.md create mode 100644 docs/documentation/Deme-introduction.mediawiki create mode 100644 docs/documentation/Deme-migration.mediawiki create mode 100644 docs/documentation/Developers-Guide.md create mode 100644 docs/documentation/Development | Tutorial | Instruction Checklist.md create mode 100644 docs/documentation/Development-|-Coding-Style-Guide.md create mode 100644 docs/documentation/Development-|-Getting-Started.md create mode 100644 docs/documentation/Development-|-Tutorial-|-Birth-Death-Cycle.md create mode 100644 docs/documentation/Development-|-Tutorial-|-C-Plus-Plus-Intro.md create mode 100644 docs/documentation/Development-|-Tutorial-|-Environment.md create mode 100644 docs/documentation/Development-|-Tutorial-|-Genome.md create mode 100644 docs/documentation/Development-|-Tutorial-|-Life-Cycle.md create mode 100644 docs/documentation/Development-|-Tutorial-|-Task-Checklist.md create mode 100644 docs/documentation/Divide-settings.md create mode 100644 docs/documentation/Energy-model-configuration.md create mode 100644 docs/documentation/Environment-file.md create mode 100644 docs/documentation/Events-file.md create mode 100644 docs/documentation/Experiment-and-analysis-guides.md create mode 100644 docs/documentation/File-settings.md create mode 100644 docs/documentation/General-settings.md create mode 100644 docs/documentation/Gradient-resources.mediawiki create mode 100644 docs/documentation/Hand-written-Logic-Nine-Programs.md create mode 100644 docs/documentation/Home.md create mode 100644 docs/documentation/How-to-create-a-deme-replication-event.mediawiki create mode 100644 docs/documentation/Html-output-color-settings.md create mode 100644 docs/documentation/Instruction-Set.md create mode 100644 docs/documentation/Instset-heads.cfg.md create mode 100644 docs/documentation/Internal-resources.md create mode 100644 docs/documentation/Introduction-to-parasites.mediawiki create mode 100644 docs/documentation/List-of-actions.md create mode 100644 docs/documentation/LookSensor.md create mode 100644 docs/documentation/Mutation-settings.md create mode 100644 docs/documentation/Mutations-reversion-settings.md create mode 100644 docs/documentation/New-user-information.mediawiki create mode 100644 docs/documentation/Overview.mediawiki create mode 100644 docs/documentation/PrintData-Options.md create mode 100644 docs/documentation/Quirks.md create mode 100644 docs/documentation/Reproduction-settings.md create mode 100644 docs/documentation/Resource-hoarding-settings.md create mode 100644 docs/documentation/Sample-analyze-programs.mediawiki create mode 100644 docs/documentation/Setting-up-fixed-length-organisms.mediawiki create mode 100644 docs/documentation/Settings-for-genealogy-info-in-the-test-cpu.md create mode 100644 docs/documentation/Text-Viewer.mediawiki create mode 100644 docs/documentation/Time-slicing-settings.md create mode 100644 docs/documentation/Topology-settings.md create mode 100644 docs/documentation/Using-mating-types-(separate-sexes).mediawiki create mode 100644 docs/documentation/glossary/Glossary--Bitwise.md create mode 100644 docs/documentation/glossary/Glossary--CPU-cycle.md create mode 100644 docs/documentation/glossary/Glossary--CPU.md create mode 100644 docs/documentation/glossary/Glossary--Complement-Label.md create mode 100644 docs/documentation/glossary/Glossary--Genome.md create mode 100644 docs/documentation/glossary/Glossary--Genotype.md create mode 100644 docs/documentation/glossary/Glossary--Heads.md create mode 100644 docs/documentation/glossary/Glossary--IO.md create mode 100644 docs/documentation/glossary/Glossary--Input-Output.md create mode 100644 docs/documentation/glossary/Glossary--Instruction.md create mode 100644 docs/documentation/glossary/Glossary--Label.md create mode 100644 docs/documentation/glossary/Glossary--Logic.md create mode 100644 docs/documentation/glossary/Glossary--Memory.md create mode 100644 docs/documentation/glossary/Glossary--Mutation.md create mode 100644 docs/documentation/glossary/Glossary--Nop-Head-Notation.md create mode 100644 docs/documentation/glossary/Glossary--Nop-Register-Notation.md create mode 100644 docs/documentation/glossary/Glossary--Organism.md create mode 100644 docs/documentation/glossary/Glossary--Population.md create mode 100644 docs/documentation/glossary/Glossary--Registers.md create mode 100644 docs/documentation/glossary/Glossary--Stack.md create mode 100644 docs/documentation/glossary/Glossary--Tasks.md create mode 100644 docs/documentation/glossary/Glossary--add.md create mode 100644 docs/documentation/glossary/Glossary--dec.md create mode 100644 docs/documentation/glossary/Glossary--h-alloc.md create mode 100644 docs/documentation/glossary/Glossary--h-copy.md create mode 100644 docs/documentation/glossary/Glossary--h-divide.md create mode 100644 docs/documentation/glossary/Glossary--h-search.md create mode 100644 docs/documentation/glossary/Glossary--if-label.md create mode 100644 docs/documentation/glossary/Glossary--if-less.md create mode 100644 docs/documentation/glossary/Glossary--if-n-equ.md create mode 100644 docs/documentation/glossary/Glossary--inc.md create mode 100644 docs/documentation/glossary/Glossary--jmp-head.md create mode 100644 docs/documentation/glossary/Glossary--mov-head.md create mode 100644 docs/documentation/glossary/Glossary--nand.md create mode 100644 docs/documentation/glossary/Glossary--nop-instructions.md create mode 100644 docs/documentation/glossary/Glossary--pop.md create mode 100644 docs/documentation/glossary/Glossary--push.md create mode 100644 docs/documentation/glossary/Glossary--set-flow.md create mode 100644 docs/documentation/glossary/Glossary--shift-l.md create mode 100644 docs/documentation/glossary/Glossary--shift-r.md create mode 100644 docs/documentation/glossary/Glossary--sub.md create mode 100644 docs/documentation/glossary/Glossary--swap-stk.md create mode 100644 docs/documentation/glossary/Glossary--swap.md create mode 100644 docs/documentation/images/AvidaLogo.gif create mode 100644 docs/documentation/images/Text_View_Env_Mode_1.jpg create mode 100644 docs/documentation/images/Text_View_Env_Mode_2.jpg create mode 100644 docs/documentation/images/Text_View_Hist_Mode_1.jpg create mode 100644 docs/documentation/images/Text_View_Hist_Mode_2.jpg create mode 100644 docs/documentation/images/Text_View_Hist_Mode_3.jpg create mode 100644 docs/documentation/images/Text_View_Map_Mode.jpg create mode 100644 docs/documentation/images/Text_View_Navigation.jpg create mode 100644 docs/documentation/images/Text_View_Opt_Mode.jpg create mode 100644 docs/documentation/images/Text_View_Stats_Mode.jpg create mode 100644 docs/documentation/images/Text_View_Zoom_Mode_1.jpg create mode 100644 docs/documentation/images/Text_View_Zoom_Mode_2.jpg create mode 100644 docs/documentation/images/Text_View_Zoom_Mode_3.jpg create mode 100644 docs/documentation/images/cpu2.gif create mode 100644 docs/documentation/images/host-parasite-both-small.png create mode 100644 docs/documentation/images/inres_basic.gif create mode 100644 docs/documentation/images/inres_collect-specific.gif create mode 100644 docs/documentation/images/inres_collect-unit-prob.gif create mode 100644 docs/documentation/images/inres_death.gif create mode 100644 docs/documentation/images/inres_forcing.gif create mode 100644 docs/documentation/images/inres_nop-collect.gif create mode 100644 docs/documentation/images/inres_specification.gif create mode 100644 docs/documentation/images/inres_split.gif create mode 100644 docs/documentation/images/inres_using.gif create mode 100755 docs/workFlowTesting.rtf diff --git a/docs/Avida-ED-Error-Database.txt b/docs/Avida-ED-Error-Database.txt new file mode 100755 index 0000000..ca47068 --- /dev/null +++ b/docs/Avida-ED-Error-Database.txt @@ -0,0 +1,67 @@ +Flask +SQLAlchemy - MySQL backend + +http://github.com/ruppmatt/AEDeveloper + +Two modes - + Local for debug (flask) + WSGI Apache Module for deployment + +MySQL for AEDeveloper +u/n: aedeveloper +p/w: + + +leviathan.cme.msu.edu + +database is in +cd .. +cd .. +cd /var/www/ +cd wsgi-scripts +cd AEDeveloper +ls -l #to see files +ls -lah #to see . files + +files need to be owned by Apache +so use script +cat update.sh #to see script to update from github and have apache own + +cat aedeveloper.wsgi #to see this protocol that apache uses. + +--------------------------------------------------------------------------- +To add a user +--------------------------------------------------------------------------- +To create a user from the command line use +sudo ./create_user.sh + +create_user.py [-h] username password fullname email +where username and password cannot spaces +fullname can be wrapped in quotes and have spaces + +need root access to add a user. +--------------------------------------------------------------------------- + +Matt uses flask on his machine using start_local.py +need to have mysSQL running. + +Cannot have any print statements when deploy + + + +To restart Apache +sudo apachectl restart #apache control + + +cat update.sh does a restart tat is slightly different + +sudo service apache2 restart + + +I found an abstract for some of the work discussed in the article. + +Immunizing Against Prejudice: Effects of Disease Protection on Attitudes Toward Out-Groups +By:Huang, JY (Huang, Julie Y.); Sedlovskaya, A (Sedlovskaya, Alexandra); Ackerman, JM (Ackerman, Joshua M.; Bargh, JA (Bargh, John A.) +PSYCHOLOGICAL SCIENCE Volume: 22 Issue: 12 Pages: 1550-1556 Dec 2011 +Contemporary interpersonal biases are partially derived from psychological mechanisms that evolved to protect people against the threat of contagious disease. This behavioral immune system effectively promotes disease avoidance but also results in an overgeneralized prejudice toward people who are not legitimate carriers of disease. In three studies, we tested whether experiences with two modern forms of disease protection (vaccination and hand washing) attenuate the relationship between concerns about disease and prejudice against out-groups. Study 1 demonstrated that when threatened with disease, vaccinated participants exhibited less prejudice toward immigrants than unvaccinated participants did. In Study 2, we found that framing vaccination messages in terms of immunity eliminated the relationship between chronic germ aversion and prejudice. In Study 3, we directly manipulated participants' protection from disease by having some participants wash their hands and found that this intervention significantly influenced participants' perceptions of out-group members. Our research suggests that public-health interventions can benefit society in areas beyond immediate health-related domains by informing novel, modern remedies for prejudice. + diff --git a/docs/Avida-ED_workFlowTesting.txt b/docs/Avida-ED_workFlowTesting.txt new file mode 100755 index 0000000..b7d7373 --- /dev/null +++ b/docs/Avida-ED_workFlowTesting.txt @@ -0,0 +1 @@ +Goals for 2017 0829 Avida - Changes - ./run_tests - commit & push then (automated tests) Don‰_ͺt have - No method aside from commit msgs describing changes - no unit tests Add in code commit lists or in the readme file? tagging commits with Av_ED 3.0.2 or what ever - on both Avida and AV_UI so we know what version of Av_ui goes with which version of Avida Core AV_UI - changes - haphazard tests by Diane by hand - commit push - get Jake to test - fixes - commit push with tag. _____________________________________________________________ following JakeΥs readme file on https://github.com/cousi2344/avida-ed-testing/blob/master/README.rst toward the end ran python tests/test_suite_basic.py --setuipath . ExperimentControlsTest(BaseTest); Run the test longer and check to see that nothing bad happened pytest -v pathtotestfile/testfile.py all tests are in the test folder. Individual tests are in each of the following folders. population organism analysis Looking at one test pytest tests/common/common_basic/navigation/basic_nav_test.py mac has forward slashes; mac has back slashes; another example pytest tests/population/population_basic/env_settings/pause_update_test.py changed it to run for 19 instead of 9 updates. Pull stuff to the av_ui folder within avida-ed-testing . venv/bin/activate cd tests _____________________________________________________________ AV_UI change git clone on server add in stand alone packages Test on Server - automated tests - tests done by hand Move Production to Archive (name with version number and date released) Move test to ‰_Οapp‰__ folder - Tag github at this time _____________________________________________________________ Avida-ED change pull av_ui changes push changes notify diane tag when in production ‰_Σ‰ wireframe fry cartoon icons some parts 2d and some parts 3d geneartive and proceedural things in games (Robin) art assests, story, play through a book. Generative games Mindcraft No mans sky small group of people generate a rich environment. Spore - not a good game box car d2 very simple looks crappy. Fry - how to swim at all - evade predators Swim down stream. point sources of pollution Ocean predators gather food - grow Upstream - fish ladders - bears Mating - finding a mate - sexual selection - Robin - much easier - one kind of salmon - swimming blobs - keep the same blobs in all the environments add chemicals speed of flow increase the complexity of Box car 2d - has physics engine \ No newline at end of file diff --git a/docs/Avida-Ed-TestingNotes.txt b/docs/Avida-Ed-TestingNotes.txt new file mode 100755 index 0000000..de585a2 --- /dev/null +++ b/docs/Avida-Ed-TestingNotes.txt @@ -0,0 +1,66 @@ +Avida-Ed-Testing Notes + +Use once all is installed +start virtual environment. + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +Python virtual environment. +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +python --version to get default version which is Python 2.7.10 + +which python3 to get the path over version 3 of python + + only do once to set up an virtual environment folder (we called it venv) had to use path +in the folder that holds venv type + + virtualenv -p /Library/Frameworks/Python.framework/Versions/3.6/bin/python3 venv +Running virtualenv with interpreter /Library/Frameworks/Python.framework/Versions/3.6/bin/python3 + +to activate + source venv/bin/activate + +to get out + deactivate + +while virtual environment activated use the following command to install local packages. +Only need to do once when virtual environment is first set up. + pip install -r requirements.txt + +pip = python package installer +pip freeze lists the packages that are installed. + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +Python Virtual Environment 2017 August 25 +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +virtualenv --version to check version of virtual environment. + +docs.python-guide.org/en/latest/dev/virtualenvs + a place to get info + +we need to specify which version of python. +virtualenv -p /Library/Frameworks/Python.framework/Versions/3.6/bin/python3 venv + where venv is the folder for info on the virtual environment. + +pip is the package manager + +pip --help to get help on pip + +pip install -r requirements.txt to load requirements. + There may be stuff in the requirements file that we really don’t need. + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +Actual Testing Notes +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +to activate virtual environment + source venv/bin/activate + +then try +python tests/suite.py --setuipath ../av_ui + + + + + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +semantic ui as a package to help with Avida-ED 3 + diff --git a/docs/Avida-Resources.txt b/docs/Avida-Resources.txt new file mode 100755 index 0000000..beb0872 --- /dev/null +++ b/docs/Avida-Resources.txt @@ -0,0 +1,69 @@ +Avida from the command line. + +There are several "main"s in avida. + +source/targets/viewer-text/viewer-text.cc + not used that often - put terminal graphics - world as hash marks. + +source/targets/avida/primative.cc + typical one that folks use that is where "main" is + + Abstraction level for Avida-ED on the mac between that and the rest of Avida. + +There are half implemented versions of avida that Dave left and did not complete. + world object, + cworld - old naming convention (c said it was a class) + still the main work horse + World - (from Dave) new faccet system and the way Avida-ED Mac worked + both worlds are needed. circularly dependent. never separated. + managers are "facets" + + +cAvidaConfig* cfg = new cAvidaConfig(); + - the hard coded version (built in defaults) global config + - all of avida.cfg file set up here with default values. + + +Avida::Util::ProcessCmdLineArgs(argc, argv, cfg, defs); + loads command line arguments + names of files except avida.cfg are in avida.cfg + + + Everything was supposed to be facetted. + generic programming concept that Dave wanted in Avida, but not fully implemented + not sure if it is the same as views. + +Avida::World* new_world = new Avida::World(); + sets up facetted world + +cWorld* world = cWorld::Initialize(cfg, cString(Apto::FileSystem::GetCWD()), new_world, &feedback, &defs); + everything is controlled through cWorld + go in and read the config files. (passing in current directory) + + /******** inside cWorld initialize *******/ + cUserFeedback feedback; + used to have a communication cue. + effected structure of Json project. + looks for messages + +(new Avida2Driver(world, new_world))->Run(); + runs one update at a time. + Avida-ED 3 uses "web" driver. + +in cWorld.cc on line 121 create the world + + if starts with "m" it is a member of the current class (not a local variable) by convention in Avida-ED. + + load on line 128 + +In order speed out time ( there is an delta offset) + + +------------ +Spatial system and the Global resource system. +in the course of an update + the deltas will not be applied then "end of an update" when ever someone wants too. + +---------- +effect of reaction with food does not take place until cell divides. + diff --git a/docs/AvidaNotes.txt b/docs/AvidaNotes.txt new file mode 100755 index 0000000..85874a9 --- /dev/null +++ b/docs/AvidaNotes.txt @@ -0,0 +1,342 @@ +Starting at _dev/avida-notebook/AvidaResourceNotebook + +git clone https://github.com/devosoft/avida.git +cd avida +git checkout AvidaED-Web +git submodule init +git submodule update + + +cat .gitmodules + to see what was put in .getmodules + +The modules are in the /lib folder + +./build_avida avida-ed #puts in the cbuild/work folder + +more options now. + +Do all the git stuff from the terminal. X-code does not always play nicely with git + +DRIVER + +use a feedback object + - user feedback + - - error + - - info + - - warning + - - data new for Avida-ED + +are there any messages that need to be sent + +Logic of the asychreous state - + -previous grid update (stats that av_ui requests + + - handles messages from av_ui + - step update + - stuff goes into evens. + - still event driven application + + +webDriverActions.h + - writes to feedback rather than to a file. + +Only that can be sent to av_ui +come from WebDriverActions.h + place to get info from avida to av_ui +can read in json and write json + +messaging.h + - interface between javascript and avida + - untility to grab stuff. + + +Might also look in applications + +cd apps + 516 cd viewer-webed + 518 cd resources + +prepend.js calls avida-messages.js +avida-messages.js would contain the que, but I dont’ send messages fast enough for there to be a que + +Debug stuff is in avida-messages.js. +the counterpart is WebDebug.h + +macro called debug mode. + + + + +Build Script +./build_avida avida-ed (from main avida folder) + +Need C++ 11 or 14 installed. +gcc 45 and all of clang handles it + +setting up Empscripten again. + +emsdk_portable. + +emsdk script handles everything + +emsdk update reaches out and grabs the info + +./emsdk list tells what is available and what is installed. + +node js +clang +need emscripten + +out of tagged releases right now. + + +./emsdk install (what ever need to pull in) which packages + +emsdk environment. + +put in bash r c file. + +puts in the right environmental files set + +./emsdk_set_env.sh + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +Emscripten install notes +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +./emsdk update + +./emsdk list #to see what is available + +./emsdk install latest to install the latest version + +./emsdk activate latest needed to actually use the stuff + +source ./emsdk_env.sh to set up shell variables + +Then need to edit .profile in the home folder to make sure emscripten is in the path +that is put the following line in the .profile file with the correct path +source /Users/dianeblackwood/_dev/emscripten/emsdk-portable/emsdk_env.sh + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +To check on the status of cmake do + which cmake on the command prompt. +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + +Back to compiling Avida. . . . + +At the command prompt in the following folder /Users/dianeblackwood/_dev/avida/ +First remove the cbuild folder +rm -rf cbuild + β€”β€” note rm -rf * will delete all files/folders on the disk + rm - remove + -rf recursive forcefully + +./build_avida avida-ed-web is the correct build for the web based branch + + +To update avida to use the latest version of av_ui +./update_avui.sh + + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +X-Code +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +use [command][shift]o to search for a file or object anywhere in the project +use spy glass on tool bar upper left to find a string + +β€” to build using xcode +Under Applications in the project navigator + - click on viewer-webed + then in center area look under TARGETS + - click on viewer-webed +The arguments must be $(ACTION) avida-ed-web + +icons on uppper left (cartoon dialog = report navigator) + +Product menu -> Clean delete the cbuild folder. + +then hit play button (right pointing triangle) +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +Cmake +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +cmake --version + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +Path +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +changing files to update the path. +env|grep -i path to list the path var +export PATH=β€œ${PATH}:/new/path” per session +or +modify ~/.profile w/ above + +source the file or open new shell + +Change the .profile file in the home directory +cd to get to home directory +ls -a to display .files + +open a new terminal session +or type +source .profile to get the new path or any other new stuff in .profile + +echo ${PATH} to see the current path + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +Node.js was installed at + + /usr/local/bin/node + +npm was installed at + + /usr/local/bin/npm + +Make sure that /usr/local/bin is in your $PATH. +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +VIM +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +vim filename to open vim with a certain file. +[esc]i to insert +[escape] to leaven insert mode +[shift]:wq to have command prompt; write; quit + + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +command prompt +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +md5 build_avida to get hash number +pwr to get what folder one is in +cd to change folder to home or root +cat to concatenate files, but just list one then it gives a listing +ls to get a folder listing +ls -alh listing with all files; long version; human readable file size +ls -lh long version; +nameOfExecutableFile --version to get a version number +which nameOfFile +mv move to change the file or folder name. +&& to put more than one command on the same line. if one command fails it does not do the next command +& to something in background as a batch +can use | to redirect stuff to another program +3 streams = input stream, output stream and error stream + +ln creates a soft link -s means soft + ln -s ~/_dev/avida/cbuild/work/ av_ui + +file/dir soft link + points to nothing if file deleted. + hard link still retains the block. if there are any hard links to a file it still exists, bust with one fewer names + soft link does not retain the file if the file is deleted (file exists as long as there is the original name or a hard link + The original name is a hard link sort of +man ls gives you the manual for ls = man works for many other commands. +q to quit out of man +less and more work the same way and show you part of a file. + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +Error logging 2017 August 25 +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +av_ui (web page) +^ +| +v +Avida Core (Web worker) +^ +| +| +v +WS_server (python) + - /Logger (web page) + localhost:5000/logger + - /Command + localhost:5000/command + - /executor (web page) a way to send commands without using av_ui + localhost:5000/avida + +/avida on lines between Avida CORE and WS_Server + +and WS_Server and /executor + +AEDBridge (name of the project) + - WebSocktes for duplex coms + - Needs server provided by flask + - python 3 + + +logger displays stuff that is normally disabled in avida. +C_ (MODE, STMT, VERBOSITY) +displays on a webpage. + +β€”β€”β€”β€” +To enable + - modify WebDebug.h + to turn on debug statements + - modify messages.js + to enable websocket + +β€”β€”β€”β€” +Redis is the name of the database all stored in memory that the WS_SERVER uses. + + + +This is all in a python virtual environment. + + +β€”β€”β€”β€”β€”β€”β€” + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +Redis 2017 August 25 +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + +./redis-server --port 5060 + + + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +Git help for Github +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +git checkout build_avida to revert back version on website. +https://chris.beams.io/posts/git-commit/ + +git reset --hard to get rid of changes made to local folder + + + +git submodule init && git submodule update + +git checkout AvidaED-Web puts me in the AvidaED-web branch + +https://chris.beams.io/posts/git-commit/ + + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +Changing how we calculate averages for population stats 2017 August 25 +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +#In the root directory +./update_avui.sh gets latest av_ui from git hub an stages them to go in the next update + +#Then build + +#When tested add the changes and commit +git add apps/viewer-webed/src/WebDriverActions.h +git add cbuild/bin/* +git commit #Add comments in editor when it pops up and exit +git commit -m β€œ the comments β€œ +git push +#Email Diane + + +Matt uses Dr. Gein for a dentist - in his 70s and is semi-retired +Yancy Tygesen on Jolly Road Okemos oral surgeon + + +β€”β€”β€”β€” + +Avida building avida cleanly Commit change in Avida - Clean builds - - Remove cbuild folder - - - rm –rf cbuild or + ./build_avida clean +- - now actually build avida for regular C ./build_avida + +- - now build avida for avida-ed-web (emscripten) + ./build_avida clean && ./build_avida avida-ed-web + + + diff --git a/docs/AvidaResourcesNotebookNotes.txt b/docs/AvidaResourcesNotebookNotes.txt new file mode 100755 index 0000000..76ade90 --- /dev/null +++ b/docs/AvidaResourcesNotebookNotes.txt @@ -0,0 +1,90 @@ +Starting at _dev/avida-notebook/AvidaResourceNotebook + +git clone https://github.com/ruppmatt/AvidaResourceNotebook.git + +cd AvidaResourceNotebook && git clone https://github.com/devosoft/avida && cd avida && ./build_avida && cd .. && virtualenv -p `which python3` venv && . venv/bin/activate && pip install -r requirements.txt && ln -s ../avida/cbuild/work/avida default_config/avida && cd default_config && ./avida && cd .. + + in ~/_dev/avida-notebook/avidaResourceNotebook +git submodule init && git submodule update +------- + + or all at once +git clone https://github.com/ruppmatt/AvidaResourceNotebook && cd AvidaResourceNotebook && git clone https://github.com/devosoft/avida && cd avida && ./build_avida && cd .. && virtualenv -p `which python3` venv && . venv/bin/activate && pip install -r requirements.txt && ln -s ../avida/cbuild/work/avida default_config/avida && cd default_config && ./avida && cd .. + then in ~/_dev/avida-notebook/avidaResourceNotebook +~/_dev/avida-notebook/avidaResourceNotebook + + + At that point you can launch the notebook by: +jupyter notebook + +-------------------------------- +git clone https://github.com/devosoft/avida.git +cd avida +git checkout AvidaED-Web +git submodule init +git submodule update + + + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +VIM +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +vim filename to open vim with a certain file. +[esc]i to insert +[escape] to leaven insert mode +[shift]:wq to have command prompt; write; quit + + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +command prompt +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +md5 build_avida to get hash number +pwr to get what folder one is in +cd to change folder to home or root +cat to concatenate files, but just list one then it gives a listing +ls to get a folder listing +ls -alh listing with all files; long version; human readable file size +ls -lh long version; including where a soft link goes +nameOfExecutableFile --version to get a version number +which nameOfFile +mv move to change the file or folder name. +&& to put more than one command on the same line. if one command fails it does not do the next command +& to something in background as a batch +can use | to redirect stuff to another program +3 streams = input stream, output stream and error stream + +ln creates a soft link -s means soft + ln -s ~/_dev/avida/cbuild/work/ av_ui + +file/dir soft link + points to nothing if file deleted. + hard link still retains the block. if there are any hard links to a file it still exists, bust with one fewer names + soft link does not retain the file if the file is deleted (file exists as long as there is the original name or a hard link + The original name is a hard link sort of +man ls gives you the manual for ls = man works for many other commands. +q to quit out of man +less and more work the same way and show you part of a file. + + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +Off Topic +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +Genetics +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + +Greta Kaplan I've never seen this dog: If I've read the thread right the dog is reported to be Bb KyKy ataw EmE DD. + +Bb - the base color is black rather than liver and should have black nose, toe pads and nails unless there is white spotting of some form which is not included above. Greta's description as black tricolor - indicates she is a black and tan with white which is consistent with B-kykyat-E-D-. + +KyKy - allows expression at the A loci and is NOT brindle. + +At indicates tan points. The Aw indicates wild type. Generally in the Agouti series Ay > Aw > at > a +If the dog looks like a blacktri, then I'd question the aw, typically a black-tri would be atat or ata + +Em - indicates a mask, E is just normal extension = dog can produce both types of pigment + there is a lot of variation in masks + +DD - no dilution + diff --git a/docs/AvidaSpacialResoureAnimation.txt b/docs/AvidaSpacialResoureAnimation.txt new file mode 100755 index 0000000..d736cd3 --- /dev/null +++ b/docs/AvidaSpacialResoureAnimation.txt @@ -0,0 +1,215 @@ +This worked for me to set up Matt's ResouceNotebook. I did have python already installed. + +Quickest start: + +Go to the directory where you'd like to install the repository. Make sure that there is not already a directory called AvidaResourceNotebook present. Then paste and run this in the terminal: + +git clone https://github.com/ruppmatt/AvidaResourceNotebook && cd AvidaResourceNotebook && git clone https://github.com/devosoft/avida && cd avida && ./build_avida && cd .. && virtualenv -p `which python3` venv && . venv/bin/activate && pip install -r requirements.txt && ln -s ../avida/cbuild/work/avida default_config/avida && cd default_config && ./avida && cd .. + +At that point you can launch the notebook by: + +jupyter notebook + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +Avida resources animations +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +To build avida go to avida-projects/avida and run +./build_avida + + + +folder structure for this project +avida-projects/ + resources/ + avida/ soft link to avida under work in avida folder below + venv/ + avida/ + cbuiid/ + work/ + avida + *.cfg + *.org + +to set up softlink go to the resources/avida folder + +ln -s ../../avida/cbuild/work/avida . +cp ../../avida/cbuild/work/*.cfg . +cp ../../avida/cbuild/work/default-heads.org . + + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +Files: in general +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +analyze.cfg - for analyze mode (avdia -a) can be blank, but needs to exist + utility to analyze after the fact. can be blank, but must exist. +avida.cfg - global configuration +environment.cfg +eventts.cfg +instset-heads.cfg - instruction set list +default-head.org default ancestor + +not using the following so we removed them + >rm instset-heads-sex.cfg instset-transsmt.cfg + + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +Getting Jupyter on Computer +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +I’m putting this in a folder called avida-projects +Create virtual environment by going to the folder where the virtual environment will be crated and running: + >virtualenv -p /Library/Frameworks/Python.framework/Versions/3.6/bin/python3 venv + +Then activate the virtual environment + >source venv/bin/activate + +path for python3 might be different on a different computer. + +Matt then supplied requirements.txt file that goes in the avida-stuff folder + +So then in the same folder run + >pip install -r requirements.txt + +Matt also provided Animate Spatial Resources.ipynb + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + to run jupyter python notebook +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + +activate the virtual environment if that has not been done already + >source venv/bin/activate + +python -m jupyter notebook + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +In the Notebook +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +TO run: In the Cells dropdown menu, Click β€œRun Cells” + or to run the cell that one is currently in + +In [ ] beside the cell gives some status information +empty = never executed +[#] what order it was executed (such as [1] +[*} executing or about to be executed + + +To start clean use the Kernel menu +python is single threaded + - interupt will stop the kernel (stop running) + - + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +Command Mode: +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +When the vertical line on the left is blue, it is in command mode +h: gives some command listings + got me into command mode + + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +Typing Mode +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +The vertical line on the left is green +clicking in the cell put it in this mode. + + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +Test to see that avida runs +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +go to avida-projects/resources/avida + >./avida + +to clear the data folder (output created when running avida) + >rm -rf data +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +First Experiment with one non-reproducing organism and let resources flow +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + +Files +analyze.cfg - for analyze mode (avdia -a) can be blank, but needs to exist +avida.cfg - + disable mutations + disable death + +environment.cfg + +eventts.cfg + only inject + printSpatial Resources + Exit + +instset-heads.cfg - (add nop-x to end) + +default-head.org default ancestor + replace + h-divide w/ nop-x + + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +vim notes +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +vim cheatsheet on line to find more help on vim + +vim filename + + put in command mode + +in commmand mode + G - puts at end of file + gg - goes to the top + o - opens an new line below and goes into insert mode + O - opens a new line above the current line and goes into insert mode + i - goes into insert mode + :wq - write quit the colon is important + R - replace mode + 0 - go to the start of the line + $ - go to the end of the line + / - begin search process + :nohls to get rid of highlighting from search + :19 jumps to line 19 for example +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + +https://docs.google.com/spreadsheets/d/1ZS9OT1Om0PYd_ePamXXgr1MhGPrC7ZcvP-7rUCqq7Gs/edit#gid=0 + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” + +Asking Students about Nature of Science +β€œScience and the Citezin” +Nature and Process of Science” +General Education at the college level - Utah State regional campus (20 students) +Mike will interview over Zoom in December + +how does this fit into experimental design. +Nature and Practice of Science. + + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +git reset --hard to revert back to last clone commit or pull or clone +git reset --hard origin/master to pull to latest and erase local changes. + origin is the name of the remote (git hub) branch + +start virtual environment + . venv/bin/activate + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +Info about how the python notebook works. + +Currently developing on avidares +this is a package because it has a file called __init__.py +not full, because there is no setup.py file that would let .pip install it (part of the Easy_setup) + +avidares.SingleExperiment is getting SingleExperiment is module (file) withing the package avidares + +classes in SingleExperiment that mostly use + ResourceExperiment. + ResourceExperimentAnimation + + +classes in FactoredExperiment that mostly use + ResourceFactoredExperiment + ResourceFactoredExperimentIterator + ResourceFactoredExperimentAnimation + + + + + diff --git a/docs/C++notes.txt b/docs/C++notes.txt new file mode 100755 index 0000000..3fbaa89 --- /dev/null +++ b/docs/C++notes.txt @@ -0,0 +1,53 @@ +2017 Aug 16 +onstructor + Copy constructor + assignment onstructor (=) + destructor +β€”β€”β€”β€”β€”β€”β€” + +Implementing an Action + - - write constructor + - - implement GetDescription (. . .) + - - implement Process (. . .) + - - if needed destructor + + +in avida cfg file + +u 0 [_____________} +0 is an update number +[__________] is the name of a cAction + +u start:interval:end [_______] [args] + +args = usually copied to a new string typically called Largs in constructor) +called m_args internally (class member internal to that class) + +class member by convention indicated by m_ + + +β€”β€”β€” + +for web interface we have cWebAction + +cAction (virtual) + | + v +cWebAction (virtual) + | + v +cWebActionSomething (implemented) where something is the name. + + +allows us to use +- json args +- feedback option for data +- packaging data utility + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +Organism + <β€” phnotype + <- genotype + <- hardware + + diff --git a/docs/Evosphere_2017_1207.txt b/docs/Evosphere_2017_1207.txt new file mode 100755 index 0000000..d46293c --- /dev/null +++ b/docs/Evosphere_2017_1207.txt @@ -0,0 +1,248 @@ +Experiments script + environment + populations + one or more + individual organisms (rovers) + build method on rovers + using factories (reflection with factory rather than actual thing) + + +Robin + +When start play + +2 phases (set up and Loop) + +Setup + +Loop of following to blocks +Start Generation +running phase +replicate phase + +When press play + deserializing + calling a bunch of factories + makes some game objects + +Life Cycle of an organism + - Spawn + - build + - running (not the update functions) + running is called in the experiment's update function + control to not skip frames + +Structure of mono 0 behaviors + +Game Object (location in the world) + can have stuff attached. + mono-behaviors attached. + (code to excute) + + +Mono-behavior is a class + with virtual methods + called by unity engine in an opaque way. + don't worry about how. + wake ( called unconditionally) called as soon as estangiaged. + start (only after exists in the world) + enabled and disabled + update function (called kind of like every frame but not locked to physics engine) + +Fixed updated to the physics engine, but not fixed to the update rates + rendering is expensive - + physics is often faster than the rendering + rendering pushing to gpu one bit at a time (not in parallel) + Unity obscures stuff. + appear to running in a single thread (but not really) + +Multiple event listeners + +void Awake() { + this.enable=clase; +} + +spawning is expensive. + - avoid spawning when possible. + try not to spawn new things + +Expensive to create new object; cheap to change object. + so reuse object rather than kill and spawn again + + +Running will not happen before building is done + +bodies will be spawned, but the controller will not be spawned. + + +for x in org.Build() { + yield return x; +} +add org to running list + (keeps running till it dies) + +synchronous - all born and die as a group. + selective pressure to be constructed faster if the don't specifically wait for slow builders before running the group. + +Need to know when an organism wants to replicate. + +Jake left so beginner + +Game Objects + - core thing + does not do anything. does not even have a position + - can have multiple components attched to it. + each one is a C# class + access the components with a api +All of the objects get a transform objects + model view mattricies (positional spatial information) + + + +Quaternions - a generization of complex numbers + complex number = real + complex * i + a1 + a2*i + a3*j + a4*k where (1, 2, 3 are subscripts and i, j, k are vectors) + can be restricted to a subset with magnitudes of 1 + Eular coorinates can have gimble lock. + +meshes and physics objects. + change looks or physics behavior or mono-behaviors. + +Exercise to make a simple game in unity +drive ball around in push things and events trigger when it hits things. + +re-implement the rovers. Make changes to rovers. +re-do the make command and have it pop up in the user interface. + +do some live coding of implementing something. + + + + + + + + +2017_1208 Charles Meeting + +Three parts of contribution to paper +1. Intellecturally + +2. data generation (including statistics) + +3. writing/editing + + +Author - made the paper happen as opposed to not happen. +making it rise to higher level quality. + + +Literature Review - conceptual + + +Seeds should be different. + +every treatment should have unique seed. + +Avida (0= random number based on time) + another number - random number base on that seed. + +Josh example +Compare high mutation rate to low mutation rate +should be completely different. + +If doing paired runs, perhaps. + +if you want same initial conditions go out of way to make sure that is true. Don't assume that using the same random seed will do that for you. + +Reusing seeds from one treatment to another should not mater. + +Leslie Moore never re-used the same seed from experiment to the next. + +Paired runs with paired statistics. +If use the same seed - do intentionally and know what you are doing. + + +# 9 Proffesor asked to review a paper that they know from seeing at conference, but not otherwise. Concerned about ideas effecting their own research. implied belief that ideas will not be stolen by the reviewer. Is it wrong to have a head start. +People worried about being scooped. + + +Data Matching + Rodan - + + +python library to access git history. + +troll git histories when doing search . + +Rose (used evernote for a while) +Noodle - lab notebook. + Rose wrote Noodle (CK editor) saves to html files + python script with flask (attaches to port 5000 + search is grep based. + +Scientific keeping in journals. + - personal notes and commenatary separate. + - win a nobel prize - notebook published + - if random personal shit in notebook needs to be stated as such. + +- helps keep things in context to note some stuff read +- don't put patentable on web unless you want to prevent someone else from patententable. Who ever files first unless it has been made public. Special paper notebooks + +Evernote had good handwriting recognition - can +silver note (only for PCs) + +Experimental treatment description +discussion of what + + +Struture in Log form and search for projects. + + +Links in log to notebooks. + +iPython notebook. +Discussion in Noodle. + +Tagging is a big thing. + +When does one save full data and when can you just save the configuration to generate the data. + +Published paper. Lots of fitness data throughout the data. all average in the paper. + + +Python Library called bump version major or minor push tags to git hub. + + +Not sure what version that you have done a run on . + + +Do a final data run after all stat exploration, ideas, etc done. + + +Time for lab meeting for next semester. Push to slack. +---------- + +University Lawyer. + solisitation of copywrited material + doing wrong stuff, vs. knowingly knowling doing wrong stuff. + +People to inform students of what is allowed and what is not allowed. Will talk to legal stuff at other big 10 conference. +Send a notice that the majority of their stuff is copywrited. + +other proposed solutions + - Chad is used for cheating + - Provost looking into what can be done to students for posting course content to Chag??? 2000 level students caught cheating + - plagerism is not technically against the law? + + - normal accounts cannot post solutions. + - posting questions and using the answers + - solutions posted for low level courses are reasonable. + +Looking new omnibussman at MSU + +following Monday a week Party for Rose. +No lab meeting next year. + +Bliss Salon and Jamie Fenriss +near Myer on Saginaw west side near 69/96 \ No newline at end of file diff --git a/docs/Ofria-Charles.1500-768x960.jpg b/docs/Ofria-Charles.1500-768x960.jpg new file mode 100755 index 0000000000000000000000000000000000000000..99226134720cbdae1f5366f89b1c16fbf961e019 GIT binary patch literal 61959 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 E4?UK1?f?J) literal 0 HcmV?d00001 diff --git a/docs/SettingUpAvida-EDonServer.txt b/docs/SettingUpAvida-EDonServer.txt new file mode 100755 index 0000000..c3059d9 --- /dev/null +++ b/docs/SettingUpAvida-EDonServer.txt @@ -0,0 +1,10 @@ +On Texas Server + +degas2.fdisk.net +/var/www/vhosts/avidaed/public_html/app +get password from Wesley or Marc + +On MSU server + Pulse Secure must be running if off campus +leviathan.cme.msu.edu +/var/www/avida-ed.beacon-center.org/app diff --git a/docs/documentation/About.md b/docs/documentation/About.md new file mode 100644 index 0000000..253fac8 --- /dev/null +++ b/docs/documentation/About.md @@ -0,0 +1,42 @@ +When studying biological evolution, we have to overcome a large obstacle: Evolution is extremely slow. Traditionally, evolutionary biology has therefore been a field dominated by observation and theory, even though some regard the domestication of plants and animals as early, unwitting evolution experiments. Realistically, we can carry out controlled evolution experiments only with organisms that have very short generation times, so that populations can undergo hundreds of generations within a time frame of months or years. With the advances in microbiology, such experiments in evolution have become feasible with bacteria and viruses [ElenaLenski2003, TravisanoRainey2000]. However, even with microorganisms, evolution experiments still take a lot of time to complete and are often cumbersome. In particular, some data can be difficult or impossible to obtain, and it is often impractical to carry out enough replicas for high statistical accuracy. + +According to Daniel Dennett, "...evolution will occur whenever and wherever three conditions are met: replication, variation (mutation), and differential fitness (competition)"[Dennett2002]. It seems to be an obvious idea to set up these conditions in a computer, and to study evolution ''in silico'' rather than ''in vitro''. In a computer, it is easy to measure any quantity of interest with arbitrary precision, and the time it takes to propagate organisms for several hundred generations is only limited by the processing power available. In fact, population geneticists have long been carrying out computer simulations of evolving loci, in order to test or augment their mathematical theories (see [HartlClark2006, KimStephan2003, McVeanCharlesworth2000, Nowak2006, Orr2000] for some examples). However, the assumptions put into these simulations typically mirror exactly the assumptions of the analytical calculations. Therefore, the simulations can be used only to test whether the analytic calculations are error-free, or whether stochastic effects cause a system to deviate from its deterministic description, but they cannot test the model assumptions on a more basic level. + +An approach to studying evolution that lies somewhere in between evolution experiments with biochemical organisms and standard Monte-Carlo simulations is the study of self-replicating and evolving computer programs (digital organisms). These digital organisms can be quite complex and interact in a multitude of different ways with their environment or each other, so that their study is not a simulation of a particular evolutionary theory but becomes an experimental study in its own right. In recent years, research with digital organisms has grown substantially ([AdamiOfriaCollier2000, ComasMoyaGonzalez-Candelas2005, Egri-NagyNehaniv2003, GerleeLundh2005, LenskiOfriaPennock2003, MisevicOfriaLenski2006, WilkeWangOfria2001, YedidBell2001, YedidBell2002, ZhangTravisano2007], see [Adami2006, WilkeAdami2002] for reviews), and is being increasingly accepted by evolutionary biologists [ONeill2003]. (However, as Barton and Zuidema [BartonZuidema2003] note, general acceptance will ultimately hinge on whether artificial life researchers embrace or ignore the large body of population-genetics literature.) Avida is arguably the most advanced software platform to study digital organisms to date, and is certainly the one that has had the biggest impact in the biological literature so far. Having reached version 2.14, it now supports detailed control over experimental settings, a sophisticated system to design and execute experimental protocols, a multitude of possibilities for organisms to interact with their environment (including depletable resources and conversion from one resource into another) and a module to post-process data from evolution experiments (including tools to find the line of descent from the original ancestor to any final organism, to carry out knock-out studies with organisms, to calculate the fitness landscape around a genotype, and to align and compare organisms' genomes). + +## History of Digital Life + +The most well-known intersection of evolutionary biology with computer science is the genetic algorithm or its many variants (genetic programming, evolutionary strategies, and so on). All these variants boil down to the same basic recipe: (1) create random potential solutions, (2) evaluate each solution assigning it a fitness value to represent its quality, (3) select a subset of solutions using fitness as a key criterion, (4) vary these solutions by making random changes or recombining portions of them, (5) repeat from step 2 until you find a solution +that is sufficiently good. + +This technique turns out to be an excellent method for solving problems, but it ignores many aspects of natural living systems. Most notably, natural organisms must replicate themselves, as there is no external force to do so; therefore, their ability to pass their genetic information on to the next generation is the final arbiter of their fitness. Furthermore, organisms in a natural system have the ability to interact with their environment and with each other in ways that are excluded from most algorithmic applications of evolution. + +Work on more naturally evolving computational systems began in 1990, when Steen Rasmussen was inspired by the computer game "Core War" [Dewdney1984]. In this game, programs are written in a simplified assembly language and made to compete in the simulated core memory of a computer. The winning program is the one that manages to shut down all processes associated with its competitors. Rasmussen observed that the most successful of these programs were the ones that replicated themselves, so that if one copy were destroyed, others would still persist. In the original Core War game, the diversity of organisms could not increase, and hence no evolution was possible. Rasmussen designed a system similar to Core War in which the command that copied instructions was flawed and would sometimes write a random instruction instead on the one intended [RasmussenKnudsenFeldberg1990]. This flawed copy command introduced ''mutations'' into the system, and thus the potential for evolution. Rasmussen dubbed his new program "Core World", created a simple self-replicating ancestor, and let it run. + +Unfortunately, this first experiment was only of limited success. While the programs seemed to evolve initially, they soon started to copy code into each other, to the point where no proper self-replicators survived---the system collapsed into a non-living state. Nevertheless, the dynamics of this system turned out to be intriguing, displaying the partial replication of fragments of code, and repeated occurrences of simple patterns. + +The first successful experiment with evolving populations of self-replicating computer programs was performed the following year. Thomas Ray designed a program of his own with significant, biologically-inspired modifications. The result was the Tierra system [Ray1992]. In Tierra, digital organisms must allocate memory before they have permission to write to it, which prevents stray copy commands from killing other organisms. Death only occurs when memory fills up, at which point the oldest programs are removed to make room for new ones to be born. + +The first Tierra experiment was initialized with an ancestral program that was 80 lines long. It filled up the available memory with copies of itself, many of which had mutations that caused a loss of functionality. Yet other mutations were neutral and did not affect the organism's ability to replicate --- and a few were even beneficial. In this initial experiment, the only selective pressure on the population was for the organisms to increase their rate of replication. Indeed, Ray witnessed that the organisms were slowly shrinking the length of their genomes, since a shorter genome meant that there was less genetic material to copy, and thus it could be copied more rapidly. + +This result was interesting enough on its own. However, other forms of adaptation, some quite surprising, occurred as well. For example, some organisms were able to shrink further by removing critical portions of their genome, and then use those same portions from more complete competitors, in a technique that Ray noted was a form of parasitism. Arms races transpired where hosts evolved methods of eluding the parasites, and they, in turn, evolved to get around these new defenses. Some would-be hosts, known as hyper-parasites, even evolved mechanisms for tricking the parasites into aiding them in the copying of their own genomes. Evolution continued in all sorts of interesting manner, making Tierra seem like a choice system for experimental evolution work. + +In 1992, Chris Adami began research on evolutionary adaptation with Ray's Tierra system. His intent was to have these digital organisms to evolve solutions to specific mathematical problems, without forcing them use a pre-defined approach. His core idea was the following: If he wanted a population of organisms to evolve, for example, the ability to add two numbers together, he would monitor organisms' input and output numbers. If an output ever was the sum of two inputs, the successful organisms would receive extra CPU cycles as a bonus. As long as the number of extra cycles was greater than the time it took the organism to perform the computation, the leftover cycles could be applied toward the replication process, providing a competitive advantage to the organism. Sure enough, Adami was able to get the organisms to evolve some simple tasks, but faced many limitations in trying to use Tierra to study the evolutionary process. + +In the summer of 1993, Charles Ofria and C. Titus Brown joined Adami to develop a new digital life software platform, the Avida system. Avida was designed to have detailed and versatile configuration capabilities, along with high precision measurements to record all aspects of a population. Furthermore, whereas organisms are executed sequentially in Tierra, the Avida system simulates a parallel computer, allowing all organisms to be executed effectively simultaneously. Since its inception, Avida has had many new features added to it, including a sophisticated environment with localized resources, an events system to schedule actions to occur over the course of an experiment, multiple types of CPUs to form the bodies of the digital organisms, and a sophisticated analysis mode to post-process data from an Avida experiment. Avida is under active development at Michigan State University, led by Charles Ofria and David Bryson. + + +## The Scientific Motivation for Avida + +Intuitively, it seems that natural systems should be used to best understand how evolution produces the variation in observed in nature, but this can be prohibitively difficult for many questions and does not provide enough detail. Using digital organisms in a system such as Avida can be justified on five grounds: + +
    +
  1. ''Artificial life forms provide an opportunity to seek generalizations about self-replicating systems'' beyond the organic forms that biologists have studied to date, all of which share a common ancestor and essentially the same chemistry of DNA, RNA and proteins. As John Maynard Smith[Maynard-Smith1992] made the case: "So far, we have been able to study only one evolving system and we cannot wait for interstellar flight to provide us with a second. If we want to discover generalizations about evolving systems, we will have to +look at artificial ones." Of course, digital systems should always be studied in parallel with natural ones, but any differences we find between +their evolutionary dynamics open up what is perhaps an even more interesting set of questions.
  2. +
  3. ''Digital organisms enable us to address questions that are impossible to study with organic life forms''. For example, in one of our current experiments we are investigating the importance of deleterious mutations in adaptive evolution by explicitly reverting all detrimental mutations. Such invasive micromanaging of a population is not possible in a natural system, especially without disturbing other aspects of the evolution. In a digital evolving system, every bit of memory can be viewed without disrupting the system, and changes can be made at the +precise points desired.
  4. +
  5. ''Other questions can be addressed on a scale that is unattainable with natural organisms''. In an earlier experiment with digital organisms [LenskiOfriaCollier1999] we examined billions of genotypes to quantify the effects of mutations as well as the form and extent of their interactions. By contrast, an experiment with ''E. coli'' was necessarily confined to one level of genomic complexity. Digital organisms also have a speed advantage: population with 10,000 organisms can have 20,000 generations processed per day on a modern desktop computer. A similar experiment with bacteria took over a decade [Lenski2004].
  6. +
  7. ''Digital organisms possess the ability to truly evolve, unlike mere numerical simulations''. Evolution is open-ended and the design of the evolved solutions is unpredictable. These properties arise because selection in digital organisms (as in real ones) occurs at the level of the whole-organism's phenotype; it depends on the rates at which organisms perform tasks that enable them to metabolize resources to convert them to energy, and the efficiency with which they use that energy for reproduction. Genome sizes are sufficiently large that evolving populations cannot test every possible genotype, so replicate populations always find different local optima. A genome typical consists of 50 to 1000 sequential instructions. With commonly 26 possible instructions at each position, there are many more potential genome states than there are atoms in the universe.
  8. +
  9. ''Digital organisms can be used to design solutions to computational problems'' where it is difficult to write explicit programs that produce the desired behavior [Goldberg2002,Koza2003]. Current evolutionary algorithm approaches are based on a simplistic view of evolution, leaving out many of the factors that are believed to make it such a powerful force. Thus there are new opportunities for biological concepts to have a large impact outside of biology, just as principles of physics and mathematics are often used throughout other fields, including biology.
  10. +
diff --git a/docs/documentation/Analysis-settings.md b/docs/documentation/Analysis-settings.md new file mode 100644 index 0000000..3498f2b --- /dev/null +++ b/docs/documentation/Analysis-settings.md @@ -0,0 +1,3 @@ +These settings allow you to control the number of analyze threads and to define values that analyze mode can access. + +See avida.cfg for MAX_CONCURRENCY, ANALYZE_OPTION_1, and ANALYZE_OPTION_2. diff --git a/docs/documentation/Analyze-File.md b/docs/documentation/Analyze-File.md new file mode 100644 index 0000000..3a70869 --- /dev/null +++ b/docs/documentation/Analyze-File.md @@ -0,0 +1,1010 @@ +
+

The Analyze File

+
+ +

+The file analyze.cfg is used to setup Avida when it is run in +analyze mode, which can be done by running avida -a. Analyze +mode is useful for performing additional tests on genotypes after a run +has completed. +

+

+This analysis language is basically a simple programming language. The +structure of a program involves loading in genotypes in one or more +batches, and then either manipulating single batches, or doing comparisons +between batches. Currently there can be up to 2000 batches of genotypes, but +we will eventually remove this limit. +

+

+The rest of this file describes how individual commands work, as well +as some notes on other languages features, like how to use variables. As +a formatting guide, command arguments will be presented between brackets, +such as [filename]. If that argument is +mandatory, it will be in blue. If it is optional, it will be in green, and +(if relevant) a default value will be listed, such as +[filename='output.dat']. +

+ +

 

+

Analyze Mode Commands

+ +

+Analyze mode provides a number of commands for loading, manipulating, +and saving analysis data. In addition to the analyze mode specific +commands detailed in the following sections, all of the +Avida actions can be called as well. +

+ +

 

+

Load Commands

+

+There are currently four ways to load in genotypes: +

+
+
LOAD_ORGANISM [filename]
+
+ Load in a normal single-organism file of the type that is output + from Avida. These consist of lots of organismal information inside + of comments, and then the full genome of the organism with one + instruction per line. +
+
LOAD [filename]
+
+ Load in a file that contains a list of genotypes, one-per-line with + additional informaiton about those genotypes. Avida now includes a header + on such files indicating the values containted in each column. +
+
LOAD_SEQUENCE [sequence]
+
+ Load in a user-provided sequence as the genotype. Avida has a + symbol associated with each instruction; this command is simply + followed by a sequence of such symbols that is than translated back + into a proper genotype. +
+
+ LOAD_MULTI_DETAIL [start-UD] + [step-UD] [stop-UD] + [dir='./'] [start batch=0] +
+
+ Allows the user to load in multiple detail files at once, one per + batch. This is helpful when you're trying to do parallel analysis + on many detail files, or else to create a phylogenetic depth map. +
Example: LOAD_MULTI_DETAIL 100 100 100000 ../my_run/run100/ +
+ This would load in the files detail_pop.100 through detail_pop.100000 + in steps of 100, from the directory of my choosing. Since 1000 files will + be loaded and we didn't specify starting batch, they will be put in + batches 0 through 999. +
+
+ +

+A future addition to this list is a command that will use the "dominant.dat" +file to identify all of the dominant genotypes from a run, and then lookup and +load their individual genomes from the archive directory. +

+ + +

 

+

Batch Control Commands

+

+All of the load commands place the new genotypes into the current batch, +which can be set with the SET_BATCH command. Below is the list of control +functions that allow you to manipulate the batches. +

+ +
+
SET_BATCH [id]
+
+ Set the batch that is currently active; the initial active batch + at the start of a program is 0. +
+
NAME_BATCH [name]
+
+ Attach a name to the current batch. Some of the printing methods + will print data from multiple batches, and we want the data from each + batch to be attached to a meaningful identifier. +
+
PURGE_BATCH [id=current]
+
+ Remove all genotypes in the specified batch (if no argument is given, + the current batch is purged. +
+
DUPLICATE [id1] [id2=current]
+
+ Copy the genotypes from batch id1 into id2. By default, + copy id1 into the current batch. Note that duplicate is + non-destructive so you should purge the target batch first if + you don't want to just add more genotypes to the ones already in + that batch. +
+
STATUS
+
+ Print out (to the screen) the genotype count of each non-empty batch + and identify the currently active batch. +
+
+ + +

 

+

Analysis Control Commands

+ +

+There are several other commands that will allow you to interact with the +analysis mode in some very important ways, but don't actually trigger any +analysis tests or output. Below are a list of some of the more important +control commands. +

+ +
+
SYSTEM [command]
+
+ Run the command listed on the command line. This is particularly + useful if you need to unzip files before you can use them, or if + you want to delete files no longer in use. +
+
CLOSE_FILE [filename]
+ Close a file. This is useful for instances where your script creates + lots of unique files using command that support reentrant usage, such + as DETAIL_AVERAGE for example. +
+
INCLUDE [filename]
+
+ Include another file into this one and run its contents immediately. + This is useful if you have some pre-written routines that you want + to have available in several analysis files. Watch out because there + are currently no protections against circular includes. +
+
INTERACTIVE
+
+ Place Avida analysis into interactive mode so that you can type + commands have have them immediately acted upon. You can place this + anywhere within the analyze file, so that you can have some + processing done before interactive mode starts. You can type quit + at any point to continue with the normal processing of the file. +
+
DEBUG [message]
+
ECHO [message]
+
+ These are both echo commands that will print a message (the + arguments given) onto the screen. If there are any variables (see + below) in the message, they will be translated before printing, so + this is a good way of debugging your programs. +
+
+ + +

 

+

Genotype Manipulation Commands

+ +

+Now that we know how to interact with analysis mode, and load in genotypes, +its important to be able to manipulate them. The next batch of commands +will do basic analysis on genotypes, and allow the user to prune batches +to only include those genotypes that are needed. +

+ +
+
RECALCULATE [use_resources=0] [update=-1] [use_random_inputs=0] [env_input.1 env_input.2 env_input.3]
+
+ Run all of the genotypes in the current batch through a test CPU + and record the measurements taken (fitness, gestation time, etc.). + This overrides any values that may have been loaded in with the + genotypes. The use_resources flags signifies whether or not the + test cpu will use resources when it runs. If resources are used, the + update parameter allows setting resource values from a specific time point + in the resource list. For more information on resources, see the + summary below. If the use_random_inputs flag + is set, then organisms will be provided with new, random input strings for + each trace as they would experience during an actual Avida run. By default, + the same inputs are provided every time to organisms in analysis mode. + If additional arguments are specified after use_random_input's value, these + integers will be used as environmental inputs for the genotype's test cpu + recalculation. Manually specified test cpu inputs must conform to the pseudo-random + formatting described in cEnvironment::SetupInputs. Phenotypic plasticity information is not available from the + RECALCULATE command; use RECALC with num_trials X, where X is greater than 1, + for phenotypic plasticity statistics. +
+
RECALC [use_resources] [use_random_inputs] [update N (N=-1)] [use_manual_inputs input.1 input.2 input.3] [num_trials T (T=1)]
+
+ This command will perform the same operations as RECALCULATE but has a few additional features. + Instead of having a specified ordering for inputs to this command, argument order does not matter. + To use resources, for instance, use the flag use_resources following RECALC. + Arguments with parameters must have the values specified immediately after them. For instance +
+    RECALC update 10 use_resources use_manual_inputs 256948023 870730840 1441302276 +
+ will set the update to 10, request the use of resources, and test the genotypes using the inputs 256948023, 870730840, and 1441302276. Manually specified environment inputs must conform to the pseudo-random numbers as + described in cEnvironment::SetupInputs. + Typically, use_manual_inputs will override use_random_inputs, however if num_trials is set to greater than one, manual input specficiation will be overriden + and random inputs will be used to gather phenotypic plasticity information that will be available + for genotype statistics at the bottom of this document. Please note that phenotypic plasticity + analysis perfoemd by using RECALC will reset genotype statistics to the values for the most likely + phenotype. Implicit phenotypic plasticity analysis (e.g. by not calling RECALC or calling RECALC with num_trials 1) + will not re-evaluate the genotype statistics in this manner and instead rely on the initial values or + those values from a single recalculation. +
FILTER [stat] [relation] [test_value] [batch=current]
+
+ Perform the given test on all genotypes and Remove all those that do not pass. Stat indicates which + metric you want to compare, relation is the test to perform (==, !=, <, >, <=, or >=), and + test_value is the value to compare it to. For example
+   FILTER fitness >= 1.5
+ will save only those genotypes with a fitness greater than or equal to 1.5. Set the section on + Genotype Statistics for more information on what keywords can be used here. +
+
FIND_GENOTYPE [type='num_cpus' ...]
+
+ Remove all genotypes but the one selected. Type indicates which + genotype to choose. Options available for type are num_cpus (to + choose the genotype with the maximum organismal abundance at time of + printing), total_cpus (number of organisms ever of this genotype), + fitness, length, or merit. If a the type entered is numerical, it is + used as an id number to indicate the desired genotype (if no such id + exists, a warning will be given). Multiple arguments can be given to + this command, in which case all those genotypes in that list will be + preserved and the remainder deleted. If no argument is passed for type, it uses max num_cpus as default. +
+
FIND_ORGANISM [random]
+
+ Picks out a random organism from the population and removes all + others. It is different from FIND_GENOTYPE because it takes into + account relative number of organisms within each genotype. To pick + more than one organisms, list the word 'random' multiple times. This + is essentially sampling without replacement from the population. +
+
FIND_LINEAGE [type="num_cpus"]
+
+ Delete everything except the lineage from the chosen genotype back + to the most distant ancestor available. This command will only + function properly if parental information was loaded in with the + genotypes. Type is the same as the FIND_GENOTYPE command. +
+
+ FIND_SEX_LINEAGE [type="num_cpus"] + [parent_method="rec_region_size"] +
+
+ Delete everything except the lineage from the chosen genotype back + to the most distant ancestor available. Similar to FIND_LINEAGE but + works in sexual populations. To simplify things, only maternal lineage plus + immediate fathers are saved, i.e. info about father's parents is discarded. + The second option, parent_method, determines which parent is considered the + 'mother' in each particular recombination. If parent_method is "rec_region_size" : + 'mother' is the parent contributing more code to the offspring genome + (default); if it's genome_size, 'mother' is the parent with the longer + genome, no matter how much of it was contributed to the offspring. + This command will only function properly if parental information was + loaded in with the genotypes. Type is the same as the FIND_GENOTYPE command. +
+
ALIGN
+
+ Create an alignment of all the genome's sequences; It will place '_'s + in the sequences to show the alignment. Note that a FIND_LINEAGE + must first be run on the batch in order for the alignment to be + possible. +
+
SAMPLE_ORGANISMS [fraction] [test_viable=0]
+
+ Keep only fraction of organisms in the current batch. This + is done per organism, not per genotype. Thus, genotypes of high + abundance may only have their abundance lowered, while genotypes + of abundance 1 will either stay or be removed entirely. If test_viable is + set to 1, sample only from the viable organisms. +
+
SAMPLE_GENOTYPES [fraction] [test_viable=0]
+
+ Keep only fraction of genotypes in the current batch. If test_viable is + set to 1, sample only from the viable genotypes. +
+
RENAME [start_id=0]
+
+ Change the id numbers of all the genotypes to start at a given value. + Often in long runs we will be dealing with ID's in the millions. In + particular, after reducing a batch to a lineage, we will often want + to number the genotypes in order from the ancestor to the final one. +
+
+ + +

 

+

Basic Output Commands

+ +

+Next, we are going to look at the standard output commands that will used to +save information generated in analyze mode. +

+ +
+
PRINT [dir='archive/'] [filename]
+
+ Print the genotypes from the current batch as individual files (one + genotype per file) in the directory given. If no filename is specified, + the files will be named by the genotype name, with a .gen appended to + them. Specifying the filename is useful when printing a single genotype. +
+
TRACE [dir='archive/'] [ use_resources=0] [update=-1] [ use_random_inputs=0] [env_input.1 env_input.2 env_input.3]
+
+ Trace all of the genotypes and print a listing of their execution. + This will show step-by-step the status of all of the CPU components + and the genome during the course of the execution. The filename used + for each trace will be the genotype's name with a .trace appended. + The use resources flag signifies whether or not the test cpu will use + resources when it runs. If resources are used, the update parameter allows + setting resource values from a specific time point in the resource list. + For more information on resources, see the summary below. + If the use_random_inputs flag is set, then organisms will be provided with new, + random input strings for each trace as they would experience during an actual Avida run. + By default, the same inputs are provided every time to organisms in analysis mode. You can + manually specify environmental inputs by setting use_random_inputs to 0 setting env_input.X + values. Manually specified environment inputs must conform to the pseudo-random numbers as + described in cEnvironment::SetupInputs. +
+
PRINT_TASKS [file='tasks.dat']
+
+ This will print out the tasks doable by each genotype, one per line + in the output file specified. Note that this information must either + have been loaded in, or a RECALCULATE (or RECALC) must have been run to collect + it. +
+
+ PRINT_PHENOTYPES [file='phenotype.dat'] + [total_task_count] + [total_task_performance_count] +
+
+ Prints phenotypes in the current batch as determined by task-signature. Default statistics for each phenotype are number of organisms, number of genotypes, average genome length, average gestation time, viability, and tasks performed. Using the total_task_count and/or total_task_performance_count flags will add that statistic to the output. (In the case of total_task_performance_count, this will be an average over the members of the phenotype.) +
+
DETAIL [file='detail.dat'] [format ...]
+
+ Print out all of the stats for each genotype, one per line. The + format indicates the layout of columns in the file. If the filename + specified ends in .html, html formatting will be used instead of + plain text. For the format, see the section on + Genotype Statistics below. +
+
+ DETAIL_TIMELINE [file='detail_timeline.dat'] + [time_step=100] + [max_time=100000] +
+
+ Details a time-sequence of dump files. +
+
+ DETAIL_BATCHES [file='detail_baches.dat'] + [format ...] +
+
+ Details all batches. +
+
+ DETAIL_INDEX [file] + [min_batch] [max_batch] + [format ...] +
+
+ Detail all the batches between min_batch and max_batch. +
+
+ DETAIL_AVERAGE [file="detail.dat"] + [format ...] +
+
+ Detail the current batch, but print out the average for each argument, as opposed to the + individual values for each genotype, the way DETAIL would. Arguments are the same as for DETAIL. + it takes into account the relative abundance of each genotype in the batch when calculating the + averages. +
+
+ + +

 

+

Analysis Commands

+ +

+And at last, we have the actual analysis commands that perform tests on +the data and output the results. +

+ +
+
+ ANALYZE_EPISTASIS [file='epistasis.dat'] + [num_test=(all)] +
+
+ For each genotype in the current batch, test possible + double mutatants, and single mutations composing them; print both of + individual relative fitnesses and the double mutant relative fitness. + By default all double mutants are tested. If in a hurry, specify the + number to be tested. +
+
+ MAP_TASKS [dir="phenotype/"] + [flags ...] [format ...] +
+
+ Construct a genotype-phenotype array for each genotype in the current batch. The format is + the list of stats that you want to include as columns in the array + (see Genotype Statistics for more info). Additionally you can have + special format flags; the possible flags are 'html' to print output in HTML format, and + 'link_maps' to create html links between consecutive genotypes in a lineage. The flag + 'use_manual_inputs input.1 input.2 input.3' where input.X are integers + allow for designated environmental inputs to be used when evaluating the genotype-phenotype mapping. + Manually specified environment inputs must conform to the pseudo-random numbers as + described in cEnvironment::SetupInputs. +
+
+ MAP_MUTATIONS [dir="mutations/"] + [flags ...] +
+
+ Construct a genome-mutation array for each genotype in the + current batch. The format has each line in the genome as a row + in the chart, and all available instructions representing the columns. + The cells in the chart indicate the fitness were a mutation to + occur at the position in the matrix, to the listed instruction. + If the 'html' flag is used, the charts will be output in HTML format. +
+
+ MAP_DEPTH [filename='depth_map.dat'] + [min_batch=0] [max_batch=cur_batch-1] +
+
+ This will create a depth map (like those we use for phylogeny + visualization) in the filename specified. You can direct which + batches to take this from, but by default it will work perfectly after + a LOAD_MULTI_DETAIL. +
+
+ AVERAGE_MODULATITY [file='modularity.dat'] + [task.0 task.1 task.2 task.3 task.4 task.5 + task.6 task.7 task.8] +
+
+ Calculate several modularity measuers, such as how many tasks is an + instruction involved in, number of sites required for each task, etc. + The measures are averaged over all the organisms in the current batch + that perform any tasks. For the full output list, do + AVERAGE_MODULATITY legend.dat At the moment doesn't support html + output format and works with only 1 and 2 input tasks. +
+
+ HAMMING [file="hamming.dat"] + [b1=current] [b2=b1] +
+
+ Calculate the hamming distance between batches b1 and b2. If only + one batch is given, calculations are on all pairs within that batch. +
+
+ LEVENSTEIN [file='lev.dat'] + [batch1] [b2=b1] +
+
+ Calculate the levenstein distance (edit distance) between batches b1 + and b2. This metric is similar to hamming distance, but calculates + the minimum number of single insertions, deletions, and mutations to + move from one sequence to the other. +
+
+ SPECIES [file='species.dat'] + [batch1] [batch2] + [num_recombinants] +
+
+ Calculates the percentage of non-viable recombinants between all + pairs of organisms from batches 1 and 2. Number of random recombination + events for each pair of organisms is specified by num_recombinants. + Recombination is done in the same way as in the birth chamber when + divide-sex is executed. +
Output: Batch1Name Batch2Name AveDistance Count FailCount +
+
+ RECOMBINE + [batch1] [batch2] + [batch3] [num_recombinants] +
+
+ Similar to Species command, but instead of calculating things on the spot, + just create all the recombinant genotypes using organisms from baches 1 and 2 + and put them in the batch3. +
+
+ ANALYZE_REDUNDANCY_BY_INST_FAILURE +
+
+ Determine redundancy by calculating the percentage of the lifetimes where fitness is decreased over a range of instruction failure probabilities. + +
+
+ ANALYZE_COMPLEXITY + [mut_rate] [directory] + [useResources] [batchFrequency] +
+
+ Loops through each genotype in the batch and tests the fitness of each single site mutant. useResources is a flag to set whether the testCPU should use resources when testing the mutants. Calculates probabilities at mutation selection balance, normalizes fitness values, and calculates and outputs complexity based on entropy. +
+ +
+ ANALYZE_LINEAGE_COMPLEXITY +
+
+ Loops through each genotype in the batch and calculates the number of positive and neutral mutations for single and double mutations. Calculates entropy as (log(pos_neut_mut/( pow((double)num_insts,(double)2)*(gen_length)*(gen_length-1)*(0.5))) / log(num_insts) where num_insts is the number of instructions in the instruction set. Calculates and outputs complexity as gen_length-entropy. +
+ +
+ ANALYZE_KNOCKOUTS +[file_name] [max_knockouts] +
+
+ Loops through all genomes in batch and tests the removal of each instruction (-2=lethal, -1=detrimental, 0=neutral, 1=beneficial). If max_knockouts is more than one, also tests pairs of knockouts. If both individual knockouts are both harmful, but in combination they are neutral or even beneficial, they should not count as information. If the individual knockouts are both neutral (or beneficial?), but in combination they are harmful, they are likely redundant to each other. For now, count them both as information. Outputs the counts of each type of instruction. + +
+ +
+ GET_SKELETONS +[max_knockouts=2] +
+
+ Similar to analyze_knockouts, however instead of just counting the number of non-informative sites, it removes completely non-informative (i.e. neutral) sites, and replaces sites that are informative only as placeholders with the NULL instruction. This creates genotype "skeletons". If max_knockouts is 1, it only tests single knockouts. If max_knockouts is more than 1 (default), it tests double knockouts as well (such as inc and then dec which are only neutral when removed together). (Development note: GET_SKELETONS can be called in analyze mode to skeletonize the current batch, but if you're building a more complicated command that involves skeletons, take a look at helper function with the same name that returns a vector of skeletons.) + +
+ +
+ ANALYZE_POP_COMPLEXITY +
+
+ Loops through all genotypes in batch and outputs the complexity of each genotype as 1 - entropy. + +
+ +
+ ANALYZE_NEWINFO +[mutation_rate] [directory] +
+
+ Only works for fixed length runs and requires lineage in the batch. Calculates the information of each organism and its parent about the environment and finds if there is a gain or decrease of information. Compares parent and child information at each instruction site to determine if information has been gained or lost. Calculates information the same as ANALYZE_COMPLEXITY. + +
+ +
+ ANALYZE_MUTATION_TRACEBACK +
+
+ Works best on lineages and requires fixed length genomes. Loops through each genotype to check for mutations from the previous genotype in the lineage and then tests if those mutations are currently adaptive. Prints out the number of beneficial, neutral, detrimental and static sites at the given lineage depth. + +
+ +
+ ANALYZE_COMPLEXITY_DELTA +
+
+ This command will examine the current population, and sample mutations to see what the distribution of complexity changes is. Only genotypes with a certain abundance (default=3) will be tested to make sure that the organism didn't already have hidden complexity due to a downward step. + +
+ +
+ +

 

+

Building Input Files for Avida

+ +

+These commands build input files for Avida, using the capabilities of analyze mode to +automate some tedium. +

+ +
+
+ WRITE_CLONE [file='clone.dat'] + [num_cells=-1] +
+
+ Creates a clone population file (as SaveClone) + from the current batch, suitable for loading with LoadClone. + The starting update is 0 and the archive is empty. num_cells should be the number + of cells in the world -- the default value of -1 will not be accepted by LoadClone, + so be sure to specify the correct number. +
+ Warning: Unlike SaveClone, WRITE_CLONE does not preserve location. + Any spatial structure the population had is lost. +
+
+ WRITE_INJECT_EVENTS [file='events_inj.cfg'] + [start_cell=0] [lineage=0] +
+
+ Creates an events file which injects all the genotypes of the current + batch at update 0. Injection starts at the given start_cell id and increments + upward. All injected organisms are assigned the given lineage label and start + with the relevant merit; num_cpus copies of each genotype are injected. +
+ Warning: injection is in order that the genotypes appear in the batch. + This will break any spatial structure your population may have had. +
+
+ WRITE_INJECT_INITIAL [file='events_inj.cfg'] + [start_cell=0] [lineage=0] +
+
+ Creates an events file which injects all the genotypes of the current + batch before update 0 (same as WRITE_INJECT_EVENTS but doesn't cause no organism errors). Injection starts at 0 (this is made for reintroduction of single organisms only!) and injects a single organism only. Injected organism is assigned the given lineage label and starts + with the relevant merit. +
+ Warning: injection is in order that the genotypes appear in the batch and doesn't take into account the original location. + This will break any spatial structure your population may have had. +
+ +
+ WRITE_COMPETITION [join_UD=0] + [start_merit=50000] [file='events_comp.cfg'] + [batch_A=cur_batch-1] + [file=batch_B=cur_batch] [grid_side=-1] + [lineage=0] +
+
+ Creates an events file which acts much like the one produced + by WRITE_INJECT_EVENTS, but injects two populations (from the given batches), separates + the populations at update 0 (via SeverGridRow grid_side), and joins them at the given + join_UD. Organisms from batch_A are injected starting at cell id 0; organisms from + batch_B are injected starting at cell id grid_side*grid_side. (If grid_side is negative, + an attempt will be made to infer it from the number of organisms in the population.) +
+ Each population should be square, of grid_side x grid_side dimensions. (You will have + to set up the world in avida.cfg to have WORLD_X of grid_side and WORLD_Y of 2*grid_side.) + Each population may not be larger than 10,000 organisms. Organisms from batch_A will + be assigned the given lineage label; organisms from batch_B will be assigned the given + lineage label + 1. +
+ Warning: Like WRITE_INJECT_EVENTS, WRITE_COMPEITITIONS will destroy any + spatial structure the populations may have had. Also, since it severs/joins only the grid_side + row, it is not suitable for use with WORLD_GEOMETRY values other than 1 (bounded grid). +
+
+ + +

 

+

Using Test CPU Resources Summary

+ +

+This summary is given to help explain the use and constraints for using resources. +

+

+When a command specifies the use of resources for the test cpu, it should not +affect the state of the test cpu after the command has finished. However, this +means that the test cpu is no longer guaranteed to be reentrant. Each command +will set up the environment and the resource count in the test cpu with it's own +environment and resource count. When the command has finished it will set the the +test cpu's environment and resource count back to what they were before the command +was executed. +

+

+Resource usage for the test cpu occurs by setting the environment and then +setting up the resource count using the environment. Once the resource +count has been set up, it will not change during the use of the test cpu. +When an organism performs and IO, completing a task, the concentrations are +not changed. This was a design decision, but is easily changed. +

+

+In analyze, a new data structure was included which contains a time ordered +list of resource concentrations. This list can be used to set up resources +from different time points. By using the update parameter in the RECALCULATE (or RECALC) function, +you can use the resource concentrations from a specified time +point. If the LOAD_RESOURCES command is not called, the list defaults to +a single entry which is the the initial concentrations of the resources +specified in the environment configuration file. +

+ +
+
PRINT_TEST_CPU_RESOURCES
+
+ This command first prints the whether or not the test cpu is using + resources. Then it will print the concentration for each resource. +
+
LOAD_RESOURCES [file_name="resource.dat"][ class="cmdargopt">resource_cpu_cycle_offset=0]
+
+ This command loads a time oriented list of resource concentrations. + The command takes a file name containing this type of data, and + defaults to resource.dat. The format of the file must be the same + as resource.dat, and each line must be in the correct chronological + order with oldest first. + The resource_cpu_cycle_offset parameter will influence which update RECALCULATE, + etc. will use from the resource.dat file. Specifically, the update specified + in RECALCULATE, etc. will have resource_cpu_cycle_offset / AVE_TIME_SLICE + (integer division) added to it. Unless you know exactly why you would use this + option, you should leave it at its default of 0. +
+
+ + + +

 

+

Genotype Statistics

+ +

+ Avida analyze mode recognizes several keywords that correspond to information about genotypes. + Several commands (such as DETAIL and MAP) require the use of these as format parameters + to specify what genotypic features should be output. Others (such as FILTER) use them to identify + specific genotypes that possess certain qualities. Before these commands are used, other + processing functions may need to be run. +

+

+Allowable formats after a normal load (assuming these values were available +from the input file to be loaded in) are: +

+
+ + + + + + + + + + + + + + + + + + + + + +
id (Genome ID)parent_id (Parent ID)parent2_id (Second Parent ID in sexual genotypes)
num_cpus (Number of CPUs)total_cpus (Total CPUs Ever)length (Genome Length)
update_born (Update Born)update_dead (Update Dead)depth (Tree Depth)
lineage (Unique Lineage Label)sequence (Genome Sequence)task_list (List of all tasks performed)
+
+ +

+After a RECALCULATE (or RECALC), these additional formats become available: +

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
viable (Is Viable [0/1])copy_length (Copied Length)exe_length (Executed Length)
merit (Merit)comp_merit (Computational Merit)gest_time (Gestation Time)
efficiency (Replication Efficiency)fitness (Fitness)div_type (Divide type used; 1 is default)
mate_id (Mate Selection ID Number + (sexual genotypes))executed_flags (Executed Flags)task_order (Task Performance Order)
task.n (# of times task number n is done)task.n:binary (is task n done, 0/1)total_task_count (# of unique tasks done)
total_task_performance_count (total # of tasks done)inst.n (# of times instruction #n is done)r_tot.n (amount of resource n added to the organism's store in its lifetime)
r_avail.n (amount of resource n in organism's store)r_spec.n (# of times specification #n is used)
+
+ +

+It gives a count of 0 if there is no such instruction. +

+ +

+A note on r_spec.n: This counts nop specifications done by any and all "collect-type" instructions -- that is, any instruction that uses the helper function DoCollect. If more than one such instruction is included in the instruction set, r_spec.n will include specification counts for both instructions without any differentiation. +For details on what the specification numbers mean, see cCodeLabel::AsIntUnique. +

+ +

+If a FIND_LINEAGE was done before the RECALCULATE (or RECALC), the parent +genotype for each regular genotype will be available, enabling the +additional formats: +

+ +
+ + + + + + + + + + + + + + + + +
parent_dist (Parent Distance)ancestor_dist (Ancestor Distance)
comp_merit_ratio, (Computational Merit Ratio with parent)efficiency_ratio (Replication Efficiency Ratio with parent)
fitness_ratio (Fitness Ratio with parent)parent_muts (Mutations from Parent)
html.sequence (Genome Sequence in Color; html format)
+
+ +

+If an ALIGN is run, one additional format is available: +

+ +
+ + + + +
alignment (Aligned Sequence)
+
+ +

+If a RECALCULATE (or RECALC) was done before the ALIGN, the following format is available: +

+ +
+ + + + +
alignment_executed_flags (Alignment Executed Flags)
+
+ +

+If tags have been applied to genotypes in analyze mode, an additional format +is available: +

+ +
+ + + + +
tag (Genotype Tag)
+
+ +

+There are a handful of commands that will automatically perform +landscapping. The landscape will only be run once per organism even when +multiple output variables are used. For enhanced performance on +multi-processor/multi-core systems, see the +PrecalcLandscape action. +

+ +
+ + + + + + + + + + + + + +
frac_dead (Fraction of Lethal Mutations)frac_neg (Fraction of Harmful Mutations)
frac_neut (Fraction of Neutral Mutations)frac_pos (Fraction of Beneficial Mutations)
complexity (Physical Complexity of Organism)land_fitness (Average Mutation Fitness)
+
+ +

+Phenotypic plasticity information is available through a number +of different commands. This information will be gathered in one +of two manners. If RECALC num_trials X is called, where X is greater +than 1, phenotypic plasticity information for each genotype in the +batch will be collected. If RECALC is not called or is called with +with just one trial (the default for RECALC), then using these commands will request 1000 +trials for each genotype to gather plasticity information. Requesting an analysis +of phenotypic plasticity in this manner will not re-evaluate other genotype statistics. +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
num_phen (Number of Phenotypes Identified)phen_avg_fitness (Weighted Average Fitness)
num_trials (Number of Phenotype Tests)phen_entropy (Phenotypic Entropy [bits])
phen_max_fit_freq (Maximum Fitness Phenotype Frequency)phen_max_fitness (Maximum Phenotype Fitness)
phen_min_fit_freq (Minimum Fitness Phenotype Frequency)phen_min_fitness (Minimum Phenotype Fitness)
phen_likely_freq (Most Likely Phenotype Frequency)phen_likely_fitness (Fitness of the Most Likely Phenotype)
prob_task.n (Probability of task n being performed) prob_viable (Probability of genotype viability)
+
+ +

Variables

+ +

+For the moment, all variables can only be a single character (letter or +number) and begin with a $ whenever they need to be translated to their +value. Lowercase letters are global variables, capital letters are +local to a function (described later), and numbers are arguments to a +function. A $$ will act as a single dollar sign, if needed. +

+ +
+
SET [variable] [value]
+
+ Sets the variable to the value... +
+
CONFIG_GET [config variable] [variable]
+
+ Retrieves the value of the supplied configuration variable and places it into the supplied analyze mode variable. + For example, 'CONFIG_GET RANDOM_SEED r' will place the value of the random number seed (as specified in the + configuration settings) into the variable r. +
+
CONFIG_SET [config variable] [value]
+
+ Sets the supplied configuration variable to the value specified with the command. +
+
+ FOREACH [variable] [value] + [value ...] +
+
+ Set the variable to each of the values listed, and run the code that + follows between here and the next END command once for each of + those values. +
+
+ FORRANGE [variable] [min_value] + [max_value] [step_value=1] +
+
+ Set the variable to each of the values between min and max (at steps + given), and run the code that follows between here and the next END + command, once for each of those values. +
+
+ + +

 

+

Functions

+ +

+These functions are currently very primitive with fixed inputs of +$0 through $9. $0 is always the function name, and then there can be up +to 9 other arguments passed through. Once a function is created, it can +be run just like any other command. +

+ +
+
FUNCTION [name]
+
+ This will create a function of the given name, including in it all + of the commands up until an END is found. These commands will be + bound to the function, but are not executed until the function is + run as a command. Inside the function, the variables $1 through $9 + can be used to access arguments passed in. +
+
+ +

+Currently there are no conditionals or mathematical commands in this +scripting language. These are both planned for the future. +

\ No newline at end of file diff --git a/docs/documentation/Analyze-mode-:-building-your-own-commands.md b/docs/documentation/Analyze-mode-:-building-your-own-commands.md new file mode 100644 index 0000000..0b7c802 --- /dev/null +++ b/docs/documentation/Analyze-mode-:-building-your-own-commands.md @@ -0,0 +1,29 @@ +One really useful feature in analyze mode is the ability for the user to construct a variety of their own commands without modifying the source code. This is done with the FUNCTION command. For example, if you know you will always need a file called lineage.html with very specific information in it, you might write a helper command for yourself as follows: + +
+  FUNCTION MY_HTML_LINEAGE  # arg1=run_directory
+    PURGE_BATCH
+    LOAD $1/detail-100000.spop
+    FIND_LINEAGE num_cpus
+    RECALCULATE
+    DETAIL $1/lineage.html depth parent_dist length fitness html.sequence
+  END
+
+ +This works identically to how we found lineages and printed their data in the section above. Only this time, it has created the new command called MY_HTML_LINEAGE that you can use anytime thereafter. Arguments to functions work similar to variables, but they are numbers instead of letters. Thus $1 translates to the first arguments, $2 becomes the second, and so on. You are limited to 9 arguments at this point, but that should be enough for most tasks. $0 is the name of the function you are running, in case you ever need to use that. + +You may be interested in also using functions in conjunction with the SYSTEM command. Anything you type as arguments to this command gets run on the command line, so you can make functions to do anything that could otherwise be done were you at the shell prompt. For example, imagine that you were going to use a lot of compressed files in your analysis that you would first need to uncompress. You might right a function like: + +
+  FUNCTION UNZIP   # Arg1=filename
+    SYSTEM gunzip $1
+  END
+
+ +This is a shorter example than you might typically want to write a function for, but it does get the point across. This would allow you to just type UNZIP whenever you needed to uncompress something. + +Functions are particularly useful in conjunction with the INCLUDE command. You can create a file called something like my_functions.cfg in your Avida work directory, define a bunch of functions there, and then start all of your analyze.cfg files with the line: + + INCLUDE my_functions.cfg + +and you will have access to all of your functions thereafter. Ideally, as this language becomes more flexible, so will your ability to create functions within the language, so you will be able to develop flexible and useful libraries for yourself. diff --git a/docs/documentation/Analyze-mode-:-finding-lineages.md b/docs/documentation/Analyze-mode-:-finding-lineages.md new file mode 100644 index 0000000..1792c3d --- /dev/null +++ b/docs/documentation/Analyze-mode-:-finding-lineages.md @@ -0,0 +1,18 @@ +Quite often, the portion of an Avida run that we will be most interested in is the lineage from the final dominant genotype back to the original ancestor. As such, there are tools in Avida to get at this information. + +
+  FORRANGE i 100 199
+    SET d /home/charles/dev/avida/runs/evo-neut/evo_neut_$i
+    PURGE_BATCH
+    LOAD $d/detail-100000.spop
+    FIND_LINEAGE num_cpus
+    RECALCULATE
+    DETAIL lineage.$i.html depth parent_dist length fitness html.sequence
+  END
+
+ +This program looks very similar to one in the Using Variables example. The first four lines are actually identical. A .spop detail file contains all of the genotypes that were currently alive in the population at the time it was printed, and by default all of the genotypes that are direct ancestors of those that were still alive. (If you used the save_historic=1 option when you saved this population, the .spop contains only the currently-alive genomes, and you will not find much of a lineage!) + +The .spop file therefore gives us the lineages of the entire population back to the original ancestor. Since we are only interested in a single lineage, the next thing we do is run the FIND_LINEAGE command to pick out a single genotype, and discard everything else except for its lineage. In this case, we pick the genotype with the highest abundance (the most virtual CPUs associated with it) at the time of printing. + +As before, the RECALCULATE command gets us any additional information we may need about the genotypes, and then we print that information to a file using the DETAIL command. The filenames that we are using this time have the format lineage.$i.html, so they are all being written to the current directory with filenames that incorporate the run number right in them. Also, because the filename ends in the suffix '.html', Avida knows to print the file in a proper html format. Note that the specific values that we choose to print take advantage of the fact that we have a lineage (and hence measured things like the genetic distance to the parent) and are in html mode (and thus can print the sequence using colors to specify where exactly mutations occurred). diff --git a/docs/documentation/Analyze-mode-:-testing-a-genome-sequence.md b/docs/documentation/Analyze-mode-:-testing-a-genome-sequence.md new file mode 100644 index 0000000..4e22e07 --- /dev/null +++ b/docs/documentation/Analyze-mode-:-testing-a-genome-sequence.md @@ -0,0 +1,14 @@ +The following program will load in a genome sequence, run it through a test CPU, and output the information about it in a couple of formats. + +
+  VERBOSE
+  LOAD_SEQUENCE rmzavcgmciqqptqpqcpctletncogcbeamqdtqcptipqfpgqxutycuastttva
+  RECALCULATE
+  DETAIL detail_test.dat fitness merit gest_time length viable sequence
+  TRACE
+  PRINT
+
+ +This program starts off with the VERBOSE command so that Avida will print to the screen all of the details about what is going on as it runs the analyze script; I recommend you begin all of your programs this way for debugging purposes. The program then uses the LOAD_SEQUENCE command to allow the user to enter a specific genome sequence in its compressed format. This will translate the genome into the proper genotype as long as you are using the correct instruction set file, since that file determines the mappings of letters to instructions). + +The RECALCULATE command places the genome sequence into a test CPU, and determines its fitness, merit, gestation time, etc. so that the DETAIL command that follows it can have access to all of this information as it prints it to the file "detail_test.dat" (its first argument). The TRACE and PRINT commands will then print individual files about this genome, the first tracing its execution line-by-line, and the second summarizing all sorts of statistics about it and displaying the genome. Since no directory was specified for these commands, archive/ is assumed, and the filenames are org-S1.trace and org-S1.gen. If a genotype has a name when it is loaded, that name will be kept, but if it doesn't, it will be assigned a name starting at org-S1, then org-S2, and so on counting higher. The TRACE and PRINT commands add their own suffixes to the genome's name to determine the filename they will be printed as. diff --git a/docs/documentation/Analyze-mode-:-try-it-yourself-exercises.md b/docs/documentation/Analyze-mode-:-try-it-yourself-exercises.md new file mode 100644 index 0000000..d59099f --- /dev/null +++ b/docs/documentation/Analyze-mode-:-try-it-yourself-exercises.md @@ -0,0 +1,12 @@ +Here are a couple of example problems you can try to see how well you can use analyze mode. These should get you used to working with it for future projects. + +Problem 1. A detail file in Avida contains one line associated with each genotype, in order from the most abundant to the least. Currently, the LOAD command will load the entire file's worth of genotypes into the current batch, but what if you only wanted the top few? You should write a function called LOAD_DETAIL_TOP that takes two arguments. The first ($1) is the name file that needs to be loaded in (just as in the original command), and the second is the number of lines you want to load. + +The easiest way to go about doing this is by using the SYSTEM command along with the Unix command head which will output the very top of a file. If you typed the line: + + head -42 detail-1000.spop > my_temp_file + + +The file my_temp_file would be created, and its contents would be the first 42 lines of detail-1000.spop. So, what you need this function to do is create a temporary file with proper number of lines from the detail file in it, load that temp file into the current batch, and then delete the file (using the rm command). Warning: be very careful with the automated deletions -- you don't want to accidentally remove something that you really need! I recommend that you use the command rm -i until you finish debugging. This problem may end up being a little tricky for you, but you should be able to work your way through it. + +Problem 2. Now that you have a working LOAD_DETAIL_TOP command, you can run LOAD_DETAIL_TOP 1 in order to only load the most dominant genotype from the detail file. Rewrite the example program from the section "Working with Batches" above such that you now only need to work within a single batch. diff --git a/docs/documentation/Analyze-mode-:-using-variables.md b/docs/documentation/Analyze-mode-:-using-variables.md new file mode 100644 index 0000000..734647e --- /dev/null +++ b/docs/documentation/Analyze-mode-:-using-variables.md @@ -0,0 +1,25 @@ +Often, you will want to run the same section of analyze code with multiple different inputs each time through, or else you might simply want a single value to be easy to change throughout the code. To facilitate such programming practices, variables are available in analyze mode that can be altered for each repitition through the code. + +There are actually several types of variables, all of which are a single letter of number. For a command that requires a variable name as an input, you simply put that variable where it is requested. For example, if you were going to set the variable i to be equal to the number 12, you would type: + + SET i 12 + +But later on in the code, how does Avida know when you type an i if you really want the letter 'i' there, or if you prefer the number 12 to be there? To distinguish these cases, you must put a dollar sign '$' before a variable wherever you want it to be translated to its value instead of just using the variable name itself. + +There are a few different commands that allow you to manipulate a variable's value, and sometimes execute a section of code multiple times based off of each of the possible values. Here is one example: + +
+  FORRANGE i 100 199
+    SET d /home/charles/dev/avida/runs/evo-neut/evo_neut_$i
+    PURGE_BATCH
+    LOAD $d/detail-100000.spop
+    RECALCULATE
+    DETAIL $d/detail.dat update length fitness sequence
+  END
+
+ +The FORRANGE command runs the contents of the loop once for each possible value in the range, setting the variable i to each of these values in turn. Thus the first time through the loop, 'i' will be equal to the value '100', then '101', '102', all the way up to '199'. In this particular case, we have 100 runs (numbered 100 through 199) that we want to work with. + +The first thing we do once we're inside the loop is set the value of the variable 'd' to be the name of the directory we're going to be working with. Since this is a long directory name, we don't want to have to type it over every time we need it. If we set it to the variable d, then all we need to do is type '$d' in the future, and it will be translated to the full name. Note that in this case we are setting a variable to a string instead of a number; that's just fine and Avida will figure out how to handle it properly. This directory we are working with will change each time through the loop, and that it is no problem to use one variable as part of setting another. + +After we know what directory we are using, we run a PURGE_BATCH to get rid of all of the genotypes from the last time through the loop (lest we just keep building up more and more genotypes in the current batch) and then we refill the batch by using LOAD to load in all of the genotypes saved in the file detail-100000.spop within our chosen directory. The RECALCULATE command runs all of the genotypes through a test CPU so we have all the statistics we need, and finally DETAIL will print out the stats we want to the file detail.dat, again placing it in the proper directory. The END command signifies the end of the FORRANGE loop. diff --git a/docs/documentation/Analyze-mode-:-working-with-batches.md b/docs/documentation/Analyze-mode-:-working-with-batches.md new file mode 100644 index 0000000..b89ee21 --- /dev/null +++ b/docs/documentation/Analyze-mode-:-working-with-batches.md @@ -0,0 +1,17 @@ +In analyze mode, we can load genotypes into multiple batches and we then operate on a single batch at a time. So, for example, if we wanted to only consider the dominant genotypes at time points 100 updates apart, but all we had to work with were the detail files (containing all genotypes at each time point) we might write a program like: + +
+  SET d /home/charles/avida/runs/mydir/here-it-is
+  SET_BATCH 0
+  FORRANGE u 100 100000 100            # Cycle through updates
+    PURGE_BATCH                        # Purge current batch (0)
+    LOAD $d/detail-$u.spop  # Load in the population at this update
+    FIND_GENOTYPE num_cpus             # Remove all but most abundant genotype
+    DUPLICATE 0 1                      # Duplicate batch 0 into batch 1
+  END
+  SET_BATCH 1                          # Switch to batch 1
+  RECALCULATE                          # Recalculate statistics...
+  DETAIL dom.dat fitness sequence      # Print info for all dominants!
+
+ +This program is slightly more complicated than the other examples, so I added in comments directly inside it. Basically, what we do here is use batch 0 as our staging area where we load the full detail dumps, strip them down to only the single most abundant genotype, and then copy that genotype over into batch 1. By the time we're done, we have all of the dominant genotypes inside of batch 1, so we can print anything we need right from there. diff --git a/docs/documentation/Avida-3-API.md b/docs/documentation/Avida-3-API.md new file mode 100644 index 0000000..47bb9c2 --- /dev/null +++ b/docs/documentation/Avida-3-API.md @@ -0,0 +1,273 @@ +Avida 3 will include and be built around a flexible, extensible application programming interface (API). The intention of the API is to provide a powerful, stable interface to core Avida functionality. + +The API will be broken up into multiple modules that will be connected together to create rich experiments and powerful analyses. The development of this API is very active right now. The following provides an overview of existing components and an estimation of their completeness and stability. + +### API Modules +* core +* data +* environment +* systematics +* util +* viewer + +### Notes +The following are miscellaneous notes, which may or may not be relevant to the current Avida 3.0 plans. Preserved for consideration. + +* Get rid of merit. Organisms have energy (which they absorb by performing reactions) and metabolic rate, which determines how quickly they use that energy to execute instructions. +* Each thread in an organism is placed into the scheduler. When a thread is created, the scheduler assigns it a process ID, and that ID is then freed up with the thread is removed. A thread must keep track of its own ID. When a thread is removed, its ID is placed in a container of free IDs. Only when that container is empty are new IDs created. This will happen rarely enough that its okay if its a slow process. +* New analyze mode! This should be interesting... Require lex & yacc? +* Implement new method of performing mutations. The old stuff should be entirely removed. +* This version will be optimized for stack-based CPUs, but the old register based CPUs should still function fine. +* Make sure all output files have headers. There should be a central object that all files are output through that will make sure this is the case. +* Make events just call analyze scripts. Re-design entire event structure. + +### Mutations.cfg ideas +
+# @CAO : THIS IS A PROTOTYPE FILE FOR HOW I'D LIKE TO SEE MUTATIONS WORK
+
+# This file is used to configure the mutations that occur during an avida
+# run.  The format is simple:
+#
+#   MUTATION     
+#
+# The "trigger" determines when the mutation should be tested for. 
+# Possibilities are -
+#
+#   update  : Test for these mutations each update
+#   divide  : Test during the successful birth of an offspring
+#   parent  : Test on a parent during a divide operation
+#   write   : Test each time an instruction is written to memory
+#   read    : Test whenever an instruction is read from memory.
+#   exec    : Test while an instruction is being processed by the hardware
+#
+# A copy command will perform both a read and a write.  A read mutation will
+# affect the site being read, and are therefore particulaly dangerous.
+#
+# The scope of a mutation type determines how much will be mutated.  There
+# are currently a few options -
+#
+#   genome  : A single mutation occurs in the whole genome.
+#   local   : Mutations occur at a local position.  If no local position can
+#             be specified in the trigger (i.e. 'parent') nothing happens.
+#   prop    : Proportional: same as local, but the rate used is normalized to
+#             1/genome_length
+#   global  : Same as local, but *all* positions in the genome are tested.
+#   spread  : Same as prop, but all positions are tested.
+#
+# The type of mutation determines what happens when a mutation does occur
+# at a site -
+#
+#   point    : Change the affected locus to a random instruction.
+#   insert   : Insert a random instruction at this poistion.
+#   delete   : Remove the instruction currently at this position.
+#   head_inc : Advance heads at this position.
+#   head_dec : Retreat heads at this position.
+#   temp     : Don't change the genome, but temporarily act as if a change has
+#              occured.  This is only relevent for types "read" and "exec".
+#   kill     : Sterilize the organism affected so that it is effectively dead.
+#
+# Finally, the rate indicates the frequency at which mutations occur.
+#
+# EXAMPLES:
+#
+# Old stype copy mutation rate of 0.0075:
+#
+#   MUTATION copy_mutation write local point 0.0075
+#
+# Old style divide insertion of 0.05:
+#
+#   MUTATION divide_ins divide genome insert 0.05
+#
+# Keeping an average genome mutation rate at 2.0 with copy mutations...
+#
+#   MUTATION copy_spread write prop point 2.0
+#
+# Most types of mutations that people want should be possible.
+#
+# CONFLICTS:
+#  Only local & spread scopes can interact with head/temp types.
+#  Divide trigger cannot work with local & spread scopes.
+
+ + +### Stack-based Instruction Set +
+# This new CPU has 8 heads, 2 of each main type, and otherwise has four
+# stacks (A, B, C, and D) and no registers.
+
+# Base Instruction Set
+# Nops (1-4)
+Nop-A      1   # Associated with the Instruction Pointers
+Nop-B      1   # Associated with the Read Heads
+Nop-C      1   # Associated with the Write Heads
+Nop-D      1   # Associated with the Flow Heads
+
+# Other control functions (5)
+Toggle     1  # Causes all instructions to swap to a complementary behavior
+              # affects only the instruction that immediately follows it.
+              # A nop indicates that the associate head should be toggled
+              # to its alternate.  Two toggles will reset all toggled states
+
+# Single input Math -- *modifies* top of ?Stack-B? (6-7)
+Val-Shift  1  # shirt-r before toggle, shift-l after.
+Val-Inc    1  # inc before toggle, dec after
+
+# Double input math -- uses top of Stack-A and Stack-B; pushes result onto
+# the top of Stack-B (8-9)
+Val-Nand   1  # unaffected by toggle
+Val-Add    1  # add before toggle, sub after
+
+# Biological  (10-13)
+SetMemory  1  # Set the write head at the beginning of a memory space.  Up
+              #   to four memory spaces can be used at once.  Nop-A is the
+              #   main genome, and the other nops are possible offspring.
+              #   A nop argument will indicate a space; no nops will find
+              #   an "unclaimed" memory space (if possible)
+              #   Perhaps Toggle can be used for recombination somehow??
+Divide     1  # Divide off offspring memory.  After toggle becomes Inject.
+              #   If threads are active a successful inject will also cause
+              #   a fork.  In either case, it uses the memory that contains
+              #   the active write head.
+Inst-Read  1  # Push the instruction at ?read-head? into Stack-A (advance 
+              #   head) Toggle to move head back by one rather than advance.
+Inst-Write 1  # Pop Stack-A into position at ?write-head? (advance head)
+              #   Toggle to move head back by one rather than advance.
+
+# Flow Control (14-15)
+If-Equal   1  # Compares top of ?Stack-A? with successor (Default: Stack-B)
+              #   Becomes If-NEqual after toggle
+If-Less    1  # Compares top of ?Stack-A? with successor (Default: Stack-B)
+              #   Becomes If-Greater after toggle
+
+# Head Control (16-19)
+Head-Push  1  # Push position of ?IP? head onto Stack-B.
+              #   Toggle to use Stack-D
+Head-Pop   1  # Move ?flow-head? to address in Stack-B (pop Stack-B)
+              #   Toggle to use Stack-D
+
+Head-Move  1  # Move ?IP? head to flow-head
+              #   - if flow-head is given as nop, advance flow-head
+              #   Toggle to decrement flow-head when given as nop.
+Search     1  # Search for matching template, set flow head to last line,
+              #   template size to Stack-A and template distance to Stack-B
+	         #   If no template, move flow-head to next line, set A&B=0.
+              #   Toggle to NOT leave size&distance
+
+# Stack Control (20-24)
+Push-Next  1   # Pop off ?Stack-A? and push on successor   (Default: Stack-B)
+Push-Prev  1   # Pop off ?Stack-B? and push on predecessor (Default: Stack-A)
+Push-Comp  1   # Pop off ?Stack-B? and push on complement  (Default: Stack-D)
+Val-Delete 1   # Pop off (and lose) top value of ?Stack-B?
+Val-Copy   1   # Duplicate the contents at the top of ?Stack-B?
+
+# CPU:
+#  Stack-A (Used in copying & math)
+#  Stack-B (Used for positioning and math)
+#  Stack-C (Input)      -- Filled on birth
+#  Stack-D (Output)     -- Scanned (and emptied) on divide
+#
+# Four nops.  Each nop has a predecessor, successor and complement (opposite)
+#
+#  nop-A -> IP
+#  nop-B -> Read Head
+#  nop-C -> Write Head
+#  nop-D -> Flow Head
+#
+# Note lack of allocate instruction!
+# The organism has additional memory space that the write heads starts out
+# at the beginning of.  It is treated as an extension of the main memory,
+# BUT is local to each thread if there is more than one.
+
+# SAMPLE ORGANISM:
+#
+# Search       #  1:  Find organism end.
+# Nop-C        #  2:  - Match A:A
+# Nop-C        #  3:
+# Head-Push    #  4:  Save end position to Stack-B
+# Nop-D        #  5:  - Flow head is at end...
+# Push-Prev    #  6:  Move end position to Stack-A
+# SetMemory    #  7:  Place write-head in memory space for offspring
+# Search       #  8:  Drop flow head at start of copy loop
+# Inst-Read    #  9:
+# Inst-Write   # 10: 
+# Head-Push    # 11:  Get current position of...
+# Nop-C        # 12:  - Read-Head
+# If-Equal     # 13:  Test if we are done copying...
+# Divide       # 14:  ...If so, divide.
+# Head-Move    # 15:  ...If not, continue with loop.
+# Nop-A        # 16:
+# Nop-A        # 17:
+
+# Other possible, special instructions...
+# ScanWorld  1   # Environment-specific scanning instruction...
+# Val-Swap   1   # Swap top contents of ?Stack-A? with successor (Default: B)
+                 #  Toggle will swap with complement.
+# Inst-Copy  1   # Combine read and write
+# Inst-Move  1   # Like Inst-Copy, but actually deletes original and can
+                 #   move multiple lines at once (as indicated by ?Stack-B?)
+# SearchOut  1   # Like search, but in faced creature.  Needs exact match!
+# Rotate     1   # Rotate to neighbor with template (toggle reverses dir)
+                 #   in mass action, find randomly in population.
+# If-Bit-1   1   # Is last bit of ?Stack-B? a one? (toggle to If-Bit-0)
+# If-Zero    1   # Toggle to If-N-Zero
+# If-InstEqu 1   # Does contents of ?read-head? match successor (write-head)
+                 #   (toggle to If-InstNEqu)
+# Order      1   # Put top two numbers in ?Stack-B? into numerical order
+# Push-Zero  1   # Push a zero onto the top of ?Stack-B?
+# Replicate  1   # Make a full offspring
+
+ 
+# ------- THREADING --------
+# There can only be up to four threads in an organism, specified as
+# Thead-A through Thread-D
+
+# Hardware:
+#  For threads, Stacks A and B are local, while C and D are global.
+#  All heads are local to each thread.
+#   - Read and Flow heads will initialize to fork.
+#   - Write head will initialize on new offspring memory.
+#  Each thread has its own offspring memory.
+#  Each thread keeps its own list of toggled instructions.
+
+# Instructions:
+#  ThreadFork 1   # Create a new thread.  By default this will be the next
+                  #   available thread ID, but if a nop follows it will
+                  #   indicate the thread instead.  If a thread is specified
+                  #   that already exists, its priority will increase to a
+                  #   maximum.  On the original thread executes the next
+                  #   instruction.  Toggle to ThreadKill ?cur-Thread?, which
+                  #   will decrement a thread one step, to a min of 0.
+#  If-Thread  1   # Only execute next instruction if this is ?Thread-A?
+                  #   Toggle to IfNThread
+#  ThreadCopy 1   # Make this thread an exact copy of ?Thread A? including
+                  #   working on the same memory space.  Toggle to ThreadClr
+                  #   which will reset the specifed thread (default current)
+
+# SAMPLE PARASITE
+#
+# Nop-A        #  1: Some nop to extend the template above
+# Toggle       #  2: Toggle the Divide command...
+#  Divide      #  3:   ... to become "Inject"
+# Toggle       #  4: Toggle the If-Equal command...
+#  If-Equal    #  5:   ... to become "If-NEqual"
+# Search       #  6: Locate the end, so we know when to stop.
+# Nop-C        #  7:
+# Nop-D        #  8:
+# Head-Push    #  9: Save the location of the flow head to mark the end.
+# Nop-D        # 10:
+# Push-Prev    # 11:  Move end position to Stack-A
+# SetMemory    # 12:  Claim and empty memory space
+# Search       # 13:  Drop flow head at start of copy loop
+# Inst-Read    # 14:
+# Inst-Write   # 15: 
+# Head-Push    # 16:  Get current position of...
+# Nop-C        # 17:  - Read-Head
+# If-Equal     # 18:  Test if we are done copying... (If-NEqual)
+# Head-Move    # 19:  ...If not, continue with loop.
+# Divide       # 20:  ...If so, Inject!
+# Nop-C        # 21:     ... Into the very end of the host.
+# Nop-C        # 22
+# Head-Move    # 23: Go to the beginning of the copy loop and start over!
+# Nop-A        # 24: End Template
+# Nop-B        # 25:
+
\ No newline at end of file diff --git a/docs/documentation/Avida.cfg.mediawiki b/docs/documentation/Avida.cfg.mediawiki new file mode 100644 index 0000000..cc566b2 --- /dev/null +++ b/docs/documentation/Avida.cfg.mediawiki @@ -0,0 +1,19 @@ +The Avida configuration file (avida.cfg) is the main configuration file for Avida. With this file, the user can setup all of the basic conditions for a run. + +avida.cfg is actually an excellent guide to itself; every option has a description of what it does and what its options are, and many of these pages will simply refer you to the file itself instead of replicating that description. We endeavor here to give extended explanations of particularly common or confusing options, and of settings that interact with other settings. + + +== Configuration Sections == +* [[General Settings]] +* [[Mutation Settings]] +* [[Topology Settings]] : the shape and connectedness of the world +* [[File Settings]] : other configuration files and where to save your data +* [[Instruction Set]] +* [[Reproduction Settings]] : birth and death +* [[Time Slicing Settings]] : how CPU time is distributed among organisms +* [[HTML Output Color Settings]] +* [[Resource Hoarding Settings]] : internal resource storage for organisms +* [[Divide Settings]] : limitations on organism division +* [[Settings for Genealogy Info in the Test CPU]] +* [[Mutations Reversion Settings]] +* [[Analysis Settings]]: threads and variables in analyze mode diff --git a/docs/documentation/Beginner-Documentation.md b/docs/documentation/Beginner-Documentation.md new file mode 100644 index 0000000..03ff7ed --- /dev/null +++ b/docs/documentation/Beginner-Documentation.md @@ -0,0 +1,211 @@ +# Avida: Beginner User Documentation + +As you’re beginning to use Avida to answer research questions, it can be easy to get lost in the extensive amount of variables and settings you can use in Avida. The purpose of this documentation is to identify the features that are most important for you to consider before running an experiment in Avida. For each feature, this documentation will explain what it controls, what options you have, and how and where you set those options. + +## **1. Set up the environment.** +_Why you need to do this_ + +Setting up the environment tells Avida how big your universe is and what shape you want your universe to take. This will be important in determining a) the population cap for your experiment, b) how much (if any) empty space exists in your world, and c) how proportionally (or not) the organisms in your experiment have access to other organisms and resources. What you choose in this portion of the experiment will affect how organisms in your Avida universe interact with each other and, indirectly, the carrying capacity of your Avida universe. + +_What you can do_ + +Avida allows you to customize both the world size and the world geometry. The world size determines the carrying capacity of your Avida world. In Avida (which is based on a grid system), each grid block can be occupied by only one Avida organism. So if you set the Avida grid height to 120 and the Avida grid width to 120, your Avida universe would have a carrying capacity of 14,400. + +World geometry determines what shape your Avida grid will take. By default, the Avida universe is set to taking a toroidal (doughnut) shape. The creators of Avida chose this so that there are no edges in the universe and so that each organism has equal access to resources and neighbors. If, however, having boundaries and edges in your universe is important, you can change the shape of the Avida world to a bounded grid, hexagonal, random connected, and more. Details for what options exist for this setting and what they mean can be found in the avida.cfg file. + +_Where to do it_ + +Both world size and world geometry are set in the avida.cfg file. World size is controlled by the WORLD_X and WORLD_Y controls; world geometry is controlled by the WORLD_GEOMETRY control. Similar to most grid systems, the width is controlled by the WORLD_X control and the height is controlled by the WORLD_Y control. + +_How to do it_ + +To make changes to the default settings for world size and world geometry, 1) find the variables mentioned above in the avida.cfg file, 2) highlight and replace the current values with the ones you selected, and 3) save the file with your new changes. + +## 2. Stock the environment with organisms. + +_Why you need to do this_ + +An experiment can’t run without any organisms to evolve. If you don’t load an organism into the Avida config file, it would be like conducting a culture experimentβ€” without any organisms in the petri dish. + +_What you can do_ + +Avida comes with a number of different organisms you can use to populate your Avida world. Most experiments will use the basic Avida organism (defaultΒ­heads.org). This organism is haploid and asexual. For your first Avida experiments, it is highly recommended that you use the basic Avida organism. Only if your experiment explicitly calls for a different organism should you consider using a different Avida organism. + +_Where to do it_ + +Organisms are stocked (or β€œinjected”) into Avida in the events.cfg file. The command that controls what organisms are injected is the β€œInject” function located here. + +![Events File Screenshot](http://devosoft.org/wp-content/uploads/2015/08/EventsFile2.png) + +_How to Do it_ + +By default, Avida will inject the basic Avida organism (defaultΒ­heads.org). Unless you are changing this to a different organism, feel free to leave the file asΒ­is. + +## 3. Decide how organisms will be born and how organisms will die. + +_Why you need to do it_ + +The functions described in this setting give you control over how organisms enter and leave your Avida universe. Birth method determines where on the Avida grid new organisms are placed. Having control over this function allows you to mimic biological communities (if that’s important to your experiment) or to decide how organisms are dispersed across the Avida universe. + +Death method allows you to determine whether organisms in your world can die from old age or not. This distinction may be crucial for experiments that investigate longevity issues. Population cap controls determine how many organisms are allowed to exist in your Avida universe and, if the population cap is reached, the population cap eldest control will determine if a) the oldest organism in the universe dies or b) a random organism from the universe dies. + +_What you can do_ + +When it comes to placing new organisms in your Avida world, the birth method feature in Avida gives you a few options for where those organisms are placed. By default, new organisms are placed randomly onto the Avida grid. You can change this option, however, via the eleven birth method options found in the avida.cfg file next to the BIRTH_METHOD control. Some options include having new organisms facing the parent organism, replacing the oldest age in the neighborhood, or replacing the oldest within the entire population. + +The death method setting allows you to decide if an organism in your Avida world can die of old age or not. Avida has one setting for turning off this functionβ€” meaning that an organism will never die of old age. Avida has another setting for turning this function on, meaning that organisms who complete a certain number of instructions (i.e., AGE_LIMIT) will die. + +The population cap controls allow you to set a limit on how many organisms can exist in your Avida universe. While this is also partially controlled by the world size (see explanation in Step 1), the population cap can allow you to set an even smaller population maximum in your Avida world if having space and empty squares on the Avida grid is important to you. For example, let’s say I set my Avida world size to be 60 units high and 60 units wide. This would mean that I have set a de facto population cap of 3,600 (60 X 60) because Avida will only allow one organism to occupy a grid cell. + +But this also means that, unless other factors (such as competition or a population cap) come into play, the population will continue growing until it fills each of the 3,600 cells. IF, however, I wanted there to be some extra space protected in the Avida worldβ€” if my experiment called for there to be extra room between organisms β€” I could set a population cap of 3,000 organisms. This means that, no matter how large my world is, there will only ever be a maximum 3,000 organisms in the Avida universe. Setting a population cap allows you to protect empty space and/or to keep a more precise control over your maximum potential population size. + +Similarly, Avida allows you some flexibility over what happens to your Avida organisms when the population cap is reached. You can choose to a) kill off the oldest organism in the population or b) kill off a random member of the population. This choice is more or less critical depending on your research question(s), but should be thought over carefully when setting up your Avida experiment. + +_Where you do it_ + +The birth method and death method settings are found in the reproduction section of the avida.cfg file. Birth method is controlled by the BIRTH_METHOD variable and the death method is controlled by the DEATH_METHOD variable. Controls for the population cap settings, including POPULATION_CAP and POP_CAP_ELDEST, are located in the β€œgeneral group” section of the avida.cfg file. + +_How you do it_ + +To change Avida’s birth method (i.e., where new organisms are placed in the Avida grid), choose the option you would prefer from the avida.cfg documentation (located next to the BIRTH_METHOD control). Highlight and replace the preΒ­selected option (in this case, number 7) with the option you would prefer for your experiment. Be sure to save the file with your changes. + +To change the death method, locate the DEATH_METHOD variable in the avida.cfg file. By default, Avida is set to death method setting 2, which has a deathΒ­byΒ­oldΒ­age feature. If you wish to turn this off, highlight and replace the 2 with a 0 (0 is the setting for no death by old age). If you wish to have organisms die from old age, keep the file the same. + +To set a population cap, find the POPULATION_CAP control in the avida.cfg file, highlight the 0 (Avida defaults to 0/no population cap), and replace it with your population cap number (from our example above, this would be 3000). Do not use commas when writing in your population cap number in Avida. Once you’ve made your changes, save the avida.cfg file. + +The POP_CAP_ELDEST control works by entering in either a 0 (default) or 1 after the control name in the avida.cfg file. Select 0 for a random organism or 1 for the oldest organism to die if the population reaches the carrying capacity (i.e., population cap) you set for the population in the previous step. + +## 4. Stock the environment with resources. + +_Why you need to do this_ + +Just like in biological systems, Avida works by using competition for resources as a motivation for organisms to evolve characteristics that help them secure more resources and, thus, make them more likely to reproduce. In Avida, you have some control over how many resources are available to organisms in your experiment as well as how evenly (or not) those resources are distributed across the Avida grid. + +_What you can do_ + +By default, resources in Avida are infinite and undepletable. This means that there is never a shortage of a resource and that organisms are competing to acquire the most resources out of the infinite resource pool. They are not competing against each other for a limited number of resources. Furthermore, resources are, by default, dispersed evenly within the Avida environment. This means that there is no clustering of resources in a particular area. Organisms placed anywhere on the Avida grid will have equal access to resources. + +While most experiments work well with the default settings, you can change both the amount of resources available (i.e., create a depletable resource) or the dispersal pattern of the resources (i.e., create high and low resource concentration areas) to better answer your research questions. + +_Where you do this_ + +Any changes to the default settings of infinite and evenly dispersed resources are made in the environment.cfg file. +How you do this +Since most experiments don’t require changes to the default settings, changing the dispersal pattern and/or limiting the availability of resources requires more complex instructions. Those instructions, along with more description about what options are available to you, are located on the Avida documentation wiki [here](https://github.com/devosoft/avida/wiki/Environment-file). + +## 5. Decide what task(s) organisms will use to compete for resources and how they will/will not be rewarded for those tasks. + +_Why you need to do this_ + +In Avida, organisms complete logic functions to increase their merit. The more merit an organism in Avida has, the more CPU cycles it will receive. This means that the organism can reproduce faster and, eventually, become a more fit organism. As a researcher, you get to make choices about what logic tasks organisms in your Avida world will be asked to complete and how they will/will not be rewarded for completing these tasks. This will impact what types of behavior(s) you see evolving during your experiment. + +_What you can do_ + +It is important that you decide 1) what kinds of logic tasks organisms in your experiment(s) will be asked to complete, 2) how organisms in your experiment will be rewarded for completing those various tasks, and 3) how an organism’s merit gets added to its pre-Β­existing merit when it successfully completes a logic task. + +### Kinds of logic tasks + +By default, Avida will ask the organisms in your experiment to complete a series of nine logic tasks. This is often referred to in the Avida literature as the β€œdefault logicΒ­9 environment.” These nine logic tasks are listed in the environment.cfg file and move from relatively simple functions to more complex functions. For most experiments, the default logicΒ­9 environment provides a sufficiently complex environment. You can make the environment more complex, however, by adding additional logic tasks. There is a logicΒ­77 environment that adds such complexity but, again, most experiments work successfully with the default logicΒ­9 environment. + +Conversely, if you’re not really interested in looking at tasks or looking at evolved behavior, you can remove some logic tasks or remove the logic tasks all together. This can make your data easier to analyze and will prevent you from having to factor in evolvability later on in your experiment. + +### How organisms are rewarded +Avida allows you to control how organisms are rewarded for completing logic tasks. For every different logic task you ask your organisms to complete, you get to decide a point value reward for completing that task. By default, simple logic tasks receive less reward points than the more complex logic tasks. This is to ensure that organisms have sufficient motivation to attempt to complete the more complicated logic tasks. You can choose, however, to undo this default setting and reward all tasks the same. If you were interested in how a particular behavior evolves you could arbitrarily set the reward value for a certain function significantly higher and see how that impacts evolution. Because the options here are endless, it’s important to keep your research question(s) in mind when deciding how rewards are distributed in Avida. + +### How an organism’s merit is accumulated + +Every time an organism in Avida completes a logic task, it receives increased merit. You have to decide how that newly earned merit will be combined with the organism’s previously accumulated merit. By default, an organism’s merit increases exponentially. This encourages organisms to spend time solving more complicated logic tasks (even though they take more time) because the reward for completing those tasks is exponentially higher than the reward they would receive from completing simpler logic tasks. This also prevents an organism that completes many simple logic tasks from acquiring more merit than an organism who completes a few difficult logic tasks. + +While most experiments find the default settings to be a conducive way of encouraging the evolution of more complicated behavior, there are other settings that may be more appropriate for your particular research goals. More information about what other options are available and how they can be used in your experiment is located on the Avida documentation wiki [here](https://github.com/devosoft/avida/wiki/Environment-file). + +_Where you can do it_ + +All of the settings for logic tasks and task reward are located in the environment.cfg file. When you open the file, you will see the nine default logic tests laid out as in the following example: + +`REACTION NOT not process:value=1.0:type=pow requisite:max_count=1` + +Each line that starts with REACTION marks a different logic task. The variables listed after REACTION in each line determine the reward value, type, and restrictions for that logic task. Here’s an example of how to read these variables. + +In the examples above β€œNOT” would be the name of the logic task and β€œnot” would be the type of logic task (often, these are the same). So this tells you that this logic function is named β€œNOT” and will ask the organisms in your experiment to solve a logic problem that requires them to complete a β€œnot” logic task. (In Avida, this would be an organism correctly knowing to convert the sequence 001101 to 110010). + +The β€œprocess:value=1.0:type=pow” is the part of the REACTION line that determines how much merit an organism receives for completing that task and how that merit gets added to the organism’s preΒ­existing merit. The β€œvalue=1.0” part of the code assigns how much reward value (i.e., increased merit) an organism would receive from successfully completing that task. In this case, an organism gets 1.0 merit points for completing the task. The β€œtype=pow” part of the code determines how newly earned merit from completing this task will be combined with the organism’s preΒ­existing merit. In this example, an organisms merit is increased exponentially (the β€œpow” stands for power). This would mean that an organism would receive a 2^bonus or 2^1 for completing this task. + +The final part of this REACTION lineβ€” β€œrequisite:max_count=1” β€” sets a limit for how many times an organism can receive increased merit from completing this task. By default, this is set to 1, meaning that an organism would only receive increased merit the first time it completed that logic task. After that, the organism would not receive increased merit from repeating the same function. While this default setting encourages organisms to attempt increasingly complex behaviors, it may not work for all experiments and can be replaced with any value you choose. If your experiment requires that there is no merit cap on a particular logic function, you can delete the max_count=1 function completely so that the new code would read: + +`REACTION NOT not process:value=1.0:type=pow` + +_How you do it_ + +As we’ve seen in other portions of the Avida program, you make changes to these settings by highlighting the default value you wish to change and replacing it with your new value. For example, if I wanted to change how much merit an organism received from completing the NOT function in my experiment, I would highlight the source code where it says β€œ1.0” and replace it with a higher value, such as β€œ2.0” so that the final code would read like this (*'s to show changes): + +`REACTION NOT not process:value=**2.0**:type=pow requisite:max_count=1` + +If I also wanted to have the merit an organism receives from completing the NOT function to be +added to their previous merit (as opposed to being increased exponentially), I would highlight 7 +where it says β€œpow” in the documentation and replace it with β€œadd.” Again, the new REACTION line would read like this: + +`REACTION NOT not process:value=2.0:type=**add** requisite:max_count=1` + +If your experiment calls for less logic functions, you can delete a logic task by highlighting and +deleting the undesired logic task. Be sure to delete the _entire_ line, not just part of the command. + +It is also important that you not change either the task name (i.e., NOT) or task type (i.e., not) in the environment.cfg file. This will cause an error with your experiment. When you are done editing this file remember to save your changes. + +## 6. Decide how long your experiment will last. + +_Why you need to do this_ + +By default, Avida will run an experiment for 100,000 updates, where 10 updates are roughly equal to 1 generation. Depending on what type of experiment you’re doing, you may want to lengthen or shorten the default experiment runΒ­time. Setting the experiment update time is like deciding how long you want a certain bacteria to culture and/or how many generations of fruit flies you’re going to analyze. Shorter experiment times in Avida will take less time and will be much less data to analyze and store; however, longer experiments will allow you to see more longΒ­term +evolutionary patterns and population dynamics. + +_Where to do this_ + +The variable that controls the experiment length is located in the event.cfg file and is labeled β€œEXIT” (will be located near the bottom of the file). + +![Events File](http://devosoft.org/wp-content/uploads/2015/08/EventsFile2.png) + +_How to do this_ + +You can change the experiment update length by selecting the number 100000 and replacing it by typing in any positive whole number you select. Be sure to save the file before closing to update your changes. + +## 7. Decide what types of data you will collect from your experiment. + +_Why you need to do this_ + +Avida can collect and print a number of different types of data reports on any experiment. Depending on what your experiment is investigating, different types of data reports may or may not be as useful to you in answering your research question(s). Some of these data files are complex, take a long time to print, and use up a lot of computing/memory power on your device. Therefore, you can save yourself a lot of time and technological resources by intentionally selecting only the files you need Avida to print from your experiment. + +In addition to selecting what files to print, it is also important to select the frequency at which Avida prints your data files. By default, Avida prints a complete set of data files after every 100 updates for the entire duration of your experiment. Depending on how long your experiment lasts and/or if you’re looking at shortΒ­term or longΒ­term evolutionary patterns, this default print frequency might not make sense for your research. + +_What you can do_ + +The types of data files Avida can print are split into two groups: standard data files and nonΒ­standard data files. The standard data files are printed by default in Avida and will save basic data about what is happening in your experiment (more information about what is collected in each of the standard data files is located in the events.cfg file). + +The nonΒ­standard data files keep track of more nuanced and specific data. These files are not printed by default in Avida. Because these files often require that Avida make more calculations, these files take up more computational/memory space on your device. Therefore, it is recommended that you only print the nonΒ­standard data files that are essential to your experiment. Most experiments, especially at the beginner level, do not require any additional data files from the nonΒ­standard data files group. + +Avida also gives you a lot of control over when and how often the program prints data files. In particular, you can control three factors: 1) when Avida starts printing data files, 2) how many update cycles between data file printing, and 3) when Avida stops printing data files. + +You can choose any update cycle to begin and end data collection, and can print data files as frequently (i.e., every 10 updates) or infrequently (i.e., every 10,000 updates) as needed. + +_Where you can do this_ + +All settings to control data file printing are found in the events.cfg file. The standard data files are grouped together towards the beginning of the document and the nonΒ­standard data files are group together towards the end of the document. The print timing and frequency controls are located next to each data file in this document. + +_How you can do this_ + +Each data file is listed in the events.cfg file like this: + + `u 0:100:end PrintAverageData` + +To turn a data file on (i.e., print the file) remove the # from before the file name. Notice that the files in the standard file group don’t have a # at the beginning of the file name; that’s because they are printed (turned on) by default. If you choose to not print a certain data file, add a # to the beginning of the file name that you wish to turn off. For example, if you didn’t want to print the PrintAverageData file, you would insert an # before the u (i.e., `# u 0:100:end PrintAverageData`). The nonΒ­standard data files do have a # before their file name (i.e., `# u 100:100:end PrintTotalsData`). This means that, unless you remove the #, that file will not print. + +When Avida starts printing data, how often Avida prints a data file, and when Avida ends printing data are controlled by the three variables within colons. Taking our example from above, + +`u 0:100:end PrintAverageData` + +the β€œ0” would be when Avida starts printing this data file (i.e., at the 0th update), the β€œ100” would be the frequency at which Avida prints this data file (i.e., every 100 updates), and the β€œend” would be when Avida stops printing this data file (i.e., when the experiment ends). ReΒ­writing this example to the following, + +`u: 100:1000:10000 PrintAverageData` + +would tell Avida to a) start printing this file at the 100th update, b) print this data file every 1,000 updates, and c) stop printing this file at 10,000 updates (even if the experiment is still running). + +This documentation was produced by Rebecca Zantjer with consultation from members of the Devolab. \ No newline at end of file diff --git a/docs/documentation/Configuration-and-command-reference.md b/docs/documentation/Configuration-and-command-reference.md new file mode 100644 index 0000000..36c7a5a --- /dev/null +++ b/docs/documentation/Configuration-and-command-reference.md @@ -0,0 +1,25 @@ +## Main Configuration Files +* [[Avida.cfg|Avida.cfg]] +* [Events File](https://github.com/devosoft/avida/wiki/Events-file) +* [Environment File](https://github.com/devosoft/avida/wiki/Environment-file) +* [Instruction Set](https://github.com/devosoft/avida/wiki/Instruction-Set) +* [[instset-heads.cfg]] +* [[default-heads.org]] +* [Analyze File](https://github.com/devosoft/avida/wiki/Analyze-File) + +## Analyze Mode +* [[Analyze File]] +* [[Sample Analyze Programs]] + +## Subpopulations (Demes) +* [[Deme introduction]] +* [[Deme migration]] + +## Misc. Configuration +* [[Quirks]] +* [[Setting up Fixed-Length Organisms]] +* [[Introduction to Parasites]] +* [[Gradient Resources]] +* [[Internal resources]] +* [[Using mating types (separate sexes)]] +* [[Energy model configuration]] diff --git a/docs/documentation/Creating-a-flame-graph.mediawiki b/docs/documentation/Creating-a-flame-graph.mediawiki new file mode 100644 index 0000000..d2f03ed --- /dev/null +++ b/docs/documentation/Creating-a-flame-graph.mediawiki @@ -0,0 +1,59 @@ +A flame graph is a visual representation of genetic diversity and "speciation" through an Avida run, graphing genetic distance over time. It is related to a phylogeny, but it is not a phylogeny and should not be mistaken for (or used as!) one. + +1. Generating the Data + +First you must obtain the necessary data -- you need population detail files (historic files are not necessary) files. The default events.cfg generates these only every 50,000 updates, so you must change this to get finer timeslices. More timeslices yield a smoother graph, but also increase the storage space necessary for your run. I generally use time slices of 100 or 50 updates, because storage is cheap and I like smooth graphs. + +Once you have your population files, there are two ways to create a flamegraph. Choose according to your preferred tools: + +== Producing a Flame Graph with flamegraph.py == + +flamegraph.py is a Python script found in avida-core/source/utils/hist_map/ which uses matplotlib to produce the flamegraph. (It requires both Python and [http://matplotlib.sourceforge.net/ matplotlib] to work). It will handle both unzipped (.spop) and gzipped(.spop.gz) files. + +To run it: + +python flamegraph.py + +matplotlib can produce graphs in png, pdf, ps, eps, or svg format; choose the extension of your output file appropriately. + +In the current default Avida, the population detail files (.spop) use column 14 for phylogenetic depth and column 5 for number of organisms. (Older Avida population detail files with the .pop extension use columns 12 and 4, respectively.) Additionally, you will want to ensure that flamegraph.py reads the detail files the correct order, and that you include any files still gzipped. Altogether, your command should look something like this: + +python flamegraph.py flame.pdf 14 5 detail-?00.spop* detail-??00.spop* detail-???00.spop* detail-????00.spop* + + +When it has run, you may wish to check the reported number of rows -- it should be the number of detail files provided. + +(If you wish to immediately see the graph produced, you can add the -g flag. The -q flag will stop all those "Processing..." messages from appearing.) + +== Producing a Flame Graph with hist_map and Matlab == + +This is the "classic" method. + +1. hist_map + +If you have not already compiled hist_map, do so. It is located in source/utils/hist_map/, and you can simply use the Makefile. (Type "make" on the command line while in this directory.) + +Now run it: + +hist_map + +In the current default Avida, the population detail files (.spop) use column 14 for phylogenetic depth and column 5 for number of organisms. (Older Avida population detail files with the .pop extension use columns 12 and 4, respectively.) Additionally, you will want to ensure that hist_map reads the detail files the correct order. Altogether, your command should look something like this: + +hist_map 12 4 detail-?00.spop detail-??00.spop detail-???00.spop detail-????00.spop +When it has run, you may wish to check the reported number of rows -- it should be the number of detail files provided. + +2. Matlab + +Load the file created by hist_map into matlab, using zl or your favorite matrix-loading tool. E.g.: + +flame_matrix = zl(''); +What you will actually graph is the transpose of the log of this matrix + 1: + +flame_graphable = (log(flame_matrix + 1))'; +Finally, pcolor it -- for flame-colored flame graphs, use the hot colormap: + +colormap('hot') +flame_graph = pcolor(flame_graphable) +If at this point your flame graph is pure black, try the command + +shading flat diff --git a/docs/documentation/Default-Ancestor-Guided-Tour.md b/docs/documentation/Default-Ancestor-Guided-Tour.md new file mode 100644 index 0000000..55d2ac9 --- /dev/null +++ b/docs/documentation/Default-Ancestor-Guided-Tour.md @@ -0,0 +1,228 @@ +This document describes the structure of the classic virtual CPU and an example organism running on it. + +## The Virtual CPU Structure + +The virtual CPU, which is the default "body" or "hardware" of the organisms, contains the following set of components, (as further illustrated in the figure below). + +* A memory that consists of a sequence of instructions, each associated with a set of flags to denote if the instruction has been executed, copied, mutated, etc. Memory is treated as circular, such that execution will loop back to the first instruction after the last instruction has been executed +* An instruction pointer (IP) that indicates the next site in the memory to be executed. +* Three registers that can be used by the organism to hold data currently being manipulated. These are often operated upon by the various instructions, and can contain arbitrary 32-bit integers. +* Two stacks that are used for storage. The organism can theoretically store an arbitrary amount of data in the stacks, but for practical purposes we currently limit the maximum stack depth to ten. +* An input buffer and an output buffer that the organism uses to receive information, and return the processed results. +* A Read-Head, a Write-Head, and a Flow-Head which are used to specify positions in the CPU's memory. A copy command reads from the Read-Head and writes to the Write-Head. Jump-type statements move the IP to the Flow-Head. + + + + +## Instruction Set Configuration + +The instruction set in Avida is loaded on startup from a configuration file specified in the avida.cfg file. This allows selection of different instruction sets without recompiling the source code, as well as allowing different sized instruction sets to be specified. It is not possible to alter the behavior of individual instructions or add new instructions without recompiling Avida; such activities have to be done directly in the source code. + +The available instructions are listed in the inst_set.* files with a 1 or a 0 next to an instruction to indicate if it should or should not be included. Changing the instruction set to be used simply involves adjusting these flags. + +The instructions were created with three things in mind: + +* To be as complete as possible (both in a "Turing complete" sense -- that is, it can compute any computable function -- and, more practically, to ensure that simple operations only require a few instructions). +* For each instruction to be as robust and versatile as possible; all instructions should take an "appropriate" action in any situation where they can be executed. +* To have as little redundancy as possible between instructions. (Several instructions have been implemented that are redundant, but such combinations will typically not be turned on simultaneously for a run.) + +One major concept that differentiates this virtual assembly language from its real-world counterparts is in the additional uses of nop instructions (no-operation commands). These have no direct effect on the virtual CPU when executed, but often modify the effect of any instruction that precedes them. In a sense, you can think of them as purely regulatory genes. The default instruction set has three such nop instructions: nop-A, nop-B, and nop-C. + +The remaining instructions can be seperated into three classes. The first class is those few instructions that are unaffected by nops. Most of these are the "biological" instructions involved directly in the replication process. The second class of instructions is those for which a nop changes the head or register affected by the previous command. For example, an inc command followed by the instruction nop-A would cause the contents of the AX register to be incremented, while an inc command followed by a nop-B would increment BX. + +The notation we use in instruction definitions to describe that a default component (that is, a register or head) can be replaced due to a nop command is by surrounding the component name with ?'s. The component listed is the default one to be used, but if a nop follows the command, the component it represents in this context will replace this default. If the component between the question marks is a register than a subsequent nop-A represents the AX register, nop-B is BX, and nop-C is CX. If the component listed is a head (including the instruction pointer) then a +nop-A represents the Instruction Pointer, nop-B represents the Read-Head, and nop-C is the Write-Head. Currently the Flow-Head has no nop associated with it. + +The third class of instructions are those that use a series of nop instructions as a template (label) for a command that needs to reference another position in the code, such as h-search. If nop-A follows a search command, it scans for the first complementary template (nop-B) and moves the Flow-Head +there. Templates may be composed of more than a single nop instruction. A series of nops is typically abbreviated to the associated letter and separated by colons. This the sequence "nop-A nop-A nop-C" would be displayed as "A:A:C". + +The label system used in Avida allows for an arbitrary number of nops. By default, we have three: nop-A's complement is nop-B, nop-B's is nop-C, and nop-C's is nop-A. Likewise, some instructions talk about the complement of a register or head -- the same pattern is used in those cases. So if an instruction tests if ?BX? is equal to its complement, it will test if +BX == CX by default, but if it is followed by a nop-C it will test if CX == AX. + + +## Instruction Set Reference + +An abbreviated description of the 26 default instructions is below. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
(a-c) nop-A, nop-B
and nop-C +
No-operation instructions; these modify other instructions.
(d) if-n-equ + Execute next instruction only-if ?BX? does not equal its complement
(e) if-less + Execute next instruction only if ?BX? is less than its complement
(f) if-label + Execute the next instruction only if the given template complement was just copied
(g) mov-head + Move the ?IP? to the same position as the Flow-Head
(h) jmp-head + Move the ?IP? by a fixed amount found in CX
(i) get-head + Write the position of the ?IP? into CX
(j) set-flow + Move the Flow-Head to the memory position specified by ?CX?
(k) shift-r + Shift all the bits in ?BX? one to the right
(l) shift-l + Shift all the bits in ?BX? one to the left
(m) inc + Increment ?BX?
(n) dec + Decrement ?BX?
(o) push + Copy the value of ?BX? onto the top of the current stack
(p) pop + Remove a number from the current stack and place it in ?BX?
(q) swap-stk + Toggle the active stack
(r) swap + Swap the contents of ?BX? with its complement.
(s) add + Calculate the sum of BX and CX; put the result in ?BX?
(t) sub + Calculate the BX minus CX; put the result in ?BX?
(u) nand + Perform a bitwise NAND on BX and CX; put the result in ?BX?
(v) h-copy + Copy an instruction from the Read-Head to the Write-Head and advance both.
(w) h-alloc + Allocate memory for an offspring
(x) h-divide + Divide off an offspring located between the Read-Head and Write-Head.
(y) IO + Output the value ?BX? and replace it with a new input
(z) h-search + Find a complement template and place the Flow-Head after it.
+ + +### An Example Ancestor + +The following organism is stored in the file organism.heads.15, which you should find in the support/config/misc/ directory. This is a simplified version of organism.default and +organism.heads.100, of lengths 50 and 100 respectively (each has additional instructions placed before the copy loop) + + +
# --- Setup ---
+
h-alloc # Allocate extra space at the end of the genome to copy the offspring into.
+
h-search  # Locate an + A:B template (at the end of the organism) and + place the Flow-Head after it
+
nop-C #
+
nop-A #
+
mov-head # Place the + Write-Head at the Flow-Head (which is at beginning of + offspring-to-be).
+
nop-C # [ Extra + nop-C commands can be placed here w/o harming the + organism! ]
+
  +
# --- Copy Loop ---
+
h-search # No template, + so place the Flow-Head on the next line code
+
h-copy # Copy a single + instruction from the read head to the write head (and advance both + heads!)
+
if-label # Execute the + line following this template only if we have just copied an + A:B template.
+
nop-C #
+
nop-A #
+
h-divide #     ...Divide off offspring! (note if-statement above!)
+
mov-head # Otherwise, + move the IP back to the Flow-Head at the beginning of the copy + loop.
+
nop-A # End label.
+
nop-B # End label.
+
+ +This program begins by allocating extra space for its offspring. The exact amount of space does not need to be specified -- it will allocate as much as it is allowed to. The organism will then do a search for the end +of its genome (where this new space was just placed) so that it will know where to start copying. First the Flow-Head is placed there, and then the Write-Head is moved to the same point. + +It is after this initial setup and before the actual copying process commences that extra nop instructions can be included. The only caveat is that you need to make sure that you don't duplicate any templates +that the program will be searching for, or else it will no longer function properly. The easiest thing to do is insert a long sequence of nop-C instructions. + +Next we have the beginning of the "copy loop". This segment of code starts off with an h-search command with no template following it. In such as case, the Flow-Head is placed on the line immediately following the search. This head will be used to designate the place that the IP keeps returning to with each cycle of the loop. + +The h-copy command will copy a single instruction from the Read-Head (still at the very start of the genome, where it begins) to the Write-Head (which we placed at the beginning of the offspring). With any copy command there is a user-specified chance of a copy mutation. If one occurs, the Write-Head will place a random instruction rather than the one that it gathered from the Read-Head. After the copy occurs (for better or worse), +both the Read-Head and the Write-Head are advanced to the next instruction in the genome. It is for this reason that a common mutation we see happening will place a long string of h-copy instruction one after another. + +The next command, if-label (followed by a nop-C and a nop-A) tests to see if the complement of C:A is the most thing copied. That is, if the two most recent instructions copied were a nop-A followed by a nop-B as is found at the end of the organism. If so, we are done! Execute the next instruction which is h-divide (when this occurs, the read and write heads will surround the portion of memory to be split off as the offspring's genome). If not, then we need to keep going. Skip the next instruction and move on to the mov-head which will move the head specified by the nop that follows (in this case nop-A which is the Instruction Pointer) to the Flow-Head at the beginning of the copy loop. + +This process will continue until all of the lines of code have been copied, and an offspring is born. + + +### An Example Logic Gene + +Here is a short example program to demonstrate one way for an organism to perform the "OR" logic operation. This time I'm only going to show the contents of the registers after each command because the functionality of the individual instructions should be clear, and the logic itself won't be helped much by a line-by-line explanation in English. + + +
Line # + Instruction + AX + BX + CX + Stack + Output +
1 IO + ? X ? + ? ? +
2 push + ? X ? + X, ?   +
3 pop + ? X X + ?   +
4nop-C   +
5 nand + ~X X X + ?   +
6nop-A   +
7 IO + ~X Y X + ? X +
8 push + ~X Y X + Y, ?   +
9 pop + ~X Y Y + ?   +
10nop-C   +
11 nand + ~X ~Y Y + ?   +
12 swap + Y ~Y ~X + ?   +
13nop-C   +
14 nand + Y X or Y ~X + ?   +
15 IO + Y Z ~X + ? X or Y +
diff --git a/docs/documentation/Default-heads.org.md b/docs/documentation/Default-heads.org.md new file mode 100644 index 0000000..7e6169b --- /dev/null +++ b/docs/documentation/Default-heads.org.md @@ -0,0 +1 @@ +The default ancestor organism when using the Heads virtual CPU. \ No newline at end of file diff --git a/docs/documentation/Deme-introduction.mediawiki b/docs/documentation/Deme-introduction.mediawiki new file mode 100644 index 0000000..ca10abc --- /dev/null +++ b/docs/documentation/Deme-introduction.mediawiki @@ -0,0 +1,15 @@ +
+

(Material adapted from Heather Goldsby's dissertation... so, it's a bit formal.)

+

To study group behavior with Avida, we divide the population of digital organisms into distinct subpopulations and link their long-term fates. Groups (also referred to as demes or colonies) can comprise a set of genetically-clonal or genetically-heterogeneous organisms. Β As with individual organisms, entire groups replicate and compete for space, but at a much greater time-scale.

+

Group Competition

+

There are two different forms of group competition. Both types of group competition result in group replication. First, for some experiments, we use tournament selection in which groups compete every 100 updates based on a fitness function, where a group's success is determined by the behavior of its constituent organisms. Each tournament contains a set of groups selected at random, and the group with greatest fitness is replicated (ties are broken randomly).Β Second, some of our experiments use task-based group competition (or deme replication event), where a group replication event is triggered by the collective behavior of individuals within a group. For example, a group could be set to replicate once its constituent organisms have consumed a certain amount of resources. (See create a deme replication event for a tutorial on how to make this work.)

+

 

+

FAQ:

+
+
    +
  • How do I set the size of a deme?Β Β The deme x-dimension is that of the world (WORLD_X) and the deme y-dimension is the y-dimension of the world divided by the number of demes (WORLD_Y/NUM_DEMES). So, for example, if you want 400, 5x5 demes, WORLD_X = 5, WORLD_Y=2000, NUM_DEMES=400. Demes are essentially placed in a long vertical line in the world.Β 
  • +
  • How many demes should I use?Β Ug. This part gets a little tricky. By default, most of us have used 400, 5x5 demes. This provides a reasonable runtime on the HPC and only hogs 2 gigs of memory per node. More demes or larger demes consume proportionally more resources.Β 
  • +
  • How do you populate demes at the start of a run?Β There are quite a few different inject options that work with demes. Two common ones are to use InjectAll, which injects the ancestor organism (controlled by theΒ START_ORGANISM configuration option)Β into all cells in all demes, and InjectDemes, which injects the ancestor organism into one cell per deme. Check out the complete list of actions for more options.Β 
  • +
+ +[[How to create a deme replication event]] diff --git a/docs/documentation/Deme-migration.mediawiki b/docs/documentation/Deme-migration.mediawiki new file mode 100644 index 0000000..632b386 --- /dev/null +++ b/docs/documentation/Deme-migration.mediawiki @@ -0,0 +1,25 @@ +

Subpopulation migration in Avida is supported by the assignment of "migration weights" for connections between subpopulations. The migration "topology" between subpopulations is defined through reading in a connection-weight matrix in the following format:Β 
Β 

+

# BEGIN
# All text beyond the '#' character in a file is a comment and will not be read in by Avida
# Subpop: Β  Β  Β  Β [0] Β  Β  Β  [1]Β Β  Β  Β [2] Β  Β  [3]
Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  Β 5.0, Β  0.10, Β  0.0, Β  4.0 Β  Β # [0] Β  Β  Β Row[0].Sum = 9.10
Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  Β 3.0, Β  0.20, Β  0.8, Β  2.0 Β  Β # [1] Β  Β  Β Row[1].Sum = 6.00
Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  Β 7.0, Β  0.30, Β  0.0, Β  1.0 Β  Β # [2] Β  Β  Β Row[2].Sum = 8.30
Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  Β  Β 2.0, Β  1.30, Β  9.0, Β  0.0 Β  Β # [3]Β Β  Β  Β Rom[3].Sum = 12.30
# END

+


What this file means
: The above un-commented text shows a simple 4-line file with each line containing 4 comma-separated values. Each row in the connection matrix contains all the connection weights *from* subpopulation[row] to other subpopulations that are indexed by column. For example, the connection weight between Subpopulation[1] and Subpopulation[2] is 0.8 where the from-subpopulation is row index 1 and to-subpopulation is column index 2. By setting each of these weights, you can specify what the appropriate migration probability will be from a given subpopulation to another subpopulation. Internally, when a migration event is going to occur from a given subpopulation (let's assume Subpopulation[1]), Avida will sum up the values in row 1 of the connectivity matrix (3.0 + 0.20 + 0.8 + 2.0 = 6.00) and generate a random number between: 0 and Row[1].Sum. This random number will be used to determine which subpopulation the organism will migrate into using a "roulette selection" protocol where each connection is represented by its weight's proportion of the sum. Β As you may have noticed, the sum of a row does not have to equal 1.0 as a typical probability matrix does. The probability matrix would be an exclusive subset of the type of connectivity matrices you can use under this setup.Β 
Restrictions for this file (and why):

+
    +
  1. The number of rows must equal the number of demes which must equal the number of columns in each row - This assumes that you will provide a connection weight value for every subpopulation pair possible. This is easier to read for both us as researchers and the computer/programmer :)
  2. +
  3. A row's sum cannot equal 0.0Β - Minimally, there must be a path for migration to occur and the control/null case is that the organism remains in its own subpopulation.Β Β Therefore, to use the migration matrix but turn migration among subpopulations OFF, one can simply supply the identity matrix where the diagonal is the only non-zero value (or just not use the migration matrix method ).Β 
  4. +
  5. A matrix entry cannot be negativeΒ - Intuitively, a negative migration value does not carry much meaning when trying to determine where an organism will migrate to and therefore, this will not be allowed.
  6. +
+

 

+

To turn on and use subpopulation migration, the following configuration parameters in *avida.cfg* will need to be set appropriately:Β 

+

(1)Β MIGRATION_FILE -- This config setting should be set to the migration file name that you want Avida to initialize with. Note: This file must be contained in the same working directory as your avida.cfg, events.cfg, and other Avida-related files. This setting is only used by Avida when the DEMES_MIGRATION_METHOD is set to use the migration matrix, otherwise a dummy value can be left here.Β 

+

(2)Β NUM_DEMES - This value specifies the total number of subpopulations in the run and it is *critical* that your MIGRATION_FILE's connectivity matrix have NUM_DEMES rows and that each row has NUM_DEMES columns.Β 

+

(3)Β DEMES_MIGRATION_RATEΒ - This value can be between 0.0 and 1.0 and essentially specifies the "success rate" that a triggered migration event will actually take place. When set to 0.0, migration will *never* occur and when set to 1.0, a triggered migration rate will *always* succeed and use the DEMES_MIGRATION_METHOD. If this value was set to 0.50, for example, it would mean that a migration event would trigger but that 50% of the time the actual migration action would not occur.Β 

+

(4)Β DEMES_MIGRATION_METHODΒ - This config setting should be set to 4Β to use the new connection matrix setup. Rather than the pre-built migration methods (Any other deme,Β Eight neighboring demes,Β Two adjacent demes in list, etc.), the "4" setting specifies to use the weights within the migration matrix to determine where an organism should migrate to.Β 

+

 

+

Deme Migration Events (can be added in your events.cfg)

+
    +
  • SetMigrationMatrix - The SetMigrationMatrix event takes one argument/parameter which is the filename of a *new* migration matrix to be used to replace the current one. For example, if a user wanted to "turn off migration at update 10,000", he/she could add a line into events.cfg that reads as follows: "u 10000 SetMigrationMatrix migration2.cfg". At update 10,000, this event would be triggered causing the migration2.cfg file (containing connection values only on the diagonal) to be used. Note: This migration file must adhere to the restrictions stated above, otherwise Avida will report an error and exit mid-run.
  • +
  • AlterMigrationConnectionΒ - To provide more fine-grained control over how connection weights change, theΒ AlterMigrationConnection event can be used in place of SetMigrationMatrix. This event takes *3* arguments: (1) from-index, (2) to-index, (3) alter_amount. When triggered, this event will go to the weight indexed by [from-index][to-index] and add the alter_amount value to the current weight. Naturally, if you wanted to decrease the current weight, you would simply make the alter_amount argument a negative value. By using the standard event protocol in Avida that has [start:interval:end], it is possible to cause a connection weight to change over a period of time by a certain amount. For example, if a user wanted to "decrease the connection between Subpopulation 0 and Subpopulation 1 by 3 units every 100 updates from update 10,000 to update 20,000" the corresponding event would be: "u [10000:100:20000] AlterMigrationConnection 0 Β 1 Β -3.0". Note: Every time this event is triggered it will alter the last updated amount for that connection, if the matrix entry value goes negative or if the row's sum becomes 0.0, an error will be flagged and the run will exit. (This will likely need fixing in the future .. but for now keep it in mind)
  • +
  • DumpOffspringMigrationCountsΒ - The DumpOffspringMigrationCounts action can be used to output how many organisms have migrated between the subpopulations (demes) in Avida. Each file that is outputted will appear in the data/ folder as follows: counts_offspring_migration.[update].dat.Β Β The [update] will contain the update # at which the file was dumped to the folder. The file is internally structured as a comma-separated (CSV) file containing a total of NUM_DEMES individual lines and each line containing NUM_DEMES comma-separated values (exactly like the MIGRATION_FILE). A 2D index into this CSV matrix (say the Yth CSV-value on line X) returns the number of offspring that migrated fromΒ subpopulation X toΒ subpopulation Y. *Note*: After each dump, all migration counts are reset to zero, therefore, if you want the total number of migrations that occurred in the entire run, you would need to sum up the respective values across all files dumped. An example of this command is: "u 100:200:end DumpOffspringMigrationCounts"Β where the user wanted to "dump the offspring migration counts starting at update 100 for every 200 updates until the end of the run."Β 
  • +
  • DumpParasiteMigrationCountsΒ - The DumpParasiteMigrationCounts action can be used to output how many parasites have migrated between the subpopulations (demes) in Avida. Each file that is outputted will appear in the data/ folder as follows:Β counts_parasite_migration.[update].dat.Β Β The [update] will contain the update # at which the file was dumped to the folder. The file is internally structured as a comma-separated (CSV) file containing a total of NUM_DEMES individual lines and each line containing NUM_DEMES comma-separated values (exactly like the MIGRATION_FILE). A 2D index into this CSV matrix (say the Yth CSV-value on line X) returns the number of parasites that migratedΒ fromΒ subpopulation XΒ toΒ subpopulation Y. *Note*: After each dump, all migration counts are reset to zero, therefore, if you want the total number of parasite migrations that occurred in the entire run, you would need to sum up the respective values across all files dumped. An example of this command is:Β "u 100:200:end DumpParasiteMigrationCounts"Β where the user wanted to "dump the parasite migration counts starting at updateΒ 100Β for everyΒ 200Β updates until theΒ endΒ of the run."
  • +
+
Hopefully this wiki article is of benefit for others who want to explore migration using Avida. If you have any questions/comments about the implementation, please feel free to contact me (Chad Byers) at byerscha@msu.eduΒ 
+
Β 
+
For Developers: To see where,Β in the source files, that updates/revisions have been made to support subpopulation migration, use the *Find All* feature in your IDE and search for "MIGRATION_MATRIX"
diff --git a/docs/documentation/Developers-Guide.md b/docs/documentation/Developers-Guide.md new file mode 100644 index 0000000..3fcfa93 --- /dev/null +++ b/docs/documentation/Developers-Guide.md @@ -0,0 +1,23 @@ +We welcome all those interested to contribute to the development and improvement of the Avida project. This developer’s guide will describe how to get started, the guidelines for contributions, and where to find ideas for what is needed. + +## Project Structure +Avida consists of several modules/sub-projects. + +* [Avida-Core Library](Development-|-avida-core) +* [Avida-Viewer Library](Development-|-avida-viewer) +* [Avida2 Frontend](Development-|-avida2) +* [The OS X/iOS Viewers](Development-|-viewer-macos) +* [The Windows Viewer](Development-|-viewer-windows) + +### [Getting Started](Development-|-Getting-Started) +### [Coding Style Guide](Development-|-Coding-Style-Guide) + + +## Mini Tutorials +* [A Conceptual Introduction to C++](Development-|-Tutorial-|-C-Plus-Plus-Intro) +* [Guide to the Death/Birth Cycle](Development-|-Tutorial-|-Birth-Death-Cycle) +* [Guide to an Avida Organism Life Cycle](Development-|-Tutorial-|-Life-Cycle) +* [The Building Blocks of the Virtual CPU](Development-|-Tutorial-|-Genome) +* [The Environment Source Code](Development-|-Tutorial-|-Environment) +* [Instruction Implemention Checklist](Development-|-Tutorial-|-Instruction-Checklist) +* [Environment Task Implementation Checklist](Development-|-Tutorial-|-Task-Checklist) diff --git a/docs/documentation/Development | Tutorial | Instruction Checklist.md b/docs/documentation/Development | Tutorial | Instruction Checklist.md new file mode 100644 index 0000000..bd76c48 --- /dev/null +++ b/docs/documentation/Development | Tutorial | Instruction Checklist.md @@ -0,0 +1,303 @@ +

+This document discusses how to implement your own instructions. +

+ + +

 

+

1. Build the method to be attached to the new instruction

+ +

+For this first step, you will be editing the virtual CPU definition in +cHardwareCPU.h and cHardwareCPU.cc, both of which are +found in the directory source/cpu/. Start by going to the +final section of the class definition in the header file and writing +the declaration for the new method that will be called whenever the +instruction is executed. For example, if you were going to add the +instruction minus-17 (which performs the oh-so-useful behavior +of subtracting 17 from the ?BX? register), you would add the line: +

+
+bool Inst_Minus17(cAvidaContext& ctx);
+
+ +

+If possible, place it near other instructions of the same type. There are +about a hundred methods cHardwareCPU. This instruction would likely fit best +with the group of instruction described as "Single-Argument Math". +That is, all those instructions that perform mathematical operation that only +affect a single register. +

+

+All methods associated with instructions return a +bool value that determines if it was +successfully executed. Most instructions will always return true since they +have no way to fail. The convention that we use to designate a method +explicitly associated with an instruction is placing a prefix of +Inst_ in front of it. +

+

+Next, you have to write the function body in the code file +(cHardwareCPU.cc). The method bodies will be listed at the end of +this file in the same order that they were declared in the header. You would +find the proper position, and write something to the effect of: +

+ +
+bool cHardwareCPU::Inst_Minus17(cAvidaContext& ctx)
+{
+  const int reg_used = FindModifiedRegister(REG_BX);
+  GetRegister(reg_used) -= 17;
+  return true;
+}
+
+ +

+The first line of this method uses a helper function called +FindModifiedRegister() to identify the register +that should be affected (it scans the next instruction to test if it is a +nop), with a default value of REG_BX passed in. +The second line then subtracts 17 from the value in that register. The +constant values and available helper functions will be described in more +detail below, as will a guide to accessing the components in the virtual +CPU. For the moment, you have finished implementing the method! +

+

+Note that this would be a good time to recompile if you want to test how +well your implementation is going so far. +

+ + +

 

+

2. Link the instruction name to its method

+ +For this step, you will need to edit the code file. You would go into the method +cHardwareCPU::initInstLib(void) +and add in the line + +
+cInstEntryCPU("minus-17", &cHardwareCPU::Inst_Minus17);
+
+ +

+in the same order that it was defined in the class definition. +

+

+Since we want to use a pointer to the appropriate method, that is what we +must pass into the dictionary. To obtain said pointer, we must list the class +the function is part of (cHardwareCPU) follow it +by a double colon (::) and then give the method name +(Inst_Minus17) without the normal +parentheses following it. The parentheses indicate that we should execute +the method. Without them, it is just the data that represents the method, +and by preceding this whole mess with an ampersand ('&') we get the pointer +to the location in memory that the method resides. +

+

+IMPORTANT: If your instruction interacts with the population, resources, +or IO, make sure to flag the instruction for speculative stall by adding a third + argument, nInstFlags::STALL. For an example, look at the 'h-divide' + instruction. +

+

+Compile again, and you should have your instruction ready for use. +

+ + +

 

+

3. Add the entry to your instruction set and test it!

+ +

+This last part should be the easiest. If you want the new instruction you +just created to be loaded on startup, you must add a line in the instruction +set you are using (specified in the configuration file) to indicate its +inclusion: +

+
+minus-17 1
+
+ +

+And there you have it! Now the real trick is to test if its working +properly. I'd recommend using as a framework the creature +default-classic.org and modifying some of the long series of +nop-C instructions inside of it to perform some math using the +new instruction (only the very first nop-C cannot be changed). You +can then either go into zoom mode in the viewer and step through the creature, +or else use analyze mode trace its execution. If you are going to use zoom +mode, setup your modified creature as the START_CREATURE in configuration file. +If you want to use analyze mode, put the following lines into the +analyze.cfg file in your work/ directory: + +

+  LOAD_ORGANISM inst_test.org
+  TRACE
+
+ +

+Where you have to replace inst_test.org with the name of the +organism you want to trace. The new file will appear in the +data/archive/ directory, with the same name as the one you loaded +in, but a .trace appended to the end. +

+ + +

 

+

CPU Components

+ +

+Various CPU components are often manipulated by instructions, and we +need a standard way of doing this. We have settled on each component being +associated with a method to access it, to provide a single location that can +control that access. This has already been useful -- in a multi-threaded +CPU (i.e., a CPU that has multiple positions in its genome being executed at +the same time) each thread has its own registers and heads, so we need to +always be sure we are manipulating the component of the active thread. If +you simply use the following methods, they will always find the correct +component for you. +

+ +
+
+
+void StackPush(int value);
+int StackPop();
+void SwitchStack();
+
+
+
+There are two stacks in a normal CPU, and more in a multi-threaded version +(one global stack, and one local to each thread). The first stack method will +place a new value on the top of the currently active stack, the second will +remove the top value, and the last will toggle the currently active stack. +
+
+
+cCPUHead& GetHead(int head_id);
+cCPUHead& IP();
+
+
+Each thread in a CPU has four heads associated with it, designated by the +constants HEAD_IP, HEAD_READ, +HEAD_WRITE, and HEAD_FLOW. These heads each point +to a position in memory, and all have their own purpose. A head can be +accessed by passing the appropriate constant into the GetHead() method. The +extra method IP() was added to more easily obtain just the instruction pointer. +The IP is a very special head since it designates what instruction is going to +be executed next, and often it will make code clearer if you obtain it by +calling IP(). (It will show that you need to make sure of the special +qualities of the instruction pointer.) +
+
+
+int& Register(int reg_id);
+
+
+
+There are three registers available, associated with the constants +REG_AX, REG_BX, and REG_CX. If the +Register() method is called, an integer reference will be returned associated +with that register. Any change to this integer will make a corresponding +change to the register in question. +
+
+
+cCPUMemory& GetMemory();
+
+
+
+This method allows the programmer to access the full memory of the CPU. As +you know, the class cCPUMemory is built on top of Genome, so you can +manipulate it in all of the same ways. +
+
+ +

+These are only a sampling of the available methods of interacting with the +components of the CPU, but they give you a good cross-section without +overwhelming you with all of the possibilities. You should look through the +source files if you want to see the other options that are available to you. +

+ + +

 

+

Helper Methods

+ +

+There are several very common tasks that are performed during the execution +of many of the instructions. For each of these tasks we have created a +helper function to ease the creation of new instructions. +

+ +
+
+
+void ReadLabel();
+cCodeLabel& GetLabel();
+cCPUHead FindLabel(int direction);
+
+
+
+ReadLabel() will read in the label (series of nop instructions) that +immediately follows the instruction being executed. The label that was read +can then be accessed (and even modified) using GetLabel(). Finally, the +Findlabel() method takes single int argument that determines the direction +(from the instruction pointer) in which the label should be search for. If +this argument is a 1 it will search forward, and if its a -1, it will search +backwards. A zero indicates that the search should start from the beginning +of the genome, and proceed to the end. Once it finds the matching label, it +will return a head at the position in which the label was found. These +helper methods are particularly useful in any instruction that has to affect +other portions of the source code. See the method Inst_HeadSearch for an +example of how these are used. +
+
+
+int FindModifiedRegister(int default_register);
+int FindModifiedHead(int default_head);
+
+
+
+These two methods will look ahead and determine if a nop instruction is +immediately following the instruction being executed. If so, it will return +the register or head ID associated with that nop (for use in the rest of the +method), and if no nop is found, it will automatically return the +default value passed in. We used FindModifiedRegister in the example new +instruction above. +
+
+
+int FindComplementRegister(int base_reg);
+
+
+
+Several instructions are defined as affecting a certain, modifiable register +and its complement. In order to have a standard way of determining the +complement of a register (which, by default, cycle in the same order as +complement labels), we use this function whenever we need to determine one. +See, for example, see the definition of Inst_IfNEqu(). +
+
+ + +

 

+

Problem

+ +

+To test your understanding of adding instruction into Avida, try writing two +new instructions. The first one is the mathematical instruction +cube that will take the ?BX? register, and put +its value to the third power. If you look in the actual source files, you +will see that there is already a square instruction that you can +model this on. +

+

+Next, you will implement the instruction if-twice +that will execute the next instruction if-and-only-if the value in the ?BX? +register is twice that of the value in its complement. In other words by +default, if would test of BX was twice CX, but if it is followed by a +nop-C it will test if CX is twice AX. +

+

+For both of these instruction make sure to craft an organism to test that +they are working properly! +

diff --git a/docs/documentation/Development-|-Coding-Style-Guide.md b/docs/documentation/Development-|-Coding-Style-Guide.md new file mode 100644 index 0000000..574924b --- /dev/null +++ b/docs/documentation/Development-|-Coding-Style-Guide.md @@ -0,0 +1,298 @@ +

+This document describes the coding standards that should be followed +when developing within Avida. +

+ + +## C/C++ Dialect +
    +
  • ISO Standard C++ (1998/2003)
  • +
  • Do not use GCC extensions (such as multi-line strings and comments).
  • +
  • No compiler warnings with explicitly supported compilers, including GCC and Clang-LLVM.
  • +
+ + +## Code Formatting + +

Indentation

+
    +
  • + All source code indentation should be spaces. This includes C++, Python, + and HTML. +
  • +
  • + The size of a single indentation is 2 spaces. +
  • +
+ + + +

 

+

Braces

+ +
+

Function Definitions

+
+

+ Open and close braces should each be on their own line. Do not + place the open brace on the same line as the function signature. The only + exception to this rule is single line class methods, in which both braces + are allowed to be on the same line as the code (but only in pairs). Examples: +

+
Right:
+
+void cFoo::Method()
+{
+  // code goes here
+}
+
+// ... in a class
+inline void Method() { ; }
+
+inline void Method()
+{ // longer code in here }
+
+
Wrong:
+
+void cFoo::Method() {
+  // code goes here
+}
+
+// ... in a class
+inline void Method() { 
+  ; }
+
+ +
+ +

For, While, Do Loops and Switch Statements

+
+

+ The open brace should go on the same line as the control structure, + the close brace on its own line. Examples: +

+
Right:
+
+while (foo) {
+  // code goes here
+}
+
+
Wrong:
+
+while (foo)
+{
+}
+
+ +
+ +

If/Else Statements

+
+

+ The same formatting rules as for/while/etc., but if there is an else clause + the close brace should go on the same line as the else statement. Single + line if else statements should not get braces, unless they accompany a + multi-line statement. Examples: +

+
Right:
+
+if (foo) {
+  DoSomething();
+  DoAnotherSomething();
+} else {
+  DoADifferentSomthing();
+}
+
+if (!foo) CallAFunction();
+else CallBFunction();
+
+
Wrong:
+
+if (foo)
+{
+  DoSomething();
+  DoAnotherSomething();
+} else 
+  DoADifferentSomthing();
+
+if (!foo) {
+  CallAFunction();
+}
+else CallBFunction();
+
+
+
+ + +

 

+

Parentheses

+
+

Function Declarations and Calls

+
+

+ Do not use any space between the name and the open parenthesis, inside the + parentheses, or before commas that separate arguments. A single space + should follow commas that separate arguments. Examples: +

+
Right:
+
+void cFoo::Method(int arg1, double arg2);
+int aFunction();
+
+
Wrong:
+
+void cFoo::Method( int arg1 , double arg2 );
+void cFoo::Method (int arg1, double arg2);
+int Function ( );
+
+ +
+ +

Control Structures

+
+

+ Control structures such as if, for, while, do, and switch statements use a + single space before the open parenthesis, but spaces inside them. +

+
+
+ + +

 

+

Other Punctation

+
    +
  • + Pointer and reference types should be written with NO space + between the type name and the * or &. +
  • +
+ + +

 

+

Include Guards and Statements

+
    +
  • + All header files must use include guards, where the name of the guard is + exactly the filename with the period replaced with an underscore. For + example, cPopulation.h is guarded by: +
    +#ifndef cPopulation_h
    +#define cPopulation_h
    +
    +// Code goes here
    +
    +#endif
    +
    +
  • +
  • + Include statements in header (.h) and implementation (.cc) files must + not check include guards (no #ifndef blocks). This compile time + optimization is to be left for the compiler to perform. +
  • +
+ + +## Naming Conventions + +
    +
  • + Variable names should be all lowercase. Multi-word variables should have the + words separated by underscores ('_'). Examples: +
    +i
    +position
    +this_is_my_var
    +
    +
  • +
  • + Class instance member variables should have the same format as regular + variables, but must be prefixed with 'm_'. Examples: +
    +m_type
    +m_lexeme
    +m_my_component
    +
    +
  • +
  • + All functions and public struct/class methods should begin with a capital + letter followed by lowercase. Additional words should be signified by + capital letters. Underscores should only be used to indicate a category + of functions. Examples: +
    +Sort() 
    +ThisIsMyFunction() 
    +cHardwareCPU::SingleProcess()
    +
    +
  • +
  • + Private and protected struct/class support methods should begin with a + lowercase letter. Additional words should be signified by capital letters. + Underscores should only be used to indicate a category of functions. Examples: +
    +cHardwareBase::doSlipMutation()
    +cParser::parseCodeBlock()
    +
    +
  • +
  • + All class names should begin capital letters leading each word (similar to functions). Examples: +
    +Genome
    +Array
    +HeadTypes
    +SomeData
    +
    +
  • +
  • + All constant values (even as listed in enumerations) should be in all + capital letters, with words separated by underscores. Examples: +
    +NUM_REGISTERS
    +MAX_STRING_LENGTH
    +
    +
  • +
  • + All filenames should be the same as the class defined within that file. + Header files should use .h; implementation files should use + .cc. + Examples: +
    +Genome.h
    +Array.h
    +Population.cc
    +
    +
  • +
  • + Generally, there should only be one class defined in each header/source + file pair. Implementation helper classes should be defined as internal + class members. +
  • +
+ + +

 

+

Class Dependency Guidelines

+
+

+ Some groupings of classes should maintain important limitations with respect + to class dependency. +

+ +

Tools Classes

+
+

+ All classes developed as general utility classes should be placed within the + source/tools directory. These classes + should have no dependencies that extend outside of this directory. +

+
+ +

STL Usage

+
+

+ Usage of the Standard Template Library should be very limited. A number of + these templates have unspecified orderings that can vary across platforms, + affecting consistency. Where possible, it is greatly preferred to use the + local tools classes. +

+
+
diff --git a/docs/documentation/Development-|-Getting-Started.md b/docs/documentation/Development-|-Getting-Started.md new file mode 100644 index 0000000..ca41fe6 --- /dev/null +++ b/docs/documentation/Development-|-Getting-Started.md @@ -0,0 +1,59 @@ +These instructions will guide you through the process of setting up tools, obtaining the source code, building the suite, and provide an overview of the source code structure. + +## Development Tools +Avida is a cross platform project designed to work on most POSIX-compliant systems, such as Linux, Mac OS X, Unix-variants, and Windows. You will need a development environment for your platform, such as GCC on Linux, Microsoft Visual Studio on Windows, and Apple Xcode on Mac OS X. The cross platform build system uses CMake, version 2.6 or greater, to generate platform specific build files. In order to obtain the source code, you will need a recent copy of Git. + +## Getting the Source Code +The Avida project uses multiple Git repositories to manage the source code. If you are new to Git, see Using Git for an overview of basic usage. When developing in Avida, you should always work from a working copy of the Git repository to ensure that you may stay up to date with recent changes. To clone the master Avida repository, move to the directory where you want to store the clone and run the following: +
$ git clone https://github.com/devosoft/avida.git
+Note, however, that the Avida project uses the Apto library linked as a submodule. You must initialize the submodule following the clone command above before you will be able to build the project: +
$ cd avida
+$ git submodule init
+$ git submodule update
+At this point you should be able to proceed to compiling. + +## Compiling +### Unix Command Line - CMake +You will need a copy of CMake. +
    +
  1. At the top level of the source code run the ./build_avida script.
  2. +
    • To compile the avida-viewer, use the flag -DAVD_GUI_NCURSES with ./build_avida
    +
  3. Change into the directory cbuild/work
  4. +
  5. The compiled executables (avida, avida-viewer), as well as the sample configuration files will be present in the work directory.
  6. +
+### Mac OS X - Xcode +
    +
  1. Open the Avida.xcodeworkspace file in the top level of the source code.
  2. +
  3. Select the avida build scheme in the top left of the workspace window.
  4. +
  5. Select menu option Product > Archive
  6. +
  7. "Distribute..." the archive, "Save Built Products"
  8. +
  9. The archive contents will contain the executable in /usr/local/bin/avida and the example configuration files in /usr/local/share/avida
  10. +
+ +### Windows - Visual Studio +
    +
  1. Open the CMake GUI
  2. +
  3. Select the top level avida source code directory for the "Where is the source code" option.
  4. +
  5. Specify a director to build the project files and binaries. It is recommended that you create a new empty directory for this path.
  6. +
  7. Select your desired development system (Visual Studio version), if prompted or necessary.
  8. +
  9. Click Configure twice, then click Generate to generate the project files.
  10. +
  11. Open the generated Visual Studio solution file that should now be in your build folder.
  12. +
  13. Build the solution (build the install target, don't use build all).
  14. +
  15. You should find a work directory in your build folder containing the avida.exe and default configuration files.
  16. +
+Some other notes: +
    +
  1. In the options panel only APTO_LIB_SHARED, APTO_LIB_STATIC and AVD_CMDLINE should be 'On'. The viewer does not appear to build on Windows at the moment.
  2. +
  3. Can't find the executable? Check the bin/DEBUG or bin/RELEASE directories.
  4. +
+ +## Project Structure +The Avida project master repository has been organized in the structure described below. This overview should help locate where the sub-projects you are interested in may be found. See specific sub-project pages for further information. + +
Applications - /apps
Mac OS Viewer - /apps/viewer-macos
Cocoa-based GUI application supporting Avida and Avida-ED
Avida Core - /avida-core
The avida-core and avida-viewer libraries. The heart of Avida.
Libraries - /libs
Apto - /libs/apto submodule
Apto C++ tools library. Data structures and cross-platform support layer.
+ +## Contributing to the Repositories +There are two main ways to contribute code changes to the repositories of the Avida project. The community at large is encouraged to fork the repositories on GitHub and to submit pull requests as appropriate. More details about using GitHub is available on their site. + +Core developers who have been granted direct push access will need to utilize the authenticated remote repository path. The authenticated repository is git@github.com:devosoft/avida.git. If you are working from a standard clone of the source code, you may update your push URLs with the following commands: +
$ git remote set-url --push origin git@github.com:devosoft/avida.git
diff --git a/docs/documentation/Development-|-Tutorial-|-Birth-Death-Cycle.md b/docs/documentation/Development-|-Tutorial-|-Birth-Death-Cycle.md new file mode 100644 index 0000000..7b39679 --- /dev/null +++ b/docs/documentation/Development-|-Tutorial-|-Birth-Death-Cycle.md @@ -0,0 +1,228 @@ +

+This document describes the interaction between organisms and the population. +

+ + +

 

+

The Death of an Organism

+ +

+When an organism is killed off, its location in the population (that is, its +population cell) needs to be emptied, the scheduler needs to be notified, and +various statistics need to be updated to reflect the recently deceased. All of +this is handled with the method below. In a default Avida setup, this method +will only be called when a cell needs to be cleared out for a new occupant, +but you've already seen this method used when you implemented the kill-related +events in a previous homework. We'll see it also called from code displayed in +the next section of this document. +

+ +
+void cPopulation::KillOrganism(cPopulationCell& in_cell)
+{
+  // do we actually have something to kill?
+  if (in_cell.IsOccupied() == false) return;
+
+  // Statistics...
+  cOrganism* organism = in_cell.GetOrganism();
+  cGenotype* genotype = organism->GetGenotype();
+  m_world->GetStats().RecordDeath();
+
+  num_organisms--;
+  genotype->RemoveOrganism();
+
+  // And clear it!
+  in_cell.RemoveOrganism();
+  if (!organism->GetIsRunning()) delete organism;
+  else organism->GetPhenotype().SetToDelete();
+
+  // Alert the scheduler that this cell has a 0 merit.
+  schedule->Adjust(in_cell.GetID(), cMerit(0));
+
+  // Update the archive (note: genotype adjustment may be deferred)
+  m_world->GetClassificationManager().AdjustGenotype(*genotype);
+}
+
+ +

+This method takes as an argument the cell that needs to be emptied. It starts +off by making sure that the cell in question actually has an organism in it to +be killed. If not, it stops right there. If so, it records some statistics +about that organism's life, and updates its counter of living organisms to +reflect that there is one fewer. +

+

+Once the statistics are finished, the cell itself is cleared with the +cPopulationCell::RemoveOrganism() +method (in which the pointer to the organism it once contained is set to NULL). +At this point if the organism is not the currently running CPU it will be +deleted. Otherwise, a flag is set that marks the organism for deletion after +the current instruction has finished executing. Finally, the scheduler (which +is the object that doles out CPU cycles to the individual organisms) is updated +to reflect that this cell is now empty. +

+ + +

 

+

Activating an Organism in a Specific Cell

+ +

+If an organism is going to be placed into a specific cell of the population, +the method ActivateOrganism can be called on the population, telling it the +location in memory of the organism to be placed and the cell to place it in. +This method will call the KillOrganism() method +to make sure the cell is unoccupied. This method is called from the +Inject() method as well as +ActivateOffspring(), described below. +Here is the ActivateOrganism method: + +

+void cPopulation::ActivateOrganism(cAvidaContext& ctx, cOrganism* in_organism, cPopulationCell& target_cell)
+{
+  in_organism->SetOrgInterface(new cPopulationInterface(m_world));
+
+  // If the organism does not have a genotype, give it one!  No parent
+  // information is provided so we must set parents to NULL.
+  if (in_organism->GetGenotype() == NULL) {
+    cGenotype* new_genotype = m_world->GetClassificationManager().GetGenotype(in_organism->GetGenome(), NULL, NULL);
+    in_organism->SetGenotype(new_genotype);
+  }
+  cGenotype* in_genotype = in_organism->GetGenotype();
+
+  // Save the old genotype from this cell...
+  cGenotype* old_genotype = NULL;
+  if (target_cell.IsOccupied()) {
+    old_genotype = target_cell.GetOrganism()->GetGenotype();
+    
+    // Sometimes a new organism will kill off the last member of its genotype
+    // in the population.  Normally this would remove the genotype, so we
+    // want to defer adjusting that genotype until the new one is placed.
+    old_genotype->IncDeferAdjust();
+  }
+
+  // Update the contents of the target cell.
+  KillOrganism(target_cell);
+  target_cell.InsertOrganism(*in_organism);
+
+  // Update the archive...
+  in_genotype->AddOrganism();
+
+  if (old_genotype != NULL) {
+    old_genotype->DecDeferAdjust();
+    m_world->GetClassificationManager().AdjustGenotype(*old_genotype);
+  }
+  m_world->GetClassificationManager().AdjustGenotype(*in_genotype);
+
+  // Initialize the time-slice for this new organism.
+  schedule->Adjust(target_cell.GetID(), in_organism->GetPhenotype().GetMerit());
+
+  // Special handling for certain birth methods.
+  if (m_world->GetConfig().BIRTH_METHOD.Get() == POSITION_CHILD_FULL_SOUP_ELDEST) {
+    reaper_queue.Push(&target_cell);
+  }
+
+  num_organisms++;
+
+  // Statistics...
+  m_world->GetStats().RecordBirth(target_cell.GetID(), in_genotype->GetID(),
+                                  in_organism->GetPhenotype().ParentTrue());
+}
+
+ +

+The first thing we do build a new interface object and attach it to the +organism object. Next we check to see if the organism has already been +assigned its genotype. If an organism was born from a parent in the population, +it will have been assigned a genotype by the time this method is called. If it +does not have a genotype, however, the classification manager object will be +called to look up any genotypes that match this genome. The classification +manager will either return an exact match, or else create a new genotype, add it +to the archive, and return its pointer. In either case, we now have a genotype +for this organism. +

+

+Before we erase the organism currently in this cell, we want to keep track of +what genotype it was part of for use in updating the archive later. We then +kill the organism in the cell (as described above) and insert the new one. +The cPopulationCell::InsertOrganism() +method will setup the organism based on the environmental conditions of this +cell (mutation rate, tasks rewarded, etc), and store the organism for future +use. +

+

+We then adjust the genotype to let it know a new organism of its type has +been created, and tell the classification manager that it should also adjust +the genotypes to reflect their new abundances (one genotype has grown by one, +the other has shrunk, so the genotype ordering may change). Other maintenance +we need to do at this point includes adjusting the scheduler to let it know the +merit of this new organism, and the reaper_queue if we keep track +of the birth order of organisms so that we can always kill off the oldest in +the population. +

+

+Finally, we adjust some more statistics by incrementing the number of +organisms in the population and let the statistics object know that a new +organism was born, with all of its information. Remember, if this cell was +already occupied, KillOrganism() would have decremented it, so this will +properly reflect the number of organisms alive in the population at any moment. +

+ + +

 

+

Placing an Offspring in the Population

+ +

+When an organism gives birth, we must collect some relevant statistics, +which can best be accomplished in the population object. Then we must +place the offspring into its own cell in the population. This is all done +with the cPopulation::ActivateOffspring +method. This method takes as arguments the parent organism and child genome +that we're working with. It is called by the divide command via the +population interface. As this method is quite long, refer to it in the source +code in cPopulation.cc while reading the remainder of this section. +

+

+The first step in activating an offspring involves performing some book keeping +on the parent's phenotype via the DivideReset() +method. After this, the child genome is submitted to the birth chamber. The +birth chamber is responsible for handling the details of reproduction, such as +genome recombination in sexual populations. The +SubmitOffspring() method will add organism objects +to the child_array for each offspring produced. +

+

+The next section of code is in charge of finding where in the population each +child organism should be placed. The cell of the parent is looked up, and then +the PositionChild() method is called to determine +the child's cell. +

+

+If the parent is not about to be killed off (due to being replaced by one of +the children), we actually want to do a bit more work -- we need to adjust +it in the schedule in case its merit has changed over this gestation cycle, +and (if we are on a grid) we want to turn the child so that it is facing +its parent. +

+

+Finally, we collect a bunch of statistics for the parent's genotype object, +and we run ActivateOffspring for each offspring produced using the cell we have +chosen in order to place the child into the population. +

+ + +

 

+

Injecting an Organism into the Population

+ +

+Injecting a genome into the population that does not have a parent (such as +with the Inject action) is somewhat easier to deal with. +Basically, all that this method needs to do is build the organism with the +proper genome, determine its genotype, setup its phenotype, put it into a +test CPU to get its initial merit, and activate it! You should be able to +go line-by-line through the code to see how exactly this happens for +yourself. See +cPopulation::InjectGenome, +and more importantly +cPopulation::InjectGenotype +in cPopulation.cc. +

diff --git a/docs/documentation/Development-|-Tutorial-|-C-Plus-Plus-Intro.md b/docs/documentation/Development-|-Tutorial-|-C-Plus-Plus-Intro.md new file mode 100644 index 0000000..c06fc26 --- /dev/null +++ b/docs/documentation/Development-|-Tutorial-|-C-Plus-Plus-Intro.md @@ -0,0 +1,395 @@ +

+This file will cover in more detail some of the concepts needed to understand +C++. The goal here is not to make you be able to sit down and write +your own program from scratch. +

+ + +

 

+

Objects and Classes

+

+An object in C++ is a single, conceptual unit that contains +data (information about the state of that object) and +methods (functions associated with that class of objects) by +which the object is modified or can interact with other objects. The data in +an object can be either normal variables (e.g. characters, floating +point numbers, or integers) or previously-defined objects. A category of +objects is a class; an object is a single instance of a class. +

+

+For example, in Avida one of the most important classes is called cOrganism +-- it is the class that all organism objects belong to. Here is an abbreviated +version of the cOrganism class declaration (explained further below). + +

+class cOrganism
+{
+private:                     // Data in this class cannot be directly accessed from outside.
+  const Genome m_genome;    // The initial genome that this organism was born with.
+  cPhenotype m_phenotype;    // Maintains the status of this organism's phenotypic traits.
+
+  cOrgInterface* m_interface;  // Interface back to the population.
+
+  cGenotype* m_genotype;     // A pointer to the genotype that this organism belongs to.
+  cHardwareBase* m_hardware; // The virtual machinery that this organism's genome is run on.
+
+public:                     // The methods are accessible to other classes.
+  cOrganism(cWorld* world, cAvidaContext& ctx, const Genome& in_genome);
+  ~cOrganism();
+
+  // This batch of methods involve interaction with the population to resolve.
+  cOrganism* GetNeighbor() { return m_interface->GetNeighbor(); }
+  int GetNeighborhoodSize() { return m_interface->GetNumNeighbors(); }
+  void Rotate(int direction) { m_interface->Rotate(direction); }
+  int GetInput() { return m_interface->GetInput(); }
+  void Die() { m_interface->Die(); }
+
+  // Accessors -- these are used to gain access to private data.
+  const Genome& GetGenome() const { return m_genome; }
+  cHardwareBase& GetHardware() { return *m_hardware; }
+  cPhenotype& GetPhenotype() { return m_phenotype; }
+  cGenotype* GetGenotype() { return m_genotype; }
+};
+
+ + +

 

+

Style and Syntax Guide

+ +

+Don't worry too much about how the syntax works. The code presented above +is a definition of a class in C++. It is broken into two parts; one labeled +private: for those portions of the definition that can only +be interacted with from within the class, and another labeled public: +which defines the interface to the outside. In this case, we've made all +of the variables private and the methods public. +

+

+A variable is defined by a description of the type of variable (such +a cPhenotype) and then the name of this particular instance +of the variable. In this case, since organisms only have one phenotype, +we called it merely m_phenotype. Not that because this +variable is a member of cOrganism instances, it is +prefixed with 'm_'. +

+ +

+Methods are slightly more complex. The declaration of a method starts with the +type of data the method returns (such as int for integer), or else +lists void if there is no return value. Then the method name is +given, followed by a set of parenthesis (which are what indicates to C++ that +you are declaring a method). Inside of those parentesis, can be +arguments, which are variables that must be given to the +method in order for it to operate correctly. The declaration can stop at this +point (ending in a semi-colon) if the method body is defined +elsewhere. The body of the method is the sourcecode that details how the method +operates, and can be included immediately after the declaration (within braces) +or be placed elsewhere in the code. Typically short method bodies are included +in the class definition, while longer ones are placed outside of it. A method is +performed on an object, by listing the object name, followed by a dot ('.'), and +then the name of the method to be called with all necessary arguments included. +This is explained further below. +

+

+The C++ language will accept variable names, class names, and method names of +any alpha-numeric sequence as long as all names begin with a letter. The only +other character allowed in a name is the underscore ('_'). To make reading code +easier, we have adopted certain conventions. +

+ +
+
an_example_variable
+
+ Variable names (including object names) are always all in lowercase + letters, with individual words separated by underscores. Variables are + either user-defined classes, numbers (integers, boolean values, floating + point numbers, etc.) or characters (single symbols)
+ +
ExampleMethod
+
+ Method names always have the first letter of each word capitalized, with the + remainder of the word in lowercase. The one exception to this is Constructors + and Destructors, which must have the same name as the class (see below). +
+
cExampleClass
+
+ Classes use a similar format to methods, but always begin with a single, + lowercase 'c'. Some other specialized types also used this format, but with a + different initial letter. For example, an initial 't' indicates a template, + which is a special type of class. +
+
CONSTANT_VALUE
+
+ Any constant values (that is, numerical values that will never change + during the course of the run) are given in all upper-case letters, with + individual words separated by underscores. +
+
+ +

+Different software projects will each use their own style conventions; these +are the ones you'll end up working with in Avida. Some exceptions do exist. +For example, the C++ language itself does not follow many style rules; +built-in C++ names are all lowercase letters, regardless of what they +represent. For more details, including spacing and other code formatting +standards you must follow in Avida, see the +Coding Standards. + + +

 

+

Description of Data Elements

+ +

+The section labeled private above lists those data that are unique +to each organism; these are objects and pointers that exist inside of +an organism object. First, m_genome keeps +the initial state of the organism. Since we never want this genome to change +over the organism's life, we place a const directive in front of +it. The const command exists so that C++ knows to warn the +programmer if they accidentally try to change an object (or variable) that +is not supposed to be altered. +

+

+The internal m_phenotype object is used to +record the behaviors and abilities that the organism demonstrates during its +life. This class has variables to track everything from the tasks performed to +the gestation time of the organism and the number of offspring it has ever +produced. The m_interface allows an +organism to communicate with the environment (either the +cPopulation or the +cTestCPU) that it is part of. This is used, +for example, when an organism is ready to finish replicating and needs its +offspring to be placed into the population. If an organism is being run on a +test CPU rather than in a proper population object, then this interface will +cause the statistics about offspring to be recorded for later use instead of +activating it. +

+

+Next, we have two pointers. A pointer is a value that +represents ("points to") a location in the physical memory of the computer. A +pointer can be identified by the asterisk ('*') that follows the type name. The +code "cGenotype* genotype" indicates that the variable +genotype points to a location in memory +where an object of class cGenotype is +stored. In this case, all of the organisms that are of a single genotype all +point to the same cGenotype object so that the genotypic information +is accessible to all organisms that may need to make use of it. +

+

+The final data element is m_hardware, a +pointer to an object of type cHardwareBase. +This variable is a pointer for a different reason than the genotype. Where a +single genotype is shared by many different organisms, each organism does +possess its own hardware. However, Avida supports more than one type of +hardware, where any of them can be at the other end of that hardware pointer. +The cHardwareBase class is used as an interface to the actual hardware that is +used. This is explained in more detail later in the section on inherited +classes. For the moment, the key idea is that a pointer can sometimes point to +a general type of object, not just those of a very specific class. +

+ + +

 

+

Description of Methods

+ +

+Class descriptions (with limited exceptions) must contain two specific +methods called the constructor and the +destructor. The constructor always has the same name as the +class (it's called cOrganism(...) in this +case), and is executed in order to create a new object of that class. The +arguments for the constructor must include all of the information required to +build on object of the desired class. For an organism, we need the world +object within which the organism resides, the current execution context, and +perhaps most importantly the genome of the organism. The method is not defined +here, only declared. A declared method must be defined +elsewhere in the program. All methods must be, at least, declared in the class +definition. Note that if there are many ways to create an object, multiple +constructors are allowed as long as they take different inputs. +

+

+Whereas the constructor is called when an object is created, the destructor +is called when the object is destroyed, whereupon it must do any cleanup, +such as freeing allocated memory (see the section on memory management +below). The name of a destructor is always the same as the class name, +but with a tilde ('~') in front of it. Thus, the cOrganism's destructor +is called ~cOrganism(). A destructor can +never take any arguments, and there must be only one of them in a class +definition. +

+

+The next group of five methods are all called when an organism needs +to perform some behavior, which in all of these cases involves it interacting +with the population. For example, if you need to know at whom an organism +is facing, you can call the method +GetNeighbor() +on it, and a pointer to the neighbor currently faced will be returned. +Likewise, if you need to kill an organism, you can call the method +Die() on it, and it will be terminated. +Since each of these require interaction on the population level, the population +itself takes care of the bulk of the functionality. +

+

+The 'Accessors' are methods that provide access to otherwise private +data. For example, the method GetGenome() +will literally pass the genome of the organism to the object that calls it. In +particular, the hardware object associated with an organism will often call +GetPhenotype() in order to get the current +state of the organism's phenotype and update it with something new the organism +has done. Several things to take note of here. In the first three accessors, +the name of the class being returned is followed by an ampersand ('&'). +This means that the actual object is being passed back, and not just a copy of +all the values contained in it. See the next section on pointers, references, +and values for more information about this. Also, in the very first accessor, +the keyword const is used twice. The first time is to say that +the object being passed out of the method is constant (that is, the programmer +should be warned if somewhere else in the code it is being changed) and the +second time is to say that the actions of this method will never change +anything about the object they are being run on (that is, the object is being +left constant even when the method is run.) The net effect of this is that an +object marked const can only have const methods run on it. The compiler will +assume that a non-const method being run will make a change to the object, and +is therefore an error. +

+

+This section has contained information about a particular C++ class found +in Avida. The next sections will more generally explain some of the +principles of the language. If you haven't already, now might be a good +time to take a deep breath before you dive back in. +

+ + +

 

+

Pointers, References, and Values

+ +

+The three ways of passing information around in a +C++ program is through sending a pointer to the location of that information, +sending a reference to it, or actually just sending the value of the information. +For the moment, lets consider the return value of a method. Consider +the three methods below: +

+
+  Genome GetGenomeValue();
+  Genome* GetGenomePointer();
+  Genome& GetGenomeReference();
+
+

+These three cases are all very different. In the first case +(Pass-by-Value), the value of the genome in question is +returned. That means that the genome being returned is analyzed, and the exact +sequence of instruction in it are sent to the object calling this method. Once +the requesting object gets this information, however, any changes made to it do +not affect the original genome that was copied. The second case +(Pass-by-Pointer),only a few bytes of information are returned +that give the location in memory of this genome. The requesting object can then +go and modify that memory if it chooses to, but it must first 'resolve' the +pointer to do so. Finally, the last case (Pass-by-Reference) +actually passes the whole object out. It is used in a very similar way to +pass-by-value, but any changes made to the genome after it is passed out will +affect the genome in the actual organism itself! Pass-by-reference does not +add any new functionality over pass-by-pointer, but in practice it is often +easier to use. +

+ + +

 

+

Memory Management

+ +

+Memory management in C++ can be as simple or complicated as the programmer +wants it to be. If you never explicitly allocate a chunk of memory, than +you never need to worry about freeing it up when you're done using it. +However, there are many occasions where a program can be made faster or +more flexible by dynamically allocating objects. The command +new is used to allocate memory; for example if +you wanted to allocate memory for a new genome containing 100 instructions, +you could type: +

+
+  Genome* created_genome = new Genome(100);
+
+

+The variable created_genome is defined as a pointer to a memory location +containing a genome. This is assigned the location of the newly allocated +genome in memory, which is the return value of the new command. +The Genome constructor (called with new) takes as an argument a single number +that is the sequence length of the genome. +

+

+Unfortunately, C++ won't know when we're done using this genome. If we +need to create many different genomes and we only use each of them once, +our memory can rapidly fill up. So, we need tell the memory management +that we are finished with the current object. Thus, when we're done using +it, we type: +

+
+  delete created_genome;
+
+

+And the memory pointed to by the created_genome +variable will be freed up. +

+

+An excellent example of when allocation and freeing of memory is employed +in Avida is with the genotype. Every time a new genotype is created during +evolution, Avida needs to allocate a new object of class cGenotype. During +the course of a run, millions of genotypes may be created, so we need to be +sure to free genotypes whenever they will no longer be needed in the run. +

+ + +

 

+

Inherited Classes

+ +

+One of the beauties of C++ is that well written code +is inherently very reusable. As part of that, there is the concept +of the class inheritance. When a new class is built in C++, +it is possible to build it off of an existing class, then referred to as +a base class. The new derived +class will have access to all of the methods in the base class, and can +overload them; that is, it can change how any of those +methods operate. +

+

+For example, in the Avida scheduler, we use a class called +cSchedule to determine which organism's +virtual CPU executes the next instruction. Well, this cSchedule object is not +all that clever. In fact, all that it does is run through the list of +organisms that need to go, lets them each execute a single instruction, and +then does it all over again. But sometimes we need to make some organisms +execute instructions at a faster rate than others. For that reason, there are +several derived classes, including +cIntegratedSchedule, which takes in a merit +value for each organism, and assigns CPU cycles proportional to that merit. +Since this new class uses cSchedule as its base class, it can be dynamically +plugged in during run time, after looking at what the user chooses in the +configuration file. +

+

+If a method is not implemented in a base class (left to be implemented in the +derived classes) it is called an abstract method. If a base +class does not implement any of its methods and is only used in order +to specify what methods need to be included in the derived classes, it is +referred to as an abstract base class (or sometimes an +interface class or protocol) and is used +simply as a method contract for derived classes. An example in Avida where this +is used is the organism interface with the environemnt. The class +cOrgInterface is an abstract base class, +with cPopulationInterface and +cTestCPUInterface as derived classes. This +organization allows for organism objects to interact with both the population +and the test environment, without having to write separate code for each. +

+ + +

 

+

Other C++ Resources:

+ + \ No newline at end of file diff --git a/docs/documentation/Development-|-Tutorial-|-Environment.md b/docs/documentation/Development-|-Tutorial-|-Environment.md new file mode 100644 index 0000000..0f355be --- /dev/null +++ b/docs/documentation/Development-|-Tutorial-|-Environment.md @@ -0,0 +1,268 @@ +

+The environment source code consists of several main components: resources, +reactions, and task triggers, plus the libraries that maintain each of these. +

+ + +

 

+

Task Entries

+ +

+A task library is composed of a collection of entries, each of which fully +describes a single task that can be used to trigger reactions. +

+
+typedef double (cTaskLib::*tTaskTest)(cTaskContext*) const;
+
+class cTaskEntry {
+private:
+  cString m_name;  // Short keyword for task
+  cString m_desc;  // For more human-understandable output...
+  int m_id;
+  tTaskTest m_test_fun;
+  cString m_info;  // extra info (like the string or whatever to match)
+  
+public:
+  cTaskEntry(const cString& name, const cString& desc, int in_id, tTaskTest test_fun, const cString& info);
+    : m_name(name), m_desc(desc), m_id(in_id), m_test_fun(test_fun), m_info(info)
+  {
+  }
+  ~cTaskEntry() { ; }
+
+  const cString& GetName() const { return m_name; }
+  const cString& GetDesc() const { return m_desc; }
+  const int GetID() const { return m_id; }
+  const tTaskTest GetTestFun() const { return m_test_fun; }
+  const cString& GetInfo() const { return m_info; }
+};
+
+ +

+Task entries are very straight-forward. They consist of a name, a description, +a unique ID number, and a method from the task library (cTaskLib) that they +are associated with. This method looks at the inputs the organism has taken +in, the values it has output, and returns a number between 0.0 and 1.0 +representing how well the task was performed. Currently, all task tests will +return an exact zero or one, but fractions are possible if there +is a quality component associated with the task. +

+ + +

 

+

Task Libraries

+ +

+Here is an abridged version of the task library class that manages all of the +individual entries: +

+ +
+class cTaskLib {
+private:
+  Apto::Array<cTaskEntry*> task_array;
+
+public:
+  int GetSize() const { return task_array.GetSize(); }
+
+  cTaskEntry* AddTask(const cString& name, const cString& info);
+  const cTaskEntry& GetTask(int id) const;
+
+  void SetupTests(cTaskContext& ctx) const;
+  inline double TestOutput(const cTaskEntry& task, cTaskContext* ctx) const;
+
+private:
+  double Task_Echo(cTaskContext* ctx) const;
+  double Task_Add(cTaskContext* ctx) const;
+  double Task_Sub(cTaskContext* ctx) const;
+
+  double Task_Not(cTaskContext* ctx) const;
+  double Task_Nand(cTaskContext* ctx) const;
+  double Task_And(cTaskContext* ctx) const;
+  // ... And a whole bunch more ...
+
+};
+
+ +

+The task library contains an array of task entries that define all of the +rewarded (or otherwise acted upon) tasks in an environment. +

+

+The TestOutput() method can only be run with +as cTaskContext object that has been initialized +with the SetupTests method. It will test the +specific task passed in and return the 0.0 - 1.0 quality measure of how well +that task was done with the most recent output. +

+ +

+Below is a sample task-tester implementation: + +

+double cTaskLib::Task_Add(cTaskContext* ctx) const
+{
+  const int test_output = ctx->output_buffer[0];
+  for (int i = 0; i < ctx->input_buffer.GetNumStored(); i++) {
+    for (int j = 0; j < i; j++) {
+      if (test_output == ctx->input_buffer[i] + ctx->input_buffer[j]) return 1.0;
+    }
+  }
+  return 0.0;
+}
+
+ +

+This case tests to see if the organism has performed an addition operation. +It compares all pairs of inputs summed together against the most recent +output of the organism. If there is a match a full reward (1.0) is given. +If no match is found, no reward is given (0.0). +

+ +

+The SetupTests method performs some +precomptution for all of the logic tasks, creating the value +logic_id within the task context. The +logic_id has 256 possible values, each of which +can only be associated with a single logic task. These tests look more like: +

+ +
+double cTaskLib::Task_AndNot(cTaskContext* ctx) const
+{
+  const int logic_id = ctx->logic_id;
+  if (logic_id == 10 || logic_id == 12 || logic_id == 34 ||
+      logic_id == 48 || logic_id == 68 || logic_id == 80) return 1.0;
+  return 0.0;
+}
+
+ +

+If the logic ID is on the list, the task has been done, otherwise it hasn't. +In each case, the outside world needs to request a test of which tasks have +been performed, and the library just replied with a numerical answer. +

+ + +

 

+

Building a Reaction

+ +

+The reaction class keeps track of all of the information associated with +a single possible environmental reaction. Each reaction must have a unique +name and a unique numerical ID associated with them. In addition to those +data, a reaction object also has a task that acts as its trigger, a list of +other requisites that must be met for the trigger to work, and a list of +processes that will occur if the reaction goes off. The cReaction object +acts a a single place to store all of this information. +

+ + +

 

+

Resources

+ +

+Resources are a little more complicated than task entries to manage +and understand. An object of type cResource +contains 19 pieces of data, and the associated accessors. Like all of the +other individual units we have discussed, resources have a unique +name and numerical +id. For all resource we store the quantities +associated with their inflow, +outflow, and +initial count (each stored as a +double) as well as the geometry of that resource. + +

+For spatial resources we need to be able to describe how a resource +exists in space so we store data for: +

    +
  • + inflowX1, + inflowX2, + inflowY1, and + inflowY2 to describe a rectangle where + resources flow in. +
  • +
  • + outflowX1, + outflowX2, + outflowY1, and + outfowY2 for a rectangle where resources + flow out. +
  • +
  • + cell_list is a list of individual cells with + their own initial, inflow and outflow values. +
  • + xdiffuse and + ydiffuse describe how fast resources will + flow from cells of higher amounts of that resource to cells with + lower amounts of that resource. +
  • +
  • + xgravity and + ygravity describe the preferential flow of + resource in a given direction. +
  • +
+

+This class describes the dynamics of a resource, not its current count +(since, for example, we might want local resources where each cell +would have its own count). However, every time a +resource is needed, any changes in its quantity from the last time it was +used can be calculated using these numbers. +

+ + +

 

+

Tying it all together: The Environment

+ +

+The cEnvironment class is used to maintain the details of how the environments +work using the classes described above and a few others. Below is an +abbreviated version of this class: +

+ +
+class cEnvironment {
+private:
+  // Keep libraries of resources, reactions, and tasks.
+  cResourceLib resource_lib;
+  cReactionLib reaction_lib;
+  cTaskLib task_lib;
+  cInstLib inst_lib;
+  cMutationRates mut_rates;
+
+public:
+  bool Load(const cString& filename);
+
+  // Interaction with the organisms
+  bool TestOutput(cAvidaContext& ctx, cReactionResult& result, cTaskContext& taskctx,
+                 const tBuffer<int>& send_buf, const tBuffer<int>& receive_buf,
+                 const Apto::Array<int>& task_count, const Apto::Array<int>& reaction_count,
+                 const Apto::Array<double>& resource_count) const;
+};
+
+ +

+The private data members include all of the libraries needed to specify +the environment, plus its mutation rates. The +Load() method takes a filename +(environment.cfg by default) and will fill out all of the libraries +in this environment. The most important feature of this class is the +TestOutput() method, which takes in all sorts +of information about the current state of the organism that has just done +an output and fills out an object of type +cReactionResult with information about what +happened. It also directly returns a bool that will indicate if there have +been any changes at all. The specific information it uses to determine +the results are the inputs the organism has taken in and the outputs it has +produced -- both needed to determine what tasks have been done, and therefore +what reactions may have been triggered. This information is encapsulated in +the task context taskctx. The organism's +previous task_count and +resource_count are also needed to determine +if the reactions requisites have been met. And finally the +resource_count available to the organisms is +needed to determine how much of each resource can be used in the reactions. +

diff --git a/docs/documentation/Development-|-Tutorial-|-Genome.md b/docs/documentation/Development-|-Tutorial-|-Genome.md new file mode 100644 index 0000000..060a8b8 --- /dev/null +++ b/docs/documentation/Development-|-Tutorial-|-Genome.md @@ -0,0 +1,161 @@ +

+This document discusses the implementation of the cInstruction and Genome classes. +

+ + +

 

+

The cInstruction Class

+ +

+This class is used to represent a single instruction within a genome. The +private portion of this class consists of a single number that uniquely +identifies the type of instruction, and the public section +has a number of helper methods that allow us to work with that number. +

+ +
+class cInstruction {
+private:
+  unsigned char m_operand;
+
+public:
+  // Constructors and Destructor...
+  cInstruction() : m_operand(0) { ; }
+  cInstruction(const cInstruction& inst) { *this = inst; }
+  explicit cInstruction(int in_op) { SetOp(in_op); }
+  ~cInstruction() { ; }
+
+  // Accessors...
+  int GetOp() const { return static_cast<int>(m_operand); }
+  void SetOp(int in_op) { assert(in_op < 256); m_operand = in_op; }
+
+  // Operators...
+  void operator=(const cInstruction& inst) { m_operand = inst.m_operand; }
+  bool operator==(const cInstruction& inst) const { return (m_operand == inst.m_operand); }
+  bool operator!=(const cInstruction& inst) const { return !(operator==(inst)); }
+
+  // Some extra methods to convert too and from alpha-numeric symbols...
+  char GetSymbol() const;
+  void SetSymbol(char symbol);
+};
+
+ +

+As stated above, the only private datum is a numerical value that identifies +this instruction. The name m_operand is the term +that is used for a command name in an assembly language. Most normal assembly +languages have both an operand and arguments associated with each full command. +In Avida, the commands have no arguments, and hence they just consist of a +single operand. The data type used for this is unsigned char. A +char is an 8 bit number, so when one is unsigned, it represents a number from 0 +to 255. As Avida is currently implemented, we are limited to 256 distinct +instructions. To the outside world, we treat the instruction operand like an +integer, so it would be easy to modify this class were we ever to need more +than 256 instructions in the set. The only reason to limit it to 8 bits +internally (rather than the 32 of an int) is to save memory when we have a very +large number of instructions throughout a population. Instructions already +make up over half of all the memory resources used by Avida. +

+

+The public methods begin with the GetOp() and +SetOp() methods, which are standard accessors. +Next, we have a collection of methods that begin with the word 'operator'. +These are used to define how the corresponding symbols should be treated +when applied to objects of this class. For example, the method +operator==() is called when we try to compare +an object of type cInstruction to another. We have full control over the +definition of this method, just like any other. +

+

+Finally, we have a pair of methods that convert instructions to and from +alphanumeric characters (symbols). These methods are used to print instructions +out in a maximally compressed format, and to load them back in. The order of +symbols used are the letters 'a' through 'z' in lowercase, followed by an +uppercase 'A' through 'Z' and finally the numbers '0' through '9'. If there +are more than 62 possible instructions, all the rest are assigned a '?' when +printed out, and cannot be read back in properly from this format. +

+ + +

 

+

The Genome class

+ +

+A genome is a sequence of instructions. The following class maintains this +sequence as an array, and provides a collection of methods to manipulate the +total construct. +

+ +
+class Genome
+{
+protected:
+  Apto::Array<cInstruction> genome;
+  int active_size;
+ 
+public:
+  Genome() { ; }
+  explicit Genome(int _size);
+  Genome(const Genome& in_genome);
+  Genome(const cString& in_string);
+  virtual ~Genome();
+ 
+  virtual void operator=(const Genome& other_genome);
+  virtual bool operator==(const Genome& other_genome) const;
+  virtual bool operator!=(const Genome& other_genome) const { return !(this->operator==(other_genome)); }
+  virtual bool operator<(const Genome& other_genome) const { return AsString() < other_genome.AsString(); }
+ 
+  cInstruction& operator[](int index) { assert(index >= 0 && index < active_size);  return genome[index]; }
+  const cInstruction& operator[](int index) const { assert(index >= 0 && index < active_size);  return genome[index]; }
+ 
+  virtual void Copy(int to, int from);
+ 
+  int GetSize() const { return active_size; }
+  cString AsString() const;
+};
+
+ +

+The protected variable genome is an array +containing an object of type cInstruction at each position. The second +variable active_size denotes the number of +instructions in this array that are currently being used. The fact that +these variables are "protected" instead of "private" means that any +class derived from Genome will also have direct +access to the variables. In particular, the class +cCPUMemory extends Genome, adding methods to +alter the array length and new variables to keep track of information about +each instruction. +

+

+Three constructors allow for a new Genome object to be specified by either a +genome length, a previously created genome, or else a string -- a sequence +of symbols representing each instruction in order. +

+

+The operators created for manipulating genomes include both assignment +(setting one genome equal to another) and comparison (testing to see if +two genomes are identical.) Additionally, there are two +operator[] methods. This means that if you +have an object of type Genome, you can index into it to retrieve a single +instruction. Thus, if the object was called initial_genome, the +statement initial_genome[15] would return the instruction at +position fifteen in the genome. This occurs by calling one of these methods +with the appropriate integer. The difference between these two operator +methods is that one of them is for mutable genomes (i.e. those that can be +modified) -- a reference to the instruction in question is returned allowing +it to be altered. The other index operator (operator[] method) is for const +genomes, which can never be changed so only the value of the instruction is +returned. +

+

+The Copy() method is a shortcut to copy memory +from one position in the genome to another. This method will later be +overloaded (that is, replaced with a newer version) by +cCPUMemory such that the proper flags will be copied, with the instruction +and others will be set to indicate the copied instruction for future tests. +GetSize() returns the length of the genome, and +AsString() returns a string who has symbols in +each position that correspond to the the instruction in the same position in +the genome. +

diff --git a/docs/documentation/Development-|-Tutorial-|-Life-Cycle.md b/docs/documentation/Development-|-Tutorial-|-Life-Cycle.md new file mode 100644 index 0000000..84224aa --- /dev/null +++ b/docs/documentation/Development-|-Tutorial-|-Life-Cycle.md @@ -0,0 +1,233 @@ +

+This document examines the details of commands directly involved in +replication. +

+ + +

 

+

1. Allocation of Offspring Memory

+ +

+The very first instruction in most heads-based organisms is h-alloc, +which will allocate space for an offspring to be placed into. If you look at +the file source/cpu/cHardwareCPU.cc, you will see that this +instruction is associated with the method +cHardwareCPU::Inst_MaxAlloc(). +What this means is that the organism will automatically allocate as much +space as it possibly can, without having to first calculate its needs. When +the organism is finished copying itself and divides off its child, any excess +allocated memory will automatically be discarded. +

+

+This Inst_MaxAlloc() method will determine the maximum amount of extra space +that an organism is allowed to allocate, and then run the Allocate_Main() +function passing in that amount. Allocate_Main is a very long method which is +mostly just check to make sure that everything going on is legal, and then +initializes the new memory that was allocated as per the configuration file: +random, default instruction, or leave as it was in the previous organism that +used it (for "necrophelia"). +

+ + +

 

+

2. Initial Self-Analysis

+ +

+Most of the initial self-analysis done on Avida organisms is with the +search instruction or one of its variants. In the heads based +instruction set, we call this h-search and associate it with the +method cHardwareCPU::Inst_HeadSearch(). +

+

+The search type instructions read in the template (series of nops) that +follows it, determine the complement template, and find that complement +elsewhere in the genome. It then sets the registers BX and CX to be the +distance to the found template and the size of that template respectively. +Finally, we place the flow control head at the end of the template found in +order to reference it later on. Obviously this last step only occurs +in the heads-based search. +

+

+The first search instruction executed by a heads organism is typically used +to locate the end of its genome. The search will place the flow-head at +the end of the genome, which the organism will use to move the write head to +this point as well. This is done with the mov-head instruction. +

+

+If the mov-head instruction is followed by a nop-C it +will move the write head to the flow head, and ideally be ready to start +copying itself into the newly allocated space for the offspring. +

+ + +

 

+

3. The Copy Loop

+ +

+The copy loop is the heart of any organism. It consists of a setup, +a copy segment to copy one or more instructions, a test segment to determine +if the loop has finished, and a 'jump' type instruction to move back to +copy the next line. +

+

+In a hand written organism, the setup is an h-search command with +no template to direct its behavior. The default when this instruction does not +have a template is to just drop the flow-head at the very next instruction, +which is what it is used for here -- it places the flow head at the beginning +of the portion of code that will actually be looped through copying each line. +

+

+The copy segment is typically just a single h-copy instruction +that will read in an instruction from the location of the read-head, and write +it out to the location of the write-head. It will then advance both heads to +the next positions in the genomes. Take a look at the source code for the +method cHardwareCPU::Inst_HeadCopy(). +

+

+The first thing that happens in this method is the variables +read_head, +write_head, and +cpu_stats are setup as references to the +appropriate objects in the hardware and organism (that is, any modifications +to these references change the actual objects, not just a local copy of them). +This is so that we have easy to use variables locally for those objects that +we are working with. The read_head and write_head are then adjusted to make +sure they are in a legal position on the genome (if, for example, the last +instruction changed the organism's size, the heads might no longer be +pointing to memory that still exists). +

+

+Next, the instruction at the read head is recorded in the variable +read_inst, and we test to see if this should +be mutated to some other value. If a mutation does occur, we change the +read_inst variable to a random value, increment the mutation count, and mark +flags at the instruction position of the write head to denote the mutation. +After we determine what instruction was read (be it a correct reading or not), +we call the ReadInst() method, which is simply +used to keep track of the most recent template copied. This template is used +to help detect the end of the organism, which we shall discuss in a moment. +

+

+Finally, we collect the statistics that another copy command was executed +in this organism, finish the write by placing this instruction at the position +of the write head (and setting its flag as being a copied instruction) and +then advancing both heads to their next positions. +

+

+After an organism executes one of these copies it has to test to see if it +is done copying itself. The heads based organisms will typically do this +with the aid of the if-label instruction, which tests to see if +the most recent label copied is the complement of the one that follows it. +If so, it will execute the next instruction (often a divide), otherwise it +will skip that next instruction and execute a mov-head that will +jump the instruction pointer back to the flow head that was placed at the +beginning of the copy loop. It will continue this copy-test-jump cycle +until all the lines have been copied. +

+

+A common adaptation is "unrolling the loop". +In the hand-written version discussed above, each instruction must have +three instructions executed to copy it: h-copy, +if-label, and mov-head. But what if a second +h-copy command were inserted after the first? Now the program +would be one line longer, so it would have more to copy, but each time +through the loop would now copy two instructions while executing four -- +that means that on average only two instructions need be executed to copy +one. A *huge* savings. The main drawback to the organism is that its +length will need to be a multiple of two, or else the test to see if it is +finished won't occur at the proper time. This loop unrolling becomes less +and less beneficial each time the organism does it, so it won't go completely +out of control. +

+ + +

 

+

4. Dividing off the Child

+ +

+When an organism finishes copying itself, it needs to divide off its +child using a divide command. In the heads based instruction set, this is +the h-divide command which calls the +cHardwareCPU::Inst_HeadDivide() +method. +

+

+This method will use the read head to determine the starting location of the +offspring, and the write head to determine its end. This is logical because +these are the locations that the heads should be in right after the copy loop +has finished. Everything after the write head is cut off and discarded as +"extra lines". This information is passed into the Divide_Main method +which does the bulk of the work for divide (and is called by all of the various +divide instructions in all of the sets). +

+

+The cHardwareCPU::Divide_Main() +method is therefore what we are most interested in. It begins by calculating +the size of that child that would result from the divide point and the +extra_line count that were passed into it, and runs +Divide_CheckViable() to make sure that all of +these values are legal (that is that both parent and child are reasonable +sizes for organisms, and reasonable sizes in relationship to each other -- for +definitions of reasonable as found in the configuration file). If any of +them are not legal, the method returns false. +

+

+From this point on, we know the divide is legal, so we just need to process +it. We create a variable called child_genome, +which we use to construct the child genome. We use a reference to a Genome +object inside of the organism so that this child genome is attached to its +parent organism and will be easily accessible from other places where it will +be needed later. We're not going to be doing all of the work on it right in +this method. We initialize the child genome to the section of the parents +genome that was created for it. We then run +Resize() on the parent genome to get +rid of all of this extra space (both child and extra lines). +

+

+The Divide_DoMutations() method will test and +(if needed) process any divide mutations that may occur. There are many of +them, so this method is quite long. It is followed by +Divide_TestFitnessMeasures(), which will run the +offspring through a test CPU for special options that may be set in the +genesis file (such as mutation reversions). Obviously this is very processor +intensive since it would occur with every birth, so tests are only performed +if required. Both of these methods are left to the reader to step through +themselves. +

+

+If we are using extra costs associated with the first time instructions are +used, those costs a reset now that a divide has occurred, and must be paid for +again on the next divide cycle. +

+

+After a divide, we mark that we no longer have a mal (Memory ALlocation) +active. If the parent is reset (i.e., we have two offspring, not a parent +and child) we need to make sure not to advance the IP of the parent. The +reset parent has its IP placed at the beginning of its genome, and we want +to leave it there to execute the very first instruction. +

+

+Finally, we tell the organism to activate the divide and do something with +the child. Give the child to the population (or the test CPU as the case +may be) to be dealt with, and reset the parent if we're splitting into two +offspring. +

+ + +

 

+

5. Other Bits

+ +

+In the description of this life-cycle, one issue that has not been discussed is +where these organisms would perform their computations. In truth, there isn't +a fixed time other than it must be before the divide occurs, since merit is +recalculated on a divide. In practice it will typically be placed right before +the copy loop, but there are plenty of exceptions. +

+

+Ideally, in the longer term, an organism's life will be composed of much +more than just replication and computations -- they will have to interact with +each other and have more interactions with the environment. In a +multi-threaded model, organisms will be doing many activities at the same +time. +

\ No newline at end of file diff --git a/docs/documentation/Development-|-Tutorial-|-Task-Checklist.md b/docs/documentation/Development-|-Tutorial-|-Task-Checklist.md new file mode 100644 index 0000000..28248d3 --- /dev/null +++ b/docs/documentation/Development-|-Tutorial-|-Task-Checklist.md @@ -0,0 +1,108 @@ +

+This document discusses how to implement your own tasks to use as triggers +for reactions in the environment. +

+ + +

 

+

1. Build the prototype of the method that will be used to test the new task

+ +

+For this step, you will be editing the task library found in the files +cTaskLib.cc and cTaskLib.h in the directory +source/main/. Start by adding the prototype of your new test +function to the cTaskLib class in the header file. The data that will be +tested is all stored within task context that is passed into this function. +This function will output a double that represents the quality with +which the task is performed. This is a number between 0 and 1 that +determines the fraction of the bonus that should be received. For tasks that +are either successful or not, this will only return 0.0 or 1.0. +

+

+For example, if we were going to create a task that tests if the organisms +could double one of their inputs, we might call that task 'times2'. We would +then add the line to this file: +

+
+double Task_Times2(cTaskContext& ctx) const;
+
+ +

+If possible, place it near other tasks of the same type. In this case, +I choose to place it directly after Task_Echo(), since this is also an +easy task for the organisms to perform. +

+ + +

 

+

2. Build the body of the method that will be used to test the new task

+ +

+We next go into the code (cTaskLib.cc) file, and add the body of our +new method. We search for cTaskLib::Task_Echo(), since our new prototype +followed this method in the header file, and place the body of our function +immediately after it. +

+ +
+double cTaskLib::Task_Times2(cTaskContext& ctx) const
+{
+  const tBuffer<int>& input_buffer = ctx.GetInputBuffer();
+  const int test_output = ctx.GetOutputBuffer()[0];
+  const int input_size = ctx.GetInputBuffer().GetNumStored();
+  for (int i = 0; i < input_size ; i++)
+  {
+    if ( test_output == 2 * input_buffer[i])
+    {
+      return 1.0;
+    }
+  }
+  return 0.0;
+}
+
+ +

+The most recent output is always placed at the beginning of the output +buffer, so we store it in the variable +test_output to compare it against all of the +different inputs. We then have a for-loop that goes from 0 to the number +of inputs stored in the input buffer. Inside the body of the loop, we +test for each input if twice that input is equal to the output. If so, +then the task was successful and we return a 1.0. If all of the tests +fail and we exit the loop, then we return a 0.0. +

+

+These test methods should be carefully written so that they run as fast +as possible. In particular, if a task requires that an output be +compared to multiple inputs at a time (i.e., the tasks Add or Subtract), +then this can become combinartoically explosive. For the moment, we +keep control on this problem by only allowing three different inputs +in the input buffer, but in the future this number may need to become +higher. +

+ + +

 

+

3. Attach our new method to the name of its trigger

+ +

+This next step is also done in the code file, inside the +cTaskLib::AddTask() +method. Again, we want this to be in the same place, so we locate the +task 'echo' that its supposed to follow, and add in the new line. +

+ +
+else if (name == "times2")
+  NewTask(name, "Times2", &cTaskLib::Task_Times2);
+
+ +

+This line will attach the name to the description "Times2" (which +could have been a little more detailed, but should be 40 characters or less) +as well as the function that should be called when that name is listed as a +trigger to a reaction. +

+

+You are now ready to use your task! +

diff --git a/docs/documentation/Divide-settings.md b/docs/documentation/Divide-settings.md new file mode 100644 index 0000000..bf94c14 --- /dev/null +++ b/docs/documentation/Divide-settings.md @@ -0,0 +1,38 @@ +

These place limits on when an organism can successfully issue a divide command to produce an offspring.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OFFSPRING_SIZE_RANGEThis is the maximal difference in genome size between a parent and offspring. The default of 2.0 means that the genome of the child must be between one-half and twice the length of the parent. This it to prevent out-of-control size changes. Setting this to 1.0 will ensure fixed length organisms (as long as you also change the other settings detailed in How to Set Up Fixed-Length Organisms).
MIN_COPIED_LINES
MIN_EXE_LINES
These settings place limits on what the parent must have done before the offspring can be born; they set the minimum fraction of instructions that must have been copied into the offspring (vs. left as default) and the minimum fraction of instructions in the parent that must have been executed. If either of these are not met, the divide will fail. These settings prevent organisms from producing pathological offspring. In practice, either of them can be set to 0.0 to turn them off.
REQUIRE_ALLOCATEIs an allocate required between each successful divide (in virtual hardware types where allocate is meaningful)? If so, this will limit the flexibility of how organisms produce children (they can't make multiple copies and divide them off all at once, for example). But if we don't require allocates, the resulting organisms can be a lot more difficult to understand.
REQUIRED_TASKThis is a bit of a hack. It allows the user to set the ID number for a task that must occur for a divide to be successful. At -1, no tasks are required. Ideally, this should be incorporated into the environment configuration file. NOTE: A task can fire without triggering a reaction. To add a required reaction see below.
IMMUNITY_TASKAllows user to set the ID number for a task which, if it occurs, provides immunity from the required task (above) -- divide will proceed even if the REQUIRED_TASK is not done if IMMUNITY_TASK is done. Defaults to -1, no immunity task present.
REQUIRED_REACTIONAllows the user to set the ID number for a reaction that must occur for a divide to be successful. At -1, no reactions are required.
IMMUNITY_REACTIONAllows the user to set the ID number for a reaction that, if it occurs, provides immunity from the required reaction (above) -- divide will proceed even if the REQUIRED_REACTION has not been performed as long as the IMMUNITY_REACTION has been performed. Defaults to -1, no immunity reaction present.
REQUIRE_EXACT_COPYRequires the offspring to be an exact copy of the parent -- before divide mutations are imposed. At first glance this setting looks very similar to the STERILIZE_UNSTABLE setting in the Mutation Reversion group of settings. However, REQUIRE_EXACT_COPY allows any kind of divide mutation (see Mutation Settings)-- point, insertion, deletion, slip, etc. It does not allow before-divide mutations such as copy mutations. On the other hand, STERILIZE_UNSTABLE allows any kind of mutation, as long as the organism would be able to perfectly copy itself in the absence of mutations.
+

Many other requirements can be imposed. See avida.cfg for MIN_GENOME_SIZE, MAX_GENOME_SIZE, REQUIRE_SINGLE_REACTION, REQUIRED_BONUS, REQUIRED_RESOURCE, REQUIRED_RESOURCE_LEVEL, REQUIRED_PRED_HABITAT, REQUIRED_PRED_HABITAT_VALUE, IMPLICIT_REPRO_BONUS, IMPLICIT_REPRO_CPU_CYCLES, IMPLICIT_REPRO_TIME, IMPLICIT_REPRO_END, and IMPLICIT_REPRO_ENERGY.

diff --git a/docs/documentation/Energy-model-configuration.md b/docs/documentation/Energy-model-configuration.md new file mode 100644 index 0000000..52ae1d4 --- /dev/null +++ b/docs/documentation/Energy-model-configuration.md @@ -0,0 +1,101 @@ +

Overview

+

+The energy model provides an organism with a metabolic rate, which is proportional to its stored energy (shown below). + +An organism with a higher metabolic rate will pay more energy to execute instructions than one with a lower rate. + +An organism must pay both virtual CPU cycle and energy costs to execute instructions. + +As instructions are executed the organism's stored energy level is reduced. + +Energy can be taken up by the organism when it completes a task, among others. +

+ +
+Metabolic Rate = Stored Energy / NUM_INST_EXC_BEFORE_0_ENERGY +
+ +

Settings

+

+The settings below are defults from avida.cfg +

+### ENERGY_GROUP ###
+# Energy Settings
+ENERGY_ENABLED 0                       # Enable Energy Model. 0/1 (off/on)
+ENERGY_GIVEN_ON_INJECT 0               # Energy given to organism upon injection.
+ENERGY_GIVEN_AT_BIRTH 0                # Energy given to offspring upon birth.
+FRAC_PARENT_ENERGY_GIVEN_AT_BIRTH 0.5  # Fraction of perent's energy given to offspring.
+FRAC_ENERGY_DECAY_AT_BIRTH 0.0         # Fraction of energy lost due to decay during reproduction.
+NUM_INST_EXC_BEFORE_0_ENERGY 0         # Number of instructions executed before energy is exhausted.
+ENERGY_CAP -1                          # Maximum amount of energy that can be stored in an organism.
+                                       # -1 means the cap is set to Max Int
+APPLY_ENERGY_METHOD 0                  # When should rewarded energy be applied to current energy?
+                                       # 0 = on divide
+                                       # 1 = on completion of task
+                                       # 2 = on sleep
+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.
+
+

+ +

Description of Settings

+ENERGY_ENABLED +

+Flag that disables/enables the us of the energy model. + +0 = off, 1 = on +

+ +ENERGY_GIVEN_ON_INJECT +

+How much energy is given to an injected organism. + +This number should be large enough to sustain the population until it can gather its own energy through tasks, etc.. +

+ +ENERGY_GIVEN_AT_BIRTH +

+How much energy is given to an organism when it is born. +

+ +FRAC_PARENT_ENERGY_GIVEN_AT_BIRTH +

+Fraction of the parent(s) energy which is taken from the parent and given to the offspring at birth. +

+ +FRAC_ENERGY_DECAY_AT_BIRTH +

+Fraction of energy that decays on birth. +

+ +NUM_INST_EXC_BEFORE_0_ENERGY +

+Number of instructions an organism can execute before it runs out of energy assuming no new energy. + +Note: if instructions have energy costs > 0 then this options needs to be altered accordingly. +

+ +ENERGY_CAP +

+Maximum amount of energy that can be stored in an organism. +

+ +APPLY_ENERGY_METHOD +

+Specifies when newly received energy is applied to the organism energy store and metabolic rate. + +Note: the sleep instruction can also be used as an eat instructions if needed. +

+ +FRAC_ENERGY_TRANSFER +

+Fraction of a replaced organism's energy transfered to the replacing organism. +

+ +LOG_SLEEP_TIMES +

+Logs start and end times, in updates, of all executions of the sleep instruction. + +Note: can use a lot of memory. +

diff --git a/docs/documentation/Environment-file.md b/docs/documentation/Environment-file.md new file mode 100644 index 0000000..de9d10f --- /dev/null +++ b/docs/documentation/Environment-file.md @@ -0,0 +1,902 @@ +

+This is the setup file for the task/resource system in Avida. +

+

+Six main keywords are used in this file, RESOURCE, GRADIENT_RESOURCE, REACTION, CELL, MUTATION, and SET_ACTIVE. Their formats are: +

+
+  RESOURCE  resource_name[:options]  {resource_name ...}
+  GRADIENT_RESOURCE  gradient_resource_name[:options]  {gradient_resource_name ...}
+  REACTION  reaction_name  task  [process:...]  [requisite:...]
+  CELL resource_name:cell_list[:flow]
+  MUTATION name trigger scope type rate
+  SET_ACTIVE type name new_status(default=true)
+
+ +

Resources

+

+All entries on a resource line are names of individual resources. Resources can have a global quantity depletable by all organisms or can have quantities that vary from cell to cell. The resource name infinite is used to refer to an undepletable resource. There are two basic commands to set up a general resource: RESOURCE and CELL. In addition, GRADIENT_RESOURCE is a specific instance of RESOURCE which allows the user to specify a cellular distribution of quantities that change (aka move) over time in an Avida run. +

+ +

RESOURCE Command

+ +

The syntax for the Resource command is:

+ +
RESOURCE resource_name[:options]  {resource_name ...}
+ +
+

+Where resource_name is a unique name of the resource. This name may be used by the CELL command to further define the resource or in the REACTION to define which resource is consumed/created +by a reaction. +

+

+Where options is a colon delimited list of factors that modify the +resource. The following chart specifies these options. +

+
+
+

 

+

Table 1: Resources Options

+

+(blue variables used for all resources +while red variables are only used for +spatial resources) +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ArgumentDescriptionDefault
inflow + The number of units of the resource that enter the population over + the course of an update. For a global resource this inflow + occurs evenly throughout the update, not all at once. For a + spatial resource this inflow amount is added every update + evenly to all grid cells in the rectangle described by the + points (inflowx1,inflowy1) and (inflowx2,inflowy2). + 0
outflow + The fraction of the resource that will flow out of the population + each update. As with inflow, this happens continuously over the + course of the update for a global resource. In the case of a + spatial resource the fraction is withdrawn each update from + each cell in the rectangle described by the points + (outflowx1,outflowy1) and (outflowx2,outflowy2). + 0.0
initial + The initial abundance of the resource in the population at the + start of an experiment. For a spatial resource the initial + amount is spread evenly to each cell in the world grid. + 0
geometry + The layout of the resource in space.
+ global -- the entire pool of a resource is + available to all organisms
+ grid -- organisms can only access resources in + their grid cell. Resource can not flow past the edges of the + world grid. (resource will use spatial parameters)
+ torus -- organisms can only access resources in + their grid cell. Resource can flow to the opposite edges of the + world grid. (resource will use spatial parameters) +
global
deme + Is this resource going to be used by a deme. (True or + False) + + false +
energy + Is this an energy resource. The energy model must be used. + (True or False) + + false +
inflowx1 + Leftmost coordinate of the rectangle where resource will flow + into world grid. If not specified but an inflow rate is specified, + an x-coordinate will be determinstically assigned. + 0
inflowx2 + Rightmost coordinate of the rectangle where resource will flow + into world grid. If not specified, inflowx1's value will be used. + 0
inflowy1 + Topmost coordinate of the rectangle where resource will flow + into world grid. If not specified but an inflow rate is specified, + a y-coordinate will be determinstically assigned. + 0
inflowy2 + Bottommost coordinate of the rectangle where resource will flow + into world grid. If not specified, inflowy1's value will be used. + 0
outflowx1 + Leftmost coordinate of the rectangle where resource will flow + out of world grid. + 0
outflowx2 + Rightmost coordinate of the rectangle where resource will flow + out of world grid. If not specified, outflowx1's value will be used. + 0
outflowy1 + Topmost coordinate of the rectangle where resource will flow + out of world grid. + 0
outflowy2 + Bottommost coordinate of the rectangle where resource will flow + out of world grid. If not specified, outflowy1's value will be used. + 0
xdiffuse + How fast material will diffuse right and left. This flow + depends on the amount of resources in a given cell and amount in + the cells to the right and left of it. (0.0 - 1.0) + 1.0
xgravity + How fast material will move to the right or left. This + movement depends only on the amount of resource in a given cell. + (-1.0 - 1.0) + 0
ydiffuse + How fast material will diffuse up and down. This flow + depends on the amount of resources in a given cell and amount in + the cells above and below it. (0.0 - 1.0) + 1.0
ygravity + How fast material will move to the up or down. This + movement depends only on the amount of resource in a given cell. + (-1.0 - 1.0) + 0
+

 

+
+ +

+An example of a RESOURCE statement that begins a run with a fixed amount of the +(global) resource in the environment, but has no inflow or outflows is: +

+  RESOURCE  glucose:initial=10000
+
+

+

+If you wanted to make this into a chemostat with a 10000 equilibrium +concentration for unused resources, you could put: +

+  RESOURCE  maltose:initial=10000:inflow=100:outflow=0.01
+
+

+

+If you want a resource that exists spatially where the resource enters +from the top and flows towards the bottom where it exits the system, +you could use: +

+  RESOURCE lactose:geometry=grid:initial=100000:inflow=100:outflow=0.1:\
+  inflowx1=0:inflowx2=100:inflowy1=0:inflowy2=0:outflowx1=0:outflowx2=100:\
+  outflowy1=100:outflowy2=100:ygravity=0.5
+
+

+

+Defining a resource with no parameters means that it will start at a zero +quantity and have no inflow or outflow. This is sometimes desirable if you +want that resource to only be present as a byproduct of a reaction. +Remember, though, that you should still have an outflow rate if it's in +a chemostat. + + +

+ +

CELL Command

+

+Using Cell can help increase the detail of a spatial resource. Any cell in a +grid can be given their own initial amount of a resource, inflow amount and +outflow rate. These values are in addition to any other values set for the +spatial resource for the entire for the grid (diffusion and gravity for +instance). The command has the format: +

+
CELL resource_name:cell_list[:options]
+

+

+Where resource_name is the name of the spatial resource that this +cell command will modify. If this resource has not been defined yet, a new +resource with this name will be created. +

+

+Where cell_list is comma delimited list of cells that will be set. +We treat the grid like a one dimensional array where 0 is the upper left corner, +world_x - 1 is the upper right corner, and (world_x * world_y) - 1 is the +lower right corner. As well as single cell you can also enter a range of +cells by using the format a..b. +

+

+Where options is a colon delimited list of factors that modify the +resource. The following chart specifies these options. +

+
+ +
+

 

+

Table 4: Cell Options

+ + + + + + + + + + + + + + + + + + + + + +
ArgumentDescriptionDefault
inflow + The number of units of the resource that enter a cell at the end of an + update. + 0
outflow + The fraction of the resource that will flow out a cell each update. + 0.0
initial + The initial abundance of the resource in a cell at the start of an + experiment. + 0
+

 

+
+ +

+An example of setting two cells in the glucose spatial resource: +

+
CELL glucose:20,50:initial=100:inflow=10:outflow=0.1
+ +

+An example of setting a 3 x 3 square of cells in the middle of a a maltose +spatial resource (assuming a 10 x 10 world): +

+
CELL maltose:33..35,43..45,53..55:initial=500:inflow=5:outflow=0.01
+ +

Reactions

+ +

+Reactions are set to allow organisms to consume or produce resources when those +organisms preform certain tasks. Reactions can be used to reward (or punish) +organisms for performing tasks or to set up a "food web". They +are described by the task that triggers them, the processes they +perform (including resources used and the results of using them), and +requisites on when they can occur. +

+ +

REACTION Command

+
REACTION  reaction_name  task[:argument:...]  [process:...]  [requisite:...]
+
+

+ Where reaction_name is a unique name for a reaction. +

+

+ Where task is the name of the task that must be be performed to + trigger the reaction. A list of common tasks is listed in Table 3. +

+

+ Where argument is a list of specific arguments needed by the + particular task. +

+ Where process is a colon delimited list of information about how + resources are consumed/produced. Process settings are described in Table 4. +

+

+ Where requisite is a colon delimited list describing when + reactions can be triggered. Requisite settings are described in Table 5. +

+

+Each reaction must have a task that triggers it. Currently, eighty tasks +have been implemented, as summarized in the following table (in approximate +order of complexity): +

+ +
+

 

+

Table 5: Available Tasks

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TaskDescription
echo + This task is triggered when an organism inputs a single number and + outputs it without modification. +
add + This task is triggered when an organism inputs two numbers, sums them + together, and outputs the result. +
sub + This task is triggered when an organism inputs two numbers, subtracts + one from the other, and outputs the result. +
not + This task is triggered when an organism inputs a 32 bit number, + toggles all of the bits, and outputs the result. This is typically + done either by nanding (by use of the nand instruction) the + sequence to itself, or negating it and subtracting one. The latter + approach only works since numbers are stored in twos-complement + notation. +
nand + This task is triggered when two 32 bit numbers are input, the values + are 'nanded' together in a bitwise fashion, and the result is output. + Nand stands for "not and". + The nand operation returns a zero if and only if both inputs are one; + otherwise it returns a one. +
and + This task is triggered when two 32 bit numbers are input, the values + are 'anded' together in a bitwise fashion, and the result is output. + The and operation returns a one if and only if both inputs are one; + otherwise it returns a zero. +
orn + This task is triggered when two 32 bit numbers are input, the values + are 'orn' together in a bitwise fashion, and the result is output. + The orn operation stands for or-not. It is returns true if for each + bit pair one input is one or the other one is zero. +
or + This task is triggered when two 32 bit numbers are input, the values + are 'ored' together in a bitwise fashion, and the result is output. + It returns a one if either the first input or the second input + is a one, otherwise it returns a zero. +
andn + This task is triggered when two 32 bit numbers are input, the values + are 'andn-ed' together in a bitwise fashion, and the result is output. + The andn operation stands for and-not. It only returns a one if + for each bit pair one input is a one and the other input is + not a one. Otherwise it returns a zero. +
nor + This task is triggered when two 32 bit numbers are input, the values + are 'nored' together in a bitwise fashion, and the result is output. + The nor operation stands for not-or and returns a one only if both + inputs are zero. Otherwise a zero is returned. +
xor + This task is triggered when two 32 bit numbers are input, the values + are 'xored' together in a bitwise fashion, and the result is output. + The xor operation stands for "exclusive or" and returns a one + if one, but not both, of the inputs is a one. Otherwise a zero is + returned. +
equ + This task is triggered when two 32 bit numbers are input, the values + are equated together in a bitwise fashion, and the result is output. + The equ operation stands for 'equals' and will return a one if both + bits are identical, and a zero if they are different. +
logic_3AA-
logic_3CP
+ These tasks include all 68 possible unique 3-input logic operations, + many of which don't have easy-to-understand human readable names. +
+

 

+
+ +

+When describing a reaction, the process portion determines consumption +of resources, their byproducts, and the resulting bonuses. There are several +arguments (separated by colons; example below) to detail the use of a resource. +Default values are in brackets: +

+ +
+

 

+

Table 6: Reaction Process Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ArgumentDescriptionDefault
resource + The name of the resource consumed. By default, no resource is being + consumed, and the 'max' limit is the amount absorbed. + infinite
value + Multiply the value set here by the amount of the resource consumed + to obtain the bonus. (0.5 may be inefficient, while 5.0 is very + efficient.) This allows different reactions to make use of the + same resource at different efficiency levels. + 1.0
type + Determines how to apply the bonus (i.e. the amount of the resource + absorbed times the value of this process) to change the merit of the + organism. +
   add: Directly add the bonus to the current merit. +
   mult: Multiply the current merit by the bonus (warning: if + the bonus is ever less than one, this will be detrimental!) +
   pow: Multiply the current merit by 2bonus. + this is effectively multiplicative, but positive bonuses are + always beneficial, and negative bonuses are harmful. +
   enzyme: Add bonus * resource / (resource + ksubm) to the current merit. + This is gives a Michaelis-Menten enzyme type reward where bonus is the Kcat + and the Km is entered. Does not work with unlimited resources. +
   energy: Add the bonus energy to the organism's energy waiting to be applied buffer. Bonus energy can be applied on completion of a reaction, execution of the sleep/eat instruction, or when the organisms divides. See Energy Model documentation for more information. +
add
maxThe maximum amount of the resource consumed per occurrence.1.0
min + The minimum amount of resource required. If less than this quantity + is available, the reaction ceases to proceed. + 0.0
fracThe maximum fraction of the available resource that can be consumed.1.0
product + The name of the by-product resource. At the moment, only a single + by-product can be produced at a time. + none
conversionThe conversion rate to by-product resource1.0
inst + The instruction that gets executed when this reaction gets performed. If + you do not want an organism to be able to have the instruction in their + genome, you still must put it in the instruction set file, but set its weight + to zero. The instruction is executed at no cost to the organism. + none
lethalWhether the cell dies after performing the process0
randomWhether any produced resource is placed randomly in the world instead of the focal cell.0
depletable + Whether this resource is consumed by reactions. + 1
phenplastbonus + Specify how to handle phenotypic plasticity at run-time. + This option may significantly slow an Avida experiment. + When requested in many of the settings below (*), task + bonuses will be adjusted by the plasticity + of each organism's genotype. Requisites will still be + honored, making true task completion information ambiguous. +
   default: Do not attempt to use the genotype's task plasticity. +
   *nobonus: Do not give a bonus to non-static tasks. +
   *fracbonus: Scale the bonus by how static the task is. +
   *fullbonus: Always reward a task when it is detected. +
+ default +
ksubm + Km for an enzyme reaction. + + 0.0 +
+

 

+
+ + +

+If no process is given, a single associated process with all default +settings is assumed. If multiple process statements are given, all are +acted upon when the reaction is triggered. Assuming you were going to set +all of the portions of process to be their default values, this portion of +the reaction statement would appear as: +

+  process:resource=infinite:value=1:type=add:max=1:min=0:frac=1:product=none:conversion=1
+
+

+

+This statement has many redundancies; for example, it would indicate that the +associated reaction should use the infinite resource, making 'frac' and 'min' +settings irrelevant. Likewise, since 'product' is set to none, the +'conversion' rate is never considered. +

+

+The requisite entry limits when this reaction can be triggered. The +following requisites (in any combination) are possible: +

+ + +
+

 

+

Table 7: Reaction Requisite Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ArgumentDescriptionDefault
reaction + This limits this reaction from being triggered until the other + reaction specified here has been triggered first. With this, the + user can force organisms to perform reactions in a specified order. + none
noreaction + This limits this reaction from being triggered if the reaction + specified here has already been triggered. This allows the user to + make mutually exclusive reactions, and force organisms to "choose" + their own path. + none
min_count + This restriction requires that the task used to trigger this reaction + must be performed a certain number of times before the trigger will + actually occur. This (along with max_count) allows the user to + provide different reactions depending on the number of times an + organism has performed a task. + 0
max_count + + This restriction places a cap on the number of times a task can + be done and still trigger this reaction. It allows the user to + limit the number of times a reaction can be done, as well as + (along with min_count) provide different reactions depending on the + number of times an organism as performed a task. + INT_MAX
min_tot_count + This restriction requires that the total number of tasks performed by + the organism must be at least this high before this reaction will trigger. + This (along with max_tot_count) allows the user to provide different + reactions depending on how many tasks an organism performs. + 0
max_tot_count + This restriction places a cap on the number of tasks an organism can do + and still trigger this reaction. It allows the user to limit the number + of tasks that will be rewarded, as well as (along with min_tot_count) provide + different reactions depending on the number of tasks an organism performs. + INT_MAX
reaction_min_count + This restriction requires that the reaction must be performed a certain number + of times before any rewards are given. The restriction refers to the number of + times the specific reaction has been triggered, regardless of how many times + the referenced task has been performed. The reaction process specs max and min + will restrict reactions and their counts, not tasks. + 0
reaction_max_count + This restriction caps the number of times an organism can perform the reaction, + effectively limiting the number of times a reaction will be rewarded. The + restriction refers to the number of times the specific reaction has been triggered, + regardless of how many times the referenced task has been performed. The reaction + process specs max and min will restrict reactions and their counts, not tasks. + INT_MAX
divide_only + This command decides when a task will be checked, if the value is 0 the task + will only be checked when an organism executes an IO. If the value is 1 the task + will only be checked when the organism divides. If the value is 2 the task will be + checked at both times. + 0
parasite_only + This command only allows parasites to get credit for the reaction, not host organisms. + False
+

 

+
+ +

+No restrictions are present by default. If there are multiple requisite +entries, only *one* of them need be satisfied in order to trigger the +reaction. Note though that a single requisite entry can have as many +portions as needed. +

+ +

Examples

+ +

+We could simulate the pre-environment system (in which no resources were +present and task performance was rewarded with a fixed bonus) with a file +including only lines like: +

+  REACTION AND logic:2a process:type=mult:value=4.0   requisite:max_count=1
+  REACTION EQU logic:2h process:type=mult:value=32.0  requisite:max_count=1
+
+

+ +

+No RESOURCE statements need be included since only the infinite resource is +used (by default, since we don't specify another resource's name) +# To create an environment with two resources that are converted back and +forth as tasks are performed, we might have: +

+  RESOURCE  yummyA:initial=1000
+  RESOURCE  yummyB:initial=1000
+  REACTION  AtoB  gobbleA  process:resource=yummyA:frac=0.001:product=yummyB
+  REACTION  BtoA  gobbleB  process:resource=yummyB:frac=0.001:product=yummyA
+
+

+

+A value of 1.0 per reaction is default. Obviously gobbleA and +gobbleB would have to be tasks described within Avida. +

+ +

+A requisite against the other reaction being performed would prevent a +single organism from garnering both rewards in equal measure. +

+

+As an example, to simulate a chemostat, we might have: +

+  RESOURCE glucose:inflow=100:outflow=0.01
+
+

+

+This would create a resource called "glucose" that has a fixed inflow rate of +10000 units where 20% flows out every update. (Leaving a steady state of +50,000 units if no organism-consumption occurs). +

+ +

+Limitations to this system: +

    +
  • + Only a single resource can be required at a time, and only a single + by-product can be produced. +
  • +
+ +

+The default setup is: +

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

+ +

+This creates an environment where the organisms get a bonus for performing +any of nine tasks. Since none of the reactions are associated with a +resource, the infinite resource is assumed, which is non-depeletable. +The max_count of one means they can only get the bonus from each reaction +a single time. +

+ +

+A similar setup that has 9 resources, one corresponding to each of the nine +possible tasks listed above is: +

+  RESOURCE  resNOT:inflow=100:outflow=0.01   resNAND:inflow=100:outflow=0.01
+  RESOURCE  resAND:inflow=100:outflow=0.01   resORN:inflow=100:outflow=0.01
+  RESOURCE  resOR:inflow=100:outflow=0.01    resANDN:inflow=100:outflow=0.01
+  RESOURCE  resNOR:inflow=100:outflow=0.01   resXOR:inflow=100:outflow=0.01
+  RESOURCE  resEQU:inflow=100:outflow=0.01
+  
+  REACTION  NOT  not   process:resource=resNOT:value=1.0:frac=0.0025
+  REACTION  NAND nand  process:resource=resNAND:value=1.0:frac=0.0025
+  REACTION  AND  and   process:resource=resAND:value=2.0:frac=0.0025
+  REACTION  ORN  orn   process:resource=resORN:value=2.0:frac=0.0025
+  REACTION  OR   or    process:resource=resOR:value=4.0:frac=0.0025
+  REACTION  ANDN andn  process:resource=resANDN:value=4.0:frac=0.0025
+  REACTION  NOR  nor   process:resource=resNOR:value=8.0:frac=0.0025
+  REACTION  XOR  xor   process:resource=resXOR:value=8.0:frac=0.0025
+  REACTION  EQU  equ   process:resource=resEQU:value=16.0:frac=0.0025
+
+

+ +

Other Commands

+

SET_ACTIVE Command

+

+Allows user to activate or deactivate a reaction. If this command is not +used all reactions are active. +

+
+  SET_ACTIVE type name new_status(default=true)
+
+
+

+ Where type is the type of command to activate/deactivate. + Currently REACTION is the only choice. +

+

+ Where name is the name of the item to activate/deactivate. +

+

+ Where new_status sets if the item is active (0 or FALSE will + deactivate). +

\ No newline at end of file diff --git a/docs/documentation/Events-file.md b/docs/documentation/Events-file.md new file mode 100644 index 0000000..8a78fc2 --- /dev/null +++ b/docs/documentation/Events-file.md @@ -0,0 +1,28 @@ +The events file controls events that need to occur throughout the course of a run. This includes the output of data files as well as active events that effect the population (such as extinction events or changes to the mutation rate). + + + +File Formats + +This file consists of a list of events that will be triggered either singly or periodically. The format for each line is: + +type timing event arguments + +The type determines what kind of timings the event will be based off of. This can be immediate [i], based on update [u], or based on generation [g]. + +The timing should only be included for non-immediate events. If a single number is given for timing, the event occurs at that update/generation. A second number can be included (separated by a colon ':') to indicate how often the event should be repeated. And if a third number is listed (again, colon seperated) this will be the last time the event can occur on. For example, the type and timing `u 100:100:5000` would indicate that the event that follows first occurs at update 100, and repeats every 100 updates thereafter until update 5000. A type timing of g 10:10 would cause the event to be triggered every 10 generations for the entire run. + +The event is simply the name of the action that should be performed, and the arguments detail exactly how it should work when it is triggered. Each action has its own arguments. See the List of Actions for details about all of the available options. + +Some examples: + +i Inject +Inject an additional start creature immediately. + +u 100:100 PrintAverageData +Print out all average measurements collected every one hundred updates, starting at update 100. + +g 10000:10:20000 PrintData dom_info.dat update,dom_fitness,dom_depth,dom_sequence +Between generations 10,000 and 20,000, append the specified information to the file dom_info.dat every ten generations. Specifically, the first column in the file would be update number, second is the fitness of the dominant genotype, followed by the depth in the phylogentic tree of the dominant genotype, and finally its genome sequence. + +[List of Actions](List-of-actions) diff --git a/docs/documentation/Experiment-and-analysis-guides.md b/docs/documentation/Experiment-and-analysis-guides.md new file mode 100644 index 0000000..33784c0 --- /dev/null +++ b/docs/documentation/Experiment-and-analysis-guides.md @@ -0,0 +1,2 @@ +* [[Example Configs]] +* [[Creating a Flame Graph]] diff --git a/docs/documentation/File-settings.md b/docs/documentation/File-settings.md new file mode 100644 index 0000000..1c68694 --- /dev/null +++ b/docs/documentation/File-settings.md @@ -0,0 +1,13 @@ +

This section relates Avida to other files that it requires.

+ + + + + + + + + + + +
DATA_DIRThe name (or path) of the directory where output files generated by Avida should be placed.
EVENT_FILE
ANALYZE_FILE
ENVIRONMENT_FILE
These settings indicate the names of all of the other configuration files used in an Avida run. See their documentation for more information about how to use these files.
diff --git a/docs/documentation/General-settings.md b/docs/documentation/General-settings.md new file mode 100644 index 0000000..32e2ba5 --- /dev/null +++ b/docs/documentation/General-settings.md @@ -0,0 +1,18 @@ +

This section covers all of the basic variables that describe the Avida run. You will probably not need to change these settings.

+ + + + + + + + + + + + + + + +
RANDOM_SEED The random number seed initializes the random number generator. You should alter only this seed if you want to perform a collection of replicate runs. Setting the random number seed to zero (or a negative number) will base the seed on the starting time of the run -- effectively a random random number seed. In practice, you want to always be able to re-do an exact run in case you want to get more information about what happened.
POPULATION_CAP The carrying capacity of the population (in number of organisms), removing random organisms when new organisms are born. Use 0 for no cap.
POP_CAP_ELDEST Also applies a population cap, but removes the oldest organisms in the world.
+

Other general settings are described in the avida.cfg file itself: VERBOSITY, SPECULATIVE, and POP_CAP_ELDEST.

diff --git a/docs/documentation/Gradient-resources.mediawiki b/docs/documentation/Gradient-resources.mediawiki new file mode 100644 index 0000000..65a10ca --- /dev/null +++ b/docs/documentation/Gradient-resources.mediawiki @@ -0,0 +1,243 @@ +
+

Gradient Resources

+
+Gradient resource format is: +
  GRADIENT_RESOURCE gradient_resource_name[:options]  {gradient_resource_name ...}
+

Gradient Resources

+Like other resources, gradient resources are defined in the Environment File and all entries on a gradient resource line are names of individual resources. Gradient resources are a type of spatial resource, some of the main difference being that gradient resources can move (standard gradient resources and halo gradient resources) and can affect org movements (hills and barriers). + +Currently moving gradient resources are only supported for bounded grid environments. + +
+ +

GRADIENT_RESOURCE Command

+The syntax for the Gradient Resource command is: +
GRADIENT_RESOURCE gradient_resource_name[:options]  {gradient_resource_name ...}
+

Habitats:

+The habitat a resource represents controls both the specifications of the resource (i.e. moving or stationary, orbiting or bounded within a defined area) and any effect of the resource on the organisms (i.e. blocking or slowing movement). Currently there are 4 habitats implemented: gradient, hills, barriers, and nests. + +

Gradient Resources: Standard and Halo

+Standard gradient and halo resources allows the user to specify resource distributions which change over time. If movement is enabled, the conical resources move around the Avida grid. This movement may be confined to an orbit around a specified anchor cell on the Avida grid (halos) or within a defined bounding box (standard). Gradient resource cones can be capped with a plateau cylinder of a determined height wherever cone height meets or exceeds the value of 1. In terms of actual resource value, this is analogous to slicing the cone at height 1 and then setting the actual resource value (plateau) in the sliced area to some flat value. Organisms can use sense instructions to detect resources on all parts of the cone, but they can only consume the resources where the value is >= min value in the associated reaction or collect instruction. Typically, the min value is set so that only the plateau area of the cone can be consumed. When an organism consumes any part of the cone, the cone can be set to stop moving until a predifined number of updates (=decay) has passed or all consumable resource (all cells with value >= 1) has been consumed. The cone is then refreshed at some random location within the specified boundaries. An odd but useful quirk is that if decay is set to 1, you can have walking wounded resources. + +

Barriers: Random, Vertical, and Horizontal

+Barriers are far simpler than halo and standard gradient resources. Barrier resources are simply meant to represent walls which block movement. Barriers are only implemented to be created randomly within the grid (the first block is set down in a random cell, then the next block set in a connected random, E-W, or N-S cell, and so on). For a vertical or horizontal barrier, the build direction is randomly selected at the start and the build continues in that direction until all the blocks are placed. If the end of the world is reached and there are still blocks to place, we go back to the original cell and build in the opposite direction. For random barriers, a random direction is selected at the start. Then, the direction of the build continues unchanged with a 95% probability, and a new random build direction with 5% probability. The user can also specify and exclusion area by using halo_inner_radius and halo anchors. +Because barriers can be generated in the middle of a run, we allow orgs already standing on a barrier (which should only happen if they are born on a barrier or if a barrier was created underneath them) to continue moving. In other words, they can exit a barrier, but orgs cannot enter one. If an org (not already on a barrier) tries to enter a barrier cell, movement fails and a 0 is returned to the ?BX? register. Orgs can also make use of the sense-faced-habitat instruction to find the most restrictive habitat type in the faced cell. This will return a 1 if the 'worst' resource in the faced cell is a hill, a 2 if a barrier is in the faced cell, and a 0 if no hills or barriers are in the faced cell. + +

Hills

+Hills are simply meant to represent areas which slow movement. Hills are only implemented to be created randomly within the grid. The center block for each occurance of a hill is set down in a random cell, then the rest of the block is drawn in a circle around the center point using a random radius selected from within the config set radius range. The user can also specify and exclusion area by using halo_inner_radius and halo anchors. The effects on movement are determined by the resistance config setting. This is implemented as the probability of successfully moving while on a hill is equal to 1/resistance. As such, on average, an org on a hill with resistance = 4, will have to execute 4 move instructions to move one cell. + +

Nests

+Nests are standard gradient resources, but by declaring a gradient resource to be a nest, the resource will 'hidden' from long-distance sensing instructions such as look-ahead. Dens +Dens are unhidden nests that are visible to instructions like look-ahead. + +

Predatory Resources

+Predatory resources are gradient resources with teeth. See SetPredatoryResource in the events list of actions. + +
+ +  +

Table 1: Gradient Resource Options

+black variables apply to all gradient resource types, +blue variables apply to standard and halo gradient resources +green variables apply only to halo resources +brown(ish) variables apply to halo resources, hills and barriers +red variables apply only to barriers +purple variables apply only to hills +blue-green variables apply to all topographic features (hills, barriers, dens) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ArgumentDescriptionDefault
habitatType of gradient resource. This determines most of the behaviors and effects of the resource.0 = gradient (standard or halo), 1 = hills, 2 = barriers, 3 = nests(hidden), 4 = dens(visible), 5 = predatory, > 5 = other gradient resource (used to differentiate different 'kinds' of food.0
refugeIs the resource a refuge (predation prevented)?0
peakxInitial x-coordinate of cone peak cell. Only affects non-moving peaks. For moving peaks, random coordinates within appropriate bounds will be used.0
peakyInitial y-coordinate of cone peak cell.0
heightHeight in terms of resource value of the cone at the peak center. This affects values along the slope of the cone where the value of any cell on the slope = height/(distance to center + 1). Note that the height of the plateau may supersede the height of the cone, lowering or raising all cell resource values within the plateau to the plateau value. Since slope is height/distance, for a cone having a plateau and a height set to 10, the plateau will be the region of cells 10 or fewer cells from the center.0
plateauStandard and Halo: Actual initial height in terms of resource levels wherever cone height is greater or equal to 1. This will supersede the cone height in eligible cells. A value of -1 turns this option off. Barriers and Hills: Height of the topographic feature. Apart from when plateau = 0 (off) and plateau > 0 (on), the plateau value has no effect outside of providing values for drawing/rendering.-1.0
spreadRadius of the cone in terms of cells (i.e. extent of cone base). Because the spread starts counting the center cell as radius == 0, a spread of 4 will have 9 cells along the E-W/N-S axes (center cell + 4 cells either side). However, the height of this same resource would need to be == 5 to cover the same area with res value >= 1 (since we add 1 to distance from center cell for height).0
decayNumber of updates until gradient resource is refreshed after an organism initially consumes resources in the cone. The refresh will occur even if the plateau has not been completely consumed. If decay = 0, the peak will be regenerated at a new random location every update, regardless of whether any has been consumed. If decay = 1, the cone will never actually be regenerated, but will move continuously. If decay > 1, resources move until some has been consumed. Movement will then halt until decay # updates (including current) have passed and the cone will then be regenerated in a new random location.1
min_xLeftmost coordinate of the rectangle in which resource will move randomly. The resource will stop moving left and bounce in a new random direction (inside the rectangle) when the edge of the plateau hits min_x. The case is the same for max_x, min_y, and max_y.0
max_xRightmost coordinate of the rectangle in which resource will move randomly.0
min_yTopmost coordinate of the rectangle in which resource will move randomly.0
max_yBottommost coordinate of the rectangle in which resource will move randomly0
thresholdThis set how other parts of avida interact with the resource, specifically look instructions (for now). In the look instructions, anything at or above this value will be treated and counted as an 'edible' cell.1.0
move_a_scalerMeasure of resource movement smoothness taken from the variable "A" in equation 1 from Morrison and DeJong's DF-1 Algorithm. Values range from 1 to 4. Values from 1 to around 3 yield smooth movements, while larger values yield chaotic movement. In the current implementation of gradient resources, this value is largely irrelevant, but move_a_scaler = 1 means no movement and the common setting for moving peaks is 3.8.1.0
updatestepStandard and Halo: How many updates to wait until changing gradient resouce movement direction. Resources move in random directions, only changing course if they bounce or when updatestep is reached. Low updatestep numbers result in chaotic peak movements (and peaks tend not to travel very far overall). Barriers and Hills: How many updates to wait until regenerating the topographic features at new locations. Any value less than 1 (or >= the number of updates in the run) will turn off regeneration.1
haloDetermines if this is a halo gradient. Instead of moving in a predetermined box, halo resources move randomly in an orbit around some fixed anchor cell. 1 if true, 0 if false. Halos do not use the bounded box (min_x, max_x, min_y, max_y) variables. Instead, they rely on the radius and width definitions to determine movement bounds. Note that orbit distances are in terms of cells, so orbits are rectangle in Avida. A diagonal line of cells count as the same distance as a straight line of cells.0
halo_inner_radiusHalo: Closest (in number of cells) the inner edge of a plateau of a halo resource can be to the anchor cell. If no plateau is set, then this will just be the closest the center peak cell can be to the anchor, i.e. the minimum orbit. If plateau is set, minimum orbit will be halo_inner_radius + height (since radius of plateau = height). If you want a plateau of size 10 to be centered on the anchor point, you would need to set halo_inner_radius = -10. If you want the same peak to orbit the anchor point with no space between the plateau and the anchor, halo_inner_radius would be set to 10. +Hills: Closest any part of any generated hill can be to the given anchor point. For hill placement, the box defined by the anchor point, inner_radius, and hill radius define an exclusion zone for placement of the hill center point and build of the hill.0
halo_widthHow wide in cells the orbit is. The farthest the outer edge of the plateau can be from the anchor cell is halo_inner_radius + halo_width. If halo_width = 2 * height, halo resouces will travel in a fixed orbit, randomly changing orbit direction every updatestep. If halo_width > 2 * height, halo resources will travel along a random orbit between halo_inner_radius and halo_inner_radius + halo_width, changing EITHER orbit or orbit direction every updatestep.0
halo_anchor_xX-coordinate of the anchor cell. For hills this is simply the center point of any exclusion zone and does not otherwise determine where the hill is drawn.0
halo_anchor_yY-coordinate of the anchor cell.0
move_speedHow 'fast' the gradient moves in the grid. Since gradient resources are built on spatial resources and spatial resources are only checked once per update, move_speed actually determines how far, in number of cells, the cone is moved between updates, not in an update. Thus move_speed > 1 will cause peaks to 'jump' ahead. Move speeds less than 1 will 'pause' resources for the abs(move_speed) number of updates between moves. This can be valuable if organisms, due to combinations of genome length and time slicing, are slow to react to resource moves and cannot otherwise keep up with the resource.1
commonIn determining the cell values within the plateau, do we treat them as a common (= 1) resource, or as individual cells (= 0)? If common = 1, and any plateau cells are depletabled by organisms, at each update we look to see how much of the plateau was consumed, divide that by the number of cells in the plateau, subtract that amount from the plateau value at the beginning of the previous update (before depletion), and set all plateau cells to this new value. Thus, at the updates, the effects of depletion is spread out across all plateau cells. Peak height is then recalculated to reflect the change in this value and the entire cone is redrawn, while preserving the original extent of the plateau. If common = 0 resource depletions affect only individual plateau cells and the peak slopes are not changed.0
initialInitial value for all plateau cells. If set to -1 (default), initial cell values will be set == plateau.-1.0
plateau_inflowInflow rate of resources within the plateau. This amount will be added to each cell in the plateau at each update, regardless of common setting. Maximum value for plateau cells (if set at >= 0) remains original plateau value. If common = 1, the inflow is added to the current peak height and height is reset to the new value. All values in the peak are then recalculated, but keeping the original extent of the plateau. Maximum value for height (for cone shape) remains capped at original height value.0.0
plateau_outflowOutflow rate of resource within the plateau. The quantity of resources = outflow * height will be removed from each cell in the plateau at each update, regardless of common setting. Minimum resulting value for plateau cells is 0. If common = 1, the outflow quantity is subtracted from the current peak height and height is reset to the new value. All values in the peak are then recalculated, but keeping the original extent of the plateau. Minimum resulting value for height (cone shape) is 0.0.0
cone_inflowInflow rate of resources for individual cells in the cone. This amount will be added to each cell in the cone at each update. The value for a cell will never exceed that expected based on cone height and distance from center (that is, this is a refill rate as much as it is an inflow). Will not affect height of the cone (as in plateau_inflow) and will not affect any plateau cells (use plateau_inflow and/or gradient_inflow for that). 0.0
cone_outflowOutflow rate for non-plateau cells 0.0
gradient_inflowInflow rate of resources for individual cells in the cone scaled by distance from peak center. This amount / (this_distance + 1) will be added to each cell in the cone at each update. The value for a cell will never exceed that expected based on cone height and distance from center (that is, this is a refill rate as much as it is an inflow). Will not affect height of the cone (as in plateau_inflow) and will not affect any plateau cells (use plateau_inflow for that). Can be combined with cone_inflow and cone_outflow and / or plateau_inflow and plateau_outflow.
+To 'grow' a cone, set the height to spread + 1, add gradient inflow, set initial to 0, and set plateau to be max desired reachable height. Cells in the cone will 'grow' at different rates, with cell height growth stopping when the cell value reaches the plateau value.
0.0
floorMinimum value for cells within the cone. Cells that would otherwise have lower values (based on distance from center) will be set to this value. Floor does not affect plateau cells. Rather, it is intended to keep values along the spread from dropping below 1 for experiments where cell values along the slopes would affect merit rewards.0.0
countThe number of hills or walls/barriers to generate.1
max_sizeThe maximum wall size in number of blocks(cells) or maximum hill radius. Actual hill and wall sizes will be determined by a random number selected between min and max (inclusive), minus any blocks placed off-world or overlapping with other blocks of the same resource (or self for walls, if config = 0).1
min_sizeThe minimum wall or hill size.1
configThe orientation of the wall. 0 = random (all blocks placed randomly, but neighboring, relative to previous block), 1 = vertical (rand N or S from seed block), 2 = horizontal (rand E or W from seed block), 3 = vertical from seed (peakx, peaky) to S, 4 = horizontal from seed (peakx, peaky) to W.For hills, if config == 1, generate 1 hill at the peakx X peaky coordinates.0
resistanceThis is implemented as a simple way of impacting the speed with which orgs can move through/across a hill. On average, an org on a hill will have to execute a number of move instructions equal to the resistance setting to move one cell.Setting resistance to 0 for a wall allows orgs to pass through it (creating a linear landmark rather than a barrier).1.0
+  + +
+An example of setting a halo gradient of cone height 10 and radius 180. The plateau height is 1, meaning that the actual resource height is 1 at cells where the cone height is at least 1. Movement is smooth and is updated every 200 updates. The anchor cell is at 189, 249, and it moves no closer than 10 cells away from the anchor and no farther than 30. The resource is immediately refreshed after it has been consumed by at least one organism. +
GRADIENT_RESOURCE food1:height=10:spread=180:plateau=1:decay=1:move_a_scaler=3.8:updatestep=200:halo=1:halo_inner_radius=10:
halo_anchor_x=189:halo_anchor_y=249:halo_width=20:move_speed=1
+An example of a gradient which will initialize at 189, 249 and is bounded by a 200x200 cell box. The cone height is 20, but the radius is only 10 cells. The plateau is of height 2, and the resource moves only every 10000 updates. +
GRADIENT_RESOURCE nest1:peakx=189:peaky=249:height=20:spread=19:plateau=2:decay=1:min_x=125:max_x=375:min_y=125:max_y=375:
+move_a_scaler=1:updatestep=10000
+Examples of barrier resources. Both will create 5 randomly placed vertical or horizontal walls, each between 10 and 200 cells long. For each barrier instance, the initial 'seed' block will be placed in a random cell. Then the build direction (N or S for the first, E or W for the second) will be chosen and the next block placed in the corresponding neighboring cell until the (randomly chosen) target size is met or the edge of the world is reached. All walls will be dismantled and new sets generated every 250 updates. +
GRADIENT_RESOURCE vert_walls:habitat=2:plateau=1.5:updatestep=250:count=5:max_size=200:min_size=10:config=1
+
GRADIENT_RESOURCE horiz_walls:habitat=2:plateau=1.5:updatestep=250:count=5:max_size=200:min_size=10:config=2
+An example of a hill resource. This will draw 10 randomly placed hills every 1000 updates, with each individual hill having a radius between 50 and 125 cells. No hills will be drawn/placed within 10 cells of the center of the world (49, 49). When crossing any of these hills, an organism, on average, will have to take two steps for every one cell traversed. +
GRADIENT_RESOURCE hills:habitat=1:plateau=0.2:updatestep=1000:count=10:max_size=125:min_size=50:halo_inner_radius=10:
halo_anchor_x=49:halo_anchor_y=49:resistance=2
+ +
diff --git a/docs/documentation/Hand-written-Logic-Nine-Programs.md b/docs/documentation/Hand-written-Logic-Nine-Programs.md new file mode 100644 index 0000000..552ee4f --- /dev/null +++ b/docs/documentation/Hand-written-Logic-Nine-Programs.md @@ -0,0 +1,170 @@ +These programs were written as supplementary material for The Evolutionary Origin of Complex Features from 2003: http://myxo.css.msu.edu/papers/nature2003/. Here are programs that will trigger the nine default logic tasks with the default instruction set. + + + + + +

+ + The following hand-written programs perform the various one- and + two-input logic operations. These programs appear to be the shortest + ones to perform these operations that do not depend on the initial + content of stacks and registers (whose initial contents are represented + by a '?' below). However, it has not been proven that these are the + shortest programs. None of these programs permit self-replication; + rather, they merely perform a calculation. + + +

+

+ + +
ECHO +
#Inst AX BX CX Stack Output +
1IO ? X ? ? ? +
2IO ? Y ? ? X + +
  +
NOT +
#Inst AX BX CX Stack Output +
1IO ? X ? ? ? +
2push ? X ? X, ?   +
3pop ? X X ?   +
4nop-C   +
5nand ? ~X X ?   +
6IO ? Y X ? ~X + +
  +
NAND +
#Inst AX BX CX Stack Output +
1IO ? X ? ? ? +
2IO ? X Y ? ? +
3nop-C   +
4nand ? X nand Y Y ?   +
5IO ? Z Y ? X nand Y + +
  +
OR_N +
#Inst AX BX CX Stack Output +
1IO ? X ? ? ? +
2IO ? X Y ? ? +
3nop-C   +
4nand ? X nand Y Y ?   +
5nand ? X or ~Y Y ?   +
6IO ? Z Y ? X or ~Y + +
  +
AND +
#Inst AX BX CX Stack Output +
1IO ? X ? ? ? +
2IO ? X Y ? ? +
3nop-C   +
4nand ? X nand Y Y ?   +
5push ? X nand Y Y X nand Y, ?   +
6pop ? X nand Y X nand Y ?   +
7nop-C   +
8nand ? X and Y X nand Y ?   +
9IO ? Z X nand Y ? X and Y + +
  +
OR +
#Inst AX BX CX Stack Output +
1IO ? X ? ? ? +
2push ? X ? X, ?   +
3pop ? X X ?   +
4nop-C   +
5nand ~X X X ?   +
6nop-A   +
7IO ~X Y X ? X +
8push ~X Y X Y, ?   +
9pop ~X Y Y ?   +
10nop-C   +
11nand ~X ~Y Y ?   +
12swap Y ~Y ~X ?   +
13nop-C   +
14nand Y X or Y ~X ?   +
15IO Y Z ~X ? X or Y + +
  +
AND_N +
#Inst AX BX CX Stack Output +
1IO ? X ? ? ? +
2IO ? X Y ? ? +
3nop-C   +
4nand ? X nand Y Y ?   +
5nand ? X or ~Y Y ?   +
6push ~X X or ~Y Y ~X or Y, ?   +
7pop ~X X or ~Y X or ~Y ?   +
8nop-C   +
9nand ? ~X and Y X or ~Y ?   +
10IO ? Z X or ~Y ? ~X and Y + +
  +
NOR +
#Inst AX BX CX Stack Output +
1IO ? X ? ? ? +
2push ? X ? X, ?   +
3pop ? X X ?   +
4nop-C   +
5nand ~X X X ?   +
6nop-A   +
7IO ~X Y X ? X +
8push ~X Y X Y, ?   +
9pop ~X Y Y ?   +
10nop-C   +
11nand ~X ~Y Y ?   +
12swap Y ~Y ~X ?   +
13nop-C   +
14nand Y X or Y ~X ?   +
15push Y X or Y X X or Y, ?   +
16pop Y X or Y X or Y ?   +
17nop-C   +
18nand Y X nor Y X or Y ?   +
19IO Y Z X or Y ? X nor Y + +
  +
XOR +
#Inst AX BX CX Stack Output +
1IO ? X ? ? ? +
2IO ? X Y ? ? +
3nop-C  +
4push ? X Y X, ?   +
5nand ? X nand YY X, ?   +
6swap ? Y X nand YX, ?   +
7nand ? X or ~Y X nand YX, ?   +
8swap X or ~Y ? X nand YX, ?   +
9nop-A  +
10pop X or ~Y X X nand Y?   +
11nand X or ~Y Y or ~X X nand Y?   +
12swap X nand YY or ~X X or ~Y ?   +
13nop-C  +
14nand X nand YX xor Y X or ~Y ?   +
15IO X nand YZ X or ~Y ? X xor Y + + +
  +
EQU +
#Inst AX BX CX Stack Output +
1IO ? X ? ? ? +
2IO ? X Y ? ? +
3nop-C  +
4push ? X Y X, ?   +
5nand ? X nand YY X, ?   +
6swap ? Y X nand YX, ?   +
7nand ? X or ~Y X nand YX, ?   +
8swap X or ~Y ? X nand YX, ?   +
9nop-A  +
10pop X or ~Y X X nand Y?   +
11nand X or ~Y Y or ~X X nand Y?   +
12swap X nand YY or ~X X or ~Y ?   +
13nop-C  +
14nand X nand YX xor Y X or ~Y ?   +
15push X nand YX xor Y X or ~Y X xor Y, ?  +
16pop X nand YX xor Y X xor Y ?   +
17nop-C  +
18nand X nand YX equ Y X xor Y ?   +
19IO X nand YZ X xor Y ? X equ Y + +
+ +
\ No newline at end of file diff --git a/docs/documentation/Home.md b/docs/documentation/Home.md new file mode 100644 index 0000000..510ca8e --- /dev/null +++ b/docs/documentation/Home.md @@ -0,0 +1,29 @@ +Avida is a free, open source software platform for conducting and analyzing experiments with self-replicating and evolving computer programs. It provides detailed control over experimental settings and protocols, a large array of measurement tools, and sophisticated methods to analyze and post-process experimental data. + +The following articles provide a good introduction to Avida: +* [Testing Darwian](http://www.carlzimmer.com/articles/2005.php?subaction=showfull&id=1177184710&archive=&start_from=&ucat=8&) by Carl Zimmer (Cover story of Feb 2005 Discover Magazine). +* [Twice as Natural](http://myxo.css.msu.edu/lenski/pdf/2001,%20Nature,%20Lenski,%20twice%20as%20natural.pdf) by Richard Lenski (2001) +* [Meet the Scientist](http://www.microbeworld.org/index.php?option=com_content&view=article&id=784:mts59-charles-ofria-&catid=37:meet-the-scientist&Itemid=1550) podcast interview of Charles Ofria by Carl Zimmer (2010) + +More detailed materials: +* [About Digital Evolution](wiki/About) +* [Avida: A Software Platform for Research in Computational Evolutionary Biology](http://www.cse.msu.edu/~ofria/pubs/2009AvidaIntro.pdf) by C. Ofria, D.M. Bryson, and C. Wilke (2009). +* The contents of this Wiki + +If you would like to contribute to this documentation, please create an account via the log-in link at the top-right of the page. + +**[New User Information](wiki/New-User-Information)** + +## General Information +* [Beginner Documentation](wiki/Beginner-Documentation) +* [Overview](wiki/Overview) +* [A Guided Tour of the Ancestor and its Hardware](wiki/Default-Ancestor-Guided-Tour) +* [Text Viewer](wiki/Text-Viewer) +* [Configuration and Command Reference](wiki/Configuration-and-Command-Reference) +* [Experiment and Analysis Guides](wiki/Experiment-and-Analysis-Guides) + + +## Developer Resources +* [Developers Guide](wiki/Developers-Guide) +* [Getting Started](wiki/Development-|-Getting-Started) +* [Avida 3 API](wiki/Avida-3-API) \ No newline at end of file diff --git a/docs/documentation/How-to-create-a-deme-replication-event.mediawiki b/docs/documentation/How-to-create-a-deme-replication-event.mediawiki new file mode 100644 index 0000000..daf62e9 --- /dev/null +++ b/docs/documentation/How-to-create-a-deme-replication-event.mediawiki @@ -0,0 +1,33 @@ +

This tutorial will walk you through the steps involved in creating a deme replication event. It assumes that you have basic familiarity with C++ and Avida-ish stuff. There are several different deme replication events. Currently, they include events such as replicate when the deme is full, when the corners are occupied, when a set number of resources has been amassed (the consume-res event). For this tutorial, we'll be using 'consume-res' as an example. To add your new event:Β 

+
    +
  1. Come up with a few definitions for your deme replication trigger. These need to include the name of the trigger (e.g., consume-res), which will be seen externally, and a deme trigger event constant name used for an enumeration (e.g., DEME_TRIGGER_CONSUME_RESOURCES). The enumeration allows you to refer to your trigger by name, rather than an integer.
  2. +
  3. Add your deme trigger event constant name to the enumerated triggers. To do so, go to Definitions.h and search for enum eDEME_TRIGGERS. Add your item right before DEME_TRIGGER_UNKNOWN. For example,Β  +

    Β Β DEME_TRIGGER_CONSUME_RESOURCES, Β  // 10

    +
  4. +
  5. +

    Define your 'trigger' event as part of the Replicate Demes action. To do that, in PopulationActions.cc go to the classΒ cActionReplicateDemes : public Action. Add the name of your trigger and a brief description to the comment:Β 

    +

    'consume-res' ...demes that have consumed a sufficienct amount of resources

    +

    Then, add the same trigger to the end of the list of else if statements Β 

    +

    Β else if (in_trigger == "consume-res") m_rep_trigger = DEME_TRIGGER_CONSUME_RESOURCES

    +
  6. +
  7. +

    Next, add the code that describes when your replication event will occur. In cPopulation.cc, locate the ReplicateDemes function:Β 

    +

    void cPopulation::ReplicateDemes(int rep_trigger, cAvidaContext& ctx)Β 

    +

    Within this function, add your new trigger both to the comments and to the switch statement. For example, for the 'consume-res' event the following line was added to the comment:Β 

    +

    Β 10:'consume-res' ...demes that have consumed a sufficienct amount of resources

    +
    Β And this case statement was added to the switch statement:Β 
    +
    +

    case DEME_TRIGGER_CONSUME_RESOURCES: {

    +

    Β  Β  Β  Β  // check how many resources have been consumed by the deme

    +

    Β  Β  Β  Β  if (source_deme.GetTotalResourceAmountConsumed() <

    +

    Β  Β  Β  Β  Β  Β  m_world->GetConfig().RES_FOR_DEME_REP.Get()) {

    +

    Β  Β  Β  Β  Β  continue;

    +

    Β }

    +

    Note that this code is using information about the deme. Clearly, if your method needs information from the deme and that information doesn't exist, you'll also need to write some code to do that...Β 

    +

     

    +
    +
  8. +
  9. Last, add your new fangled event to the events file (generally events.cfg) and make sure it works.Β  For example: Β  +

    u 1:1:end ReplicateDemes consume-res

    +
  10. +
diff --git a/docs/documentation/Html-output-color-settings.md b/docs/documentation/Html-output-color-settings.md new file mode 100644 index 0000000..f2ed930 --- /dev/null +++ b/docs/documentation/Html-output-color-settings.md @@ -0,0 +1,3 @@ +These set the output colors for data files printed in HTML mode. + +See avida.cfg for these settings: COLOR_DIFF, COLOR_SAME, COLOR_NEG2, COLOR_NEG1, COLOR_POS1, COLOR_POS2, COLOR_MUT_POS, COLOR_MUT_NEUT, COLOR_MUT_NEG, and COLOR_MUT_LETHAL. diff --git a/docs/documentation/Instruction-Set.md b/docs/documentation/Instruction-Set.md new file mode 100644 index 0000000..9cc0ac6 --- /dev/null +++ b/docs/documentation/Instruction-Set.md @@ -0,0 +1,333 @@ +An instruction set is actually a whole set of configurations, usually contained in their own file and included in the avida.cfg file with #include INST_SET=instset.cfg. + +

Specifiying Instruction Sets in avida.cfg

+ +

Instruction sets are actually part of the avida.cfg file. However, instead of writing the instruction set out in avida.cfg itself, which would be rather long and messy, each instruction set is placed in a separate file. A preprocessor include (of the form #include $filename) is then used to include each instruction set in avida.cfg. Multiple instruction sets may be included. +

+

For example, to include the two instruction sets contained in the files instset-heads.cfg and instset-heads-sex.cfg, these lines are placed in avida.cfg: +

+

+#include instset-heads.cfg
+#include instset-heads-sex.cfg +

+

You may optionally name each instruction set as you include it. This allows you to change which file the name refers to when running avida from the command line, using the -def option. The default avida.cfg contains this line:
+#include INST_SET=instset-heads.cfg +

+

This means you may change which file INST_SET refers (for example, change it to instset-heads-sex.cfg) to on the command line like this:
+./avida -def INST_SET instset-heads-sex.cfg
+

+

In this case, INST_SET is simply a variable name with no special meaning. The line might just as easily been #include BOBS_YOUR_UNCLE=instset-heads.cfg

+ + + +

 

+

Specifiying the Instruction Set for an Organism

+ +

Organisms in an avida run may have different instruction sets. Therefore, it is necessary to specify the instruction used by each .org file. At the top of the .org file you must specify the instruction set with the #inst_set keyword, and the hardware type with the hw_type keyword. For example, default-heads.org starts with these two lines: +

+

+#inst_set heads_default
+#hw_type 0 +

+

Note: the name of the instruction set may not be the same as the name of the file containing the instruction set. (Indeed, one file may contain multiple instruction sets.) The name of the instruction set is defined inside its .cfg file by the INSTSET keyword, which also defines the hardware type. + + + +

 

+

The Structure of an Instruction Set File

+ +

An instruction set consists of a name and hardware type, followed by a list of instructions that belong to +that instruction set, each of which may be followed by a series of options that +define how that instruction should be used. The exact format is as follows: +

+

+INSTSET instset-name:hw_type=$hardware_type
+INST inst-name[:options]
+... +

+ +

Multiple instruction sets with unique names may be defined in the same file. All INST statements must follow the +INSTSET statement defining the instruction set.

+ + +

The following options may be specified (as name=value, separated by colons): +

+
redundancy (default = 1)
+
+ The frequency of the instruction in the set. One instruction with + twice the redundancy of another with also have twice the probability + of being mutated to. A redundancy of zero is allowed, and indicates + that injected organisms are allowed to have this instruction, but + it can never be mutated to. +
+
cost
+
+ The number of CPU cycles required to execute this instruction. One + is the default if this value is not specified. CPU costs will pause the + thread that executed the costly instruction, not the whole organism and + only decrement the pause counter each time the paused thread attempts + to run. If multiple threads execute costly instructions, the costs and + pause counts are handled independently (i.e. unique pause count for each thread). +
+
initial_cost
+
+ The additional cost to be paid the first time this instruction is + executed. This is used to lower the diversity of instructions + inside an organism. The default value here is 0. +
+
energy_cost
+
+ The number of Energy units required to execute this instruction. Zero is the default if this value is not specified. +
+
addl_time_cost
+
+ The additional cost in terms of phenotype 'age', but not actual instruction cycles. The default value here is 0. +
+
prob_fail +
+ The probability of this instruction not working properly. If an + instruction fails it will simply do nothing, but still cost the + CPU cycles to execute. The defailt probability of failure is zero. +
+
inst_code +
+ String of 1's and 0's defining the numeric value of a instruction as used by certain operations that 'numberate' + instruction sequences. +
+
res_cost +
+ The cost in units (double) of COLLECT_SPECIFIC_RESOURCE stored in internal bins to execute the instruction. Organisms + that execute an instruction with a res_cost higher than what is internally available will die. Res_cost is not + applied if an instruction fails. In a multi-resource environment, any and all resources can be converted internally + via reactions to a common COLLECT_SPECIFIC_RESOURCE for use with res_cost (COLLECT_SPECIFIC_RESOURCE must still be + declared in environment file, likely with initial=0). Note that the use of res_cost typically needs to be coupled with + RESOURCE_GIVEN_ON_INJECT and RESOURCE_GIVEN_AT_BIRTH in avida.cfg. The default res_cost is 0. +
+
post_cost +
+ CPU cost to be paid AFTER the instruction is executed the first time (e.g. pseudo post-kill handling time in + predators). Post costs are only applied if the instruction executes successfully (differs from regular costs). +
+
bonus_cost +
+ The cost in units (double) of current bonus to successfully execute the instruction. bonus_cost is not + applied if an instruction fails for some other reason. Ultimately this is similar to res_costs when converting a common, + specific resource, but much simpiler. +
+
+ +

 

+

For example, to specify that the nand instruction is both twice as common and twice as expensive as other instructions, you would use this line:

+

INST nand:redundancy=2:cost=2 + + +

 

+

Description of Default Instruction Set

+ +

+Below are the descriptions of the instructions turned on in the file +instset-classic.cfg. The one-letter codes are assigned +automatically to each instruction in the set, so if additional instructions +are turned on, the letters given below may no longer correspond to the +instructions they are presented with. If more than 26 instructions are in +a set, both lowercase and capital letters will be used, and then numbers. +Currently, no more than 62 distinct instructions will be represented by +unique symbols. +

+

+Most terminology below that may not be familiar to you has been given a +link to a file containing its definition. +

+ +

(a - c) Nop Instructions

+ +The instructions nop-A (a), nop-B +(b), and nop-C (c) are no-operation +instructions, and will not do +anything when executed. They will, however, modifiy the behavior of the +instruction preceeding it (by changing the [CPU](Glossary-- CPU) +component that it affects; see also +nop-register notation and +nop-head notation) or act as part +of a label to denote positions in the +genome. + + +

(d) if-n-equ

+ +This instruction compares the +?BX? register to its +complement. If they are not +equal, the next instruction (after a modifying +no-operation instruction, if one is +present) is executed. If they are equal, that next instruction is skipped. + + +

(e) if-less

+ +This instruction compares the ?BX? +register to its complement. If ?BX? +is the lesser of the pair, the next instruction (after a modifying +no-operation instruction, if one is +present) is executed. If it is greater or equal, then that next instruction is skipped. + + +

(f) pop

+ +This instruction removes the top element from the active +stack, and places it into the +?BX? register. + + +

(g) push

+ +This instruction reads in the contents of the +?BX? register, and places it +as a new entry at the top of the active stack. +The ?BX? register itself remains unchanged. + + +

(h) swap-stk

+ +This instruction toggles the active stack in +the CPU. All other instructions that use a stack +will always use the active one. + + +

(i) swap

+ +This instruction swaps the contents of the +?BX? register with its +complement. + + +

(j) shift-r

+ +This instruction reads in the contents of the +?BX? register, and shifts all +of the bits in that register to the right by one. In effect, it divides the value +stored in the register by two, rounding down. + + +

(k) shift-l

+ +This instruction reads in the contents of the +?BX? register, and shifts all +of the bits in that register to the left by one, placing a zero as the new rightmost +bit, and trunkating any bits beyond the 32 maximum. For values that require fewer +than 32 bits, it effectively multiplies that value by two. + + +

(l) inc and (m) dec

+ +These instructions read in the contents of the +?BX? +register and increment or decrement it by +one. + +

(n) add and (o) sub

+ +These instructions read in the contents of the BX and CX +registers and either sums them together or +subtracts CX from BX (respectively). The result of this operation is then placed in +the ?BX? register. + +

(p) nand

+ +This instruction reads in the contents of the BX and CX +registers (each of which are 32-bit +numbers) and performs a bitwise nand +operation on them. The result of this operation is placed in the +?BX? register. Note that +this is the only logic operation provided in +the basic Avida instruction set. + + +

(q) IO

+ +This is the input/output instruction. It takes the contents of the +?BX? +register and outputs it, checking it +for any tasks that may have been performed. +It will then place a new input into ?BX?. + + +

(r) h-alloc

+ +This instruction allocates additional memory +for the organism up to the maximum it is allowed to use for its offspring. +If allocation is successful, the original memory size is loaded into the AX register. + + +

(s) h-divide

+ +This instruction is used for an organism to divide off an finnished offspring. The +original organism keeps the state of its memory +up until the read-head. The offspring's memory is +initialized to everything between the read-head and the +write-head. All memory past the write-head is +removed entirely. + + +

(t) h-copy

+ +This instruction reads the contents of the organism's +memory at the position of the +read-head, and copy that to the position of the +write-head. If a non-zero copy mutation rate is +set, a test will be made based on this probability to determine if a +mutation occurs. If so, a random instruction +(chosen from the full set with equal probability) will be placed at the write-head +instead. + + +

(u) h-search

+ +This instruction will read in the label +the follows it, and find the location of a +complement label in the code. +The BX register will be set to the distance +to the complement from the current position of the +instruction-pointer, and the CX register will +be set to the size of the label. The flow-head +will also be placed at the beginning of the complement label. If no label follows, +both BX and CX will be set to zero, and the flow-head will be placed on the instruction +immediatly following the h-search. + + +

(v) mov-head

+ +This instruction will cause the ?IP? +to jump to the position in memory of the +flow-head. + + +

(w) jmp-head

+ +This instruction will read in the value of the CX +register, and the move the +?IP? by that fixed amount through +the organism's memory. + + +

(x) get-head

+ +This instruction will copy the position of the +?IP? into the CX +register. + + +

(y) if-label

+ +This instruction reads in the label that +follows it, and tests if its complement +label was the most recent series of instructions copied. If so, it executed the next +instruction, otherwise it skips it. This instruction is commonly used for an organism to +determine when it has finished producing its offspring. + + +

(z) set-flow

+ +This instruction moves the flow-head to the +memory position denoted in the +?CX? register. diff --git a/docs/documentation/Instset-heads.cfg.md b/docs/documentation/Instset-heads.cfg.md new file mode 100644 index 0000000..e67d90c --- /dev/null +++ b/docs/documentation/Instset-heads.cfg.md @@ -0,0 +1 @@ +The default instruction set file for the Heads architecture. \ No newline at end of file diff --git a/docs/documentation/Internal-resources.md b/docs/documentation/Internal-resources.md new file mode 100644 index 0000000..f37cbfe --- /dev/null +++ b/docs/documentation/Internal-resources.md @@ -0,0 +1,116 @@ +
+

Using Internal Resources

+
+ +

Avida has the ability to allow organisms to uptake resources from the environment and keep them in a private store of "resource bins". These internal resources may then be used instead of the normal environmental resources to complete reactions. + +

Most configuration of internal resource use is done with config options in avida.cfg, all of which are found in the HOARD_RESOURCE_GROUP. Some more advanced uses require modifications to the environment file as well. There is also a family of instructions which allows organisms to manipulate resources. + +

Turning on internal resources

+

Most internal resource code is protected by a guard to make sure it does not slow Avida down if internal resources are not being used. In order to use internal resources, you must change a line in avida.cfg: +

USE_RESOURCE_BINS 0
+to +
USE_RESOURCE_BINS 1
+ +

Basic resource uptake

+
+The collect instruction moves a resource from the environment to the corresponding resource bin in the organism. +
+To remove resource from the environment and transfer it into its private store, an organism must execute the collect instruction (or one like it, see below). This instruction should be added to the instruction set. +
ABSORB_RESOURCE_FRACTION .0025
+This setting controls the fraction of the available environmental resource the organism may absorb. The default value is the same as the default value for the 'frac' reaction specification, so that an organism will remove the same amount of resource from the environment whether it is storing it or using it to complete a reaction. +
MAX_TOTAL_STORED -1
+This setting defines a cap on the maximum total amount of internal resource an organism can store. The default is -1, indicating that there is no cap. + +

nop-specification

+The collect instruction (and most of its variants) determine which resource to affect by looking at the nop instructions which follow it. This specification is robust to both the number of specifying nops (i.e. nop-A, nop-B, and nop-C, but not nop-X) in the instruction set and the number of resources in the environment file. + +

collect always affects a single resource. If there are no nops follwing it, it chooses randomly from all the resources. Increasing levels of specification narrow down the range of the resource spectrum from which it chooses randomly. For example, in a three-nop, nine-resource system, collect nop-A nop-B affects resource 1 (remember resource ids are 0-based), which is usually the resource tied to NOR. + +

+More nops after a collect instruction narrow the range from which the affected resource is chosen. +
+ +

collect variant instructions

+ +

collect-unit-prob

+
+The collect-unit-prob instruction moves 1 unit of a resource to the corresponding internal resource bin. +
+Resources ought to be harder to uptake as they become more scarce. The original collect instruction models this by uptaking a smaller amount of resource as the resource becomes more scarce. collect-unit-prob models the scarcity issue differently: 1 unit of resource is always collected, but the instruction may fail, and fails more frequently as the resource becomes scarce: the instruction has a probability of succeeding equal to the current units of resource available divided by the COLLECT_PROB_DIVISOR setting. This instruction ignores the ABSORB_RESOURCE_FRACTION setting. +
COLLECT_PROB_DIVISOR 1000
+This setting defines the divisor for probabilistic collect instructions, which have a chance of (current level of resource) / COLLECT_PROB_DIVISOR of succeeding -- this chance is capped at 1. As it is a divisor, it should not be set to 0. + +

destroy

+
+The destroy instruction removes a resource from the environment without adding it to the organism's resource bin. +
+The destroy instruction removes an amount of resource from the environment, but does not add it to the organism's internal resource bin. Like collect, the amount removed is governed by ABSORB_RESOURCE_FRACTION. + +

collect-no-env-remove

+
+The collect-no-env-remove instruction adds resource to the internal bins without removing any from the environment. +
+The collect-no-env-remove instruction adds an amount of resource to the internal resource bin of the organism, but does not remove any resource from the environment; it injects extra resource into the system. Even though no resource is removed from the environment, the amount added to the organism is still controlled by the ABSORB_RESOURCE_FRACTION setting. + +

nop-collect

+
+The nop-collect instruction does nothing, but in a nop-specified way. +
+The nop-collect instruction neither adds resource to the organism nor removes it from the environment. Instead, it provides a no-operation instruction to use in comparison with the other collect instructions. It should be used in place of nop-X for such comparisons; since the collect instructions are nop-specified, they effectively "eat" nops, affecting execution flow as well as dealing with resources (see the MAX_LABEL_EXE_SIZE config option). nop-collect affects execution flow in the same way. + +

collect-specific

+
+The collect-specific instruction works like the collect instruction, but is not nop-specified. +
+The collect-specific instruction is not nop-specified (and so should be compared to nop-X rather than nop-collect). Instead, the resource it affects is determined by the config setting COLLECT_SPECIFIC_RESOURCE. +
COLLECT_SPECIFIC_RESOURCE 0
+This setting determines which resource the collect-specific instruction affects. (Remember that resources are numbered from 0 in the order they appear in the environment file.) It also specifies which resource should be added to injected or newborn organisms if non-zero amounts are specified by RESOURCE_GIVEN_ON_INJECT or RESOURCE_GIVEN_AT_BIRTH. It should not be given a value outside of the range of resource ids. + +

collect-specific-ratio

+Rather than collecting a single specific resource, the collect-specific-ratio instruction collects some amount of all resources. By default, it collects one unit of each resource. A different ratio for a given resource can be specified with the config option NON_1_RESOURCE_RATIOS. +
NON_1_RESOURCE_RATIOS resource_index1:amount, resource_index2:amount
+Every time the collect-specific-ratio instruction is executed, the organism executing it collects one of each resource not mentioned in the config setting and the amount specified after the colon for each other resource. (Remember that resources are numbered from 0 in the order they appear in the environment file - resource_index should not be a value outside of the range of resource ids). For instance, a config setting like this: +
NON_1_RESOURCE_RATIOS 1:2, 3:.5
+Would result in the organism collecting 1 unit of resource 0, 2 units of resource 1, .5 units of resource 3, and 1 unit of any additional resources. + +

Using internal resources to complete reactions

+
+An organism will use internal resources to complete reactions when there is more internal resource than available environmental resource. +
+Once an organism has internal resources in its resource bins, it may use internal resources instead of environmental resources to complete reactions. An organism will do this when the amount of environmental resources available is less than the amount of internal resource available. How much of the internal resource is used is controlled with the USE_STORED_FRACTION config setting. The amount of environmental resource which is considered may be controlled by the ENV_FRACTION_THRESHOLD config setting. +
USE_STORED_FRACTION 1.0
+This setting controls the fraction of the internal resource that the organism will use to complete a reaction. By default this 1.0, meaning that the organism will use all the available internal resource to complete a reaction. As a fraction, this value should remain between 0.0 and 1.0. +
ENV_FRACTION_THRESHOLD 1.0
+This setting controls how much of the available environmental resource the organism should consider when deciding which type of resource to use. By default it is set to 1.0, indicating that the organism should consider all the available environmental resource. As a fraction, this value should remain between 0.0 and 1.0 + +

Forcing internal resource use

+
+If environmental resources are invisible to the organism, it will be forced to use only internal resources to complete reactions. +
+It is possible to force organisms to always use internal resources to complete reactions -- consequently forcing the population to either use the collect instruction or become pure self-replicators. This can be done by forcing the organisms to believe that no environmental resource is ever available, setting: +
ENV_FRACTION_THRESHOLD 1.0
+to +
ENV_FRACTION_THRESHOLD 0.0
+As a precaution, you should also change the 'frac' specification of the REACTIONs in your environment file to be 0.0 (rather than the common .0025 or the default 1.0). + +

Resource sources and sinks

+

The most common source of internal resource is via collect or one of its variants, in most cases from the environment (but see collect-no-env-remove). However, an organism may also receive new internal resource when it is injected (if RESOURCE_GIVEN_ON_INJECT is set above 0) or when it is born (if RESOURCE_GIVEN_AT_BIRTH is set above 0). +

RESOURCE_GIVEN_ON_INJECT 0
+This setting specifies the units of the resource given by COLLECT_SPECIFIC_RESOURCE that should be added to an organism when it is injected. The default is to add no resource. +
RESOURCE_GIVEN_AT_BIRTH 0
+This setting specifies the units of the resource given by COLLECT_SPECIFIC_RESOURCE that should be added to an organism when it is born. The default is to add no resource. + +
+When an organism splits, the two daughter cells each recieve half of the internal resources. +
+

When an organism splits into two daughter organisms, each daughter gets half of the original internal resource store if SPLIT_ON_DIVIDE is set. (If it is set to 0, the resource disappears.) +

SPLIT_ON_DIVIDE 1
+This setting determines whether the mother cell's resources should be split between its two daughter cells on division. It defaults to true; if set to 0 (false), the mother cell's internal resource simply disappears. This setting has not been tested with DIVIDE_METHODs other than 1. + +
+When an organism dies, its internal resources are returned to the environment. +
+

When an organism dies, its internal resources are returned to the environment if RETURN_STORED_ON_DEATH is set. +

RETURN_STORED_ON_DEATH
+This setting determines whether an organsim's internal resources are returned to the environment when the organism dies. It defaults to true; if set to 0 (false), the resource simply disappears. This setting has not been tested with deaths not by old age or being overwritten. diff --git a/docs/documentation/Introduction-to-parasites.mediawiki b/docs/documentation/Introduction-to-parasites.mediawiki new file mode 100644 index 0000000..795b185 --- /dev/null +++ b/docs/documentation/Introduction-to-parasites.mediawiki @@ -0,0 +1,48 @@ +

Introduction to Parasites in Avida

+

This introduction assumes some basic knowledge about Avida. In particular, familiarity with the basic organism and hardware as described here will be very useful to have.

+

(Very) Brief Overview of the TransSMT Hardware

+

With that said, parasites currently do not work in the default hardware but rather one that supports better threading capabilities – the TransSMT hardware. The differences aren’t huge, but they deserve their own documentation. Instead, I will just highlight major differences between the hardware types important for parasites, namely memoryspaces and threads.

+

Memory Spaces

+

Memory spaces are regions of memory reserved for genetic instructions such as an individual’s genome. To access these memory spaces, organisms execute the Set-Memory instruction followed by one or more Nop instructions specifying which space to use. In this hardware, the genome copy produced during self-replication must also be in a seperate memory space, as well as any thread processes an individual spawns.

+

Threads

+

Threads in this hardware are distinct code sequences that are executed either in parallel, where all threads execute an instruction per CPU cycle awarded to an individual, or round-robin, where a single instruction from a single thread is exected per awarded CPU cycle and each thread executes in turn. The number of threads an organism is allowed to have, as well as how they are scheduled is controlled by the following config options in the avida.cfg file.

+
    +
  • MAX_CPU_THREADS 1 # Maximum number of Threads a CPU can spawn
  • +
  • THREAD_SLICING_METHOD 0 # 0 = One thread executed per time slice. # 1 = All threads executed each time slice.
  • +
+

Parasites in the TransSMT Hardware

+

Parasites in Avida are almost identical to hosts, self-replicating by copying their genome instruction-by-instruction into a new memory space. However, instead of dividing this new genome off into the world, parasites attempt to infect a random organism in its host’s neighborhood (globaly if BIRTH_METHOD=4 or WORLD_GEOMETRY=7, and honoring the WORLD_GEOMETRY if BIRTH_METHOD is set to any other value) with their offspring parasite genome, becoming a new thread on the host organism. Parasites attempt infection by calling the Inject instruction, which is also Nop-modified to identify the memory space the parasitic thread should occupy.

+

In order for infection to succede, the host must be able to accept a new thread in the memory space the parasite is attempting to occupy. This means the host must have fewer than MAX_CPU_THREADS and that the host has not used the memory space specified by the Inject instruction. More than one parasite per host is not currently supported, thus we typicaly set MAX_CPU_THREADS=2. We can eliminate the effect of host-parasite coevolution via memory space allocation and specification (and as any unforseen side-effects such as parasites overwriting host offspring when specificying a particular memory space) by giving parasites memory spaces entirely seperate from their host’s (PARASITE_MEM_SPACES=1).

+

Parasites as well as hosts can perform logic tasks, and we can use their task-based phenotypes to implement additional mechanisms determining if infection will succeed or not. The config option INFECTION_MECHANISM already has several mechanisms implemented. The implemented options have the following behavior:

+
    +
  • 0 - Infection will succeed independent of task-based phenotypes
  • +
  • 1 - Infection will succeed if the parasite and host have at least one overlapping task (Inverse Gene-for-Gene)
  • +
  • 2 - Infection will succeed if the parasite does at least one task the host does not perform
  • +
  • 3 - Infection will succeed if the parasite and host do the same tasks (Matching Alleles)
  • +
  • 4 - Infection will succeed if the parasite performs all the tasks the host does as well as at least one additional task (Gene-for-Gene)
  • +
+

To have more control over how many CPU cycles a parasite steals from it’s host, PARASITE_VIRULENCE determines the probability that a CPU cycle will be given to the parasite. Thus, when this option is set to 1, the parasite is completely virulent and overtakes all of its host’s CPU cycles. It is also possible to let the parasites evolve their own virulence by setting VIRULENCE_SOURCE=1, and choosing values for both VIRULENCE_MUT_RATE, which controls the probability of mutating a parasites virulence when a new parasite is born, and VIRULENCE_SD, which is the standard deviation of a normal distribution used to determine how much virulence changes when it mutates.

+

 

+

 

+Depiction of a Host-Parasite Interaction +

 

+

 

+

Β Depiction of a Host-Parasite Interaction

+

 

+

Events Typically Used With Parasites

+

InjectParasite is typically called near the beginning of a run to infect a range of cells. It takes a parasite organism file, the memory space label, and the range of cells which should be infected.

+

PrintParasiteTasksData and PrintHostTasksData print the tasks performed by parasites and hosts respectively. Similarly, PrintHostPhenotypeData and PrintParasitePhenotypeData split up the phenotype data, such as the Shannon Diversity and Richness of unique host and parasite phenotypes.

+

Typical Config Settings

+
    +
  • BIRTH_METHOD 4 #Population is well-mixed
  • +
  • INJECT_METHOD 1 #Parasite thread is reset on successful infection
  • +
  • MAX_CPU_THREADS 2 #Only allow one parasite per host
  • +
  • INFECTION_MECHANISM 1 #Parasites infect hosts when they have at least one overlapping task
  • +
  • PARASITE_VIRULENCE 0.8 #Parasites steal 80$ of their host’s CPU cycles
  • +
  • VIRULENCE_SOURCE 0 #Parasites use virulence value from config, instead of evolving it
  • +
  • PARASITE_MEM_SPACES 1 #Parasites get their own memory spaces
  • +
  • PARASITE_NO_COPY_MUT 1 #Parasites don’t use copy mutation rates, so they can have independent mutation rates
  • +
  • REQUIRE_SINGLE_REACTION Β 1 #Require hosts to perform at least one succesful reaction to reproduce
  • +
+

 

+

A set of complete config files and ancestral organisms can be found here.

diff --git a/docs/documentation/List-of-actions.md b/docs/documentation/List-of-actions.md new file mode 100644 index 0000000..24ae0a1 --- /dev/null +++ b/docs/documentation/List-of-actions.md @@ -0,0 +1,1484 @@ +Generated Thu Mar 15 08:45:28 2012 by make_actions_html +
+

List of Actions

+
+ +

Action Categories

+ + +  + + + +There is a large library of actions available for scheduling as events. +Additionally, all of these actions can be used within analyze scripts. +Below you will find a listing of the high level groupings of these +actions, along with detailed sections for each them. + +
Print
Print actions are the primary way of saving data from an Avida experiments.
Population
Population actions modify the state of the population, and will actually change the course of the run.
Environment
Actions that allow user to change properties of the environment, including resources.
Save and Load
Actions that allow for saving and loading large data sets, such as full populations.
Landscape Analysis
Actions that use data from the current state of Avida, process it and then output the results.
Driver
Actions that allow user to control program execution, including experiment termination.
For a brief overview of writing a new action, please see Creating an Action below. + +  +

Alphabetical Listing of Available Actions

+ + + + + + + + +
+AnalyzeLandscape +AnalyzePopulation +AssignRandomCellData +AttackDen +AvidianConjugation +CalcConsensus +ChangeEnvironment +CompeteDemes +CompeteDemes_AttackKillAndEnergyConserve +CompeteDemesByEnergyDistribution +CompeteDemesByNetwork +CompeteDemesByTaskCount +CompeteDemesByTaskCountAndEfficiency +CompeteOrganisms +ConnectCells +CopyDeme +CountMultipleOpinions +CountOpinions +DecayPoints +DelayedDemeEvent +DelayedDemeEventsPerSlots +DeletionLandscape +DemeBalanceTwoTasks +DemeReactionDiversity +DemeResourceThresholdPredicate +Desynchronization +DiffuseHGTGenomeFragments +DisconnectCells +DistributeData +DistributeDataCheaply +DistributeDataEfficiently +DivideDemes +DumpCellDataGrid +DumpClassificationIDGrid +DumpDonorGrid +DumpEnergyGrid +DumpExecutionRatioGrid +DumpFitnessGrid +DumpGenomeLengthGrid +DumpGenotypeColorGrid +DumpGenotypeGrid +DumpHostTaskGrid +DumpIDGrid +DumpLandscape +DumpLastTaskGrid +DumpMaxResGrid +DumpMemory +DumpParasiteGenotypeGrid +DumpParasiteTaskGrid +DumpParasiteVirulenceGrid +DumpPhenotypeIDGrid +DumpReactionGrid +DumpReceiverGrid +DumpSleepGrid +DumpTargetGrid +DumpTaskGrid +DumpVitalityGrid +Echo +Exit +ExitAveGeneration +ExitAveLineageLabelGreater +ExitAveLineageLabelLess +ExitDemeReplications +ExitElapsedTime +Flash +FlushTopNavTrace +FullLandscape +HillClimb +Inject +InjectAll +InjectAllRandomRepro +InjectCanvas +InjectDemes +InjectDemesFromNest +InjectDemesRandom +InjectGroup +InjectModuloDemes +InjectParasite +InjectParasitePair +InjectRandom +InjectRange +InjectResource +InjectScaledResource +InjectSequence +InjectSequenceWDivMutRate +InsertionLandscape +IteratedConsensus +JoinGridCol +JoinGridRow +KillFractionInSequence +KillFractionInSequence_PopLimit +KillInstLimit +KillInstPair +KillMeanBelowThresholdPaintable +KillNBelowResourceThreshold +KillProb +KillRate +KillRectangle +KillWithinRadiusBelowResourceThreshold +KillWithinRadiusBelowResourceThresholdTestAll +KillWithinRadiusMeanBelowResourceThreshold +LoadPopulation +MeasureDemeNetworks +MergeResourceAcrossDemes +MixPopulation +ModMutProb +MutationalNeighborhood +NewTrial +OutflowScaledResource +PairTestLandscape +Pause +PhenotypeMatch +PrecalcLandscape +Pred_DemeEventMoveBetweenTargets +Pred_DemeEventMoveCenter +Pred_DemeEventNUniqueIndividualsMovedIntoTarget +PredictNuLandscape +PredictWLandscape + +PrintAgePolyethismData
+PrintAveNumTasks
+PrintAverageData
+PrintAvgDemeTasksExeData
+PrintAvgTreatableDemeTasksExeData
+PrintAvgUntreatableDemeTasksExeData
+PrintBirthChamber
+PrintBirthChamberMatingTypeHistogram
+PrintCCladeCounts
+PrintCCladeFitnessHistogram
+PrintCCladeRelativeFitnessHistogram
+PrintCellData
+PrintCellVisitsData
+PrintCompetitionData
+PrintConsensusData
+PrintCountData
+PrintCurrentMeanDemeDensity
+PrintCurrentOpinions
+PrintCurrentReactionData
+PrintCurrentReactionRewardData
+PrintCurrentTaskCounts
+PrintData
+PrintDebug
+PrintDemeAllStats
+PrintDemeAverageData
+PrintDemeCompetitionData
+PrintDemeCurrentTaskExeData
+PrintDemeDonorStats
+PrintDemeEnergyDistributionStats
+PrintDemeEnergySharingStats
+PrintDemeFoundersData
+PrintDemeGermlineSequestration
+PrintDemeGlobalResources
+PrintDemeMigrationSuicidePoints
+PrintDemeNetworkData
+PrintDemeNetworkTopology
+PrintDemeOrgReactionData
+PrintDemeOrgTasksData
+PrintDemeOrgTasksExeData
+PrintDemeReactionData
+PrintDemeReactionDiversityReplicationData
+PrintDemeReplicationData
+PrintDemeResourceStats
+PrintDemeResourceThresholdPredicate
+PrintDemeSpacialEnergyStats
+PrintDemeSpacialSleepStats
+PrintDemeStats
+PrintDemesTotalAvgEnergy
+PrintDemeTasksData
+PrintDemeTasksExeData
+PrintDemeTestamentStats
+PrintDemeTreatableCount
+PrintDemeTreatableReplicationData
+PrintDemeUntreatableReplicationData
+PrintDepthHistogram
+PrintDetailedFitnessData
+PrintDetailedSynchronizationData
+PrintDirectReciprocityData
+PrintDivideMutData
+PrintDominantData
+PrintDominantForagerGenotypes
+PrintDominantGenotype
+PrintDominantGroupGenotypes
+PrintDonationStats
+PrintDynamicMaxMinData
+PrintEditDistance
+PrintErrorData
+PrintExtendedTimeData
+PrintFemaleMatePreferenceData
+PrintFlowRateTuples
+PrintGeneticDistanceData
+PrintGenomicSiteEntropy
+PrintGenotypeAbundanceHistogram
+PrintGermlineData
+PrintGroupIds
+PrintGroupsFormedData
+PrintGroupTolerance
+PrintHGTData
+PrintHostDepthHistogram
+PrintHostPhenotypeData
+PrintHostTasksData
+PrintInstructionAbundanceHistogram
+PrintInstructionData
+PrintInternalTasksData
+PrintInternalTasksQualData
+PrintInterruptData
+PrintLineageCounts
+PrintLineageTotals
+PrintLogFitnessHistogram
+PrintMarketData
+PrintMatingDisplayData
+PrintMatingTypeHistogram
+PrintMessageData
+PrintMessageLog
+PrintMigrationData
+PrintMiniTraces
+PrintMicroTraces
+PrintMultiProcessData
+PrintMutationRateData
+PrintNewReactionData
+PrintNewTasksData
+PrintNewTasksDataPlus
+PrintNumOrgsInDeme
+PrintNumOrgsKilledData
+PrintOpinionsSetPerDeme
+PrintOrganismLocation
+PrintParasiteData
+PrintParasiteDepthHistogram
+PrintParasitePhenotypeData
+PrintParasiteTasksData
+PrintPerDemeGenPerFounderData
+PrintPerDemeReactionData
+PrintPerDemeTasksData
+PrintPerDemeTasksExeData
+PrintPhenotypeData
+PrintPhenotypeStatus
+PrintPhenotypicPlasticity
+
+PrintPlasticGenotypeSummary
+PrintPopulationDistanceData
+PrintPredatorAverageData
+PrintPredatorErrorData
+PrintPredatorInstructionData
+PrintPredatorVarianceData
+PrintMinPreyFailedAttacks
+PrintPredicatedMessages
+PrintPreyAverageData
+PrintPreyErrorData
+PrintPreyInstructionData
+PrintPreyVarianceData
+PrintProfilingData
+PrintReactionData
+PrintReactionExeData
+PrintReactionRewardData
+PrintRelativeFitnessHistogram
+PrintReproData
+PrintReputationData
+PrintResourceData
+PrintSenseData
+PrintSenseExeData
+PrintShadedAltruists
+PrintSimpleConsensusData
+PrintSleepData
+PrintSpeciesAbundanceHistogram
+PrintStatsData
+PrintStringMatchData
+PrintSuccessfulMates
+PrintSynchronizationData
+PrintTargets
+PrintTaskProbHistogram
+PrintTasksData
+PrintTasksExeData
+PrintTaskSnapshot
+PrintTasksQualData
+PrintThreadsData
+PrintTimeData
+PrintToleranceData
+PrintToleranceInstructionData
+PrintTopNavTrace
+PrintTotalsData
+PrintVarianceData
+PrintViableTasksData
+PrintWinningDeme
+RandomLandscape
+RemovePredators
+ReplaceFromGermline
+ReplicateDemes
+ResetDemes
+SampleLandscape
+SaveDemeFounders
+SaveFlameData
+SavePopulation
+SerialTransfer
+SetCellResource
+SetConfig
+SetDemeResource
+SetDemeResourceInflow
+SetDemeResourceOutflow
+SetEnvironmentInputs
+SetEnvironmentRandomMask
+SetFracDemeTreatable
+SetGradientResource
+SetGradientInflow
+SetGradientOutflow
+SetGradientConeInflow
+SetGradientConeOutflow
+SetGradientPlatInflow
+SetGradientPlatOutflow
+SetGradPlatVarInflow
+SetMigrationRate
+SetMutProb
+SetNumInstBefore0Energy
+SetOptimizeMinMax
+SetPeriodicResource
+SetPopCapEnforcement
+SetPredatoryResource
+SetReactionInst
+SetReactionMaxTaskCount
+SetReactionMinTaskCount
+SetReactionTask
+SetReactionValue
+SetReactionValueMult
+SetResource
+SetResourceInflow
+SetResourceOutflow
+SetSeasonalResource
+SetSeasonalResource10Kyears_1To_1
+SetSeasonalResource1Kyears_1To_1
+SetTaskArgDouble
+SetTaskArgInt
+SetTaskArgString
+SetVerbose
+SeverGridCol
+SeverGridRow
+StopFastForward
+SwapCells
+SwapRandomCells
+Synchronization
+TestDominant
+TherapyDecayDemeResource
+TherapyStructuralNumInst
+TherapyStructuralRatioDistBetweenNearest
+ToggleFitnessValley
+ToggleRewardInstruction
+TrackAllMessages
+UnitFitness
+VERBOSE
+ZeroMuts
+ZeroResources
+
+  +

Driver Actions

+These actions control the driver object responsible for executing the current run. +
    +
  • Exit +No ArgumentsUnconditionally terminate the current run.
  • +
  • ExitAveGeneration +<double generation>
  • +
  • ExitAveLineageLabelGreater +<double threshold>Halts the run if the current average lineage label is larger +than threshold.
  • +
  • ExitAveLineageLabelLess +<double threshold>Halts the run if the current average lineage label is smaller +than threshold.
  • +
  • ExitDemeReplications
  • +
  • ExitElapsedTime +<int elapsed time [seconds]>
  • +
  • Pause +No Arguments
  • +
  • StopFastForward +none
  • +
+  +

Environment Actions

+Events that allow user to change environment properties, such as resources +and reaction parameters. +
    +
  • ChangeEnvironment +<string env_string>Action designed to read in and process a line formatted as if it were in the +environment file. This will change +environmental settings on the fly. You should create all resources and +reactions in the environment file and only use this file to change these +resources and reactions. Also, note that this action does not replace reactions already in the environment that share the same name as the argument given to ChangeEnvironment; it simply adds another reaction with the same name.
  • +
  • DelayedDemeEvent +<int x1> <int y1> <int x2> <int y2> <int delay> <int duration> <bool static_position> <int total_events>
  • +
  • DelayedDemeEventsPerSlots +<int x1> <int y1> <int x2> <int y2> <int delay> <int duration> <bool static_position> <int total_slots_per_deme> <int total_events_per_slot_max> <int total_events_per_slot_min> <int tolal_event_flow_levels>
  • +
  • InjectResource +<string res_name> <double res_count>Inject (add) a specified amount of a specified resource. +res_name must already exist as +a resource in environment file.
  • +
  • InjectScaledResource +<string res_name> <double res_count>
  • +
  • MergeResourceAcrossDemes +<string deme_res_name> <string global_res_name>
  • +
  • OutflowScaledResource +<string res_name> <double res_percent>
  • +
  • SetCellResource +<int cell_id> <string res_name> <double res_count>
  • +
  • SetConfig +<string config_var> <string value>
  • +
  • SetDemeResource +<string res_name> <double res_count>
  • +
  • SetDemeResourceInflow +<int deme id> <string resource_name> <double inflow>
  • +
  • SetDemeResourceOutflow +<int deme id> <string resource_name> <double outflow>
  • +
  • SetEnvironmentInputs +<int input_1> <int input_2> <int input_3> Set the inputs that all organisms get from the environment when doing IO to these specific values. There must +be exactly three inputs, and they must have the usual values for the top 8 "key" bits, i.e. they must be of the form +0x0F?????? 0x33?????? 0x55?????? where ? can be replaced with any hexadecimal digit.
  • +
  • SetEnvironmentRandomMask +<int mask>
  • +
  • SetFracDemeTreatable
  • +
  • + SetGradientResource + <string env_string> +

    +

    + Action designed to read in and process a line for ONE gradient resource, + formatted as if it were in the environment file. + This will change environmental settings for this one gradient resource on the fly. + You should create the resource in the environment file and only use this file to + change this resource.
    + Unlike with ChangeEnvironment, no resources other than the one specified in the event + will be affected. +

    +
  • +
  • + SetGradientInflow + <string res_name> <double res_inflow> +

    +

    + Set existing gradient resource plateau inflow rate to a new value, without redrawing + the entire resource. +

    +
  • +
  • + SetGradientOutflow + <string res_name> <double res_outflow> +

    +

    + Set existing gradient resource plateau outflow rate to a new value, without redrawing + the entire resource. +

    +
  • +
  • + SetGradientConeInflow + <string res_name> <double res_inflow> +

    +
  • +
  • + SetGradientConeOutflow + <string res_name> <double res_outflow> +

    +
  • +
  • + SetGradientPlatInflow + <string res_name> <double res_inflow> +

    +
  • +
  • + SetGradientPlatOutflow + <string res_name> <double res_outflow> +

    +
  • +
  • + SetGradPlatVarInflow + <string res_name> <double mean> <double variance> <int type> +

    +

    + Set existing gradient resource plateau inflow rate to a new value, without redrawing + the entire resource, based on a random number pull from normal distribution of this + mean and variance. As such, this uses a half normal or folded normal approach with + expected value = sigma * sqrt(2 /pi). + If type == 0, new inflow will be the random number pulled. + If type > 0, new inflow will be mean + abs(the random number pulled). + If type == 1, new inflow will be max (0, mean - abs(the random number pulled)). + If type == 2, new inflow will be max (0, mean + the random number pulled). +

    +
  • + +
  • SetNumInstBefore0Energy +<int new_value>
  • +
  • SetOptimizeMinMax +No Arguments
  • +
  • SetPeriodicResource +<string reaction_name> <string amplitude> <string pi/frequence> <phaseShift*pi> <string initial_Y>
  • +
  • SetReactionInst +<string reaction_name> <string inst>Set the instruction triggered by this reaction. +reaction_name must already +exist in the environment file. +inst must be in the instruction set.
  • +
  • + SetPopCapEnforcement + [int cap=0] [int rate=1] +

    +

    + Will set POPULATION_CAP to cap and begin killing orgs off at rate rate by killing rate # orgs + 1 every time a new org is born. + Accepts string args (e.g. SetPopCapEnforcement cap=0:rate=1). +

    +
  • +
  • + SetPredatoryResource + <string res_name> <double kill_odds> <double guarded_juvs_per_adult>double detection_prob> +

    +

    + A gradient resource with teeth. If set in motion, will kill with prob kill_odds 1 random org + in each cell of plateau. If it passes over a den resource, will kill unguarded offspring with + probability kill_odds. If an org steps on the resource, the org is killed with probability + kill_odds. detection_prob sets the probability of orgs detecting the predator via look sensors. +

    +
  • + +
  • SetReactionMaxTaskCount +<string reaction_name> <int max_count>Set the max task count required to trigger a reaction to task_count. +reaction_name must already +exist in the environment file.
  • +
  • SetReactionMinTaskCount +<string reaction_name> <int min_count>Set the min task count required to trigger a reaction to task_count. +reaction_name must already +exist in the environment file.
  • +
  • SetReactionTask +<string reaction_name> <string task_name>Set the task required to trigger a reaction to task_name. +reaction_name and task_name must already +exist in the environment file.
  • +
  • SetReactionValue +<string reaction_name> <double value>Set the reaction value to a specific level. +reaction_name must already +exist in the environment file. +value can be negative.
  • +
  • SetReactionValueMult +<string reaction_name> <double value>Multiply the reaction value by the value. +reaction_name must already +exist in the environment file. +value can be negative.
  • +
  • SetResource +<string res_name> <double res_count>Set the resource amount to a specific level. +res_name must already exist as +a resource in environment file.
  • +
  • SetResourceInflow +<string resource_name> <double inflow>Set the resource inflow to a specific level. +res_name must already exist as +a resource in environment file.
  • +
  • SetResourceOutflow +<string resource_name> <double outflow>Set the resource outflow to a specific level. +res_name must already exist as +a resource in environment file.
  • +
  • SetSeasonalResourceSets resource availiblity to seasonal
  • +
  • SetSeasonalResource10Kyears_1To_1Sets resource availiblity to seasonal 1 to -1 for 10K years of 365 updates
  • +
  • SetSeasonalResource1Kyears_1To_1Sets resource availiblity to seasonal 1 to -1 for 1K years of 365 updates
  • +
  • SetTaskArgDouble +<int task> <int arg> <double value>
  • +
  • SetTaskArgInt +<int task> <int arg> <int value>
  • +
  • SetTaskArgString +<int task> <int arg> <string value>
  • +
  • ZeroResources +noneSet all resurce levels to zero.
  • +
+  +

Landscape Analysis Actions

+Landscape analysis actions perform various types mutation studies to +calculate properties of the fitness landscape for a particular genome. +When scheduled as an event during a run, these actions will typically +perform analysis on the dominant genotype. In analyze mode, analysis +is performed on the entire currently selected batch. + +These actions are often very computationally intensive, thus will +take a long time to compute. In order to take advantage of increasingly +available multi-processor/multi-core systems, a number of these actions +have been enhanced to make use of multiple threads to parallize work. +Set the configuration setting MT_CONCURRENCY to the number +of logical processors available to make use of all processor resources +for these compuations. +
    +
  • AnalyzeLandscape +[filename="land-analyze.dat"] [int trials=1000] [int min_found=0] [int max_trials=0] [int max_dist=10]
  • +
  • AnalyzePopulation +[double sample_prob=1] [int landscape=0] [int save_genotype=0] [string filename=""]
  • +
  • DeletionLandscape +[string filename="land-del.dat"] [int distance=1] [string sitecount_file=""]
  • +
  • DumpLandscape +[string filename="land-dump.dat"]
  • +
  • FullLandscape +[string filename="land-full.dat"] [int distance=1] [string entropy_file=""] [string sitecount_file=""]Do a landscape analysis of the dominant genotype or current batch of genotypes, +depending on the current mode. The resulting output is a collection of +statistics obtained from examining all possible mutations at the distance +specified. The default distance is one.
  • +
  • HillClimb +[string filename="hillclimb.dat"]Does a hill climb with the dominant genotype.
  • +
  • InsertionLandscape +[string filename="land-ins.dat"] [int distance=1] [string sitecount_file=""]
  • +
  • MutationalNeighborhood +[string fname="mut-neighborhood.dat"] [int target=-1]
  • +
  • PairTestLandscape +[string filename=""] [int sample_size=0]If sample_size = 0, pairtest the full landscape.
  • +
  • PrecalcLandscape +No ArgumentsPrecalculate the distance 1 full landscape for the current batch in parallel +using multiple threads. The resulting data is stored into the current batch +and can be used by many subsequent output commands within Analyze mode.
  • +
  • PredictNuLandscape +[string filename="land-predict.dat"]
  • +
  • PredictWLandscape +[string filename="land-predict.dat"]
  • +
  • RandomLandscape +[string filename="land-random.dat"] [int distance=1] [int trials=0]
  • +
  • SampleLandscape +[string filename="land-sample.dat"] [int trials=0]
  • +
+  +

Population Actions

+Population events modify the state of the population, and will actually +change the course of the run. There are a wide variety of these. +
    +
  • AssignRandomCellData +[num_cells=deme_size]
  • +
  • + AttackDen + [double probability=0.0] [int juvs_per_adult=1] +

    +

    + Kills each unguarded juv in dens (habitat == 3 or 4) with set probability. juvs_per_adult sets + the ratio of guarding adults to juvs. E.g. if ratio is set to 5 and there are 2 guards and 12 + juveniles in a den, two random juveniles will be attacked with their probability of death at + the set probability. +

    +
  • +
  • AvidianConjugation +(prob. of donation)
  • +
  • CompeteDemes +[int type=1]
  • +
  • CompeteDemes_AttackKillAndEnergyConserve +No Arguments
  • +
  • CompeteDemesByEnergyDistribution +Competes demes according to the distribution of energy among the organisms
  • +
  • CompeteDemesByNetwork +No arguments.
  • +
  • CompeteDemesByTaskCount +Competes demes according to the number of times a given task has been completed within that demeCompetes demes based on the total number of times that a +task has been completed by an organism in the deme since the +was initialized. This action takes one integer parameter representing +number of the task that is to be used for competition. If no parameter +supplied, the class uses the first task defined in the environment file +compete the demes.
  • +
  • CompeteDemesByTaskCountAndEfficiency +Competes demes according to the number of times a given task has been completed within that deme and the efficiency with which it was done
  • +
  • CompeteOrganisms +[int type=0] [int parents_survive=0] [double scaled_time=1.0] [int dynamic_scaling=0]Calculates fitness of each organism in the population and creates a new population of descendants +where each organism has a chance of replication proportional to its fitness. Can be used to make Avida +operate without population dynamics and asynchronous replication, i.e. like a genetic algorithm. If NewTrial +events have occurred since the last CompeteOrganisms event, then the average fitness over those trials +will be used.competition_type controls how the fitnesses of multiple trials determine the overall fitness +used for the competition: 0=geometric mean of fitnesses, 1=scaled geometric mean of fitnesses (the greatest fitness +of each trial is scaled to 1.0 before taking the geometric mean), 2=arithmetic mean, 3=geometric mean plus +rescales effective fitness values by the geometric mean of the difference from the top score and the median.Setting parents_survive to 1, causes the first copy of an organism that makes it into the new +population to be the original (unmutated) parent organism.
  • +
  • ConnectCells +<int cellA_x> <int cellA_y> <int cellB_x> <int cellB_y>Connects a pair of specified cells.
  • +
  • CopyDeme +<int src_id> <int dest_id>
  • +
  • CountMultipleOpinions +[int opinion_count=0]
  • +
  • CountOpinions +[int desired_opinion=0 [int multiplicity=1 [int side=0]]]
  • +
  • DecayPoints +No ArgumentsDecays the number of points a deme has accumulated by +a percentage that is set in the configuration file.
  • +
  • DemeBalanceTwoTasks +Two min and max for not
  • +
  • DemeReactionDiversity +No arguments.
  • +
  • DemeResourceThresholdPredicate +cString resourceName, cString comparisonOperator, double threasholdValue
  • +
  • Desynchronization +No Arguments
  • +
  • DiffuseHGTGenomeFragments +<none>
  • +
  • DisconnectCells +<int cellA_x> <int cellA_y> <int cellB_x> <int cellB_y>Disconnects a pair of specified cells.
  • +
  • DistributeData +No arguments.
  • +
  • DistributeDataCheaply +No arguments.
  • +
  • DistributeDataEfficiently +No arguments.
  • +
  • DivideDemes +No arguments (yet!)
  • +
  • Flash +No arguments
  • +
  • + FlushTopNavTraceNo arguments

  • + Force printing of nav trace (as set up by PrintTopNavTrace) even if all candidate orgs have not been + evaluated / reproduced. +

    + +
  • Inject +[string fname="START_ORGANISM"] [int cell_id=0] [double merit=-1] [int lineage_label=0] [double neutral_metric=0]Inject a single organisms into the population. Arguments must be +included from left to right; if all arguments are left out, the default +creature is the ancestral organism, and it will be injected into cell 0, +have an uninitialized merit, and be marked as liniage id 0.
  • +
  • InjectAll +[string fname="START_ORGANISM"] [double merit=-1] [int lineage_label=0] [double neutral_metric=0]Same as Inject, but no cell_id is specified and the organism is placed +into all cells in the population.
  • +
  • InjectAllRandomRepro +<int length> [double merit=-1] [int lineage_label=0] [double neutral_metric=0]
  • +
  • InjectCanvas +[string fname="START_ORGANISM"] [int canvas_id=0] [int canvas_x=0] [int canvas_y=0] [int group_id=-1] [int forager_type=-1] [double merit=-1] [int lineage_label=0] [double neutral_metric=0]
  • +
  • InjectDemes +[string fname="START_ORGANISM"] [double merit=-1] [int lineage_label=0] [double neutral_metric=0]
  • +
  • InjectDemesFromNest +[int num_orgs=1] [int nest_cellid=0] [double merit=-1] [int lineage_label=0] [double neutral_metric=0]
  • +
  • InjectDemesRandom +[int num_orgs=1] [double merit=-1] [int lineage_label=0] [double neutral_metric=0]
  • +
  • InjectGroup +[string fname="START_ORGANISM"] [int cell_id=0] [int group_id=-1] [int forager_type=-1] [double merit=-1] [int lineage_label=0] [double neutral_metric=0]
  • +
  • InjectModuloDemes +[string fname="START_ORGANISM"] [int mod_num = 1] [double merit=-1] [int lineage_label=0] [double neutral_metric=0]
  • +
  • InjectParasite +<string filename> <string label> [int cell_start=0] [int cell_end=-1]Attempt to inject a parasite genome into the supplied population cell +range with the specified label.
  • +
  • InjectParasitePair +<string filename_genome> <string filename_parasite> <string label> [int cell_start=0] [int cell_end=-1] [double merit=-1] [int lineage_label=0] [double neutral_metric=0]Inject host parasite pairs into the population cell range specified.
  • +
  • InjectRandom +<int length> [int cell_id=0] [double merit=-1] [int lineage_label=0] [double neutral_metric=0]Injects a randomly generated genome of the supplied length into the population.
  • +
  • InjectRange +[string fname="START_ORGANISM"] [int cell_start=0] [int cell_end=-1] [double merit=-1] [int lineage_label=0] [double neutral_metric=0]Injects identical organisms into a range of cells of the population.Example:InjectRange 000-aaaaa.org 0 10Will inject 10 organisms into cells 0 through 9.
  • +
  • InjectSequence +<string sequence> [int cell_start=0] [int cell_end=-1] [double merit=-1] [int lineage_label=0] [double neutral_metric=0]Injects identical organisms based on the supplied genome sequence into +a range of cells of the population.Example:InjectSequence ckdfhgklsahnfsaggdsgajfg 0 10 100Will inject 10 organisms into cells 0 through 9 with a merit of 100.
  • +
  • InjectSequenceWDivMutRate +<string sequence> [int cell_start=0] [int cell_end=-1] [double div_mut_rate=0] [double merit=-1] [int lineage_label=0] [double neutral_metric=0]
  • +
  • IteratedConsensus +[int compete_period=100 [int replace_number=1 [int kill=1 [int restrict_range=1]]]]
  • +
  • JoinGridCol +[int col_id=-1] [int min_row=0] [int max_row=-1]Add connections between cells along a column in an Avida grid.
  • +
  • JoinGridRow +[int row_id=-1] [int min_col=0] [int max_col=-1]Add connections between cells along a row in an Avida grid.
  • +
  • KillFractionInSequence +[double fraction=0.01]
  • +
  • KillFractionInSequence_PopLimit +[double fraction=0.01]
  • +
  • KillInstLimit +[double probability=0.9] [cString inst=nand] [int limit=5]
  • +
  • KillInstPair +[double probability=0.9] [cString inst1=nand] [cString inst2=nor] [int limit=1]
  • +
  • KillMeanBelowThresholdPaintable
  • +
  • KillNBelowResourceThreshold +[int numkills=0, string resource name, double threshold=0]
  • +
  • KillProb +[double probability=0.9]Using the specified probability, test each organism to see if it is killed off.
  • +
  • KillRate +[double probability=0.9]Randomly removes a certain proportion of the population. +In principle, this action does the same thing as the KillProb event. +However, instead of a probability, here one has to specify a rate. The +rate has the same unit as fitness. So if the average fitness is 20000, +than you remove 50% of the population on every update with a removal rate +of 10000.
  • +
  • KillRectangle +[int x1=0] [int y1=0] [int x2=0] [int y2=0]Kill off all organisms in a rectangle defined by the points (x1, y1) and (x2, y2).
  • +
  • KillWithinRadiusBelowResourceThreshold +[int numradii=0, int radius=0, string resource name, double threshold=0, double killdensity=1]
  • +
  • KillWithinRadiusBelowResourceThresholdTestAll +[int numradii=0, int radius=0, string resource name, double threshold=0, double killdensity=1]
  • +
  • KillWithinRadiusMeanBelowResourceThreshold +[int numradii=0, int radius=0, string resource name, double threshold=0, double killdensity=1]
  • +
  • MeasureDemeNetworks +No arguments.
  • +
  • MixPopulation +No arguments.
  • +
  • ModMutProb +[string mut_type="COPY_MUT"] [double prob=0.0] [int start_cell=-1] [int end_cell=-1]Values for mut_type are POINT, COPY_MUT, COPY_INS, COPY_DEL, COPY_UNIFORM, COPY_SLIP, DIV_MUT, DIV_INS, DIV_DEL, DIV_UNIFORM, DIV_SLIP, DIVIDE_MUT, DIVIDE_INS, DIVIDE_DEL, DIVIDE_UNIFORM, DIVIDE_SLIP, PARENT, INJECT_MUT, INJECT_INS, and INJECT_DEL. These correspond to their counterparts in avida.cfg.To turn off all mutations, use ZeroMuts.
  • +
  • NewTrial +No ArgumentsImmediately calculates the fitness of each organism in the population, saves this value for use with the CompeteOrganisms +event, and resets the state of all organisms.
  • +
  • PhenotypeMatch +string file-name
  • +
  • Pred_DemeEventMoveBetweenTargets +[int times=1]
  • +
  • Pred_DemeEventMoveCenter +[int times=1]
  • +
  • Pred_DemeEventNUniqueIndividualsMovedIntoTarget +[int numorgs=1]
  • +
  • + PrintMiniTraces + [boolean random=0] [boolean save_dominants=0] [boolean save_groups=0] [boolean save_foragers=0] [int orgs_per=1] [int max_samples=0] [boolean print_genomes=0] [boolean initial] +

    +

    Prints a condensed trace of execution during a lifetime. Who is traced is determined by arguements. + E.g. with the args save_dominants=1:orgs_per=2, at the specified update(s) a list is + created containing the two most abundant genotypes. The next offspring born to parents with those specified + genotypes will then be traced for their entire lifetimes. If save_foragers is set to 1, the list + would contain the two most abundant genotypes for EACH existing forager type. Multiple types can + be saved without duplicating traces. E.g. save_dominants=1:save_foragers=1:orgs_per=2 would + trace one org from each of the two most dominant genotypes and one org from each of the two most + common genotypes for each of the existing forager types if those genotypes were not also one of the + two most abundant overall. If max_samples is > 0, this will cap the total number of orgs traced with + priorities on fullfilling orgs_per quota for: dominants > forager types > group ids. +

    +

    Setting random will look at current population, select individuals up to max_samples (without replacement) + record the sampled genotypes (one per individual, including genotype duplicates) and then trace the next orgs + born with those genotypes, removing the genotype instance from the 'to-do' list with each new trace. Random option + is not currently compatible with (will override) other save_ arguements or orgs_per. +

    +

    Minitraces are currently only fully implemented for the experimental hardware and partially for + the SMT hardware because of differences in the way some minitrace variables are tracked by the + different hardware types. +

    +

    Each call to PrintMiniTraces resets the genotype list, rather than appending to it. +

    +

    + +

    +
  • + PrintMicroTraces + [boolean random=0] [boolean rand_prey=0] [boolean rand_pred=0] [int next_prey=0] [int next_pred=0] [boolean save_dominants=0] [boolean save_groups=0] [boolean save_foragers=0] [int orgs_per=1] [int max_samples=0] [boolean print_genomes=0] +

    +

    Same general operation behavior as PrintMiniTraces but only saves executed instruction symbols along with + org id, genotype id, forager type, and birth and death updates. Microtraces map executions as 'what the org was trying + to do'. So, failed executions are recorded except when CPU costs are being paid. If CPU costs are being paid, we record + the execution when the instruction was submitted, not necessarily when it was actually executed. Each microtrace is + saved on a single line in microtrace.dat. +

    +

    rand_pred and rand_prey are compatible with each other, building a single list of genotypes to trace based on + current genotypes in the population for each of the two general forager types (will generate a list of 2 X max_samples + if both arguements are used). +

    +

    Each call to PrintMicroTraces appends to the genotype list, rather than replacing it (opposite of mini traces). +

    +

    If next_prey or next_pred are used, the organisms born to parents with prey or predator + foraging targets will be traced, regardless of genotype, until the set arg number have been traced (requested number will + be replaced, not appended to, by subsequent event calls).

    +

    +

    + +
  • RemovePredators
  • +
  • ReplaceFromGermline +[double p(kill)=0.0 [int update_cell_data=0]]
  • +
  • ReplicateDemes +[string trigger=full_deme] +

    Tests all demes in a population and replicates those wherein a specific trigger condition has been met. The available triggers are: +

      +
    • full_deme: All deme cells are occupied by organisms.
    • +
    • corners: The upper-left and lower-right cells in a deme are occupied
    • +
    • deme-age: The deme has reached the age specified as DEMES_MAX_AGE in avida.cfg
    • +
    • birth-count: The deme has reached the number of births specified as DEMES_MAX_BIRTHS in avida.cfg
    • +
    • sat-mov-pred: ???
    • +
    • events-killed: ???
    • +
    • sat-msg-pred: ???
    • +
    • sat-deme-predicate: ???
    • +
    • perf-reactions: ???
    • +
    • consume-res: The deme has consumed a total number of resources specified as RES_FOR_DEME_REP in avida.cfg
    • +
    +

    +
  • +
  • ResetDemes +No Arguments
  • +
  • SerialTransfer +[int transfer_size=1] [int ignore_deads=1]Similar to KillProb, but we specify the exact number of organisms to +keep alive after the event. The ignore_deads +argument determines whether only living organisms are retainted.
  • +
  • SetMigrationRate +[double rate=0.0]
  • +
  • SetMutProb +[string mut_type="COPY_MUT"] [double prob=0.0] [int start_cell=-1] [int end_cell=-1]For a list of values for mut_type, see SetMutProb.
  • +
  • SeverGridCol +[int col_id=-1] [int min_row=0] [int max_row=-1]Remove the connections between cells along a column in an Avida grid.
  • +
  • SeverGridRow +[int row_id=-1] [int min_col=0] [int max_col=-1]Remove the connections between cells along a row in an Avida grid.
  • +
  • SwapCells +<int cell_id1> <int cell_id2> Swaps the two organisms and all associated information (such as previous inputs). Doesn't work with identical cell ids.
  • +
  • SwapRandomCells +<int number swaps> Swaps the specified number of pairs of randomly selected organisms. If randomly selected ids happen to be the same, nothing happens that iteration.
  • +
  • Synchronization +No Arguments
  • +
  • TherapyDecayDemeResource +[string resource_name=resname, string decrease_type=(none|lin|exp), double amount=0.2]
  • +
  • TherapyStructuralNumInst +[cString inst=nand] [double exprWeight=1.0] [double exponent=1.0(linear)]
  • +
  • TherapyStructuralRatioDistBetweenNearest +[cString inst=nand] [double exprWeight=1.0] [double exponent=1.0(linear)] [int print=100]
  • +
  • ToggleFitnessValley +No Arguments
  • +
  • ToggleRewardInstruction +No Arguments
  • +
  • TrackAllMessages +No Arguments
  • +
  • UnitFitness +No arguments.
  • +
  • ZeroMuts +No ArgumentsThis event will set all mutation rates to zero. That is, it will set all cell mutation rates to zero, so that new organisms born will have zero mutation rates. Current organisms will not be affected, and may still mutate.
  • +
+  +

Print Actions

+Output events are the primary way of saving data from an Avida experiments. +The main two types are continuous output, which append to a single file +every time the event is trigged, and singular output, which produce +a single, complete file for each trigger. +
    +
      +
    • CalcConsensus +[int lines_saved=0]
    • +
    • DumpCellDataGrid +[string fname=""]
    • +
    • DumpClassificationIDGrid +[string fname_prefix=""]
    • +
    • DumpDonorGrid +[string fname=""]Print out the grid of organisms who donated their merit.
    • +
    • DumpEnergyGrid +[string fname=""]
    • +
    • DumpExecutionRatioGrid +[string fname=""]
    • +
    • DumpFitnessGrid +[string fname=""]Print out the grid of organism fitness values.
    • +
    • DumpGenomeLengthGrid +[string fname=""]
    • +
    • DumpGenotypeColorGrid +[int num_colors=12] [string fname=""]
    • +
    • DumpGenotypeGrid +[string fname=""]
    • +
    • DumpHostTaskGrid +[string fname=""]Print out the grid of takss that host organisms did in the last gestation cycle. For +each host, tasks are first encoded as a binary string (e.g. 100000001 means that +organism is doing NOT and EQU and then reported as a base-10 number (257 in the example above).
    • +
    • DumpIDGrid +[string fname=""]
    • +
    • DumpLastTaskGrid +[string fname=""]
    • +
    • DumpMaxResGrid +[string fname=""]
    • +
    • DumpMemory +[string fname=""]Dump memory summary information.
    • +
    • DumpParasiteGenotypeGrid +[string fname=""]
    • +
    • DumpParasiteTaskGrid +[string fname=""]Print out the grid of tasks that parasites did last gestation. For each parasite, tasks are first +encoded as a binary string (e.g. 100000001 means that organism is doing NOT and EQU +and then reported as a base-10 number (257 in the example above).
    • +
    • DumpParasiteVirulenceGrid +[string fname=""]
    • +
    • DumpPhenotypeIDGrid +[string fname=""]
    • +
    • DumpReactionGrid +[string fname=""]
    • +
    • DumpReceiverGrid +[string fname=""]
    • +
    • DumpSleepGrid +[string fname=""]
    • +
    • DumpTargetGrid +[string fname=""]
    • +
    • DumpTaskGrid +[string fname=""]Print out the grid of tasks that organisms do. For each organism, tasks are first +encoded as a binary string (e.g. 100000001 means that organism is doing NOT and EQU +and then reported as a base-10 number (257 in the example above).
    • +
    • DumpVitalityGrid +[string fname=""]
    • +
    • Echo +<cString message>Print the supplied message to standard output.
    • +
    • PrintAgePolyethismData +[string fname="age_polyethism.dat"]
    • +
    • PrintAveNumTasks +[string fname=""]
    • +
    • PrintAverageData +[string fname="average.dat"][string filename='average.dat'] +Print all of the population averages the specified file.
    • +
    • PrintAvgDemeTasksExeData +[string fname="avg_deme_tasks_exe.dat"]
    • +
    • PrintAvgTreatableDemeTasksExeData +[string fname="avg_treatable_deme_tasks_exe.dat"]
    • +
    • PrintAvgUntreatableDemeTasksExeData +[string fname="avg_untreatable_deme_tasks_exe.dat"]
    • +
    • PrintBirthChamber +[string fname="birth_chamber/bc-XXXX.dat"] [int hwtype=0]
    • +
    • PrintBirthChamberMatingTypeHistogram +[string fname="birth_chamber_mating_type_histogram.dat"] [int hwtype=0]
    • +
    • PrintCCladeCounts +[filename = "cclade_count.dat"]Print a count of the number of oraganisms belonging to a each coalescence clade currently in the population.This action will only work in run mode.This action will require TRACK_CCLADE to be enabled.
    • +
    • PrintCCladeFitnessHistogram +[filename] [fit_mode] [hist_min] [hist_step] [hist_max]Print a histogram of fitnesses for each coalescence clade in the population.This action will only work in run mode.This action will rerequire TRACK_CCLADE to be enabled.mode may be {CURRENT, ACTUAL, TESTCPU}, whereCURRENT uses the current phenotype value of fitness
    • +
    +
+ACTUALuses the current merit and the true gestation time (via test cpu calculation) +TESTCPUuses the test cpu measurement. +lower_bound, step, upper_bound are log10 values for the individual histogram bins. + +  +
    +
  • PrintCCladeRelativeFitnessHistogram +[filename] [fit_mode] [hist_min] [hist_step] [hist_max]Print a histogram of parent-relative fitness ratios for each coalescence clade in the population.This action will only work in run mode.This action will rerequire TRACK_CCLADE to be enabled.mode may be {CURRENT, ACTUAL, TESTCPU}, whereCURRENT uses the current phenotype value of fitness
  • +
+ACTUALuses the current merit and the true gestation time (via test cpu calculation) +TESTCPUuses the test cpu measurement. +lower_bound, step, upper_bound are values for the individual histogram bins. + +  +
    +
  • PrintCellData +[string fname="cell_data.dat"]
  • +
  • PrintCellVisitsData +[string fname="visits.dat "]
  • +
  • PrintCompetitionData +[string fname="competition.dat"]Print out CompeteOrganism statistics. Make the first call after the first set of trials has been completed to get a complete header.
  • +
  • PrintConsensusData +[string fname="consensus.dat"]
  • +
  • PrintCountData +[string fname="count.dat"]Print all of the statistics the keep track of counts (such as the number of organisms +in the population or the number of instructions executed).
  • +
  • PrintCurrentMeanDemeDensity +[string fname="deme_currentMeanDensity.dat"]
  • +
  • PrintCurrentOpinions +[string fname="opinions.dat"]
  • +
  • PrintCurrentReactionData +[string fname="cur_reactions.dat"]
  • +
  • PrintCurrentReactionRewardData +[string fname="cur_reaction_reward.dat"]
  • +
  • PrintCurrentTaskCounts +[string fname="curr_task_counts.dat"]
  • +
  • PrintData +<cString fname> <cString format>Append to the file specified (continuous output), the data given in the +column list. The column list needs to be a comma-seperated list of +keywords representing the data types. Many possible data types can be +output; see the complete listing for details. +Note that this event will even create a detailed column legend at the top +of your file so you don't need to seperately keep track of what the +columns mean.
  • +
  • PrintDebug +No Arguments
  • +
  • PrintDemeAllStats +No Arguments
  • +
  • PrintDemeAverageData +[string fname="deme_average.dat"]
  • +
  • PrintDemeCompetitionData +[string fname="deme_compete.dat"]
  • +
  • PrintDemeCurrentTaskExeData +[string fname=" deme_cur_task_exe.dat "]
  • +
  • PrintDemeDonorStats +No Arguments
  • +
  • PrintDemeEnergyDistributionStats +No Arguments
  • +
  • PrintDemeEnergySharingStats +No Arguments
  • +
  • PrintDemeFoundersData +[string fname="deme_founders.dat"]
  • +
  • PrintDemeGermlineSequestration +[string fname="deme_germ.dat"]
  • +
  • PrintDemeGlobalResources +No ArgumentsPrints each resource in each deme. The format is different than normal Avida output and no information besides the date and time is given in the comments. +Format at each update: +deme_global_resouces_<update in 6 digits, padded with left 0s> = [ ... +<deme_number> <resource0> etc. +<deme_number> <resource0> etc. +];
  • +
  • PrintDemeMigrationSuicidePoints +[string fname=" deme_mig_suicide_points.dat "]
  • +
  • PrintDemeNetworkData +[string fname="deme_network.dat"]
  • +
  • PrintDemeNetworkTopology +[string fname="deme_network_topology.dat"]
  • +
  • PrintDemeOrgReactionData +[string fname="deme_org_reactions.dat"]
  • +
  • PrintDemeOrgTasksData +[string fname="deme_org_tasks.dat"]
  • +
  • PrintDemeOrgTasksExeData +[string fname="deme_org_tasks_exe.dat"]
  • +
  • PrintDemeReactionData +[string fname="deme_reactions.dat"]
  • +
  • PrintDemeReactionDiversityReplicationData +[string fname="deme_rx_repl.dat"]
  • +
  • PrintDemeReplicationData +[string fname="deme_repl.dat"]
  • +
  • PrintDemeResourceStats +No ArgumentsPrints each resource in each deme, with the format noted in the initial comments as normal.
  • +
  • PrintDemeResourceThresholdPredicate +[string fname="deme_resourceThresholdPredicate.dat"]
  • +
  • PrintDemeSpacialEnergyStats +No Arguments
  • +
  • PrintDemeSpacialSleepStats +No Arguments
  • +
  • PrintDemeStats +No Arguments
  • +
  • PrintDemesTotalAvgEnergy +No Arguments
  • +
  • PrintDemeTasksData +[string fname="deme_tasks.dat"]
  • +
  • PrintDemeTasksExeData +[string fname="deme_tasks_exe.dat"]
  • +
  • PrintDemeTestamentStats +[string fname="deme_testament.dat"]
  • +
  • PrintDemeTreatableCount +[string fname="deme_treatable.dat"]
  • +
  • PrintDemeTreatableReplicationData +[string fname="deme_repl_treatable.dat"]
  • +
  • PrintDemeUntreatableReplicationData +[string fname="deme_repl_untreatable.dat"]
  • +
  • PrintDepthHistogram +[string fname="depth_histogram.dat"]
  • +
  • PrintDetailedFitnessData +[int save_max_f_genotype=0] [int print_fitness_histo=0] [double hist_fmax=1] [double hist_fstep=0.1] [string datafn="fitness.dat"] [string histofn="fitness_histos.dat"] [string histotestfn="fitness_histos_testCPU.dat"]
  • +
  • PrintDetailedSynchronizationData +[string fname="sync-detail.dat"]
  • +
  • PrintDirectReciprocityData +[string fname="reciprocity.dat"]
  • +
  • PrintDivideMutData +[string fname="divide_mut.dat"]Output (regular and log) statistics about individual, per site, rates divide mutation +rates (aver, stdev, skew, cur) to divide_mut.dat. Use with multiple divide instuction set.
  • +
  • PrintDominantData +[string fname="dominant.dat"]Print all of the statistics relating to the dominant genotype.
  • +
  • PrintDominantForagerGenotypes +[string fname=""]
  • +
  • PrintDominantGenotype +[string fname=""]Print the dominant organism's genome (and lots of information about it) +into the file specified. If no filename is given, the genotype's assigned name +is used and the file is placed into the archive subdirectory.
  • +
  • PrintDominantGroupGenotypes +[string fname=""]
  • +
  • PrintDonationStats +No Arguments
  • +
  • PrintDynamicMaxMinData +[string fname=" maxmin.dat "]
  • +
  • PrintEditDistance +[sample size [filename]]
  • +
  • PrintErrorData +[string fname="error.dat"]Print all of the standard errors of the average population statistics.
  • +
  • PrintExtendedTimeData +[string fname="xtime.dat"]
  • +
  • PrintFemaleMatePreferenceData +[string fname="female_mate_preference_data.dat"]
  • +
  • PrintFlowRateTuples +[string fname="flow_rate_tuples.dat"]
  • +
  • PrintGeneticDistanceData +[string ref_creature_file="START_ORGANISM"] [string fname="genetic_distance.dat"]
  • +
  • PrintGenomicSiteEntropy +[filename = "GenomicSiteEntropyData.dat"]This function will take the initial genotype for each organism in the +population/batch, align them, and calculate the per-site entropy of the +aligned sequences. Please note that there may be a variable number +of columns in each line if the runs are not fixed length. The site +entropy will be measured in mers, normalized by the instruction set size. +This is a population/batch measure of entropy, not a mutation-selection balance +measure.
  • +
  • PrintGenotypeAbundanceHistogram +[string fname="genotype_abundance_histogram.dat"]Arguments: [string fname="species_abundance_histogram.dat"]Arguments: [string fname="lineage_totals.dat"] [int verbose=1]Arguments: [string fname="lineage_counts.dat"] [int verbose=1]Writes out a genotype abundance histogram.
  • +
  • PrintGermlineData +[string fname="germline.dat"]
  • +
  • PrintGroupIds +[string fname="groupids.dat"]
  • +
  • PrintGroupsFormedData +[string fname="groupformation.dat"]
  • +
  • PrintGroupTolerance +[string fname="grouptolerance.dat"]
  • +
  • PrintHGTData +[string fname="hgt.dat"]
  • +
  • PrintHostDepthHistogram +[string fname="depth_host_histogram.dat"]
  • +
  • PrintHostPhenotypeData +[string fname="host_phenotype_count.dat"]
  • +
  • PrintHostTasksData +[string fname="host_tasks.dat"]
  • +
  • PrintInstructionAbundanceHistogram +[string fname="instruction_histogram-${inst_set}.dat"] [string inst_set]Appends a line containing the bulk count (abundance) of each instruction +in the population onto a file.
  • +
  • PrintInstructionData +[string fname="instruction-${inst_set}.dat"] [string inst_set]Print the by-organisms counts of what instructions they _successfully_ executed +beteween birth and divide. Prior to their first divide, organisms values for their parents.
  • +
  • PrintInternalTasksData +[string fname="in_tasks.dat"]Print the number of organisms that have performed each task using internal resources.Note that tasks performed using internal resources are also counted as tasks perfomed (by PrintTasksData), so that if you wish to know the number of tasks performed not using internal resources you must do some subtraction.
  • +
  • PrintInternalTasksQualData +[string fname="in_tasks_quality.dat"]Print the total quality of each task when performed using internal resources. (See PrintTasksQualData for more about task quality.
  • +
  • PrintInterruptData +[string fname="interrupt.dat"]
  • +
  • PrintLineageCounts +[string fname="lineage_counts.dat"]\n WARNING: This will only have the appropriate header if all lineages are present before this action is run for the first time.
  • +
  • PrintLineageTotals
  • +
  • PrintLogFitnessHistogram +Parameters: <filename> <mode> <min> <step> <max>Print a histogram of organism fitnesses in the current population.This action will only work in run mode.mode may be {CURRENT, ACTUAL, TESTCPU}, whereCURRENT uses the current phenotype value of fitness
  • +
+ACTUALuses the current merit and the true gestation time (via test cpu calculation) +TESTCPUuses the test cpu measurement. +lower_bound, step, upper_bound are log10 values for the individual histogram bins. + +  +
    +
  • PrintMarketData +[string fname="market.dat"]
  • +
  • PrintMatingDisplayData +[string fname="mating_display_data.dat"]
  • +
  • PrintMatingTypeHistogram +[string fname="mating_type_histogram.dat"]
  • +
  • PrintMessageData +[string fname="message.dat"]
  • +
  • PrintMessageLog +[string fname="message_log.dat"]
  • +
  • PrintMigrationData +[string fname="migration.dat"]
  • +
  • PrintMultiProcessData +[string fname="multiprocess.dat"]
  • +
  • PrintMutationRateData +[string fname="mutation_rates.dat"]Output (regular and log) statistics about individual copy mutation rates +(aver, stdev, skew, cur). Useful only when mutation rate is set per organism.
  • +
  • PrintNewReactionData +[string fname=" newreactions.dat "]Print number of times the particular reaction has newly appeared in the population since +the last time this datum was printed. Newly appeared is defined as an organism triggering +a reaction that was not triggered by its parent.
  • +
  • PrintNewTasksData +[string fname="newtasks.dat "]Print number of times the particular task has newly appeared in the population since +the last time this datum was printed. Newly appeared is defined as an organism executing +a task that was not executed by its parent.
  • +
  • PrintNewTasksDataPlus +[string fname="newtasksplus.dat "]
  • +
  • PrintNumOrgsInDeme +No Arguments
  • +
  • PrintNumOrgsKilledData +[string fname="orgs_killed.dat"]
  • +
  • PrintOpinionsSetPerDeme +[string fname="opinions_set.dat"]
  • +
  • PrintOrganismLocation +[string fname="location.dat"]
  • +
  • PrintParasiteData +[string fname="parasite.dat"]
  • +
  • PrintParasiteDepthHistogram +[string fname="depth_parasite_histogram.dat"]
  • +
  • PrintParasitePhenotypeData +[string fname="parasite_phenotype_count.dat"]
  • +
  • PrintParasiteTasksData +[string fname="parasite_tasks.dat"]
  • +
  • PrintPerDemeGenPerFounderData +[string fname="deme_gen_between_founders.dat"]
  • +
  • PrintPerDemeReactionData +[string fname="per_deme_reactions.dat"]
  • +
  • PrintPerDemeTasksData +[string fname="per_deme_tasks.dat"]
  • +
  • PrintPerDemeTasksExeData +[string fname="per_deme_tasks_exe.dat"]
  • +
  • PrintPhenotypeData +[string fname="phenotype_count.dat"][string filename='phenotype_count.dat'] +Print the number of phenotypes based on tasks executed this update. Executing +a task any number of times is considered the same as executing it once.
  • +
  • PrintPhenotypeStatus +[string fname="phenotype_status.dat"]
  • +
  • PrintPhenotypicPlasticity +[string filename="phenplast"] [int num_trials=1000]This function will provided detailed information about the phenotypic varients +of the current population/batch by running each genome through a test cpu num_trials times. +If this command is executed in run mode, the +filename will be appeneded with -Update.dat where Update +is the current update. In analyze mode, the default file is merely phenplast.dat. +The output file contains the following: id, parent_id, phenotypic_varient_number, frequency, fitness, merit, +gestation_time, and task counts for each phenotypic variant of each genotype.
  • +
  • PrintPlasticGenotypeSummary +[string filename="genotype_plsticity.dat"]
  • +
  • PrintPopulationDistanceData +[string creature="START_ORGANISM"] [string fname=""] [int save_genotypes=0]
  • +
  • PrintPredatorAverageData +[string fname="predator_average.dat"]
  • +
  • PrintPredatorErrorData +[string fname="predator_error.dat"]
  • +
  • PrintMinPreyFailedAttacks +[string fname="failed_attacks.dat"]
  • +
  • PrintPredatorInstructionData +[string fname="predator_instruction-${inst_set}.dat"] [string inst_set]
  • +
  • PrintPredatorVarianceData +[string fname="predator_variance.dat"]
  • +
  • PrintPredicatedMessages +[string fname="messages.dat"]
  • +
  • PrintPreyAverageData +[string fname="prey_average.dat"]
  • +
  • PrintPreyErrorData +[string fname="prey_error.dat"]
  • +
  • PrintPreyInstructionData +[string fname="prey_instruction-${inst_set}.dat"] [string inst_set]
  • +
  • PrintPreyVarianceData +[string fname="prey_variance.dat"]
  • +
  • PrintProfilingData +[string fname="profiling.dat"]
  • +
  • PrintReactionData +[string fname="reactions.dat"]
  • +
  • PrintReactionExeData +[string fname="reactions_exe.dat"]
  • +
  • PrintReactionRewardData +[string fname="reaction_reward.dat"]
  • +
  • PrintRelativeFitnessHistogram +[filename] [fit_mode] [hist_min] [hist_step] [hist_max]Print a histogram of parent-relative fitness ratios for each coalescence clade in the population.This action will only work in run mode.mode may be {CURRENT, ACTUAL, TESTCPU}, whereCURRENT uses the current phenotype value of fitness
  • +
+ACTUALuses the current merit and the true gestation time (via test cpu calculation) +TESTCPUuses the test cpu measurement. +lower_bound, step, upper_bound are values for the individual histogram bins. + +  +
    +
  • PrintReproData +No arguments
  • + Record and print some data up to first reproduction for every org alive now. +
  • PrintReputationData +[string fname="reputation.dat"]
  • +
  • PrintResourceData +[string fname="resource.dat"] [string print_maps="1"]Print the current counts of each resource available to the population. This uses +the environment configuration to determine what resources are in use. Also optionally creates +separate files resource_resource_name.m (in a format that is +designed to be read into Matlab) for each spatial resource. Uses 1 as default but you can put 0 to only print resource.dat and save space.
  • +
  • PrintSenseData +[string fname="sense.dat"]
  • +
  • PrintSenseExeData +[string fname="sense_exe.dat"]
  • +
  • PrintShadedAltruists +[string fname="shadedaltruists.dat"]
  • +
  • PrintSimpleConsensusData +[string fname="simple_consensus.dat"]
  • +
  • PrintSleepData +[string fname="sleep.dat"]
  • +
  • PrintSpeciesAbundanceHistogramWrites out a species abundance histogram.
  • +
  • PrintStatsData +[string fname="stats.dat"]Print all of the miscellanous population statistics.
  • +
  • PrintStringMatchData +[string fname="stringmatch.dat"]
  • +
  • PrintSuccessfulMates +[string fname="mates/mates-XXXX.dat"]
  • +
  • PrintSynchronizationData +[string fname="sync.dat"]
  • +
  • PrintTargets +[string fname="targets.dat"]
  • +
  • PrintTaskProbHistogram +[filename=pp_histogram.dat] [weightbycpus=0]
  • +
  • PrintTasksData +[string fname="tasks.dat"]Print the number of organisms that are able to perform each task. This uses the +environment configuration to determine what tasks are in use.
  • +
  • PrintTasksExeData +[string fname="tasks_exe.dat"]Print number of times the particular task has been executed this update.
  • +
  • PrintTaskSnapshot +[string fname=""]Run all organisms in the population through test cpus and print out the +number of tasks each can perform.
  • +
  • PrintTasksQualData +[string fname="tasks_quality.dat"]Print the total quality of each task. By default a successful task is valued +as 1.0. Some tasks, however, can grant partial values and/or special bonuses +via the quality value.
  • +
  • PrintThreadsData +[string fname="threads.dat"]
  • +
  • PrintTimeData +[string fname="time.dat"]Print all of the timing related statistics.
  • +
  • PrintToleranceData +[string fname="tolerance.dat"]
  • +
  • PrintToleranceInstructionData +[string fname="toleranceinstruction.dat"]
  • + +
  • PrintTopNavTrace +No arguments
  • +

    + Record and print some nav data up to first reproduction for best of orgs alive now, including trace execution, + locations, and facings. Will print these data for the org among those with the highest reaction achieved By + time of reproduction in shortest amount of time (as measured by cycles). Will print nothing if any of the + candidate orgs are still alive when avida exits and no FlushTopNavTrace events were called. +

    + + +
  • PrintTotalsData +[string fname="totals.dat"]Print various totals for the entire length of the run (for example, the total number of +organisms ever).
  • +
  • PrintVarianceData +[string fname="variance.dat"]Print all of the variances of the average population statistics.
  • +
  • PrintViableTasksData +[string fname="viable_tasks.dat"]
  • +
  • PrintWinningDeme +[string fname="deme_winners.dat"]
  • +
  • SaveDemeFounders +[string fname=""]
  • +
  • SetVerbose +[string verbosity=""]Change the level of output verbosity. Verbose messages will print all +of the details of what is happening to the screen. Minimal messages +will only briefly state the process being run. Verbose messages are +recommended if you're in interactive analysis mode. When no arguments +are supplied, action will toggle between NORMAL and ON.Levels: SILENT, NORMAL, ON, DETAILS, DEBUG
  • +
  • TestDominant +[string fname="dom-test.dat"]
  • +
  • VERBOSE +[string verbosity=""]
  • +
+  + +  +

Save Load Actions

+
    +
  • + LoadPopulation + <cString fname> [int update=-1] [int cellid_offset=0] [int lineage_offset=0] [bool load_groups=0] [bool load_birth_cells=0] [bool load_avatars=0] [bool load_rebirth] +

    +

    + Sets up a population based on a save file such as written out by + SavePopulation. It is also possible to append a history file to the + save file, in order to preserve the history of a previous run.
    + update allows user to set the current update number to a new value
    + load_groups allows users to load population files containing individual + group ids (opinions) and forager types (aka saved populations with save_groups = 1)
    + load_birth_cells allows users to drop each org into it's original birth cell. This + can be important for populations in spatial environments where state information + would have been collected as the org moved around the world.
    + e.g to load a population with birth cells and group ids, but without cell, lineage, or update offsets:
    + i LoadPopulation -1 0 0 1 1 0
    + load_rebirth will override load_groups, load_birth_cells, load avatars and inject orgs into their saved birth cells, + put avatars in their birth cells (if avatars are on), assign parent's merit to org (if inherit merit is on) and assign the + parent's forage target if the parent was a 'teacher'
    + i LoadPopulation -1 0 0 0 0 0 1
    +

    +
  • + +
  • SaveFlameData +[string filename="flame"]
  • +
  • SavePopulation +[string filename="detail"] [boolean save_historic=1] [boolean save_groups=0] [boolean save_avatars=0] [boolean save_rebirth=0] Save the genotypes and lots of statistics about the population to the +file specified; if no filename is given, use the name +detail-update.pop. As with clones, the update number +allows a single event to produce many detail files. The details are used +to collect crossection data about the population. +The filename is a string that is used to prefix the update number and file extension, e.g. detail-100.spop. +The save_historic option determines whether the action saves the full history for the current population. + save_groups will append data on current group ids, current forage targets + and the cell orgs were born into for each occurence of each genotype + Using save_rebirth will save additional information about the birth of the organism which + would be required to 'repeat' the birth of the organism as if it was still in the population (for + behavioral trials, etc): + parent_ft, parent is teacher, parent merit (out to 4 dec places) + Using save_rebirth will save all possible columns (i.e. will save all save_groups + all save_avatars data even if + those flags are off). +Save canvas [deprecated] will save information about the canvas location, birth location, and canvas number used by the orgs. If save_canvas is true, save_avatars will be set to false, save_groups will be set to true, and save_rebirth will be set to true. +
  • +
+  +

Creating an Action

+The action source code is contained in the source/action directory. +Each of the individual action categories has its own source code files (e.g. Landcape Actions are located in the LandscapeActions files). + +Each action is derrived from the cAction class. Briefly, to get an action to work you must create a child class that has a Process and GetDescription function defined as well as a constructor. You must also register this new class with the action library. + +So, with that quick review of what must be done, here is a step by step guide to creating an action: +
    +
  1. Identify which of the action categories your action should be assigned to. There are six different action categories described above. Each category has a similar means of creating a new action, but do note that some action commands are generated via macros defined at the top of the files. For instance, in the PrintActions file, you will notice a number of STATS_OUT_FILE macros being used to generate rather repetitively coded standard output files.
  2. +
  3. Create a new class in the file that follows proper naming conventions. Any class should begin with "cAction" and be followed by the name of the action command you will register with the library. For instance, if we were to create a new command "MyAction", we'd name the class cActionMyAction. Below is a stub for this new action class: +
    class cActionMyAction : public cAction
    +{
    +	private:
    +		// Private data members for this action
    +	public:
    +		cActionMyAction(cWorld* world, const cString& args) : cAction(world, args) { ; }
    +
    +		static const cString GetDescription() { return "Arguments: My Arguments"; }
    +
    +		void Process(cAvidaContext& ctx)
    +		{
    +			//Perform whatever processing is needed when the action is triggered.
    +		}
    +};
    +
  4. +
  5. Define the private data members, constructor, description string in GetDescription, and the Process function. Any arguments that you specify after the action name in the events configuration will be passed to your new class via the args argument in the constructor. (If you want more documentation for your actions than just the arguments, see the final step in this list.
  6. +
  7. Register the new action with the action library. At the bottom of each action definitions file, there are the commands that register the individual actions with the action library. In the PrintActions.cc file, for instance, this function is called RegisterPrintActions.To register our example action "MyAction", we'd write: +
    action_lib->Register<cActionMyAction>("MyAction");
  8. +
  9. Test your action.
  10. +
  11. Add a ==== Action action name ==== line in +source/utils/make_actions_html/actions_source_info file
  12. +
\ No newline at end of file diff --git a/docs/documentation/LookSensor.md b/docs/documentation/LookSensor.md new file mode 100644 index 0000000..a59cbb3 --- /dev/null +++ b/docs/documentation/LookSensor.md @@ -0,0 +1,82 @@ +INPUTS READ +Register Functions: + 1st register == habitat type sought + 2nd register == travel/sight distance sought + 3rd register == type of search + 4th register == resource/org id sought + +Habitat + 0 == food + 1 == hills + 2 == walls + 3 == hidden resources (hidden from a distance) + 4 == unhidden dens + -2 == organisms + fail if == 3 (hidden nests) + + -defaults dependent on organisms type + -for pred, default habitat == -2 if invalid habitat input + -for prey, default habitat == 0 if invalid habitat input + +Distance + -default to 1 if low invalid number (aka negative) input + -default to half-log-axis-of-world if high number > half-long-axis + +Search Type + -behavior dependent on habitat used + -if habitat == 0 or 1 or 2 or 4: + 0 = look for closest edible res, closest hill/wall, or closest den (values >=1) + 1 = count # edible cells/walls/hills across entire distance used (values >=1) + -1 = total value of resources of habitat used in cells across entire distance used + + -if habitat == -2: + 0 = closest any org + 1 = closest predator + 2 = count predators + -1 = closest prey + -2 = count prey + + -default to 0 (closest) if invalid input + +ID + -find instances of resource with specified resource or org id + -when searching for a specific organism, search type is ignored + -when searching for a valid specific resource (food/hill/wall/den), the actual habitat type of that resource will be used instead of the input habitat type (if there is a mismatch) + + -default to -1 (no specific target / evaluate all instances of habitat sought) if invalid input + + +  +OUTPUTS WRITTEN +Register Functions: + 1st register == habitat used + 2nd register == travel/sight distance used + 3rd register == search type used + 4th register == resource / org id used + 5th register == count seen + 6th register == values seen + 7th register == id seen + 8th register == org forage target seen + +ITEM NOT SEEN (default register return values): + 1st register == habitat used + 2nd register == -1 + 3rd register == search type used + 4th register == resource / org id used + 5th register == 0 + 6th register == -9 + 7th register == -9 + 8th register == -9 + +ITEM SEEN (overwriting/adding to defaults): + 2nd register == distance used or distance to first object matching search and habitat type + 5th register == count of organism or resource/hill/wall/den cells with value >=1 + -will be 1 if search type specified find nearest + -will be 1 if looking for (and found) specific organism + 6th register == org current bonus for first organism (of correct type) seen + or == summed value of all cells containing resource type searched for + 7th register == group id for first organism (of correct type) seen + or == resource id of first resource of type searched for + 8th register == forage target for first organism (of correct type) seen + + diff --git a/docs/documentation/Mutation-settings.md b/docs/documentation/Mutation-settings.md new file mode 100644 index 0000000..5e6e484 --- /dev/null +++ b/docs/documentation/Mutation-settings.md @@ -0,0 +1,23 @@ +

These settings control how and when mutations occur in organisms. The array of options is dizzying, but only the most commonly used are detailed here. Except that POINT_MUT_PROB isn't actually commonly used.

+ + + + + + + + + + + + + + + + + + + +
POINT_MUT_PROBPoint mutations (sometimes referred to as "cosmic ray" mutations) occur every update; the rate set here is a probability for each site that it will be mutated each update. In other words, this should be a very low value if it is turned on at all. If a mutation occurs, that site is replaced with a random instruction. In practice this also slows Avida down if it is non-zero because it requires so many random numbers to be tested every update.
COPY_MUT_PROBThe copy mutation probability is tested each time an organism copies a single instruction. If a mutation occurs, a random instruction is copied to the destination. In practice this is the most common type of mutations that we use in most of our experiments. The default value is 0.0075, but this is actually higher than you want to use; it is designed to produce pretty results when showing off the viewer. The value we commonly use for our experiments is 0.0025.
DIV_INS_PROB
DIV_DEL_PROB
These probabilities are tested once per gestation cycle (when an organism is first born) at each position where an instruction could be inserted or deleted, respectively. Each of these mutations change the genome length. Deletions just remove an instruction while insertions add a new, random instruction at the position tested. Multiple insertions and deletions are possible each generation. By default these mutations are turned off.
DIVIDE_MUT_PROB
DIVIDE_INS_PROB
DIVIDE_DEL_PROB
Divide mutation probabilities are tested when an organism is being divided off from its parent. If one of these mutations occurs, a random site is picked for it within the genome. At most one divide mutation of each type is possible during a single divide. By default, DIVIDE_MUT_PROB is turned off, and both DIVIDE_INS_PROB and DIVIDE_DEL_PROB are set to 0.05, which is a value we often use in our experiments. If you want your organisms never to change in length, obviously, you should turn these insertion and deletion mutations off! (This is not the only thing you need to do; see Fixed-Length Organisms.)
+ +See the avida.cfg file itself for more mutation settings (these are all off by default): COPY_INS_PROB, COPY_DEL_PROB, COPY_UNIFORM_PROB, COPY_SLIP_PROB, DIV_MUT_PROB, DIV_UNIFORM_PROB, DIVIDE_UNIFORM_PROB, DIVIDE_SLIP_PROB, DIVIDE_POISSON_MUT_MEAN, DIVIDE_POISSON_INS_MEAN, DIVIDE_POISSON_DEL_MEAN, DIVIDE_POISSON_SLIP_MEAN, INJECT_INS_PROB, INJECT_DEL_PROB, INJECT_MUT_PROB, SLIP_FILL_MODE, SLIP_COPY_MODE, PARENT_MUT_PROB, SPECIAL_MUT_LINE, META_COPY_MUT, META_STD_DEV, and MUT_RATE_SOURCE. Whew. diff --git a/docs/documentation/Mutations-reversion-settings.md b/docs/documentation/Mutations-reversion-settings.md new file mode 100644 index 0000000..287b3eb --- /dev/null +++ b/docs/documentation/Mutations-reversion-settings.md @@ -0,0 +1,17 @@ +

This section covers tests that are (mostly) very CPU intensive, but allow for Avida experiments that would not be possible in any other system. Basically, each time a mutation occurs, we can run the resulting organism in a test CPU, and determine if that effect of the mutation was lethal, detrimental, neutral, or beneficial. This section allows us to act on this. (Note that as soon as anything here is turned on, the mutations need to be tested. Turning multiple settings on will not cause additional speed decrease)

+ + + + + + + + + + + + + + + +
REVERT_FATAL
REVERT_DETRIMENTAL
REVERT_NEUTRAL
REVERT_BENEFICIAL
When a mutation occurs of the specified type, the number listed next to that entry is the probability that the mutation will be reverted. That is, the child organism's genome will be restored as if the mutation had never occurred. This allows us both to manually manipulate the abundance of certain mutation types, or to entirely eliminate them.
STERILIZE_FATAL
STERILIZE_DETRIMENTAL
STERILIZE_NEUTRAL
STERILIZE_BENEFICIAL
The sterilize options work similarly to revert; the difference being that an organism never has its genome restored. Instead, if the selected mutation category occurs, the child is sterilized so that it still takes up space, but can never produce an offspring of its own.
STERILIZE_UNSTABLEIf this toggle is set, organisms must be able to produce exact copies of themselves or else they are sterilized and cannot produce any offspring. An organism that naturally (without any external effects) produces an inexact copy of itself is said to have implicit mutations. If this flag is set, explicit mutations (as described in the mutations section above) can still occur. This particular setting does not seem to be terribly CPU intensive. You must turn this setting on to ensure fixed-length organisms.
diff --git a/docs/documentation/New-user-information.mediawiki b/docs/documentation/New-user-information.mediawiki new file mode 100644 index 0000000..a44d73e --- /dev/null +++ b/docs/documentation/New-user-information.mediawiki @@ -0,0 +1,50 @@ +== Congratulations, you downloaded Avida! DON'T PANIC! == +Next question, how do you run it? + +Like the rest of this wiki, the page is under construction. Please bear with us as we continue to expand this section. + +===Purpose:=== +To help make Avida available to new users without an in-person Β tutorial of what to do and how to do it. + +Avida in its current state runs from the command line on Macs and LinuxΒ distributions. If you don't know how to use the command line here are a couple of tutorials you can use to get familiar: + +Mac users: +* http://osxdaily.com/2007/02/07/basic-command-line-utilities-tips-commands/ +* http://smokingapples.com/software/tutorials/mac-terminal-tips/ + +Linux users: +* http://freeengineer.org/learnUNIXin10minutes.html + +Back to Avida. Assuming you downoaded a stable branch and not a developmentΒ one, using your terminal, locate the directory(folder) you put Avida in. + +'''To run''' just plain Avida type: ./avida +To quit Avida use: ctrl-c +To run Avida with the viewer type (tab-completion, its useful): ./avida-viewer +To quit Avida from the viewer use: q + +If you are using the viewer and want information on all the commands head over toΒ Avida-Viewer. + +===Configuration Files=== + +Now that you have run Avida, lets look at some of the other files included with the program. (Non command line users, the command to look at the files in the directory is: ls ) The following files should be present in the directory: + +* analyze.cfg +* avida.cfg +* environment.cfg +* events.cfg +* instset-heads.cfg +* instset-heads-sex.cfg +* instset-transsmt.cfg +* instset-transsmt.cfg +* default-heads.org +* default-heads-sex.org +* default-transsmt.org + +Lets break that down now. Default Avida runs use: avida.cfg, environment.cfg, events.cfg, instset-heads.cfg and default-heads.org. The other files are for special cases such as sexual reproduction and other things this writer does not understand. + +===avida.cfg:=== + +This file is really really big. Don't let it scare you. Most of it you can ignore to start. There are a few things you might want to look at. Open the file with your favorite (or your UNIX guru's favorite) text editor from the command line (nano, emacs, vi) to be hip or be a square and use a GUI like TextEdit, TextWrangler, or gedit.Β Β Back to things you can change in avida.cfg. There are three sections Topology, Mutation and Reproduction Group. Each section is marked off by ###name###. + +Topology has 3 items of interest to new users: WORLD_X, WORLD_Y & WORLD_GEOMETRY. X & Y control the size of world, and geometry controls how the grid is set up (torodial, bounded, etc). World size inevitably limits the population size while the geometry effects the placement of new offspring. +Mutation has many items of interest to new users. One of the first things to try changing in this section is the mutation rate, per copy. The default is set to 0.0075 mutations per instruction written during replication. This is much higher than most researchers use. Many researchers (that I know) 0.0025 for this setting.Β If you are feeling adventurous you can change the type of mutations ( insertion, deletion, slip etc). Refer to the Mutation Settings for more information/ideas. diff --git a/docs/documentation/Overview.mediawiki b/docs/documentation/Overview.mediawiki new file mode 100644 index 0000000..5078472 --- /dev/null +++ b/docs/documentation/Overview.mediawiki @@ -0,0 +1,5 @@ +Avida is a software platform for experiments with self-replicating and evolving computer programs. It provides detailed control over experimental settings and protocols, a large array of measurement tools, and sophisticated methods to analyze and post-process experimental data. + +In Avida, each digital organism is a self-contained computing automaton that has the ability to construct new automata. The organism is responsible for building the genome (computer program) that will control its offspring automaton and handing that genome to the Avida world. Avida will then construct virtual hardware for the genome to be run on and determine how this new organism should be placed into the population. In a typical Avida experiment, a successful organism attempts to make an identical copy of its own genome, and Avida randomly places that copy into the population, typically by replacing another member of the population. + +In principle, the only assumption made about these self-replicating automata in the core Avida software is that their initial state can be described by a string of symbols (their genome) and that it is possible through processing these symbols to autonomously produce offspring organisms. However, in practice our work has focused on automata with a simple [http://en.wikipedia.org/wiki/Von_Neumann_architecture von Neumann architecture] that operate on an assembly-like language inspired by the Tierra system. Future research projects will likely have us implement additional organism instantiations to allow us to explore additional biological questions. diff --git a/docs/documentation/PrintData-Options.md b/docs/documentation/PrintData-Options.md new file mode 100644 index 0000000..02c3158 --- /dev/null +++ b/docs/documentation/PrintData-Options.md @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeywordDescription
updateCurrent Update
sub_updateInstructions executed within update
generationAverage Generation in Population
entropyGenotype Entropy (Diversity)
species_entropySpecies Entropy (Diversity)
energyAverage Inferiority (Energy)
dom_meritAve Merit of Dominant Genotype
dom_gestAve Gestation Time of Dominant Genotype
dom_fitnessAve Fitness of Dominant Genotype
dom_reproAve Repro-Rate of Dominant Genotype
dom_lengthGenome Length of Dominant Genotype
dom_copy_lengthCopied Length of Dominant Genotype
dom_exe_lengthExecuted Length of Dominant Genotype
dom_idID of Dominant Genotype
dom_nameName of Dominant Genotype
dom_birthsBirth Count of Dominant Genotype
dom_breed_trueBreed-True Count of Dominant Genotype
dom_breed_inBreed-In Count of Dominant Genotype
dom_breed_outBreed-Out Count of Dominant Genotype
dom_num_cpusAbundance of Dominant Genotype
dom_depthTree Depth of Dominant Genotype
dom_sequenceSequence of Dominant Genotype
num_birthsCount of Births in Population
num_deathsCount of Deaths in Population
breed_inCount of Non-Breed-True Births
breed_trueCount of Breed-True Births
bred_trueCount of Organisms that have Bred True
num_cpusCount of Organisms in Population
num_genotypesCount of Genotypes in Population
num_thresholdCount of Threshold Genotypes
num_speciesCount of Species in Population
thresh_speciesCount of Threshold Species
num_lineagesCount of Lineages in Population
num_parasitesCount of Parasites in Population
num_no_birthCount of Childless Organisms
tot_cpusTotal Organisms ever in Population
tot_genotypesTotal Genotypes ever in Population
tot_thresholdTotal Threshold Genotypes Ever
tot_speciesTotal Species ever in Population
tot_lineagesTotal Lineages ever in Population
ave_repro_rateAverage Repro-Rate (1 / Gestation)
ave_meritAverage Merit
ave_ageAverage Age
ave_memoryAverage Memory Used
ave_neutralAverage Neutral Metric
ave_lineageAverage Lineage Label
ave_gestAverage Gestation Time
ave_fitnessAverage Fitness
ave_gen_ageAverage Genotype Age
ave_lengthAverage Genome Length
ave_copy_lengthAverage Copied Length
ave_exe_lengthAverage Executed Length
ave_thresh_ageAverage Threshold Genotype Age
ave_species_ageAverage Species Age
max_fitnessMaximum Fitness in Population
max_meritMaximum Merit in Population
diff --git a/docs/documentation/Quirks.md b/docs/documentation/Quirks.md new file mode 100644 index 0000000..da0504d --- /dev/null +++ b/docs/documentation/Quirks.md @@ -0,0 +1,9 @@ +This page is a list of random trivia that you probably wish you would have known *before* your experiments failed for an obscure reason: + +* Printing genomes during a run changes the outcome of the run. Printing genomes passes orgs through the test cpu. The test cpu process pulls random numbers from the context. Thus, a run cannot be repeated if events calling print genomes are introduced, removed, or otherwise changed. +* The ZeroMutations action does not work on update 0. It gets overridden by the configs. It also does not take effect immediately. Or rather, it immediately sets all mutation rates to zero -- but these can only take effect when the organism actually checks them; in many cases, this is only when an organism divides (see [Mutations Settings](Mutations-Settings). Technically you won't have a 0 mutation rate until all the currently-living organisms have been replaced. +* The default behavior of BIRTH_METHOD=3 (replace empty local cells) is to replace the parent if no cells are empty. Β (Generally, if you wish to allow only empty cells, you must also set ALLOW_PARENT to 0. However, this does not work for BIRTH_METHOD=3 yet.) +* The default behavior for what happens when demes divide (DEMES_DIVIDE_METHOD=0) is for *both* the source and target deme to be replaced. +* Selecting to leave the state of the mother untouched (DIVIDE_METHOD=0) in fact only leaves part of the mother's state untouched. Specifically, it leaves the pointers and register values intact. Almost everything else is reset, though. +* If you have a limited spatial resource with no diffusion that is inflowing on a part of the grid with no organisms (an empty deme for example), it's quantity of resource in the environment doesn't get reported, despite the rate of inflow. (AWC -- 3/29/12) +* When offspring are allocated, their genomes are initialized to be entirely nop-A instructions. As a result, the count of nop-A across all genomes does not actually reflect the frequency with which nop-A is being used, because it includes these placeholder nop-As from offspring that are in the process of being created. \ No newline at end of file diff --git a/docs/documentation/Reproduction-settings.md b/docs/documentation/Reproduction-settings.md new file mode 100644 index 0000000..f3504c6 --- /dev/null +++ b/docs/documentation/Reproduction-settings.md @@ -0,0 +1,28 @@ +These settings control how creatures are born and die in Avida. + + + + + + + + + + + + + + + + + + + + + + + + +
BIRTH_METHODThe birth method sets how the placement of a child organism is determined. Currently, there are six ways of doing this -- the first four (0-3) are all grid-based (offspring are only placed in the immediate neighborhood), and the last two (4-5) assume a well-stirred population. In all non-random methods, empty sites are preferred over replacing a living organism. See the avida.cfg file itself for details.
DEATH_METHOD
AGE_LIMIT
By default, replacement is the only way for an organism to die in Avida. However, if a death method is set, organisms will die of old age. In method one, organisms will die when they reach the user-specified age limit. In method 2, the age limit is a multiple of their length, so larger organisms can live longer.
ALLOC_METHODDuring the replication process in the default virtual CPU, parent organisms must allocate memory space for their child-to-be. Before the child is copied into this new memory, it must have an initial value. Setting the alloc method to zero sets this memory to a default instruction (typical nop-A). Mode 1 leaves it uninitialized (and hence keeps the contents of the last organism that inhabited that space; if only a partial copy occurs, the child is a hybrid if the parent and the dead organism, hence the name necrophilia). Mode 2 just randomizes each instruction. This means that the organism will behave unpredictably if the uninitialized code is executed.
DIVIDE_METHODWhen a divide occurs, does the parent divide into two children, or else do we have a distinct parent and child? The latter method will allow more age structure in a population where an organism may behave differently when it produces its second or later offspring.
GENERATION_INC_METHODThe generation of an organism is the number of organisms in the chain between it and the original ancestor. Thus, the generation of a population can be calculated as the average generation of the individual organisms. When a divide occurs, the child always receives a generation one higher than the parent, but what should happen to the generation of the parent itself? In general, this should be set the same as divide method.
+ +See the avida.cfg file for further settings: DIVIDE_FAILURE_RESETS, PREFER_EMPTY, ALLOW_PARENT, DISPERSAL_RATE, DEATH_PROB, AGE_LIMIT, AGE_DEVIATION, EPIGENETIC_METHOD, RESET_INPUTS_ON_DIVIDE, INHERIT_MERIT, and INHERIT_MULTITHREAD. diff --git a/docs/documentation/Resource-hoarding-settings.md b/docs/documentation/Resource-hoarding-settings.md new file mode 100644 index 0000000..09abc9e --- /dev/null +++ b/docs/documentation/Resource-hoarding-settings.md @@ -0,0 +1,5 @@ +These settings control internal resources for organisms: how much can be collected at once, limitations on the amount that can be stored, how the internal resources are used to acquire task rewards, and the internal resource state of new organisms. Details are available in the avida.cfg file itself. + +For more information on resource uptake, see Internal Resources: an explanation and guide to use. + +See avida.cfg for these settings: USE_RESOURCE_BINS, ABSORB_RESOURCE_FRACTION, MULTI_ABSORB_TYPE, MAX_TOTAL_STORED, USE_STORED_FRACTION, ENV_FRACTION_THRESHOLD, RETURN_STORED_ON_DEATH, SPLIT_ON_DIVIDE, COLLECT_SPECIFIC_RESOURCE, RESOURCE_GIVEN_ON_INJECT, and RESOURCE_GIVEN_AT_BIRTH. diff --git a/docs/documentation/Sample-analyze-programs.mediawiki b/docs/documentation/Sample-analyze-programs.mediawiki new file mode 100644 index 0000000..e8d4699 --- /dev/null +++ b/docs/documentation/Sample-analyze-programs.mediawiki @@ -0,0 +1,8 @@ +Example analyze programs, with explanations. + +* [[Analyze Mode : Working with Batches|Working With Batches]] +* [[Analyze Mode : Testing a Genome Sequence|Testing a Genome Sequence]] +* [[Analyze Mode : Using Variables|Using Variables]] +* [[Analyze Mode : Finding Lineages|Finding Lineages]] +* [[Analyze Mode : Building Your Own Commands|Building Your Own Commands]] +* [[Analyze Mode : Try It Yourself Exercises|Try It Yourself Exercises]] diff --git a/docs/documentation/Setting-up-fixed-length-organisms.mediawiki b/docs/documentation/Setting-up-fixed-length-organisms.mediawiki new file mode 100644 index 0000000..2330101 --- /dev/null +++ b/docs/documentation/Setting-up-fixed-length-organisms.mediawiki @@ -0,0 +1,21 @@ +In almost all of our experiments, organisms that are all the same length are easier to analyze. We are often willing to be a little less natural to be much more understandable! Here are the avida.cfg settings you will need to change from the default: + + + + + + + + + + +
DIVIDE_INS_PROB and DIVIDE_DEL_PROBInsertion and deletion mutations should be turned off; change these settings to 0.0.
OFFSPRING_SIZE_RANGEOffspring should be exactly the same size as their parents; change this setting to 1.0
+ +Although technically not necessary to keep organisms at a fixed length, there is one more option you probably want to change. One of the main reasons to use fixed length organism is to avoid having to calculate alignments -- you can just line the genomes up. Without the STERILIZE_UNSTABLE option, organisms may have bizarre implicit mutations which break the assumptions of this easy alignment. + + + + + + +
STERILIZE_UNSTABLESometimes organisms have messed-up reproduction cycles that actually causes them to grow or shrink by copying an instruction multiple times or skipping over it entirely. These are not insertion and deletion caused by the process of division, but inherent in the organism's copy loop, so they are not turned off when you turn off DIVIDE_INS_PROB and DIVIDE_DEL_PROB. Avida can, however, check for organisms that are not able to make perfect copies of themselves (i.e. before mutations are imposed) and sterilize them so they do not produce offspring, and this is the setting that turns that checking on. Change it to 1, i.e. "yes".
diff --git a/docs/documentation/Settings-for-genealogy-info-in-the-test-cpu.md b/docs/documentation/Settings-for-genealogy-info-in-the-test-cpu.md new file mode 100644 index 0000000..1df9a6f --- /dev/null +++ b/docs/documentation/Settings-for-genealogy-info-in-the-test-cpu.md @@ -0,0 +1,13 @@ +

These settings control how Avida monitors and deals with genotypes in the Test CPU.

+ + + + + + + + + + + +
THRESHOLDFor some statistics, we only want to measure organisms that we are sure are alive, but its not worth taking the time to run them all in isolation, without outside effect (and in some eco-system situations that isn't even possible!). For these purposes, we call a genotype "threshold" if there have ever been more than a certain number of organisms of that genotype. A higher number here ensures a greater probability that the organisms are indeed "alive".
TEST_CPU_TIME_MODMany of our analysis methods require that we be able to run organisms in isolation. Unfortunately, some of these organisms we test might be non-viable. At some point, we have to give up the test and label it as non-viable, but we can't give up too soon or else we might miss a viable, though slow, replicator. This setting is multiplied by the length of the organism's genome in order to determine how many CPU-cycles to run the organism for. A setting of 20 effectively means that the average instruction must be executed twenty times before we give up. In practice, most organisms have an efficiency here of about 5, so 20 works well, but for accurate tests on some pathological organisms, we will be required to raise this number.
diff --git a/docs/documentation/Text-Viewer.mediawiki b/docs/documentation/Text-Viewer.mediawiki new file mode 100644 index 0000000..6cdfc4d --- /dev/null +++ b/docs/documentation/Text-Viewer.mediawiki @@ -0,0 +1,133 @@ +

The viewer has a number of one character commands that can be typed while the program is running. Often the most common commands are shown on the screen between square brackets (for example [Q]). A list of the most common commands:

+
    +
  • Q-- Quit the program
  • +
  • M-- Switch to the map screen which shows a map of the population's fitness, merit, etc.
  • +
  • S-- Switch to the statistics screen which shows information about the population and the dominate organism
  • +
  • A-- Switch to the analyze screen
  • +
  • Z-- Switch to the zoom screen which shows detail about one organism
  • +
  • H-- Switch to the histogram screen which shows the abundance of genotypes/species in the population
  • +
  • E-- Switch to the environment screen which shows the resources and reactions in the world
  • +
  • O-- Switch to the options screen which shows current settings
  • +
  • B-- Blank the screen
  • +
  • CTRL-L-- Redraw the screen
  • +
  • C-- Choose a different CPU to examine in detail
  • +
  • X-- Extract organism and write a file of that organism
  • +
  • P-- Pause/Unpause a run
  • +
  • N-- Step forward one update
  • +
  • < and >-- Move to a different page in a given screen
  • +
  • arrow keys -- let you move around a map
  • +
+

Available key strokes are shown on the screen (note that the number of keys at the top screen will vary based on the width of the screen):

+

Map Screen shows each organism as colored charecter

+

Draft Documentation based on: "Avida User's Manual" C. Ofria, C.T. Brown, and C. Adami in Introduction to Artificial Life by C. Adami:

+

For the most part the text interface to Avida is simple and straightforward to use; most of the options available are listed on the screen. For example at all times there is a menu bar at the top of the screen which lists the current update and the keys to press to go to any of the most used Avida screens. These sections further explain each screen:

+

The Stats Screen

+

This screen displays all of the current statistics about the ongoing run. A typical snapshot of the screen looks like this:

+

Map Screen shows each organism as colored charecter

+

Starting at the upper left column of the screen the first block of statistics describes the current state of the soup. These statistics are defined as follows:

+
    +
  • Tot Births indicates the number of organisms which have been born during the past update.
  • +
  • Breed True is the total number of organisms currently in the soup which are exact copies of their parents
  • +
  • Parasites is the total number of organisms which have displayed parasitic behavior (i.e. the number which have executed instructions outside of their own memory).
  • +
  • Energy is the log of the ratio between the fitness of the dominant genotype and the average fitness in the soup.
  • +
  • Max Fitness is the highest fitness which can be found in the soup. During equilibrium this will usually be approximately the same as the fitness of the dominant genotype.
  • +
  • Max Merit is the highest merit which can be found in the soup. Since this gives no indication as to the replication abilities of this organism it is typically not a very revealing quantity.
  • +
+

To the right of the soup status column we have some information about the dominant genotype. This section simply lists the name of this genotype, its ID, its Species ID and its age (how many updates it has existed for). The first three of these statistics are purely for identification purposes.

+

On the right side of the screen more statistics are given for a number of common measurements on the dominant genotype as well as the average across all genotypes.

+

In the middle left side of the screen we have information about the various taxonomic levels in Avida; we give the current abundance of each in the Current column, the total number of each that have existed over the entire run in the Total column, the average number of updates each have existed in the Ave Age column and finally the entropy of each in the Entropy column.

+

Finally along the bottom of this screen we list the total number of organisms which have completed each of the assortment of tasks available in Avida. These numbers reflect only those organisms which have actually finished the task so even if every organism in the soup is capable of completing a task not all of them may be listed because the newborns would not have finished it for the first time.

+

The Histogram Screen

+

This screen is a histogram of the most abundant genotypes or species (use '

+

Histogram Screen shows a bar graph where showing the abundance of the 11 most common organisms

+

The first number here represents the fitness of the organism; this is the relative replication rate as compared to the other organisms in the population.

+

Next comes the name of the genotype (For example 096-aaacf). This is an identifier for the genotype and the name of the file it will be saved under if it is extracted. The number portion (before the dash) of the name is the length of the code for that genotype and the letter sequence after the dash gives a unique identifier for it. These are never repeated throughout a single run.

+

The repeated '#' after the name is the actual histogram; the number of characters which appear here is the relative current abundance of the genotype This allows quick recognition of which genotypes are dominant in the soup.

+

Finally each line ends with a number which is the exact abundance of organisms currently within this genotype.

+

If species information is being recorded (i.e. the SPECIES_RECORDING flag in the avida.cfg file is set to 1 or 2) the Genotype Abundance and Species Abundance Views might look like:

+

Histogram Screen shows a bar graph where showing the abundance of the 11 most common organisms

+

Notice that the '#' have been replaced with letters that represent the species of this genotype so any two lines with the same letter are of the same species.

+

Histogram Screen shows a bar graph where showing the abundance of the 11 most common species

+

The Environment Screen

+

This screen shows reactions and resources that are defined in the environment.cfg file. An example of the Reaction View:

+

Histogram Screen shows a bar graph where showing the abundance of the 11 most common organisms

+

One the left side of the main screen is a list of all the defined reactions. To the right is the number of organisms that have completed this reaction. Using the up and down arrow keys one of the reactions is highlighted. If there are any resources associated with the selected reaction they are displayed in the bottom pane.

+

The Resource View is similar:

+

Histogram Screen shows a bar graph where showing the abundance of the 11 most common organisms

+

In this case the resource names are shown with the inflow amount, outflow rate and total quantity of that resource in the environment. The reaction(s) associated with this resource are shown in the bottom pane.

+

The Options Screen

+

This screen lists all of the options which are both currently available and were used to initialize this run. A typical screen looks like:

+

+

The upper left corner of this screen gives information about the active genotype in the soup and the remainder of the upper portions of the screen list values from the avida.cfg file and what they were initialized to.

+

The lower part of the screen (within a box) shows the special options available to the user They are:

+

[H]istogram Screen: This will go to the histogram screen described above.

+

[B]lank Screen: This option will clear the screen making avida run marginally faster (since it will not be wasting much CPU time on the display).

+

[R]edraw Screen: If the screen gets garbled this will erase it and refresh all text which is supposed to appear.

+

[C]hoose New CPU: This option will put avida in map screen with the cursor on the screen Position the cursor over the CPU you would like to select and press enter. Additionally in the Windows version of avida the mouse can be used to select CPUs while in this screen. A single click highlights the CPU targeted and a double click selects it as the new active CPU and exits from this screen. The selected CPUs inner workings and genome can then be viewed in the Zoom screen (see below).

+

[E]xtract organism: This will save the genotype of the active organism (the one currently selected) to a file by the same name as the genotype An extracted organism will include all of its statistics as comments (gestation time fitness tasks completed etc) and can be loaded into another soup without modifying the file.

+

[P]ause: Freezes activity in the soup but still allows navigation through the interface and examination of the soup. Additionally many screens have additional options when the soup is paused.

+

[N]ext Update: When paused this will advance the soup a single update.

+

The Zoom Screen

+

This screen contains all of the information about the state of the active CPU has three views (CPU Stats Zoom, Component Zoom and Genotype Zoom). This screen is especially useful while avida is paused The space bar will cause the active organism to advance a single instruction and the return key will cause it to advance a full update In this way the execution of the organism can be fully examined.

+

CPU Stats Zoom View

+

Here is a typical screen shot:

+

Shows a screen with thirty or so variables and their values

+

The column on the left of the screen gives all of the current statistics for this CPU and the right of the screen contains information about the actual hardware in the CPU; the memory the stack the registers and the I/O buffers. The execution statistics recorded here are:

+
    +
  • GenotypID, Geno Name, SpeciesID: identifies the organism
  • +
  • Fitness: As described elsewhere fitness is the relative replication rate of this organism.
  • +
  • Gestation: This is the gestation time for the organism (the number of instructions it needs to execute in order to copy itself) If the organism has not copied itself a zero appears here.
  • +
  • Cur Merit: This is the merit which the organism is currently building during this gestation cycle Every time a new task is completed this value will increase appropriately When a divide occurs the current merit will be reset to its base value (typically the organism size)g and the value it was at before the divide will be used to determine how much CPU time it should get.
  • +
  • Flags: There are a number of flags within a CPU which can be set; a corresponding letter will appear in this field when this is the case The flags are A: Allocated (the organism has allocated memory for itself which it has not yet divided off) I: Injected (the organism was injected into the soup by the user) M: Mutated (an instruction has been struck by a point mutation) P: Parasite (the organism has executed code from within anothers memory) T: True Copy (the organism is an exact copy of its parent).
  • +
  • Location: The X/Y coordinate of the current organism
  • +
  • Facing or Executing: This attribute gives the direction in which the organism is pointed. Facing indicates that instructions which involve other organisms will use the organism at this X/Y coordinate while Executing means that the code in the specified organism is actually being run (parasitically) by this organism's CPU.
  • +
  • Age: The number of updates that this organism has lived.
  • +
  • Executed: The number of instructions this organism has executed since it was born.
  • +
  • Last Divide: The number of instructions this organism has executed since its last divide.
  • +
  • Offspring: The number of offspring which this organism has produced.
  • +
  • Thread: Current/Total threads
  • +
  • IP: Instruction pointer indicates the next site in the memory to be executed.
  • +
  • AX - CX: Content of the registers.
  • +
  • Stack: Content of the top element of the stack.
  • +
  • Memory: The current (and two following) instructions
  • +
+

Component Zoom View

+

Shows a screen with thirty or so variables and their values

+

This view consists of a number of panes that can be accessed by using the TAB key.

+

The top left pane shows the genome of the current organism. The number at the top box shows how many instructions are in the memory. The bottom box shows the individual instructions, if they are executate or were copied, and the location of the flow, write and read heads. Instructions can be edited here as well.

+

The top middle pane shows a miniature version of the map view around the current organism.

+

The bottom left pane shows the content of the registers, the Stack and the input values used by the organism.

+

The bottom right pane shows general information atou the organism

+

Genotype Zoom View

+

Shows a screen with thirty or so variables and their values

+ +

The Map Screen

+ +

The Map screen displays the spatial representation of the population of organisms in Avida. The grid itself is toroidal and typically will not fit entirely on the screen. You can use the arrow keys to adjust which part of the map appears on the screen. (On computers using a "curses" interface the arrow keys will often not function properly; instead, you can use the number keys 8, 2, 4 and 6 to move up, down, left and right respectively.) You reach the Map Screen by pressing the 'M' key.

+

Here is an example map screen (showing genotype view on a color terminal):

+

Map Screen shows each organism as colored character

+

Many different features can be displayed by the different map views. You can cycle through these views with the less-than and greater-than keys (< and >), as shown at the bottom-right of the map screen.

+

Genotype View: This view of displays the genotype of the organism at each location. Each organism is displayed as a hash mark ('#'); organisms with the same genotype have the same "color". (Hash marks might be bold; the bold version of a color represents a different genotype than the not-bold version. The bold and not-bold genotypes are not related in any particular way -- we're just using the bold versions as a way to get more "colors".)

+

As long as there are enough colors, each genotype has its own color, no matter how many or how few organisms have that genotype. When there are more genotypes than colors, the most abundant genotypes get their own colors, and all other genotypes are represented by a white not-bold hash mark (or by '+' if you cannot display color).Β  Which color is marking a genotype doesn't have any meaning at all.Β  (You can see the fitness, id, hash mark, and number of organisms for each of the most-abundant genotypes on the Histogram Screen, which you can reach by pressing the 'H' key.)

+

Breed True View: This view simply displays a bold or not-bold hash mark ('*' or '-' if you can't display colors) for each organism, indicating whether it is an exact copy of its mother (bold white hash mark, or '*') or not (normal white hash mark, or '-').

+

Parasite View: This view displays a bold or not-bold white hash mark ('*' or '-' if you can't display color) for each organism, indicating whether it is a parasite (bold white hash mark, or '*') or not (normal white hash mark, or '-').

+

Forager View: If you know what this view shows, please edit this page!

+

Avatar View: If you know what this view shows, please edit this page!

+

Territory View: If you know what this view shows, please edit this page!

+

Mutation View: This view displays a bold or not-bold white hash mark ('*' or '-' if you can't display color) for each organism, indicating whether it has been hit by mutations (bold white hash mark, or '*') or not (normal white hash mark, or '-').

+

Thread View: This view displays the number of the thread that each organism is currently executing. For runs where organisms have only one thread (which is typical), all the numbers will be 1.

+

Modified View: If you know what this view shows, please edit this page!

+

Lineage View: This view displays the lineage of the organism at each location; each color corresponds to a single lineage. (Presumably the choice of colors and what happens when there are more lineages than colors is very similar to the way colors are handled in Genotype View.)

+ +

The Histogram Screen

+ +

This screen is a histogram of the most abundant genotypes or species (use '

+

Histogram Screen shows a bar graph where showing the abundance of the 11 most common organisms

+

The first number here represents the fitness of the organism; this is the relative replication rate as compared to the other organisms in the population.

+

Next comes the name of the genotype (For example 096-aaacf) This is an identifier for the genotype and the name of the file it will be saved under if it is extracted The number portion (before the dash) of the name is the length of the code for that genotype and the letter sequence after the dash gives a unique identifier for it These are never repeated throughout a single run.

+

The repeated '#' after the name is the actual histogram; the number of characters which appear here is the relative current abundance of the genotype This allows quick recognition of which genotypes are dominant in the soup.

+

Finally each line ends with a number which is the exact abundance of organisms currently within this genotype.

+

If species information is being recorded (i.e. the SPECIES_RECORDING flag in the avida.cfg file is set to 1 or 2) the Genotype Abundance and Species Abundance Views might look like:

+

Histogram Screen shows a bar graph where showing the abundance of the 11 most common organisms

+

Notice that the '#' have been replaced with letters that represent the species of this genotype so any two lines with the same letter are of the same species.

+

Histogram Screen shows a bar graph where showing the abundance of the 11 most common species

\ No newline at end of file diff --git a/docs/documentation/Time-slicing-settings.md b/docs/documentation/Time-slicing-settings.md new file mode 100644 index 0000000..73e8df4 --- /dev/null +++ b/docs/documentation/Time-slicing-settings.md @@ -0,0 +1,27 @@ +

These settings describe exactly what an update is, and how CPU time is allocated to organisms during that update.

+ + + + + + + + + + + + + + + + + + + + + + + +
AVE_TIME_SLICEThis sets the average number of instructions an organism should execute each update. Organisms with a low merit will consistently obtain fewer, while organisms of a higher merit will receive more.
SLICING_METHODThis setting determines the method by which CPU time is handed out to the organisms. Method 0 ignores merit, and hands out time on the CPU evenly; each organism executes one instruction for the whole population before moving onto the second. Method 1 is probabilistic; each organism has a chance of executing the next instruction proportional to it merit. This method is slow due to the large number of random values that need to be obtained and evaluated (and it only gets slower as merits get higher). Method 2 is fully integrated; the organisms get CPU time proportional to their merit, but in a fixed, deterministic order.
BASE_MERIT_METHODThis setting determines the base value of an organism's merit. Merit is typically proportional to genome length otherwise there is a strong selective pressure for shorter genomes (shorter genome => less to copy => reduced copying time => replicative advantage). Unfortunately, organisms will cheat if merit is proportional to the full genome length -- they will add on unexecuted and uncopied code to their genomes creating a code bloat. This isn't the most elegant fix, but it works.
MAX_LABEL_EXE_SIZELabels are sequences of nop (no-operation) instructions used only to modify the behavior of other instructions. Quite often, an organism will have these labels in their genomes where the nops are used by another instruction, but never executed directly. To represent the executed length of an organism correctly, we need to somehow count these labels. Unfortunately, if we count the entire label, the organisms will again "cheat" artificially increasing their length by growing huge labels. This setting limits the number of nops that are counted as executed when a label is used.
MAX_CPU_THREADSDetermines the number of simultaneous processes that an organism can run. That is, basically, the number of things it can do at once. This setting is meaningless unless threads are supported in the virtual hardware and the instructions are available within the instruction set.
+ +See the avida.cfg file for more options: SLICING_BURST_SIZE, BASE_CONST_MERIT, MERIT_BONUS_INST, MERIT_BONUS_EFFECT, FITNESS_VALLEY, FITNESS_VALLEY_START, FITNESS_VALLEY_STOP, DEFAULT_BONUS, MERIT_DEFAULT_BONUS, MERIT_INC_APPLY_IMMEDIATE, TASK_REFRACTORY_PERIOD, FITNESS_METHOD, FITNESS_COEFF_1, FITNESS_COEFF_2, THREAD_SLICING_METHOD, NO_CPU_CYCLE_TIME, PRECALC_PHENOTYPE, FASTFORWARD_UPDATES, FASTFORWARD_NUM_ORGS, and GENOTYPE_PHENPLAST_CALC. diff --git a/docs/documentation/Topology-settings.md b/docs/documentation/Topology-settings.md new file mode 100644 index 0000000..d2fb7f3 --- /dev/null +++ b/docs/documentation/Topology-settings.md @@ -0,0 +1,12 @@ +This section covers all of the basic topology variables that describe the structure of the world. + + + + + + + + +
WORLD_X
WORLD_Y
The settings determine the size of the Avida grid that the organisms populate; the world consists of WORLD_X * WORLD_Y cells. In mass action mode the shape of the grid is not relevant, only the number of organisms that are in it.
+ +See the avida.cfg file for more settings: WORLD_GEOMETRY, SCALE_FREE, SCALE_FREE_ALPHA, and SCALE_FREE_ZERO_APPEAL. diff --git a/docs/documentation/Using-mating-types-(separate-sexes).mediawiki b/docs/documentation/Using-mating-types-(separate-sexes).mediawiki new file mode 100644 index 0000000..f158d47 --- /dev/null +++ b/docs/documentation/Using-mating-types-(separate-sexes).mediawiki @@ -0,0 +1,66 @@ +

Using sexual reproduction with mating types

+

Although by default, reproduction in Avida is asexual, Avida can be configured to allow organisms to reproduce with sexual reproduction. By default, when sexual reproduction is turned on, any organism can mate with any other organism. However, Avida is also capable of sexual reproduction with two distinct mating types (e.g., males and females), mimicking the mating systems found in many biological organisms, in which only matings between opposite mating types are successful. (Note: this page is intended as an overview of how to implement these distinct mating types and their associated configuration options, not as an exhaustive guide to all of the other options involved in sexual reproduction in general).

+


First, you will need to turn on mating types in avida.cfg:

+

MATING_TYPES 1

+

However, this change by itself is not enough. You will also need to modify your instruction set so that the organisms can set their mating types, by adding the following two instructions to your instruction set:

+

INST set-mating-type-male
INST set-mating-type-female

+

Once an organism sets its mating type, it is irreversible -- repeated execution of a different set-mating-type-X instruction will fail. If you want your organisms to be able to change their mating type during their lifetime, you can add another instruction that lets them de-differentiate, after which they can re-set their mating type to something else:

+

INST set-mating-type-juvenile

+

Then, you also need to make sure that your organisms are using the proper instruction to divide, or else their mating types may not be checked properly. So you should replace the divide instruction in your instruction set (probably h-divide or divide-sex) with div-sex-mating-type.

+

While we're in the instruction set, you might want to consider adding instructions allowing organisms to conditionally execute instructions based on their phenotypic sex (otherwise, they have no real mechanism to detect what their phenotypic sex is):

+

INST if-mating-type-male
INST if-mating-type-female
INST if-mating-type-juvenile

+

Next, you'll need to modify your events file to make sure that the population is initialized with a male and a female organism. You can create a new default organism by modifying default-heads-sex.org (make two, say, default-heads-sex-male.org and default-heads-sex-female.org). Simple add a set-mating-type-male or set-mating-type-female instruction to the beginning of each .org file (you'll probably want it to be the first instruction that they execute, but it doesn't necessarily have to be). Then replace the original divide instruction with the div-sex-mating-type instruction.

+

Now, modify your events file to inject both organisms at the start of the run:

+

u begin Inject default-heads-sex-male.org 0
u begin Inject default-heads-sex-female.org 1

+

At this point, you should be able to get a run going, but read on for some further options and points to consider.

+

-------------------------------------------

+

What happens during sexual reproduction:

+

When an organism reproduces sexually, it needs to find a mate. When the first organism in the population successfully divides, its 'offspring' goes into what is called the birth chamber, rather than being placed into the population. This is sort of a waiting area in which organisms can find mates. When another organism divides, Avida checks the birth chamber to see if there are any 'offspring' waiting to find a mate that were generated by a parent of the opposite mating type. If so, then they recombine, and the sexual offspring are placed into the population. If not, then this organism's 'offspring' goes into the birth chamber to wait as well. Because of this waiting process, you can almost think of these 'offspring' as being more like sperm or eggs, that need to join up with a gamete of the opposite type before they can form a zygote together.

+

There are a few options regarding the birth chamber. First, you'll want to set its maximum size -- how many 'offspring' (or gametes) can be waiting in the birth chamber at any given time? The default is 3600, the same as the size of the default population. This can be changed in avida.cfg:

+

MAX_GLOBAL_BIRTH_CHAMBER_SIZE 3600

+

Another thing to consider regarding the birth chamber is how long 'offspring' or gametes can wait there before dying. The default setting for this parameter (MAX_BIRTH_WAIT_TIME) is -1, meaning there is no limit -- they will remain in the birth chamber indefinitely, until they get picked by a mate. You will almost certainly want to change this. For example:

+

MAX_BIRTH_WAIT_TIME 3

+

would tell Avida that an 'offspring' or gamete can wait for three updates to be chosen as a mate, but any gametes that are not picked as mates within three updates after they go into the birth chamber will die. In practice, three seems to give good results.

+

One final thing to consider is spatial organization. Currently, the birth chamber has no spatial organization to it; any organism can mate with any other organism regardless of their "physical" location in the population. Since mating has no spatial structure, you therefore may not want any spatial structure in your population at all. To do so, change:

+

BIRTH_METHOD 4

+

-------------------------------------------

+

Mate choice:

+

By default, organisms will choose mates randomly. However, organisms can choose mates based on various phenotypic attributes by executing instructions that confer certain mating preferences. To enable this, simply add one or more of the following instructions to the instruction set:

+

INST set-mate-preference-highest-merit
INST set-mate-preference-random
INST set-mate-preference-highest-display-a
INST set-mate-preference-highest-display-b

+

For example, suppose a female organism executes a set-mate-preference-highest-merit instruction, and then later divides. If there is more than one male 'offspring' (or sperm) waiting in the birth chamber when she divides, she will pick the one that came from a parent with the highest merit. Likewise, a female that has declared a preference for males with higher values of display A will select the one with the highest value of display A from among the available offspring of males in the birth chamber at the time of her divide.

+

But wait -- what are these displays? Organisms can develop displays by executing instructions, which you will have to add to the instruction set:

+

increment-mating-display-a
increment-mating-display-b
set-mating-display-a
set-mating-display-b

+

When an organism is born, its value for both display A and display B are both set to 0. Executing an increment-mating-display-A instruction adds 1 unit to its display. Using this method, an organism can only develop a large display by repeatedly executing this increment instruction. The set-mating-display-A and -B instructions, on the other hand, will copy the value of the ?BX? register (which register is used can be nop-modified) into its mating display. So using these instructions, organisms can develop exaggerated displays relatively quickly by using mathematical operations to generate a large value in their registers and then copying it to their displays.

+

Of course, in nature, organisms don't always perceive signals with 100% accuracy. Thus, in Avida, you can introduce noise into an organism's perception of other organisms' signals or phenotypic traits, using the NOISY_MATE_ASSESSMENT config option (0 = noise off [default]; 1 = noise on):

+

NOISY_MATE_ASSESSMENT 1

+

How much noise is introduced? When an organism assesses a phenotypic trait of a potential mate, the perceived value is drawn from a normal distribution with the mean at the actual value, and with a coefficient of variation of 0.1. This coefficient of variation can be changed with the MATE_ASSESSMENT_CV config option:

+

MATE_ASSESSMENT_CV 0.15

+

-------------------------------------------

+

Costs:

+

In nature, males and females of many animals can differ in certain traits because of sex-specific selective pressures. Avida can reflect this by implementing sex-specific costs for instructions. For example, in many animals, females invest more in reproduction. In Avida, we can make females pay extra CPU cycles to execute an instruction. This is an especially important consideration for the div-sex-mating-type instruction. Making females pay extra CPU cycles to complete division not only reflects the biological characteristics of many species, but also slows down female reproductive rates. As a result of males dividing more quickly than females (on average), the offspring of male organisms (i.e., sperm) will accumulate in the birth chamber. Females, then, will usually not be mate-limited, and will have more opportunities for mate choice -- again reflecting patterns that are often seen in nature. You can do this as follows, by modifying the div-sex-mating-types instruction in the instruction set file:

+

INST div-sex-mating-type:female_cost=50

+

This will require females to pay an extra 50 CPU cycles to complete their divide statements. Note that another work-around to forcing females to be the choosy sex is with the LEKKING option in avida.cfg. If you set its value to 1, all the offspring of male organisms will always go into the birth chamber -- in other words, males can never choose females as mates; females are always the 'choosers'.

+

Another important element is the cost of mate choice. In nature, mate choice can impose substantial costs on organisms. (For example, spending a lot of time searching for mates rather than mating with the first guy that comes along can put you at greater risk of being eaten by a predator.) You can force females who mate non-randomly to pay even greater CPU costs as follows:

+

INST div-sex-mating-type:female_cost=50:choosy_female_cost=50

+

In this setup, males will pay 1 CPU cycle for executing a div-sex-mating-type instruction. Randomly mating females will pay an additional 50 CPU cycles. Females who mate non-randomly (e.g., choose the male with the highest merit or highest display A) will pay another 50 on top of that (i.e., 1 + 50 [for being female] + 50 [for being choosy] = 101).

+


-------------------------------------------

+

Memory considerations:

+

Normally, Avida keeps a record of every genotype (i.e., genome sequence) that has ever existed in the population. This is very useful when you want to trace an organism's lineage back through its ancestors. However, when sexual reproduction is turned on (and especially when separate mating types are turned on), all that recombination generates much more diversity. This means that Avida can take up quite a bit of memory (and will probably crash if you're doing a long run), and will get slower and slower as the run progresses and there are more and more genotypes to keep track of.

+

If you don't need detailed information on organismal ancestry, you can turn off lineage tracking with the following config setting:

+

DISABLE_GENOTYPE_CLASSIFICATION 1

+


-------------------------------------------

+

Collecting data on mating types:

+

There are a variety of print actions that can be used to gather data on mating types and mate preferences as your population evolves:

+

PrintMatingTypeHistogram: This action will print the number of juvenile, female, and male organisms in the population at the current update

+

PrintMatingDisplayData: This action prints the average display values (display-A and display-B) of all of the juveniles, females, and males in the population at the current update

+

PrintFemaleMatePreferenceData: This action prints the number of females with each different type of mating preference at the current update

+

PrintBirthChamberMatingTypeHistogram: This action prints the number of "sperm" and "eggs" in the birth chamber at the current update

+

PrintSuccessfulMates: This action prints the genotypes and some useful phenotypic information (e.g., merit, mating types, displays, preferences) of the parents of all the successful matings that occurred during the current update

+

PrintBirthChamber: This action prints the genotypes and some useful phenotypic information (e.g., merit, mating types, displays, preferences) of the parents of all the "sperm" or "eggs" waiting in the birth chamber at the current update

+

(Note: by using PrintBirthChamber to print all the organisms currently waiting to be chosen as mates, and PrintSuccessfulMates to print all the organisms that were successfully chosen as mates, you can estimate sexual selection differentials.)

+

-------------------------------------------

+

Analyze Mode

+

There are a few phenotypic attributes that can be used with the DETAIL statement in analyze mode (pretty self-explanatory):

+

mating_type
mate_preference
mating_display_a
mating_display_b

+

Using these, you can take a genotype and run it through analyze mode to find out what mating type it develops as (useful if there are multiple set-mating-type-XXX instructions in a genome and it's hard to tell which one will be executed first), what kind of mate preference it will exhibit, how large its sexual displays are, etc.

+

 

diff --git a/docs/documentation/glossary/Glossary--Bitwise.md b/docs/documentation/glossary/Glossary--Bitwise.md new file mode 100644 index 0000000..e6be4b1 --- /dev/null +++ b/docs/documentation/glossary/Glossary--Bitwise.md @@ -0,0 +1,6 @@ + +Other Notation : Bitwise + +

Bitwise

+ +A bitwise operation is one in which each bit is treated independently of all the other bits in a number. Thus if a logical AND was performed between two bitstrings, the first bit of the first string would be ANDed to the first bit in the second string, the second bit to the second bit and so on. diff --git a/docs/documentation/glossary/Glossary--CPU-cycle.md b/docs/documentation/glossary/Glossary--CPU-cycle.md new file mode 100644 index 0000000..63d6386 --- /dev/null +++ b/docs/documentation/glossary/Glossary--CPU-cycle.md @@ -0,0 +1,6 @@ + +Other Notation : CPU-cycle + +

CPU-cycle

+ +A CPU-cycle is the amount of time it takes the CPU of an organism to execute a single instruction in its memory. CPU-cycles can be thought of as the primary resource in the avida system; more cycles per unit time allow a more rapid expression of the organism's genome. diff --git a/docs/documentation/glossary/Glossary--CPU.md b/docs/documentation/glossary/Glossary--CPU.md new file mode 100644 index 0000000..3c108e1 --- /dev/null +++ b/docs/documentation/glossary/Glossary--CPU.md @@ -0,0 +1,6 @@ + +CPU Components : CPU + +

CPU

+ +Each individual organism in an avida population has its own virtual central processing unit (CPU) that executes its genome. An avida CPU consists of a memory space with four heads pointing to specific locaitions in that memory, three registers, two stacks, and input and output buffers. diff --git a/docs/documentation/glossary/Glossary--Complement-Label.md b/docs/documentation/glossary/Glossary--Complement-Label.md new file mode 100644 index 0000000..b0a84f8 --- /dev/null +++ b/docs/documentation/glossary/Glossary--Complement-Label.md @@ -0,0 +1,10 @@ + +Other Notation : Complement-Label + +

Complement-Label

+ +The complement of a label is found by taking each +no-operation instruction that makes up that label, +and shifting it to the next in alphabetical order, looping around at the end. +Thus, in the default instruction set, nop-A -> nop-B -> nop-C -> nop-A. The label +"nop-B nop-A nop-C nop-C" has the complement "nop-C nop-B nop-A nop-A". diff --git a/docs/documentation/glossary/Glossary--Genome.md b/docs/documentation/glossary/Glossary--Genome.md new file mode 100644 index 0000000..c6ae70a --- /dev/null +++ b/docs/documentation/glossary/Glossary--Genome.md @@ -0,0 +1,6 @@ + +CPU Components : Genome + +

Genome

+ +The genome of an organism is the original, underlying program that controls the behavior of that organism. The memory space in the CPU of that organism is initialized to the genome, but will change with time. A genotype is is determined by a unique genome sequence. diff --git a/docs/documentation/glossary/Glossary--Genotype.md b/docs/documentation/glossary/Glossary--Genotype.md new file mode 100644 index 0000000..a23d375 --- /dev/null +++ b/docs/documentation/glossary/Glossary--Genotype.md @@ -0,0 +1,6 @@ + +Other Notation : Genotype + +

Genotype

+ +A genotype is a unique sequence of instructions that make up a genome of an organism. Any two organisms with identical genomes are considered to be the same genotype. diff --git a/docs/documentation/glossary/Glossary--Heads.md b/docs/documentation/glossary/Glossary--Heads.md new file mode 100644 index 0000000..82ae7d2 --- /dev/null +++ b/docs/documentation/glossary/Glossary--Heads.md @@ -0,0 +1,6 @@ + +CPU Components : Heads + +

Heads

+ +Each CPU has four heads associated with it. The first is the instruction pointer (IP) which determines the next instruction to be executed by the CPU. After each execution, the IP is automaticall advanced (unless the instruction executed dictates otherwise). The second is the read-head (RH), which determines what instruction is copied from a copy command, and then the write-head (WH) determines the position it is copied to. Finally, the flow-head (FH) is used to mark positions in the genome to move the other heads to. The flow-head is commonly used to mark the beginning of a loop to jump the IP back to from the loop's end. diff --git a/docs/documentation/glossary/Glossary--IO.md b/docs/documentation/glossary/Glossary--IO.md new file mode 100644 index 0000000..44b2f5e --- /dev/null +++ b/docs/documentation/glossary/Glossary--IO.md @@ -0,0 +1,6 @@ + +Instruction : IO + +

IO

+ +This is the input/output instruction. It takes the contents of the ?BX? register and outputs it, checking it for any tasks that may have been performed. It will then place a new input into ?BX?. diff --git a/docs/documentation/glossary/Glossary--Input-Output.md b/docs/documentation/glossary/Glossary--Input-Output.md new file mode 100644 index 0000000..8e0c52c --- /dev/null +++ b/docs/documentation/glossary/Glossary--Input-Output.md @@ -0,0 +1,6 @@ + +CPU Components : Input-Output + +

Input-Output

+ +Each CPU in avida is supplied with 3 input values of 32 bits each. The IO instruction is used by the organisms to get the an input (cyclying through the three options) into a register and to output numbers from a register. Each ouput is compared to all inputs to determing if any tasks (by default, specified logical computations) have been performed by the organism. diff --git a/docs/documentation/glossary/Glossary--Instruction.md b/docs/documentation/glossary/Glossary--Instruction.md new file mode 100644 index 0000000..621aebe --- /dev/null +++ b/docs/documentation/glossary/Glossary--Instruction.md @@ -0,0 +1,6 @@ + +CPU Components : Instruction + +

Instruction

+ +Each position in an organisms genome or a CPUs memory consists of an instruction. Each instruction is associated with a specific function on the CPU when it is executed (expressed); in series these instructions lead to all of the complex behaviors of the organisms. diff --git a/docs/documentation/glossary/Glossary--Label.md b/docs/documentation/glossary/Glossary--Label.md new file mode 100644 index 0000000..c5ef87e --- /dev/null +++ b/docs/documentation/glossary/Glossary--Label.md @@ -0,0 +1,12 @@ + +Other Notation : Label + +

Label

+ +A label (sometimes called a template -- for example, in biology) is a sequence of +no-operation instructions used to mark +regions of code within a genome. Some instructions +(such a h-search) are followed by a label; the +complement of that label is then used +to match against other labels. See the descriptions of the individual +instructions for how they use labels. diff --git a/docs/documentation/glossary/Glossary--Logic.md b/docs/documentation/glossary/Glossary--Logic.md new file mode 100644 index 0000000..5f58bbd --- /dev/null +++ b/docs/documentation/glossary/Glossary--Logic.md @@ -0,0 +1,6 @@ + +Other Notation : Logic + +

Logic

+ +A logic operation has as inputs a collection of bits, and as an output a single bit. The operation itself is a unique map from the input bits to the output bits. In avida, a logic operation is done in a bitwise fashion, so that the operation is effectively performed 32 times when a reward is granted. diff --git a/docs/documentation/glossary/Glossary--Memory.md b/docs/documentation/glossary/Glossary--Memory.md new file mode 100644 index 0000000..2e94195 --- /dev/null +++ b/docs/documentation/glossary/Glossary--Memory.md @@ -0,0 +1,6 @@ + +CPU Components : Memory + +

Memory

+ +A CPU contains a memory space to hold a sequence of instructions to be executed. The memory space is initialize to the genome of the organism, but it will be modified over the lifetime of the organism, typically as an offspring is produced. As section of the memory is then divided off to initialize the ofpspring. diff --git a/docs/documentation/glossary/Glossary--Mutation.md b/docs/documentation/glossary/Glossary--Mutation.md new file mode 100644 index 0000000..69ee2e1 --- /dev/null +++ b/docs/documentation/glossary/Glossary--Mutation.md @@ -0,0 +1,6 @@ + +Other Notation : Mutation + +

Mutation

+ +A mutation is a random change of an instruction from the genome of an organism. There are three main times that mutations can occur; point mutations will happen randomly through time, with and equal probability at every site, copy mutations occur when a site is actively being copied, and divide mutations occur when an organim is splitting off an offspring. diff --git a/docs/documentation/glossary/Glossary--Nop-Head-Notation.md b/docs/documentation/glossary/Glossary--Nop-Head-Notation.md new file mode 100644 index 0000000..cea3907 --- /dev/null +++ b/docs/documentation/glossary/Glossary--Nop-Head-Notation.md @@ -0,0 +1,6 @@ + +Other Notation : Nop-Head-Notation + +

Nop-Head-Notation

+ +A head abbreviation (IP, RH, WH, or FH) surrounded by question marks refers to that head being used as a default, when the instruction in question is being executed, but if the instruction is followed by a no-operation (nop) instruction, the nop will alter the register used. A nop-A instruction indicates the instruction pointer (IP), nop-B is the read-head (RH), nop-C is the write-head (WH), and there is no way to use the flow-head (FH) unless it is by default. diff --git a/docs/documentation/glossary/Glossary--Nop-Register-Notation.md b/docs/documentation/glossary/Glossary--Nop-Register-Notation.md new file mode 100644 index 0000000..582233f --- /dev/null +++ b/docs/documentation/glossary/Glossary--Nop-Register-Notation.md @@ -0,0 +1,6 @@ + +Other Notation : Nop-Register-Notation + +

Nop-Register-Notation

+ +A register name (AX, BX, or CX) surrounded by question marks refers to that register being used by default when the instruction in question is being executed, but if the instruction is followed by a no-operation (nop) instruction, the nop will alter the register used. A nop-A instruction indicates AX, nop-B is BX, and nop-C is CX. diff --git a/docs/documentation/glossary/Glossary--Organism.md b/docs/documentation/glossary/Glossary--Organism.md new file mode 100644 index 0000000..2cdf293 --- /dev/null +++ b/docs/documentation/glossary/Glossary--Organism.md @@ -0,0 +1,6 @@ + +Other Notation : Organism + +

Organism

+ +An organism in avida consists of a unique genome and a CPU that expresses (executes) the code in that genome. A population in avida is a collection of these organisms. diff --git a/docs/documentation/glossary/Glossary--Population.md b/docs/documentation/glossary/Glossary--Population.md new file mode 100644 index 0000000..dc30001 --- /dev/null +++ b/docs/documentation/glossary/Glossary--Population.md @@ -0,0 +1,6 @@ + +Other Notation : Population + +

Population

+ +A population in avida is a collection of digital organisms that interact and evolve over time. diff --git a/docs/documentation/glossary/Glossary--Registers.md b/docs/documentation/glossary/Glossary--Registers.md new file mode 100644 index 0000000..5a632b3 --- /dev/null +++ b/docs/documentation/glossary/Glossary--Registers.md @@ -0,0 +1,10 @@ + +CPU Components : Registers + +

Registers

+ +

+A register is a storage space for a single number. +Each classic CPU in Avida contains three registers, each of which is made up of 32 bits. All math-based instructions opperate on the registers, and various instruction will move the values in the registers around. +

+ diff --git a/docs/documentation/glossary/Glossary--Stack.md b/docs/documentation/glossary/Glossary--Stack.md new file mode 100644 index 0000000..1363c4d --- /dev/null +++ b/docs/documentation/glossary/Glossary--Stack.md @@ -0,0 +1,8 @@ + +CPU Components : Stack + +

Stack

+

+Each classic CPU in Avida has two stacks used for storage of numbers. The push and pop instructions are used to move numbers between the registers and the stack, and the swap-stk instruction toggles the active stack in use. +

+ diff --git a/docs/documentation/glossary/Glossary--Tasks.md b/docs/documentation/glossary/Glossary--Tasks.md new file mode 100644 index 0000000..7fac88f --- /dev/null +++ b/docs/documentation/glossary/Glossary--Tasks.md @@ -0,0 +1,6 @@ + +Other Notation : Tasks + +

Tasks

+ +The organisms in avida are granted extra CPU-cycles for performing specific computations. Every time an organisms outputs a number, it is examined against the inputs to determine if any tasks have been compleated. If the number of extra CPU-cycles outweigh the number used to perform the task, the computation will typically be reinforced through natural selection. By default, the tasks in avida are all logic operations that act upon the inputs in a bitwise fashion. diff --git a/docs/documentation/glossary/Glossary--add.md b/docs/documentation/glossary/Glossary--add.md new file mode 100644 index 0000000..f18779c --- /dev/null +++ b/docs/documentation/glossary/Glossary--add.md @@ -0,0 +1,7 @@ + +Instruction : add + +

add

+ +

This instruction reads in the contents of the BX and CX registers and sums them together. The result of this operation is then placed in the ?BX? register.

+ diff --git a/docs/documentation/glossary/Glossary--dec.md b/docs/documentation/glossary/Glossary--dec.md new file mode 100644 index 0000000..72e0daa --- /dev/null +++ b/docs/documentation/glossary/Glossary--dec.md @@ -0,0 +1,6 @@ + +Instruction : dec + +

dec

+ +This instruction reads in the contents of the ?BX? register and decrements it by one. diff --git a/docs/documentation/glossary/Glossary--h-alloc.md b/docs/documentation/glossary/Glossary--h-alloc.md new file mode 100644 index 0000000..f4fb0ac --- /dev/null +++ b/docs/documentation/glossary/Glossary--h-alloc.md @@ -0,0 +1,6 @@ + +Instruction : h-alloc + +

h-alloc

+ +This instruction allocates additional memory for the organism up to the maximum it is allowed to use for its offspring. diff --git a/docs/documentation/glossary/Glossary--h-copy.md b/docs/documentation/glossary/Glossary--h-copy.md new file mode 100644 index 0000000..01fc606 --- /dev/null +++ b/docs/documentation/glossary/Glossary--h-copy.md @@ -0,0 +1,6 @@ + +Instruction : h-copy + +

h-copy

+ +This instruction reads the contents of the organism's memory at the position of the read-head, and copy that to the position of the write-head. If a non-zero copy mutation rate is set, a test will be made based on this probability to determine if a mutation occurs. If so, a random instruction (chosen from the full set with equal probability) will be placed at the write-head instead. diff --git a/docs/documentation/glossary/Glossary--h-divide.md b/docs/documentation/glossary/Glossary--h-divide.md new file mode 100644 index 0000000..8bf72f2 --- /dev/null +++ b/docs/documentation/glossary/Glossary--h-divide.md @@ -0,0 +1,6 @@ + +Instruction : h-divide + +

h-divide

+ +This instruction is used for an organism to divide off an finnished offspring. The original organism keeps the state of its memory up until the read-head. The offspring's memory is initialized to everything between the read-head and the write-head. All memory past the write-head is removed entirely. diff --git a/docs/documentation/glossary/Glossary--h-search.md b/docs/documentation/glossary/Glossary--h-search.md new file mode 100644 index 0000000..c12e201 --- /dev/null +++ b/docs/documentation/glossary/Glossary--h-search.md @@ -0,0 +1,6 @@ + +Instruction : h-search + +

h-search

+ +This instruction will read in the template the follows it, and find the location of a complement template in the code. The BX register will be set to the distance to the complement from the current position of the instruction-pointer, and the CX register will be set to the size of the template. The flow-head will also be placed at the beginning of the complement template. If no template follows, both BX and CX will be set to zero, and the flow-head will be placed on the instruction immediatly following the h-search. diff --git a/docs/documentation/glossary/Glossary--if-label.md b/docs/documentation/glossary/Glossary--if-label.md new file mode 100644 index 0000000..5285498 --- /dev/null +++ b/docs/documentation/glossary/Glossary--if-label.md @@ -0,0 +1,6 @@ + +Instruction : if-label + +

if-label

+ +This instruction reads in the template that follows it, and tests if its complement template was the most recent series of instructions copied. If so, it executed the next instruction, otherwise it skips it. This instruction is commonly used for an organism to determine when it has finished producing its offspring. diff --git a/docs/documentation/glossary/Glossary--if-less.md b/docs/documentation/glossary/Glossary--if-less.md new file mode 100644 index 0000000..94b6922 --- /dev/null +++ b/docs/documentation/glossary/Glossary--if-less.md @@ -0,0 +1,6 @@ + +Instruction : if-less + +

if-less

+ +This instruction compares the ?BX? register to its complement. If ?BX? is the lesser of the pair, the next instruction (after a modifying no-operation instruction, if one is present) is executed. If it is greater or equal, then that next instruction is skipped. diff --git a/docs/documentation/glossary/Glossary--if-n-equ.md b/docs/documentation/glossary/Glossary--if-n-equ.md new file mode 100644 index 0000000..184c868 --- /dev/null +++ b/docs/documentation/glossary/Glossary--if-n-equ.md @@ -0,0 +1,6 @@ + +Instruction : if-n-equ + +

if-n-equ

+ +This instruction compares the ?BX? register to its complement. If they are not equal, the next instruction (after a modifying no-operation instruction, if one is present) is executed. If they are equal, that next instruction is skipped. diff --git a/docs/documentation/glossary/Glossary--inc.md b/docs/documentation/glossary/Glossary--inc.md new file mode 100644 index 0000000..7ffba09 --- /dev/null +++ b/docs/documentation/glossary/Glossary--inc.md @@ -0,0 +1,6 @@ + +Instruction : inc + +

inc

+ +This instruction reads in the contents of the ?BX? register and increments it by one diff --git a/docs/documentation/glossary/Glossary--jmp-head.md b/docs/documentation/glossary/Glossary--jmp-head.md new file mode 100644 index 0000000..d4a3c8c --- /dev/null +++ b/docs/documentation/glossary/Glossary--jmp-head.md @@ -0,0 +1,6 @@ + +Instruction : jmp-head + +

jmp-head

+ +This instruction will read in the value of the CX register, and the move the ?IP? by that fixed amount through the organism's memory. diff --git a/docs/documentation/glossary/Glossary--mov-head.md b/docs/documentation/glossary/Glossary--mov-head.md new file mode 100644 index 0000000..3446341 --- /dev/null +++ b/docs/documentation/glossary/Glossary--mov-head.md @@ -0,0 +1,6 @@ + +Instruction : mov-head + +

mov-head

+ +This instruction will cause the ?IP? to jump to the position in memory of the flow-head. diff --git a/docs/documentation/glossary/Glossary--nand.md b/docs/documentation/glossary/Glossary--nand.md new file mode 100644 index 0000000..449a690 --- /dev/null +++ b/docs/documentation/glossary/Glossary--nand.md @@ -0,0 +1,6 @@ + +Instruction : nand + +

nand

+ +This instruction reads in the contents of the BX and CX registers (each of which are 32-bit numbers) and performs a bitwise nand operation on them. The result of this operation is placed in the ?BX? register. Note that this is the only logic operation provided in the basic avida instruction set. diff --git a/docs/documentation/glossary/Glossary--nop-instructions.md b/docs/documentation/glossary/Glossary--nop-instructions.md new file mode 100644 index 0000000..7ba8591 --- /dev/null +++ b/docs/documentation/glossary/Glossary--nop-instructions.md @@ -0,0 +1,6 @@ + +Instruction : nop-instructions + +

nop-instructions

+ +The instructions nop-A, nop-B, and nop-C are no-operation instructions, and will not do anything when executed. They will, however, modifiy the behavior of the instruction preceeding it (by changing the CPU component that it affects; see also nop-register notation and nop-head notation) or act as part of a template to denote positions in the genome. diff --git a/docs/documentation/glossary/Glossary--pop.md b/docs/documentation/glossary/Glossary--pop.md new file mode 100644 index 0000000..ad5007f --- /dev/null +++ b/docs/documentation/glossary/Glossary--pop.md @@ -0,0 +1,6 @@ + +Instruction : pop + +

pop

+ +This instruction removes the top element from the active stack, and places it into the ?BX? register. diff --git a/docs/documentation/glossary/Glossary--push.md b/docs/documentation/glossary/Glossary--push.md new file mode 100644 index 0000000..7d84fa7 --- /dev/null +++ b/docs/documentation/glossary/Glossary--push.md @@ -0,0 +1,6 @@ + +Instruction : push + +

push

+ +This instruction reads in the contents of the ?BX? register, and places it as a new entry at the top of the active stack. The ?BX? register itself remains unchanged. diff --git a/docs/documentation/glossary/Glossary--set-flow.md b/docs/documentation/glossary/Glossary--set-flow.md new file mode 100644 index 0000000..84466dc --- /dev/null +++ b/docs/documentation/glossary/Glossary--set-flow.md @@ -0,0 +1,6 @@ + +Instruction : set-flow + +

set-flow

+ +This instruction moves the flow-head to the memory position denoted in the ?CX? register. diff --git a/docs/documentation/glossary/Glossary--shift-l.md b/docs/documentation/glossary/Glossary--shift-l.md new file mode 100644 index 0000000..1fd6ce5 --- /dev/null +++ b/docs/documentation/glossary/Glossary--shift-l.md @@ -0,0 +1,6 @@ + +Instruction : shift-l + +

shift-l

+ +This instruction reads in the contents of the ?BX? register, and shifts all of the bits in that register to the left by one, placing a zero as the new rightmost bit, and trunkating any bits beyond the 32 maximum. For values that require fewer than 32 bits, it effectively multiplies that value by two. diff --git a/docs/documentation/glossary/Glossary--shift-r.md b/docs/documentation/glossary/Glossary--shift-r.md new file mode 100644 index 0000000..37256e7 --- /dev/null +++ b/docs/documentation/glossary/Glossary--shift-r.md @@ -0,0 +1,6 @@ + +Instruction : shift-r + +

shift-r

+ +This instruction reads in the contents of the ?BX? register, and shifts all of the bits in that register to the right by one. In effect, it divides the value stored in the register by two, rounding down. diff --git a/docs/documentation/glossary/Glossary--sub.md b/docs/documentation/glossary/Glossary--sub.md new file mode 100644 index 0000000..5ee3198 --- /dev/null +++ b/docs/documentation/glossary/Glossary--sub.md @@ -0,0 +1,6 @@ + +Instruction : sub + +

sub

+ +This instruction reads in the contents of the BX and CX registers and subtracts CX from BX. The result of this operation is then placed in the ?BX? register. diff --git a/docs/documentation/glossary/Glossary--swap-stk.md b/docs/documentation/glossary/Glossary--swap-stk.md new file mode 100644 index 0000000..3b802a5 --- /dev/null +++ b/docs/documentation/glossary/Glossary--swap-stk.md @@ -0,0 +1,6 @@ + +Instruction : swap-stk + +

swap-stk

+ +This instruction toggles the active stack in the CPU. All other instructions that use a stack will always use the active one. diff --git a/docs/documentation/glossary/Glossary--swap.md b/docs/documentation/glossary/Glossary--swap.md new file mode 100644 index 0000000..6aa07fa --- /dev/null +++ b/docs/documentation/glossary/Glossary--swap.md @@ -0,0 +1,6 @@ + +Instruction : swap + +

swap

+ +This instruction swaps the contents of the ?BX? register with its complement. diff --git a/docs/documentation/images/AvidaLogo.gif b/docs/documentation/images/AvidaLogo.gif new file mode 100644 index 0000000000000000000000000000000000000000..2f9727f8c6e756a92c5b2d0210bff68182997c22 GIT binary patch literal 5946 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 literal 0 HcmV?d00001 diff --git a/docs/documentation/images/Text_View_Env_Mode_1.jpg b/docs/documentation/images/Text_View_Env_Mode_1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..733e1450488cdf361e2c1fb89ed9be878263cec5 GIT binary patch literal 49686 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 xE$b9QiFPp-Z) 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 WR{I5Uq}7KGaTw2ksv%5&SN<2t9!_Tf literal 0 HcmV?d00001 diff --git a/docs/documentation/images/Text_View_Env_Mode_2.jpg b/docs/documentation/images/Text_View_Env_Mode_2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5447f8a56713865a5f9b878720b7ce1e69d760e3 GIT binary patch literal 73006 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/>CV*Q)%jM1jMoEK;6Q-G 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%0DT&2qCTIV40vStrNcY@ZI4GS`f zO1!K@CS{~WMWosjm(nFApMTT=yTr^+v4Q|4u+I61)-fPrsQRN)D6x(@j~F&0a*w7| zQ#k&qzIwvj*QO`yoaFA5BI}Pfm{A0aP2|DU4r8srimRBbf3KWu!&V6Syi0cf`l6o# zK6juz9tFsmlQGdElsSEc?uPa-gCssKdZ-@MKV~?k4r_~Lnh0dZJb-=9Sugx7TfkQ9 zxTs6REl$K_r`cD$5P(s2>ZkT8%g9$|)V6%+3!B%bs*YL(G4e;rfr5aTnln#b4cPzG zV_DgLapR+o&Aog&_|2C4o9qOY7r|HPRx)(;Db&XN>&5M2Ken~t1TZ%5BM;!c9|;8DgE zFkzbWcvE4Gq9md&!C4X9yr1B_M4lJTEqXXqox0J^b<|l%o^C@QjJl^gv8L`9&#lAO zd3KYtEEJ{hIy^Hi6=X=WhHt*hD?0VJbuOA0=u*)Nie)GYSFc0@T9f z@FELe6UyaJFe{e&sz&M_p90#&G=Jj(_&uk2+w$&e>tkOQVR=pT+u*L`#b0QWypucKF*5 z?Ot52Tjx9_x9ci3r=Z1&9#ZNJ7j{#sT*+KE-*~b7Lr_{w zD4Qb*NH(beHC>jjLY6H7TU=}LAy32uEssfN%g;6k3Kynn4{?VE9cmIKBU;6F!g4g{ zGEPI`5@;Q-pRq-(l@8%i7y$QYQmxvu)kj@iNu6 z1O?aKa;5|Vy3Zx*##yrbMhj}b>=e@r(qVDE-Re=vZk*rL9#b3gHi{LiOE6qBAcDkq z3fIrYd$A8~p~Q6GsKYbKsD@>CT-VA#_~gUnr}QY34%64Bi@OgAJZvuN2(g!gN@F_t z8p(-mk$yNh)ZX7w<&5qes!WEcL+2UeM^*?k^MQXnYQX=Adf+41p?C+Up}$*ZMNTMA zt4G?^0J>$>h8|VUNkjuySsYbzWXTc;YgbU(_Lqokv>H**VD`LVd%t<~@nFllSLaX9 zu83&)#TeJY>FQyZ`RSS7r_e*_O`x-3a$+krm9n{JVJEr&Bvvi6UC9z~{OdWu8AwOW zKQl%!r$@@d=8V-1c>l@Ib2_1P~c)SX}lDEK9eJrpCU0_Jut|@ ztV|2dbT6wDyI1D_`HZz`k>9F!Ej zb*!T__Um>yGV?T3ZX48+5oE!&_XZM!z_aWp=z%m%oi}KY&pPr8^2wz-(`#!miO!w{ z^g!%%cz>KKcG)<=#Uz z7UKyEn<|~j=Q5CC9b~%j{8~FM42rjQVq#uk%WC`M_E+}m$^IatW`O}I=ABP>{_xjz z+*v~fQ;%V_O``ts#|`ZMtg@LgG^j!sqoOtrks#|g;Sj_g`LkA`W0>mY9>Qo*)rP4k zeMwIRT*-#v{Y_qXi@YoDw0>``t7rEwwCjrh>nd;<3dVcIAH7esR`fdjL;n_@ia#Cq z?za1bxwnALPzpwa&2}E~P%)Poa}9AnYXeXz7U0qN4)JhioL{5Jm5~>>D9|3|z>o<` z!kkp`C&n0*s|fwx{iz0?5vEgGS*DAJ+^oZPdfd45TPX-{PTZ=f8|i`_&P%L}dy*on zMXHO^Dz~fBs8HnJWxINgues(mA>D7qd!72dBYWO_#?R{-;(GF|X2m3lvtwY(vP#_e lie@xjpSb}_qpcLqB=m;?gIQB*0|xtaqV@MTZ28yH{|03K#Ebv{ literal 0 HcmV?d00001 diff --git a/docs/documentation/images/Text_View_Hist_Mode_1.jpg b/docs/documentation/images/Text_View_Hist_Mode_1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a627159e491723649e6e303cd84cf4169d20b5f2 GIT binary patch literal 56967 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 mrPeyqGMvm-oQUP*F)D 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 literal 0 HcmV?d00001 diff --git a/docs/documentation/images/Text_View_Hist_Mode_3.jpg b/docs/documentation/images/Text_View_Hist_Mode_3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b5eef6f1ac1c276358bf63578de182db325c2085 GIT binary patch literal 57534 zcmeFa1wd6x*D$;f-3>}fqeyp4r*wya#G#u*ix^0Vh;)a5NFyL2h^V9@Al+iphykeN zH|JoW*L$D)zwiHl|MNcY-LU7Zy=JX7Yu41B*=x_<8{2yhk*F)HDMK(c7^DjRpuHC) zK}rEm_7J402_1(Z2nWK3kwNGHf`LB>Mgw7@ULeGW$&@C73n|w6kT=Z`+>@Y|Rd0@fNztUnI%m?hq zk9@$`59R~dI$+u zhveLwgu);K92^{690FWi0#bZDd{Rnc0s>;n!{p?YXAI|BCZL!>y6Hk6AFV}{U3Vd$i=y=jnbyuCJ<4A2r2hB|=4 z$O9cz6bwu(Y#dxXd{7;Jj)XyI=-(nqAQ%P=9Ss8w6B`Q$6P-X1M3SOoFp=?N%IR8@ zGkcvEz@mt|UM0`MN~!n2Mo`H6LcanwTfF|e7w>I-gsJkXFS08p7}zO2%tweE8Zdkb z|4+jf=joP+J;`Q-KcFJezR_5?-!n2Sl2N!yCJG#?BE}fav0WCo$_Wf`9L}@2L}6@J|wV zGgFqSsp@EWf<;C;tn{VtbqLf6>-)}FP@7Z@+Y4WXF1S6SYtZXZnGg-C49-{>++NAi z{&JhR?2GT{dTGgBd{f`RaYj?a^O;soP9F19vwKixb+3h@+?E_U{}NHi%sZ>@Aa#V* z$nLGt_$l-9#*ED8({-G;O|(t&j=qDR|(w+GikmY7mr z+>*j8+hOs`84zu+*nn|edWXhP3~3gF;!*uS_+xZXZ8I? z`0vnWZVV^sXIE)y5|JpqRvr_%Dzvc&39p5eSh<~k{@Rmv`_pVphWYkrzsC*Zoq98M zKl+sQ#wHH9XDL{n?QMQ_y2h!6QN)tg7Tsba)~C+Ys$XSGd!)J7mccjHkyYSsX2hLI3kxHW zIzgts;L?!gJ;;cQ*XnS+liOs#G2`)2jvWo_i$yJJSIYp z3g^7AYJtnV&^fk5ADE?8Ce`F!wfwAS*>{{UAhjyH+ueV_eWsv2ZX+GN9(H#1*}CE$ zG*{rtb(wz1vBs_9_Sk*8E%c^v!kN736*cX>r?1Y|zCzp#ab99saj#tO)|xX?eKt3? z9o`x$kRhYgw9VX8k6yrEDZH*cHhcR{uCC+MN@cLiCt{E0+TlIOVh>V|TCdrIC@mcJ zAmTTnb4yfu>VC%;a*QjAWBpAJ_pK?ERZIn+3UN%)H!pITT-bGS^L~7%wtBAm=4Nee zn?M)$)YFj4u~i>`?g@*;Ct4Y&>k9{FEL*g8YBSPjA27It-`V2W^!M0hm`L8W`p(*fOx0k`HP z8Q!NZ^R~^#XtQ;%>W9m>sGHn-wn9_Z-fDSDh}B-%DIDeRZ|v7R$M?2Ka?Jc*U;n*N zpi>NeLDJ%C|G9pCSsUL`JA)){+5J?;<{h&uTXU(SVnfMd}h;Qc1K22@qpfHXUD!L znAG=4<@3xYUV|qXZ&E&A+}$aNZ`!gIZEu;4m03Nx(cuvt+Jk%QTSiMGh*!I}wRZvr z)GYRGE>EQ8_QhPOfIguPqHBAdv!1P{9NyxgIS%7&my0_4;s0dHXPRr+w$0 zH_K}q0*&)q(xbM!(O>%J$Wv$b`akYLK|mKFxdepS3qHHQ681FTYx~2N^e-xWITK zgyy9(oM#t0@B50$TF+UylslA~dQ#k#bl-z&+$zs*$27^TIlOhvP8kf_gT`8P_Mm#M zJ*bQI=Fy_6mG1W1F`=Q+34EG|(xSnIPaLpnn=&k(-LQHg5~}hH^moEvuqk6g#)PQ4 zJSfu`jeIY+NcPw4&eZQ>+X*_hi#NQ?#GiMo6I^#7Q%HR&&2BVzXC$a@xMrqhX8Vn0 zj8(pD;KG{tl@{t3lO``ky+`pFnpF0nOODM?_Mlcu(CV}fzkkg7B&ZHMvUAr1&xUvH z6~kgqn%8hKsTd+PYQwlJDD<6G);@j_mOiL=P{pk)GX|StK+xP=i`u-+FK-~PB=Yly~K zbmF8P2-MYBugS-&u_hM8tFf`SHm8mYKiixPb`fw6z^vFk**dWYIZrK`m^K7j@TZv| zUZMwI(ki;uykfgpx%Re1bkl2-v+iuhkV$|?hrNPDifLVp!q|X9EoM{dO3w}p{c5HE zJZSmihQqs;Hpf$kY}W}y3;gcs6#2{d)I&W9-C^J#i=K42p*1 zQu#I!>s%5p@Zt1s8p3r_T8nG6T63eZYdfps4%N8R z@yeLg7j60CHwp|JpY302_o{_C<<;!$sgXvx$47@;#a0?iWfG@bhJtceYZ@-XW4+F? zO|>eRjO;=1@`>9Lg_ag0wn5|TuQzE;Ev^vKLhr_~7Sp~oCEIIO*1i~#8In}4A}w5L zJiDChzQEZ3#paCmlP*#6Pt%{y$c*lUs^McYg7dBy$xesH=DeUi@F4{b0NHb9YLU>88z)eD!Wv# zZ|)8LjbeFPnY(^;I401|w?BDfRI{?~)^y)1|CV5pougaQm)CRjgAxwU?c|fbIhS?i zuK3&7o{Boc4e6QGjuP(2^UL{%cP@9%Sj33amY>MF;_Bf-GvZ!68v5L-duCJ8Z#}lO zuXv^OdR+$H0JX;i*V#_em72j|KhuS#>8b^e{FDKY_UgI}&Z-oWiMO^_9|p+uiZs#I z&SWm`K`%dzl$e{Bc)CQgo?DUXc;h3;d(+B?E1!6|hv?JDXo^sENSXVp-%1V`L0&Ly zYCC+?z;|sW6>ezLy4!iPX}7R%%Zr{vaa8_{*#c`ko*poIA~5<5PyieNR!1Rj_noZ2 zxlX|ER%^a!_OMkydcus*eVu0KdTjaRhP%UO^%VoJvcjf|tCb@abc8;2YA)%6O<#yU zmD|rDmNOO)2iW3-T)*k)RWtGG3TNd|0O%<;y~{!0;MdIi&WU4hd~bzY@yG06kcSTv zlULKkU_(tkNl@W|02znAh(sJ_l#&T>b7k~{d;2(fxJxth^YAe?3~;kq?rv3 zl)1&2WlrEpF)3;*7?|oPF?zZ>`5+i|4COV{6d0Mgd3ohLJze3vyov^jj5-=>`UZ?Z z1~0FY7BeHWBLd+m!OQFK@6Th6q~fvla6=OM@alMbc*4CAff_&1 zqz=H^IoTpk;NeQSzynVJ5nqLQdV}>19vy23xUz@0n>7G6RXx0&f;`+2)~%bpEt&x{NCBXPisXvkNud{^|0+e<=Au1rnivo~x|576#gf#-L>}u`sT_Zpbj0kst zd!OKw;{67q6y*J;p%m{owWYq{{&h)cdpp5FIUqo-`j*)DEdQ4Ke?mF@CR0d@e={5Z z&ldc5DGGgCYgbT}|8t7rmkfPx2*CdTcJ06j^m0z10RE%;qu*redm;Q=_D0_n{-x&p z&+n1`BxB!8 zx~~Hx=l_#&;U!}yO;=$COE_xqp?Qv5!WAHaUq)WFHZ!5U@p|GC!wlRO--wYxR9>%W1y ze=XRb?)K#DoPB)|a62SY4{nS2pIGz%YZ*iq)PeQ{uD;z`{aUI2I%@y6SWxKT{Q%%V zp@l_7enKB;6aV*{-QP45=m!78E5ffi{9{c(6&^Rg*iVJ`wM_p6Eh_r^8X*2N`roVu z08^-e;StPc|3~-6f2`Vnm9hT`UGxwA4c)E(Bm3yTmBT+a&Hr_s^zZEiu>U!|^xw8aa0F&vg&T{yqo$t2F+o>$e%=ud4o)l!KanFl4ZH)9G{D0VdElYE1(6UcP4smn2(;j}w+At< zAOwDi;DCL_Tu)2?juAlN%|Q5#Mi_$O-@%0H;(}4|fM7j65{p_K1Vm@(2&N{p)=-^c)<&#-p-@<>TsP3->W{)$jq# zu%FVwM8yF#891>~7ix+JWMeycd-!_(gu()ki5#5V;qJa}fQLXyA1NIy?gJdSCbafN zc&NbL;ojhBi5);d2B7tSCC1w)Mq-dLYHkjU;OGDA{Gg4dvQpEe2 z2T$4d(SQ@%4sLJl>xuv%t{+(I{tY>DjS_|anH=B7LBYe-!~1}7N%!T;t9*|DERdFm zJJQy;2oFzfUxW|*V8y|61r_NJSOOal1gKDdz~h4=cKnqb)dG(p6M_i936pt;g7;e+ z())V93ZtRukQ5N{X%HaImJ3d806vGHL`HyDgboAmPvBZ}>B#=GshPb`62`EHJ@FPPU05 zIk24N0oj0MEk;NOas)5}oIWTBEZjll|AK-MQh@X!L8QR_+5P?s8a9Lh5&-{uFNik3 zx-7f<@K__?sYZD$2UvUZBAuEc;4JNFjdT}gw1I=QB5CH;rWR&KCp&3oV_{7`O-}{5 zqmycoH(WnR%fL3s#a7%7_)arQ1xN(AdAh+7){MZ{+TBMYK$;mPTmryIG%qtFiUi>z z&5U}_nbAa3hf%@98_p=i!_RHYCn&-wB*G&gDk3Vt$Hl1W;m)WGw_yaYa|`hCi82ZZ zNPyS6g#;PD9?T#~Z##PlJw@fO34$x>gU;Cgf;=AH4!r#0;^Mq~0=xnO+<=1HClEO7 z25`IkuzZuC2=}q|cJf3z@iHPMT7zXigfufy7nKh?+wW36!2%UZrkyP>+!gKye1Cm_ z&G?a7+t0JL=Xc`Y8utL9rsiLhy19K9>-p`K_uq4Tk4BZ>wD5M|q%2GdsBfryX8rPq+g}%-T~z0Xz=_Zsi7Go$XuM{_xZP=`H;O z^l(M6@F>lUd~KhbkDr@g+yMF7zJP>~5I3K&1RwCwM~c=2KKk~7za>S!;r|mUsAP85 z2d!0y2*Z0WW}2yuh$R{6ZiW83JuVxQ`Jk{1#cRTdH9lNS)?6BUwIX66OM0Pojv0118{g-(1M zDE|5V#{&OY;2#V8V}XAx@Q(%l7g^xPJQnT_Ca?Zrmb&+nzy#cBTj}U&E30WJp{Cpf zsv1u29%#Vj!_6JxjlA_XF*Rev?gcI%xWM}aICogv`gm&UDW}b5;*n44DQsMjFdEX$ zgu)vr2w>#CWfTtkFc*quAC^VJc5d##sRIqEv!|V#9TIK>aHO9v(%A!D1Hj>aPH=w! z4*{6f)z{4lz)1ff3OBela6rL8dI7K^;I@tc<^wQ+w}GAlfTe&Z1%bl>*yaF?0A3e> z7E}HMAm9s;D+Ms z&FF)i>@afwT8aP5j0e;@pa+*8+#c=?Ua^NW8i85{Ud#o>?QZ9UT4Zr@|7mu6K*E2K z?SKR%xL>aUKwhv5QCRUnBz+VR`pOdsgB%}1Ka~w)VBgD41J?*Fvq6wC!`yzo2QY|7 zg+B#ovEUNT#|h;M1u5tmFxvWh`|XopAb&7{Um7t)0a1gU4OyULz$Z-r5``ooSx5;| z2OcyAkSSyd*@A^UH^>|Eht5Ffp>QY~x&|dd=}-<-02M$d&b{ggYbBFoD&cH6h zqG9o{bl7!RF{}!92lfE=2-Xi9hrNI;z&^k>(a_Nd&?wO8(b&;=(ZtZ?&`zQmpjn_f zpn0JMp@pGcMN37?Ln}k8LwkVMjW&$-9Bm109c+$>k4}ZogwBmFhOU6Fjc$f+kM50r z7X31MGI}0*1$rZTC;A}zbM$5OFBn)D%c!#lzNr*{@$%!d}sfKBS>452v8IGBZS%_JS*^W7k`37?X3k!=1>nN5emMWGh zmNQl`))lNQtV*o=Sp8V9u-37$v8k~+v8A!Kv8}NY*x}e|*k#x)*aO&aus`GA<1pX| z;3(sm;ke^mz)8j_!MTSsfHQ})g-e3VhAV-qjcbP+h#QMrfZK@Mhx-P13y&1Ih6mKc|qjaZJ@ zk~oMsnYf0yk9e5`mxP@}fyA2REJ+5*9ga$!y32;qmq zJ0hYY-Xawu3!zb3C0trPvo9>F2f{aEt4nnQkF&5PPR~XPL4y)S*}d(tvsK+ zw|uSqCj|+G5QY1S=!z9)Htr;tm1eb z(rMDg($&$;(4E!e*E^%vsZXwNrC*}IVIXf1YcOee%+S~Hp%JmsDWhVePsWPI@y5?h zcuhh~x=m?JolG0du+5Cj3eDEdmCTdO-<%RY6@F^O;;2P{#Uo1^OIOQgD`G2atD4i8 zr;SgSoZhz9w$8I&w^6gnw0UQ%V4GsQWG8EvXtw~DhR4I_?4|AF?dKh&9TFTC9AzAn z9haRHoYI}%JF7b9IDc}{cDd=Y=W6U)>4xKW+U<@znY)X7o5vB40FQo8PS0@9=Ux(C zNnY=~PkI;nzcETLhcZ_cTlD>{#N-sODH1-=XM7uGHsUu+Dc z4?7q3>XOQ((r}`1@9@zG$%vdtj7X=*-YCJSw5Z+7c9$PV^F=2|Z(p&!@;HV+CN*a7 zs{Pg8SdrN5YgpIZuZ_gX#1+Mp#s|f}O3+NGOJq#EoVb=`mGmfCC^;tuFU2?Id8$Tg zLmF$^wY2SY$MoS0`Had;y3DA|Pg!(Rj$|NvF9b{W99qh z&lVUJblwoVQCvt<7+tt?)BWc2BE6!vV$tH_61tMuQnXUv(uJ~9Wlzf$%Nr`VE3Q{k zRYu=}Zu#C?tU6saQhl=eVU1W##cj6RnYHA#m+N44fpzcd9qXSrm^Sp^QNQ!BQL?eN ziKpr2U8cJk&6Lft_weq8-P>ykYFWSUd4KtV!-H23tsYLcnzRnJ>9+N@pKR~yQ0{2$ zl*>l5v3cq;z1v0tkH-hj-&gF(f? zjv=+7?qRLr{t?5GvC&hb&&TY>=Eq&f-%t2WY)zh`w#@46HpQ%3=eG&W8xoNyPx8=W$ zy`8$lvD3JFa(8Oa4S3AIg_yqX-iy2!09y%@prfJhKYBwVz=7J(7YhRe0}}%a6B7#; z3!L~kSXemt1bBG(cz6UP`@8pk{n@|xHH3j-kC1@yFbT=w|Kf(e55b1Mu)}D==rFJY z?*4|pZO}Tn<3U4*9lY(q#6riwM#BL(fIk=kLv752(}zTH_+**LnT0*iiSV<7)L`f^ObiTMJPZshG<4){z%VjQa)^|f0!x5ph>}TO zD2YVR##@lJz*mG(hhIVecH1Q?Y|z*)%AU@vmD9DYVe_~4QM5Zm2DTYS$Hc(I!NSJI zM4A>2Y(Y)REFiCkPR?X=A&+0qJDx@7^gHY7hk^=>vIF|96eN6}y60_u&Uy7;OvoRM zyZ-V6#{LGpFtG11DG*W1fPAIn_Xq5>MB0ZgRGcPB?k_ZGj$k4H>nD10#@@6`A90CQ z^*O!?rVd)0v7B#D#MRB+OPml@jq%k1i=>ha3{P(RO8UAcP6MbmTa0`4UhUxNQQ>nu zck=n_RxMoEAJCcg(NTSxF>zXK_MMBC4O%RO=y2LWK{r*dpV3 zj&oGZjYL&pt?w-7mK7yqq3XXgY;-`b4kP+O2tGJ&)KHdKPfi~j*@eT6!`}YU8 z!{E)wg>iJy(JOYqc^yB^f+dPf41&2ZyCtvqJ~q~njbl0QB7AwCJyHkaw&Si&uBbh? zFAC;zqW*-b096eMOC(Dk^ILu5oB;^EK2hMA9jh*v?9DuuxwS!}eAi+@b3)NB#E=m= zoofarU)3QYg`>W-;dkgV&%KCH?XW)ly2Y7Z!dmZzm`KT_m=m~5pHeYmV(de#9pDt-a7}E?;LG= z8XWyaC0c*lW8nn*#VM=DQf3zz&O%3Hp5k41k^J(Z2tph29r8iUkVYm8&?xE!ocH;- z8|F5c>tY3~(d@YKWnpj+slz1(FZ#t0!y52KbR5KlJxfI*mJIW7b(jr`v(~+p6}=O zd#FuYC~(WHclS&QXeL>{bkm}3Hf&eIyzsIG5LOHiX}_En20IqF3{bcMa*m&aphJAFX*e&BUE-#rqAnF@y6_;o%)8aG$Mg{al_Fw8Nhc;2C9RlQMR(II%~bn>?NzVE4+Wzw$tS zHC}W~A_sCu0GAzL4+_R=f6H%_OH4|8sG;5LoRp%gr$aCLiaNEaK8{wPI z^d-rH?x7+-qww<;#j0y1tX}am3qh@+79HgR=ucE4V|M&$Zg&y$A7K_o^&zl75_S z_u4ng@4pgJ1wPeZ8!6f>VFFWy?6tz#5Oh}aC->1GLxY2v-$_wGZMtHy##eRBdK<60 zXT0Pm>yWR`RH0_Svjghy`pUJn%(ydDZ8(;(U?u6`F@Gs@N(D#rK;4YH7S5zbaEo;F z?Lj&ejBi>Xo4jxO@AbpxR@NYO8@>v0=JB0pk$+&3P_q&H+QJ~157whw#;WYo8741+A*?C=FJn)jx=a78$=+wLeCpFkc(cpTr*QS_GMNgkpB;X%0XC z1M%#HdfwIr7$N{XrPZ9bzC;X6@9@`B;&Fym=C zOuWjwT_v#Q8LUeGd-E3%X*CkgTV-+lhI>#k7Gq+ly$!C)OIE%_0}|4mv|cm@Y{?6W zXXJt|=3NcQTRX%?fXzntUTL1^GWARRA$kg*_CvXMj-3`iHg}m<4x!UWVwpRipM9(u z^N|AVk&2XV5Pn{Gz=d^eB@~nTVIp<$m(foxC-JGtUYNh0&Dbp0 zk79}sM~_FPr$q1`b5RA8Z+F3dmhZEVFIFd7R@El`ou;m->DR7jFO0pkB680id#+z6 zqfjpzNSkptCiba0-N_d{L$q{wex37vv#TsV{&7{C__k4J#2YW#p4S@NAp*?q?jJ;C z4RA=@#P!cO(@^aDfU7&Pa?CWB$sp2;!;3OP8f z1arxS0)xl6MwpRG38p2^1@ByM$PvLL)*;Oj>j}X%WXHYY>u*6zUQ=jj@9y# zJBU(w`kbGQ{zZQBxXOT}N>6mF_ayT&q`L!Yhwu_#TX<93@W^^zxWN%`aD#*L7%Lp_ zScAb$=A~=hq~7RZlpGrIH#k&_3#$t85Bo1{YbzB?-LnPSD z`Ewf2(=QZ{v27kh5nV0g+ZVDFDPhFRyD~MODftZgmUrc}@{}a+NwJFRUAxa17nY|_ zjkWP^9>Xv8Bl#S#%|x(XK!rBPmWp z&rFk)->x51>cNRYwY=jj?2*(Q6c5#^MDB@tabrbTd^9_?kd3%Lrn z4D@y5FL03xz`tPNuw-3C{iTh61(27iOoOjNWMvY4;)?0(ievXh`VwJw<(>*3=iW{fQ8_wnpHBvw~)gwTHp1* zjm09m_@2}x9PGz^EF*;@>j7OMkvWe%HD#9`sW%$C!G()ABJeozhr!FxaVq`uITHm281GTvg+Sdl@#F2JSRXyU) zh;7g}Bo;cJ77brK?KY%7SwVR#GQewD(u>2$ont%Tazd4oDyv}P1NmcVf?MRRTne~! ztnADM%es2F^d$<|ok|ZBU=LJY!)YSZMDnn{94bV7p{;yB`gspZ+!k-rnrbJGGcX9( zd|aS&LW%jDwWh3Cz=b_X?=lSiwE%8czO}gL4IOhXTd-!L!5|fiYC_0w(?Hwh6UL3~ zLHWqw<*&8UH`N2p0^{mgMCvypD zeMbd$`X%sb>i6k1nWBYGP94_ zI%_^_{xjvSR^vkUW>f@IafcLJMFu_Tsg3HwP6o>m>GThyx5r+(bd7zA*E^y3UXmbz z7oBA#YqZ=}>qF{W=^KUN&yLuurJRqmwM-2mjz>xFZBD-ocPZ>tG-fdkSfDtrPs|!p z7rPc{RH8b5#LPKfxc=JHXHJQW1u@l~E8yc0<7ah3T6+Rr%S1|wgTma%T5X2)ODF5# zhV7OoPY=<%e;S?bEvFK-OVV=_wSbHJph#BU3 zMJ@U1Q0J?OMJwWC;w$Hq6KX?>9PD%HM~|484Zkp(;w-Oo=_$34?=IotH$0PJkr0)k zHgRuA)L2IaPJOy;Ljg`D#K-C^~aR0%&p@Vkow{tN8OYiPFJ6fxp7# zT5=>!6#ckU+=9^tot^KO$BIgw)&0A%!WMZvjW4*bt6obBA19cZ5cX>?X;o2im9XY` z)-|(}@&ZXt_n$?uc^N$G@t|KUY_>u{uSypHcs+E&RVteRTmft#v-sJO5-_Z9|PAtIJG2 zW=WZ#>Fb%@U@qZ>%gde3)f`nrOEkB#%{gv4OUchzU2jea_dY+_u%Xc!XjNBUaiffX z#F_PtyWn^`Yk)_ScVVZ|t84}FD{;+(lOw0j4v4Neyv_n;@XBb4CEqUzZ({fcb6j;P zX}^b`lH=y?gDTEgXLHN<_@^tKoAmKsMNH~d2_zDI7%qn^xaub;JR9ATuf*%S*1AJ` zdpRIQsF?erj&IY8ifg6UeOm~@e=AiGph|VC|LdEygfw@4Z3v|bhtmbTaaH+ zmt2<>Z8x1%QiW?0T+OL6x+SteEHd1@nVfy!*iI$e$7RfVt}N)&X}SA@XG`_Y=(|jl znn+TO7N|YBQCocM9{baBz6$ZNT4VmCo-~WoBpF(HBP|)HSFBV{o~*m(&_FL>+PT7l zwCiqCsG*7dt9wZ%XRgw(fB;Ux%FLua`A2f(7zuO@kv1#3&nTydvIa9;P<<7@?NsZJ2XRe>jKTlAc|uzvyvsCiq}cm|6bu zY|jP33iX;dctJIkYm#rR3upx&mqs)BBdu6q%o6|c?ZUVBXR^@fI;^YK&r8mEC=Z9`eMG>f_&)k78`}(W%HY{(K59q9bUMuLoE_7ow^-kpt!x|Jtu#i9k#0Wjf?FRVhg(^u!+f6i z*6iIkL8ExR)IAjxPX|QJKE#*1*S@|nHfclZ=96g63_jA}OC3Pf*w-7Jv36; zHB+0Dxd+{_8aASCSiNDya5SXQt^AhIjbeu-7l&dpRITlD3l=`!y|6r*+%!TZ#3u|t zZye>4=G#?qCq?#RDHqs?w2aGTZg9Mk+rNy<@w9U{S|!=2z*77J%V4az=Sf-qEVgRN zO>rT_Y!%B@iDfZcreFG2mrRG4xXxU^QtQ2QD_x>#X{E<1s&dD&0+S{<$Y6xree(jj ze%&HrfwjAPLW@o8lK0w@PC&NNBBlk=1q?rzF)AIS8F&qQBbbe zyIU_#Yn@Xfc~`k-$i`3FdfEol$-b)m)Hb=HmJ#RGyP&jU1ncNEowreHY#QzuT4!9{ zG_?NUKVd&H$wl+np8n1{*9W6VMuetf9lrh*lSeAn$_q+XO^&|%H1w%zcnhoK);s8 z7;IxR5w?4UZ^mzvGjioY>4f+48{L~cce`m?t{T=_wbij%HHxdZtgEz?Q(rW`{bu}e zzLrH`vT!I}sdGz|t9lEuDH=~DA`!j+4(oBdYoI; zIz(As>(a}G-BLqP5&6480({3rLNM|uGOa~Rd+i(Qu#eL_mM~22DgJvHmdsN zr7>x47k<5#8F9?RavatCsPb&&9~o#K?t4kFKAqIVwA&QthK=If*>RBwV~b7XPp+`4 zBUdpF3At1HUKo72YxsV?wugH9L$?_nd1p}vW7Ar;4Z6|HgxkW;M>bVnN1YQ9F_3rbY0L6ydXk}|%y@xNUfH|rj2;m{tT z58hyWA92z9{rL$FZkmKO3za&U?-4fLCCn#R64j=1zs6}uovseWM)hQ)mC&{ zHPA25dLLSLuyKzTO=e#b{Cr8zy9!%>oc4H?4B_v~)HZ~{-k*IS(-ij+^6p$L)BCY9 z2VJ#S4v9m>a)r|&8rY(T0IDQf${lpVsy>7Z40mrlbX;7mtQS7Z-m)IlK;g8qpl{+H ztd3<`nsLcDFu+9tE7*#**;TzYqCD2*a~RPW!Xl8@JxZ7uHLRmM4xO%4 z&d=m7JfRCj?^QeUz~Su)T58S2YsEXqZ+($ct}!W}$`)R6|2szVJ959sj2X_O+nXN0 zMdZ>e&1yS#5|@QOsXJBCBkowc^5YiA>5>_OqVD^(BcaHgl=m936uX7Ke~)aDyNXxi z{OMNK!_}6=fbsU%anZ13pq*>Qyt4UCx1MH#4`po!pK6*>qhTNL@nMq_OcnLTIFWiD z_rk1Z1^jUZ^$vSi!Oo$n;Rge|%DdOqf-vc)!zh%};7gu|n%6Fo;+b9@s()$ zU4+JV569;UuaNvnN=@zKGR3nay^$(_>3_(e#7jh!fC*O$qVTeBwrubGzpIqLw_R$6vEg>ll58T}VJ#M_U8SVBn*La4Mry z^Z{-j@><=om6TcY6Dc@B9^xT<4_qf1ms*{V@}|Gd$j;P}6zST0ZyFQjsZ#hcVUU2U ztU==4#Ivxh6b4I9$^Kd%lC@{vo7NY`>*PkmhqSDOr$wd3a{b)m)?e1pl0A>roI6^0 z*woY$sL_lo$pe)3&v!n>v~c&$S}SIa>%~gKqRe|PjqX8Svdfb!OYQa|Y!8lP^lEGH zRaZY>YIO-B^E(BUUR54yP#6sCUI@pxAIG+&)fGQ8ikMn^d49Z3W%TkB*OM1OhO<+x z;qV8e;UjCT%MC#3XEDW|5rrR91_`Kos)2p-yuVZ|+*xRcN|H~l+{inO%UV@G)T`xjAlC(DbAwI8-#E#r$EiN~^C{v3NtsIngK0{6T7w3>kz{1z;2 zN+@+4htLM|x`?AR))p^i2?{XL!6JzLpD-)QC!71?y|uiNUGI-^y_!Qt>65T0q9yKD zv`&=NxwqLdO~Rk+%Ns!@TQE*NH5%c>LU=C(gW!j8u14O1XJ5 zE6IH$M~e9}>C-#S2JlO)bJw0doHr~AGg0MsAj$FxpE`(6**$`Lrbz<)I{@$=vBc)warb9 zF@puO;I=@E+2b_VF4IjquiB}T8iZdDcHZI+=fI!6FtPehf#lLhx2?M*SZ&%+FviYzDYbz5JS|B_qRv`x~+bY}AGDh8*j z6Qw}CT>z6Bjv1Mkap;93FI>{j4rN^+NxVc-IO#9OM5*e0sIIbl%;wrXM{e*zW(h^!dX)Q;j3&og@d4Ru0_^Bo=iF9z@2 zd@CP)ej>I?!F)%?4};`_%_lMS_ov=CXy! zR1Ia98*iHBTJ&I)$QhYpGM%iC&udS zy<~Tdr35~m*2Qt^Cap1#2+7`Nx{gnBuB_sQz}>#HBtw@fIGHPoM~V*l$Q{3Cm@KEN zxAJ0;!7jI7mCn`e2)$(b+1JM!=!>=}gj)tbohiIr61lp%2jQrdxT*N=K@q7BqndG| zE=hGH=I38NIt-e8F+IN2iNufcuBI=pUNS+VC8VYK0|VhBs`_ttQnmHs-wv&w6R zx(TnkRr_>PmAIu(fcbcBGfuT(?Wm#4&hFaDaz&-dR*CDs@FX;HuLK7At18@^smHym zNZ%O}%b(=8Ez4=FqB+!4uTJW>t-xt~QulUGeZ&*HBh^Ygug*>#TffZYKfNKstM7jkOZ?dlhyH8|sxi7PH5$Y@DkMY}c;Q+0g#t zRPPu`?40=ab_0Ixd#QG9t9g%8le5R&=C!R>O)@tlKJCsUHY7)PNe8kpqlrJMXl#Gk zf0l*1gGlM?w(4AOI+5~jNBjMzdP~a|>l4FA3l4`Ioi+>F{R8U5pMFu3b6{@8VIPkX zvTjo9?HXK{eYDZ#7T@IOFd^PP3z~ln%Y_@I5+~|;R>NS!;3hsr+6IA zIzYJ0EWZJcb0N>S!q|fPysr35QBMg{T_xGD8X(fUd>V)})RiTr>rqdinmpty&ZLtl zfBW%LCEp^|E%mn|580R%3mFf^g3eNMmT%$8+Im{(Ne1N{{As+zIJ|SImV_=;MQ^F) z8H=)9l17zJ8)yZ@Oc8|{=;|#?fazyj9X z#`Evl{)ZI;MoGRDSjt##Hka0TOStWt; zY42(|fUz@6tk+8M^HgltJ>x0Kz^Q?8xvEX{j0PXRkn@p1dWHa{o4)JrUaj`=+Z9Ra zwYQ`zx5b3hg|!(k#5OSvHE#NUX0|KJ7SD=JDzssfeaZQZ{g|SmN}-XbaAFHzgjVvx z(6e4K10|ITBUOOmiq=bB71D$eb<_sV<4 zTnDU@25OAzuxmkohE=0n{F+4flbuA0l@=HbG?K_W1*<;Xexg`Jrxe`Qj&r$a?Qt(w zb;>Ns!oc+ZVec!0;taYqk>C~}*x-W?4DJMXhhcCH?(Q1g-QAr*2G<1l1Q}csJb17q z5L@ouyIXa)c5A=dt=+v__5JLAf4tqN-?z_mp7We;(ZY>M?6|sznd#@AqjX2ej;QIz zFfobz&HHDQa1((hU+&y+zvo!23pn%+*&{7pTj`y|D^R`d({o&X|Lxt^&#U$;uOqM} zE@C0)r=LE@XH@tf`%38L$7Q3&wfN_i6YA3B8@^wK{2HMaHLleO65i7$q3JcGd+vdQ zRg7y@`-Op)bwk3`&n7{UH`u2fVkSo`5FmJ+k~#of?tAJM-fLG5)mND}TBlk2Lj{-z z)TT)*?xdZWhKT(lKcAh{-f1q4+tvkL=e%=2VxRlU#L?5IG%$~AVz z=bjw-dR6aJKf4!dx@426&jxv~)JP@kH#UmYu26oGzW6=L$j@Bwgi6qXYv$Cj(HQkP zWEzb$tc2cTvi^iqtG3jJMKG(xALOq;8rcG&_`tz^%P4thpp6}>q3Ru`_o-{K`o%%C z95nFAI?_<}cB+%jwV3nbb9_R@kI&B*$-^SCigW#uXF+O@czr7>@ikH7{A~LmW}fNM zlwH8dBFOxQM^Rk8Sxzz73yfF`s~>)V{|hcOgLe3E?1p(;Lf9Pb`*P0wN@p=4j55UZ z?Pl5iyUTBMwKCG@`t=Mmshu{RmE}tIW^FiqErq%GN=S69l%=|rf=A|{)U~zMg_<$b zk}X>P=*+9leaC0ZU){aWbi-TYB1T@$Q_a$F){X*HnnmAe$(OuDwZGw$TPRf)oIiL5 zt*^yR+L!(XwW@ZUU+M;8VF3<+NbkuVYWsg;X)X$veu2izgvO8k>Km&21CDxlOz2-q zVUf|e_%%)pe5p3w<<_hIo>d5>Q-x2M1zW}CV3;Voq@=^^SSgff6 zWD>gg{h$owUkKN56uQ#%@+EmOYy`5oVSD*Gf|1+R*u;$K4~Fb6t{3&bk<(Yvmx%Xr z+n?e+j3Wq@qNzk91bVCA@7gaz@RZ}8As5~tz+S3Wfbu&_Z$EZ~1&oCEM^>D>G!eNF zxS5OSFA{3`HM&U34Orj@HPPv98p=y7oZYXGE`1zLz8tg{5k+l8L}&>AH{z0G&diqN zJh<4yj!SF0wLjAG6D%gF)96JPU_UIc{FxYL8#&$@VNW_cjVgs?B#r6J`dU%SoN9Gy zSO0J?`_+9WQ3jcH;!MdFa3%0X1>-Ukc)d^9fQ&2)-oC=dLKCrMWW=faIuaNbx2`tE zZAnfNu~OaKsCh%r_i8vrj84X<-1zJG_E#0fTs=di4w97hwV1S@OcZgoITsUx(M#oy zm8xI&q#xZ7AyU;jtESW-$8DMmbR%*#nv-x6cy)A*%OUG4B5cnwB_%TLy{P-YNQABV zaTa6T>}ZXurh29OGPZ1yRK8MC=Q7=UiM^k*QaPL8$oA~iZ7q28-&FVrHNhK6E;!XP zD+;-LBayeC>Yla8?vI((*(?Jh`!aci#J>n|IHr+`QZaBRoL#d9j;2T7@=ICyl z3CEO{f-Yk7!hlGu+P9E-xrVucp);~;BZY_zZLeucrctkarXo`jbC>=bXLh9ze{!rk z)Rd9g++kyTKoB?4H`8^6gi$YT7v=lAS^sM&=j|D&K_@3bP1{2lF@?)!BO0#r{!~K1 zu%aH_KwyZDMhESKO9B3bjV2jB#s!NVeh9-p5>(-ZTx73O{?U?&3?I=(foOzeFu>wW zmOD>_ok>2{Fhz% z#9zF`U7lN}@6OKqh>Na(Z*OL?;jkyKtK#{QErF8-kdGYAQL6>=r)HUGHumYwVHzFdy z6@ByWeB5_VmXXVg^;FOOV9x*ZO@v!8hjbUZh$oONbHCn7m4T21j7U}?^FB`5-`oGO z`hRaE|JSDc|LR4{sd5}rf}tWAOu3o+jX{bG;8)<4WFrFaZ2Y~wy&r2X|2qRi2=D4j znEpk2VkQz|su2YMdM%cgcWjG`NR3?v#KP=Dzq?&?OJGvie@G&Pi&T3*AxC+Os`zV1 z*hr&LQ>w<*$%Q=yX^u_Pi3p#9F2PZ)fXg4 zV#vv=oRs~$Kq}+>M{nG#Gqg$I&bHzBNvE?7E(5jU|$0#vkbrv`w{gXO5Ru}#I9xh9n zt$f8 z7=25Xlk4(8mn6?o8)aJI1hTcYE5eQfZ*}`Mvd1s&P4zY-H{!wL>>_Q)N}4-d6D zR?_w3@kaEc+dd{n#&&lp^5C#z2b<`n3S(83*@(nAwD{0O#e29tbe&$6O2CxD!pioPb5se1RilNSNlGg-+P>%pKY9(55q-ANaa8F1Ig>TP04kv&H-@ToW-C{ zQi->K420rlt6*YE)SzLeNzYC8fWmP{9g+}wDZnsiHuXlZ}wRw=3O2-_^C<$0;R)_p!Mg93!bRPIcpW>Pbc)<;Y1PT_!7p zWMh{u%L@!P(rtYSxUVBv)J^FlP(0G`2b$&YAn;=kod(`771g1uXmdGP%LNT0CVxlD(SyizG08 zFv7heJ3Uol*a&PPqKs<6u_`6QAaHZIrTH@N%aU_v@5rp%);ql0cqWBqSJOeX-~{8! z9PifjK^Fs_E<8mREt$lPk~AC^fY|E@GMEBL{5-yeohIU#@&wd^U(aPO%XDH#)-CTC zlTu#s?u>}p(p%XVrKZ=Y)x)j$K?xIadTnQXb&f4djHHk|qCJACQ-VIqzev8NUsdE3 zm_^IvLS=$`UqB&Niqscxv@It}YbyBB*kV0=U3$6_;+@r^HRF<^uso(3Y8BGNR);Im zTnN-L9q}L^_Aa&@T*S^7>27%_h0bA%tBX6^3=2jXhJM~H=Jv&sDVDmtt~HsAgxK{} z6%M9aq+~WeJHwm5Qp%sDc}*;T{usMm66{|7KE@bM96P+FPtHs@>nWBR4Xom(BvG!I zBQZD+aKgf{sVLj0x$AUO@!^!E^XRh;E~(GtLK*fbk%v@^$umYL0=eH72;tU(Wy6qj zNykYHn^mX-dDd0#uZqh1d3D9A)~jDhHo3t968fQ?Vq3!B&KmXtlV@EurxR=XLL9S7 z!BinyY85k)N{bu*`Nrh;KeN*WqJqgwx^pElW}hIsq7}>%wqQO5MQzz|2{%rzN`8c0rd5r`r-3@5YNy1x?{Xhkj+nfLZ01yh zf+tmF^9HMoo+OgNrcVW-)vLeAA4N*)Gv+ufN(O2bdOedl(aW>6CXrX7Zh|NWBiXas za(yQUw%BOdS9ra&Su7|~Skz`rDw<4^4NwxAC>k*o1jrN`qy}AIUMQk}5AsgIpl0x% zN|~DeFoqvDajsy|+9qF_n){M8yW1~Jd9+KF1YPUZcC4;Mu(s_znq{wbtAhXnjnx%o+VIBC z{*t9Ij2gcXMVH$~qaO@`X1)-Q9mWVIHO z_3M0YcDXC(os{NhW<-24Uq#MYE8D@T*e-vk!ZhewP zM6LQ1g}2xmcdj%$)drgEW@#_A^#YCgYL5=7a}+pD0@Pm!I&SD9Dm!u?;vRT9@}1Bh za$CA}ZMTZB_&-Qbb72&r&A}{`GL4c{iVf1UGE^`Wel+-|aqA6TLq?#Sb(ui^l+;_% z6GvhaO#yBGOtw7-<^H&Y6a(=@p}$B!RqYf)eHp#+&DakS2ZyqGafxGvG*D3F))$yd zWJdDLO{AFh!=;2AHuC-4T*br765sr5&nv(5=9cT2I3t4s%o#V`gj{?&mg?8})Wh<$##VBrR8Y z*?%QOotVuN4O!2W*=h5rJ?{Neof5R&42LvWC0uLI1CKU9vf&QYIWBk3;-n739y1~v#5d8A}Y!r z4|P_rp}vimaC3WRIwDmu^Uc0Ohfdr61~7TEzkwu`Duq7I1HQ$XiWtwsO<~KgI#jX8 zZCK%vF~xjk`2g+)3ZrpoalZf?#r2DYd3>NTp1u{A=1e*LQwCQu2%jR}9#lHF9=pS) zgLUZE);cwPUN4N87JC*d+mSKxIOr_Gk}%_;-Mk6Z6TJk69T_1%T?gaeIY)WSOlYbX zT^z6{s8O({X&;5-8YvoGO=ytf=e@PHB4BsTT}Zgx`sq@PbwiypzTevBNurh|a_a5H z++j#z3sF=PldpE!`LyJIDMUgl!!D?)BdA8dglVC*4ma9fMG!UURRz1G1rD_*EN=aD zV#+)a6(k^wGSj^Q5Dl{sNfS?0)4+(Bl7%+Of=gC++%lqblhFd=Ic+86dhVjADvM!# z88?SbSwQ%5D^k|8b~@80Ve4mRe0YJcAc2l3-wiP%xFOk{H>=olk9D1D^M}1WB}7K{ zd=j>`Re{bil@v-l|9XN&fXcctzd%${kD>Cz6XfdB#@;V_c)VN3ZofY-cI9HC0+U0d zDP~)M&=cok=pj^;u})& z8B@0R)d>$tNGh}I`lLHF-Nysj27WfG^>n8*Pmik9i-w{mr9?HSm&)Td%{_VZUTcf+{x%1-sNol3`>uiXG<$iOQ-0MdIp{p;YLvU=REKika2gr zrTA?8*Zv?uhV7nGod5Gp5l1tyQ`#$&x406l_V3G|bN(vw`_xjX9fR&f55C`=6?;7- z$lPqlf^v!X{@MIrw}#5*fH4^rsOPhPu(tLa9cHLZcH)R=jGg_{vHbb}UMMOqKNof< zxk9cMD_{|%5o5TSV_bV*q-SV1-R&Cx$Ke<4uVjQ|=o?9|S(io0dCADXNa=mC*K;ga z0WN(u+SLj%1140f8rJd8cU4+VHUW4$D)f#CAwOYdE@T9hbv)L+bc!a8DRKrXb@AEB z)>%vuy6x^)+Q`JDLcXwRTi_&O^3DD0@$YX>y;yW>qY`5LiiP|v^`1UurX|OhQ5AWU zS*xRksFx+gttgX3Vs2XxSB%D7CwH+ITN<8_e|a?6WR!Pg+_8Y~;muWN_eHw@diOQZ zDm(q9WTVJ6=ZfIcNAM?Di{s1|?CSnOLbotrO`Lf1kqf-?biL?!{^jbM+sfI_{Q&L% zFfPuyDpio*phyRwkbA`N);Cml2I^Mss_ofPzi-403CSd=bG+~ed|A^*s^=x;z|Q!h z)R^gzi#O{8eUCDV&L~On;93#fKNsAnvcI;raLn1Y#eZ?{hUmN2 zxovg6BU7C^Zd>#m=;mOTNoQ5*IzP`ZL>k%I?!h9U{!=rRm`9vYv#8OSDL>UG=BKYK zKujW$bKSLuN$Bo~z8;<|d@?a-d2p0A0ZgAm(bZTCTkNO)ZN-JaG39i6S3gCsP=2 zb|mV=o6hZUd!jXR<2=}ge3%Po;m)619W4QSc+B@QyacBkl0S~kL4(MKs}nqP*^2O< z8UbR=VBYwdqfsspq!>>}9u=zrx%y%HOety9;+j0IcbyT5i4O4Ci^qGx7dXH?#D&~9yky6^S&SDc)*iLUciSc?peb6!il@%hAb zf04MMClnKOiPY&8s;knto;A9OjK-rDv9w2Ft`({U*^PuJ5`l{N&Ca3LNfoDp^@1rd z)zmBr`n@pxPs;<7f06ip%O6w0VlTE+QmVh5{$|0;{dDWHsm6aiqNk)uG)KSyfC^3u zJHY@NveT^|hYjvnZvcbORb9V5xwnW{Z%^)iOBe-}^Kc0rT*gaL%XhFgpS>wct?yEN z$y2_&5zIQC=4)5)F(_7~*4&~N02fi1_Q7Y^pj%dp;{;{gldcC# zK1d48stW!^QuP!KZoUoidA!_t*etxi`it~P`(*wirEyFpJUwAm(V4XRrY2nPwRO`2 zX(gXNHMPp;2dsIR70W%q-LS1yHz@TD0|r{-o?%$R;RnLFeNL$ zb!+BSIc3-}VLhIxW2B170Z(D5WOX(%=c7V$0#%iRAug#V^+)+&k7{{XiZ^tgEzpm# zKks{Z%ee_@O9ecZ|MUHuQXOcYM^@T$F-Zo1urebiC22{o49hF^<-wEe0XRKA8U%bP zE=s;3Y$soIQlgLqyEKxoA8S5#%@aXc$wPZ;mpE}Qw+u`S#kb21&{Vp$HL2yIdHX>K ziGjA-i2N_o&0H8yeND*9c=xw!Fk8_s7g}T_28$^w7|YQ(=A4{C=cr&@Ok4jOr}_nT z>yly7q}M{*2KiAYridXnQKr$UqVpr<^~ph+N>Zye&^MzqW71)~Fgblb&8oa2I31OQ z*C<=s1?onaceEVkQwu#JG@YyhZ4suVGtu*e7}GKcXv8av`tM1h(!d4yr6XiVlv?;D z8@EVrKbptHa@A884BOAOI@ z6wPjFc*HA(xJvF03G}9BC(V*3J@dYec~(3zF+pjxFO0p@LrY!7PdbD<&(>_b76bi6 zUcx&}_FO!P3n>=g0zOyzgW8Qs^o-buz?4yf*-C~j;IpP!jXf)&dS%b>N>R$GS}) zy!1ObhT;Z8c`})kzsu^$i5B~fTwqniAv3I!Oph_ykKixTb3u3X8SOjn(%z%4FQvz& z&!X_?q-=nk+&hsE0aO^2_KziILXv9Xw$Xw1Qm>a6JqX4Qwn~qIUS`_AWsiiq^KWM_ zjyac)g2bfN#%AMo6*pSzMJiazE@D8>;@`JFpZel0-QJ~DU9STb&e)FSQ z+&ie2p4RPE++!5Mb$=1imaETCImd=B!-md#j~dl6r8uyRn#jxeg_j#%Hb1@0|KcWv z@Mf|WRMW-CY|`E^v5??*mYj=UQv_ADv<3ysS<|Ve$m@#ohwpabk+a(e+RJJ==J*lV zZmE7wT4|H=^66!yR{8ctCt%A6Pb%#88dq=)q1VFx@wR_fC+Ab&?{BA}DeOL6k3#Mj z?}>D*%NBZh-Zsh_D(}cIG{~@nkBkU>NB<&e%&Pg;$g3!iz6mE!*lruBGm0SDkt!$s zTK+B6b@A4qD4M}l^{|nhqFG(9bJT*$)<$a|om$FsGz=I}zlDLai{^O31A{t&+TxW$2)RnH~V%x?uk ztZR2KW&z?dCOsgPyWEn?T|*U}0cK&@yGBJ_zt^t2Rqs8F>%*q|V{MT#3YpNOr<2f( z05ckAoY4?MLpRVuP#5i!uaQ+JF9@PRiHkX=ca(f2gLv6|hKAW4P0)Vls{=iRQ$kK( zAA!6Ln#EmgZ|Exhl3jjdKMeWKJDFsULUdS)U>c1~Q?SNuAc^ZO>{GQ_%lt-s8e+0; z8qcXdwV+eoi$D(84OjPum-mmM|Nj7rE2=d;$l2 znYun5lHtB?p#bdWa08K+Mf+*7$`7!HlorAZYMIhDbCplnbSlO@&Ygtf(I^L;+`j0; z?z)_e4x0fP`LB;0eGEC}UCj1gHu`0|{sujSy3VP^)QBr6$r|QU;7|<@*o#{F>}b{H z+?Dwb`Ocy+fmG+ulgVc~1z)+`+n`r4wrxY}z9$jfU$)f2%=Al-{Bml+?|gnwX_!CIpdW9%uP)h9OE5GFB3PPMay*;qjuhP84$8T%-l@uCv@vu zE8Qwt1qhi^_Nx^KEW&DCLgXE92mT_l4|IyS{A~H;n)_wH8}b(^(+__RnMqIu4=0lx zyF(zW7-5QC1%&VFmVI}Yyuav}bhL(66$z3P#=&MOXQJ!qO%d3HZrHST#}_sA)7FC3 zO93;`FKs4)oAdk93fF+GCzA8v%YxNj_L!;~O%bDFJ=Jt${T?~c&XMsul|l2uc4GSa zRPBtHtF{Uj|3!sfcjg^ z>5N@J`{dE|sD9RMC-kTHJ4KSd++T$~z7|+)a4mb2y!X20O;uMFUv%k7a&BQ5{m=Em zwKg?kI>2hiz1H_h@~#HEP_Q)iRhd?zzt&GlAsYb=Rr*fO%ny)S`GkYjRW~ARA^+7+ z3oXVc&a0i%CIU>n0W*j*xJkn1;0V3mHE8Ea_w3hBUOt{$U{YF4J1;M(NTmOQ_t<$~ zxiN5B;=YlkMoty7grSPfppYr(XM-oc46fT-#`%MRMjEtYI8_{(Y}1e z=Rcn2EjYy$GN)+Ij=%TFUzF8$(BTuF*2=&~HiYhs@=RswDJaKP-X zM`lftAx>@3HKGtXV zMKbW2X5MTqW%CUGYO67<9-S0Vl336;5?G~Sy~?i_BU%wXp_h~!-5`}*UboX0%|e&2 zwSs`0RP?N;LMjeEVJ$|qkb!ZnbCj~CA>Q@C{WW^7a*g$=%%kC4CSj8?bP=s8d=fjJ zGhuCI5=iwc`3gEk7ZjeafFJq0t@Jj8tD#Ciip6Lt)6NJdvc^?&z?CJ~DNd+p`Nf-2 zQ8$bcv$(EXwTLyOBr~_-deE&|wUh3q9wFrNPci7%?+$^8j|@jbryh64-417lA@7ct zwitcVsQMYLHps^Xi0D<3iXk90+@|iu`aipCQ)x&H+39p3th(zIk98y)3&=hYq?0)K zV~f#fCFy;nIAggy>!3b2maIig&OzBz2x;iD9d-dc&)tF%s#LAtkVC=mOt-ZCic7KL z*gz1#^WicHSqy zTFu|{{~Yo^t^Cgq<3H5zSNEzG8Mj#{qpo4Zw%FnM^l>b`o!w-kUmvH=N`F3gs9H$1-`(pJ>sGj&COdAmH|ywT%#pr4y2 zP-WU>j><`pGEj5fey$+gX8~u$he4DAYhSFoRqyHp%E=e%woawJL`s{xPt`plHJwj1 z(Sx5NGE=EOl*CNklKS5n7S<4g5v+@Gop>*_4yRW8zuAUiX#IYS`u!2yE%z6R{|~`0 z4(qxlAk*Uquc^<%TZ(hHH@#2RIQ;C(GRVgziE*JUG~0iXc!&#bQ_pDG1_wUonA`FA zma=bLd-oOxN$S_{Tr%NUD+egyPfkwnFO60n2(kC2%f~E0t$Lx#G%qR8rmhHY#;w4n#$t|N|s*w>t&ZA+xxdm#B9}@#ryx0XBfZA9E zo?DDnFg%%q)y@0@82fvjh7WjoQEF-r=;t<*mC=d=4n|vwFz_DC1vW$TEJye%l@`xa zw_P^HN{9`sG&bmezz8AJMf3Of0Wfqj;^xh{cpT&$p~EU2UUs{QAGYaz{WJ#X4mR%c zmdYl)Wsu+qcnf#ocM|M)l@48fMF&&zJ9T{d%QP3jUza*$T*mW!mMJug6UJ10PTc&J zs3V7iAiGrwIu(tyFJb>-_l&bK!P~grMHl7|tv9dOf57ZgDRHt_mN`-gY&41_+H@nT z#(rz{#ICA_^iI%Lv>2Qu{9MN6ndR~{tf$J_TE}WH?=rsSnny;OQx1+G_=f-nXKP7W za?;c^`NGmnHY0Bg+(Ix4KQNzXp8b%xLmcuWB27yyNF$0nq!)gw)=kK2JBH~N0zD@5ZICCYUW~oXRSuwRt0Wn+*iKu{)h@g^ zI>%yX?li78e~2~7aB0N4&1I!Ux4w9_ZZMT@(A(I=(ja%NZY6JT)xc_EV?XV0RE4<- zNZulccw%ManaXnpvM0wqfH=j!7L$W+JQpUEt>e|QSyVDO!Jb42CM8P?8lsJN zdRXsJQUAHvkH`$d$ZdyHMt63cPxISsMT=R4r`RddV+*t%nS_m+b)PkN_HJy?v5Yxc}0l0<^-7?xqYL%;743u!zK zN+)9PxHLce7BvMsHi+Xnn9q06F_W3-5Ofp8Ay|1n1~r(L^wWH?Q$l{Gnsbd^`t1+f zUPi?!(H8OJPC%?)bWLOaeW_~I(4FgZt@90W&Wzljyyxd^y&w-fz_sPYs{ZB1PtYhT3-?vO;}VosF*$=`4VV;{*TIxOsa8A zaJcs>Emh0U^USLSE)lM{nUWrHzUhm#h{z_1+0i(=Aw3tdFv9aE5b(Q~M)Q>jFK zZm}5A6`Oh2$SgLmluF-t(8{iOUxLX5 zm$>35;g%!mL_UV%J+(Z{?_a1$={Au%f#tPH;)_p7Q!yr6HD2f4?u(HD8SC$7uteiu zjIc98-y(QjQS0z3shSa#;z5kc>6}0hkA3-4lXBvQOtmGrxE!)P^MNS&ruM`R?>ofc zqU}^XdSgiw#Ngmf%W;u-K_nmq1!mE1=m?5yQoB~_@Rtye z@Hm{zC0y?%WYVnBQbs5-6B+`m(91L3sij=Vk9^BE&Nrxe)m=@dW(x6T9CeMgp4?EY zait@lFkLL){|Mt9#|>4bR;&7BH~V$swyE1Qv5~;PiM(!YK_%gYk`l5N+kdcew`bk< z{0U6bSZXkFF)Kp_ijn4{=ncx=0~V{Ps_uZa^@yu)(W}G=!nS-01^~biQWc}Ms)nHj z?uzFzG?4Qvb(U2cj_&^Vj`j9~lN}3{ZafoPCQz)3UAv(!E`35^E6gh1?QNjK%RL;d;EjcVLZfwyP%W$iNp)?%434rA7ty*Ibtj0;PbdCJxZ1=Xo4 za}(bl@KuDnxUe&U?Gp>o&z-cN)D<`Y&RezU);){V@vrM`_m>F0ASl{YQ7p93hBipf z>y?IfYYpLYZ;SAV;X5 z=ZYf=aVUt`$pn0&9+Zlvo9tn@KJqw8FbXalXgH;;cE1(2hBR+^V_o$}d5<=lXY&ma zSE8A58j(+Pq_bsIokHZtn`O*piu=q6bZjaC?u2lHG;Rjf9o-nU%IwajEp|Fw?P7tb<gV-#arXPhGz_T}D_tdrqa?{9*( zIr{7>ewmqJbnc($@r>3l4)BmHGJR-MAjo zS}iMU%$T7SfAAt>RjGHBrc&M+QJTl5)pzuc3+vm6ppq5@|bA}NBf2!#X_2Bi? zF>*+yUajFzvq4T0(q_^r7mHWc@kg44oRbD%p5#-oS&<9C42SH)my zhwQyDyGWAAOp2^~^5z5DY_1z>&UiuisH;|s*n zuxCM6k<-WQ6R`S10ajjPAFFqdjMtAYve1wCYS48wgU4-?QE9(ECxVXwPmzaoBGNss zTF2qpHKA>>gqAjswOkBj(W$7j9RN4$x?|bC%TX#VDEouYbOdePyGV<3dF$z{ssZn4 zOI_;hbSbG8vlKxGI!yj<^h`!aiooz)=b`#$^CGpPtknXmNuT;;MhYn_JcKgzi^e_# zx{Jh%=o>GQ5jj>+KIXo&5QH2ISWbF1sso^L4)hUFbAM^Feg=Z71G*OnCjkjxS{tjh z6|&E=h4MI)n#PJgy?Vy zG}0NONZdwFebGjU0^`ZBmJ%_ryxvkr{)^z`-?I1r3VZgfm=w|pxjuN6C?Zd6O4#Kl ze_WrwskI2is@B(dYs>|;>%-1)}SpvJWWt1(b@ zM#@)0LX$LynwFy16p_Fo7*R<*Aq8&=z<&w+T|C*%r`&3%fLqD!X%nHK?%c_EcD zwo(FZ>oqF_7jfS)m!zH@i;-r4t|EQ?DhYRH{iv@7G@p>_7cI+48j(xm-s9WtWEp`7 z%G0`V&z6uXbK=y0@7Mnr&O09-B(yPB^I9u`7W5)uhd^rmxta$y>&SJDoQs&w7) z$Q(Wi?o(;o5sdF$JVun~)U;CT@{uxjgS7@?Qcj*FwDa@}~OdZG8{xm*B48%s9Fwvh~{qm&9mTGYW=wjKyFS;Dk)-z+=_#vWs^He1+r-#Zu;Q8>wo2`(+||S~V^S7Ok=d&A z#tJBJdEDGuQcs*OkW5mZQdjPgUCFfPn8sl5DC7oA&5GN#s>_$4w4BI@TjY7rMq_8b zhfOjy2U)+9_jKj;BU@y5?()J|xf&gvmcut^C)CmJZIBsBuUe4jMRv9nT8W32Q)ceu z22>N!r=I;qq7M!&PE473;L4@?6YAJN;^zDLS(>IL0e^@LZLzbQ?HU$Yvga6IvN5Nb z(2dsLu|ese7F~VE7THOy%r6+g#52$nDIjp(A68Q-zb^S>P3QQsh;_;Sc1DlsB@!+m znPDjxas85dH-*yCyoilPL2Kt_;A?K#We$@F81I=4ninex_HYL)a3Q^A4wGQ-(;y497PwgI~fSa6(H4`o>ut2fCC# zmN(ZG88bS|w_Pcx0ho=}J>|TwU6!z-x*(m{Zm(9nL08@JrS})YF^6x~7}ZrA$O95q zPZ0J3L-iHkA+a)?5+7&w*4-Cxxwq094Kj5_611>@);>VSxT~7t0TRw?icrZMUs+-tq)XS#JQ1RE;(#3Jb!@;WK=19Xq2P^B9L*i8>kKX=E4 z>egm9L&&ADsLG~bj8}rEivtXD(C^0POERxz?_3il6d(XAbruL43FB(59G_aEJ6!|+ zr&G#Hc2)bU+_Z!))dXUOi5A8wWl1SCOtL}<{F|9 zX?#||<-_U?Jh=GPOdX3y%YfI5-5D>SlUI$D!K?@YDy5t`Yz;&9A72{_18wL#tQ4Jl zIjR}sA~Lnh-Fi{v%_QZKRN>~#r|^}mSOa%7flTI(OzCPfYb1U^C8Tp#q6Ei3_Q)te z^oTwRDSZYvVM*h_wU}~*UtZIv^EV^In55vB_Cp)`8vZ38U^+zI(OZ^(sv8BnQvFZ* z&{D_$e`~`{Od6MM&w*3Nq@wSG=!-CJyp2-*!$*vupgI<#AP}1K#7S4KSvsPu+NuX| zgj0|A`_aD4{jkYt#RTGKwnjCkPH-{)FqP__%!oZ~+gbHJ8|n!texrjWS|lWMj&+8) zK9`i9jK@(Ak!5vaMy(^=lFMsq0*Za?qOYo44cQ4F;eDoh81=`5R59ue;$!(I}=TantwC8*H^OdgQ zU4JqRk$pqC@I|!YFDKGH+7|8w`PiA8)!89v{kfoIp(|S1;gA++S89%)3We1&FT0VPWVsLnh?DFOFbQc+j8*B1~FtC#a8tBKf ztE;XRi*HA4w|q3N5F(~bap<#96CGi zI7KRzI#6~i`pO4Cu0npqyJC36Rr)E`g@PA z)cm6Zulp%dd;OXy)Om5Te`Ol}Sh5Hl(IO;tf&xl8hCWzcO6a%mo_dLX3vJQq-&7%; z%D7FVPEE}muZ~rmaMkw#CgPRVO?sqpG}6dMVZO8Txad645Oj&na>WZrY2Iy$K-EHc zXVm@TH^n{sIwXuTm$$Il!=a&o52;6Wz9_P?f1gm5ZGR#vo0VPxseC<`uR78;$`Lh zhx8V$)n{aNY)4IgEDEVG7ZeE8;onHJsx=7EFmL(6+{jKSemm%*aJ#EJk&0Ha0GsS< zI#c)oyXwN2}|=*GbXK9;*MVLaGPncZa;`M7FtaB9$e+mD5YCTsE>d3 z`8Tntx8|MZ=f6lC$6cNt;|3X!d|rk=nNC1MTs)PP$yDxjSH>Q+igi#%yW6#A`t#k8 zDU-ofq1^VDJ4dZq9RvJ^0-V>Cda}KuOXKjQW>Q)%o8I2vd;mNTV(Y~j5&s^1K2cWE z)g?G&HLkbJwX2i13Sl{1GvDWKtC~!>o;j1_3Z^F$pkpGOlJR&@X(VB@nm1|`lsiaj zo4!@FFBgmm77^4S7bv~)VJ)DRlpg@HAu)uPQ9;YYb`QF9nw zY}({QSlW=J#`vU7VD4;6n52L%c6YzK_DKjUtzqEsJN@=Hn=S8eK#FR3WzyFva9hrj zDb0Cq%^F7&5PP+o?&`<3jMy8C_x!y)H!ly=c#{S#(u%*o9ZXy;TaNvbUt?natSS_K zAY}*h^1esxYh$4sRUZ zEZ!7m?-Uh$n;3q1^F06Bg~$X z`w-3LTHvMrwI@#TB1Ja#l!CXbx{lUxW=PemYEtI;L!kT^s!bPsbZ%0J?Xdl%+} z98DIWorMmGLOTU;G!vn8;HD4*XE~Jzguy-nfBDHCqp3W*_Gr z-#@@`{zI_Q`basQ@Z<1pXaF+v<`8Wj-V}ntfPSbTjtumDQ~pNyzuBvgidH{p2saX` z=rGIqDd|<}Y7;UfIpq`m{o(h+t|+)azPSa|AT%+D;XDWN%1$+#>VPF)f)XT-cAhrt;rqXxfRZ)bEtiHBtNy34pxJqJbFpC2AfJp~Wh9OXgNqMO%G0`MyC|b<>N|aNT zbd?idpSH-3okuuOro^fePpTT^kF7(^PNWhQ+jqV3=^}TpFZD^0EOxjNgN#cp-~)v; zMTKz$yW_WVXPB#AqtTv`qHaMl-47xc0Yp094K`16&4?hSy0fVxV_O-qOt&MdFu|{D zn{z8#0554mbEjt^mEH@#v`sphE}edtaep&f;^K1D2T#=!exvUqD&>Scwzl*G2}f5* zRwV9ZWRuCXhU)ZKPSzbwQTDt#RejV-$h9>-e4MDAHak1(>*b3xfFk-NFJx;hX50eN zDCo;dryb1Zr-oa*>1)A^>Rz4(wYWtG=8hCQ3dSzIM5Eb-37WEa<|Uk#_O{mkel>%; zDwQKZip08nf2-TNwso7Ewsx#apiIBVT`H%qw)kojVP^H_|@Ciyq$jt ztNh0$K6(q(BSpDwC?YfN`4N~?oLQjyY90@TNSBp0%F5*EAX(>bHBmX~P<(o8-pp$k zD-bswjoLkz$#?BW9MVX!*>*dc#sBFh8zE5h4kj18at#Z?Nrr{6f4N-C5eu6hzp>tS zdTNqWw>?{1>J=4)l%(v4r1k&$Wlnh)c``C>Rjrbk@_MXD#Y`=u&Pf!x5L2d2`mI2v ziiq;DoTSdPIDm4VNkKzT3e_;O+Sssdb(0WTsiq`CDJCM2@sEXk;~>M?<-a47ezg~D zOiz+nDyvverJQ0T92Sc1D3*0-vLYHhez*htN&Eqx&Jfa?{S=N zYL$cB4$5Uh?w8HO{W5H}HF61K3uK7@0d|b17ZqvP#m%zR0EQ zQihT!I^XK+m-9pYaL)Iq@8fa4=Z| z5vlydvMVUHw^;mUZ8#d-k1B*2h~{6}48N@m2|+wY2J46~_e_nY75e1uDzjdAc-<5P zJLzqR?&=_7#?p&m+Ixn^4V(OH3&1f=lLyF_cMN2mT=aBz^dLDiB-Q4RyM$TgJ^6D{ zW3amU z2Y%yiIIpzR7@k*4-q=0|rVC;hYUm_=JOy4ze#NaNV^nUesALQ9I7OdeI zMsuIiPRRUN!2abk!x@B0PMF`4ZuI854CFVqTK0^uKK_k8(q4c_n+q9&0&lu12B}pg*(8lj?QAHEf`)FUzS?V<|*fkDs{jY)Q{OdaZ9JeXeI#VT;^<*mC$M zHXtb?9o(KnR-u^D787TgiATbUIj);orvo=)m8cN;$z6y4AwZ56& zu>YuHL#J6;eQ*S{Wi1b1IWQu*?ua%sIL{C7ixCC515t2VPEjF~s8r+Al4A&M{Vvt8 znDmo7!I}9XMVsnBRC#~O>~DJSOdie~gjc|QxhsI>fTfualAmJI)J(JdL3zZbHhbRl;)tZ;59W?nip2VDH+ zGjV-8Q~K?^R)~9<#7r>VFG-94@A2Bax@nw*3L^VGa z-SYOD2f9<$0r^@HYuY;vjdwf-9)-({nB%Dy*kZ8*Sgj1S_F8E1^@Px@fY+Wd8CJV0 zxbghiaY*yKX~pC@gbY8dEpB{i37s@Cq05zVC3CmGH|+JJ@D9seID;r%Yhbrj+*_X3 zNMKMvnJZQOE^%W_%XEse)M)2Idu*e#M}2fceCO098^Ztg7y3_%k+vfdyytNfaTFW6 zCZ8zZ)yXXnthoJkS_74!lqI^zoWLD7H40P<^r;h3d?3S5D*M@%AeTKI`X5=cyX2)s{P`l?f`Q zEATeZ*vLxBAH>iDN|scf-VW>9wo(Ox=VraEn)Ei5L-;6LT%dxVp;HQq$T-z_-($E! z*zDB?wbyKVJS|8th})&WrbPj9c>>3(gM-PaP*K`|zPrvA%C s=Gt18YNOdPk79u>7Umdafieh7ItfuStitMa1f{fWy!>}Hd+Gb+@4Ay!T>t<8 literal 0 HcmV?d00001 diff --git a/docs/documentation/images/Text_View_Map_Mode.jpg b/docs/documentation/images/Text_View_Map_Mode.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d57ac446997b86b007e51039d6b1dbbe4ba6c3e3 GIT binary patch literal 112705 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 SUUpzcAS196%A)z&$NvXcDtG4q literal 0 HcmV?d00001 diff --git a/docs/documentation/images/Text_View_Navigation.jpg b/docs/documentation/images/Text_View_Navigation.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6433de10bd8533af9aada00963ef4e96fba09a82 GIT binary patch literal 224024 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 D_CIo9 literal 0 HcmV?d00001 diff --git a/docs/documentation/images/Text_View_Zoom_Mode_1.jpg b/docs/documentation/images/Text_View_Zoom_Mode_1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..31333477987369d814dc4d177850fe5c9a441d44 GIT binary patch literal 79777 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 K|Eul%=>GvC!#y1U literal 0 HcmV?d00001 diff --git a/docs/documentation/images/Text_View_Zoom_Mode_2.jpg b/docs/documentation/images/Text_View_Zoom_Mode_2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8c868cbc74630d54a02da806aab99c23362dee90 GIT binary patch literal 88047 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î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 Htdai#T^uYo literal 0 HcmV?d00001 diff --git a/docs/documentation/images/cpu2.gif b/docs/documentation/images/cpu2.gif new file mode 100644 index 0000000000000000000000000000000000000000..335514b5e63eacc91c3a4e1f34b43f14a214f5d7 GIT binary patch literal 27376 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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

a$r zF?!?@*-11QBV!0xVdYv2r0;oquYhN zX}@X7uX=xc-vUtupuKv?z%}x#xX<<35EcSpNpY9L2G0;ob`}UXO^k-&Hx}p7$jfdU zAPTk$yy1m(5FUTNBFN1wx?)F{t;5ZBhvi*SlqEx)Y^Si6kv2yd#t(%f5XdPHR@0a2?J#R4;uV0UjP6A literal 0 HcmV?d00001 diff --git a/docs/documentation/images/inres_split.gif b/docs/documentation/images/inres_split.gif new file mode 100644 index 0000000000000000000000000000000000000000..0fcb51bafa551fc0eb6473c1f0b41fee9a9b9cd2 GIT binary patch literal 5967 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 python tests/test_suite_basic.py --setuipath . + +ExperimentControlsTest(BaseTest); + +Run the test longer and check to see that nothing bad happened + +pytest -v pathtotestfile/testfile.py + +all tests are in the test folder. Individual tests are in each of the following folders. +population +organism +analysis +Looking at one test + +pytest tests/common/common_basic/navigation/basic_nav_test.py +mac has forward slashes; +mac has back slashes; + +another example +pytest tests/population/population_basic/env_settings/pause_update_test.py +changed it to run for 19 instead of 9 updates. +β€”β€”β€”β€”β€” +Pull stuff to the av_ui folder within avida-ed-testing + + . venv/bin/activate +cd tests + + +_____________________________________________________________ +AV_UI change + +git clone on server +add in stand alone packages + +Test on Server + - automated tests + - tests done by hand + +Move Production to Archive (name with version number and date released) +Move test to β€œapp” folder + - Tag github at this time + +_____________________________________________________________ +Avida-ED change +pull av_ui changes +push changes +notify diane +tag when in production + +β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” +wireframe fry +cartoon icons +some parts 2d and some parts 3d + +geneartive and proceedural things in games (Robin) +art assests, story, play through a book. + +Generative games + Mindcraft + No mans sky + small group of people generate a rich environment. + +Spore - not a good game + +box car d2 very simple looks crappy. + + + + +Fry + - how to swim at all + - evade predators + +Swim down stream. + +point sources of pollution + +Ocean +predators +gather food - grow + +Upstream + - fish ladders + - bears + +Mating + - finding a mate + - sexual selection + - + + +Robin + - much easier + - one kind of salmon + - swimming blobs + - keep the same blobs in all the environments + +add chemicals +speed of flow +increase the complexity of + +Box car 2d - has physics engine + + + \ No newline at end of file

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 LNkvXXu0mjfQU@gU literal 0 HcmV?d00001 diff --git a/docs/documentation/images/inres_basic.gif b/docs/documentation/images/inres_basic.gif new file mode 100644 index 0000000000000000000000000000000000000000..43d77aa1cb8eaf0c0659d02f8b6bdd08f22f34da GIT binary patch literal 5145 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 aOFGi4!Wvq$8rtd`4xei{T91by;P@X8T-oaY literal 0 HcmV?d00001 diff --git a/docs/documentation/images/inres_collect-specific.gif b/docs/documentation/images/inres_collect-specific.gif new file mode 100644 index 0000000000000000000000000000000000000000..19949532d814498784536c2034d083f05f591c4d GIT binary patch literal 5604 zcmeHKhgVbCw>~#LfN(<%h!6rIASfUrNK5Degb0X$lu$yA7&`g$A6YCWo+v8IZOmV$zou7TD%^VO?YYa3bW7+dNZ80jf1>usd#BW7r#Z)U&F z(#6nvixG)rw9(wy&f7#&)5OtlBVy)Orp`MyS<*MThL|z@&8_I>TS7N8BP=W|EcNv* zy<@HD4%XYb)_#dLa&k86>Nc91H2-9J;2vAV92s`3efFVz2gVkM$Xq8^rc-pjbL?T4 zEn8jUirp+M+z{iIZQ1JMo_vg%TC>&KdTUyZ=QcmjJq=#o+r0O;_++$i-x2JadDbs5 z#P8s_9XS^R0s;c_zYPirXBAxyWk-jW^oGMQTSkVBSjAvORBS}mNYv5M=;OCygM(vP ztXRb2xUsc&I1N*A+(d5k&+!RK@om2*rKBaDnM*nMTUzJK-8kIdy?fL5^Y(WyACQnZ zU}AEB$Ir^j%FfBl%gaApC@2yLj+B;`qR~f>9<4c1S6^S>2*9aRr_KP-+1YssfbYKh z?g{``jg7C;XjcORug1jm_V)GxFg!dwK0ba2fP44uJ$m$L8Gz;GWs$0?X#IMTot?3LR7K%=s5Os8ju3Zz2kBc5X`uy7ee-N*L#(NCr^Ii0jVQ1&*Wb0&PXk-ik z)-Z(2<)A14?2JoFK>QS6KYt2-3ZQ^8kOV3~G9)aKOJ_3O#Iwa*@%`VnH~}EBXWZbw z$N$a#A5W6uiD5edfCvDfUWc<2!vH{kL^!)55g`Cz#P#G;lekF;=818_7k{Z3hkn5= zpZ(sRb_nNt1WSi;6U6)*2sR6g3JFL06nC#5Df)^O`W4>ENk$5PHWD&QvE#ORA$M&= z)P8oN!=D)9hlkj^BK~!V;Q4U2y#s>v5!@0H?Z`l|4szX(NO0Wt1w(q#Neu5V808bk zad-O@ljB0&JrIoKhcMhEThBi+KQYBiob$6kCd7q_U=@Vp8N16>%uz)2(Dp=mZ~uZJ z&Ymbc_doINgk(=~T`Iz9b2jB-dfDNKS9AJx(fdV{%6R-safD019E)ao) zq7h0o;$@3Th&LJ}g4qAckjz(e`lZ=-Zgw~ zc*n5Lu+i|DKqXn{p9nu8I67>!XaUJ9t}Ip~&ih59IKNoam;7OfS~?QtfJnr<6S+P& zg=qbYZ}7Fch&X}D-w}$q23wTvzW7y}?5|20fKVi%xNUL!DG25uPwdYH|0*Yz@=vLM zmJi|fr+-iWJ4U&K=?WN^>QDb#4kG@qxqr3wWvRt&eZBNyU-7V}xN~%rNGF zg0aESFxD7*{NsD$`S~1y6i5H@C2aw~ z>IHHpjQ!)&LAHd#2>`lG!;%wH{;UTUwIy-$z2!})Y9807muoKw{DeUldATeSCau^~8N!cQY#RHM(4YCLEB>;RX7KuL8 zi$tFq5E1tQ5OTyj9su$G3P2EnjYL)Fj@q6~f}CE!Ku29~HmvD#%=ujX^?dS%nEM0g z8v2VUc6q9d^NoW?biCRE2G2JQR~Uv39b#4e78r#E{!8hC!ExJ9>)C5-KKx(4{%gd-tr{{$M_nTnh6ke-1JSU?d<7v~SpuHs^ zvX(3P6C_lxVA>9NRWqr+D1SnU5QKb!gsaMQbO^lJ*8Un=38lVP3#&{Bh|c+)xs49x zO$O~Yi7AEBa7F@%4#+<0zK0)fVoLZD8$)(&(!QW!?BF-O}XXD{IWx32Zn&)J8k2ZK7M5rI@5kzaBT=ZttU(*BXZz1W${~ zZ<#Zja1O&y?aR^+hMh$xPfwIqs6N_R0n)2N&tnYoTP}=FJR4);SJ$$`$3s>&($znv z!rcV+%oBS)7*o8AYFY@5TadQzXngLea*p=e#qH!3)s>Pwsk{K{V1(zo++2CUdaFq- zY0+oOsykB|-=dB;JM1XQd3Z|uX@AZlB7JvGVTcSvJy2;ZEw&-?W>&?|CL(l+4F zz8UE9)FtjK4s6dQ69@yIk5N}7MP76Qnt9kI!Um~EiZ)xA+(}QZ>#GjP|uWd{s zUcL{nZgg!SMD!LH?qRfL##tPe`uWU<7kZCxet0R&%pzv?DDC?AYGBRTbZ6>XK0$;3 z@l`e@i&8&uV>oj3yG*WrPX=mbJ3z0n1o0RWZGncCS{GFd2(Ci9^YiJuMIY2%O=fyz z+>%I6YCx(M;48DuI2lA6gjfy}mZn~2_=RAU)hH+mCxb`6LBU-D7?LGVsxY&bu$xLW zb7NuLS~79l2W+8<3?j9Xr>Z(DTR*vQ$m~X)bm~B_+7dTR(~?LPdBc3ok7o}$yM?M2 z&SWSFU37AwP}s?qAYC~l$+%Ik_+|_%$E}SrEUx$IGjk~V7=kh~>s7p4d3}SBg$lAG zDpwfy8%NlaRBL-kQv*&~-5EFvA;e{#Aa6TeOs(+c<2ok$9kpLcstEYMxraKR@O~|T zd+ackGXw4s#YECfugkhYInU4pjfxg%#q7+W54Bj@qy_qo7V2{R_UlqSy$@4AGZaKU zN0dvWGU9UOLVro1#Ej8arVqL)o`=w}wc+wb=E@59YpW*1HCBWh4j(3uYyaH$XtkMe zm{YwW(_==cWhLugeWA0Uw34TAli?xd8G;nf1~0*+KCDtW_q(!ZaoaPL zl4Yw~CpRO`9n)aY)B2jmbgvpRk)W_5T?1VN6rG-C=aF6#e~fgzu%rb$hn6U*_Lh5> zq3OPj;gh+BDA7^UX5G|_k=|2$dWh79zRY9v?D=s$S9sJexm7+#=+lORB=oHc{8A$c zq}vMZR9M?#F-G>cX-B1Tej3F&3$otx}1 z6U5??Lwy%iH`sd6^S!n8>)PY5uhz5``d<|7p$VD}KiAFV9h~NuNjP>8Vn}+PE==Ji zPLt3@-8i6b-R}}xXzP5dga`9XF11QNZ%>-qJl!)tQ5a`-Ev07<#w>07S;>7u)gN5% zm|60u4nMl4d$bbdI+WVAg$8y{@|Bj=UQ3+1^3p>FR~-BJy0DVNksco(}RS% zE9hvm6Qww1cjx2K$gHEq(ydfQ6YUR_AUmg0LcHZby~fC#d!ql3BJ8;)yvxCP>+ta! z_ix(J2DWaE&6M>lG+4po`QKZbAP~Tr)Z?*1zxvsO#pLs;I{~Pv z!@=}F+M2J#Fm1Tr#yKnTg_Xc7?Zdqp(}RNkD{#WvzWYyu2q-|#zEo2^y>MocU<4iG z#Qp+7ZZzG+k(c``P(PWur(VXpb2HY2|Fj#9z3}VEg8PmS)3_2k>h+eqyd58ZX#{4r ztoHcKr2D_lOV^?lA1st?T6(xBYPgiA#qGfq{PNha=)I105L_7BH3MxjvxRH2i?7~$ zM0>ko==ml+1&D@1!v}w?xS6zd>=?zg|2@6N8YaKF-y>a|GIl905*nC!#*+DNvfq92 z{LxRpMR|NTeYZR18|6TJG2!6-r`D-$l3MedPb`fz#lbaR!jtG*o9||>0}U&e7jitl z|3zu^-47PauX0BrEgJp(Q0BE4)xy0uH+8@L{;d@+aQXcVJ~(aQ=<@F^9#`g9UCs9B zTK=Q*uH{oJnS^eotf$taOS4YFOLsmjzZJ@KXK)t?9%RwGnw%@oW4qH^QujZlu6h6B z(u?GaJ48#9quq;lUZf~I6q1e;u8Q7WKbtE`(U49n$shY=q{$&5l?Fp|ctn?x&(p);egDCxu2X_%a+&!?Ix_@?ivPK1d zrx1nlRThBq8g_d*+O19&c9r;?8cpii4);L90UlPeuv*%C)F!!< zN=stYu2imfgDKOAvQ|nX&B|=2O^)TH;-*6#Xa_ThvJb7Ekewy+&FQiyUTDg>@dz4jf-~RctVwl~aLm1Odq2M=_w^xHSJ1WwC--KT+tT0!&6}aGc6AC zhLL#@g@uO-r+Rlh%dr=3BRwV*rDzuoZ`kq2r0u1HMN0!wAG<8|I($Srw7>tWViGIp$- zWOn(mLzU(6Z`__u;^eqt22-VJ(bpAYZ5BZ#kj<)e5Xq>CQI9WaHMUWSkHB8{- zJ4)3n79TXT#t$DHQl_vsiM{FsO+h#w)a)F%GD3!p<^a&7cO)pmo(Cv zJ1VNOs+d8qUGP(M#OuHqIg;)~h2xlAK0fs`yYN%U@3NY^QOi4Bk z72VMQ#}i{0fF)dyR=`^>ARmO~Yc&Y&V^ECZ$FIAz-=99M JOoD;Me*nT6w6*{M literal 0 HcmV?d00001 diff --git a/docs/documentation/images/inres_collect-unit-prob.gif b/docs/documentation/images/inres_collect-unit-prob.gif new file mode 100644 index 0000000000000000000000000000000000000000..564039a0295221785c5bf660524f186153540566 GIT binary patch literal 5836 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 literal 0 HcmV?d00001 diff --git a/docs/documentation/images/inres_death.gif b/docs/documentation/images/inres_death.gif new file mode 100644 index 0000000000000000000000000000000000000000..05e6a7677444ad7a0fd857eda7ab5f10550523b4 GIT binary patch literal 10180 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 literal 0 HcmV?d00001 diff --git a/docs/documentation/images/inres_nop-collect.gif b/docs/documentation/images/inres_nop-collect.gif new file mode 100644 index 0000000000000000000000000000000000000000..7ac38b2971438fc597683a691a1d2f49ce1f8322 GIT binary patch literal 5242 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 literal 0 HcmV?d00001 diff --git a/docs/documentation/images/inres_specification.gif b/docs/documentation/images/inres_specification.gif new file mode 100644 index 0000000000000000000000000000000000000000..24a83416a892c5fb12ae93fd50366dc21a5ce5d0 GIT binary patch literal 12457 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