Genotype (format f0)

"Format Zero" genotype is the construction plan for any Framsticks creature. More detailed information on how to use it for development of one's own stick objects is available in Framsticks GDK (Genotype Developer Kit). See also the FRED program. Fundamental information is provided below.

f0 syntax

Each line in f0 describes one object in the model. The syntax is:

CLASSID:PROPERTY1,PROPERTY2,...

CLASSID – alphanumeric identifier of the class. Currently, there are 4 object classes (see f0 Semantics)

PROPERTY1,PROPERTY2,... – a set of properties of the object. Each class defines the sequence of properties and a reasonable default value for each one. The full definition of the property is NAME=VALUE. You can skip NAME= if the given property is next in the sequence. Object descriptions with omitted property names are not recommended as they may be misinterpreted by future GDK versions with different property sets. There is an exception for easier editing: skipping inside the "natural" (= "unlikely to change") property sequences like x,y,z is allowed, you can write "x=1,2,3" instead of "x=1,y=2,z=3". You can also skip the whole definition of a property and accept the default value. If you want to pass special characters (for ex. a comma) or set the empty string value (""), VALUE can be placed between quotes (").

Examples

Let's assume the following class definition: CLASSID=ob and 4 properties with default values: a=0, b=1, c=2, d=3

Some valid f0 descriptions:

all properties are set explicitly
ob:a=9,b=8,c=7,d=6
you can omit property names if the sequence is obeyed
ob:9,8,7,6
some properties have no names, but they are deduced from the sequence
ob:d=6,a=9,8,7
"b" and "c" are not defined – default values will be used (b=1,c=2)
ob:9,,,7
b="", c=2
ob:9,"",,7
b="," (comma), c=2
ob:9,",",,7
default values used for "a","c" and "d"
ob:b=8
default values used for all properties
ob:

f0 Semantics

Parts, Joints and Neurons have reference numbers used to attach other objects. References start with 0 and every new object in the class gets the next reference number.

Part object

Creates instance of the Part object.

The position can be later modified by the following joint definition if you use the delta option. In this case you can skip x, y and z in the part definition (see f0 Examples).

Joint object

Creates instance of the Joint object.

Neuron object

Creates instance of the Neuro object.

A neuron is a signal processing unit, a sensor (receptor) or an actuator (effector).

Connection definition

Add an input – a weighted connection to the other neuron. Both objects must be already created.

Model validity constraints

f0 Examples

To see these in Framsticks application, you have to start writing f0 genotype with "//0" (two slashes and zero and new line). The shortest f0 genotype – a single part ("atom")

p:

A single stick, "X" in f1

p:
p:1
j:0,1

Three sticks in line, "XXX" in f1, no "delta option" – absolute coordinates used in all parts

p:
p:1,m=2
p:2,m=2
p:3,
j:0,1
j:1,2
j:2,3

Three sticks line, "XXX" in f1, with "delta option" – relative positioning (dx=1)

p:
p:m=2
p:m=2
p:
j:0,1,dx=1
j:1,2,dx=1
j:2,3,dx=1

Three sticks star (120 degrees), "X(X,X)" in f1, no delta option, absolute coordinates are awkward and the sticks' length cannot be seen

p:
p:1, m=3
p:1.50017, -0.865927
p:1.50017, 0.865927
j:0, 1
j:1, 2
j:1, 3

Three sticks star (120 degrees), "X(X,X)" in f1, using delta option, dx=1, note that 120 degrees / 2 = 1.047 rad

p:
p:m=3
p:
p:
j:0, 1, dx=1
j:1, 2, rz=-1.047, dx=1
j:1, 3, rz=1.047, dx=1

Neuron net example, "X[|G:1,1:2.3][@-1:3.4,0:4.5,T:5.6]" in f1

p:
p:1
j:0, 1, dx=1
n:p=1
n:j=0, d="|:p=0.25,r=1"
n:j=0, d=G
n:p=1
n:j=0, d=@:p=0.25
n:p=1, d=T
c:0, 2
c:0, 3, 2.3
c:1, 0
c:3, 0, 3.4
c:3, 3, 4.5
c:3, 5, 5.6
c:4, 3

Cyclic structure, parts are connected 0->1->2->3->0. Not possible in f1 or f4 formats.

p:0,0
p:1,0
p:1,1
p:0,1
j:0,1
j:1,2
j:2,3
j:3,0