- Timestamp:
- 08/07/16 15:05:16 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
experiments/frams/foraminifera/data/scripts/foraminifera.inc
r561 r567 17 17 size=size*(1.35-0.35*lastchambergrowth); //last iteration: 'size' is only used for shifting (dx). The last chamber emerges at the surface of the previous one 18 18 } 19 str +="p:sh=1,sx=%g,sy=%g,sz=%g,vr=%s\n" % effectivesize % effectivesize % effectivesize % rgbstring;19 str += "p:sh=1,sx=%g,sy=%g,sz=%g,rz=3.14159265358979,vr=%s\n" % effectivesize % effectivesize % effectivesize % rgbstring; 20 20 if (i>0) 21 str+="j:%d,%d,sh=1,dx=%g,r y=%g\n" % (i-1) % i % (size*shift) % (angle_delta+i*angle_delta_delta);21 str+="j:%d,%d,sh=1,dx=%g,rz=%g\n" % (i-1) % i % (size*shift) % (angle_delta+i*angle_delta_delta); 22 22 size*=growing; 23 23 } 24 24 return str; 25 }26 27 function init_chambers()28 {29 colors = ["1.0,1.0,0.0","1.0,0.5,0.0"];30 retColors = ["1.0,1.0,1.0", "1.0,1.0,0.0"];31 chambers = [ ["p:sh=1, sx=0.2, sy=0.2, sz=0.2, rz=3.14159265358979,",32 "p:0.18421219587326, 0.13, sh=1, sx=0.21, sy=0.21, sz=0.21,",33 "p:0.323935478925705, 0.195192575454712, -0.0246672090142965, sh=1, sx=0.2205, sy=0.2205, sz=0.2205,",34 "p:0.467822402715683, 0.258204102516174, -0.0246672090142965, sh=1, sx=0.231525, sy=0.231525, sz=0.231525,",35 "p:0.664101362228394, 0.309014827013016, -0.0246672090142965, sh=1, sx=0.24310125, sy=0.24310125, sz=0.24310125,",36 "p:0.860512733459473, 0.274790525436401, -0.0246672090142965, sh=1, sx=0.2552563125, sy=0.2552563125, sz=0.2552563125,",37 "p:1.0273220539093, 0.1655353307724, -0.0246672090142965, sh=1, sx=0.268019128125, sy=0.268019128125, sz=0.268019128125,",38 "p:1.13825333118439, -0.000509921927005053, -0.0246672090142965, sh=1, sx=0.28142008453125, sy=0.28142008453125, sz=0.28142008453125,",39 "p:1.17569863796234, -0.196833491325378, -0.0246672090142965, sh=1, sx=0.295491088757813, sy=0.295491088757813, sz=0.295491088757813,",40 "p:1.13369226455688, -0.392314255237579, -0.0246672090142965, sh=1, sx=0.310265643195703, sy=0.310265643195703, sz=0.310265643195703,"],41 ["p:sh=1, sx=0.1, sy=0.1, sz=0.1, rz=3.14159265358979,",42 "p:0.110527315735817, -0.0167302016913891, sh=1, sx=0.105, sy=0.105, sz=0.105, rx=3.63519277003091e-33,",43 "p:0.207026958465576, -0.080698736011982, 1.17627548103266e-17, sh=1, sx=0.11025, sy=0.11025, sz=0.11025,",44 "p:0.271191358566284, -0.169948443770409, 1.17627548103266e-17, sh=1, sx=0.1157625, sy=0.1157625, sz=0.1157625,",45 "p:0.291628688573837, -0.286643952131271, 1.17627548103266e-17, sh=1, sx=0.121550625, sy=0.121550625, sz=0.121550625,",46 "p:0.264833927154541, -0.403534322977066, 1.17627548103266e-17, sh=1, sx=0.12762815625, sy=0.12762815625, sz=0.12762815625,",47 "p:0.194418027997017, -0.500668346881866, 1.17627548103266e-17, sh=1, sx=0.1340095640625, sy=0.1340095640625, sz=0.1340095640625,",48 "p:0.091719962656498, -0.562735974788666, 1.17627548103266e-17, sh=1, sx=0.140710042265625, sy=0.140710042265625, sz=0.140710042265625,",49 "p:-0.0270438715815544, -0.57991486787796, 1.17627548103266e-17, sh=1, sx=0.147745544378906, sy=0.147745544378906, sz=0.147745544378906,",50 "p:-0.143122747540474, -0.549489378929138, 1.17627548103266e-17, sh=1, sx=0.155132821597852, sy=0.155132821597852, sz=0.155132821597852,"]];51 }52 53 function createForamMorphology(morphotype, gen, chamber_num)54 {55 var geno = "//0\nm:Vstyle=foram\n" + chambers[morphotype][0] + "vr=" + colors[gen];56 57 chamber_num = Math.min(chamber_num, chambers[morphotype].size - 1);58 59 for (var i = 0; i < chamber_num; i++)60 {61 geno += "\n" + chambers[morphotype][i+1] + "vr=" + colors[gen];62 }63 64 for (var i = 0; i < chamber_num; i++)65 {66 geno += "\n" + "j:"+ i +", "+ (i+1) +", sh=1";67 }68 69 return geno;70 25 } 71 26 … … 80 35 else if (mode->opt == "birth") 81 36 { 37 foram_uid += 1; 38 var new_id = "c"+string(foram_uid); 82 39 mode->cr.data->genes = String.deserialize(String.serialize(mode->genes)); 83 mode->cr.data->lifeparams = {"max_energy_level" : mode->energy0, "gen" : mode->gen, "hibernated" : 0, "species" : mode->species, "reproduce" : 0, "dir" : randomDir(), "dir_counter" : Math.random(int(secToSimSteps(ExpProperties.dir_change_sec))), "chamber_growth" : -1, "division_time" : -1}; 84 85 } 40 mode->cr.data->lifeparams = {"max_energy_level" : mode->energy0, "gen" : mode->gen, "hibernated" : 0, "species" : mode->species, "reproduce" : 0, "dir" : randomDir(), "dir_counter" : Math.random(int(secToSimSteps(ExpProperties.dir_change_sec))), "chamber_growth" : -1, "division_time" : -1, "uid" : new_id}; 41 42 var oper = "cloning"; 43 if (mode->parentsuids.size > 1) 44 { 45 oper = "cross-over"; 46 } 47 48 var dict={"Time":Simulator.stepNumber,"FromIDs":mode->parentsuids,"ID":new_id, "Inherited":[1.0], "Operation": oper, "Kind" : mode->gen}; 49 Simulator.print("[OFFSPRING] " + String.serialize(dict)); 50 } 51 } 52 53 function getEnergy0(radius) 54 { 55 return energyFromVolume(micronsToFrams(radius),1); 86 56 } 87 57 … … 93 63 { 94 64 result = (result-ExpProperties.divisionCost)/2; 95 number *= 2; 65 number *= 2; 96 66 } 97 67 //Simulator.print("parent: " + parent_energy + " result: " + result + " number " + number); 98 68 return {"energy" : result, "number" : number}; 99 }100 101 function getEnergy0(radius)102 {103 return energyFromVolume(micronsToFrams(radius),1);104 69 } 105 70 … … 135 100 } 136 101 137 Simulator.print("haploid number of offspring: " + number + " energ0: " + energy0);102 //Simulator.print("haploid number of offspring: " + number + " energ0: " + energy0); 138 103 139 104 for (var j = 0; j < number; j++) 140 105 { 141 createOffspring(create ForamMorphology(gen, gen, 0), energy0, new_genes, parent.data->lifeparams);106 createOffspring(create_genotype(ExpProperties.chamber_proculus_diplo, 1, colors[1], 1), energy0, new_genes, parent.data->lifeparams, [parent.data->lifeparams->uid, parent2.data->lifeparams->uid]); 142 107 } 143 108 } … … 156 121 } 157 122 158 Simulator.print("diploid number of offspring: " + number+ " energ0: " + energy0);123 //Simulator.print("diploid number of offspring: " + number+ " energ0: " + energy0); 159 124 160 125 for (var j = 0; j < number / 2; j++) … … 170 135 for (var k = 0; k < 2; k++) 171 136 { 172 createOffspring(create ForamMorphology(1 - parent.data->lifeparams->gen, 1 - parent.data->lifeparams->gen, 0), energy0, parent.data->genes[0], parent.data->lifeparams);137 createOffspring(create_genotype(ExpProperties.chamber_proculus_haplo, 1, colors[0], 1), energy0, parent.data->genes[0], parent.data->lifeparams, [parent.data->lifeparams->uid]); 173 138 } 174 139 … … 220 185 { 221 186 reproduce_haploid(parent1, parent2, 0); 222 print_repro_info(parent1);223 print_repro_info(parent2);187 //print_repro_info(parent1); 188 //print_repro_info(parent2); 224 189 pop.kill(parent1); 225 190 pop.kill(parent2); … … 235 200 { 236 201 var reproduced = 1; 237 238 202 239 203 if (cr.data->lifeparams->gen == 1) 240 204 { … … 260 224 if (reproduced == 1) 261 225 { 262 print_repro_info(cr);226 //print_repro_info(cr); 263 227 Populations[0].kill(cr); 264 228 } … … 267 231 } 268 232 269 function print_repro_info(cr)270 {271 Simulator.print("Reproduced " + cr.data->lifeparams->gen + " of species " + cr.data->lifeparams->species + " energy: " + cr.energy);272 }273 274 233 function foramReproduce(cr) 275 234 { 276 var properEnergy = cr.energy >= energyFromVolume(max_chamber_volume[cr.data->lifeparams->gen][getGene(cr, "min_repro_energies",0)[cr.data->lifeparams->gen]],0);235 var properEnergy = cr.energy >= getGene(cr, "min_repro_energies",0)[cr.data->lifeparams->gen]; 277 236 var reproduced = 0; 278 237 … … 309 268 } 310 269 311 function createOffspring(geno, energy, parent_genes, parent_lifeparams )270 function createOffspring(geno, energy, parent_genes, parent_lifeparams, parentsuids) 312 271 { 313 272 curColor = retColors[1-parent_lifeparams->gen]; … … 315 274 cr.energy0 = energy; 316 275 cr.energy = cr.energy0; 317 setGenotype({"opt" : "birth", "cr" : cr, "gen" : 1 - parent_lifeparams->gen, "species" : parent_lifeparams->species, "energy0" : cr.energy0, "genes" : parent_genes });276 setGenotype({"opt" : "birth", "cr" : cr, "gen" : 1 - parent_lifeparams->gen, "species" : parent_lifeparams->species, "energy0" : cr.energy0, "genes" : parent_genes, "parentsuids" : parentsuids}); 318 277 placeRandomlyNotColliding(cr); 319 278 } 279 280 function print_repro_info(cr) 281 { 282 Simulator.print("Reproduced " + cr.data->lifeparams->gen + " of species " + cr.data->lifeparams->species + " energy: " + cr.energy); 283 }
Note: See TracChangeset
for help on using the changeset viewer.