New rule mimicing precursors to biological life

For discussion of other cellular automata.
Post Reply
User avatar
Tezcatlipoca
Posts: 81
Joined: September 9th, 2014, 11:40 am

New rule mimicing precursors to biological life

Post by Tezcatlipoca »

I am excited to present a very early version of something I have been thinking about since I found CA which is a ruleset seeking to be a better analogy for biological life. It is primarily the product of ruleset creation work by forum member fluffykitty. I have just contributed some core ideas and advice so far.

Code: Select all

@RULE biology_0_1
0 empty
1 b
2 u
3 d
4 out
5 in
6 interaction
7 signal out
8 signal in
9 bonded b
10 bonded u
11 bonded d
12 special interaction
13 shadow
14 corner protector

3,4,5,7,8,11 unused

ins try to match

particles only interact in unambiguous situations

@TABLE
n_states:15
neighborhood:Moore
symmetries:rotate4reflect
#all
var a1={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14}
var a2={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14}
var a3={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14}
var a4={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14}
var a5={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14}
var a6={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14}
var a7={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14}
var a8={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14}
#b-states
var b1={1,9}
var b2={1,9}
var b3={1,9}
#u-states
var c1={2,10}
var c2={2,10}
var c3={2,10}
#live
var e1={1,2,3,4,5,6,7,8,9,10,11,12,13,14}
var e2={1,2,3,4,5,6,7,8,9,10,11,12,13,14}
var e3={1,2,3,4,5,6,7,8,9,10,11,12,13,14}
#particle (all except interactions)
var f1={1,2,3,4,5,7,8,9,10,11,13}
var f2={1,2,3,4,5,7,8,9,10,11,13}
var f3={1,2,3,4,5,7,8,9,10,11,13}
#dead (for creating interactions)
var g1={0,13}
#become unbonded
9,0,a1,0,a2,0,a3,0,a4,1
10,0,a1,0,a2,0,a3,0,a4,2
11,0,a1,0,a2,0,a3,0,a4,3
9,13,a1,0,a2,0,a3,0,a4,1
10,13,a1,0,a2,0,a3,0,a4,2
11,13,a1,0,a2,0,a3,0,a4,3

#bu interaction gen 3 
#(conserving particles, prefers linear strings)
#overriding “become bonded”
1,f1,f2,0,a1,a2,a3,0,f3,0
2,f1,f2,0,a1,a2,a3,0,f3,0

#become bonded
1,f1,a1,a2,a3,a4,a5,a6,a7,9
2,f1,a1,a2,a3,a4,a5,a6,a7,10
3,f1,a1,a2,a3,a4,a5,a6,a7,11

#b-u interaction (101 2)
#gen 1
0,c1,a1,b1,a2,c2,a2,a3,a4,1
1,a1,c1,0,c2,a2,a3,a4,a5,0
0,b1,a1,c1,a2,b2,a2,a3,a4,2
2,a1,b1,0,b2,a2,a3,a4,a5,0

#special interaction
0,f1,a1,a2,0,f2,f3,a3,a4,12

#bu double reaction
0,f1,a1,a2,f2,a3,f3,a4,a5,12

#b-u interaction (101)
#gen 1
12,b1,a1,a2,c1,0,c2,a3,a4,1
12,c1,a1,a2,b1,0,b2,a3,a4,2
#gen 2
6,a1,b1,12,0,c1,a2,a3,a4,0
6,a1,c1,12,0,b1,a2,a3,a4,0

#b-u interaction (2,1)
#gen 1
g1,b1,a1,a2,c1,a3,a4,a5,a6,6
g1,c1,a1,a2,b1,a3,a4,a5,a6,6
#gen 2
6,c1,a1,6,b1,a1,a2,a3,a4,2
6,b1,a1,6,c1,a1,a2,a3,a4,1
b1,6,6,a1,a2,a3,a4,a5,a6,13
c1,6,6,a1,a2,a3,a4,a5,a6,13

#b-u interaction (1,1)
#gen 1
g1,9,a1,2,a2,a3,a4,a5,a6,6
g1,1,a1,10,a2,a3,a4,a5,a6,6
#gen 2
6,1,6,10,a1,a2,a3,a4,a5,1
6,2,6,9,a1,a2,a3,a4,a5,2
1,6,a1,6,a2,a3,a4,a5,a6,0
2,6,a1,6,a2,a3,a4,a5,a6,0

#bug
6,9,a1,10,a2,a3,a4,a5,a6,0

