Has this idea of mine, evolution related, ever wiped out a species?

Ok now* try it so that a normal female has a 1 in X (and run for several values of X) chance of switching to a female who can detect a mutated male and refuses to mate with them. Her female offspring should also have this mutation (except maybe for a 1 in X chance that it changes back).

I wonder if this will produce a stable solution for any (all?) values of X?

*If you want, this isn’t a direct order :smiley:

This reminds me of

Maybe we could use this technique to eradicate mosquitos! (oboy)

PS: totally not serious about eradicating mosquitos. Well, maybe a little.

Try this variation:
Multiply the litter size by 2, but keep the carrying capacity at 10000. That is, before each mating session, if the population >10000, remove individuals at random until the population is down to 10000. (Or reduce the size of the groups in proportion to get the total down to 10000.)

And try even larger litter sizes.

I think it would be interesting if we had a certain proportion of females who had a ‘recessive detector gene’ at the start, and a female only becomes a detector if she has two of the genes - which means that a female could never pass that gene on to her daughters unless her mate carried the detector gene too. (We could put it on the X gene.)

At the moment, the code is giving each female 16 offspring, and then dividing the population of each group by 8 after each generation, to simulate 2 children from each litter making it to adulthood.

When I keep the litter size at 16, don’t divide by 8, but put in a hard cap of 10,000 individuals, and run it with mutant males producing only male offspring, I see the following:



Generation 1: 4999 females 4999 normal males 2 mutant males 10000 total
Generation 2: 5013 females 4983 normal males 3 mutant males 9999 total
Generation 3: 4969 females 5023 normal males 6 mutant males 9998 total
Generation 4: 5004 females 4983 normal males 12 mutant males 9999 total
Generation 5: 4981 females 4994 normal males 24 mutant males 9999 total
Generation 6: 4939 females 5009 normal males 51 mutant males 9999 total
Generation 7: 4936 females 4969 normal males 94 mutant males 9999 total
Generation 8: 4926 females 4888 normal males 184 mutant males 9998 total
Generation 9: 4812 females 4828 normal males 358 mutant males 9998 total
Generation 10: 4643 females 4669 normal males 686 mutant males 9998 total
Generation 11: 4337 females 4384 normal males 1277 mutant males 9998 total
Generation 12: 3874 females 3871 normal males 2253 mutant males 9998 total
Generation 13: 3164 females 3146 normal males 3689 mutant males 9999 total
Generation 14: 2319 females 2311 normal males 5368 mutant males 9998 total
Generation 15: 1525 females 1490 normal males 6984 mutant males 9999 total
Generation 16: 882 females 879 normal males 8238 mutant males 9999 total
Generation 17: 476 females 508 normal males 9015 mutant males 9999 total
Generation 18: 204 females 184 normal males 7228 mutant males 7616 total
Generation 19: 42 females 41 normal males 3181 mutant males 3264 total
Generation 20: 2 females 2 normal males 668 mutant males 672 total
Generation 21: 0 females 0 normal males 32 mutant males 32 total
Population extinct after 21 generations

Still goes extinct, although it takes longer.

When I make the mutants produce male offspring 90% of the time, I see the following results:



