aegis_sim.parameterization.default_parameters

   1from aegis_sim.parameterization.parameter import Parameter
   2
   3
   4def get_default_parameters():
   5    return {p.key: p.default for p in DEFAULT_PARAMETERS.values()}
   6
   7
   8def get_species_parameters(SPECIES_PRESET):
   9    return {p.key: p.presets[SPECIES_PRESET] for p in DEFAULT_PARAMETERS.values() if SPECIES_PRESET in p.presets}
  10
  11
  12# TODO test these
  13# TODO value interpolation between ages?
  14# TODO report invalid values
  15
  16PRESET_INFO = {
  17    "human": "One cycle corresponds to 2 years.",
  18    "mouse": "One cycle corresponds to one month. Source: https://genomics.senescence.info/species/entry.php?species=Mus_musculus",
  19    "killifish": "One cycle corresponds to one week.",
  20    "yeast": "",
  21    "arabidopsis": "",
  22    "worm": "One cycle corresponds to one day. Up to 300 eggs in optimal conditions.",
  23    "fruitfly": "One cycle corresponds to one day. Up to 100 eggs per day.",
  24}
  25
  26# You need the `key` attribute so you can find the param (in a list, you cannot)
  27DEFAULT_PARAMETERS = {
  28    #
  29    #
  30    # RECORDING
  31    "LOGGING_RATE": Parameter(
  32        key="LOGGING_RATE",
  33        name="",
  34        domain="recording",
  35        default=100,
  36        info="Frequency of logging (in steps)",
  37        info_extended="Log files contain information on simulation execution; e.g. errors and speed. 0 for no logging.",
  38        dtype=int,
  39        drange="[0, inf)",
  40        inrange=lambda x: x >= 0,
  41        evalrange=[1, 10000],
  42    ),
  43    "TICKER_RATE": Parameter(
  44        key="TICKER_RATE",
  45        name="",
  46        domain="recording",
  47        default=1,
  48        info="Frequency of ticking (in seconds)",
  49        info_extended="Ticker files contain information on simulation status; e.g. running or finished. Once the simulation is finished, it stops updating the ticker file which indicates the time at which the simulation stopped.",
  50        dtype=float,
  51        drange="[0, inf)",
  52        inrange=lambda x: x >= 0,
  53        evalrange=[1, 10000],
  54        show_in_gui=False,
  55    ),
  56    "PICKLE_RATE": Parameter(
  57        key="PICKLE_RATE",
  58        name="",
  59        domain="recording",
  60        default=10000,
  61        info="Frequency of pickling (in steps)",
  62        info_extended="0 for no pickles",
  63        dtype=int,
  64        drange="[0, inf)",
  65        inrange=lambda x: x >= 0,
  66        serverrange=lambda x: x >= 1000 or x == 0,
  67        serverrange_info="0 or [1000, inf)",
  68        evalrange=[1, 100000],
  69    ),
  70    "CHECKPOINT_RATE": Parameter(
  71        key="CHECKPOINT_RATE",
  72        name="",
  73        domain="recording",
  74        default=0,
  75        info="Frequency of saving full simulation checkpoints for resuming (in steps)",
  76        info_extended="0 for no checkpoints. Checkpoints capture the entire simulation state and can be used to resume a simulation from where it left off.",
  77        dtype=int,
  78        drange="[0, inf)",
  79        inrange=lambda x: x >= 0,
  80        serverrange=lambda x: x >= 1000 or x == 0,
  81        serverrange_info="0 or [1000, inf)",
  82        evalrange=[0, 1000, 10000],
  83    ),
  84    "SNAPSHOT_RATE": Parameter(
  85        key="SNAPSHOT_RATE",
  86        name="",
  87        domain="recording",
  88        default=10000,
  89        info="Frequency of recording snapshots (in steps)",
  90        info_extended="0 for no snapshots",
  91        dtype=int,
  92        drange="[0, inf)",
  93        inrange=lambda x: x >= 0,
  94        serverrange=lambda x: x >= 1000 or x == 0,
  95        serverrange_info="0 or [1000, inf)",
  96        evalrange=[1, 10000],
  97    ),
  98    "SNAPSHOT_FINAL_COUNT": Parameter(
  99        key="SNAPSHOT_FINAL_COUNT",
 100        name="",
 101        domain="recording",
 102        default=60,
 103        info="Number of subsequent snapshots taken at the end of the simulation (in steps)",
 104        info_extended="0 for no snapshots",
 105        dtype=int,
 106        drange="[0, inf)",
 107        inrange=lambda x: x >= 0,
 108        serverrange=lambda x: 0 <= x <= 60,
 109        serverrange_info="[0, 60]",
 110        evalrange=[1, 10],
 111    ),
 112    "INTERVAL_RATE": Parameter(
 113        key="INTERVAL_RATE",
 114        name="",
 115        domain="recording",
 116        default=1000,
 117        info="Frequency of recording interval data (in steps)",
 118        info_extended="0 for no gui records",
 119        dtype=int,
 120        drange="[0, inf)",
 121        inrange=lambda x: x >= 0,
 122        evalrange=[1, 10000],
 123        serverrange=lambda x: x >= 100,
 124        serverrange_info="[100, inf)",
 125    ),
 126    "TE_RATE": Parameter(
 127        key="TE_RATE",
 128        name="",
 129        domain="recording",
 130        default=10000,
 131        info="Frequency of starting TE cohorts (in steps)",
 132        dtype=int,
 133        drange="[0, inf)",
 134        inrange=lambda x: x >= 0,
 135        evalrange=[1, 10000],
 136        serverrange=lambda x: x >= 100,
 137        serverrange_info="[100, inf)",
 138    ),
 139    "TE_DURATION": Parameter(
 140        key="TE_DURATION",
 141        name="",
 142        domain="recording",
 143        default=500,
 144        info="Length of tracking TE cohorts (in steps)",
 145        dtype=int,
 146        drange="[0, inf)",
 147        inrange=lambda x: x >= 0,
 148        evalrange=[1, 10000],
 149    ),
 150    "POPGENSTATS_RATE": Parameter(
 151        key="POPGENSTATS_RATE",
 152        name="",
 153        domain="recording",
 154        default=1000,
 155        info="Frequency of recording population genetic statistics (in steps)",
 156        info_extended="0 for no recording",
 157        dtype=int,
 158        drange="[0, inf)",
 159        inrange=lambda x: x >= 0,
 160        serverrange=lambda x: x >= 100 or x == 0,
 161        serverrange_info="0 or [100, inf)",
 162        evalrange=[1, 10000],
 163    ),
 164    "POPGENSTATS_SAMPLE_SIZE": Parameter(
 165        key="POPGENSTATS_SAMPLE_SIZE",
 166        name="",
 167        domain="recording",
 168        default=100,
 169        info="Number of individuals to use when calculating population genetic statistics",
 170        dtype=int,
 171        drange="{0, [3, inf)}",
 172        inrange=lambda x: x == 0 or x >= 3,
 173    ),
 174    "NOTES": Parameter(
 175        key="NOTES",
 176        name="",
 177        domain="recording",
 178        default=[],
 179        info="",
 180        dtype=list,
 181        drange="",
 182    ),
 183    #
 184    #
 185    # STARVATION
 186    # "STARVATION_RESPONSE": Parameter(
 187    #     key="STARVATION_RESPONSE",
 188    #     name="",
 189    #     domain="starvation",
 190    #     default="worsening_proportional",
 191    #     info="Mechanism for determining who dies under overcrowding conditions",
 192    #     info_extended="The possible modes can differ in the age distribution of mortality and/or the number of individuals removed.",
 193    #     dtype=str,
 194    #     drange="{gradual, cliff, treadmill_random, treadmill_zoomer, treadmill_boomer, treadmill_boomer_soft, treadmill_zoomer_soft, worsening_proportional}",
 195    #     inrange=lambda x: x
 196    #     in (
 197    #         "gradual",
 198    #         # "cliff",
 199    #         "treadmill_random",
 200    #         "treadmill_zoomer",
 201    #         "treadmill_boomer",
 202    #         "treadmill_boomer_soft",
 203    #         "treadmill_zoomer_soft",
 204    #         "worsening_proportional",
 205    #     ),
 206    #     evalrange=[
 207    #         "gradual",
 208    #         # "cliff",
 209    #         "treadmill_random",
 210    #         "treadmill_zoomer",
 211    #         "treadmill_boomer",
 212    #         "treadmill_boomer_soft",
 213    #         "treadmill_zoomer_soft",
 214    #         "worsening_proportional",
 215    #     ],
 216    # ),
 217    "STARVATION_MORTALITY_FACTOR": Parameter(
 218        key="STARVATION_MORTALITY_FACTOR",
 219        name="",
 220        domain="starvation",
 221        default=None,  # recommended values are None or 0.01
 222        info="Factor that affects the magnitude of starvation mortality. Higher number means higher sensitivity to starvation.",
 223        info_extended="When None, mortality will depend on the resource deficit. When input is a real number, it is the mortality experienced under starvation.",
 224        dtype=float,
 225        drange="(0,inf)",
 226        inrange=lambda x: x is None or x > 0,
 227        evalrange=[None, 0.005, 0.01, 0.05, 0.1, 0.2],
 228    ),
 229    "STARVATION_MORTALITY_MAXIMUM": Parameter(
 230        key="STARVATION_MORTALITY_MAXIMUM",
 231        name="",
 232        domain="starvation",
 233        default=0.5,
 234        info="",
 235        info_extended="",
 236        dtype=float,
 237        drange="(0,1)",
 238        inrange=lambda x: 0 < x < 1,
 239        evalrange=[0.5, 0.75, 0.9],
 240    ),
 241    "STARVATION_PENALTY": Parameter(
 242        key="STARVATION_PENALTY",
 243        name="",
 244        domain="starvation",
 245        default=0.1,
 246        info="Per-step fractional penalty applied to surv and repr when N > resources. Compounds each consecutive step under deficit; resets when resources are sufficient.",
 247        info_extended="effective_phenotype = phenotype * (1 - STARVATION_PENALTY) ** consecutive_starvation_steps. Set to 0 to disable.",
 248        dtype=float,
 249        drange="[0, 1)",
 250        inrange=lambda x: 0 <= x < 1,
 251        evalrange=[0.0, 0.05, 0.1, 0.2],
 252    ),
 253    #
 254    #
 255    # RESOURCES
 256    "RESOURCE_INITIAL_AMOUNT": Parameter(
 257        key="RESOURCE_INITIAL_AMOUNT",
 258        name="",
 259        domain="resources",
 260        default=500,
 261        info="Amount of resources available at the beginning of the simulation",
 262        dtype=float,
 263        drange="[1,inf)",
 264        inrange=lambda x: x >= 1,
 265    ),
 266    "RESOURCE_MAXIMUM_AMOUNT": Parameter(
 267        key="RESOURCE_MAXIMUM_AMOUNT",
 268        name="",
 269        domain="resources",
 270        default=5000,
 271        info="Maximum amount of resources that can be accumulated",
 272        info_extended="When None, no maximum exists.",
 273        dtype=float,
 274        drange="{None, [1,inf)}",
 275        inrange=lambda x: x is None or (x >= 1),
 276    ),
 277    "RESOURCE_ADDITIVE_GROWTH": Parameter(
 278        key="RESOURCE_ADDITIVE_GROWTH",
 279        name="",
 280        domain="resources",
 281        default=500,
 282        info="Absolute value by which the amount of resources increases each step",
 283        info_extended="new_resource_amount = old_resource_amount * RESOURCE_MULTIPLICATIVE_GROWTH + RESOURCE_ADDITIVE_GROWTH",
 284        dtype=float,
 285        drange="[1,inf)",
 286        inrange=lambda x: x >= 1,
 287    ),
 288    "RESOURCE_MULTIPLICATIVE_GROWTH": Parameter(
 289        key="RESOURCE_MULTIPLICATIVE_GROWTH",
 290        name="",
 291        domain="resources",
 292        default=0,
 293        info="Factor by which (+1) the amount of remaining resources are multiplied each step",
 294        info_extended="new_resource_amount = old_resource_amount * (1 + RESOURCE_MULTIPLICATIVE_GROWTH) + RESOURCE_ADDITIVE_GROWTH",
 295        dtype=float,
 296        drange="[0,inf)",
 297        inrange=lambda x: x >= 0,
 298        evalrange=[0.01, 0.02, 0.05, 0.1],
 299    ),
 300    #
 301    #
 302    # REPRODUCTION
 303    "INCUBATION_PERIOD": Parameter(
 304        key="INCUBATION_PERIOD",
 305        name="",
 306        domain="reproduction",
 307        default=0,
 308        info="Time between fertilization and hatching (in steps)",
 309        info_extended="0 if egg period is skipped, -1 if hatching occurs only once no living individuals are around.",
 310        dtype=int,
 311        drange="[-1, inf)",
 312        inrange=lambda x: x >= -1,
 313        presets={},
 314    ),
 315    "MATURATION_AGE": Parameter(
 316        key="MATURATION_AGE",
 317        name="",
 318        domain="reproduction",
 319        default=10,
 320        info="Minimum age at which an individual can reproduce",
 321        info_extended="",
 322        dtype=int,
 323        drange="[1, inf)",
 324        inrange=lambda x: x >= 1,
 325        evalrange=[0, 50],
 326        presets={
 327            "mouse": 1,  # 1 cycle .. 1 month
 328        },
 329    ),
 330    "REPRODUCTION_ENDPOINT": Parameter(
 331        key="REPRODUCTION_ENDPOINT",
 332        name="",
 333        domain="reproduction",
 334        default=0,
 335        info="Minimum age at which an individual can no longer reproduce",
 336        info_extended="When set to 0, there is no loss of fertility.",
 337        dtype=int,
 338        drange="[0, inf)",
 339        inrange=lambda x: x >= 0,
 340        presets={
 341            "human": 50,
 342        },
 343    ),
 344    "MAX_OFFSPRING_NUMBER": Parameter(
 345        key="MAX_OFFSPRING_NUMBER",
 346        name="",
 347        domain="reproduction",
 348        default=1,
 349        info="Maximum number of offspring that an individual can produce each step.",
 350        info_extended="Also known as clutch size, litter size or brood size, depending on the species.",
 351        dtype=int,
 352        drange="[1, inf)",
 353        inrange=lambda x: x >= 1,
 354        presets={},
 355        serverrange=lambda x: x <= 5,
 356        serverrange_info="[1,5]",
 357    ),
 358    "REPRODUCTION_MODE": Parameter(
 359        key="REPRODUCTION_MODE",
 360        name="",
 361        domain="reproduction",
 362        default="sexual",
 363        info="Mode of reproduction",
 364        info_extended="",
 365        dtype=str,
 366        drange="{sexual, asexual}",
 367        inrange=lambda x: x in ("sexual", "asexual"),
 368        presets={
 369            "yeast": "asexual",
 370        },
 371    ),
 372    "REPRODUCTION_REGULATION": Parameter(
 373        key="REPRODUCTION_REGULATION",
 374        name="",
 375        domain="reproduction",
 376        default=False,
 377        info="Density effects on reproduction. When True, no overshooting can occur.",
 378        info_extended="",
 379        dtype=bool,
 380        drange="",
 381    ),
 382    "RECOMBINATION_RATE": Parameter(
 383        key="RECOMBINATION_RATE",
 384        name="",
 385        domain="reproduction",
 386        default=0.1,
 387        info="Probability of recombination occuring between two adjacent sites",
 388        info_extended="If set to 0, there is no recombination.",
 389        dtype=float,
 390        drange="[0, inf)",
 391        inrange=lambda x: x >= 0,
 392        evalrange=[0, 1],
 393        presets={
 394            "yeast": 0,
 395        },
 396    ),
 397    "MUTATION_RATIO": Parameter(
 398        key="MUTATION_RATIO",
 399        name="",
 400        domain="reproduction",
 401        default=0.1,
 402        info="Ratio of 0->1 mutations to 1->0 mutations",
 403        dtype=float,
 404        drange="[0, inf)",
 405        inrange=lambda x: x >= 0,
 406    ),
 407    "MUTATION_AGE_MULTIPLIER": Parameter(
 408        key="MUTATION_AGE_MULTIPLIER",
 409        name="",
 410        domain="reproduction",
 411        default=0,
 412        info="Modifier of germline mutation rate",
 413        info_extended="final germline mutation rate = intrinsic mutation rate + (1 * age * MUTATION_AGE_MULTIPLIER)",
 414        dtype=float,
 415        drange="[0, inf)",
 416        inrange=lambda x: x >= 0,
 417    ),
 418    #
 419    #
 420    # GENETICS
 421    "DOMINANCE_FACTOR": Parameter(
 422        key="DOMINANCE_FACTOR",
 423        name="",
 424        domain="genetics",
 425        default=0.8,
 426        info="Inheritance patterns for non-haploid genomes",
 427        info_extended="0 for recessive, 0.5 for true additive, 0-1 for partial dominant, 1 for dominant, 1+ for overdominant",
 428        dtype=float,
 429        drange="[0, inf)",
 430        inrange=lambda x: x >= 0,
 431    ),
 432    "SMOOTHING_FACTOR": Parameter(
 433        key="SMOOTHING_FACTOR",
 434        name="",
 435        domain="genetics",
 436        default=0,
 437        info="Gaussian sigma factor for smoothing of phenotypes",
 438        info_extended="0 for no smoothing",
 439        dtype=float,
 440        drange="[0, inf)",
 441        inrange=lambda x: x >= 0,
 442    ),
 443    "PLOIDY": Parameter(
 444        key="PLOIDY",
 445        name="",
 446        domain="genetics",
 447        default=2,
 448        info="Number of complete sets of chromosomes",
 449        info_extended="If reproduction is sexual, ploidy can only be 2.",
 450        dtype=int,
 451        drange="[1, 4]",
 452        inrange=lambda x: x in (1, 2, 3, 4),
 453    ),
 454    "GENARCH_TYPE": Parameter(
 455        key="GENARCH_TYPE",
 456        name="",
 457        domain="genetics",
 458        default="composite",
 459        info="Modifying or composite architecture",
 460        info_extended="",
 461        dtype=str,
 462        drange="{composite, modifying}",
 463        inrange=lambda x: x in ("composite", "modifying"),
 464    ),
 465    "G_surv_lo": Parameter(
 466        key="G_surv_lo",
 467        name="",
 468        domain="genetics",
 469        default=0,
 470        info="Minimum survival rate",
 471        dtype=float,
 472        drange="",
 473    ),
 474    "G_surv_hi": Parameter(
 475        key="G_surv_hi",
 476        name="",
 477        domain="genetics",
 478        default=1,
 479        info="Maximum survival rate",
 480        dtype=float,
 481        drange="",
 482    ),
 483    "G_repr_lo": Parameter(
 484        key="G_repr_lo",
 485        name="",
 486        domain="genetics",
 487        default=0,
 488        info="Minimum intrinsic fertility",
 489        dtype=float,
 490        drange="",
 491    ),
 492    "G_repr_hi": Parameter(
 493        key="G_repr_hi",
 494        name="",
 495        domain="genetics",
 496        default=0.5,
 497        info="Maximum intrinsic fertility",
 498        dtype=float,
 499        drange="",
 500        evalrange=[0.5, 1],
 501        # presets={
 502        #     "mouse": 1,  # 3.5; litter size of 7; 5.4 litters per year; https://genomics.senescence.info/species/entry.php?species=Mus_musculus
 503        #     "human": 1,  # litter size of 1,
 504        #     "mouse": 1,  # 5.5; litter size of 5-6
 505        #     "killifish": 1,  # 50; 1x-1xx eggs, depending on species
 506        #     "yeast": 1,
 507        #     "athaliana": 1,  # 1xx seeds per plant
 508        #     "worm": 1,  # up to 300 eggs in optimal conditions
 509        #     "fruitfly": 1,  # 100; up to 100 eggs per day in optimal conditions
 510        # },
 511    ),
 512    "G_neut_lo": Parameter(
 513        key="G_neut_lo",
 514        name="",
 515        domain="genetics",
 516        default=0,
 517        info="",
 518        dtype=float,
 519        drange="",
 520    ),
 521    "G_neut_hi": Parameter(
 522        key="G_neut_hi",
 523        name="",
 524        domain="genetics",
 525        default=1,
 526        info="",
 527        dtype=float,
 528        drange="",
 529    ),
 530    "G_muta_lo": Parameter(
 531        key="G_muta_lo",
 532        name="",
 533        domain="genetics",
 534        default=0,
 535        info="Minumum intrinsic mutation rate",
 536        dtype=float,
 537        drange="",
 538    ),
 539    "G_muta_hi": Parameter(
 540        key="G_muta_hi",
 541        name="",
 542        domain="genetics",
 543        default=1,
 544        info="Maximum intrinsic mutation rate",
 545        dtype=float,
 546        drange="",
 547    ),
 548    "G_grow_lo": Parameter(
 549        key="G_grow_lo",
 550        name="",
 551        domain="genetics",
 552        default=0,
 553        info="Minimum intrinsic growth rate",
 554        dtype=float,
 555        drange="",
 556    ),
 557    "G_grow_hi": Parameter(
 558        key="G_grow_hi",
 559        name="",
 560        domain="genetics",
 561        default=1,
 562        info="Maximum intrinsic growth rate",
 563        dtype=float,
 564        drange="",
 565    ),
 566    #
 567    #
 568    # ENVIRONMENTAL DRIFT
 569    "ENVDRIFT_RATE": Parameter(
 570        key="ENVDRIFT_RATE",
 571        name="",
 572        domain="environmental drift",
 573        default=0,
 574        info="Frequency of modification to the fitness landscape (in steps)",
 575        dtype=int,
 576        drange="[0, inf)",
 577        inrange=lambda x: x >= 0,
 578    ),
 579    #
 580    #
 581    # ABIOTIC
 582    "ABIOTIC_HAZARD_AMPLITUDE": Parameter(
 583        key="ABIOTIC_HAZARD_AMPLITUDE",
 584        name="",
 585        domain="abiotic",
 586        default=0,
 587        info="Maximum abiotic hazard",
 588        dtype=float,
 589        drange="[0, inf)",
 590        inrange=lambda x: x >= 0,
 591    ),
 592    "ABIOTIC_HAZARD_PERIOD": Parameter(
 593        key="ABIOTIC_HAZARD_PERIOD",
 594        name="",
 595        domain="abiotic",
 596        default=1,
 597        info="Period of wave form of abiotic hazard (in steps)",
 598        dtype=float,
 599        drange="[1, inf)",
 600        inrange=lambda x: x >= 1,
 601    ),
 602    "ABIOTIC_HAZARD_OFFSET": Parameter(
 603        key="ABIOTIC_HAZARD_OFFSET",
 604        name="",
 605        domain="abiotic",
 606        default=0,
 607        info="Constant, time-independent abiotic hazard",
 608        info_extended=r"e.g. 0.01 means that abiotic mortality is increased by 1% each step",
 609        dtype=float,
 610        drange="[0, inf)",
 611        inrange=lambda x: x >= 0,
 612    ),
 613    "ABIOTIC_HAZARD_SHAPE": Parameter(
 614        key="ABIOTIC_HAZARD_SHAPE",
 615        name="",
 616        domain="abiotic",
 617        default="sinusoidal",
 618        info="Wave form of abiotic hazard",
 619        dtype=str,
 620        drange="{sinusoidal, flat, triangle, square, sawtooth, ramp, instant, instant_fatal, instant_deterministic}",
 621        inrange=lambda x: x
 622        in {"sinusoidal", "flat", "triangle", "square", "sawtooth", "ramp", "instant", "instant_fatal", "instant_deterministic"},
 623    ),
 624    #
 625    #
 626    # INFECTION
 627    "BACKGROUND_INFECTIVITY": Parameter(
 628        key="BACKGROUND_INFECTIVITY",
 629        name="",
 630        domain="infection",
 631        default=0,
 632        info="Tendency to acquire infection from the environment",
 633        info_extended="Probability independent of the infection prevalence in the population; thus constant.",
 634        dtype=float,
 635        drange="[0, inf)",
 636        inrange=lambda x: x >= 0,
 637    ),
 638    "TRANSMISSIBILITY": Parameter(
 639        key="TRANSMISSIBILITY",
 640        name="",
 641        domain="infection",
 642        default=0,
 643        info="Tendency to acquire infection from other infected individuals",
 644        info_extended="Probability dependent on the infection prevalence in the population; thus variable.",
 645        dtype=float,
 646        drange="[0, inf)",
 647        inrange=lambda x: x >= 0,
 648    ),
 649    "RECOVERY_RATE": Parameter(
 650        key="RECOVERY_RATE",
 651        name="",
 652        domain="infection",
 653        info="Tendency to transition from infected to healthy status",
 654        default=0,
 655        dtype=float,
 656        drange="[0, inf)",
 657        inrange=lambda x: x >= 0,
 658    ),
 659    "FATALITY_RATE": Parameter(
 660        key="FATALITY_RATE",
 661        name="",
 662        domain="infection",
 663        info="Tendency to transition from infected to dead status",
 664        default=0,
 665        dtype=float,
 666        drange="[0, inf)",
 667        inrange=lambda x: x >= 0,
 668    ),
 669    #
 670    #
 671    # PREDATION
 672    "PREDATION_RATE": Parameter(
 673        key="PREDATION_RATE",
 674        name="",
 675        domain="predation",
 676        default=0,
 677        info="Vulnerability to predators",
 678        info_extended="Probability to die when number of predators is equal to number of prey. Probability changes logistically with the number of prey.",
 679        dtype=float,
 680        drange="[0, inf)",
 681        inrange=lambda x: x >= 0,
 682    ),
 683    "PREDATOR_GROWTH": Parameter(
 684        key="PREDATOR_GROWTH",
 685        name="",
 686        domain="predation",
 687        default=0,
 688        info="Intrinsic growth rate of predators",
 689        info_extended="Growth of the predator population is logistic.",
 690        dtype=float,
 691        drange="[0, inf)",
 692        inrange=lambda x: x >= 0,
 693    ),
 694    #
 695    #
 696    # GENETIC ARCHITECTURE (COMPOSITE)
 697    "BITS_PER_LOCUS": Parameter(
 698        key="BITS_PER_LOCUS",
 699        name="",
 700        domain="composite genetic architecture",
 701        default=8,
 702        info="Number of bits that each locus has",
 703        dtype=int,
 704        drange="[1, inf)",
 705        inrange=lambda x: x >= 1,
 706        serverrange=lambda x: x <= 10,
 707        serverrange_info="[1,10]",
 708        evalrange=[1, 100],
 709    ),
 710    # "DIFFUSION_FACTOR": Parameter(
 711    #     key="DIFFUSION_FACTOR",
 712    #     name="",
 713    #     domain="composite genetic architecture",
 714    #     default=1,
 715    #     info="Window for moving average",
 716    #     info_extended="When 1, all variants affect one age and trait only. When 1+, they also affect adjacent ages.",
 717    #     dtype=int,
 718    #     drange="[1, inf)",
 719    #     inrange=lambda x: x >= 1,
 720    #     serverrange=lambda x: x <= 10,
 721    #     serverrange_info="[1,10]",
 722    #
 723    # evalrange=[1, 50],
 724    # ),
 725    "G_surv_evolvable": Parameter(
 726        key="G_surv_evolvable",
 727        name="",
 728        domain="composite genetic architecture",
 729        default=True,
 730        info="Is survival an evolvable trait?",
 731        dtype=bool,
 732        drange="",
 733        inrange=lambda x: True,
 734    ),
 735    "G_surv_agespecific": Parameter(
 736        key="G_surv_agespecific",
 737        name="",
 738        domain="composite genetic architecture",
 739        default=True,
 740        info="Is survival age-specific?",
 741        dtype=bool,
 742        drange="",
 743        inrange=lambda x: True,
 744    ),
 745    "G_surv_interpreter": Parameter(
 746        key="G_surv_interpreter",
 747        name="",
 748        domain="composite genetic architecture",
 749        default="binary",
 750        info="",
 751        dtype=str,
 752        drange="",
 753    ),
 754    "G_surv_initgeno": Parameter(
 755        key="G_surv_initgeno",
 756        name="",
 757        domain="composite genetic architecture",
 758        default=1,
 759        info="Initial survival rate",
 760        dtype=float,
 761        drange="",
 762    ),
 763    "G_repr_evolvable": Parameter(
 764        key="G_repr_evolvable",
 765        name="",
 766        domain="composite genetic architecture",
 767        default=True,
 768        info="Is fertility an evolvable trait?",
 769        dtype=bool,
 770        drange="",
 771    ),
 772    "G_repr_agespecific": Parameter(
 773        key="G_repr_agespecific",
 774        name="",
 775        domain="composite genetic architecture",
 776        default=True,
 777        info="Is fertility age-specific?",
 778        dtype=bool,
 779        drange="",
 780    ),
 781    "G_repr_interpreter": Parameter(
 782        key="G_repr_interpreter",
 783        name="",
 784        domain="composite genetic architecture",
 785        default="binary",
 786        info="",
 787        dtype=str,
 788        drange="",
 789    ),
 790    "G_repr_initgeno": Parameter(
 791        key="G_repr_initgeno",
 792        name="",
 793        domain="composite genetic architecture",
 794        default=1,
 795        info="Initial fertility rate",
 796        dtype=float,
 797        drange="",
 798    ),
 799    "G_neut_evolvable": Parameter(
 800        key="G_neut_evolvable",
 801        name="",
 802        domain="composite genetic architecture",
 803        default=False,
 804        info="",
 805        dtype=bool,
 806        drange="",
 807    ),
 808    "G_neut_agespecific": Parameter(
 809        key="G_neut_agespecific",
 810        name="",
 811        domain="composite genetic architecture",
 812        default=False,
 813        info="",
 814        dtype=bool,
 815        drange="",
 816    ),
 817    "G_neut_interpreter": Parameter(
 818        key="G_neut_interpreter",
 819        name="",
 820        domain="composite genetic architecture",
 821        default="binary",
 822        info="",
 823        dtype=str,
 824        drange="",
 825    ),
 826    "G_neut_initgeno": Parameter(
 827        key="G_neut_initgeno",
 828        name="",
 829        domain="composite genetic architecture",
 830        default=1,
 831        info="",
 832        dtype=float,
 833        drange="",
 834    ),
 835    "G_muta_evolvable": Parameter(
 836        key="G_muta_evolvable",
 837        name="",
 838        domain="composite genetic architecture",
 839        default=False,
 840        info="",
 841        dtype=bool,
 842        drange="",
 843    ),
 844    "G_muta_agespecific": Parameter(
 845        key="G_muta_agespecific",
 846        name="",
 847        domain="composite genetic architecture",
 848        default=False,
 849        info="",
 850        dtype=bool,
 851        drange="",
 852    ),
 853    "G_muta_interpreter": Parameter(
 854        key="G_muta_interpreter",
 855        name="",
 856        domain="composite genetic architecture",
 857        default="binary",
 858        info="",
 859        dtype=str,
 860        drange="",
 861    ),
 862    "G_muta_initgeno": Parameter(
 863        key="G_muta_initgeno",
 864        name="",
 865        domain="composite genetic architecture",
 866        default=1,
 867        info="Initial mutation rate",
 868        dtype=float,
 869        drange="",
 870    ),
 871    "G_grow_evolvable": Parameter(
 872        key="G_grow_evolvable",
 873        name="",
 874        domain="composite genetic architecture",
 875        default=False,
 876        info="",
 877        dtype=bool,
 878        drange="",
 879    ),
 880    "G_grow_agespecific": Parameter(
 881        key="G_grow_agespecific",
 882        name="",
 883        domain="composite genetic architecture",
 884        default=False,
 885        info="",
 886        dtype=bool,
 887        drange="",
 888    ),
 889    "G_grow_interpreter": Parameter(
 890        key="G_grow_interpreter",
 891        name="",
 892        domain="composite genetic architecture",
 893        default="binary",
 894        info="",
 895        dtype=str,
 896        drange="",
 897    ),
 898    "G_grow_initgeno": Parameter(
 899        key="G_grow_initgeno",
 900        name="",
 901        domain="composite genetic architecture",
 902        default=0.5,
 903        info="",
 904        dtype=float,
 905        drange="",
 906    ),
 907    "THRESHOLD": Parameter(
 908        key="THRESHOLD",
 909        name="",
 910        domain="composite genetic architecture",
 911        default=None,  # 3
 912        info="",
 913        dtype=int,
 914        drange="",
 915    ),
 916    #
 917    #
 918    # GENETIC ARCHITECTURE (modifying)
 919    "MODIF_GENOME_SIZE": Parameter(
 920        key="MODIF_GENOME_SIZE",
 921        name="",
 922        domain="modifying genetic architecture",
 923        default=200,
 924        info="Size of the genome under the modifying architecture",
 925        dtype=int,
 926        drange="[1,inf)",
 927        inrange=lambda x: x >= 1,
 928        show_in_gui=True,
 929    ),
 930    "PHENOMAP_SPECS": Parameter(
 931        key="PHENOMAP_SPECS",
 932        name="",
 933        domain="modifying genetic architecture",
 934        default=[],
 935        info="",
 936        dtype=list,
 937        drange="",
 938        show_in_gui=False,
 939    ),
 940    "PHENOMAP": Parameter(
 941        # TODO is this still needed
 942        key="PHENOMAP",
 943        name="",
 944        domain="modifying genetic architecture",
 945        default={},
 946        info="",
 947        dtype=dict,
 948        drange="",
 949        show_in_gui=False,
 950    ),
 951    "G_grow_initpheno": Parameter(
 952        key="G_grow_initpheno",
 953        name="",
 954        domain="modifying genetic architecture",
 955        default=0.5,
 956        info="",
 957        dtype=float,
 958        drange="",
 959    ),
 960    "G_muta_initpheno": Parameter(
 961        key="G_muta_initpheno",
 962        name="",
 963        domain="modifying genetic architecture",
 964        default=0.001,
 965        info="Initial mutation rate",
 966        dtype=float,
 967        drange="",
 968    ),
 969    "G_surv_initpheno": Parameter(
 970        key="G_surv_initpheno",
 971        name="",
 972        domain="modifying genetic architecture",
 973        default=0.95,
 974        info="Initial survival rate",
 975        dtype=float,
 976        drange="",
 977    ),
 978    "G_repr_initpheno": Parameter(
 979        key="G_repr_initpheno",
 980        name="",
 981        domain="modifying genetic architecture",
 982        default=0.75,
 983        info="Initial fertility rate",
 984        dtype=float,
 985        drange="",
 986    ),
 987    "G_neut_initpheno": Parameter(
 988        key="G_neut_initpheno",
 989        name="",
 990        domain="modifying genetic architecture",
 991        default=0.5,
 992        info="",
 993        dtype=float,
 994        drange="",
 995    ),
 996    #
 997    #
 998    # OTHER
 999    "SPECIES_PRESET": Parameter(
1000        key="SPECIES_PRESET",
1001        name="",
1002        domain="other",
1003        default=None,
1004        info="",
1005        dtype=str,
1006        drange="None or [" + ",".join(PRESET_INFO.keys()) + "]",
1007        inrange=lambda x: x in PRESET_INFO.keys() or x is None,
1008        show_in_docs=False,
1009        show_in_gui=False,
1010    ),
1011    #
1012    #
1013    # TIME SCALES
1014    "STEPS_PER_SIMULATION": Parameter(
1015        key="STEPS_PER_SIMULATION",
1016        name="",
1017        domain="other",
1018        default=100000,
1019        info="Number of steps for the simulation to execute",
1020        dtype=int,
1021        drange="[1, inf)",
1022        inrange=lambda x: x >= 1,
1023        serverrange=lambda x: x <= 100000,
1024        serverrange_info="[1,100000]",
1025        evalrange=[1, 10000000],
1026    ),
1027    "AGE_LIMIT": Parameter(
1028        key="AGE_LIMIT",
1029        name="",
1030        domain="other",
1031        default=50,
1032        info="Maximum achievable lifespan (in steps)",
1033        info_extended="Maximum evolved lifespan is lower than the technically restricted, maximum achievable lifespan.",
1034        dtype=int,
1035        drange="[1, inf)",
1036        inrange=lambda x: x >= 1,
1037        serverrange=lambda x: x <= 100,
1038        serverrange_info="[1,100]",
1039        evalrange=[15, 100],
1040    ),
1041    "CARRYING_CAPACITY_EGGS": Parameter(
1042        key="CARRYING_CAPACITY_EGGS",
1043        name="",
1044        domain="other",
1045        default=None,
1046        info="Maximum number of eggs that the environment can sustain; None means no limit",
1047        info_extended="Once the number of eggs exceeds the carrying capacity of eggs, newly laid eggs replace previously laid eggs. Set to None to disable the limit entirely. The limit applies even when hatching/incubation is instant.",
1048        dtype=int,
1049        drange="{None, [1, inf)}",
1050        inrange=lambda x: x is None or x >= 1,
1051        serverrange=lambda x: x is None or x <= 10000,
1052        serverrange_info="{None, [1,10000]}",
1053        evalrange=[None, 1000000],
1054        previous_keys=["CARRYING_CAPACITY_EGGS"],
1055    ),
1056    "INTROGRESSION_SOURCE": Parameter(
1057        key="INTROGRESSION_SOURCE",
1058        name="",
1059        domain="other",
1060        default=None,
1061        info="Path to a pickle file of a pre-evolved population to use as the introgression source (population A). Seeds are drawn from this population and merged into the main population at simulation start.",
1062        info_extended="When set together with INTROGRESSION_SEEDS, individuals from this pickle are seeded into the main population with their ancestry label set to True. Ancestry is then tracked locus-by-locus throughout the simulation.",
1063        dtype=str,
1064        drange="path or null",
1065        inrange=lambda x: x is None or isinstance(x, str),
1066    ),
1067    "INTROGRESSION_SEEDS": Parameter(
1068        key="INTROGRESSION_SEEDS",
1069        name="",
1070        domain="other",
1071        default=0,
1072        info="Number of individuals to draw from INTROGRESSION_SOURCE and seed into the main population at simulation start.",
1073        info_extended="Set to 0 to disable introgression tracking entirely. When > 0, INTROGRESSION_SOURCE must also be set.",
1074        dtype=int,
1075        drange="[0, inf)",
1076        inrange=lambda x: x >= 0,
1077    ),
1078    "INITIAL_POPULATION_SIZE": Parameter(
1079        key="INITIAL_POPULATION_SIZE",
1080        name="",
1081        domain="other",
1082        default=1000,
1083        info="Number of individuals generated at the beginning of the simulation",
1084        info_extended="",
1085        dtype=int,
1086        drange="[1, inf)",
1087        inrange=lambda x: x >= 1,
1088        serverrange=lambda x: x <= 1000 and x >= 1,
1089        serverrange_info="[1,1000]",
1090    ),
1091    "FRAILTY_MODIFIER": Parameter(
1092        key="FRAILTY_MODIFIER",
1093        name="",
1094        domain="other",
1095        default=0,
1096        info="Age-dependent modifier of mortality",
1097        dtype=float,
1098        drange="[0, inf)",
1099        inrange=lambda x: x >= 0,
1100        evalrange=[0, 0.5, 1, 2],
1101    ),
1102    "MORTALITY_ORDER": Parameter(
1103        key="MORTALITY_ORDER",
1104        name="",
1105        domain="other",
1106        default=["intrinsic", "abiotic", "infection", "predation", "starvation"],
1107        info="Order in which mortality sources are computed",
1108        dtype=list,
1109        drange=None,
1110        inrange=lambda order: all(
1111            source in ["intrinsic", "abiotic", "infection", "predation", "starvation"] for source in order
1112        ),
1113        show_in_gui=False,
1114    ),
1115    #
1116    #
1117    # TECHNICAL
1118    "MUTATION_METHOD": Parameter(
1119        key="MUTATION_METHOD",
1120        name="",
1121        domain="technical",
1122        default="by_bit",
1123        info="Vectorized or non-vectorized method of calculating incidence of new mutations",
1124        info_extended="Mutate by XOR with a randomized bit matrix ('by_bit') or generate random indices to mutate ('by_index')",
1125        dtype=str,
1126        drange="{by_bit, by_index}",
1127        inrange=lambda x: x in ("by_bit", "by_index"),
1128    ),
1129    "RANDOM_SEED": Parameter(
1130        key="RANDOM_SEED",
1131        name="",
1132        domain="technical",
1133        default=None,
1134        info="Number used as seed for pseudorandom number generator",
1135        info_extended="If nothing is given, a random integer will be used as the seed; otherwise the given integer will be used as the seed",
1136        dtype=int,
1137        drange="{None, (-inf, inf)}",
1138        inrange=lambda x: True,
1139    ),
1140    "PHENOMAP_METHOD": Parameter(
1141        key="PHENOMAP_METHOD",
1142        name="",
1143        domain="technical",
1144        default="by_loop",
1145        info="Non-vectorized, vectorized and blank method of calculating phenotypes from genotypes",
1146        info_extended="Blank method disables pleiotropy.",
1147        dtype=str,
1148        drange="{by_loop, by_dot, by_dummy}",
1149        inrange=lambda x: x in ("by_loop", "by_dot", "by_dummy"),
1150    ),
1151}
def get_default_parameters():
5def get_default_parameters():
6    return {p.key: p.default for p in DEFAULT_PARAMETERS.values()}
def get_species_parameters(SPECIES_PRESET):
 9def get_species_parameters(SPECIES_PRESET):
