Liste des cours et versions :
Jusqu'à nouvel avis, tous les cours et les TD se feront en distanciel. Les liens seront mis à jour sur eCampus au fur et à mesure.
Histoire de l'idée d'évolution 29-12-2020
Pour compléter le cours, le texte de la sixième édition De l'origine des espèces. Il s'agit de la dernière édition publiée du vivant de Darwin. Elle diffère par plusieurs points de la première édition.
Introduction à la biologie Evolutive 10-01-2021
Pour compléter le cours:
Reconstruction de phylogénies 30-12-2020
Un article en français qui est un peu ancien mais était une bonne synthèse:
Histoire de l'homologie 10-01-2021
Espèce et spéciation 10-01-2021
Biogéographie 19-04-2016
Evolution de l'autopode 29-03-2011
Oiseaux et dinosaures 26-01-2010
Compter le temps 02-10-2020
TD 4: Pourquoi les hommes sont plus grands que les femmes ?
Lien pour charger le film à visionner avant le TD 4
Au fur et à mesure du visionnage du film, notez toutes les hypothèses testées
et comment elles sont réfutées ou non.
TD 6: Déchiffrer les mystères de la vie
Lien pour charger le film à visionner avant le TD 6
Un article qui peut vous servir à répondre à certaines critiques décrites dans le film:
Au cours du visionnage du film, notez tous les faits et hypothèses qui
pourraient remettre en cause l'évolution selon les personnes interviewées.
Sur la base de vos connaissances, quelles réponses pouvez-vous apporter ?
Pensez à télécharger les vidéos dès maintenant car j'ai peur que le serveur du labo ne soit surchargé si tout le monde les télécharge au dernier moment.
TD 5: La coévolution
Pour répondre aux premières questions, vous pouvez vous aider de ce cours
de L1:
Cours de L1 sur les grands principes de l'écologie
Code R permettant de modéliser la résistance à la TTX chez la couleuvre et la production de TTX chez les tritons
Pas d'erreur dans l'exécution du code...
Bien sûr, il s'agit d'un modèle extrèmement simple qui est loin de représenter tout ce que l'on connait de l'évolution de ces caractères. Il est bon de se rappeler de cet aphorisme de Georges Box:
All models are wrong but some are useful
In Box, G. E. P. (1979), "Robustness in the strategy of scientific model building", in Launer, R. L.; Wilkinson, G. N. (eds.), Robustness in Statistics, Academic Press, pp. 201–236.
Pour l'utiliser, il faut installer R (https://cran.r-project.org) et pour que ce soit un peu plus simple à utiliser, vous pouvez aussi installer RStudio Desktop qui est une IDE (integrated development environment) pour R (https://rstudio.com/products/rstudio/).
Lancez Rstudio, et ouvrez une page pour un nouveau script R. Copiez le code suivant et vous pouvez alors l'exécuter (ctrl+A et ctrl+R sur Windows et cmd+A et cmd+R sur MacOSX).
# Fonction qui permet d'afficher deux histogrammes superposés avec des légendes
hist_both <- function(tritons.synthese, couleuvres.resistance, maxx=100, maxy=100, iteration="") {
hist(couleuvres.resistance, xlim=c(0, maxx), ylim=c(0, maxy), breaks = seq(from=0, to=100, by=2),
col=rgb(red = 0.5, green = 0.5, blue = 0.5, alpha = 0.5),
xlab="Quantité de TTX", ylab="Nombre", main=iteration)
par(new=TRUE)
hist(tritons.synthese, xlim=c(0, maxx), ylim=c(0, maxy), breaks = seq(from=0, to=100, by=2),
col=rgb(red = 0., green = 0., blue = 0.6, alpha = 0.5), xlab="", ylab="", axes = FALSE, main="")
legend(x="topleft", legend=c("Synthèse TTX chez le triton", "Résistance TTX chez la couleuvre"),
col=c(rgb(red = 0., green = 0., blue = 0.6, alpha = 0.5),
rgb(red = 0.5, green = 0.5, blue = 0.5, alpha = 0.5)), pch=15, bty="n")
}
taille.population.couleuvre <- 100
taille.population.triton <- 100
Nombre.iterations <- 100
# Population initiale tirée dans une loi normale de moyenne 20 pour la résistance et 40 pour la synthèse
couleuvres.resistance <- rnorm(taille.population.couleuvre, mean=20, sd=3)
tritons.synthese <- rnorm(taille.population.triton, mean=40, sd=3)
# Je fais tourner le modèle sur Nombre.iterations itérations
for (iteration in 1:Nombre.iterations) {
hist_both(tritons.synthese, couleuvres.resistance, maxy=40, iteration=as.character(iteration))
# Rencontre des couleuvres et des tritons
rencontres <- floor(min(taille.population.couleuvre, taille.population.triton)/2)
couleuvres <- sample(1:taille.population.couleuvre, rencontres, replace = FALSE)
tritons <- sample(1:taille.population.triton, rencontres, replace = FALSE)
# Je regarde qui meurt, couleuvre ou triton
mort.couleuvre <- ifelse(couleuvres.resistance[couleuvres] < tritons.synthese[tritons], TRUE, FALSE)
mort.triton <- !mort.couleuvre
# Je les fais mourir
if (any(mort.couleuvre)) couleuvres.resistance[couleuvres[mort.couleuvre]] <- NA
if (any(mort.triton)) tritons.synthese[tritons[mort.triton]] <- NA
couleuvres.resistance <- na.omit(couleuvres.resistance)
tritons.synthese <- na.omit(tritons.synthese)
# S'il y a eu des morts chez les couleuvres, je fais de la reproduction
if (length(couleuvres.resistance) < taille.population.couleuvre) {
# Reproduction non-sexuée
nouvelles.couleuvres <- sample(couleuvres.resistance, taille.population.couleuvre-length(couleuvres.resistance), replace = TRUE)
# Mutation
nouvelles.couleuvres <- rnorm(taille.population.couleuvre-length(couleuvres.resistance), nouvelles.couleuvres, sd=3)
couleuvres.resistance <- c(couleuvres.resistance, nouvelles.couleuvres)
# J'élimine les valeurs aberrantes
couleuvres.resistance <- ifelse(couleuvres.resistance < 0, 0, couleuvres.resistance)
couleuvres.resistance <- ifelse(couleuvres.resistance > 100, 100, couleuvres.resistance)
}
# S'il y a eu des morts chez les tritons, je fais de la reproduction
if (length(tritons.synthese) < taille.population.triton) {
# Reproduction non-sexuée
nouveaux.tritons <- sample(tritons.synthese, taille.population.triton-length(tritons.synthese), replace = TRUE)
# Mutation
nouveaux.tritons <- rnorm(taille.population.triton-length(tritons.synthese), nouveaux.tritons, sd=3)
tritons.synthese <- c(tritons.synthese, nouveaux.tritons)
# J'élimine les valeurs aberrantes
tritons.synthese <- ifelse(tritons.synthese < 0, 0, tritons.synthese)
tritons.synthese <- ifelse(tritons.synthese > 100, 100, tritons.synthese)
}
Sys.sleep(0.5)
}



