phetsims / natural-selection

"Natural Selection" is an educational simulation in HTML5, by PhET Interactive Simulations
GNU General Public License v3.0
3 stars 7 forks source link

mutation model #98

Closed pixelzoom closed 4 years ago

pixelzoom commented 4 years ago

In https://github.com/phetsims/natural-selection/issues/97#issuecomment-637875545, I described how mutation is currently modeled:

When a bunny is mutated, it is made homozygous - both of its alleles are set to the mutant allele. This guarantees that the mutation will be reflected in the bunny's appearance (phenotype). In reality, a mutation is a change in one of the inherited genes, not both. I discussed this with @amanda-phet awhile back, and she verified that making the mutant bunny homozygous is the desired behavior.

So for example, suppose that brown fur is applied as a recessive mutation. The only fur allele in the gene pool would have been white fur, so the bunny will inherit 2 white fur alleles from it parents. Then the mutation occurs. If we mutated only 1 of the inherited alleles, then the mutant bunny would be white, because white fur is dominant and it would still have 1 white fur allele. By mutating both alleles (making the bunny homozygous) whether the mutant allele is dominant or recessive is irrelevant, and the bunny's appearance will correspond to the mutant allele.

And to clarify... This is for when a mutation first occurs. After mutation has occurred, the mutant allele is just another gene in the gene pool, and subsequent matings use the childAlleles approach described above to determine the child's alleles.

I think we should reconsider whether mutants should always be homozygous. When I encountered this implementation in the Java model, it seemed problematic to me. The science is incorrect, and it makes it impossible to learn the difference between a dominant and recessive mutation.

Suppose that I press the Add Mutation button for "brown fur, recessive". With homozygous mutants, the mutant will always have brown fur, and the resulting pedigree will always be this:

screenshot_373

But if the mutation was recessive, why does it always appear immediately in the phenotype? If a mutation were recessive, this is a correct outcome, which our model cannot produce:

screenshot_374

The mutant in the above pedigree has genotype 'Ff', and because 'brown fur' is recessive ('f') the bunny is white. Brown fur will eventually appear in the population, but not until an individual is born whose genotype is 'ff' (homozygous recessive), as in this example:

screenshot_375

There are also issues when choosing "brown fur, dominant". It's appropriate that the mutant bunny is brown, because brown fur is dominant. But looking at the Pedigree graph, why is the resulting bunny 'FF' (homozygous dominant) and not 'Ff' or 'fF' (heterozygous)? How/why did a mutation affect both inherited alleles?

E.g., why this:

screenshot_376

... and not this?

screenshot_377

So I want to verify that we are deliberately (a) choosing incorrect science, and (b) forgoing the above scenarios, which make the important point that a mutation does not affect both inherited alleles, and (if recessive) will not immediately result in a change in appearance. A recessive mutation will not appear in the population until generations after the mutation occurred.

@amanda-phet @kathy-phet @ariel-phet thoughts?

pixelzoom commented 4 years ago

In the above commit, I added a query parameter that selects between 2 mutation models. You can experiment with this query parameter in master, or in 1.0.0-dev.48.

Details:

?homozygousMutants=true (default): When a mutation is applied, the mutation affects both of its inherited alleles, and the resulting bunny is homozygous. This is the model used in the Java version, and all prior HTML5 dev versions. Examples:

?homozygousMutants=false: When a mutation is applied, the mutation randomly affects one of its inherited alleles, and the resulting bunny is heterozygous. Examples:

amanda-phet commented 4 years ago

Augus 1, 2019 we had a discussion about this model simplification. While Megan agreed that a newly-mutated rabbit would in reality be heterozygous, we all agreed that the model simplification was a reasonable one so we don't have to wait as many generations for the gene to be expressed. It seems like this is resurfacing because we are being explicit about genotypes in the Pedigree, which could cause some confusion, so I'm fine with us revisiting this decision.

I think if we make the mutation heterozygous, it will take too many generations for the gene to be expressed, and the bunnies will probably take over the world (or die) before we have a chance to see natural selection take place. However I will play with the query parameters you provided (likely in conjunction with the PercentToKill parameters, so we have reasonable rates of bunnies dying).

pixelzoom commented 4 years ago