Generation 1: 4999 females 4999 normal males 2 mutant males 10000 total
Generation 2: 4994 females 5002 normal males 3 mutant males 9999 total
Generation 3: 4998 females 4996 normal males 4 mutant males 9998 total
Generation 4: 5010 females 4980 normal males 8 mutant males 9998 total
Generation 5: 4990 females 4994 normal males 15 mutant males 9999 total
Generation 6: 5002 females 4972 normal males 25 mutant males 9999 total
Generation 7: 5024 females 4931 normal males 43 mutant males 9998 total
Generation 8: 4954 females 4969 normal males 76 mutant males 9999 total
Generation 9: 4919 females 4943 normal males 137 mutant males 9999 total
Generation 10: 4882 females 4872 normal males 245 mutant males 9999 total
Generation 11: 4800 females 4766 normal males 432 mutant males 9998 total
Generation 12: 4651 females 4597 normal males 750 mutant males 9998 total
Generation 13: 4429 females 4307 normal males 1262 mutant males 9998 total
Generation 14: 4075 females 3867 normal males 2056 mutant males 9998 total
Generation 15: 3636 females 3264 normal males 3098 mutant males 9998 total
Generation 16: 3069 females 2573 normal males 4356 mutant males 9998 total
Generation 17: 2507 females 1860 normal males 5632 mutant males 9999 total
Generation 18: 1990 females 1253 normal males 6755 mutant males 9998 total
Generation 19: 1614 females 801 normal males 7583 mutant males 9998 total
Generation 20: 1410 females 472 normal males 8116 mutant males 9998 total
Generation 21: 1232 females 282 normal males 8484 mutant males 9998 total
Generation 22: 1104 females 168 normal males 8726 mutant males 9998 total
Generation 23: 1064 females 88 normal males 8847 mutant males 9999 total
Generation 24: 1073 females 48 normal males 8878 mutant males 9999 total
Generation 25: 1031 females 22 normal males 8945 mutant males 9998 total
Generation 26: 995 females 15 normal males 8988 mutant males 9998 total
Generation 27: 1049 females 8 normal males 8941 mutant males 9998 total
Generation 28: 985 females 6 normal males 9007 mutant males 9998 total
Generation 29: 1012 females 1 normal males 8986 mutant males 9999 total
Generation 30: 1020 females 1 normal males 8977 mutant males 9998 total
Generation 31: 1033 females 1 normal males 8965 mutant males 9999 total
Generation 32: 1010 females 0 normal males 8989 mutant males 9999 total
Generation 33: 996 females 0 normal males 9003 mutant males 9999 total
Generation 34: 1002 females 0 normal males 8997 mutant males 9999 total
Generation 35: 989 females 0 normal males 9010 mutant males 9999 total
Generation 36: 1016 females 0 normal males 8983 mutant males 9999 total
Generation 37: 1010 females 0 normal males 8989 mutant males 9999 total
Generation 38: 975 females 0 normal males 9024 mutant males 9999 total
Generation 39: 1012 females 0 normal males 8987 mutant males 9999 total
Generation 40: 996 females 0 normal males 9003 mutant males 9999 total


..and the population never goes extinct.

I suppose the next step would be to code in a range of males with different ranges of male-to-female offspring, and code which allows some of them to randomly mutate to a different ratio in each generation. I suspect that under those conditions we would see an equilibrium develop.

Oh, and here’s the script for anyone who wants to check my work:



import random

pop = (4999,4999,2) # female, normal male, mutant male

littersize = 16

hardlimit = sum(pop) * 1.0

generation = 1
totalpop = sum(pop)

mutantchanceforfemale = 10

while totalpop > 0:

    print "Generation "+str(generation)+":",
    print str(pop[0])+" females",
    print str(pop[1])+" normal males",
    print str(pop[2])+" mutant males",
    print str(sum(pop))+" total"

    nextpop = (0,0,0)

    if (pop[1]+pop[2]) > 0: #if there are any males
        for i in range(pop[0]): #for each female
            for k in range(littersize): #assume each female has (littersize) children
                j = random.randint(0,pop[1]+pop[2]-1) #pick a random male
                if j < pop[1]: #normal male
                    if random.randint(0,1) == 0:
                        #50% chance of female child
                        nextpop = (nextpop[0]+1, 
                                   nextpop[1],
                                   nextpop[2])
                    else:
                        #50% chance of male child
                        nextpop = (nextpop[0], 
                                   nextpop[1]+1,
                                   nextpop[2])
                else:
                    #mutant male
                    if random.randint(0,99) < mutantchanceforfemale:
                        #chance of female child
                        nextpop = (nextpop[0]+1, 
                                   nextpop[1],
                                   nextpop[2])
                    else:
                        #chance of (mutant) male child
                        nextpop = (nextpop[0], 
                                   nextpop[1],
                                   nextpop[2]+1)

    pop = nextpop

    #cull population, assume 2 survivors on average from each litter

    #cull = (littersize * 0.5)  #uncomment for that mode

    #cull population to hard limit defined by initial population size
    
    cull = max(1.0,sum(pop) / hardlimit) #uncomment for that mode
    
    pop = (int(pop[0] / cull),int(pop[1] / cull),int(pop[2] / cull))
    
    totalpop = sum(pop)
    generation = generation + 1

print "Population extinct after "+str(generation-1)+" generations"