10    return {p.key: p.presets[SPECIES_PRESET] for p in DEFAULT_PARAMETERS.values() if SPECIES_PRESET in p.presets}
PRESET_INFO = {'human': 'One cycle corresponds to 2 years.', 'mouse': 'One cycle corresponds to one month. Source: https://genomics.senescence.info/species/entry.php?species=Mus_musculus', 'killifish': 'One cycle corresponds to one week.', 'yeast': '', 'arabidopsis': '', 'worm': 'One cycle corresponds to one day. Up to 300 eggs in optimal conditions.', 'fruitfly': 'One cycle corresponds to one day. Up to 100 eggs per day.'}
DEFAULT_PARAMETERS = {'LOGGING_RATE': <aegis_sim.parameterization.parameter.Parameter object>, 'TICKER_RATE': <aegis_sim.parameterization.parameter.Parameter object>, 'PICKLE_RATE': <aegis_sim.parameterization.parameter.Parameter object>, 'CHECKPOINT_RATE': <aegis_sim.parameterization.parameter.Parameter object>, 'SNAPSHOT_RATE': <aegis_sim.parameterization.parameter.Parameter object>, 'SNAPSHOT_FINAL_COUNT': <aegis_sim.parameterization.parameter.Parameter object>, 'INTERVAL_RATE': <aegis_sim.parameterization.parameter.Parameter object>, 'TE_RATE': <aegis_sim.parameterization.parameter.Parameter object>, 'TE_DURATION': <aegis_sim.parameterization.parameter.Parameter object>, 'POPGENSTATS_RATE': <aegis_sim.parameterization.parameter.Parameter object>, 'POPGENSTATS_SAMPLE_SIZE': <aegis_sim.parameterization.parameter.Parameter object>, 'NOTES': <aegis_sim.parameterization.parameter.Parameter object>, 'STARVATION_MORTALITY_FACTOR': <aegis_sim.parameterization.parameter.Parameter object>, 'STARVATION_MORTALITY_MAXIMUM': <aegis_sim.parameterization.parameter.Parameter object>, 'STARVATION_PENALTY': <aegis_sim.parameterization.parameter.Parameter object>, 'RESOURCE_INITIAL_AMOUNT': <aegis_sim.parameterization.parameter.Parameter object>, 'RESOURCE_MAXIMUM_AMOUNT': <aegis_sim.parameterization.parameter.Parameter object>, 'RESOURCE_ADDITIVE_GROWTH': <aegis_sim.parameterization.parameter.Parameter object>, 'RESOURCE_MULTIPLICATIVE_GROWTH': <aegis_sim.parameterization.parameter.Parameter object>, 'INCUBATION_PERIOD': <aegis_sim.parameterization.parameter.Parameter object>, 'MATURATION_AGE': <aegis_sim.parameterization.parameter.Parameter object>, 'REPRODUCTION_ENDPOINT': <aegis_sim.parameterization.parameter.Parameter object>, 'MAX_OFFSPRING_NUMBER': <aegis_sim.parameterization.parameter.Parameter object>, 'REPRODUCTION_MODE': <aegis_sim.parameterization.parameter.Parameter object>, 'REPRODUCTION_REGULATION': <aegis_sim.parameterization.parameter.Parameter object>, 'RECOMBINATION_RATE': <aegis_sim.parameterization.parameter.Parameter object>, 'MUTATION_RATIO': <aegis_sim.parameterization.parameter.Parameter object>, 'MUTATION_AGE_MULTIPLIER': <aegis_sim.parameterization.parameter.Parameter object>, 'DOMINANCE_FACTOR': <aegis_sim.parameterization.parameter.Parameter object>, 'SMOOTHING_FACTOR': <aegis_sim.parameterization.parameter.Parameter object>, 'PLOIDY': <aegis_sim.parameterization.parameter.Parameter object>, 'GENARCH_TYPE': <aegis_sim.parameterization.parameter.Parameter object>, 'G_surv_lo': <aegis_sim.parameterization.parameter.Parameter object>, 'G_surv_hi': <aegis_sim.parameterization.parameter.Parameter object>, 'G_repr_lo': <aegis_sim.parameterization.parameter.Parameter object>, 'G_repr_hi': <aegis_sim.parameterization.parameter.Parameter object>, 'G_neut_lo': <aegis_sim.parameterization.parameter.Parameter object>, 'G_neut_hi': <aegis_sim.parameterization.parameter.Parameter object>, 'G_muta_lo': <aegis_sim.parameterization.parameter.Parameter object>, 'G_muta_hi': <aegis_sim.parameterization.parameter.Parameter object>, 'G_grow_lo': <aegis_sim.parameterization.parameter.Parameter object>, 'G_grow_hi': <aegis_sim.parameterization.parameter.Parameter object>, 'ENVDRIFT_RATE': <aegis_sim.parameterization.parameter.Parameter object>, 'ABIOTIC_HAZARD_AMPLITUDE': <aegis_sim.parameterization.parameter.Parameter object>, 'ABIOTIC_HAZARD_PERIOD': <aegis_sim.parameterization.parameter.Parameter object>, 'ABIOTIC_HAZARD_OFFSET': <aegis_sim.parameterization.parameter.Parameter object>, 'ABIOTIC_HAZARD_SHAPE': <aegis_sim.parameterization.parameter.Parameter object>, 'BACKGROUND_INFECTIVITY': <aegis_sim.parameterization.parameter.Parameter object>, 'TRANSMISSIBILITY': <aegis_sim.parameterization.parameter.Parameter object>, 'RECOVERY_RATE': <aegis_sim.parameterization.parameter.Parameter object>, 'FATALITY_RATE': <aegis_sim.parameterization.parameter.Parameter object>, 'PREDATION_RATE': <aegis_sim.parameterization.parameter.Parameter object>, 'PREDATOR_GROWTH': <aegis_sim.parameterization.parameter.Parameter object>, 'BITS_PER_LOCUS': <aegis_sim.parameterization.parameter.Parameter object>, 'G_surv_evolvable': <aegis_sim.parameterization.parameter.Parameter object>, 'G_surv_agespecific': <aegis_sim.parameterization.parameter.Parameter object>, 'G_surv_interpreter': <aegis_sim.parameterization.parameter.Parameter object>, 'G_surv_initgeno': <aegis_sim.parameterization.parameter.Parameter object>, 'G_repr_evolvable': <aegis_sim.parameterization.parameter.Parameter object>, 'G_repr_agespecific': <aegis_sim.parameterization.parameter.Parameter object>, 'G_repr_interpreter': <aegis_sim.parameterization.parameter.Parameter object>, 'G_repr_initgeno': <aegis_sim.parameterization.parameter.Parameter object>, 'G_neut_evolvable': <aegis_sim.parameterization.parameter.Parameter object>, 'G_neut_agespecific': <aegis_sim.parameterization.parameter.Parameter object>, 'G_neut_interpreter': <aegis_sim.parameterization.parameter.Parameter object>, 'G_neut_initgeno': <aegis_sim.parameterization.parameter.Parameter object>, 'G_muta_evolvable': <aegis_sim.parameterization.parameter.Parameter object>, 'G_muta_agespecific': <aegis_sim.parameterization.parameter.Parameter object>, 'G_muta_interpreter': <aegis_sim.parameterization.parameter.Parameter object>, 'G_muta_initgeno': <aegis_sim.parameterization.parameter.Parameter object>, 'G_grow_evolvable': <aegis_sim.parameterization.parameter.Parameter object>, 'G_grow_agespecific': <aegis_sim.parameterization.parameter.Parameter object>, 'G_grow_interpreter': <aegis_sim.parameterization.parameter.Parameter object>, 'G_grow_initgeno': <aegis_sim.parameterization.parameter.Parameter object>, 'THRESHOLD': <aegis_sim.parameterization.parameter.Parameter object>, 'MODIF_GENOME_SIZE': <aegis_sim.parameterization.parameter.Parameter object>, 'PHENOMAP_SPECS': <aegis_sim.parameterization.parameter.Parameter object>, 'PHENOMAP': <aegis_sim.parameterization.parameter.Parameter object>, 'G_grow_initpheno': <aegis_sim.parameterization.parameter.Parameter object>, 'G_muta_initpheno': <aegis_sim.parameterization.parameter.Parameter object>, 'G_surv_initpheno': <aegis_sim.parameterization.parameter.Parameter object>, 'G_repr_initpheno': <aegis_sim.parameterization.parameter.Parameter object>, 'G_neut_initpheno': <aegis_sim.parameterization.parameter.Parameter object>, 'SPECIES_PRESET': <aegis_sim.parameterization.parameter.Parameter object>, 'STEPS_PER_SIMULATION': <aegis_sim.parameterization.parameter.Parameter object>, 'AGE_LIMIT': <aegis_sim.parameterization.parameter.Parameter object>, 'CARRYING_CAPACITY_EGGS': <aegis_sim.parameterization.parameter.Parameter object>, 'INTROGRESSION_SOURCE': <aegis_sim.parameterization.parameter.Parameter object>, 'INTROGRESSION_SEEDS': <aegis_sim.parameterization.parameter.Parameter object>, 'INITIAL_POPULATION_SIZE': <aegis_sim.parameterization.parameter.Parameter object>, 'FRAILTY_MODIFIER': <aegis_sim.parameterization.parameter.Parameter object>, 'MORTALITY_ORDER': <aegis_sim.parameterization.parameter.Parameter object>, 'MUTATION_METHOD': <aegis_sim.parameterization.parameter.Parameter object>, 'RANDOM_SEED': <aegis_sim.parameterization.parameter.Parameter object>, 'PHENOMAP_METHOD': <aegis_sim.parameterization.parameter.Parameter object>}