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():
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>, '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>}