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 # 242 # 243 # RESOURCES 244 "RESOURCE_INITIAL_AMOUNT": Parameter( 245 key="RESOURCE_INITIAL_AMOUNT", 246 name="", 247 domain="resources", 248 default=500, 249 info="Amount of resources available at the beginning of the simulation", 250 dtype=float, 251 drange="[1,inf)", 252 inrange=lambda x: x >= 1, 253 ), 254 "RESOURCE_MAXIMUM_AMOUNT": Parameter( 255 key="RESOURCE_MAXIMUM_AMOUNT", 256 name="", 257 domain="resources", 258 default=5000, 259 info="Maximum amount of resources that can be accumulated", 260 info_extended="When None, no maximum exists.", 261 dtype=float, 262 drange="{None, [1,inf)}", 263 inrange=lambda x: x is None or (x >= 1), 264 ), 265 "RESOURCE_ADDITIVE_GROWTH": Parameter( 266 key="RESOURCE_ADDITIVE_GROWTH", 267 name="", 268 domain="resources", 269 default=500, 270 info="Absolute value by which the amount of resources increases each step", 271 info_extended="new_resource_amount = old_resource_amount * RESOURCE_MULTIPLICATIVE_GROWTH + RESOURCE_ADDITIVE_GROWTH", 272 dtype=float, 273 drange="[1,inf)", 274 inrange=lambda x: x >= 1, 275 ), 276 "RESOURCE_MULTIPLICATIVE_GROWTH": Parameter( 277 key="RESOURCE_MULTIPLICATIVE_GROWTH", 278 name="", 279 domain="resources", 280 default=0, 281 info="Factor by which (+1) the amount of remaining resources are multiplied each step", 282 info_extended="new_resource_amount = old_resource_amount * (1 + RESOURCE_MULTIPLICATIVE_GROWTH) + RESOURCE_ADDITIVE_GROWTH", 283 dtype=float, 284 drange="[0,inf)", 285 inrange=lambda x: x >= 0, 286 evalrange=[0.01, 0.02, 0.05, 0.1], 287 ), 288 # 289 # 290 # REPRODUCTION 291 "INCUBATION_PERIOD": Parameter( 292 key="INCUBATION_PERIOD", 293 name="", 294 domain="reproduction", 295 default=0, 296 info="Time between fertilization and hatching (in steps)", 297 info_extended="0 if egg period is skipped, -1 if hatching occurs only once no living individuals are around.", 298 dtype=int, 299 drange="[-1, inf)", 300 inrange=lambda x: x >= -1, 301 presets={}, 302 ), 303 "MATURATION_AGE": Parameter( 304 key="MATURATION_AGE", 305 name="", 306 domain="reproduction", 307 default=10, 308 info="Minimum age at which an individual can reproduce", 309 info_extended="", 310 dtype=int, 311 drange="[1, inf)", 312 inrange=lambda x: x >= 1, 313 evalrange=[0, 50], 314 presets={ 315 "mouse": 1, # 1 cycle .. 1 month 316 }, 317 ), 318 "REPRODUCTION_ENDPOINT": Parameter( 319 key="REPRODUCTION_ENDPOINT", 320 name="", 321 domain="reproduction", 322 default=0, 323 info="Minimum age at which an individual can no longer reproduce", 324 info_extended="When set to 0, there is no loss of fertility.", 325 dtype=int, 326 drange="[0, inf)", 327 inrange=lambda x: x >= 0, 328 presets={ 329 "human": 50, 330 }, 331 ), 332 "MAX_OFFSPRING_NUMBER": Parameter( 333 key="MAX_OFFSPRING_NUMBER", 334 name="", 335 domain="reproduction", 336 default=1, 337 info="Maximum number of offspring that an individual can produce each step.", 338 info_extended="Also known as clutch size, litter size or brood size, depending on the species.", 339 dtype=int, 340 drange="[1, inf)", 341 inrange=lambda x: x >= 1, 342 presets={}, 343 serverrange=lambda x: x <= 5, 344 serverrange_info="[1,5]", 345 ), 346 "REPRODUCTION_MODE": Parameter( 347 key="REPRODUCTION_MODE", 348 name="", 349 domain="reproduction", 350 default="sexual", 351 info="Mode of reproduction", 352 info_extended="", 353 dtype=str, 354 drange="{sexual, asexual}", 355 inrange=lambda x: x in ("sexual", "asexual"), 356 presets={ 357 "yeast": "asexual", 358 }, 359 ), 360 "REPRODUCTION_REGULATION": Parameter( 361 key="REPRODUCTION_REGULATION", 362 name="", 363 domain="reproduction", 364 default=False, 365 info="Density effects on reproduction. When True, no overshooting can occur.", 366 info_extended="", 367 dtype=bool, 368 drange="", 369 ), 370 "RECOMBINATION_RATE": Parameter( 371 key="RECOMBINATION_RATE", 372 name="", 373 domain="reproduction", 374 default=0.1, 375 info="Probability of recombination occuring between two adjacent sites", 376 info_extended="If set to 0, there is no recombination.", 377 dtype=float, 378 drange="[0, inf)", 379 inrange=lambda x: x >= 0, 380 evalrange=[0, 1], 381 presets={ 382 "yeast": 0, 383 }, 384 ), 385 "MUTATION_RATIO": Parameter( 386 key="MUTATION_RATIO", 387 name="", 388 domain="reproduction", 389 default=0.1, 390 info="Ratio of 0->1 mutations to 1->0 mutations", 391 dtype=float, 392 drange="[0, inf)", 393 inrange=lambda x: x >= 0, 394 ), 395 "MUTATION_AGE_MULTIPLIER": Parameter( 396 key="MUTATION_AGE_MULTIPLIER", 397 name="", 398 domain="reproduction", 399 default=0, 400 info="Modifier of germline mutation rate", 401 info_extended="final germline mutation rate = intrinsic mutation rate + (1 * age * MUTATION_AGE_MULTIPLIER)", 402 dtype=float, 403 drange="[0, inf)", 404 inrange=lambda x: x >= 0, 405 ), 406 # 407 # 408 # GENETICS 409 "DOMINANCE_FACTOR": Parameter( 410 key="DOMINANCE_FACTOR", 411 name="", 412 domain="genetics", 413 default=0.8, 414 info="Inheritance patterns for non-haploid genomes", 415 info_extended="0 for recessive, 0.5 for true additive, 0-1 for partial dominant, 1 for dominant, 1+ for overdominant", 416 dtype=float, 417 drange="[0, inf)", 418 inrange=lambda x: x >= 0, 419 ), 420 "SMOOTHING_FACTOR": Parameter( 421 key="SMOOTHING_FACTOR", 422 name="", 423 domain="genetics", 424 default=0, 425 info="Gaussian sigma factor for smoothing of phenotypes", 426 info_extended="0 for no smoothing", 427 dtype=float, 428 drange="[0, inf)", 429 inrange=lambda x: x >= 0, 430 ), 431 "PLOIDY": Parameter( 432 key="PLOIDY", 433 name="", 434 domain="genetics", 435 default=2, 436 info="Number of complete sets of chromosomes", 437 info_extended="If reproduction is sexual, ploidy can only be 2.", 438 dtype=int, 439 drange="[1, 4]", 440 inrange=lambda x: x in (1, 2, 3, 4), 441 ), 442 "GENARCH_TYPE": Parameter( 443 key="GENARCH_TYPE", 444 name="", 445 domain="genetics", 446 default="composite", 447 info="Modifying or composite architecture", 448 info_extended="", 449 dtype=str, 450 drange="{composite, modifying}", 451 inrange=lambda x: x in ("composite", "modifying"), 452 ), 453 "G_surv_lo": Parameter( 454 key="G_surv_lo", 455 name="", 456 domain="genetics", 457 default=0, 458 info="Minimum survival rate", 459 dtype=float, 460 drange="", 461 ), 462 "G_surv_hi": Parameter( 463 key="G_surv_hi", 464 name="", 465 domain="genetics", 466 default=1, 467 info="Maximum survival rate", 468 dtype=float, 469 drange="", 470 ), 471 "G_repr_lo": Parameter( 472 key="G_repr_lo", 473 name="", 474 domain="genetics", 475 default=0, 476 info="Minimum intrinsic fertility", 477 dtype=float, 478 drange="", 479 ), 480 "G_repr_hi": Parameter( 481 key="G_repr_hi", 482 name="", 483 domain="genetics", 484 default=0.5, 485 info="Maximum intrinsic fertility", 486 dtype=float, 487 drange="", 488 evalrange=[0.5, 1], 489 # presets={ 490 # "mouse": 1, # 3.5; litter size of 7; 5.4 litters per year; https://genomics.senescence.info/species/entry.php?species=Mus_musculus 491 # "human": 1, # litter size of 1, 492 # "mouse": 1, # 5.5; litter size of 5-6 493 # "killifish": 1, # 50; 1x-1xx eggs, depending on species 494 # "yeast": 1, 495 # "athaliana": 1, # 1xx seeds per plant 496 # "worm": 1, # up to 300 eggs in optimal conditions 497 # "fruitfly": 1, # 100; up to 100 eggs per day in optimal conditions 498 # }, 499 ), 500 "G_neut_lo": Parameter( 501 key="G_neut_lo", 502 name="", 503 domain="genetics", 504 default=0, 505 info="", 506 dtype=float, 507 drange="", 508 ), 509 "G_neut_hi": Parameter( 510 key="G_neut_hi", 511 name="", 512 domain="genetics", 513 default=1, 514 info="", 515 dtype=float, 516 drange="", 517 ), 518 "G_muta_lo": Parameter( 519 key="G_muta_lo", 520 name="", 521 domain="genetics", 522 default=0, 523 info="Minumum intrinsic mutation rate", 524 dtype=float, 525 drange="", 526 ), 527 "G_muta_hi": Parameter( 528 key="G_muta_hi", 529 name="", 530 domain="genetics", 531 default=1, 532 info="Maximum intrinsic mutation rate", 533 dtype=float, 534 drange="", 535 ), 536 "G_grow_lo": Parameter( 537 key="G_grow_lo", 538 name="", 539 domain="genetics", 540 default=0, 541 info="Minimum intrinsic growth rate", 542 dtype=float, 543 drange="", 544 ), 545 "G_grow_hi": Parameter( 546 key="G_grow_hi", 547 name="", 548 domain="genetics", 549 default=1, 550 info="Maximum intrinsic growth rate", 551 dtype=float, 552 drange="", 553 ), 554 # 555 # 556 # ENVIRONMENTAL DRIFT 557 "ENVDRIFT_RATE": Parameter( 558 key="ENVDRIFT_RATE", 559 name="", 560 domain="environmental drift", 561 default=0, 562 info="Frequency of modification to the fitness landscape (in steps)", 563 dtype=int, 564 drange="[0, inf)", 565 inrange=lambda x: x >= 0, 566 ), 567 # 568 # 569 # ABIOTIC 570 "ABIOTIC_HAZARD_AMPLITUDE": Parameter( 571 key="ABIOTIC_HAZARD_AMPLITUDE", 572 name="", 573 domain="abiotic", 574 default=0, 575 info="Maximum abiotic hazard", 576 dtype=float, 577 drange="[0, inf)", 578 inrange=lambda x: x >= 0, 579 ), 580 "ABIOTIC_HAZARD_PERIOD": Parameter( 581 key="ABIOTIC_HAZARD_PERIOD", 582 name="", 583 domain="abiotic", 584 default=1, 585 info="Period of wave form of abiotic hazard (in steps)", 586 dtype=float, 587 drange="[1, inf)", 588 inrange=lambda x: x >= 1, 589 ), 590 "ABIOTIC_HAZARD_OFFSET": Parameter( 591 key="ABIOTIC_HAZARD_OFFSET", 592 name="", 593 domain="abiotic", 594 default=0, 595 info="Constant, time-independent abiotic hazard", 596 info_extended=r"e.g. 0.01 means that abiotic mortality is increased by 1% each step", 597 dtype=float, 598 drange="[0, inf)", 599 inrange=lambda x: x >= 0, 600 ), 601 "ABIOTIC_HAZARD_SHAPE": Parameter( 602 key="ABIOTIC_HAZARD_SHAPE", 603 name="", 604 domain="abiotic", 605 default="sinusoidal", 606 info="Wave form of abiotic hazard", 607 dtype=str, 608 drange="{sinusoidal, flat, triangle, square, sawtooth, ramp, instant, instant_fatal, instant_deterministic}", 609 inrange=lambda x: x 610 in {"sinusoidal", "flat", "triangle", "square", "sawtooth", "ramp", "instant", "instant_fatal", "instant_deterministic"}, 611 ), 612 # 613 # 614 # INFECTION 615 "BACKGROUND_INFECTIVITY": Parameter( 616 key="BACKGROUND_INFECTIVITY", 617 name="", 618 domain="infection", 619 default=0, 620 info="Tendency to acquire infection from the environment", 621 info_extended="Probability independent of the infection prevalence in the population; thus constant.", 622 dtype=float, 623 drange="[0, inf)", 624 inrange=lambda x: x >= 0, 625 ), 626 "TRANSMISSIBILITY": Parameter( 627 key="TRANSMISSIBILITY", 628 name="", 629 domain="infection", 630 default=0, 631 info="Tendency to acquire infection from other infected individuals", 632 info_extended="Probability dependent on the infection prevalence in the population; thus variable.", 633 dtype=float, 634 drange="[0, inf)", 635 inrange=lambda x: x >= 0, 636 ), 637 "RECOVERY_RATE": Parameter( 638 key="RECOVERY_RATE", 639 name="", 640 domain="infection", 641 info="Tendency to transition from infected to healthy status", 642 default=0, 643 dtype=float, 644 drange="[0, inf)", 645 inrange=lambda x: x >= 0, 646 ), 647 "FATALITY_RATE": Parameter( 648 key="FATALITY_RATE", 649 name="", 650 domain="infection", 651 info="Tendency to transition from infected to dead status", 652 default=0, 653 dtype=float, 654 drange="[0, inf)", 655 inrange=lambda x: x >= 0, 656 ), 657 # 658 # 659 # PREDATION 660 "PREDATION_RATE": Parameter( 661 key="PREDATION_RATE", 662 name="", 663 domain="predation", 664 default=0, 665 info="Vulnerability to predators", 666 info_extended="Probability to die when number of predators is equal to number of prey. Probability changes logistically with the number of prey.", 667 dtype=float, 668 drange="[0, inf)", 669 inrange=lambda x: x >= 0, 670 ), 671 "PREDATOR_GROWTH": Parameter( 672 key="PREDATOR_GROWTH", 673 name="", 674 domain="predation", 675 default=0, 676 info="Intrinsic growth rate of predators", 677 info_extended="Growth of the predator population is logistic.", 678 dtype=float, 679 drange="[0, inf)", 680 inrange=lambda x: x >= 0, 681 ), 682 # 683 # 684 # GENETIC ARCHITECTURE (COMPOSITE) 685 "BITS_PER_LOCUS": Parameter( 686 key="BITS_PER_LOCUS", 687 name="", 688 domain="composite genetic architecture", 689 default=8, 690 info="Number of bits that each locus has", 691 dtype=int, 692 drange="[1, inf)", 693 inrange=lambda x: x >= 1, 694 serverrange=lambda x: x <= 10, 695 serverrange_info="[1,10]", 696 evalrange=[1, 100], 697 ), 698 # "DIFFUSION_FACTOR": Parameter( 699 # key="DIFFUSION_FACTOR", 700 # name="", 701 # domain="composite genetic architecture", 702 # default=1, 703 # info="Window for moving average", 704 # info_extended="When 1, all variants affect one age and trait only. When 1+, they also affect adjacent ages.", 705 # dtype=int, 706 # drange="[1, inf)", 707 # inrange=lambda x: x >= 1, 708 # serverrange=lambda x: x <= 10, 709 # serverrange_info="[1,10]", 710 # 711 # evalrange=[1, 50], 712 # ), 713 "G_surv_evolvable": Parameter( 714 key="G_surv_evolvable", 715 name="", 716 domain="composite genetic architecture", 717 default=True, 718 info="Is survival an evolvable trait?", 719 dtype=bool, 720 drange="", 721 inrange=lambda x: True, 722 ), 723 "G_surv_agespecific": Parameter( 724 key="G_surv_agespecific", 725 name="", 726 domain="composite genetic architecture", 727 default=True, 728 info="Is survival age-specific?", 729 dtype=bool, 730 drange="", 731 inrange=lambda x: True, 732 ), 733 "G_surv_interpreter": Parameter( 734 key="G_surv_interpreter", 735 name="", 736 domain="composite genetic architecture", 737 default="binary", 738 info="", 739 dtype=str, 740 drange="", 741 ), 742 "G_surv_initgeno": Parameter( 743 key="G_surv_initgeno", 744 name="", 745 domain="composite genetic architecture", 746 default=1, 747 info="Initial survival rate", 748 dtype=float, 749 drange="", 750 ), 751 "G_repr_evolvable": Parameter( 752 key="G_repr_evolvable", 753 name="", 754 domain="composite genetic architecture", 755 default=True, 756 info="Is fertility an evolvable trait?", 757 dtype=bool, 758 drange="", 759 ), 760 "G_repr_agespecific": Parameter( 761 key="G_repr_agespecific", 762 name="", 763 domain="composite genetic architecture", 764 default=True, 765 info="Is fertility age-specific?", 766 dtype=bool, 767 drange="", 768 ), 769 "G_repr_interpreter": Parameter( 770 key="G_repr_interpreter", 771 name="", 772 domain="composite genetic architecture", 773 default="binary", 774 info="", 775 dtype=str, 776 drange="", 777 ), 778 "G_repr_initgeno": Parameter( 779 key="G_repr_initgeno", 780 name="", 781 domain="composite genetic architecture", 782 default=1, 783 info="Initial fertility rate", 784 dtype=float, 785 drange="", 786 ), 787 "G_neut_evolvable": Parameter( 788 key="G_neut_evolvable", 789 name="", 790 domain="composite genetic architecture", 791 default=False, 792 info="", 793 dtype=bool, 794 drange="", 795 ), 796 "G_neut_agespecific": Parameter( 797 key="G_neut_agespecific", 798 name="", 799 domain="composite genetic architecture", 800 default=False, 801 info="", 802 dtype=bool, 803 drange="", 804 ), 805 "G_neut_interpreter": Parameter( 806 key="G_neut_interpreter", 807 name="", 808 domain="composite genetic architecture", 809 default="binary", 810 info="", 811 dtype=str, 812 drange="", 813 ), 814 "G_neut_initgeno": Parameter( 815 key="G_neut_initgeno", 816 name="", 817 domain="composite genetic architecture", 818 default=1, 819 info="", 820 dtype=float, 821 drange="", 822 ), 823 "G_muta_evolvable": Parameter( 824 key="G_muta_evolvable", 825 name="", 826 domain="composite genetic architecture", 827 default=False, 828 info="", 829 dtype=bool, 830 drange="", 831 ), 832 "G_muta_agespecific": Parameter( 833 key="G_muta_agespecific", 834 name="", 835 domain="composite genetic architecture", 836 default=False, 837 info="", 838 dtype=bool, 839 drange="", 840 ), 841 "G_muta_interpreter": Parameter( 842 key="G_muta_interpreter", 843 name="", 844 domain="composite genetic architecture", 845 default="binary", 846 info="", 847 dtype=str, 848 drange="", 849 ), 850 "G_muta_initgeno": Parameter( 851 key="G_muta_initgeno", 852 name="", 853 domain="composite genetic architecture", 854 default=1, 855 info="Initial mutation rate", 856 dtype=float, 857 drange="", 858 ), 859 "G_grow_evolvable": Parameter( 860 key="G_grow_evolvable", 861 name="", 862 domain="composite genetic architecture", 863 default=False, 864 info="", 865 dtype=bool, 866 drange="", 867 ), 868 "G_grow_agespecific": Parameter( 869 key="G_grow_agespecific", 870 name="", 871 domain="composite genetic architecture", 872 default=False, 873 info="", 874 dtype=bool, 875 drange="", 876 ), 877 "G_grow_interpreter": Parameter( 878 key="G_grow_interpreter", 879 name="", 880 domain="composite genetic architecture", 881 default="binary", 882 info="", 883 dtype=str, 884 drange="", 885 ), 886 "G_grow_initgeno": Parameter( 887 key="G_grow_initgeno", 888 name="", 889 domain="composite genetic architecture", 890 default=0.5, 891 info="", 892 dtype=float, 893 drange="", 894 ), 895 "THRESHOLD": Parameter( 896 key="THRESHOLD", 897 name="", 898 domain="composite genetic architecture", 899 default=None, # 3 900 info="", 901 dtype=int, 902 drange="", 903 ), 904 # 905 # 906 # GENETIC ARCHITECTURE (modifying) 907 "MODIF_GENOME_SIZE": Parameter( 908 key="MODIF_GENOME_SIZE", 909 name="", 910 domain="modifying genetic architecture", 911 default=200, 912 info="Size of the genome under the modifying architecture", 913 dtype=int, 914 drange="[1,inf)", 915 inrange=lambda x: x >= 1, 916 show_in_gui=True, 917 ), 918 "PHENOMAP_SPECS": Parameter( 919 key="PHENOMAP_SPECS", 920 name="", 921 domain="modifying genetic architecture", 922 default=[], 923 info="", 924 dtype=list, 925 drange="", 926 show_in_gui=False, 927 ), 928 "PHENOMAP": Parameter( 929 # TODO is this still needed 930 key="PHENOMAP", 931 name="", 932 domain="modifying genetic architecture", 933 default={}, 934 info="", 935 dtype=dict, 936 drange="", 937 show_in_gui=False, 938 ), 939 "G_grow_initpheno": Parameter( 940 key="G_grow_initpheno", 941 name="", 942 domain="modifying genetic architecture", 943 default=0.5, 944 info="", 945 dtype=float, 946 drange="", 947 ), 948 "G_muta_initpheno": Parameter( 949 key="G_muta_initpheno", 950 name="", 951 domain="modifying genetic architecture", 952 default=0.001, 953 info="Initial mutation rate", 954 dtype=float, 955 drange="", 956 ), 957 "G_surv_initpheno": Parameter( 958 key="G_surv_initpheno", 959 name="", 960 domain="modifying genetic architecture", 961 default=0.95, 962 info="Initial survival rate", 963 dtype=float, 964 drange="", 965 ), 966 "G_repr_initpheno": Parameter( 967 key="G_repr_initpheno", 968 name="", 969 domain="modifying genetic architecture", 970 default=0.75, 971 info="Initial fertility rate", 972 dtype=float, 973 drange="", 974 ), 975 "G_neut_initpheno": Parameter( 976 key="G_neut_initpheno", 977 name="", 978 domain="modifying genetic architecture", 979 default=0.5, 980 info="", 981 dtype=float, 982 drange="", 983 ), 984 # 985 # 986 # OTHER 987 "SPECIES_PRESET": Parameter( 988 key="SPECIES_PRESET", 989 name="", 990 domain="other", 991 default=None, 992 info="", 993 dtype=str, 994 drange="None or [" + ",".join(PRESET_INFO.keys()) + "]", 995 inrange=lambda x: x in PRESET_INFO.keys() or x is None, 996 show_in_docs=False, 997 show_in_gui=False, 998 ), 999 # 1000 # 1001 # TIME SCALES 1002 "STEPS_PER_SIMULATION": Parameter( 1003 key="STEPS_PER_SIMULATION", 1004 name="", 1005 domain="other", 1006 default=100000, 1007 info="Number of steps for the simulation to execute", 1008 dtype=int, 1009 drange="[1, inf)", 1010 inrange=lambda x: x >= 1, 1011 serverrange=lambda x: x <= 100000, 1012 serverrange_info="[1,100000]", 1013 evalrange=[1, 10000000], 1014 ), 1015 "AGE_LIMIT": Parameter( 1016 key="AGE_LIMIT", 1017 name="", 1018 domain="other", 1019 default=50, 1020 info="Maximum achievable lifespan (in steps)", 1021 info_extended="Maximum evolved lifespan is lower than the technically restricted, maximum achievable lifespan.", 1022 dtype=int, 1023 drange="[1, inf)", 1024 inrange=lambda x: x >= 1, 1025 serverrange=lambda x: x <= 100, 1026 serverrange_info="[1,100]", 1027 evalrange=[15, 100], 1028 ), 1029 "CARRYING_CAPACITY_EGGS": Parameter( 1030 key="CARRYING_CAPACITY_EGGS", 1031 name="", 1032 domain="other", 1033 default=None, 1034 info="Maximum number of eggs that the environment can sustain; None means no limit", 1035 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.", 1036 dtype=int, 1037 drange="{None, [1, inf)}", 1038 inrange=lambda x: x is None or x >= 1, 1039 serverrange=lambda x: x is None or x <= 10000, 1040 serverrange_info="{None, [1,10000]}", 1041 evalrange=[None, 1000000], 1042 previous_keys=["CARRYING_CAPACITY_EGGS"], 1043 ), 1044 "INITIAL_POPULATION_SIZE": Parameter( 1045 key="INITIAL_POPULATION_SIZE", 1046 name="", 1047 domain="other", 1048 default=1000, 1049 info="Number of individuals generated at the beginning of the simulation", 1050 info_extended="", 1051 dtype=int, 1052 drange="[1, inf)", 1053 inrange=lambda x: x >= 1, 1054 serverrange=lambda x: x <= 1000 and x >= 1, 1055 serverrange_info="[1,1000]", 1056 ), 1057 "FRAILTY_MODIFIER": Parameter( 1058 key="FRAILTY_MODIFIER", 1059 name="", 1060 domain="other", 1061 default=0, 1062 info="Age-dependent modifier of mortality", 1063 dtype=float, 1064 drange="[0, inf)", 1065 inrange=lambda x: x >= 0, 1066 evalrange=[0, 0.5, 1, 2], 1067 ), 1068 "MORTALITY_ORDER": Parameter( 1069 key="MORTALITY_ORDER", 1070 name="", 1071 domain="other", 1072 default=["intrinsic", "abiotic", "infection", "predation", "starvation"], 1073 info="Order in which mortality sources are computed", 1074 dtype=list, 1075 drange=None, 1076 inrange=lambda order: all( 1077 source in ["intrinsic", "abiotic", "infection", "predation", "starvation"] for source in order 1078 ), 1079 show_in_gui=False, 1080 ), 1081 # 1082 # 1083 # TECHNICAL 1084 "MUTATION_METHOD": Parameter( 1085 key="MUTATION_METHOD", 1086 name="", 1087 domain="technical", 1088 default="by_bit", 1089 info="Vectorized or non-vectorized method of calculating incidence of new mutations", 1090 info_extended="Mutate by XOR with a randomized bit matrix ('by_bit') or generate random indices to mutate ('by_index')", 1091 dtype=str, 1092 drange="{by_bit, by_index}", 1093 inrange=lambda x: x in ("by_bit", "by_index"), 1094 ), 1095 "RANDOM_SEED": Parameter( 1096 key="RANDOM_SEED", 1097 name="", 1098 domain="technical", 1099 default=None, 1100 info="Number used as seed for pseudorandom number generator", 1101 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", 1102 dtype=int, 1103 drange="{None, (-inf, inf)}", 1104 inrange=lambda x: True, 1105 ), 1106 "PHENOMAP_METHOD": Parameter( 1107 key="PHENOMAP_METHOD", 1108 name="", 1109 domain="technical", 1110 default="by_loop", 1111 info="Non-vectorized, vectorized and blank method of calculating phenotypes from genotypes", 1112 info_extended="Blank method disables pleiotropy.", 1113 dtype=str, 1114 drange="{by_loop, by_dot, by_dummy}", 1115 inrange=lambda x: x in ("by_loop", "by_dot", "by_dummy"), 1116 ), 1117}
def
get_default_parameters():
def
get_species_parameters(SPECIES_PRESET):
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>, '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>, '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>}