Skip to content

floybix/xylo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Xylo

Artificial life simulation of plant-like cells.

The point of this is to attempt open-ended evolution.

TL;DR for nerds: Xylo evolves cells with GRN-like dynamics and epigenetic marks for tissue specialisation. Cells use fuzzy string matching (like StringMol) to react to stimuli and internal products.

The simulation takes place in a simple world, currently 2D. Cells occupy a position in space and, as you would expect, are subject to gravity and collide with other cells and the ground. They may bond to adjacent cells, thus forming multi-cellular structures, and may break such bonds. They may exert a force -- accelerate -- in a direction. They may reproduce, either asexually or sexually. All these operations consume energy.

Being plant-like cells, they generate energy from sunlight, meaning that they continuously generate energy unless shaded from above. Actually let's call it sugar, since cells can accumulate it up to a certain amount. It is also possible for a cell to open a sugar channel to an adjacent cell in order to pass energy, much as the leaves of a tree pass sugars down to its roots.

Computation

Despite the term cell, these units are in some ways more like the molecules of artificial chemistries. A cell is characterised primarily by its "DNA", a sequence of bases. Unlike most artificial life models, this DNA has epigenetic properties: parts can be silenced. The non-silenced parts are called open DNA. When a cell comes in contact with an external stimulus, the stimulus is always presented as a DNA-like sequence which is matched against the cell's open DNA. And cells allow internal dynamics by accumulating molecular products -- more DNA-like sequences -- which again match against the cell's open DNA. Internal dynamics just means that there is some memory in a cell; behaviour can be more complex than an immediate reaction.

A match to a section of DNA can be inexact: a score is calculated allowing for mismatches, insertions and deletions (the Smith-Waterman algorithm). Since there may be multiple possible matching sites across a DNA sequence, these scores are used to weight the probability of selecting each site. Once a site is bound, the DNA is read from that point forward and interpreted as a sequence of operations. These are introduced below.

General notes

If an operation requires energy but the cell can not pay, the operation fails and the reaction stops.

Reproduction

a/sexually

tissue specialisation silencing

Physical operations

  • apply force
  • form/break bond
  • about face
  • rotate left/right

Sugar

  • start/stop a sugar channel

Epigenetics

  • silence/unsilence DNA

Regulatory networks

  • create molecular product
  • products decay

Control flow

  • stop this reaction
  • jump to another DNA location
  • conditional check energy level

Death

  • cells die if zero energy for N time steps.

Stimuli

  • ground
  • sunlight?
  • other cells

Installation

Follow the instructions to build https://github.com/jeffdaily/parasail-java, and link to it from the local lib/ directory:

ln -s /path/to/parasail-java/build/ lib/

Usage

FIXME

lein run -m gorilla-repl.core

& open http://127.0.0.1:8990/worksheet.html?filename=examples/worksheets/first.clj.

License

Copyright © 2018 Felix Andrews

Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.

About

Artificial life simulation of plant-like cells

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published