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