#b-u interaction (0,2)
#gen 1
0,10,a1,0,a3,1,a4,0,a6,6
0,9,a1,0,a3,2,a4,0,a6,6
#gen 2
1,6,0,a1,a2,a3,a4,a5,0,0
2,6,0,a1,a2,a3,a4,a5,0,0
6,1,0,a1,a2,a3,a4,a5,0,1
6,2,0,a1,a2,a3,a4,a5,0,2

#b-u interaction (x,2o)
#gen 2
6,0,b1,12,9,10,a1,a2,a3,0
1,12,6,a1,a2,a3,a4,a5,a6,0
12,1,a1,a2,a3,9,10,a4,a5,9
6,0,c1,12,10,9,a1,a2,a3,0
2,12,6,a1,a2,a3,a4,a5,a6,0
12,2,a1,a2,a3,10,9,a4,a5,10

#b-u interaction (x,2d)
#gen 2
0,0,2,12,9,10,a1,a2,a3,6
0,0,1,12,10,9,a1,a2,a3,6
#gen 3
12,2,a1,a2,a3,9,10,0,a5,12
12,1,a1,a2,a3,10,9,0,a5,12
12,2,a1,a2,a3,9,10,a4,a5,10
12,1,a1,a2,a3,10,9,a4,a5,9
6,0,c1,12,9,10,f1,a2,a3,14
6,0,b1,12,10,9,f1,a2,a3,14
6,0,c1,12,9,10,a1,a2,a3,0
6,0,b1,12,10,9,a1,a2,a3,0

#line protector dies
14,f1,f2,f3,a1,a2,a3,a4,a5,14
14,f1,a1,a2,f1,f2,a3,a4,a5,14
14,a1,a2,a3,a4,a5,a6,a7,a8,0
#shadows die
13,a1,a2,a3,a4,a5,a6,a7,a8,0
#protect corners
6,f1,f2,f3,a1,a2,a3,a4,a5,14
#protect gaps
12,f1,a1,0,f1,f2,a2,a3,a4,14
#kill unwanted interactions
6,a1,a2,a3,a4,a5,a6,a7,a8,0
12,a1,a2,a3,a4,a5,a6,a7,a8,0
@COLORS
0 0 0 0
1 255 0 0
2 0 255 0
3 0 0 255
4 255 255 0
5 0 255 255
6 255 128 0
7 255 255 128
8 128 255 255
9 255 63 63
10 63 255 63
11 63 63 255
12 255 0 255
13 0 0 128
14 128 0 0
Demo:

Code: Select all

x = 10, y = 6, rule = biology_0_1
3.B3.A$2.A2.J3.B$A6.A$5.J$.B$7.A!
I will talk about the ambitious goal of the rule for a moment and then I will ask for your help:

We are trying to better approximate biological life not by trying to mimic life as it is--I think that's starting from the wrong place, trying to build a system that in a practical sense is impossibly complex for us. The rules we make are too simple and mimic the superficial characteristics of life and not what's going on under the surface.

Instead, we set out to mimic life's precursors and hope and expect that a good analog will develop significant complexity in the system on its own over time with a little guidance just as biological life did. With experiments in pi_guy314's Shapeloop variations that you can see in some threads here or over at http://patterns.boundstechconsulting.com, I have demonstrated with minimal guidance over time and many generations significant complexity can arise spontaneously with rulesets that imperfectly approach the characteristics of biological life.

The "precursors" I refer to are self replicating macromolecules which in biological life were probably first something like chains of amino acids/proteins/RNA shaped in such a way--shaped here being the configuration of their molecules as determined by the chemical properties of the composing atoms (imagine those snap together organic chemistry models used in school)--that they are able to organize random configurations of the molecules that compose molecules into a shape identical to itself. Take the following imaging that 'q' and 'b', 'p' and 'd', 'n' and 'u', '[' and ']', and '{' and '}' are the same shapes in a different orientations:

Code: Select all

