Ignore:
Timestamp:
03/25/16 00:28:50 (8 years ago)
Author:
oriona
Message:

Parameters calibrated, diversification of initial population added, chamber growth and gametogenesis extended in time.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • experiments/frams/foraminifera/data/scripts/foraminifera.inc

    r476 r479  
    5555        if (mode->opt == 0) //initial
    5656        {
    57                 mode->cr.data->genes = {"min_repro_energies" : [max_chamber_energ[0][getProperty(0, "min_repro_energ")], max_chamber_energ[1][getProperty(1, "min_repro_energ")]], "hibernation" : mode->species};
    58                 mode->cr.data->lifeparams = {"max_energy_level" : getProperty(0,"energies0"), "gen" : 0,  "hibernated" : 0, "species" : mode->species, "reproduce" : 0, "dir" : randomDir()};
     57                mode->cr.data->genes = {"min_repro_energies" : [energyFromVolume(max_chamber_volume[0][getProperty(0, "min_repro_energ")],0), energyFromVolume(max_chamber_volume[1][getProperty(1, "min_repro_energ")],0)], "hibernation" : mode->species};
     58                mode->cr.data->lifeparams = {"max_energy_level" : getProperty(0,"energies0"), "gen" : 0,  "hibernated" : 0, "species" : mode->species, "reproduce" : 0, "dir" : randomDir(), "chamber_growth" : -1, "division_time" : -1};
    5959        }
    6060        else if (mode->opt  == 1) //child
    6161        {
    62                 mode->cr.data->lifeparams = {"max_energy_level" : getProperty(1 - mode->parent_lifeparams->gen,"energies0"), "gen" : 1 - mode->parent_lifeparams->gen,  "hibernated" : 0, "species" : mode->parent_lifeparams->species, "reproduce" : 0, "dir" : randomDir()};
     62                mode->cr.data->lifeparams = {"max_energy_level" : getProperty(1 - mode->parent_lifeparams->gen,"energies0"), "gen" : 1 - mode->parent_lifeparams->gen,  "hibernated" : 0, "species" : mode->parent_lifeparams->species, "reproduce" : 0, "dir" : randomDir(), "chamber_growth" : -1, "division_time" : -1};
    6363                mode->cr.data->genes = mode->parent_genes;
    6464        }
     
    6868                mode->cr.data->lifeparams = mode->parent_lifeparams;
    6969        }
     70}
     71
     72function gametsDivision(parent_energy, energy0)
     73{
     74        var number = 1;
     75        var result = parent_energy;
     76        while ((result-ExpParams.divisionCost) >= energy0)
     77        {
     78                result = (result-ExpParams.divisionCost)/2;
     79                number *= 2;
     80        }
     81        //Simulator.print("parent: " + parent_energy + " result: " + result + " number " + number);
     82        return {"energy" : result, "number" : number};
    7083}
    7184
     
    7588        if (clone == 1)
    7689        {
    77                 energy0 = getProperty(0,"energies0");
    78                 number = (( 1 - getProperty(1, "e_repro_cost")) * parent.energy) / energy0;
     90                var offspring = gametsDivision(parent.energy,getProperty(0,"energies0"));
     91                energy0 = offspring->energy;
     92                number = offspring->number;
    7993                new_genes = parent.data->genes;
    8094                parent.data->lifeparams->gen = 1 - parent.data->lifeparams->gen; //because of reversal of "gen" in createOffspring function
     
    8397        else
    8498        {
    85                 energy0 = getProperty(1,"energies0");
    86                 number = (((1 - getProperty(parent.data->lifeparams->gen, "e_repro_cost")) * parent.energy) + ((1 -(getProperty(parent.data->lifeparams->gen, "e_repro_cost"))) * parent2.energy)) / energy0;
     99                var offspring1 = gametsDivision(parent.energy,getProperty(1,"energies0"));
     100                var offspring2 = gametsDivision(parent2.energy,getProperty(1,"energies0"));
     101                energy0 = (offspring1->energy+offspring2->energy);
     102                number = ExpParams.gametSuccessRate*(offspring1->number+offspring2->number)/2;
    87103                new_genes = [parent.data->genes, parent2.data->genes];
    88104                gen = 1 - parent.data->lifeparams->gen;
     
    152168                                if (parent1 != null && parent2 != null)
    153169                                {
    154                                         reproduce_haploid(parent1, parent2, 0);
    155                                         print_repro_info(parent1);
    156                                         print_repro_info(parent2);
    157                                         pop.kill(parent1);
    158                                         pop.kill(parent2);
    159                                         parent1 = null;
    160                                         parent2 = null;
     170                                        //when parents are ready for reproduction start gametogenesis
     171                                        if (parent1.data->lifeparams->division_time == -1 && parent2.data->lifeparams->division_time == -1)
     172                                        {
     173                                                var time = int(ExpParams.gametoPeriod/ExpParams.secPerStep);
     174                                                parent1.data->lifeparams->division_time = time;
     175                                                parent2.data->lifeparams->division_time = time;
     176                                                parent1.idleen = 0;
     177                                                parent2.idleen = 0;
     178                                                //Simulator.print("parents "+parent1.uid + " " + parent2.uid + " ready to repro: "+Simulator.stepNumber);
     179                                        }
     180                                        //when gametogenesis is finished fuse gamets
     181                                        else if (parent1.data->lifeparams->division_time == 0 && parent2.data->lifeparams->division_time == 0)
     182                                        {
     183                                                reproduce_haploid(parent1, parent2, 0);
     184                                                print_repro_info(parent1);
     185                                                print_repro_info(parent2);
     186                                                //Simulator.print("parents "+parent1.uid + " " + parent2.uid + " reproduced: "+Simulator.stepNumber);
     187                                                pop.kill(parent1);
     188                                                pop.kill(parent2);
     189                                                parent1 = null;
     190                                                parent2 = null;
     191                                               
     192                                        }
    161193                                }       
    162194                        }
Note: See TracChangeset for help on using the changeset viewer.