Index: p/tests/evol_test-fS-linux.goal
===================================================================
--- /cpp/tests/evol_test-fS-linux.goal	(revision 1033)
+++ 	(revision )
@@ -1,66 +1,0 @@
-Evaluation 0	31,36.4,37	1,1,1	0,0,0	0,0,0	0,0,0	30,35.4,36
-Evaluation 10	31,34,39	1,1,1	0,0,0	0,0,0	0,0,0	30,33,38
-Evaluation 20	23,34,39	1,1,1	0,0,0	0,0,0	0,0,0	22,33,38
-Evaluation 30	23,40.7,50	1,1,1	0,0,0	0,0,0	0,0,0	22,39.7,49
-Evaluation 40	39,74.6,148	1,1.3,2	0,0.3,1	0,0.4,1	0,0,0	38,72.6,144
-Evaluation 50	39,69.8,148	1,1.3,2	0,0.3,1	0,0.3,1	0,0,0	38,67.9,144
-Evaluation 60	39,75.9,148	1,1.4,2	0,0.4,1	0,0.4,1	0,0,0	38,73.7,144
-Evaluation 70	39,108.9,216	1,1.7,3	0,0.7,2	0,0.7,1	0,0,0	38,105.8,210
-[WARN] Model.internalCheck: stif too big in Joint #0 (adjusted)
-[WARN] Model.internalCheck: rotstif too big in Joint #0 (adjusted)
-Evaluation 80	[WARN] Model.internalCheck: stif too big in Joint #0 (adjusted)
-[WARN] Model.internalCheck: rotstif too big in Joint #0 (adjusted)
-39,137.8,221	[WARN] Model.internalCheck: stif too big in Joint #0 (adjusted)
-[WARN] Model.internalCheck: rotstif too big in Joint #0 (adjusted)
-1,2,3	[WARN] Model.internalCheck: stif too big in Joint #0 (adjusted)
-[WARN] Model.internalCheck: rotstif too big in Joint #0 (adjusted)
-0,1,2	[WARN] Model.internalCheck: stif too big in Joint #0 (adjusted)
-[WARN] Model.internalCheck: rotstif too big in Joint #0 (adjusted)
-0,1,2	[WARN] Model.internalCheck: stif too big in Joint #0 (adjusted)
-[WARN] Model.internalCheck: rotstif too big in Joint #0 (adjusted)
-0,0,0	[WARN] Model.internalCheck: stif too big in Joint #0 (adjusted)
-[WARN] Model.internalCheck: rotstif too big in Joint #0 (adjusted)
-38,133.8,215
-[WARN] Model.internalCheck: stif too big in Joint #0 (adjusted)
-[WARN] Model.internalCheck: rotstif too big in Joint #0 (adjusted)
-Evaluation 90	[WARN] Model.internalCheck: stif too big in Joint #0 (adjusted)
-[WARN] Model.internalCheck: rotstif too big in Joint #0 (adjusted)
-39,137.3,159	[WARN] Model.internalCheck: stif too big in Joint #0 (adjusted)
-[WARN] Model.internalCheck: rotstif too big in Joint #0 (adjusted)
-1,1.9,2	[WARN] Model.internalCheck: stif too big in Joint #0 (adjusted)
-[WARN] Model.internalCheck: rotstif too big in Joint #0 (adjusted)
-0,0.9,1	[WARN] Model.internalCheck: stif too big in Joint #0 (adjusted)
-[WARN] Model.internalCheck: rotstif too big in Joint #0 (adjusted)
-0,1.1,2	[WARN] Model.internalCheck: stif too big in Joint #0 (adjusted)
-[WARN] Model.internalCheck: rotstif too big in Joint #0 (adjusted)
-0,0,0	[WARN] Model.internalCheck: stif too big in Joint #0 (adjusted)
-[WARN] Model.internalCheck: rotstif too big in Joint #0 (adjusted)
-38,133.4,154
-[WARN] Model.internalCheck: stif too big in Joint #0 (adjusted)
-[WARN] Model.internalCheck: rotstif too big in Joint #0 (adjusted)
-[WARN] Model.internalCheck: stif too big in Joint #0 (adjusted)
-[WARN] Model.internalCheck: rotstif too big in Joint #0 (adjusted)
-Evaluation 99	[WARN] Model.internalCheck: stif too big in Joint #0 (adjusted)
-[WARN] Model.internalCheck: rotstif too big in Joint #0 (adjusted)
-129,152.7,162	[WARN] Model.internalCheck: stif too big in Joint #0 (adjusted)
-[WARN] Model.internalCheck: rotstif too big in Joint #0 (adjusted)
-2,2,2	[WARN] Model.internalCheck: stif too big in Joint #0 (adjusted)
-[WARN] Model.internalCheck: rotstif too big in Joint #0 (adjusted)
-1,1,1	[WARN] Model.internalCheck: stif too big in Joint #0 (adjusted)
-[WARN] Model.internalCheck: rotstif too big in Joint #0 (adjusted)
-1,1.6,3	[WARN] Model.internalCheck: stif too big in Joint #0 (adjusted)
-[WARN] Model.internalCheck: rotstif too big in Joint #0 (adjusted)
-0,0,0	[WARN] Model.internalCheck: stif too big in Joint #0 (adjusted)
-[WARN] Model.internalCheck: rotstif too big in Joint #0 (adjusted)
-125,148.1,157
-129.0	/*S*/1.1:R[Gpart:ry=0.214]{i=0.014;y=0.806;z=0.806}FTC{rx=0.6168;ry=1.4967;rz=-0.3841;tx=-0.0382;tz=1.197;x=0.971;y=0.433;z=0.824}
-159.0	/*S*/1.1:R[Gpart:ry=-0.382]{i=0.014;rz=-1.102;y=0.806;z=0.806}cFC[Gpart]{rx=0.6168;ry=1.4967;rz=-0.3841;tx=-0.0382;ty=-0.5913;tz=1.197;x=0.971;y=0.433;z=0.824}
-159.0	/*S*/1.1:R[Gpart:ry=-0.382]{i=0.014;rz=-1.102;y=0.806;z=0.806}bFC[Gpart]{rx=0.6168;ry=1.4967;rz=-0.3841;tx=-0.0382;ty=-0.5913;tz=1.197;x=0.971;y=0.433;z=0.824}
-162.0	/*S*/1.1:R[Gpart:ry=-0.382]{i=0.014;rz=-1.102;y=0.806;z=0.806}bFE[Gpart]{rx=0.6168;ry=1.4967;rz=-0.3841;tx=-0.0382;ty=-0.5913;tz=1.197;x=0.8714;y=0.8714;z=0.8714}
-158.0	/*S*/1.1:R[Gpart:ry=-0.382]{i=0.014;rz=-1.102;x=1.277;y=0.806;z=0.806}FC{rx=0.6168;ry=1.4967;rz=-0.3841;tx=-0.0382;ty=-0.5913;tz=1.197;x=0.971;y=0.433;z=0.824}
-150.0	/*S*/1.1:R[Gpart:ry=-0.382]{i=0.014;rz=-1.102;y=0.806;z=0.806}FC{rx=0.6168;ry=1.4967;rz=-0.3841;tx=-0.0382;ty=-0.5913;tz=1.197;x=0.971;y=0.433;z=0.824}
-159.0	/*S*/1.1:R[Gpart:ry=-0.382]{i=0.014;rz=-1.102;y=0.806;z=0.806}bFC[Gpart]{rx=0.6168;ry=1.4967;rz=-0.3841;tx=-0.0382;ty=-0.5913;tz=1.197;x=0.971;y=0.433;z=0.824}
-139.0	/*S*/1.1:R[Gpart]{i=0.014;rz=-1.102;y=0.806;z=0.806}C{rx=0.6168;ry=1.4967;rz=-0.3841;tx=-0.0382;ty=-0.5913;tz=1.197;x=0.971;y=0.433;z=0.824}
-150.0	/*S*/1.1:R[Gpart:ry=-0.382]{i=0.014;rz=-1.102;y=0.806;z=0.806}FC{rx=0.6168;ry=1.4967;rz=-0.3841;tx=-0.0382;ty=-0.5913;tz=1.197;x=0.971;y=0.433;z=0.824}
-162.0	/*S*/1.1:R[Gpart:ry=-0.382]{i=0.014;rz=-1.102;y=0.806;z=0.806}cFC[Gpart;T]{rx=0.6168;ry=1.4967;rz=-0.3841;tx=-0.0382;ty=-0.5913;tz=1.197;x=0.971;y=0.433;z=0.824}
-
Index: p/tests/f0_variants_test-fS-linux.goal
===================================================================
--- /cpp/tests/f0_variants_test-fS-linux.goal	(revision 1033)
+++ 	(revision )
@@ -1,85 +1,0 @@
-
-Source genotype: '1.1:ssC[S;S;S]{ry=-0.214;ty=0.781}fSC[S;S;*;M'4:-5.154;M'0]fE[M;Gpart]{rx=0.603;ry=-0.9391;rz=0.3034;tx=0.6534;ty=0.6856;tz=-0.166;x=1;z=1}ttC[*;*;Gpart]{st=0.262}fTE{rx=0.603;ry=-0.9391;rz=0.3034;tx=0.6534;ty=0.6856;tz=-0.166;x=1;y=1;z=1}ftC[*;*;N'0'2'3'9'12'14]{ry=-0.199;y=0.828;z=0.806}'
-                  ( format S )
-
-This example shows how to save a f0 genotype using low-level ParamInterface::saveSingleLine() calls
-
-
-==== With defdata (skips default values) ======
-m:
-p:sh=2, sx=0.8264462809917354, sy=0.8264462809917354, sz=0.8264462809917354, ry=-0.214
-p:x=1.84400826446281, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.36363636363636365
-p:x=3.4488812833580815, y=-0.26888325253375556, z=1.3310278019498911, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942, rx=0.603, ry=-0.9391, rz=0.3034
-p:x=5.053754302253353, y=-0.5377665050675111, z=2.6620556038997822, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942
-p:x=5.55205906721839, y=-1.6581236294201596, z=4.369698100138417, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3005259203606311, rx=0.603, ry=-0.9391, rz=0.3034
-p:x=5.983025350431395, y=-2.627081142373801, z=5.846578096885344, sh=2, sx=0.9090909090909091, sy=0.7527272727272727, sz=0.7327272727272728, fr=0.27320538214602824, ry=-0.199
-j:p1=0, p2=1, sh=1
-j:p1=1, p2=2, sh=1
-j:p1=2, p2=3, sh=1, stif=0.2165289256198347, rotstif=0.2165289256198347
-j:p1=3, p2=4, sh=1, stif=0.9090909090909091, rotstif=0.9090909090909091
-j:p1=4, p2=5, sh=1, stif=0.8264462809917354, rotstif=0.8264462809917354
-n:p=0, d=S
-n:p=0, d=S
-n:p=0, d=S
-n:p=1, d=S
-n:p=1, d=S
-n:p=1, d=*
-n:j=0, d=M
-n:j=0, d=M
-n:j=1, d=M
-n:p=2, d=Gpart
-n:p=3, d=*
-n:p=3, d=*
-n:p=3, d=Gpart
-n:p=5, d=*
-n:p=5, d=*
-n:p=5
-c:n1=6, n2=4, w=-5.154
-c:n1=7, n2=0
-c:n1=15, n2=0
-c:n1=15, n2=2
-c:n1=15, n2=3
-c:n1=15, n2=9
-c:n1=15, n2=12
-c:n1=15, n2=14
-
-
-==== Without defdata (saves all fields) ======
-m:se=1.0, Vstyle=
-p:x=0.0, y=0.0, z=0.0, sh=2, s=1.0, sx=0.8264462809917354, sy=0.8264462809917354, sz=0.8264462809917354, h=0.0, dn=1.0, fr=0.4, ing=0.25, as=0.25, rx=0.0, ry=-0.214, rz=0.0, i=, Vstyle=part, vs=0.2, vr=1.0, vg=1.0, vb=1.0
-p:x=1.84400826446281, y=0.0, z=0.0, sh=2, s=1.0, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, h=0.0, dn=1.0, fr=0.36363636363636365, ing=0.25, as=0.25, rx=0.0, ry=0.0, rz=0.0, i=, Vstyle=part, vs=0.2, vr=1.0, vg=1.0, vb=1.0
-p:x=3.4488812833580815, y=-0.26888325253375556, z=1.3310278019498911, sh=1, s=1.0, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, h=0.0, dn=1.0, fr=0.3305785123966942, ing=0.25, as=0.25, rx=0.603, ry=-0.9391, rz=0.3034, i=, Vstyle=part, vs=0.2, vr=1.0, vg=1.0, vb=1.0
-p:x=5.053754302253353, y=-0.5377665050675111, z=2.6620556038997822, sh=2, s=1.0, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, h=0.0, dn=1.0, fr=0.3305785123966942, ing=0.25, as=0.25, rx=0.0, ry=0.0, rz=0.0, i=, Vstyle=part, vs=0.2, vr=1.0, vg=1.0, vb=1.0
-p:x=5.55205906721839, y=-1.6581236294201596, z=4.369698100138417, sh=1, s=1.0, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, h=0.0, dn=1.0, fr=0.3005259203606311, ing=0.25, as=0.25, rx=0.603, ry=-0.9391, rz=0.3034, i=, Vstyle=part, vs=0.2, vr=1.0, vg=1.0, vb=1.0
-p:x=5.983025350431395, y=-2.627081142373801, z=5.846578096885344, sh=2, s=1.0, sx=0.9090909090909091, sy=0.7527272727272727, sz=0.7327272727272728, h=0.0, dn=1.0, fr=0.27320538214602824, ing=0.25, as=0.25, rx=0.0, ry=-0.199, rz=0.0, i=, Vstyle=part, vs=0.2, vr=1.0, vg=1.0, vb=1.0
-j:p1=0, p2=1, sh=1, hx=0.0, hy=0.0, hz=0.0, hrx=0.0, hry=0.0, hrz=0.0, hxn=-1.5708, hxp=1.5708, hyn=-1.5708, hyp=1.5708, stif=1.0, rotstif=1.0, stam=0.25, i=, Vstyle=joint, vr=1.0, vg=1.0, vb=1.0
-j:p1=1, p2=2, sh=1, hx=0.0, hy=0.0, hz=0.0, hrx=0.0, hry=0.0, hrz=0.0, hxn=-1.5708, hxp=1.5708, hyn=-1.5708, hyp=1.5708, stif=1.0, rotstif=1.0, stam=0.25, i=, Vstyle=joint, vr=1.0, vg=1.0, vb=1.0
-j:p1=2, p2=3, sh=1, hx=0.0, hy=0.0, hz=0.0, hrx=0.0, hry=0.0, hrz=0.0, hxn=-1.5708, hxp=1.5708, hyn=-1.5708, hyp=1.5708, stif=0.2165289256198347, rotstif=0.2165289256198347, stam=0.25, i=, Vstyle=joint, vr=1.0, vg=1.0, vb=1.0
-j:p1=3, p2=4, sh=1, hx=0.0, hy=0.0, hz=0.0, hrx=0.0, hry=0.0, hrz=0.0, hxn=-1.5708, hxp=1.5708, hyn=-1.5708, hyp=1.5708, stif=0.9090909090909091, rotstif=0.9090909090909091, stam=0.25, i=, Vstyle=joint, vr=1.0, vg=1.0, vb=1.0
-j:p1=4, p2=5, sh=1, hx=0.0, hy=0.0, hz=0.0, hrx=0.0, hry=0.0, hrz=0.0, hxn=-1.5708, hxp=1.5708, hyn=-1.5708, hyp=1.5708, stif=0.8264462809917354, rotstif=0.8264462809917354, stam=0.25, i=, Vstyle=joint, vr=1.0, vg=1.0, vb=1.0
-n:p=0, j=-1, d=S, i=, Vstyle=neuro
-n:p=0, j=-1, d=S, i=, Vstyle=neuro
-n:p=0, j=-1, d=S, i=, Vstyle=neuro
-n:p=1, j=-1, d=S, i=, Vstyle=neuro
-n:p=1, j=-1, d=S, i=, Vstyle=neuro
-n:p=1, j=-1, d=*, i=, Vstyle=neuro
-n:p=-1, j=0, d=M, i=, Vstyle=neuro
-n:p=-1, j=0, d=M, i=, Vstyle=neuro
-n:p=-1, j=1, d=M, i=, Vstyle=neuro
-n:p=2, j=-1, d=Gpart, i=, Vstyle=neuro
-n:p=3, j=-1, d=*, i=, Vstyle=neuro
-n:p=3, j=-1, d=*, i=, Vstyle=neuro
-n:p=3, j=-1, d=Gpart, i=, Vstyle=neuro
-n:p=5, j=-1, d=*, i=, Vstyle=neuro
-n:p=5, j=-1, d=*, i=, Vstyle=neuro
-n:p=5, j=-1, d=N, i=, Vstyle=neuro
-c:n1=6, n2=4, w=-5.154, i=
-c:n1=7, n2=0, w=1.0, i=
-c:n1=15, n2=0, w=1.0, i=
-c:n1=15, n2=2, w=1.0, i=
-c:n1=15, n2=3, w=1.0, i=
-c:n1=15, n2=9, w=1.0, i=
-c:n1=15, n2=12, w=1.0, i=
-c:n1=15, n2=14, w=1.0, i=
-
-
Index: p/tests/full_props-fS-linux.goal
===================================================================
--- /cpp/tests/full_props-fS-linux.goal	(revision 1033)
+++ 	(revision )
@@ -1,39 +1,0 @@
-//0s
-m:se=1.0, Vstyle=
-p:x=0.0, y=0.0, z=0.0, sh=2, s=1.0, sx=0.8264462809917354, sy=0.8264462809917354, sz=0.8264462809917354, h=0.0, dn=1.0, fr=0.4, ing=0.25, as=0.25, rx=0.0, ry=-0.214, rz=0.0, i=, Vstyle=part, vs=0.2, vr=1.0, vg=1.0, vb=1.0
-p:x=1.84400826446281, y=0.0, z=0.0, sh=2, s=1.0, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, h=0.0, dn=1.0, fr=0.36363636363636365, ing=0.25, as=0.25, rx=0.0, ry=0.0, rz=0.0, i=, Vstyle=part, vs=0.2, vr=1.0, vg=1.0, vb=1.0
-p:x=3.4488812833580815, y=-0.26888325253375556, z=1.3310278019498911, sh=1, s=1.0, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, h=0.0, dn=1.0, fr=0.3305785123966942, ing=0.25, as=0.25, rx=0.603, ry=-0.9391, rz=0.3034, i=, Vstyle=part, vs=0.2, vr=1.0, vg=1.0, vb=1.0
-p:x=5.053754302253353, y=-0.5377665050675111, z=2.6620556038997822, sh=2, s=1.0, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, h=0.0, dn=1.0, fr=0.3305785123966942, ing=0.25, as=0.25, rx=0.0, ry=0.0, rz=0.0, i=, Vstyle=part, vs=0.2, vr=1.0, vg=1.0, vb=1.0
-p:x=5.55205906721839, y=-1.6581236294201596, z=4.369698100138417, sh=1, s=1.0, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, h=0.0, dn=1.0, fr=0.3005259203606311, ing=0.25, as=0.25, rx=0.603, ry=-0.9391, rz=0.3034, i=, Vstyle=part, vs=0.2, vr=1.0, vg=1.0, vb=1.0
-p:x=5.983025350431395, y=-2.627081142373801, z=5.846578096885344, sh=2, s=1.0, sx=0.9090909090909091, sy=0.7527272727272727, sz=0.7327272727272728, h=0.0, dn=1.0, fr=0.27320538214602824, ing=0.25, as=0.25, rx=0.0, ry=-0.199, rz=0.0, i=, Vstyle=part, vs=0.2, vr=1.0, vg=1.0, vb=1.0
-j:p1=0, p2=1, sh=1, hx=0.0, hy=0.0, hz=0.0, hrx=0.0, hry=0.0, hrz=0.0, hxn=-1.5708, hxp=1.5708, hyn=-1.5708, hyp=1.5708, stif=1.0, rotstif=1.0, stam=0.25, i=, Vstyle=joint, vr=1.0, vg=1.0, vb=1.0
-j:p1=1, p2=2, sh=1, hx=0.0, hy=0.0, hz=0.0, hrx=0.0, hry=0.0, hrz=0.0, hxn=-1.5708, hxp=1.5708, hyn=-1.5708, hyp=1.5708, stif=1.0, rotstif=1.0, stam=0.25, i=, Vstyle=joint, vr=1.0, vg=1.0, vb=1.0
-j:p1=2, p2=3, sh=1, hx=0.0, hy=0.0, hz=0.0, hrx=0.0, hry=0.0, hrz=0.0, hxn=-1.5708, hxp=1.5708, hyn=-1.5708, hyp=1.5708, stif=0.2165289256198347, rotstif=0.2165289256198347, stam=0.25, i=, Vstyle=joint, vr=1.0, vg=1.0, vb=1.0
-j:p1=3, p2=4, sh=1, hx=0.0, hy=0.0, hz=0.0, hrx=0.0, hry=0.0, hrz=0.0, hxn=-1.5708, hxp=1.5708, hyn=-1.5708, hyp=1.5708, stif=0.9090909090909091, rotstif=0.9090909090909091, stam=0.25, i=, Vstyle=joint, vr=1.0, vg=1.0, vb=1.0
-j:p1=4, p2=5, sh=1, hx=0.0, hy=0.0, hz=0.0, hrx=0.0, hry=0.0, hrz=0.0, hxn=-1.5708, hxp=1.5708, hyn=-1.5708, hyp=1.5708, stif=0.8264462809917354, rotstif=0.8264462809917354, stam=0.25, i=, Vstyle=joint, vr=1.0, vg=1.0, vb=1.0
-n:p=0, j=-1, d=S, i=, Vstyle=neuro
-n:p=0, j=-1, d=S, i=, Vstyle=neuro
-n:p=0, j=-1, d=S, i=, Vstyle=neuro
-n:p=1, j=-1, d=S, i=, Vstyle=neuro
-n:p=1, j=-1, d=S, i=, Vstyle=neuro
-n:p=1, j=-1, d=*, i=, Vstyle=neuro
-n:p=-1, j=0, d="M:p=1.0, a=0", i=, Vstyle=neuro
-n:p=-1, j=0, d="M:p=1.0, a=0", i=, Vstyle=neuro
-n:p=-1, j=1, d="M:p=1.0, a=0", i=, Vstyle=neuro
-n:p=2, j=-1, d="Gpart:ry=0.0, rz=0.0", i=, Vstyle=neuro
-n:p=3, j=-1, d=*, i=, Vstyle=neuro
-n:p=3, j=-1, d=*, i=, Vstyle=neuro
-n:p=3, j=-1, d="Gpart:ry=0.0, rz=0.0", i=, Vstyle=neuro
-n:p=5, j=-1, d=*, i=, Vstyle=neuro
-n:p=5, j=-1, d=*, i=, Vstyle=neuro
-n:p=5, j=-1, d="N:in=0.8, fo=0.04, si=2.0, s=0.0", i=, Vstyle=neuro
-c:n1=6, n2=4, w=-5.154, i=
-c:n1=7, n2=0, w=1.0, i=
-c:n1=15, n2=0, w=1.0, i=
-c:n1=15, n2=2, w=1.0, i=
-c:n1=15, n2=3, w=1.0, i=
-c:n1=15, n2=9, w=1.0, i=
-c:n1=15, n2=12, w=1.0, i=
-c:n1=15, n2=14, w=1.0, i=
-
-
Index: p/tests/genomanipulation-complex-linux.goal
===================================================================
--- /cpp/tests/genomanipulation-complex-linux.goal	(revision 1033)
+++ 	(revision )
@@ -1,327 +1,0 @@
-    #############################################
-   ##                                           ##
-  ##    Welcome to Genotype Manipulation Demo!    ##
-   ##                                           ##
-    #############################################
-Found converter accepting f1: "Recursive encoding"
-Found 6 converter(s) producing f0
-
-Source genotype: 'FIX[@,p:0.6543,1:-1.23456]X[G]'
-                  ( format 1 )
-Converted to f0:
-p:fr=1.12, ing=0.53125, as=0.15625, vr=0.5, 0.5, 0.5
-p:1.0, fr=1.12, ing=0.53125, as=0.15625, vr=0.5, 0.5, 0.5
-p:2.0, fr=0.976, ing=0.475, as=0.175, vr=0.5, 0.5, 0.5
-j:0, 1, dx=1.0, 0.0, 0.0, stam=0.15625, vr=0.5, 0.5, 0.5
-j:1, 2, dx=1.0, 0.0, 0.0, stam=0.175, vr=0.5, 0.5, 0.5
-n:j=0, d=@:p=0.6543
-n:j=1, d=G
-c:0, 1, -1.23456
-
-Model contains: 3 part(s)
-                2 joint(s)
-                2 neuron(s)
-
-Investigating details...
-    #############################################
-   ##                                           ##
-  ##    P A R T    O B J E C T                   ##
-   ##                                           ##
-    #############################################
-            (part # 1)
-Here is the full listing of properties as they are printed in f0
- (please compare with f0 genotype).
-Some properties have special meaning (eg. geometry and connections groups)
-and should be handled with care, because they influence other elements of the model.
-
- [this data is provided by Part::properties() ]
- #        id                      type  name        group (22 properties)
- 0.        x = 1.0                  f   position.x  Geometry  
- 1.        y = 0.0                  f   position.y  Geometry  
- 2.        z = 0.0                  f   position.z  Geometry  
- 3.       sh = 0                    d 0 3 0 shape       Geometry  
- 4.        s = 1.0                  f 0.1 10.0 1.0 size        Geometry  
- 5.       sx = 1.0                  f 0.05 5.0 1.0 scale.x     Geometry  
- 6.       sy = 1.0                  f 0.05 5.0 1.0 scale.y     Geometry  
- 7.       sz = 1.0                  f 0.05 5.0 1.0 scale.z     Geometry  
- 8.        h = 0.0                  f 0 1 0 hollow      Other properties
- 9.       dn = 1.0                  f 0.2 5.0 1.0 density     Other properties
-10.       fr = 1.12                 f 0.0 4.0 0.4 friction    Other properties
-11.      ing = 0.53125              f 0.0 1.0 0.25 ingestion   Other properties
-12.       as = 0.15625              f 0.0 1.0 0.25 assimilation  Other properties
-13.       rx = 0.0                  f   rot.x       Geometry  
-14.       ry = 0.0                  f   rot.y       Geometry  
-15.       rz = 0.0                  f   rot.z       Geometry  
-16.        i =                      s   info        Other properties
-17.   Vstyle = part                 s 0 0 part vis_style   Visual    
-18.       vs = 0.2                  f 0.05 0.7 0.2 visual thickness  Visual    
-19.       vr = 0.5                  f 0.0 1.0 1.0 red component  Visual    
-20.       vg = 0.5                  f 0.0 1.0 1.0 green component  Visual    
-21.       vb = 0.5                  f 0.0 1.0 1.0 blue component  Visual    
-
-However, there is a subset of properties which may be modified more freely.
-Properties on this list are related only to this part and can be changed
-without much consideration. They are guaranteed to be always valid; any inconsistencies
-will be silently repaired.
-
- [this data is provided by Part::extraProperties() ]
- #        id                      type  name        group (9 properties)
- 0.        h = 0.0                  f 0 1 0 hollow      Extra properties
- 1.       dn = 1.0                  f 0.2 5.0 1.0 density     Extra properties
- 2.       fr = 1.12                 f 0.0 4.0 0.4 friction    Extra properties
- 3.      ing = 0.53125              f 0.0 1.0 0.25 ingestion   Extra properties
- 4.       as = 0.15625              f 0.0 1.0 0.25 assimilation  Extra properties
- 5.       vs = 0.2                  f 0.05 0.7 0.2 visual thickness  Extra properties
- 6.       vr = 0.5                  f 0.0 1.0 1.0 red component  Extra properties
- 7.       vg = 0.5                  f 0.0 1.0 1.0 green component  Extra properties
- 8.       vb = 0.5                  f 0.0 1.0 1.0 blue component  Extra properties
-
-This set of properties can vary from release to release,
-but can be safely accessed by using extraProperties() call.
-This method accesses the full set of properies (even those
-which appear in future releases).
-Now we will try to change some of properties:
-
-      Change property #7 to random value from range [0..1]
-      Current value of 'vg' (green component) is '0.5'
-      Setting new value... [ using ParamInterface::set() ]
-      The value is now '0.548814'
-
-Let's see f0... (check out part #1 !)
-
-p:fr=1.12, ing=0.53125, as=0.15625, vr=0.5, 0.5, 0.5
-p:1.0, fr=1.12, ing=0.53125, as=0.15625, vr=0.5, 0.548814, 0.5
-p:2.0, fr=0.976, ing=0.475, as=0.175, vr=0.5, 0.5, 0.5
-j:0, 1, dx=1.0, 0.0, 0.0, stam=0.15625, vr=0.5, 0.5, 0.5
-j:1, 2, dx=1.0, 0.0, 0.0, stam=0.175, vr=0.5, 0.5, 0.5
-n:j=0, d=@:p=0.6543
-n:j=1, d=G
-c:0, 1, -1.23456
-
-    #############################################
-   ##                                           ##
-  ##    J O I N T    O B J E C T                 ##
-   ##                                           ##
-    #############################################
-            (joint # 1)
-Similarly as with Part, the full list of properties comes first:
-
- #        id                      type  name        group (27 properties)
- 0.       p1 = 1                    d -1 999999 -1 part1 ref#  Connections
- 1.       p2 = 2                    d -1 999999 -1 part2 ref#  Connections
- 2.       rx = 0.0                  f   rotation.x  Geometry  
- 3.       ry = 0.0                  f   rotation.y  Geometry  
- 4.       rz = 0.0                  f   rotation.z  Geometry  
- 5.       dx = 1.0                  f -2 2 0 delta.x     Geometry  
- 6.       dy = 0.0                  f -2 2 0 delta.y     Geometry  
- 7.       dz = 0.0                  f -2 2 0 delta.z     Geometry  
- 8.       sh = 0                    d 0 3 0 shape       Geometry  
- 9.       hx = 0.0                  f   hinge position.x  Geometry  
-10.       hy = 0.0                  f   hinge position.y  Geometry  
-11.       hz = 0.0                  f   hinge position.z  Geometry  
-12.      hrx = 0.0                  f   hinge rotation.x  Geometry  
-13.      hry = 0.0                  f   hinge rotation.y  Geometry  
-14.      hrz = 0.0                  f   hinge rotation.z  Geometry  
-15.      hxn = -1.5708              f -6.2832 0 -1.5708 hinge x negative limit  Geometry  
-16.      hxp = 1.5708               f 0 6.2832 1.5708 hinge x positive limit  Geometry  
-17.      hyn = -1.5708              f -6.2832 0 -1.5708 hinge y negative limit  Geometry  
-18.      hyp = 1.5708               f 0 6.2832 1.5708 hinge y positive limit  Geometry  
-19.     stif = 1.0                  f 0.0 1.0 1.0 stiffness   Other properties
-20.  rotstif = 1.0                  f 0.0 1.0 1.0 rotation stiffness  Other properties
-21.     stam = 0.175                f 0.0 1.0 0.25 stamina     Other properties
-22.        i =                      s   info        Other properties
-23.   Vstyle = joint                s 0 0 joint vis_style   Visual    
-24.       vr = 0.5                  f 0.0 1.0 1.0 red component  Visual    
-25.       vg = 0.5                  f 0.0 1.0 1.0 green component  Visual    
-26.       vb = 0.5                  f 0.0 1.0 1.0 blue component  Visual    
-
-Actually, there are two kinds of Joints: delta and absolute.
-For this object, Joint::isDelta() returns 1, so this is the delta Joint.
-
-Delta fields (dx,dy,dz) describe relative location of the second part.
-This joint will change the second Part's positions to preserve delta distance.
-Let's move the first Part (#1) along y axis (+0.1) and change delta.z (dz) by 0.1.
-Position of the second Part referenced by this joint (part #2) is now changed:
-
-p:fr=1.12, ing=0.53125, as=0.15625, vr=0.5, 0.5, 0.5
-p:1.0, fr=1.12, ing=0.53125, as=0.15625, vr=0.5, 0.548814, 0.5
-p:2.0, z=0.1, fr=0.976, ing=0.475, as=0.175, vr=0.5, 0.5, 0.5
-j:0, 1, dx=1.0, 0.0, 0.0, stam=0.15625, vr=0.5, 0.5, 0.5
-j:1, 2, dx=1.0, 0.0, 0.1, stam=0.175, vr=0.5, 0.5, 0.5
-n:j=0, d=@:p=0.6543
-n:j=1, d=G
-c:0, 1, -1.23456
-
-If no delta fields are defined, they will be computed automatically.
-You can always delete existing delta values by using Joint::resetDelta().
-Now we will change the second Part's z position by -0.2 and call resetDelta()...
-As you can see, Joint's delta fields have altered:
-
-p:fr=1.12, ing=0.53125, as=0.15625, vr=0.5, 0.5, 0.5
-p:1.0, fr=1.12, ing=0.53125, as=0.15625, vr=0.5, 0.548814, 0.5
-p:2.0, z=-0.1, fr=0.976, ing=0.475, as=0.175, vr=0.5, 0.5, 0.5
-j:0, 1, dx=1.0, 0.0, 0.0, stam=0.15625, vr=0.5, 0.5, 0.5
-j:1, 2, dx=1.0, 0.0, -0.1, stam=0.175, vr=0.5, 0.5, 0.5
-n:j=0, d=@:p=0.6543
-n:j=1, d=G
-c:0, 1, -1.23456
-
-How would this joint look like with delta option disabled?
-[ by calling Joint::useDelta(0) ]
-f0 is now:
-
-p:fr=1.12, ing=0.53125, as=0.15625, vr=0.5, 0.5, 0.5
-p:1.0, fr=1.12, ing=0.53125, as=0.15625, vr=0.5, 0.548814, 0.5
-p:2.0, z=-0.1, fr=0.976, ing=0.475, as=0.175, vr=0.5, 0.5, 0.5
-j:0, 1, dx=1.0, 0.0, 0.0, stam=0.15625, vr=0.5, 0.5, 0.5
-j:1, 2, stam=0.175, vr=0.5, 0.5, 0.5
-n:j=0, d=@:p=0.6543
-n:j=1, d=G
-c:0, 1, -1.23456
-
-...so this is an absolute joint.
-
-Absolute Joints adapt to its Parts' positions.
-We can move a Part, and it does not influence the second part, nor the Joint.
-Let's move the first Part along y axis by -0.1...
-The Part's position is changed, but everything else stays intact:
-
-p:fr=1.12, ing=0.53125, as=0.15625, vr=0.5, 0.5, 0.5
-p:1.0, fr=1.12, ing=0.53125, as=0.15625, vr=0.5, 0.548814, 0.5
-p:2.0, z=-0.1, fr=0.976, ing=0.475, as=0.175, vr=0.5, 0.5, 0.5
-j:0, 1, dx=1.0, 0.0, 0.0, stam=0.15625, vr=0.5, 0.5, 0.5
-j:1, 2, stam=0.175, vr=0.5, 0.5, 0.5
-n:j=0, d=@:p=0.6543
-n:j=1, d=G
-c:0, 1, -1.23456
-
-Part references and delta fields are the 'core' properties of the Joint.
-The other properties are available from Joint::extraProperties()
-and at the moment are defined as follows:
-
- #        id                      type  name        group (5 properties)
- 0.     stif = 1.0                  f 0.0 1.0 1.0 stiffness   Extra properties
- 1.  rotstif = 1.0                  f 0.0 1.0 1.0 rotation stiffness  Extra properties
- 2.       vr = 0.5                  f 0.0 1.0 1.0 red component  Extra properties
- 3.       vg = 0.5                  f 0.0 1.0 1.0 green component  Extra properties
- 4.       vb = 0.5                  f 0.0 1.0 1.0 blue component  Extra properties
-
-They can be changed just like Part's extra properties:
-      Change property #0 to random value from range [0..1]
-      Current value of 'stif' (stiffness) is '1.0'
-      Setting new value... [ using ParamInterface::set() ]
-      The value is now '0.592845'
-And after that we have this genotype:
-
-p:fr=1.12, ing=0.53125, as=0.15625, vr=0.5, 0.5, 0.5
-p:1.0, fr=1.12, ing=0.53125, as=0.15625, vr=0.5, 0.548814, 0.5
-p:2.0, z=-0.1, fr=0.976, ing=0.475, as=0.175, vr=0.5, 0.5, 0.5
-j:0, 1, dx=1.0, 0.0, 0.0, stam=0.15625, vr=0.5, 0.5, 0.5
-j:1, 2, stif=0.592845, stam=0.175, vr=0.5, 0.5, 0.5
-n:j=0, d=@:p=0.6543
-n:j=1, d=G
-c:0, 1, -1.23456
-
-    #############################################
-   ##                                           ##
-  ##    N E U R O    O B J E C T                 ##
-   ##                                           ##
-    #############################################
-            (neuro # 1)
-Basic features of Neuro object are similar to those of Part and Joint.
-We can request a property list:
-
- #        id                      type  name        group (10 properties)
- 0.        p = -1                   d -1 999999 -1 part ref#   Connections
- 1.        j = 1                    d -1 999999 -1 joint ref#  Connections
- 2.        d = G                    s   details     Other     
- 3.        i =                      s   info        Other     
- 4.   Vstyle = neuro                s 0 0 neuro vis_style   Visual    
- 5. getInputCount = 0                    d   input count  Connections
- 9. classObject = null                 oNeuroClass neuron class  Connections
-
-...and extra properties (which are designed to be always valid and easy to change):
-
- #        id                      type  name        group (0 properties)
-
-As usual, we will change something:
-Each neuron can have any number of inputs = weighted connections
- with other neurons.
-According to Neuro::getInputCount(), this one has 0 inputs.
-Standard API is provided for accessing those inputs (getInput(int)),
-adding inputs (addInput(Neuro*)) and removing them (removeInput(int)).
-
-
-The most unusual thing is 'details' field (d).
-It is something like separate object with its own set of properties.
-Currently the value of 'd' is 'G'.
-'G' is the class name (Neuro::getClassName() == 'G') and means 'Gyroscope'.
-Neuro::getClass() gives you information about basic characteristic
-of the class, that can be analyzed automatically.
-For the current object we can learn that it supports no inputs (getPreferredInputs()) and provides meaningful output signal (getPreferredOutput()==1).
-Instances of 'G' can be used in models having shape types: 'ball-and-stick'.
-Instances of 'G' can be attached to Joints having any shapes.
-(This class does not have its own properties
- - Neuro::classProperties().getPropCount()==0)
-The class of this object can be changed using Neuro::setClassName()
-The following classes are available:
- [ data provided by Neuro::getClassInfo()->getProperties() ]
-
- #  class  description       properties
- 0.     N  Neuron                 4
- 1.    Nu  Unipolar neuron [EXPERIMENTAL!]   4
- 2.     G  Gyroscope              0
- 3. Gpart  Part Gyroscope         2
- 4.     T  Touch                  3
- 5.Tcontact  Touch contact          0
- 6.Tproximity  Touch proximity        3
- 7.     S  Smell                  0
- 8.     *  Constant               0
- 9.     |  Bend muscle            2
-10.     @  Rotation muscle        1
-11.     M  Muscle for solids      2
-12.     D  Differentiate          0
-13. Fuzzy  Fuzzy system [EXPERIMENTAL!]   4
-14.   Sti  Sticky [EXPERIMENTAL!]   0
-15.   LMu  Linear muscle [EXPERIMENTAL!]   1
-16. Water  Water detector         0
-17.Energy  Energy level           0
-18.    Ch  Channelize             0
-19. ChMux  Channel multiplexer    0
-20. ChSel  Channel selector       1
-21.   Rnd  Random noise           0
-22.   Sin  Sinus generator        2
-
-Let's change the Neuro's class to 'N'...
- #        id                      type  name        group (4 properties)
- 0.       in = 0.8                  f 0.0 1.0 0.8 Inertia     (null)    
- 1.       fo = 0.04                 f 0.0 999.0 0.04 Force       (null)    
- 2.       si = 2.0                  f -99999.0 99999.0 2.0 Sigmoid     (null)    
- 3.        s = 0.0                  f -1.0 1.0 0.0 State       (null)    
-      Change property #2 to random value from range [-99999..99999]
-      Current value of 'si' (Sigmoid) is '2.0'
-      Setting new value... [ using ParamInterface::set() ]
-      The value is now '43037.4'
-The final object description will be then: 'N:si=43037.4'
-And the full f0 genotype:
-
-p:fr=1.12, ing=0.53125, as=0.15625, vr=0.5, 0.5, 0.5
-p:1.0, fr=1.12, ing=0.53125, as=0.15625, vr=0.5, 0.548814, 0.5
-p:2.0, z=-0.1, fr=0.976, ing=0.475, as=0.175, vr=0.5, 0.5, 0.5
-j:0, 1, dx=1.0, 0.0, 0.0, stam=0.15625, vr=0.5, 0.5, 0.5
-j:1, 2, stif=0.592845, stam=0.175, vr=0.5, 0.5, 0.5
-n:j=0, d=@:p=0.6543
-n:j=1, d=N:si=43037.4
-c:0, 1, -1.23456
-
-
-######### THE END ###########
-
-Hints:
-  1. You can redirect output: genomanipulation >filename.txt
-  2. Each run can yield different results and new behaviors, but you
-     need to uncomment srand(time(0)) in genomanipulation.cpp.
-  3. This application will use custom genotype passed as
-     a commandline parameter: genomanipulation "/*9*/FULU"
-
-
Index: p/tests/genomanipulation-default-linux.goal
===================================================================
--- /cpp/tests/genomanipulation-default-linux.goal	(revision 1033)
+++ 	(revision )
@@ -1,327 +1,0 @@
-    #############################################
-   ##                                           ##
-  ##    Welcome to Genotype Manipulation Demo!    ##
-   ##                                           ##
-    #############################################
-Found converter accepting f1: "Recursive encoding"
-Found 6 converter(s) producing f0
-
-Source genotype: 'X[|G:1.23]'
-                  ( format 1 )
-Converted to f0:
-p:vr=0.5, 0.5, 0.5
-p:1.0, vr=0.5, 0.5, 0.5
-j:0, 1, dx=1.0, 0.0, 0.0, vr=0.5, 0.5, 0.5
-n:p=1
-n:j=0, d="|:p=0.25,r=1"
-n:j=0, d=G
-c:0, 2, 1.23
-c:1, 0
-
-Model contains: 2 part(s)
-                1 joint(s)
-                3 neuron(s)
-
-Investigating details...
-    #############################################
-   ##                                           ##
-  ##    P A R T    O B J E C T                   ##
-   ##                                           ##
-    #############################################
-            (part # 1)
-Here is the full listing of properties as they are printed in f0
- (please compare with f0 genotype).
-Some properties have special meaning (eg. geometry and connections groups)
-and should be handled with care, because they influence other elements of the model.
-
- [this data is provided by Part::properties() ]
- #        id                      type  name        group (22 properties)
- 0.        x = 1.0                  f   position.x  Geometry  
- 1.        y = 0.0                  f   position.y  Geometry  
- 2.        z = 0.0                  f   position.z  Geometry  
- 3.       sh = 0                    d 0 3 0 shape       Geometry  
- 4.        s = 1.0                  f 0.1 10.0 1.0 size        Geometry  
- 5.       sx = 1.0                  f 0.05 5.0 1.0 scale.x     Geometry  
- 6.       sy = 1.0                  f 0.05 5.0 1.0 scale.y     Geometry  
- 7.       sz = 1.0                  f 0.05 5.0 1.0 scale.z     Geometry  
- 8.        h = 0.0                  f 0 1 0 hollow      Other properties
- 9.       dn = 1.0                  f 0.2 5.0 1.0 density     Other properties
-10.       fr = 0.4                  f 0.0 4.0 0.4 friction    Other properties
-11.      ing = 0.25                 f 0.0 1.0 0.25 ingestion   Other properties
-12.       as = 0.25                 f 0.0 1.0 0.25 assimilation  Other properties
-13.       rx = 0.0                  f   rot.x       Geometry  
-14.       ry = 0.0                  f   rot.y       Geometry  
-15.       rz = 0.0                  f   rot.z       Geometry  
-16.        i =                      s   info        Other properties
-17.   Vstyle = part                 s 0 0 part vis_style   Visual    
-18.       vs = 0.2                  f 0.05 0.7 0.2 visual thickness  Visual    
-19.       vr = 0.5                  f 0.0 1.0 1.0 red component  Visual    
-20.       vg = 0.5                  f 0.0 1.0 1.0 green component  Visual    
-21.       vb = 0.5                  f 0.0 1.0 1.0 blue component  Visual    
-
-However, there is a subset of properties which may be modified more freely.
-Properties on this list are related only to this part and can be changed
-without much consideration. They are guaranteed to be always valid; any inconsistencies
-will be silently repaired.
-
- [this data is provided by Part::extraProperties() ]
- #        id                      type  name        group (9 properties)
- 0.        h = 0.0                  f 0 1 0 hollow      Extra properties
- 1.       dn = 1.0                  f 0.2 5.0 1.0 density     Extra properties
- 2.       fr = 0.4                  f 0.0 4.0 0.4 friction    Extra properties
- 3.      ing = 0.25                 f 0.0 1.0 0.25 ingestion   Extra properties
- 4.       as = 0.25                 f 0.0 1.0 0.25 assimilation  Extra properties
- 5.       vs = 0.2                  f 0.05 0.7 0.2 visual thickness  Extra properties
- 6.       vr = 0.5                  f 0.0 1.0 1.0 red component  Extra properties
- 7.       vg = 0.5                  f 0.0 1.0 1.0 green component  Extra properties
- 8.       vb = 0.5                  f 0.0 1.0 1.0 blue component  Extra properties
-
-This set of properties can vary from release to release,
-but can be safely accessed by using extraProperties() call.
-This method accesses the full set of properies (even those
-which appear in future releases).
-Now we will try to change some of properties:
-
-      Change property #7 to random value from range [0..1]
-      Current value of 'vg' (green component) is '0.5'
-      Setting new value... [ using ParamInterface::set() ]
-      The value is now '0.548814'
-
-Let's see f0... (check out part #1 !)
-
-p:vr=0.5, 0.5, 0.5
-p:1.0, vr=0.5, 0.548814, 0.5
-j:0, 1, dx=1.0, 0.0, 0.0, vr=0.5, 0.5, 0.5
-n:p=1
-n:j=0, d="|:p=0.25,r=1"
-n:j=0, d=G
-c:0, 2, 1.23
-c:1, 0
-
-    #############################################
-   ##                                           ##
-  ##    J O I N T    O B J E C T                 ##
-   ##                                           ##
-    #############################################
-            (joint # 0)
-Similarly as with Part, the full list of properties comes first:
-
- #        id                      type  name        group (27 properties)
- 0.       p1 = 0                    d -1 999999 -1 part1 ref#  Connections
- 1.       p2 = 1                    d -1 999999 -1 part2 ref#  Connections
- 2.       rx = 0.0                  f   rotation.x  Geometry  
- 3.       ry = 0.0                  f   rotation.y  Geometry  
- 4.       rz = 0.0                  f   rotation.z  Geometry  
- 5.       dx = 1.0                  f -2 2 0 delta.x     Geometry  
- 6.       dy = 0.0                  f -2 2 0 delta.y     Geometry  
- 7.       dz = 0.0                  f -2 2 0 delta.z     Geometry  
- 8.       sh = 0                    d 0 3 0 shape       Geometry  
- 9.       hx = 0.0                  f   hinge position.x  Geometry  
-10.       hy = 0.0                  f   hinge position.y  Geometry  
-11.       hz = 0.0                  f   hinge position.z  Geometry  
-12.      hrx = 0.0                  f   hinge rotation.x  Geometry  
-13.      hry = 0.0                  f   hinge rotation.y  Geometry  
-14.      hrz = 0.0                  f   hinge rotation.z  Geometry  
-15.      hxn = -1.5708              f -6.2832 0 -1.5708 hinge x negative limit  Geometry  
-16.      hxp = 1.5708               f 0 6.2832 1.5708 hinge x positive limit  Geometry  
-17.      hyn = -1.5708              f -6.2832 0 -1.5708 hinge y negative limit  Geometry  
-18.      hyp = 1.5708               f 0 6.2832 1.5708 hinge y positive limit  Geometry  
-19.     stif = 1.0                  f 0.0 1.0 1.0 stiffness   Other properties
-20.  rotstif = 1.0                  f 0.0 1.0 1.0 rotation stiffness  Other properties
-21.     stam = 0.25                 f 0.0 1.0 0.25 stamina     Other properties
-22.        i =                      s   info        Other properties
-23.   Vstyle = joint                s 0 0 joint vis_style   Visual    
-24.       vr = 0.5                  f 0.0 1.0 1.0 red component  Visual    
-25.       vg = 0.5                  f 0.0 1.0 1.0 green component  Visual    
-26.       vb = 0.5                  f 0.0 1.0 1.0 blue component  Visual    
-
-Actually, there are two kinds of Joints: delta and absolute.
-For this object, Joint::isDelta() returns 1, so this is the delta Joint.
-
-Delta fields (dx,dy,dz) describe relative location of the second part.
-This joint will change the second Part's positions to preserve delta distance.
-Let's move the first Part (#0) along y axis (+0.1) and change delta.z (dz) by 0.1.
-Position of the second Part referenced by this joint (part #1) is now changed:
-
-p:y=0.1, vr=0.5, 0.5, 0.5
-p:1.0, 0.1, 0.1, vr=0.5, 0.548814, 0.5
-j:0, 1, dx=1.0, 0.0, 0.1, vr=0.5, 0.5, 0.5
-n:p=1
-n:j=0, d="|:p=0.25,r=1"
-n:j=0, d=G
-c:0, 2, 1.23
-c:1, 0
-
-If no delta fields are defined, they will be computed automatically.
-You can always delete existing delta values by using Joint::resetDelta().
-Now we will change the second Part's z position by -0.2 and call resetDelta()...
-As you can see, Joint's delta fields have altered:
-
-p:y=0.1, vr=0.5, 0.5, 0.5
-p:1.0, 0.1, -0.1, vr=0.5, 0.548814, 0.5
-j:0, 1, dx=1.0, 0.0, -0.1, vr=0.5, 0.5, 0.5
-n:p=1
-n:j=0, d="|:p=0.25,r=1"
-n:j=0, d=G
-c:0, 2, 1.23
-c:1, 0
-
-How would this joint look like with delta option disabled?
-[ by calling Joint::useDelta(0) ]
-f0 is now:
-
-p:y=0.1, vr=0.5, 0.5, 0.5
-p:1.0, 0.1, -0.1, vr=0.5, 0.548814, 0.5
-j:0, 1, vr=0.5, 0.5, 0.5
-n:p=1
-n:j=0, d="|:p=0.25,r=1"
-n:j=0, d=G
-c:0, 2, 1.23
-c:1, 0
-
-...so this is an absolute joint.
-
-Absolute Joints adapt to its Parts' positions.
-We can move a Part, and it does not influence the second part, nor the Joint.
-Let's move the first Part along y axis by -0.1...
-The Part's position is changed, but everything else stays intact:
-
-p:vr=0.5, 0.5, 0.5
-p:1.0, 0.1, -0.1, vr=0.5, 0.548814, 0.5
-j:0, 1, vr=0.5, 0.5, 0.5
-n:p=1
-n:j=0, d="|:p=0.25,r=1"
-n:j=0, d=G
-c:0, 2, 1.23
-c:1, 0
-
-Part references and delta fields are the 'core' properties of the Joint.
-The other properties are available from Joint::extraProperties()
-and at the moment are defined as follows:
-
- #        id                      type  name        group (5 properties)
- 0.     stif = 1.0                  f 0.0 1.0 1.0 stiffness   Extra properties
- 1.  rotstif = 1.0                  f 0.0 1.0 1.0 rotation stiffness  Extra properties
- 2.       vr = 0.5                  f 0.0 1.0 1.0 red component  Extra properties
- 3.       vg = 0.5                  f 0.0 1.0 1.0 green component  Extra properties
- 4.       vb = 0.5                  f 0.0 1.0 1.0 blue component  Extra properties
-
-They can be changed just like Part's extra properties:
-      Change property #0 to random value from range [0..1]
-      Current value of 'stif' (stiffness) is '1.0'
-      Setting new value... [ using ParamInterface::set() ]
-      The value is now '0.592845'
-And after that we have this genotype:
-
-p:vr=0.5, 0.5, 0.5
-p:1.0, 0.1, -0.1, vr=0.5, 0.548814, 0.5
-j:0, 1, stif=0.592845, vr=0.5, 0.5, 0.5
-n:p=1
-n:j=0, d="|:p=0.25,r=1"
-n:j=0, d=G
-c:0, 2, 1.23
-c:1, 0
-
-    #############################################
-   ##                                           ##
-  ##    N E U R O    O B J E C T                 ##
-   ##                                           ##
-    #############################################
-            (neuro # 2)
-Basic features of Neuro object are similar to those of Part and Joint.
-We can request a property list:
-
- #        id                      type  name        group (10 properties)
- 0.        p = -1                   d -1 999999 -1 part ref#   Connections
- 1.        j = 0                    d -1 999999 -1 joint ref#  Connections
- 2.        d = G                    s   details     Other     
- 3.        i =                      s   info        Other     
- 4.   Vstyle = neuro                s 0 0 neuro vis_style   Visual    
- 5. getInputCount = 0                    d   input count  Connections
- 9. classObject = null                 oNeuroClass neuron class  Connections
-
-...and extra properties (which are designed to be always valid and easy to change):
-
- #        id                      type  name        group (0 properties)
-
-As usual, we will change something:
-Each neuron can have any number of inputs = weighted connections
- with other neurons.
-According to Neuro::getInputCount(), this one has 0 inputs.
-Standard API is provided for accessing those inputs (getInput(int)),
-adding inputs (addInput(Neuro*)) and removing them (removeInput(int)).
-
-
-The most unusual thing is 'details' field (d).
-It is something like separate object with its own set of properties.
-Currently the value of 'd' is 'G'.
-'G' is the class name (Neuro::getClassName() == 'G') and means 'Gyroscope'.
-Neuro::getClass() gives you information about basic characteristic
-of the class, that can be analyzed automatically.
-For the current object we can learn that it supports no inputs (getPreferredInputs()) and provides meaningful output signal (getPreferredOutput()==1).
-Instances of 'G' can be used in models having shape types: 'ball-and-stick'.
-Instances of 'G' can be attached to Joints having any shapes.
-(This class does not have its own properties
- - Neuro::classProperties().getPropCount()==0)
-The class of this object can be changed using Neuro::setClassName()
-The following classes are available:
- [ data provided by Neuro::getClassInfo()->getProperties() ]
-
- #  class  description       properties
- 0.     N  Neuron                 4
- 1.    Nu  Unipolar neuron [EXPERIMENTAL!]   4
- 2.     G  Gyroscope              0
- 3. Gpart  Part Gyroscope         2
- 4.     T  Touch                  3
- 5.Tcontact  Touch contact          0
- 6.Tproximity  Touch proximity        3
- 7.     S  Smell                  0
- 8.     *  Constant               0
- 9.     |  Bend muscle            2
-10.     @  Rotation muscle        1
-11.     M  Muscle for solids      2
-12.     D  Differentiate          0
-13. Fuzzy  Fuzzy system [EXPERIMENTAL!]   4
-14.   Sti  Sticky [EXPERIMENTAL!]   0
-15.   LMu  Linear muscle [EXPERIMENTAL!]   1
-16. Water  Water detector         0
-17.Energy  Energy level           0
-18.    Ch  Channelize             0
-19. ChMux  Channel multiplexer    0
-20. ChSel  Channel selector       1
-21.   Rnd  Random noise           0
-22.   Sin  Sinus generator        2
-
-Let's change the Neuro's class to 'N'...
- #        id                      type  name        group (4 properties)
- 0.       in = 0.8                  f 0.0 1.0 0.8 Inertia     (null)    
- 1.       fo = 0.04                 f 0.0 999.0 0.04 Force       (null)    
- 2.       si = 2.0                  f -99999.0 99999.0 2.0 Sigmoid     (null)    
- 3.        s = 0.0                  f -1.0 1.0 0.0 State       (null)    
-      Change property #2 to random value from range [-99999..99999]
-      Current value of 'si' (Sigmoid) is '2.0'
-      Setting new value... [ using ParamInterface::set() ]
-      The value is now '43037.4'
-The final object description will be then: 'N:si=43037.4'
-And the full f0 genotype:
-
-p:vr=0.5, 0.5, 0.5
-p:1.0, 0.1, -0.1, vr=0.5, 0.548814, 0.5
-j:0, 1, stif=0.592845, vr=0.5, 0.5, 0.5
-n:p=1
-n:j=0, d="|:p=0.25,r=1"
-n:j=0, d=N:si=43037.4
-c:0, 2, 1.23
-c:1, 0
-
-
-######### THE END ###########
-
-Hints:
-  1. You can redirect output: genomanipulation >filename.txt
-  2. Each run can yield different results and new behaviors, but you
-     need to uncomment srand(time(0)) in genomanipulation.cpp.
-  3. This application will use custom genotype passed as
-     a commandline parameter: genomanipulation "/*9*/FULU"
-
-
Index: p/tests/genomanipulation-fS-linux.goal
===================================================================
--- /cpp/tests/genomanipulation-fS-linux.goal	(revision 1033)
+++ 	(revision )
@@ -1,537 +1,0 @@
-    #############################################
-   ##                                           ##
-  ##    Welcome to Genotype Manipulation Demo!    ##
-   ##                                           ##
-    #############################################
-Found converter accepting f1: "Recursive encoding"
-Found 6 converter(s) producing f0
-
-Source genotype: '1.1:ssC[S;S;S]{ry=-0.214;ty=0.781}fSC[S;S;*;M'4:-5.154;M'0]fE[M;Gpart]{rx=0.603;ry=-0.9391;rz=0.3034;tx=0.6534;ty=0.6856;tz=-0.166;x=1;z=1}ttC[*;*;Gpart]{st=0.262}fTE{rx=0.603;ry=-0.9391;rz=0.3034;tx=0.6534;ty=0.6856;tz=-0.166;x=1;y=1;z=1}ftC[*;*;N'0'2'3'9'12'14]{ry=-0.199;y=0.828;z=0.806}'
-                  ( format S )
-Converted to f0:
-p:sh=2, sx=0.8264462809917354, sy=0.8264462809917354, sz=0.8264462809917354, ry=-0.214
-p:1.84400826446281, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.36363636363636365
-p:3.4488812833580815, -0.26888325253375556, 1.3310278019498911, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942, rx=0.603, -0.9391, 0.3034
-p:5.053754302253353, -0.5377665050675111, 2.6620556038997822, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942
-p:5.55205906721839, -1.6581236294201596, 4.369698100138417, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3005259203606311, rx=0.603, -0.9391, 0.3034
-p:5.983025350431395, -2.627081142373801, 5.846578096885344, sh=2, sx=0.9090909090909091, sy=0.7527272727272727, sz=0.7327272727272728, fr=0.27320538214602824, ry=-0.199
-j:0, 1, sh=1
-j:1, 2, sh=1
-j:2, 3, sh=1, stif=0.2165289256198347, rotstif=0.2165289256198347
-j:3, 4, sh=1, stif=0.9090909090909091, rotstif=0.9090909090909091
-j:4, 5, sh=1, stif=0.8264462809917354, rotstif=0.8264462809917354
-n:p=0, d=S
-n:p=0, d=S
-n:p=0, d=S
-n:p=1, d=S
-n:p=1, d=S
-n:p=1, d=*
-n:j=0, d=M
-n:j=0, d=M
-n:j=1, d=M
-n:p=2, d=Gpart
-n:p=3, d=*
-n:p=3, d=*
-n:p=3, d=Gpart
-n:p=5, d=*
-n:p=5, d=*
-n:p=5
-c:6, 4, -5.154
-c:7, 0
-c:15, 0
-c:15, 2
-c:15, 3
-c:15, 9
-c:15, 12
-c:15, 14
-
-Model contains: 6 part(s)
-                5 joint(s)
-                16 neuron(s)
-
-Investigating details...
-    #############################################
-   ##                                           ##
-  ##    P A R T    O B J E C T                   ##
-   ##                                           ##
-    #############################################
-            (part # 1)
-Here is the full listing of properties as they are printed in f0
- (please compare with f0 genotype).
-Some properties have special meaning (eg. geometry and connections groups)
-and should be handled with care, because they influence other elements of the model.
-
- [this data is provided by Part::properties() ]
- #        id                      type  name        group (22 properties)
- 0.        x = 1.84400826446281     f   position.x  Geometry  
- 1.        y = 0.0                  f   position.y  Geometry  
- 2.        z = 0.0                  f   position.z  Geometry  
- 3.       sh = 2                    d 0 3 0 shape       Geometry  
- 4.        s = 1.0                  f 0.1 10.0 1.0 size        Geometry  
- 5.       sx = 0.9090909090909091   f 0.05 5.0 1.0 scale.x     Geometry  
- 6.       sy = 0.9090909090909091   f 0.05 5.0 1.0 scale.y     Geometry  
- 7.       sz = 0.9090909090909091   f 0.05 5.0 1.0 scale.z     Geometry  
- 8.        h = 0.0                  f 0 1 0 hollow      Other properties
- 9.       dn = 1.0                  f 0.2 5.0 1.0 density     Other properties
-10.       fr = 0.36363636363636365  f 0.0 4.0 0.4 friction    Other properties
-11.      ing = 0.25                 f 0.0 1.0 0.25 ingestion   Other properties
-12.       as = 0.25                 f 0.0 1.0 0.25 assimilation  Other properties
-13.       rx = 0.0                  f   rot.x       Geometry  
-14.       ry = 0.0                  f   rot.y       Geometry  
-15.       rz = 0.0                  f   rot.z       Geometry  
-16.        i =                      s   info        Other properties
-17.   Vstyle = part                 s 0 0 part vis_style   Visual    
-18.       vs = 0.2                  f 0.05 0.7 0.2 visual thickness  Visual    
-19.       vr = 1.0                  f 0.0 1.0 1.0 red component  Visual    
-20.       vg = 1.0                  f 0.0 1.0 1.0 green component  Visual    
-21.       vb = 1.0                  f 0.0 1.0 1.0 blue component  Visual    
-
-However, there is a subset of properties which may be modified more freely.
-Properties on this list are related only to this part and can be changed
-without much consideration. They are guaranteed to be always valid; any inconsistencies
-will be silently repaired.
-
- [this data is provided by Part::extraProperties() ]
- #        id                      type  name        group (9 properties)
- 0.        h = 0.0                  f 0 1 0 hollow      Extra properties
- 1.       dn = 1.0                  f 0.2 5.0 1.0 density     Extra properties
- 2.       fr = 0.36363636363636365  f 0.0 4.0 0.4 friction    Extra properties
- 3.      ing = 0.25                 f 0.0 1.0 0.25 ingestion   Extra properties
- 4.       as = 0.25                 f 0.0 1.0 0.25 assimilation  Extra properties
- 5.       vs = 0.2                  f 0.05 0.7 0.2 visual thickness  Extra properties
- 6.       vr = 1.0                  f 0.0 1.0 1.0 red component  Extra properties
- 7.       vg = 1.0                  f 0.0 1.0 1.0 green component  Extra properties
- 8.       vb = 1.0                  f 0.0 1.0 1.0 blue component  Extra properties
-
-This set of properties can vary from release to release,
-but can be safely accessed by using extraProperties() call.
-This method accesses the full set of properies (even those
-which appear in future releases).
-Now we will try to change some of properties:
-
-      Change property #7 to random value from range [0..1]
-      Current value of 'vg' (green component) is '1.0'
-      Setting new value... [ using ParamInterface::set() ]
-      The value is now '0.548814'
-
-Let's see f0... (check out part #1 !)
-
-p:sh=2, sx=0.8264462809917354, sy=0.8264462809917354, sz=0.8264462809917354, ry=-0.214
-p:1.84400826446281, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.36363636363636365, vg=0.548814
-p:3.4488812833580815, -0.26888325253375556, 1.3310278019498911, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942, rx=0.603, -0.9391, 0.3034
-p:5.053754302253353, -0.5377665050675111, 2.6620556038997822, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942
-p:5.55205906721839, -1.6581236294201596, 4.369698100138417, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3005259203606311, rx=0.603, -0.9391, 0.3034
-p:5.983025350431395, -2.627081142373801, 5.846578096885344, sh=2, sx=0.9090909090909091, sy=0.7527272727272727, sz=0.7327272727272728, fr=0.27320538214602824, ry=-0.199
-j:0, 1, sh=1
-j:1, 2, sh=1
-j:2, 3, sh=1, stif=0.2165289256198347, rotstif=0.2165289256198347
-j:3, 4, sh=1, stif=0.9090909090909091, rotstif=0.9090909090909091
-j:4, 5, sh=1, stif=0.8264462809917354, rotstif=0.8264462809917354
-n:p=0, d=S
-n:p=0, d=S
-n:p=0, d=S
-n:p=1, d=S
-n:p=1, d=S
-n:p=1, d=*
-n:j=0, d=M
-n:j=0, d=M
-n:j=1, d=M
-n:p=2, d=Gpart
-n:p=3, d=*
-n:p=3, d=*
-n:p=3, d=Gpart
-n:p=5, d=*
-n:p=5, d=*
-n:p=5
-c:6, 4, -5.154
-c:7, 0
-c:15, 0
-c:15, 2
-c:15, 3
-c:15, 9
-c:15, 12
-c:15, 14
-
-    #############################################
-   ##                                           ##
-  ##    J O I N T    O B J E C T                 ##
-   ##                                           ##
-    #############################################
-            (joint # 2)
-Similarly as with Part, the full list of properties comes first:
-
- #        id                      type  name        group (21 properties)
- 0.       p1 = 2                    d -1 999999 -1 part1 ref#  Connections
- 1.       p2 = 3                    d -1 999999 -1 part2 ref#  Connections
- 2.       sh = 1                    d 0 3 0 shape       Geometry  
- 3.       hx = 0.0                  f   hinge position.x  Geometry  
- 4.       hy = 0.0                  f   hinge position.y  Geometry  
- 5.       hz = 0.0                  f   hinge position.z  Geometry  
- 6.      hrx = 0.0                  f   hinge rotation.x  Geometry  
- 7.      hry = 0.0                  f   hinge rotation.y  Geometry  
- 8.      hrz = 0.0                  f   hinge rotation.z  Geometry  
- 9.      hxn = -1.5708              f -6.2832 0 -1.5708 hinge x negative limit  Geometry  
-10.      hxp = 1.5708               f 0 6.2832 1.5708 hinge x positive limit  Geometry  
-11.      hyn = -1.5708              f -6.2832 0 -1.5708 hinge y negative limit  Geometry  
-12.      hyp = 1.5708               f 0 6.2832 1.5708 hinge y positive limit  Geometry  
-13.     stif = 0.2165289256198347   f 0.0 1.0 1.0 stiffness   Other properties
-14.  rotstif = 0.2165289256198347   f 0.0 1.0 1.0 rotation stiffness  Other properties
-15.     stam = 0.25                 f 0.0 1.0 0.25 stamina     Other properties
-16.        i =                      s   info        Other properties
-17.   Vstyle = joint                s 0 0 joint vis_style   Visual    
-18.       vr = 1.0                  f 0.0 1.0 1.0 red component  Visual    
-19.       vg = 1.0                  f 0.0 1.0 1.0 green component  Visual    
-20.       vb = 1.0                  f 0.0 1.0 1.0 blue component  Visual    
-
-Actually, there are two kinds of Joints: delta and absolute.
-For this object, Joint::isDelta() returns 0, so this is the absolute Joint.
-
-Absolute Joints adapt to its Parts' positions.
-We can move a Part, and it does not influence the second part, nor the Joint.
-Let's move the first Part along y axis by -0.1...
-The Part's position is changed, but everything else stays intact:
-
-p:sh=2, sx=0.8264462809917354, sy=0.8264462809917354, sz=0.8264462809917354, ry=-0.214
-p:1.84400826446281, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.36363636363636365, vg=0.548814
-p:3.4488812833580815, -0.36888325253375553, 1.3310278019498911, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942, rx=0.603, -0.9391, 0.3034
-p:5.053754302253353, -0.5377665050675111, 2.6620556038997822, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942
-p:5.55205906721839, -1.6581236294201596, 4.369698100138417, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3005259203606311, rx=0.603, -0.9391, 0.3034
-p:5.983025350431395, -2.627081142373801, 5.846578096885344, sh=2, sx=0.9090909090909091, sy=0.7527272727272727, sz=0.7327272727272728, fr=0.27320538214602824, ry=-0.199
-j:0, 1, sh=1
-j:1, 2, sh=1
-j:2, 3, sh=1, stif=0.2165289256198347, rotstif=0.2165289256198347
-j:3, 4, sh=1, stif=0.9090909090909091, rotstif=0.9090909090909091
-j:4, 5, sh=1, stif=0.8264462809917354, rotstif=0.8264462809917354
-n:p=0, d=S
-n:p=0, d=S
-n:p=0, d=S
-n:p=1, d=S
-n:p=1, d=S
-n:p=1, d=*
-n:j=0, d=M
-n:j=0, d=M
-n:j=1, d=M
-n:p=2, d=Gpart
-n:p=3, d=*
-n:p=3, d=*
-n:p=3, d=Gpart
-n:p=5, d=*
-n:p=5, d=*
-n:p=5
-c:6, 4, -5.154
-c:7, 0
-c:15, 0
-c:15, 2
-c:15, 3
-c:15, 9
-c:15, 12
-c:15, 14
-
-How would this joint look like with delta option enabled?
-[ by calling Joint::useDelta(1) ]
-f0 is now:
-
-p:sh=2, sx=0.8264462809917354, sy=0.8264462809917354, sz=0.8264462809917354, ry=-0.214
-p:1.84400826446281, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.36363636363636365, vg=0.548814
-p:3.4488812833580815, -0.36888325253375553, 1.3310278019498911, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942, rx=0.603, -0.9391, 0.3034
-p:5.053754302253353, -0.537766505067511, 2.6620556038997822, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942
-p:5.55205906721839, -1.6581236294201596, 4.369698100138417, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3005259203606311, rx=0.603, -0.9391, 0.3034
-p:5.983025350431395, -2.627081142373801, 5.846578096885344, sh=2, sx=0.9090909090909091, sy=0.7527272727272727, sz=0.7327272727272728, fr=0.27320538214602824, ry=-0.199
-j:0, 1, sh=1
-j:1, 2, sh=1
-j:2, 3, rx=-0.6137069589668486, 0.9336120115153849, 0.32629609148341426, dx=1.6048730188952711, -0.16888325253375558, 1.3310278019498911, sh=1, stif=0.2165289256198347, rotstif=0.2165289256198347
-j:3, 4, sh=1, stif=0.9090909090909091, rotstif=0.9090909090909091
-j:4, 5, sh=1, stif=0.8264462809917354, rotstif=0.8264462809917354
-n:p=0, d=S
-n:p=0, d=S
-n:p=0, d=S
-n:p=1, d=S
-n:p=1, d=S
-n:p=1, d=*
-n:j=0, d=M
-n:j=0, d=M
-n:j=1, d=M
-n:p=2, d=Gpart
-n:p=3, d=*
-n:p=3, d=*
-n:p=3, d=Gpart
-n:p=5, d=*
-n:p=5, d=*
-n:p=5
-c:6, 4, -5.154
-c:7, 0
-c:15, 0
-c:15, 2
-c:15, 3
-c:15, 9
-c:15, 12
-c:15, 14
-
-...so this is a delta joint.
-
-Delta fields (dx,dy,dz) describe relative location of the second part.
-This joint will change the second Part's positions to preserve delta distance.
-Let's move the first Part (#2) along y axis (+0.1) and change delta.z (dz) by 0.1.
-Position of the second Part referenced by this joint (part #3) is now changed:
-
-p:sh=2, sx=0.8264462809917354, sy=0.8264462809917354, sz=0.8264462809917354, ry=-0.214
-p:1.84400826446281, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.36363636363636365, vg=0.548814
-p:3.4488812833580815, -0.26888325253375556, 1.3310278019498911, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942, rx=0.603, -0.9391, 0.3034
-p:5.053754302253353, -0.437766505067511, 2.762055603899782, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942
-p:5.55205906721839, -1.6581236294201596, 4.369698100138417, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3005259203606311, rx=0.603, -0.9391, 0.3034
-p:5.983025350431395, -2.627081142373801, 5.846578096885344, sh=2, sx=0.9090909090909091, sy=0.7527272727272727, sz=0.7327272727272728, fr=0.27320538214602824, ry=-0.199
-j:0, 1, sh=1
-j:1, 2, sh=1
-j:2, 3, rx=-0.6137069589668486, 0.9336120115153849, 0.32629609148341426, dx=1.6048730188952711, -0.16888325253375558, 1.4310278019498912, sh=1, stif=0.2165289256198347, rotstif=0.2165289256198347
-j:3, 4, sh=1, stif=0.9090909090909091, rotstif=0.9090909090909091
-j:4, 5, sh=1, stif=0.8264462809917354, rotstif=0.8264462809917354
-n:p=0, d=S
-n:p=0, d=S
-n:p=0, d=S
-n:p=1, d=S
-n:p=1, d=S
-n:p=1, d=*
-n:j=0, d=M
-n:j=0, d=M
-n:j=1, d=M
-n:p=2, d=Gpart
-n:p=3, d=*
-n:p=3, d=*
-n:p=3, d=Gpart
-n:p=5, d=*
-n:p=5, d=*
-n:p=5
-c:6, 4, -5.154
-c:7, 0
-c:15, 0
-c:15, 2
-c:15, 3
-c:15, 9
-c:15, 12
-c:15, 14
-
-If no delta fields are defined, they will be computed automatically.
-You can always delete existing delta values by using Joint::resetDelta().
-Now we will change the second Part's z position by -0.2 and call resetDelta()...
-As you can see, Joint's delta fields have altered:
-
-p:sh=2, sx=0.8264462809917354, sy=0.8264462809917354, sz=0.8264462809917354, ry=-0.214
-p:1.84400826446281, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.36363636363636365, vg=0.548814
-p:3.4488812833580815, -0.26888325253375556, 1.3310278019498911, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942, rx=0.603, -0.9391, 0.3034
-p:5.053754302253353, -0.437766505067511, 2.5620556038997817, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942
-p:5.55205906721839, -1.6581236294201596, 4.369698100138417, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3005259203606311, rx=0.603, -0.9391, 0.3034
-p:5.983025350431395, -2.627081142373801, 5.846578096885344, sh=2, sx=0.9090909090909091, sy=0.7527272727272727, sz=0.7327272727272728, fr=0.27320538214602824, ry=-0.199
-j:0, 1, sh=1
-j:1, 2, sh=1
-j:2, 3, rx=-0.6137069589668486, 0.9336120115153849, 0.32629609148341426, dx=1.6048730188952707, -0.16888325253375555, 1.2310278019498904, sh=1, stif=0.2165289256198347, rotstif=0.2165289256198347
-j:3, 4, sh=1, stif=0.9090909090909091, rotstif=0.9090909090909091
-j:4, 5, sh=1, stif=0.8264462809917354, rotstif=0.8264462809917354
-n:p=0, d=S
-n:p=0, d=S
-n:p=0, d=S
-n:p=1, d=S
-n:p=1, d=S
-n:p=1, d=*
-n:j=0, d=M
-n:j=0, d=M
-n:j=1, d=M
-n:p=2, d=Gpart
-n:p=3, d=*
-n:p=3, d=*
-n:p=3, d=Gpart
-n:p=5, d=*
-n:p=5, d=*
-n:p=5
-c:6, 4, -5.154
-c:7, 0
-c:15, 0
-c:15, 2
-c:15, 3
-c:15, 9
-c:15, 12
-c:15, 14
-
-Part references and delta fields are the 'core' properties of the Joint.
-The other properties are available from Joint::extraProperties()
-and at the moment are defined as follows:
-
- #        id                      type  name        group (5 properties)
- 0.     stif = 0.2165289256198347   f 0.0 1.0 1.0 stiffness   Extra properties
- 1.  rotstif = 0.2165289256198347   f 0.0 1.0 1.0 rotation stiffness  Extra properties
- 2.       vr = 1.0                  f 0.0 1.0 1.0 red component  Extra properties
- 3.       vg = 1.0                  f 0.0 1.0 1.0 green component  Extra properties
- 4.       vb = 1.0                  f 0.0 1.0 1.0 blue component  Extra properties
-
-They can be changed just like Part's extra properties:
-      Change property #0 to random value from range [0..1]
-      Current value of 'stif' (stiffness) is '0.2165289256198347'
-      Setting new value... [ using ParamInterface::set() ]
-      The value is now '0.592845'
-And after that we have this genotype:
-
-p:sh=2, sx=0.8264462809917354, sy=0.8264462809917354, sz=0.8264462809917354, ry=-0.214
-p:1.84400826446281, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.36363636363636365, vg=0.548814
-p:3.4488812833580815, -0.26888325253375556, 1.3310278019498911, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942, rx=0.603, -0.9391, 0.3034
-p:5.053754302253352, -0.437766505067511, 2.5620556038997813, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942
-p:5.55205906721839, -1.6581236294201596, 4.369698100138417, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3005259203606311, rx=0.603, -0.9391, 0.3034
-p:5.983025350431395, -2.627081142373801, 5.846578096885344, sh=2, sx=0.9090909090909091, sy=0.7527272727272727, sz=0.7327272727272728, fr=0.27320538214602824, ry=-0.199
-j:0, 1, sh=1
-j:1, 2, sh=1
-j:2, 3, rx=-0.6137069589668486, 0.9336120115153849, 0.32629609148341426, dx=1.6048730188952707, -0.16888325253375555, 1.2310278019498904, sh=1, stif=0.592845, rotstif=0.2165289256198347
-j:3, 4, sh=1, stif=0.9090909090909091, rotstif=0.9090909090909091
-j:4, 5, sh=1, stif=0.8264462809917354, rotstif=0.8264462809917354
-n:p=0, d=S
-n:p=0, d=S
-n:p=0, d=S
-n:p=1, d=S
-n:p=1, d=S
-n:p=1, d=*
-n:j=0, d=M
-n:j=0, d=M
-n:j=1, d=M
-n:p=2, d=Gpart
-n:p=3, d=*
-n:p=3, d=*
-n:p=3, d=Gpart
-n:p=5, d=*
-n:p=5, d=*
-n:p=5
-c:6, 4, -5.154
-c:7, 0
-c:15, 0
-c:15, 2
-c:15, 3
-c:15, 9
-c:15, 12
-c:15, 14
-
-    #############################################
-   ##                                           ##
-  ##    N E U R O    O B J E C T                 ##
-   ##                                           ##
-    #############################################
-            (neuro # 1)
-Basic features of Neuro object are similar to those of Part and Joint.
-We can request a property list:
-
- #        id                      type  name        group (10 properties)
- 0.        p = 0                    d -1 999999 -1 part ref#   Connections
- 1.        j = -1                   d -1 999999 -1 joint ref#  Connections
- 2.        d = S                    s   details     Other     
- 3.        i =                      s   info        Other     
- 4.   Vstyle = neuro                s 0 0 neuro vis_style   Visual    
- 5. getInputCount = 0                    d   input count  Connections
- 9. classObject = null                 oNeuroClass neuron class  Connections
-
-...and extra properties (which are designed to be always valid and easy to change):
-
- #        id                      type  name        group (0 properties)
-
-As usual, we will change something:
-Each neuron can have any number of inputs = weighted connections
- with other neurons.
-According to Neuro::getInputCount(), this one has 0 inputs.
-Standard API is provided for accessing those inputs (getInput(int)),
-adding inputs (addInput(Neuro*)) and removing them (removeInput(int)).
-
-
-The most unusual thing is 'details' field (d).
-It is something like separate object with its own set of properties.
-Currently the value of 'd' is 'S'.
-'S' is the class name (Neuro::getClassName() == 'S') and means 'Smell'.
-Neuro::getClass() gives you information about basic characteristic
-of the class, that can be analyzed automatically.
-For the current object we can learn that it supports no inputs (getPreferredInputs()) and provides meaningful output signal (getPreferredOutput()==1).
-Instances of 'S' can be used in models having any shape types.
-Instances of 'S' can be attached to Parts.
-(This class does not have its own properties
- - Neuro::classProperties().getPropCount()==0)
-The class of this object can be changed using Neuro::setClassName()
-The following classes are available:
- [ data provided by Neuro::getClassInfo()->getProperties() ]
-
- #  class  description       properties
- 0.     N  Neuron                 4
- 1.    Nu  Unipolar neuron [EXPERIMENTAL!]   4
- 2.     G  Gyroscope              0
- 3. Gpart  Part Gyroscope         2
- 4.     T  Touch                  3
- 5.Tcontact  Touch contact          0
- 6.Tproximity  Touch proximity        3
- 7.     S  Smell                  0
- 8.     *  Constant               0
- 9.     |  Bend muscle            2
-10.     @  Rotation muscle        1
-11.     M  Muscle for solids      2
-12.     D  Differentiate          0
-13. Fuzzy  Fuzzy system [EXPERIMENTAL!]   4
-14.   Sti  Sticky [EXPERIMENTAL!]   0
-15.   LMu  Linear muscle [EXPERIMENTAL!]   1
-16. Water  Water detector         0
-17.Energy  Energy level           0
-18.    Ch  Channelize             0
-19. ChMux  Channel multiplexer    0
-20. ChSel  Channel selector       1
-21.   Rnd  Random noise           0
-22.   Sin  Sinus generator        2
-
-Let's change the Neuro's class to 'N'...
- #        id                      type  name        group (4 properties)
- 0.       in = 0.8                  f 0.0 1.0 0.8 Inertia     (null)    
- 1.       fo = 0.04                 f 0.0 999.0 0.04 Force       (null)    
- 2.       si = 2.0                  f -99999.0 99999.0 2.0 Sigmoid     (null)    
- 3.        s = 0.0                  f -1.0 1.0 0.0 State       (null)    
-      Change property #2 to random value from range [-99999..99999]
-      Current value of 'si' (Sigmoid) is '2.0'
-      Setting new value... [ using ParamInterface::set() ]
-      The value is now '43037.4'
-The final object description will be then: 'N:si=43037.4'
-And the full f0 genotype:
-
-p:sh=2, sx=0.8264462809917354, sy=0.8264462809917354, sz=0.8264462809917354, ry=-0.214
-p:1.84400826446281, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.36363636363636365, vg=0.548814
-p:3.4488812833580815, -0.26888325253375556, 1.3310278019498911, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942, rx=0.603, -0.9391, 0.3034
-p:5.053754302253352, -0.437766505067511, 2.5620556038997813, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942
-p:5.55205906721839, -1.6581236294201596, 4.369698100138417, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3005259203606311, rx=0.603, -0.9391, 0.3034
-p:5.983025350431395, -2.627081142373801, 5.846578096885344, sh=2, sx=0.9090909090909091, sy=0.7527272727272727, sz=0.7327272727272728, fr=0.27320538214602824, ry=-0.199
-j:0, 1, sh=1
-j:1, 2, sh=1
-j:2, 3, rx=-0.6137069589668486, 0.9336120115153849, 0.32629609148341426, dx=1.6048730188952707, -0.16888325253375555, 1.2310278019498904, sh=1, stif=0.592845, rotstif=0.2165289256198347
-j:3, 4, sh=1, stif=0.9090909090909091, rotstif=0.9090909090909091
-j:4, 5, sh=1, stif=0.8264462809917354, rotstif=0.8264462809917354
-n:p=0, d=S
-n:p=0, d=N:si=43037.4
-n:p=0, d=S
-n:p=1, d=S
-n:p=1, d=S
-n:p=1, d=*
-n:j=0, d=M
-n:j=0, d=M
-n:j=1, d=M
-n:p=2, d=Gpart
-n:p=3, d=*
-n:p=3, d=*
-n:p=3, d=Gpart
-n:p=5, d=*
-n:p=5, d=*
-n:p=5
-c:6, 4, -5.154
-c:7, 0
-c:15, 0
-c:15, 2
-c:15, 3
-c:15, 9
-c:15, 12
-c:15, 14
-
-
-######### THE END ###########
-
-Hints:
-  1. You can redirect output: genomanipulation >filename.txt
-  2. Each run can yield different results and new behaviors, but you
-     need to uncomment srand(time(0)) in genomanipulation.cpp.
-  3. This application will use custom genotype passed as
-     a commandline parameter: genomanipulation "/*9*/FULU"
-
-
Index: /cpp/tests/genomanipulation-fS.goal
===================================================================
--- /cpp/tests/genomanipulation-fS.goal	(revision 1033)
+++ /cpp/tests/genomanipulation-fS.goal	(revision 1034)
@@ -224,16 +224,16 @@
 p:3.2159989925040344, -0.15022914055334208, 2.057760603467444, sh=1, rx=1.3416, -1.3967, 1.1368
 p:1.0846131653683386, -0.09317957887309433, -3.5838606901740344, sh=2, sx=1.273, sy=0.133, sz=1.509, ing=0.22727272727272727, rx=-0.9744, -1.5695, 1.1659
-p:0.13646425523681838, 0.6195656475707613, 3.289951226640109, sh=3, sx=0.8736, sy=0.8736, sz=0.8736, rx=0.3229, -0.3828, 1.5117
-p:1.6422082610960242, -0.21052356609516198, 2.883642273506047, sh=1, ing=0.22727272727272727, rx=1.3416, -1.3967, 1.1368
-j:0, 1, sh=1
-j:1, 2, sh=1
-j:1, 3, sh=2
-j:3, 4, sh=1
-j:4, 5, sh=1
-j:0, 6, sh=2
-j:6, 7, sh=1
-j:6, 8, sh=1
-j:0, 9, sh=1
-j:0, 10, rx=0.3229000000000001, -0.3828, 1.5117, dx=-0.5550636879509978, 0.9656107299102641, 3.181143899353255, sh=1
+p:0.13646425523681815, 0.6195656475707613, 3.289951226640109, sh=3, sx=0.8736, sy=0.8736, sz=0.8736, rx=0.3229, -0.3828, 1.5117
+p:1.6422082610960242, -0.21052356609516198, 2.883642273506047, sh=1, ing=0.22727272727272727, rx=1.3416, -1.3967, 1.1368
+j:0, 1, sh=1
+j:1, 2, sh=1
+j:1, 3, sh=2
+j:3, 4, sh=1
+j:4, 5, sh=1
+j:0, 6, sh=2
+j:6, 7, sh=1
+j:6, 8, sh=1
+j:0, 9, sh=1
+j:0, 10, rx=0.3229, -0.3828, 1.5117, dx=-0.5550636879509978, 0.9656107299102641, 3.181143899353255, sh=1
 j:0, 11, sh=1
 n:p=0, d=Gpart
@@ -261,16 +261,16 @@
 p:3.2159989925040344, -0.15022914055334208, 2.057760603467444, sh=1, rx=1.3416, -1.3967, 1.1368
 p:1.0846131653683386, -0.09317957887309433, -3.5838606901740344, sh=2, sx=1.273, sy=0.133, sz=1.509, ing=0.22727272727272727, rx=-0.9744, -1.5695, 1.1659
-p:0.17023272858450833, 0.753051220526163, 3.3779194402835317, sh=3, sx=0.8736, sy=0.8736, sz=0.8736, rx=0.3229, -0.3828, 1.5117
-p:1.6422082610960242, -0.21052356609516198, 2.883642273506047, sh=1, ing=0.22727272727272727, rx=1.3416, -1.3967, 1.1368
-j:0, 1, sh=1
-j:1, 2, sh=1
-j:1, 3, sh=2
-j:3, 4, sh=1
-j:4, 5, sh=1
-j:0, 6, sh=2
-j:6, 7, sh=1
-j:6, 8, sh=1
-j:0, 9, sh=1
-j:0, 10, rx=0.3229000000000001, -0.3828, 1.5117, dx=-0.5550636879509978, 0.9656107299102641, 3.281143899353255, sh=1
+p:0.1702327285845081, 0.753051220526163, 3.3779194402835317, sh=3, sx=0.8736, sy=0.8736, sz=0.8736, rx=0.3229, -0.3828, 1.5117
+p:1.6422082610960242, -0.21052356609516198, 2.883642273506047, sh=1, ing=0.22727272727272727, rx=1.3416, -1.3967, 1.1368
+j:0, 1, sh=1
+j:1, 2, sh=1
+j:1, 3, sh=2
+j:3, 4, sh=1
+j:4, 5, sh=1
+j:0, 6, sh=2
+j:6, 7, sh=1
+j:6, 8, sh=1
+j:0, 9, sh=1
+j:0, 10, rx=0.3229, -0.3828, 1.5117, dx=-0.5550636879509978, 0.9656107299102641, 3.281143899353255, sh=1
 j:0, 11, sh=1
 n:p=0, d=Gpart
@@ -296,16 +296,16 @@
 p:3.2159989925040344, -0.15022914055334208, 2.057760603467444, sh=1, rx=1.3416, -1.3967, 1.1368
 p:1.0846131653683386, -0.09317957887309433, -3.5838606901740344, sh=2, sx=1.273, sy=0.133, sz=1.509, ing=0.22727272727272727, rx=-0.9744, -1.5695, 1.1659
-p:0.17023272858450833, 0.753051220526163, 3.1779194402835316, sh=3, sx=0.8736, sy=0.8736, sz=0.8736, rx=0.3229, -0.3828, 1.5117
-p:1.6422082610960242, -0.21052356609516198, 2.883642273506047, sh=1, ing=0.22727272727272727, rx=1.3416, -1.3967, 1.1368
-j:0, 1, sh=1
-j:1, 2, sh=1
-j:1, 3, sh=2
-j:3, 4, sh=1
-j:4, 5, sh=1
-j:0, 6, sh=2
-j:6, 7, sh=1
-j:6, 8, sh=1
-j:0, 9, sh=1
-j:0, 10, rx=0.32290000000000013, -0.3828, 1.5117, dx=-0.48035983335347077, 0.9067404686418418, 3.10520747206641, sh=1
+p:0.1702327285845081, 0.753051220526163, 3.1779194402835316, sh=3, sx=0.8736, sy=0.8736, sz=0.8736, rx=0.3229, -0.3828, 1.5117
+p:1.6422082610960242, -0.21052356609516198, 2.883642273506047, sh=1, ing=0.22727272727272727, rx=1.3416, -1.3967, 1.1368
+j:0, 1, sh=1
+j:1, 2, sh=1
+j:1, 3, sh=2
+j:3, 4, sh=1
+j:4, 5, sh=1
+j:0, 6, sh=2
+j:6, 7, sh=1
+j:6, 8, sh=1
+j:0, 9, sh=1
+j:0, 10, rx=0.3229, -0.3828, 1.5117, dx=-0.48035983335347077, 0.9067404686418418, 3.10520747206641, sh=1
 j:0, 11, sh=1
 n:p=0, d=Gpart
@@ -344,16 +344,16 @@
 p:3.2159989925040344, -0.15022914055334208, 2.057760603467444, sh=1, rx=1.3416, -1.3967, 1.1368
 p:1.0846131653683386, -0.09317957887309433, -3.5838606901740344, sh=2, sx=1.273, sy=0.133, sz=1.509, ing=0.22727272727272727, rx=-0.9744, -1.5695, 1.1659
-p:0.17023272858450844, 0.7530512205261631, 3.1779194402835316, sh=3, sx=0.8736, sy=0.8736, sz=0.8736, rx=0.3229, -0.3828, 1.5117
-p:1.6422082610960242, -0.21052356609516198, 2.883642273506047, sh=1, ing=0.22727272727272727, rx=1.3416, -1.3967, 1.1368
-j:0, 1, sh=1
-j:1, 2, sh=1
-j:1, 3, sh=2
-j:3, 4, sh=1
-j:4, 5, sh=1
-j:0, 6, sh=2
-j:6, 7, sh=1
-j:6, 8, sh=1
-j:0, 9, sh=1
-j:0, 10, rx=0.32290000000000013, -0.3828, 1.5117, dx=-0.48035983335347077, 0.9067404686418418, 3.10520747206641, sh=1, vg=0.857946
+p:0.170232728584508, 0.7530512205261631, 3.1779194402835316, sh=3, sx=0.8736, sy=0.8736, sz=0.8736, rx=0.3229, -0.3828, 1.5117
+p:1.6422082610960242, -0.21052356609516198, 2.883642273506047, sh=1, ing=0.22727272727272727, rx=1.3416, -1.3967, 1.1368
+j:0, 1, sh=1
+j:1, 2, sh=1
+j:1, 3, sh=2
+j:3, 4, sh=1
+j:4, 5, sh=1
+j:0, 6, sh=2
+j:6, 7, sh=1
+j:6, 8, sh=1
+j:0, 9, sh=1
+j:0, 10, rx=0.3229, -0.3828, 1.5117, dx=-0.48035983335347077, 0.9067404686418418, 3.10520747206641, sh=1, vg=0.857946
 j:0, 11, sh=1
 n:p=0, d=Gpart
@@ -459,16 +459,16 @@
 p:3.2159989925040344, -0.15022914055334208, 2.057760603467444, sh=1, rx=1.3416, -1.3967, 1.1368
 p:1.0846131653683386, -0.09317957887309433, -3.5838606901740344, sh=2, sx=1.273, sy=0.133, sz=1.509, ing=0.22727272727272727, rx=-0.9744, -1.5695, 1.1659
-p:0.17023272858450844, 0.7530512205261631, 3.1779194402835316, sh=3, sx=0.8736, sy=0.8736, sz=0.8736, rx=0.3229, -0.3828, 1.5117
-p:1.6422082610960242, -0.21052356609516198, 2.883642273506047, sh=1, ing=0.22727272727272727, rx=1.3416, -1.3967, 1.1368
-j:0, 1, sh=1
-j:1, 2, sh=1
-j:1, 3, sh=2
-j:3, 4, sh=1
-j:4, 5, sh=1
-j:0, 6, sh=2
-j:6, 7, sh=1
-j:6, 8, sh=1
-j:0, 9, sh=1
-j:0, 10, rx=0.32290000000000013, -0.3828, 1.5117, dx=-0.48035983335347077, 0.9067404686418418, 3.10520747206641, sh=1, vg=0.857946
+p:0.170232728584508, 0.7530512205261631, 3.1779194402835316, sh=3, sx=0.8736, sy=0.8736, sz=0.8736, rx=0.3229, -0.3828, 1.5117
+p:1.6422082610960242, -0.21052356609516198, 2.883642273506047, sh=1, ing=0.22727272727272727, rx=1.3416, -1.3967, 1.1368
+j:0, 1, sh=1
+j:1, 2, sh=1
+j:1, 3, sh=2
+j:3, 4, sh=1
+j:4, 5, sh=1
+j:0, 6, sh=2
+j:6, 7, sh=1
+j:6, 8, sh=1
+j:0, 9, sh=1
+j:0, 10, rx=0.3229, -0.3828, 1.5117, dx=-0.48035983335347077, 0.9067404686418418, 3.10520747206641, sh=1, vg=0.857946
 j:0, 11, sh=1
 n:p=0, d=Gpart
Index: p/tests/multiline_f0_test-fS-linux.goal
===================================================================
--- /cpp/tests/multiline_f0_test-fS-linux.goal	(revision 1033)
+++ 	(revision )
@@ -1,469 +1,0 @@
-
-Source genotype: '1.1:ssC[S;S;S]{ry=-0.214;ty=0.781}fSC[S;S;*;M'4:-5.154;M'0]fE[M;Gpart]{rx=0.603;ry=-0.9391;rz=0.3034;tx=0.6534;ty=0.6856;tz=-0.166;x=1;z=1}ttC[*;*;Gpart]{st=0.262}fTE{rx=0.603;ry=-0.9391;rz=0.3034;tx=0.6534;ty=0.6856;tz=-0.166;x=1;y=1;z=1}ftC[*;*;N'0'2'3'9'12'14]{ry=-0.199;y=0.828;z=0.806}'
-                  ( format S )
-Converted to f0:
-p:sh=2, sx=0.8264462809917354, sy=0.8264462809917354, sz=0.8264462809917354, ry=-0.214
-p:1.84400826446281, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.36363636363636365
-p:3.4488812833580815, -0.26888325253375556, 1.3310278019498911, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942, rx=0.603, -0.9391, 0.3034
-p:5.053754302253353, -0.5377665050675111, 2.6620556038997822, sh=2, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3305785123966942
-p:5.55205906721839, -1.6581236294201596, 4.369698100138417, sh=1, sx=0.9090909090909091, sy=0.9090909090909091, sz=0.9090909090909091, fr=0.3005259203606311, rx=0.603, -0.9391, 0.3034
-p:5.983025350431395, -2.627081142373801, 5.846578096885344, sh=2, sx=0.9090909090909091, sy=0.7527272727272727, sz=0.7327272727272728, fr=0.27320538214602824, ry=-0.199
-j:0, 1, sh=1
-j:1, 2, sh=1
-j:2, 3, sh=1, stif=0.2165289256198347, rotstif=0.2165289256198347
-j:3, 4, sh=1, stif=0.9090909090909091, rotstif=0.9090909090909091
-j:4, 5, sh=1, stif=0.8264462809917354, rotstif=0.8264462809917354
-n:p=0, d=S
-n:p=0, d=S
-n:p=0, d=S
-n:p=1, d=S
-n:p=1, d=S
-n:p=1, d=*
-n:j=0, d=M
-n:j=0, d=M
-n:j=1, d=M
-n:p=2, d=Gpart
-n:p=3, d=*
-n:p=3, d=*
-n:p=3, d=Gpart
-n:p=5, d=*
-n:p=5, d=*
-n:p=5
-c:6, 4, -5.154
-c:7, 0
-c:15, 0
-c:15, 2
-c:15, 3
-c:15, 9
-c:15, 12
-c:15, 14
-
-
-Using Param::saveMultiLine() to create the "expanded" form of the f0 genotype...
-(MultiParamLoader should be able to load this)
-============================
-m:
-se:1.0
-Vstyle:
-
-p:
-x:0.0
-y:0.0
-z:0.0
-sh:2
-s:1.0
-sx:0.8264462809917354
-sy:0.8264462809917354
-sz:0.8264462809917354
-h:0.0
-dn:1.0
-fr:0.4
-ing:0.25
-as:0.25
-rx:0.0
-ry:-0.214
-rz:0.0
-i:
-Vstyle:part
-vs:0.2
-vr:1.0
-vg:1.0
-vb:1.0
-
-p:
-x:1.84400826446281
-y:0.0
-z:0.0
-sh:2
-s:1.0
-sx:0.9090909090909091
-sy:0.9090909090909091
-sz:0.9090909090909091
-h:0.0
-dn:1.0
-fr:0.36363636363636365
-ing:0.25
-as:0.25
-rx:0.0
-ry:0.0
-rz:0.0
-i:
-Vstyle:part
-vs:0.2
-vr:1.0
-vg:1.0
-vb:1.0
-
-p:
-x:3.4488812833580815
-y:-0.26888325253375556
-z:1.3310278019498911
-sh:1
-s:1.0
-sx:0.9090909090909091
-sy:0.9090909090909091
-sz:0.9090909090909091
-h:0.0
-dn:1.0
-fr:0.3305785123966942
-ing:0.25
-as:0.25
-rx:0.603
-ry:-0.9391
-rz:0.3034
-i:
-Vstyle:part
-vs:0.2
-vr:1.0
-vg:1.0
-vb:1.0
-
-p:
-x:5.053754302253353
-y:-0.5377665050675111
-z:2.6620556038997822
-sh:2
-s:1.0
-sx:0.9090909090909091
-sy:0.9090909090909091
-sz:0.9090909090909091
-h:0.0
-dn:1.0
-fr:0.3305785123966942
-ing:0.25
-as:0.25
-rx:0.0
-ry:0.0
-rz:0.0
-i:
-Vstyle:part
-vs:0.2
-vr:1.0
-vg:1.0
-vb:1.0
-
-p:
-x:5.55205906721839
-y:-1.6581236294201596
-z:4.369698100138417
-sh:1
-s:1.0
-sx:0.9090909090909091
-sy:0.9090909090909091
-sz:0.9090909090909091
-h:0.0
-dn:1.0
-fr:0.3005259203606311
-ing:0.25
-as:0.25
-rx:0.603
-ry:-0.9391
-rz:0.3034
-i:
-Vstyle:part
-vs:0.2
-vr:1.0
-vg:1.0
-vb:1.0
-
-p:
-x:5.983025350431395
-y:-2.627081142373801
-z:5.846578096885344
-sh:2
-s:1.0
-sx:0.9090909090909091
-sy:0.7527272727272727
-sz:0.7327272727272728
-h:0.0
-dn:1.0
-fr:0.27320538214602824
-ing:0.25
-as:0.25
-rx:0.0
-ry:-0.199
-rz:0.0
-i:
-Vstyle:part
-vs:0.2
-vr:1.0
-vg:1.0
-vb:1.0
-
-j:
-p1:0
-p2:1
-sh:1
-hx:0.0
-hy:0.0
-hz:0.0
-hrx:0.0
-hry:0.0
-hrz:0.0
-hxn:-1.5708
-hxp:1.5708
-hyn:-1.5708
-hyp:1.5708
-stif:1.0
-rotstif:1.0
-stam:0.25
-i:
-Vstyle:joint
-vr:1.0
-vg:1.0
-vb:1.0
-
-j:
-p1:1
-p2:2
-sh:1
-hx:0.0
-hy:0.0
-hz:0.0
-hrx:0.0
-hry:0.0
-hrz:0.0
-hxn:-1.5708
-hxp:1.5708
-hyn:-1.5708
-hyp:1.5708
-stif:1.0
-rotstif:1.0
-stam:0.25
-i:
-Vstyle:joint
-vr:1.0
-vg:1.0
-vb:1.0
-
-j:
-p1:2
-p2:3
-sh:1
-hx:0.0
-hy:0.0
-hz:0.0
-hrx:0.0
-hry:0.0
-hrz:0.0
-hxn:-1.5708
-hxp:1.5708
-hyn:-1.5708
-hyp:1.5708
-stif:0.2165289256198347
-rotstif:0.2165289256198347
-stam:0.25
-i:
-Vstyle:joint
-vr:1.0
-vg:1.0
-vb:1.0
-
-j:
-p1:3
-p2:4
-sh:1
-hx:0.0
-hy:0.0
-hz:0.0
-hrx:0.0
-hry:0.0
-hrz:0.0
-hxn:-1.5708
-hxp:1.5708
-hyn:-1.5708
-hyp:1.5708
-stif:0.9090909090909091
-rotstif:0.9090909090909091
-stam:0.25
-i:
-Vstyle:joint
-vr:1.0
-vg:1.0
-vb:1.0
-
-j:
-p1:4
-p2:5
-sh:1
-hx:0.0
-hy:0.0
-hz:0.0
-hrx:0.0
-hry:0.0
-hrz:0.0
-hxn:-1.5708
-hxp:1.5708
-hyn:-1.5708
-hyp:1.5708
-stif:0.8264462809917354
-rotstif:0.8264462809917354
-stam:0.25
-i:
-Vstyle:joint
-vr:1.0
-vg:1.0
-vb:1.0
-
-n:
-p:0
-j:-1
-d:S
-i:
-Vstyle:neuro
-
-n:
-p:0
-j:-1
-d:S
-i:
-Vstyle:neuro
-
-n:
-p:0
-j:-1
-d:S
-i:
-Vstyle:neuro
-
-n:
-p:1
-j:-1
-d:S
-i:
-Vstyle:neuro
-
-n:
-p:1
-j:-1
-d:S
-i:
-Vstyle:neuro
-
-n:
-p:1
-j:-1
-d:*
-i:
-Vstyle:neuro
-
-n:
-p:-1
-j:0
-d:M
-i:
-Vstyle:neuro
-
-n:
-p:-1
-j:0
-d:M
-i:
-Vstyle:neuro
-
-n:
-p:-1
-j:1
-d:M
-i:
-Vstyle:neuro
-
-n:
-p:2
-j:-1
-d:Gpart
-i:
-Vstyle:neuro
-
-n:
-p:3
-j:-1
-d:*
-i:
-Vstyle:neuro
-
-n:
-p:3
-j:-1
-d:*
-i:
-Vstyle:neuro
-
-n:
-p:3
-j:-1
-d:Gpart
-i:
-Vstyle:neuro
-
-n:
-p:5
-j:-1
-d:*
-i:
-Vstyle:neuro
-
-n:
-p:5
-j:-1
-d:*
-i:
-Vstyle:neuro
-
-n:
-p:5
-j:-1
-d:N
-i:
-Vstyle:neuro
-
-c:
-n1:6
-n2:4
-w:-5.154
-i:
-
-c:
-n1:7
-n2:0
-w:1.0
-i:
-
-c:
-n1:15
-n2:0
-w:1.0
-i:
-
-c:
-n1:15
-n2:2
-w:1.0
-i:
-
-c:
-n1:15
-n2:3
-w:1.0
-i:
-
-c:
-n1:15
-n2:9
-w:1.0
-i:
-
-c:
-n1:15
-n2:12
-w:1.0
-i:
-
-c:
-n1:15
-n2:14
-w:1.0
-i:
-
-
-
Index: p/tests/part_shapes-linux.goal
===================================================================
--- /cpp/tests/part_shapes-linux.goal	(revision 1033)
+++ 	(revision )
@@ -1,44 +1,0 @@
-//0s
-p:sh=1, sy=0.7, sz=0.4
-p:1.0, sh=1, sx=0.9, sy=0.63, sz=0.36000000000000004, rx=0.09999999999999999, 0.2, 0.3
-p:1.8426640272257795, 0.260666529862964, 0.1788023977155551, sh=1, sx=0.81, sy=0.5670000000000001, sz=0.32400000000000007, rx=0.1380866901976944, 0.4203582529287118, 0.5983443807960972
-p:2.453676692193477, 0.6771993843888386, 0.50935330809034, sh=1, sx=0.7290000000000001, sy=0.5103000000000001, sz=0.2916000000000001, rx=0.09931899168188486, 0.6411696655688547, 0.9281320894976496
-p:2.8038163494411, 1.144867119871271, 0.9453924228624563, sh=1, sx=0.6561000000000001, sy=0.45927000000000007, sz=0.26244000000000006, rx=-0.050867883414035614, 0.8352605372405658, 1.339826410688077
-p:2.9045952639659256, 1.5734096003943587, 1.431871777793698, sh=1, sx=0.5904900000000002, sy=0.41334300000000007, sz=0.23619600000000007, rx=-0.35230461258336765, 0.9570308312423438, 1.8863978754398578
-p:2.799034483619967, 1.8967049535832905, 1.9145885439819013, sh=1, sx=0.5314410000000002, sy=0.3720087000000001, sz=0.21257640000000008, rx=-0.7405336877073186, 0.9531453201489805, 2.514704429643237
-p:2.5497856015078453, 2.0772507444208763, 2.3478410669493837, sh=1, sx=0.47829690000000014, sy=0.3348078300000001, sz=0.1913187600000001, rx=-1.0334725042183832, 0.8257581906137962, 3.0533851341586113
-p:2.2267611218154264, 2.105818060917814, 2.699418965141543, sh=1, sx=0.43046721000000016, sy=0.30132704700000007, sz=0.1721868840000001, rx=-1.1761487722698027, 0.6291781757493042, -2.824331705531365
-p:1.8960928227086242, 1.9972423634866163, 2.9527405251760723, sh=1, sx=0.38742048900000015, sy=0.27119434230000006, sz=0.15496819560000008, rx=-1.209905083954168, 0.4077881373309235, -2.4974573499843524
-p:1.6117065276381064, 1.7836707013028112, 3.1063836688080295, sh=1, sx=0.34867844010000015, sy=0.24407490807000007, sz=0.13947137604000007, rx=-1.1680909122962837, 0.18806847422834477, -2.1997658329492182
-p:0.04894345998764038, z=0.30901700258255005, sh=3, sx=0.3128689344768277, sy=0.05, sz=0.05, rx=-1.546024634805094, 1.41371677309148
-p:0.23992645740509033, z=0.8968022465705872, sh=3, sx=0.3128689224093409, sy=0.05, sz=0.05, rx=-1.343474826195397, 1.0995573606273648
-p:0.6031977534294128, z=1.3968022465705872, sh=3, sx=0.3128689534320107, sy=0.05, sz=0.05, rx=-0.9553166181245092, 0.7853981633974483
-p:1.1031978130340576, z=1.7600735425949097, sh=3, sx=0.3128689755174676, sy=0.05, sz=0.05, rx=-0.5194665743234458, 0.47123887967782474
-p:1.6909830570220947, z=1.9510565400123596, sh=3, sx=0.3128688756060144, sy=0.05, sz=0.05, rx=-0.15900495985476545, 0.15707958350572937
-p:2.309017062187195, z=1.9510564804077148, sh=3, sx=0.31286900267186113, sy=0.05, sz=0.05, rx=0.15900509312057218, -0.15707971206553287
-p:2.896802306175232, z=1.760073482990265, sh=3, sx=0.3128688422412704, sy=0.05, sz=0.05, rx=0.5194665784785317, -0.4712388829116243
-p:3.3968021869659424, z=1.3968023657798767, sh=3, sx=0.31286882699146806, sy=0.05, sz=0.05, rx=0.9553164276144905, -0.7853980286865252
-p:3.76007342338562, z=0.8968026340007782, sh=3, sx=0.3128687896390344, sy=0.05, sz=0.05, rx=1.3434746156488504, -1.0995571444029681
-p:3.951056480407715, z=0.30901766021781896, sh=3, sx=0.3128688240996787, sy=0.05, sz=0.05, rx=1.5460245560475507, -1.4137165243302325
-j:0, 1, sh=1
-j:1, 2, sh=1
-j:2, 3, sh=1
-j:3, 4, sh=1
-j:4, 5, sh=1
-j:5, 6, sh=1
-j:6, 7, sh=1
-j:7, 8, sh=1
-j:8, 9, sh=1
-j:9, 10, sh=1
-j:10, 11, sh=1
-j:11, 12, sh=1
-j:12, 13, sh=1
-j:13, 14, sh=1
-j:14, 15, sh=1
-j:15, 16, sh=1
-j:16, 17, sh=1
-j:17, 18, sh=1
-j:18, 19, sh=1
-j:19, 20, sh=1
-
-
Index: /cpp/tests/part_shapes.goal
===================================================================
--- /cpp/tests/part_shapes.goal	(revision 1033)
+++ /cpp/tests/part_shapes.goal	(revision 1034)
@@ -1,21 +1,21 @@
 //0s
 p:sh=1, sy=0.7, sz=0.4
-p:1.0, sh=1, sx=0.9, sy=0.63, sz=0.36000000000000004, rx=0.10000000000000003, 0.19999999999999998, 0.29999999999999993
-p:1.8426640272257795, 0.260666529862964, 0.1788023977155551, sh=1, sx=0.81, sy=0.5670000000000001, sz=0.32400000000000007, rx=0.13808669019769443, 0.42035825292871176, 0.5983443807960972
-p:2.453676692193477, 0.6771993843888386, 0.50935330809034, sh=1, sx=0.7290000000000001, sy=0.5103000000000001, sz=0.2916000000000001, rx=0.09931899168188495, 0.6411696655688546, 0.9281320894976495
-p:2.8038163494411, 1.144867119871271, 0.9453924228624562, sh=1, sx=0.6561000000000001, sy=0.45927000000000007, sz=0.26244000000000006, rx=-0.0508678834140355, 0.8352605372405658, 1.3398264106880768
-p:2.9045952639659256, 1.5734096003943585, 1.4318717777936978, sh=1, sx=0.5904900000000002, sy=0.41334300000000007, sz=0.23619600000000007, rx=-0.35230461258336737, 0.9570308312423439, 1.8863978754398574
-p:2.7990344836199674, 1.8967049535832903, 1.9145885439819008, sh=1, sx=0.5314410000000002, sy=0.3720087000000001, sz=0.21257640000000008, rx=-0.7405336877073184, 0.9531453201489807, 2.5147044296432366
-p:2.549785601507846, 2.077250744420876, 2.3478410669493828, sh=1, sx=0.47829690000000014, sy=0.3348078300000001, sz=0.1913187600000001, rx=-1.0334725042183834, 0.8257581906137964, 3.0533851341586113
-p:2.2267611218154277, 2.1058180609178136, 2.6994189651415414, sh=1, sx=0.43046721000000016, sy=0.30132704700000007, sz=0.1721868840000001, rx=-1.1761487722698027, 0.6291781757493043, -2.824331705531365
-p:1.8960928227086258, 1.9972423634866159, 2.952740525176071, sh=1, sx=0.38742048900000015, sy=0.27119434230000006, sz=0.15496819560000008, rx=-1.209905083954168, 0.4077881373309235, -2.497457349984353
-p:1.6117065276381082, 1.783670701302811, 3.106383668808028, sh=1, sx=0.34867844010000015, sy=0.24407490807000007, sz=0.13947137604000007, rx=-1.1680909122962837, 0.18806847422834463, -2.1997658329492182
+p:1.0, sh=1, sx=0.9, sy=0.63, sz=0.36000000000000004, rx=0.09999999999999999, 0.2, 0.3
+p:1.8426640272257795, 0.260666529862964, 0.1788023977155551, sh=1, sx=0.81, sy=0.5670000000000001, sz=0.32400000000000007, rx=0.1380866901976944, 0.4203582529287118, 0.5983443807960972
+p:2.453676692193477, 0.6771993843888386, 0.50935330809034, sh=1, sx=0.7290000000000001, sy=0.5103000000000001, sz=0.2916000000000001, rx=0.09931899168188486, 0.6411696655688547, 0.9281320894976496
+p:2.8038163494411, 1.144867119871271, 0.9453924228624563, sh=1, sx=0.6561000000000001, sy=0.45927000000000007, sz=0.26244000000000006, rx=-0.050867883414035614, 0.8352605372405658, 1.339826410688077
+p:2.9045952639659256, 1.5734096003943587, 1.431871777793698, sh=1, sx=0.5904900000000002, sy=0.41334300000000007, sz=0.23619600000000007, rx=-0.35230461258336765, 0.9570308312423438, 1.8863978754398578
+p:2.799034483619967, 1.8967049535832905, 1.9145885439819013, sh=1, sx=0.5314410000000002, sy=0.3720087000000001, sz=0.21257640000000008, rx=-0.7405336877073186, 0.9531453201489805, 2.514704429643237
+p:2.5497856015078453, 2.0772507444208763, 2.3478410669493837, sh=1, sx=0.47829690000000014, sy=0.3348078300000001, sz=0.1913187600000001, rx=-1.0334725042183832, 0.8257581906137962, 3.0533851341586113
+p:2.2267611218154264, 2.105818060917814, 2.699418965141543, sh=1, sx=0.43046721000000016, sy=0.30132704700000007, sz=0.1721868840000001, rx=-1.1761487722698027, 0.6291781757493042, -2.824331705531365
+p:1.8960928227086242, 1.9972423634866163, 2.9527405251760723, sh=1, sx=0.38742048900000015, sy=0.27119434230000006, sz=0.15496819560000008, rx=-1.209905083954168, 0.4077881373309235, -2.4974573499843524
+p:1.6117065276381064, 1.7836707013028112, 3.1063836688080295, sh=1, sx=0.34867844010000015, sy=0.24407490807000007, sz=0.13947137604000007, rx=-1.1680909122962837, 0.18806847422834477, -2.1997658329492182
 p:0.04894345998764038, z=0.30901700258255005, sh=3, sx=0.3128689344768277, sy=0.05, sz=0.05, rx=-1.546024634805094, 1.41371677309148
 p:0.23992645740509033, z=0.8968022465705872, sh=3, sx=0.3128689224093409, sy=0.05, sz=0.05, rx=-1.343474826195397, 1.0995573606273648
 p:0.6031977534294128, z=1.3968022465705872, sh=3, sx=0.3128689534320107, sy=0.05, sz=0.05, rx=-0.9553166181245092, 0.7853981633974483
-p:1.1031978130340576, z=1.7600735425949097, sh=3, sx=0.3128689755174676, sy=0.05, sz=0.05, rx=-0.5194665743234458, 0.4712388796778248
+p:1.1031978130340576, z=1.7600735425949097, sh=3, sx=0.3128689755174676, sy=0.05, sz=0.05, rx=-0.5194665743234458, 0.47123887967782474
 p:1.6909830570220947, z=1.9510565400123596, sh=3, sx=0.3128688756060144, sy=0.05, sz=0.05, rx=-0.15900495985476545, 0.15707958350572937
-p:2.309017062187195, z=1.9510564804077148, sh=3, sx=0.31286900267186113, sy=0.05, sz=0.05, rx=0.15900509312057215, -0.15707971206553287
-p:2.896802306175232, z=1.760073482990265, sh=3, sx=0.3128688422412704, sy=0.05, sz=0.05, rx=0.5194665784785317, -0.47123888291162425
+p:2.309017062187195, z=1.9510564804077148, sh=3, sx=0.31286900267186113, sy=0.05, sz=0.05, rx=0.15900509312057218, -0.15707971206553287
+p:2.896802306175232, z=1.760073482990265, sh=3, sx=0.3128688422412704, sy=0.05, sz=0.05, rx=0.5194665784785317, -0.4712388829116243
 p:3.3968021869659424, z=1.3968023657798767, sh=3, sx=0.31286882699146806, sy=0.05, sz=0.05, rx=0.9553164276144905, -0.7853980286865252
 p:3.76007342338562, z=0.8968026340007782, sh=3, sx=0.3128687896390344, sy=0.05, sz=0.05, rx=1.3434746156488504, -1.0995571444029681