. . . . . . . . . . . . . . .  
. . . . . . . . . . . . . . .  
. . . . . [ . } . . . . . . .  
. . . . . b u d . . . . . . .  
. . . . . . . . . . . . . . .  
. . . . . . . . . . . . . . .  
Where:
  • shape 'b' and shape 'u' always have a tendency to arrange with 'b' on the left hand side of 'u' as it is oriented, when in within the proximity of two spaces in any direction, so that if in generation 1:

    Code: Select all

    . . . . . . . . . . . . . . .  
    . . . . . . u . . . . . . . .  
    . . . . . . . . b . . . . . .  
    . . . . . . . . . . . . . . .  

    then in generation 2:

    Code: Select all

    . . . . . . . . . . . . . . .  
    . . . . . . . . . . . . . . .  
    . . . . . b u . . . . . . .  
    . . . . . . . . . . . . . . .  
    . . . . . . . . . . . . . . .  
    And similarly:
  • 'u' and 'd' always have a tendency to arrange with 'd' on the right hand side of 'u' as it is oriented when in proximity
  • 'd' and '}' always have a tendency to arrange with 'o' above '}' as it is oriented when in proximity
  • 'b' and '[' always have a tendency to arrange with 'c' above '[' as it is oriented when in proximity
  • Once any of these pairs get into their preferred orientations, they move together as a unit.

    Also:
  • '[' and '}' always have a tendency to arrange such that '{' brackets '[' as it is oriented when in proximity but this arrangement is not strongly preferred so it does not lock into place and does not persist if the arrangement is being pulled into a different orientation or location by another affinity
[/list]
It would tend to form up like this:

Code: Select all

. . . . . . . . . . . . . . .  
. . . . . . . . . . . . . . .  
. . . p n q p n q . . . . . . 
. . . { [ ] } [ ] . . . . . .  
. . . . b u d b u d . . . . . 
. . . . . . . . . . . . . . .  
. . . . . . . . . . . . . . .  
Well this is not all that interesting of a formation, but the complexity could get a lot more intense when each shape is more complex, can rotate in four different orientations rather than two, and in the interplay between partially formed configurations being drawn in different directions by different rules. The point is that simple rules that about determine how different states are oriented relative to each other can form complexity. Also, linked particles, or "molecules" should float around or glide at random just as they do in the real world.

The lifelike part of this rule as imagined happens at a level higher than what we normally call "life" in CA, meaning it's not the particles directly or even the shapes that form from them that will be lifelike, but that formed by interactions of the shapes that form. And we don't hope to watch a lizard dart across the screen with this or anything. We won't know if it's too much to ask for until we deeper into playing with rules, but if we get spontaneous generation of membranes and nucleation in the end, that would be huge.

There is a problem in my imagining that of states not being able to sense two states out; a shape can only know that of the states around it. And while it might work fine with just sensing the states that are touching. We are trying to think of ways to sense two or more spaces out too... one idea is a pulse/wave or even a persistent "field" of states emanating from the particles that bring related particles in closer. fluffykitty is working on a version each with waves and without.

It goes without saying that this is a very ambitious effort requiring a complicated rule. So we ask for any interested parties to join us in the effort. We will likely need your help in both the coding and in the abstract development of the rule to do something like this in a reasonable amount of time. Thanks and we welcome your thoughts, questions and everything else on this subject below!
fluffykitty
Posts: 1178
Joined: June 14th, 2014, 5:03 pm
Contact:

Re: New rule mimicing precursors to biological life

Post by fluffykitty »

Next update:

Code: Select all

@RULE biology_0_2
0 empty
1 b
2 u
3 d
4 out
5 in
6 interaction
7 signal out
8 signal in
9 bonded b
10 bonded u
11 bonded d
12 special interaction
13 shadow
14 corner protector

4,5,7,8 unused

ins try to match

particles only interact in unambiguous situations

@TABLE
n_states:15
neighborhood:Moore
symmetries:rotate4reflect
#all
var a1={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14}
var a2={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14}
var a3={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14}
var a4={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14}
var a5={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14}
var a6={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14}
var a7={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14}
var a8={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14}
#b-states
var b1={1,9}
var b2={1,9}
var b3={1,9}
#u-states
var c1={2,10}
var c2={2,10}
var c3={2,10}
#d-states
var d1={3,11}
var d2={3,11}
var d3={3,11}
#live
var e1={1,2,3,4,5,6,7,8,9,10,11,12,13,14}
var e2={1,2,3,4,5,6,7,8,9,10,11,12,13,14}
var e3={1,2,3,4,5,6,7,8,9,10,11,12,13,14}
#particle (all except interactions)
var f1={1,2,3,4,5,7,8,9,10,11,13}
var f2={1,2,3,4,5,7,8,9,10,11,13}
var f3={1,2,3,4,5,7,8,9,10,11,13}
#dead (for creating interactions)
var g1={0,13}
#become unbonded
9,0,a1,0,a2,0,a3,0,a4,1
10,0,a1,0,a2,0,a3,0,a4,2
11,0,a1,0,a2,0,a3,0,a4,3
9,13,a1,0,a2,0,a3,0,a4,1
10,13,a1,0,a2,0,a3,0,a4,2
11,13,a1,0,a2,0,a3,0,a4,3