Sorry, I wasn't involved in the 8/1/2019 discussion. Yes, I'm raising the issue because it's explicitly shown in the genotype abbreviation that appears in the Pedigree graph. And I also realized (by using at the Pedigree graph) that immediately expressing a recessive mutation is pedantically incorrect.

Though still incorrect, note that it's also possible to randomly create some mutants as homozygous and some as heterozygous, if that accomplishes the goals. And I could easily modify the query parameter to something like mutate= with values 'homozygous', 'heterozygous', and 'random', if that would help with investigation.

kathy-phet commented 4 years ago

I think having the query parameters to change the behavior is nice and would favor having those - for teachers' flexibility.

pixelzoom commented 4 years ago

Hmmm... I hadn't considered making the query parameter public-facing. It's easy to make it public. But it's going to make "tuning" the model considerably more difficult, if there is specific behavior that you want to be easy to achieve (e.g. bunnies don't die too soon, bunnies don't take over the world too soon, easy to achieve a stable population). So with this flexibility will come great cost.

amanda-phet commented 4 years ago

OK, so here is what I'm noticing. I am running a version with homozygousMutants=false and a version without. They both have the same parameters for percentages to kill.

Model 1: https://phet-dev.colorado.edu/html/natural-selection/1.0.0-dev.48/phet/natural-selection_en_phet.html?secondsPerGeneration=2&homozygousMutants=false&wolvesPercentToKill=.35,.4&wolvesEnvironmentMultiplier=2.3&toughFoodPercentToKill=.4,.7&shortTeethMultiplier=1.4

Model 2: https://phet-dev.colorado.edu/html/natural-selection/1.0.0-dev.48/phet/natural-selection_en_phet.html?secondsPerGeneration=2&wolvesPercentToKill=.35,.4&wolvesEnvironmentMultiplier=2.3&toughFoodPercentToKill=.4,.7&shortTeethMultiplier=1.4

Experiment 1:

Add a dominant fur mutation immediately, add wolves at the start of generation 3.

Outcomes:

Model 1 (homozygous=false): Brown bunnies take over at the start of generation 12. Good.

image

Model 2 (homozygous=true): Brown bunnies take over at the start of generation 10. Good.

image

Conclusion:

For the dominant fur mutation, a heterozygous mutation accomplishes the learning goal of seeing the selection for white bunnies, and seeing the brown bunnies take over the world.

Experiment 2:

Add a recessive fur mutation immediately, add wolves at the start of generation 5.

Outcomes:

