Mendel was a physicist who made a pea garden because his abbot told him to. He found consistent ratios. He did back-cross experiments. He realised that important patterns can only be explained by one underlying model. The model he built, very elegantly, out of flower-colour ratios in pea plants, figures out meiosis: you start with two copies of each gene, end with one in each gamete, and there is a randomization step between them.
He had no idea what a nucleus was. He didn't know what mitosis was, or meiosis. He'd never encountered the word chromosome. He didn't know there was a molecule in each cell that drove inheritance. When you learn his rules now, you smuggle in everything you know about cells and chromosomes, which can actively mislead you.
The spot marked on the long chromosome is not dominant, and it is not recessive. They are just big A and little a. Everyone wants to make everything dominant and recessive. A lot of the time there is no dominant and there is no recessive. They are just different.
# one cell: two long chromosomes, two short. 1 = big letter, 0 = little.long <- rbind(c(1,1,1,1), c(0,0,0,0))short <- rbind(c(1,1,1,1), c(0,0,0,0))# replication: every chromosome becomes two identical chromatidsdup <- function(m) m[c(1,1,2,2), ]# the randomization step: which chromatid lands in which gametemeiosis <- function() { L <- dup(long)[sample(4), ]; S <- dup(short)[sample(4), ] lapply(1:4, function(i) list(long = L[i, ], short = S[i, ]))}# one gamete at random, five hundred timesg <- replicate(500, meiosis()[[sample(4, 1)]]$long[1])cumsum(g) / seq_along(g) # running share carrying big A# two gametes fuse. 2 = AA, 1 = Aa, 0 = aaembryo <- function() meiosis()[[sample(4,1)]]$long[1] + meiosis()[[sample(4,1)]]$long[1]table(replicate(200, embryo()))
Do your cells know what a gene is? No. As nice as it is to split things off into alleles and loci, what actually matters is the physical reality of the DNA strand.
Two dictionaries, different versions, same words. The words are the spots. The slightly different definitions are the alleles.
# same cell, every spot read out now. 1 = big letter, 0 = little.long <- rbind(c(1,1,1,1), c(0,0,0,0)) # ABCD / abcdshort <- rbind(c(1,1,1,1), c(0,0,0,0)) # EFGH / efghdup <- function(m) m[c(1,1,2,2), ]meiosis <- function() { L <- dup(long)[sample(4), ]; S <- dup(short)[sample(4), ] lapply(1:4, function(i) list(long = L[i, ], short = S[i, ]))}# every long-chromosome version that turns up in 500 gametesv <- replicate(500, paste(meiosis()[[sample(4,1)]]$long, collapse = ""))table(v)gam <- function() meiosis()[[sample(4,1)]]$longe <- replicate(200, gam()[1] + gam()[1])table(e) # 2 = AA, 1 = Aa, 0 = aa
Recombination is taking a dictionary, choosing a page at random, and ripping it. Then taking a different dictionary, ripping out the same page, and gluing the two together. The closer two spots are, the more likely they stay on the same fragment after a single rip.
It costs you. You are scrambling your genome with somebody else's. Your kid is not as closely related to you as they would be if you reproduced asexually. In the trade-off between inherit and invent, you are reducing the inherit for your own kids.
long <- rbind(c(1,1,1,1), c(0,0,0,0))short <- rbind(c(1,1,1,1), c(0,0,0,0))dup <- function(m) m[c(1,1,2,2), ]# the slider, and the gaps you dropped the marks inton <- 1 # crossovers per chromosomekL <- c()kS <- c()# every crossing on a chromosome joins the same two chromatids -- the# pair facing each other across the copies, rows 2 and 3. So two of them# trade the stretch between the cuts back, and rows 1 and 4 stay whole.rip <- function(M, ks) { for (k in ks) { s <- k:4; t <- M[2, s]; M[2, s] <- M[3, s]; M[3, s] <- t } M}meiosis <- function() { L <- rip(dup(long), kL)[sample(4), ] S <- rip(dup(short), kS)[sample(4), ] lapply(1:4, function(i) list(long = L[i, ], short = S[i, ]))}v <- replicate(500, paste(meiosis()[[sample(4,1)]]$long, collapse = ""))table(v)gam <- function() meiosis()[[sample(4,1)]]$longe <- replicate(200, gam()[1] + gam()[1])table(e)