#bu,ud interaction gen 3 
#(conserving particles, prefers linear strings)
#overriding “become bonded”
1,f1,f2,0,a1,a2,a3,0,f3,0
2,f1,f2,0,a1,a2,a3,0,f3,0
3,f1,f2,0,a1,a2,a3,0,f3,0

#become bonded
1,f1,a1,a2,a3,a4,a5,a6,a7,9
2,f1,a1,a2,a3,a4,a5,a6,a7,10
3,f1,a1,a2,a3,a4,a5,a6,a7,11

#b-u interaction (101 2)
#gen 1
0,c1,a1,b1,a2,c2,a2,a3,a4,1
1,a1,c1,0,c2,a2,a3,a4,a5,0
0,b1,a1,c1,a2,b2,a2,a3,a4,2
2,a1,b1,0,b2,a2,a3,a4,a5,0

#d-u interaction (101 2)
#gen 1
0,c1,a1,d1,a2,c2,a2,a3,a4,3
3,a1,c1,0,c2,a2,a3,a4,a5,0
0,d1,a1,c1,a2,d2,a2,a3,a4,2
2,a1,d1,0,d2,a2,a3,a4,a5,0

#special interaction
0,f1,a1,a2,0,f2,f3,a3,a4,12

#bud double reaction
0,f1,a1,a2,f2,a3,f3,a4,a5,12

#b-u interaction (101)
#gen 1
12,b1,a1,a2,c1,0,c2,a3,a4,1
12,c1,a1,a2,b1,0,b2,a3,a4,2
#gen 2
6,a1,b1,12,0,c1,a2,a3,a4,0
6,a1,c1,12,0,b1,a2,a3,a4,0

#d-u interaction (101)
#gen 1
12,d1,a1,a2,c1,0,c2,a3,a4,3
12,c1,a1,a2,d1,0,d2,a3,a4,2
#gen 2
6,a1,d1,12,0,c1,a2,a3,a4,0
6,a1,c1,12,0,d1,a2,a3,a4,0

#b-u interaction (2,1)
#gen 1
g1,b1,a1,a2,c1,a3,a4,a5,a6,6
g1,c1,a1,a2,b1,a3,a4,a5,a6,6
#gen 2
6,c1,a1,6,b1,a1,a2,a3,a4,2
6,b1,a1,6,c1,a1,a2,a3,a4,1
b1,6,6,a1,a2,a3,a4,a5,a6,13
c1,6,6,a1,a2,a3,a4,a5,a6,13

#d-u interaction (2,1)
#gen 1
g1,d1,a1,a2,c1,a3,a4,a5,a6,6
g1,c1,a1,a2,d1,a3,a4,a5,a6,6
#gen 2
6,c1,a1,6,d1,a1,a2,a3,a4,2
6,d1,a1,6,c1,a1,a2,a3,a4,3
d1,6,6,a1,a2,a3,a4,a5,a6,13
c1,6,6,a1,a2,a3,a4,a5,a6,13

#b-u interaction (1,1)
#gen 1
g1,9,a1,2,a2,a3,a4,a5,a6,6
g1,1,a1,10,a2,a3,a4,a5,a6,6
#gen 2
6,1,6,10,a1,a2,a3,a4,a5,1
6,2,6,9,a1,a2,a3,a4,a5,2
1,6,a1,6,a2,a3,a4,a5,a6,0
2,6,a1,6,a2,a3,a4,a5,a6,0

#d-u interaction (1,1)
#gen 1
g1,11,a1,2,a2,a3,a4,a5,a6,6
g1,3,a1,10,a2,a3,a4,a5,a6,6
#gen 2
6,3,6,10,a1,a2,a3,a4,a5,3
6,2,6,11,a1,a2,a3,a4,a5,2
3,6,a1,6,a2,a3,a4,a5,a6,0
2,6,a1,6,a2,a3,a4,a5,a6,0

#bug
6,9,a1,10,a2,a3,a4,a5,a6,0

#b-u interaction (0,2)
#gen 1
0,10,a1,0,a3,1,a4,0,a6,6
0,9,a1,0,a3,2,a4,0,a6,6
#gen 2
1,6,0,a1,a2,a3,a4,a5,0,0
2,6,0,a1,a2,a3,a4,a5,0,0
6,1,0,a1,a2,a3,a4,a5,0,1
6,2,0,a1,a2,a3,a4,a5,0,2