Model 1 (homozygous=false): Brown fur was not expressed until generation 4, and was only 1-2 bunnies (hard to tell in the proportions graph and I can't remember exactly). The bunnies all died during generation 10. Bad.

image

Model 2 (homozygous=true): Brown fur was expressed in generation 1 (1/6 bunnies). Brown bunnies are present in 100% of the population in generation 10. Brown bunnies take over the world at the start of generation 14. Good.

image

Conclusion:

For the recessive fur mutation, a heterozygous mutation does not accomplish the learning goal of seeing bunnies with an advantageous heritable trait increase in proportion to organisms lacking this this trait. It is very powerful for student to see that even a recessive trait can become "dominant" if it allows for better survival.


My thoughts: I'd like this to work so that we don't need the model simplification (ie. homozygous alleles), but it takes too many generations for the gene to even present itself, and the white bunnies will take over before we even have a chance for the brown bunnies to mate enough. So perhaps that means we need to kill fewer bunnies and use a higher multiplier, and I can experiment with that, but I'm not sure it will happen.

pixelzoom commented 4 years ago

Here's another idea, thinking out loud.

amanda-phet commented 4 years ago

Here's another idea, thinking out loud.

  • For all mutations, make the original mutant(s) heterozygous.
  • For recessive mutations, change the mating model to guarantee that a recessive mutation appears in the phenotype as soon as there are 2 individuals with the mutant allele who can be mated

I would love to consider this kind of direction!

pixelzoom commented 4 years ago

There's another internal parameter related to mutation that we might consider adjusting. I've exposed it as mutationPercentage query parameter, default 1/7, valid values [0,1/3].

mutationPercentage determines what percentage of newborn bunnies receive the mutant allele. The algorithm is:

numberToMutate = Math.max( 1, Math.floor( mutationPercentage * numberToBeBorn ) )

The Java and HTML5 versions both use mutationPercentage = 1/7. The value range is [0,1/3] in the HMTL5 sim, because the 3 mutations can be applied simultaneously, and no bunny can get more than 1 mutation, so a mutation can be applied to at most 1/3 of the population.

You can experiment with mutationPercentage in master or in 1.0.0-dev.49.

amanda-phet commented 4 years ago

@pixelzoom and I discussed this 6/8/20 and decided to try changing the model so that as soon as there are at least 2 bunnies with the recessive mutation they will mate with each other. This means that within 2 generations, we will see the trait expressed.

pixelzoom commented 4 years ago

To add to what @amanda-phet said in https://github.com/phetsims/natural-selection/issues/98#issuecomment-641468178... We decided to try what she described in addition to making mutants heterozygous instead of homozygous.

ariel-phet commented 4 years ago

I think @amanda-phet has done a nice job of focusing on the learning goal (getting users to see the change occur easily).

I would have a few pieces of input:

  1. The Java sim is certainly quite popular and uses this homozygous mutation model. So if it is difficult to find a satisfactory tuning that accomplishes the goals sticking with this model (despite certain issues) might be reasonable.

  2. If a satisfactory tuning can be found for heterozygous mutations we might want to consider some A/B testing interviews. Will students make the connections as quickly if things take a couple of generations? The generations do happen quickly now so maybe this would be OK

  3. If (despite the complexity) we have a way for both models to work well and are considering public facing query parameters, I would actually advocate for this to be an explicit feature of the sim. I would think the sim would start with the homozygous model and then the user could switch to the more realistic heterozygous model. So you first get the idea, see the quick changes, etc. But maybe have some sort of more hidden "advanced" control (perhaps popping up a dialog) that allows you to change the model. But perhaps with the proper tuning and proofing out through interviews only a heterozygous model would be needed.

  4. And a very hair-brained thought -- if we really liked the heterozygous model but it wasn't quite getting the idea across quickly enough could we have a visual indicator of which bunnies had mutated (something like a halo, a dotted line around them or something). Some cue that something HAS changed, but not show that the phenotype has yet changed. Not well thought out, but just brainstorming.

pixelzoom commented 4 years ago

@ariel-phet said:

  1. The Java sim is certainly quite popular and uses this homozygous mutation model. So if it is difficult to find a satisfactory tuning that accomplishes the goals sticking with this model (despite certain issues) might be reasonable.

The Java version does not show the geneotype abbreviation in the Pedigree graph, so the simplification does not result in as obvious a problem there. The HTML5 version turns the simplification into an obvious pedagogical problem, because it shows the genotype.

  1. If a satisfactory tuning can be found for heterozygous mutations we might want to consider some A/B testing interviews. Will students make the connections as quickly if things take a couple of generations? The generations do happen quickly now so maybe this would be OK

The important difference between dominant vs recessive mutations is that dominant expresses immediately, recessive does not. And that changes the mortality rate due to environmental factors. Making mutations homozygous eliminates that difference. So I think the primary goal should be to make sure that students have the opportunity to see that difference, not that they immediately see a mutant. If they don't make the connection immediately, that's an opportunity for discussion and learning.

  1. If (despite the complexity) we have a way for both models to work well and are considering public facing query parameters, I would actually advocate for this to be an explicit feature of the sim. ...

I'm really opposed to this. Tuning the model (which is already difficult) to behave similarly for both mutation models will be a nightmare. And more importantly, homozygous mutants is incorrect science. Megan called this out in 8/1/19 meeting notes in the design doc -- perhaps we should add her to the discussion?

  1. And a very hair-brained thought -- if we really liked the heterozygous model but it wasn't quite getting the idea across quickly enough could we have a visual indicator of which bunnies had mutated (something like a halo, a dotted line around them or something). Some cue that something HAS changed, but not show that the phenotype has yet changed. Not well thought out, but just brainstorming.

I don't think this is hair-brained (pun intended?) at all. It would be relatively easy to add a transparent yellow halo (or even the mutation icon?) to the "original mutants". And it would provide a form of "immediate feedback".

amanda-phet commented 4 years ago

Thanks @pixelzoom , I was going to reply with many of the same thoughts!

I would like to brainstorm if it's appealing to add a visual indicator on the original mutant bunnies. When the population is large enough, it can be tricky to spot those mutants, so there are plenty of reasons why this might be nice. A downside could be more visual clutter in the viewing window.

pixelzoom commented 4 years ago

I made a couple of changes in the above commits:

(1) Mutants are heterozygous by default. For homozygous mutants, run with ?homozygousMutants (a flag, not a boolean).

(2) The "original mutants" are labeled with the mutation icon in the environment view, see example below. I like this direction - it gives the desired "immediate feedback" that identifies mutants, without requiring the mutation to appear in the phenotype. It also makes it easier to identify and select an original mutant after the mutation has been propagated.

Next I'll work on making recessive mutation appear in the phenotype as soon as possible.

screenshot_387
pixelzoom commented 4 years ago

Labeling with high priority because decisions here affect how we tune the model in #86.

amanda-phet commented 4 years ago

I like the mutation icon, but wouldn't want it to persist for too long... I guess it would only be there as long as that bunny is alive (could be many bunnies if the population is large).

I look forward to seeing how this all works once we can get those bunnies with recessive traits mating faster.

kathy-phet commented 4 years ago

I look forward to seeing how this all works once we can get those bunnies with recessive traits mating faster.

We can discuss this tomorrow. But if bunnies with recessive traits mate disproportionately faster, that is going to mess up the genetics inheritance probability and the statistics.

pixelzoom commented 4 years ago

@kathy-phet I'm not sure what you mean by "mate disproportionately faster" - all bunnies mate at the same rate, and the pairing is currently random. What we were considering was to prefer pairing bunnies that have a recessive mutation with other bunnies that have the same recessive mutation, so that the recessive gene is expressed more quickly than if it were random. That seems a lot less harmful than homogenous mutants, which totally throws the statistics off, and results in no difference between dominant and recessive mutations.

kathy-phet commented 4 years ago

Can you make that a query parameter initially so that we can look at the statistics of the distributions? It seems to me that something that is not "random" would cause a change in the expected outcome when you do controlled experiments by using the pre-set populations. @amanda-phet - Can we see if Megan is available to join a meeting with us soon?

amanda-phet commented 4 years ago

6/11/20 design meeting: we would like to move forward with this model simplification (mutations will be heterozygous, and original mutant bunnies will mate with another bunny with the recessive gene as soon as possible).

We'd like to follow up with Megan about this simplification, since she had originally approved the homozygous mutation simplification. Also check with her about the model applying the mutation to 1/7 of the population, as well as adding a mutation indication on mutant bunnies.

pixelzoom commented 4 years ago

Also from 6/11/20 design meeting:

@amanda-phet doesn't like the mutation icons in the environment view. Some things to try: a different size, a different location on the bunnies (compatible with the red 'X'), a different color, a different icon, something other than an icon, ...

@kathy-phet had concerns about introducing a mutation into multiple individuals simultaneously. Wondering if that happens in reality, and if it is problematic for the sim. Would like to discuss with Megan.

pixelzoom commented 4 years ago

In 6/11/2020 design meeting, I mentioned that mating 2 heterozygous recessive mutants could result in more than 1 offspring that has the mutation in the phenotype. The team corrected me, and said that only 1 offspring would have the mutation in the phenotype. Thinking about this more, I believe that I was correct -- or at least correct wrt our current inheritance model.

See https://github.com/phetsims/natural-selection/issues/97#issuecomment-643624507 for a table showing the possible outcomes of the inheritance model.

When mating 2 heterozygous parents (e.g. 'Ff' ) there are 2 possible outcomes for offspring: FF, Ff, fF, ff or FF, FF, ff, ff. In the latter outcome, there are 2 offspring that have the mutation in their phenotype. In both outcomes, parents donate their alleles with equal frequency (the requirement of Mendelian inheritance). But which outcome occurs depends on the random order in which the alleles are donated.

This is another aspect of the model to discuss with Megan.

amanda-phet commented 4 years ago

6/15/20 meeting with @amanda-phet @kathy-phet @ariel-phet @pixelzoom Megan:

We are interested in pursuing heterozygous mutations, and in the recessive case, breeding the mutant with another bunny with the recessive gene (a child) as soon as possible.

For immediate feedback, we are still interested in "labeling" the bunnies in the environment to show feedback that mutants exist in the population, but not in a way that is so distracting.

Leaning toward removing badges from the environment, but still need to tune the model to be sure recessive traits can take over.

amanda-phet commented 4 years ago

More ideas for tuning the model:

pixelzoom commented 4 years ago

6/15/20 design meeting, more notes:

We ultimately decided to remove the mutation icons from bunnies in the environment.

We decided that we won't do anything special related to recessive mutations that appear in an initial population that is set via query parameters. There are no "original mutants" in that population.

pixelzoom commented 4 years ago

In the above commits, the mutation icon is no longer shown for bunnies in the environment. They can be turned on using ?labelMutants. That's not intended to be public -- it makes it easier for me (during development) to verify that mutations were correctly applied.

pixelzoom commented 4 years ago

@amanda-phet All of the requested changes have been made. You can review in master or 1.0.0-dev.53.

Summary:

amanda-phet commented 4 years ago

I'm still having a hard time keeping the brown bunnies alive when the mutation is recessive. I'm trying to tweak wolvesPercentToKill and wolvesEnvironmentMultiplier as well. The best luck I've had is waiting to add the mutation so that more than one bunny gets it, but they still all die (it just takes longer).

I'd like to consider not just the mutant bunny mating "eagerly" but any of the bunnies with the recessive gene. Happy to discuss this on Thursday, but if you have any other ideas we could try let me know.

amanda-phet commented 4 years ago

6/18/20 More ideas:

@pixelzoom will try all of these suggestions

pixelzoom commented 4 years ago

A few notes....

  • [x] Selection factors don't apply to recessive bunnies until they have mated eagerly

This one was relatively easy. Selection factors are ignored until a homozygous-recessive mutant has mated eagerly.

  • [x] A mutant bunny could have a 5th homozygote bunny

This one was complicated. One additional offspring when a recessive mutant mates eagerly. The gene pair for the mutation was easy, since it's always homozygous recessive. The other 2 gene pairs was more complicated. For those other 2 gene pairs, a random cell from the Punnett square containing a dominant allele will be preferred (since dominant alleles would be preferred in reality). If no such cell exists, then any random cell is chosen. Note that this extra offspring will skew the counts for all alleles, not just the mutation.

  • [ ] Have the selection factor ignore preferred phenotype if fewer than N exist

I'm not clear on what this means, so I need to discuss with @amanda-phet.

kathy-phet commented 4 years ago

Chris,

The last one means that if there are fewer than say 3 brown bunnies, and the wolves come out to eat and it’s on brown ground, there is 0% chance they will eat brown bunnies. So it basically overwrites the general rule if there are few of the brown bunnies. Or whichever phenotype is preferred against the current selection factors for that generation.

K

Sent from my iPhone

On Jul 6, 2020, at 6:13 PM, Chris Malley notifications@github.com wrote:

 A few notes....

Selection factors don't apply to recessive bunnies until they have mated eagerly This one was relatively easy. Selection factors are ignored until a homozygous-recessive mutant has mated eagerly.

A mutant bunny could have a 5th homozygote bunny This one was complicated. The genotype for the recessive mutation was easy, it always homozygous recessive. The genotype for the other 2 genes was more complicated. For those other 2 genes, a random cell from the Punnett square containing a dominant allele will be preferred (since dominant alleles would be preferred in reality). If no such cell exists, then any random cell is is chosen. Note that this extra offspring will skew the distribution for all alleles, not just the mutation.

Have the selection factor ignore preferred phenotype if fewer than N exist I'm not clear on what this means, so I need to discuss with @amanda-phet.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

pixelzoom commented 4 years ago

@kathy-phet thanks for clarifying. So that last one is independent of whether the phenotype is the result of a dominant or recessive mutation. That's what had me confused.

pixelzoom commented 4 years ago
  • [x] Have the selection factor ignore preferred phenotype if fewer than N exist

This requirement is now implemented in master, like this:

pixelzoom commented 4 years ago

All of the requested changes listed in https://github.com/phetsims/natural-selection/issues/98#issuecomment-646275437 are implemented. Test drive in master or 1.0.0-dev.63. I'll review this with @amanda-phet to make sure that what I implemented is what she was expecting.

kathy-phet commented 4 years ago

Hi Chris,

Shouldn't this one just also be "if" tough food selection factor is "on"? If the population of bunnies with long teeth is <= ?minBunniesForFood (default 5), then no bunnies with long teeth will starve to death.

Wolves could still eat long teeth bunnies that is.

I'm curious how this will all behave when Amanda starts working on tuning it.

pixelzoom commented 4 years ago

Shouldn't this one just also be "if" tough food selection factor is "on"? If the population of bunnies with long teeth is <= ?minBunniesForFood (default 5), then no bunnies with long teeth will starve to death.

Correct. I thought that goes without saying, because bunnies only starve if a food-selection factor is turned on.

Wolves could still eat long teeth bunnies that is.

Correct. Environmental factors are independently applied. Wolves select for fur color, and ignore other traits. Food (starvation) selects for teeth, and ignores other traits.

pixelzoom commented 4 years ago

7/7/2020 @amanda-phet and I reviewed this via Zoom, and it's looking good. She'll experiment with the new query parameters (minBunniesForFood, minBunniesForWolves) and get back to me with change requests.

amanda-phet commented 4 years ago

I followed the same procedure as in https://github.com/phetsims/natural-selection/issues/98#issuecomment-639694444 and for experiment 2, with a recessive mutation, brown bunnies take over the world at the start of generation 16. This is using the same percentages (wolvesPercentToKill=.35,.4&wolvesEnvironmentMultiplier=2.3).

If we want the bunnies to take over at generation 15 (just like with the dominant mutation) then I would use minBunniesForWolves=6 but I think it's good at 5, myself.

pixelzoom commented 4 years ago

7/7/2020 design meeting @amanda-phet @kathy-phet @ariel-phet

minBunniesForWolves=6 makes bunnies take over earlier. But minBunniesForWolves=5 feels better, so leave as is.

@amanda-phet still needs to confirm the value for minBunniesForFood.

amanda-phet commented 4 years ago

See #86

minBunniesForWolves=5 and minBunniesForFood=4 seem to work well.

pixelzoom commented 4 years ago

minBunniesForWolves=5 and minBunniesForFood=4 in the above commit. I'm going to close this issue, and we'll handle any further tuning of those query parameters in #86.

pixelzoom commented 4 years ago

Reopening. There's one bit of cleanup left to do here.

@amanda-phet What shall we do about the homozygousMutants query parameter?

In https://github.com/phetsims/natural-selection/issues/98#issuecomment-641772442, @ariel-phet proposed making this feature publicly visible, and perhaps even the default:

If (despite the complexity) we have a way for both models to work well and are considering public facing query parameters, I would actually advocate for this to be an explicit feature of the sim. I would think the sim would start with the homozygous model and then the user could switch to the more realistic heterozygous model. So you first get the idea, see the quick changes, etc. But maybe have some sort of more hidden "advanced" control (perhaps popping up a dialog) that allows you to change the model. But perhaps with the proper tuning and proofing out through interviews only a heterozygous model would be needed.

My preference would be to delete this query parameter (and the associated code) altogether. The science is incorrect, heterozygous mutants appear to be working nicely, and we don't need the added complexity of trying to tune the model to work for homozygous mutants.

amanda-phet commented 4 years ago

My preference would be to delete this query parameter (and the associated code) altogether. The science is incorrect, heterozygous mutants appear to be working nicely, and we don't need the added complexity of trying to tune the model to work for homozygous mutants.

I 100% agree. The model is working really great right now, and I think maintaining that code is too much of a headache. I'm very happy with the mutation model!

pixelzoom commented 4 years ago

Reopening and assigning to me to remove homozygousMutants. I'll defer this until tomorrow. @ariel-phet if you have strong feelings otherwise, let me know asap.

pixelzoom commented 4 years ago

homozygousMutants has been removed. Closing.

pixelzoom commented 4 years ago

@amanda-phet FYI, related to an overhaul of Food.js...

As I mentioned over in https://github.com/phetsims/natural-selection/issues/152#issuecomment-670234799... minBunniesForWolves=5 and minBunniesForFood=4 are both "minimum population" constraints. This sim has several of these constraints, and it's confusing/error-prone that some of them (like these 2) are specified as <=, while others are specified as <. So I standardized on <, and these constraints are now < 6 and < 5 respectively.

I've also eliminated the minBunniesForWolves and minBunniesForFood query parameters, and moved them to internal constants. They are now WolfCollection.MIN_BUNNIES and Food.TOUGH_FOOD_MIN_LONG_TEETH respectively.