What is the mechanism by which the mutation helps you have more offspring?

Does it make the mutant males more attractive to females? Does it make a single act of sex more likely to result in pregnancy? Does it increase litter sizes? Does it make its carriers better able to survive into adulthood? Does it give them an enhanced ability to raise their children into adulthood?

For each of these answers, there are different responses possible in terms of how the females could evolve a counter-strategy to increase their chance of having daughters. I can’t think of many plausible mechanisms for which no such counter-strategy would be possible.

AndrewL: Very nice clean script! One nitpick: you assume that every kid in a litter can have a different father. Maybe it’s more realistic to take the selection of the father out of the inner for-loop?

When I do that, the script becomes a bit less predictable: sometimes the mutants get killed off in the first few generations. But if they get lucky during the first few rounds, it doesn’t make much difference anymore.

OK, so I have a couple things to add, as I’ve thought about it.

First, most importantly, is that, in the situation where there’s a widespread sons-only gene, it’s not just a female counter-gene that would be advantageous. A gene that, when carried by a male, counteracts the sons-only gene, would also be hugely advantageous and spread, as long as it gets passed down independently of the sons-only gene (assume it’s on a non-sex chromosome if you want a more physical description). So there are lots of different possibilities for countering the sons-only gene, and I think any of them would spread quickly.

One way to think of it is that, as long as genes get passed down independently, the sons-only male contributes less of his other genes (aside from the sons-only and male gene) to the 2nd and future generations than a normal male. So, in some sense, there’s a conflict between the sons-only and male genes, and the rest of the genes in an individual. Since there are a lot more of the other genes, they’re probably going to end up winning.

Anyway, I think the anti-sons only gene might actually be interesting to simulate. Let each individual have two genes (with two alleles each). The sex gene can be ‘f’ (recessive for female), Mn (normal male) or Ms (sons-only), so a ff individual is female, a fMn is a normal male, and fMs is a sons-only male (until the second gene comes into play, that is) Note that there can’t be any MM individuals. The other gene can be ‘o’ for normal, and ‘A’ for anti-sons-only gene, with A dominant. It doesn’t do anything in a female, but an AA or Ao male overrides the Ms to make the male normal daughters and sons. We’ll also say that the genes sort independently, so a Ao fMs (male, with both the sons-only and one copy of the anti-sons only genes) has an equal chance of contributing A f, A Ms, o f, or o Ms to his offspring. (though an oo fMs would only contribute an o Ms ever). You’d need to track the numbers of each of :
oo ff, Ao ff , AA ff, oo fMn, oA fMn, AA fMn, oo fMs, Ao fMs, and AA fMs.
The population would start all oo ff and oo fMn, with a small number of oo fMs. The Ms will gradually spread and the number of males increase. At some point, turn one of the oo fMn to Ao fMn, and see how fast the A gene spreads, and how quickly the male/female balance returns.

You made a great point: if it increases “fitness” then it might be somehow detectable.

But I don’t think a fitness increase is necessary in the first place. The python script doesn’t assume any fitness benefit.

I think that’s less realistic, if we replace “litter” with “lifetime offspring”. Most animals, even those whom scientists thought mated for life and didn’t cheat, play around. And of those (like fish) that spawn huge numbers with one mate at a time, usually less than one survives to sexual maturity.

I wasn’t perfectly clear. It makes the mutuant gene have more offspring (in gene form) than a usual gene on the Y chromosone, because all the offspring will have copies of that gene, rather than just half as would normally be the case (the other half being female and thus having no Y chromosone)

But the lucky daughters won’t pass on your Y-chromosome, so while this improves the likelihood of your other genes staying in the gene pool it doesn’t increase the ratios of your Y chromosome, so it won’t help to crowd out the predatory Y’s.

Right, having the son-only gene increases the Y chromosome descendants, but decreases the descendants of any other chromosome. So one way to look at it is that there’s a huge incentive for the other genes to fight back and turn off the Y chromosomes son-only gene. Obviously, the genes won’t consciously conspire together, but any mutation in any of the non-Y chromosomes that fights the son-only gene will spread very quickly throughout the population.
So, bottom line for the OP is that yes, this could happen, but the more likely result is that some counter-mutation pops up and cancels out the son-only gene.