#d-u interaction (0,2)
#gen 1
0,10,a1,0,a3,3,a4,0,a6,6
0,11,a1,0,a3,2,a4,0,a6,6
#gen 2
3,6,0,a1,a2,a3,a4,a5,0,0
2,6,0,a1,a2,a3,a4,a5,0,0
6,3,0,a1,a2,a3,a4,a5,0,3
6,2,0,a1,a2,a3,a4,a5,0,2

#b-u interaction (x,2o)
#gen 2
6,0,b1,12,9,10,a1,a2,a3,0
1,12,6,a1,a2,a3,a4,a5,a6,0
12,1,a1,a2,a3,9,10,a4,a5,9
6,0,c1,12,10,9,a1,a2,a3,0
2,12,6,a1,a2,a3,a4,a5,a6,0
12,2,a1,a2,a3,10,9,a4,a5,10

#d-u interaction (x,2o)
#gen 2
6,0,d1,12,11,10,a1,a2,a3,0
3,12,6,a1,a2,a3,a4,a5,a6,0
12,3,a1,a2,a3,11,10,a4,a5,11
6,0,c1,12,10,11,a1,a2,a3,0
2,12,6,a1,a2,a3,a4,a5,a6,0
12,2,a1,a2,a3,10,11,a4,a5,10

#b-u interaction (x,2d)
#gen 2
0,0,2,12,9,10,a1,a2,a3,6
0,0,1,12,10,9,a1,a2,a3,6
#gen 3
12,2,a1,a2,a3,9,10,0,a5,12
12,1,a1,a2,a3,10,9,0,a5,12
12,2,a1,a2,a3,9,10,a4,a5,10
12,1,a1,a2,a3,10,9,a4,a5,9
6,0,c1,12,9,10,f1,a2,a3,14
6,0,b1,12,10,9,f1,a2,a3,14
6,0,c1,12,9,10,a1,a2,a3,0
6,0,b1,12,10,9,a1,a2,a3,0

#d-u interaction (x,2d)
#gen 2
0,0,2,12,11,10,a1,a2,a3,6
0,0,3,12,10,11,a1,a2,a3,6
#gen 3
12,2,a1,a2,a3,11,10,0,a5,12
12,3,a1,a2,a3,10,11,0,a5,12
12,2,a1,a2,a3,11,10,a4,a5,10
12,3,a1,a2,a3,10,11,a4,a5,11
6,0,c1,12,11,10,f1,a2,a3,14
6,0,d1,12,10,11,f1,a2,a3,14
6,0,c1,12,11,10,a1,a2,a3,0
6,0,d1,12,10,3,a1,a2,a3,0

#line protector dies
14,f1,f2,f3,a1,a2,a3,a4,a5,14
14,f1,a1,a2,f1,f2,a3,a4,a5,14
14,a1,a2,a3,a4,a5,a6,a7,a8,0
#shadows die
13,a1,a2,a3,a4,a5,a6,a7,a8,0
#protect corners
6,f1,f2,f3,a1,a2,a3,a4,a5,14
#protect gaps
12,f1,a1,0,f1,f2,a2,a3,a4,14
#kill unwanted interactions
6,a1,a2,a3,a4,a5,a6,a7,a8,0
12,a1,a2,a3,a4,a5,a6,a7,a8,0
@COLORS
0 0 0 0
1 255 0 0
2 0 255 0
3 0 0 255
4 255 255 0
5 0 255 255
6 255 128 0
7 255 255 128
8 128 255 255
9 255 63 63
10 63 255 63
11 63 63 255
12 255 0 255
13 0 0 128
14 128 0 0
Pattern:

Code: Select all

x = 22, y = 6, rule = biology_0_2
3.B3.A7.B3.C$2.A2.J3.B4.C2.J3.B$A6.A4.C6.C$5.J11.J$.B11.B$7.A11.C!
This is also an orientation-free version. Feel free to make an orientated version.

Problem Of The ???:How to make infinitely expanding waves overlap without a large number of states?
faizan123
Posts: 1
Joined: March 18th, 2015, 3:44 am

Re: New rule mimicing precursors to biological life

Post by faizan123 »

It goes without saying that this is a very ambitious effort requiring a complicated rule. So we ask for any interested parties to join us in the effort. We will likely need your help in both the coding and in the abstract development of the rule to do something like this in a reasonable amount of time. Thanks and we welcome your thoughts, questions and everything else on this subject below!
Post Reply