humaines des microsatellites utilisés en sciences
forensiques
Jean R. Lobry
18 mars 2017
Cette fiche explore les données compilées par Brian Burritt du
dépar-tement de police à San Diego (CA, USA). On dispose par exemple
des fréquences alléliques de 9 loci hautement polymorphes dans 202
populations humaines.
Table des matières
1
Introduction
2
2
Importation et pré-traitement des données
2
2.1
Le locus D3S1358 . . . .
2
2.2
Le locus VWA
. . . .
5
2.3
Le locus FGA . . . .
6
2.4
Le locus D8S1179 . . . .
7
2.5
Le locus D21S11 . . . .
7
2.6
Le locus D18S51 . . . .
8
2.7
Le locus D5S818 . . . .
9
2.8
Le locus D13S317 . . . .
10
2.9
Le locus D7S820 . . . .
10
2.10 Le locus D16S539 . . . .
11
2.11 Le locus THO1 . . . .
12
2.12 Le locus TPOX . . . .
12
2.13 Le locus CSF1PO . . . .
13
2.14 Le locus PentaD
. . . .
14
2.15 Le locus PentaE
. . . .
14
2.16 Le locus D2S1338 . . . .
15
2.17 Le locus D19S433 . . . .
16
2.18 Sauvegarde . . . .
16
3
Vues d’ensemble
16
3.1
Restauration des données pré-traitées
. . . .
16
3.2
Nombre de populations par locus . . . .
16
1
Introduction
Les microsatellites représentent environ 3 % du génome humain. Ceux qui
sont utilisés en sciences forensiques ont été passés en revue par John M. Butler
[1]. Plus de 1000 articles publiés sont des études donnant une estimation des
fréquences alléliques dans une population humaine, plus ou moins bien définie.
Un effort considérable de compilation a été fait par Brian Burritt du
départe-ment de police à San Diego (CA, USA). Cette compilation est disponible sous
la forme d’un document tableur : OmniPop200.1.xls. Les données ci-après sont
extraites de ce document.
2
Importation et pré-traitement des données
2.1
Le locus D3S1358
Motif tétranucléotide de type (TCTR)
8−21sur le chromosome 3.
read.table("https://pbil.univ-lyon1.fr/R/donnees/for7/D3S1358.csv", h=TRUE,sep="\t",dec=",", row.names = 1) -> D3 rownames(D3) <- abbreviate(rownames(D3))
dim(D3)
[1] 12 202
Nous avons donc 12 allèles différents dans 202 populations. Le nom des
allèles est une variable qualitative ordonnée donnant le nombre de répétitions
du microsatellite :
rownames(D3)
[1] "<12" "12,0" "13,0" "14,0" "15,0" "15,2" "16,0" "17,0" "17,1" "18,0" "19,0" [12] ">19"
Les modalités extrêmes correspondent aux valeurs hors-échelle, le nombre de
répétition n’est pas forcément entier en cas de délétion d’une ou plusieurs base
dans un motif.
La première surprise avec ces données est que la somme des fréquences
allé-liques ne fasse pas 1 :
x <- colSums(D3) dstx <- density(x)
plot(dstx, main = "Somme des fréquences alléliques") polycurve <- function(x, y, base.y = min(y), ...) {
polygon(x = c(min(x), x, max(x)), y = c(base.y, y, base.y), ...)
}
polycurve(dstx$x, dstx$y, col = "lightblue", border = "blue") rug(x)
abline(v=1, col="red",lwd=2)
version 3.3.1 (2016-06-21) – Page 2/18 – Compilé le 2017-03-18 URL :https://pbil.univ-lyon1.fr/R/pdf/for7.pdf
1.0 1.1 1.2 1.3 1.4 1.5 0 1 2 3 4 5 6 7
Somme des fréquences alléliques
N = 202 Bandwidth = 0.02055
Density
La raison est que les fréquences nulles ont été ici remplacées par une valeur
minimum égale à
52n
, où n est le nombre d’individus de la population. Par
exemple pour la première population :
D3[,1,drop=F] X...FBI.African.American..1. <12 0.01190 12,0 0.01190 13,0 0.01190 14,0 0.12143 15,0 0.29048 15,2 0.01190 16,0 0.30714 17,0 0.20000 17,1 0.01190 18,0 0.05476 19,0 0.01190 >19 0.01190 table(D3[,1]) 0.0119 0.05476 0.12143 0.2 0.29048 0.30714 7 1 1 1 1 1
On voit que la fréquence 0.0119 est présente 7 fois, c’est la fréquence
mi-nimum pour les allèles non encore observés. On doit donc pouvoir déduire le
nombre d’individus :
t2n <- function(x){ tx <- table(x) minf <- as.numeric(names(tx)[which.max(tx)]) res <- 5/(2*minf) if(!is.finite(res)) res <- NA return( res ) } t2n(D3[,1]) [1] 210.084 ntot <- apply(D3,2,t2n) sum(ntot) [1] 32591.45 summary(ntot)Min. 1st Qu. Median Mean 3rd Qu. Max. 35.21 100.00 140.90 161.30 192.30 1389.00
dstn <- density(log10(ntot))
plot(dstn, main = "Nombre d'individus par population", xlab = "Log10(n)")
polycurve(dstn$x, dstn$y, col = "lightblue", border = "blue") rug(log10(ntot)) 1.5 2.0 2.5 3.0 0.0 0.5 1.0 1.5
Nombre d'individus par population
Log10(n)
Density
Il y a donc typiquement une centaine d’individus par population.
Représen-tons maintenant la distribution des fréquences alléliques :
tmp <- as.data.frame(t(D3))
boxplot(tmp, horizontal = TRUE, las = 1, col = "lightblue", main = "Fréquences alléliques brutes au locus D3S1358", xlab = "Distribution des fréquences dans 202 populations")
<12 12,0 13,0 14,0 15,0 15,2 16,0 17,0 17,1 18,0 19,0 >19 0.0 0.2 0.4 0.6
Fréquences alléliques brutes au locus D3S1358
Distribution des fréquences dans 202 populations
Ce graphique est trompeur à cause des fréquences plancher. Remplaçons les
fréquences plancher par des fréquences nulles :
D3 <- apply(D3,2,function(x) ifelse(x == as.numeric(names(which.max(table(x)))), 0,x)) tmp <- as.data.frame(t(D3))
version 3.3.1 (2016-06-21) – Page 4/18 – Compilé le 2017-03-18 URL:https://pbil.univ-lyon1.fr/R/pdf/for7.pdf
boxplot(tmp, horizontal = TRUE, las = 1, col = "lightblue", main = "Fréquences alléliques au locus D3S1358",
xlab = "Distribution des fréquences dans 202 populations") burritt <- list() burritt$D3S1358 <- tmp <12 12,0 13,0 14,0 15,0 15,2 16,0 17,0 17,1 18,0 19,0 >19 0.0 0.2 0.4 0.6
Fréquences alléliques au locus D3S1358
Distribution des fréquences dans 202 populations
On a donc 5 allèles fréquents à ce locus : 14,0 15,0 16,0 17,0 18,0.
2.2
Le locus VWA
Motif tétranucléotide de type (TCTR)10−25
sur le chromosome 12.
read.table("https://pbil.univ-lyon1.fr/R/donnees/for7/VWA.csv", h=TRUE,sep="\t",dec=",", row.names = 1) -> x rownames(x) <- abbreviate(rownames(x)) dim(x) [1] 12 202 rownames(x) [1] "11,0" "12,0" "13,0" "14,0" "15,0" "16,0" "17,0" "18,0" "19,0" "20,0" "21,0" [12] ">21" ntot <- apply(x,2,t2n) sum(ntot) [1] 32862.78 summary(ntot)
Min. 1st Qu. Median Mean 3rd Qu. Max. 35.21 100.00 140.90 162.70 192.30 1389.00
x <- apply(x,2,function(x) ifelse(x == as.numeric(names(which.max(table(x)))), 0,x)) tmp <- as.data.frame(t(x))
boxplot(tmp, horizontal = TRUE, las = 1, col = "lightblue", main = "Fréquences alléliques au locus VWA",
xlab = paste("Distribution des fréquences dans", nrow(tmp), "populations")) burritt$VWA <- tmp
11,0 12,0 13,0 14,0 15,0 16,0 17,0 18,0 19,0 20,0 21,0 >21 0.0 0.1 0.2 0.3 0.4 0.5
Fréquences alléliques au locus VWA
Distribution des fréquences dans 202 populations
2.3
Le locus FGA
read.table("https://pbil.univ-lyon1.fr/R/donnees/for7/FGA.csv", h=TRUE,sep="\t",dec=",", row.names = 1) -> x rownames(x) <- abbreviate(rownames(x))
dim(x)
[1] 32 202
x <- apply(x,2,function(x) ifelse(x == as.numeric(names(which.max(table(x)))), 0,x)) tmp <- as.data.frame(t(x))
boxplot(tmp, horizontal = TRUE, las = 1, col = "lightblue", main = "Fréquences alléliques au locus FGA",
xlab = paste("Distribution des fréquences dans", nrow(tmp), "populations")) burritt$FGA <- tmp <18 18,0 18,2 19,0 19,2 19,3 20,0 20,2 21,0 21,2 22,0 22,2 22,3 23,0 23,1 23,2 23,3 24,0 24,2 24,3 25,0 25,1 25,2 25,3 26,0 26,2 27,0 27,2 28,0 29,0 30,0>30 0.00 0.05 0.10 0.15 0.20 0.25 0.30
Fréquences alléliques au locus FGA
Distribution des fréquences dans 202 populations
version 3.3.1 (2016-06-21) – Page 6/18 – Compilé le 2017-03-18 URL:https://pbil.univ-lyon1.fr/R/pdf/for7.pdf
2.4
Le locus D8S1179
read.table("https://pbil.univ-lyon1.fr/R/donnees/for7/D8S1179.csv", h=TRUE,sep="\t",dec=",", row.names = 1) -> x rownames(x) <- abbreviate(rownames(x))
dim(x)
[1] 11 202
x <- apply(x,2,function(x) ifelse(x == as.numeric(names(which.max(table(x)))), 0,x)) tmp <- as.data.frame(t(x))
boxplot(tmp, horizontal = TRUE, las = 1, col = "lightblue", main = "Fréquences alléliques au locus D8S1179",
xlab = paste("Distribution des fréquences dans", nrow(tmp), "populations")) burritt$D8S1179 <- tmp <9 9,00 10,0 11,0 12,0 13,0 14,0 15,0 16,0 17,0 >17 0.0 0.1 0.2 0.3 0.4
Fréquences alléliques au locus D8S1179
Distribution des fréquences dans 202 populations
2.5
Le locus D21S11
read.table("https://pbil.univ-lyon1.fr/R/donnees/for7/D21S11.csv", h=TRUE,sep="\t",dec=",", row.names = 1) -> x rownames(x) <- abbreviate(rownames(x))
dim(x)
[1] 34 202
x <- apply(x,2,function(x) ifelse(x == as.numeric(names(which.max(table(x)))), 0,x)) tmp <- as.data.frame(t(x))
boxplot(tmp, horizontal = TRUE, las = 1, col = "lightblue", main = "Fréquences alléliques au locus D21S11",
xlab = paste("Distribution des fréquences dans", nrow(tmp), "populations")) burritt$D21S11 <- tmp
<24. 24,2 24,3 25,0 25,2 26,0 26,2 27,0 28,0 28,2 29,0 29,2 29,3 30,0 30,2 30,3 31,0 31,1 31,2 32,0 32,1 32,2 32,3 33,0 33,1 33,2 33,3 34,0 34,1 34,2 35,0 35,2 36,0>36 0.0 0.1 0.2 0.3 0.4 0.5
Fréquences alléliques au locus D21S11
Distribution des fréquences dans 202 populations
2.6
Le locus D18S51
Il y a une typo ici dans les données originelles.
read.table("https://pbil.univ-lyon1.fr/R/donnees/for7/D18S51.csv", h=TRUE,sep="\t",dec=",", row.names = 1) -> x rownames(x) <- abbreviate(rownames(x))
dim(x)
[1] 20 202
max(x)
[1] 6
which(x == max(x), arr = TRUE)
row col
14,2 7 12
x[7,12] <- NA
x <- apply(x,2,function(x) ifelse(x == as.numeric(names(which.max(table(x)))), 0,x)) tmp <- as.data.frame(t(x))
boxplot(tmp, horizontal = TRUE, las = 1, col = "lightblue", main = "Fréquences alléliques au locus D18S51",
xlab = paste("Distribution des fréquences dans", nrow(tmp), "populations")) burritt$D18S51 <- tmp
version 3.3.1 (2016-06-21) – Page 8/18 – Compilé le 2017-03-18 URL :https://pbil.univ-lyon1.fr/R/pdf/for7.pdf
<11 11,0 12,0 13,0 13,2 14,0 14,2 15,0 15,2 16,0 16,2 17,0 18,0 19,0 20,0 20,2 21,0 21,2 22,0 >22 0.0 0.1 0.2 0.3
Fréquences alléliques au locus D18S51
Distribution des fréquences dans 202 populations
2.7
Le locus D5S818
read.table("https://pbil.univ-lyon1.fr/R/donnees/for7/D5S818.csv", h=TRUE,sep="\t",dec=",", row.names = 1) -> x rownames(x) <- abbreviate(rownames(x))
dim(x)
[1] 12 202
x <- apply(x,2,function(x) ifelse(x == as.numeric(names(which.max(table(x)))), 0,x)) tmp <- as.data.frame(t(x))
boxplot(tmp, horizontal = TRUE, las = 1, col = "lightblue", main = "Fréquences alléliques au locus D5S818",
xlab = paste("Distribution des fréquences dans", nrow(tmp), "populations")) burritt$D5S818 <- tmp <7 7,00 8,00 9,00 9,20 10,0 11,0 12,0 13,0 14,0 15,0 >15 0.0 0.1 0.2 0.3 0.4 0.5 0.6
Fréquences alléliques au locus D5S818
2.8
Le locus D13S317
read.table("https://pbil.univ-lyon1.fr/R/donnees/for7/D13S317.csv", h=TRUE,sep="\t",dec=",", row.names = 1) -> x rownames(x) <- abbreviate(rownames(x))
dim(x)
[1] 12 202
x <- apply(x,2,function(x) ifelse(x == as.numeric(names(which.max(table(x)))), 0,x)) tmp <- as.data.frame(t(x))
boxplot(tmp, horizontal = TRUE, las = 1, col = "lightblue", main = "Fréquences alléliques au locus D13S317",
xlab = paste("Distribution des fréquences dans", nrow(tmp), "populations")) burritt$D13S317 <- tmp <8 8,00 8,10 9,00 10,0 11,0 12,0 13,0 13,3 14,0 15,0 >15 0.0 0.1 0.2 0.3 0.4 0.5
Fréquences alléliques au locus D13S317
Distribution des fréquences dans 202 populations
2.9
Le locus D7S820
read.table("https://pbil.univ-lyon1.fr/R/donnees/for7/D7S820.csv", h=TRUE,sep="\t",dec=",", row.names = 1) -> x rownames(x) <- abbreviate(rownames(x))
dim(x)
[1] 18 202
x <- apply(x,2,function(x) ifelse(x == as.numeric(names(which.max(table(x)))), 0,x)) tmp <- as.data.frame(t(x))
boxplot(tmp, horizontal = TRUE, las = 1, col = "lightblue", main = "Fréquences alléliques au locus D7S820",
xlab = paste("Distribution des fréquences dans", nrow(tmp), "populations")) burritt$D7S820 <- tmp
version 3.3.1 (2016-06-21) – Page 10/18 – Compilé le 2017-03-18 URL :https://pbil.univ-lyon1.fr/R/pdf/for7.pdf
6,00 6,30 7,00 8,00 8,10 8,20 9,00 9,10 9,30 10,0 10,1 10,3 11,0 11,3 12,0 13,0 14,0 >14 0.0 0.1 0.2 0.3 0.4 0.5
Fréquences alléliques au locus D7S820
Distribution des fréquences dans 202 populations
2.10
Le locus D16S539
read.table("https://pbil.univ-lyon1.fr/R/donnees/for7/D16S539.csv", h=TRUE,sep="\t",dec=",", row.names = 1) -> x rownames(x) <- abbreviate(rownames(x))
x <- x[,!apply(x,2,function(x) all(is.na(x)))] dim(x)
[1] 10 120
x <- apply(x,2,function(x) ifelse(x == as.numeric(names(which.max(table(x)))), 0,x)) tmp <- as.data.frame(t(x))
boxplot(tmp, horizontal = TRUE, las = 1, col = "lightblue", main = "Fréquences alléliques au locus D16S539",
xlab = paste("Distribution des fréquences dans", nrow(tmp), "populations")) burritt$D16S539 <- tmp <8 8,00 9,00 10,0 11,0 11,3 12,0 13,0 14,0 15,0 0.0 0.1 0.2 0.3 0.4 0.5 0.6
Fréquences alléliques au locus D16S539
2.11
Le locus THO1
read.table("https://pbil.univ-lyon1.fr/R/donnees/for7/THO1.csv", h=TRUE,sep="\t",dec=",", row.names = 1) -> x rownames(x) <- abbreviate(rownames(x))
x <- x[,!apply(x,2,function(x) all(is.na(x)))] dim(x)
[1] 10 137
x <- apply(x,2,function(x) ifelse(x == as.numeric(names(which.max(table(x)))), 0,x)) tmp <- as.data.frame(t(x))
boxplot(tmp, horizontal = TRUE, las = 1, col = "lightblue", main = "Fréquences alléliques au locus THO1",
xlab = paste("Distribution des fréquences dans", nrow(tmp), "populations")) burritt$THO1 <- tmp <5 5,00 6,00 7,00 8,00 8,30 9,00 9,30 10,0 >10 0.0 0.2 0.4 0.6 0.8
Fréquences alléliques au locus THO1
Distribution des fréquences dans 137 populations
2.12
Le locus TPOX
read.table("https://pbil.univ-lyon1.fr/R/donnees/for7/TPOX.csv", h=TRUE,sep="\t",dec=",", row.names = 1) -> x rownames(x) <- abbreviate(rownames(x))
x <- x[,!apply(x,2,function(x) all(is.na(x)))] dim(x)
[1] 10 136
x <- apply(x,2,function(x) ifelse(x == as.numeric(names(which.max(table(x)))), 0,x)) tmp <- as.data.frame(t(x))
boxplot(tmp, horizontal = TRUE, las = 1, col = "lightblue", main = "Fréquences alléliques au locus TPOX",
xlab = paste("Distribution des fréquences dans", nrow(tmp), "populations")) burritt$TPOX <- tmp
version 3.3.1 (2016-06-21) – Page 12/18 – Compilé le 2017-03-18 URL :https://pbil.univ-lyon1.fr/R/pdf/for7.pdf
<6 6,00 7,00 8,00 9,00 10,0 11,0 12,0 13,0 >13 0.0 0.1 0.2 0.3 0.4 0.5 0.6
Fréquences alléliques au locus TPOX
Distribution des fréquences dans 136 populations
2.13
Le locus CSF1PO
read.table("https://pbil.univ-lyon1.fr/R/donnees/for7/CSF1PO.csv", h=TRUE,sep="\t",dec=",", row.names = 1) -> x rownames(x) <- abbreviate(rownames(x))
x <- x[,!apply(x,2,function(x) all(is.na(x)))] dim(x)
[1] 14 136
x <- apply(x,2,function(x) ifelse(x == as.numeric(names(which.max(table(x)))), 0,x)) tmp <- as.data.frame(t(x))
boxplot(tmp, horizontal = TRUE, las = 1, col = "lightblue", main = "Fréquences alléliques au locus CSF1PO",
xlab = paste("Distribution des fréquences dans", nrow(tmp), "populations")) burritt$CSF1PO <- tmp <6 6,00 7,00 8,00 9,00 10,0 10,3 11,0 11,1 12,0 12,1 13,0 14,0 15,0 0.0 0.1 0.2 0.3 0.4 0.5
Fréquences alléliques au locus CSF1PO
2.14
Le locus PentaD
read.table("https://pbil.univ-lyon1.fr/R/donnees/for7/PentaD.csv", h=TRUE,sep="\t",dec=",", row.names = 1) -> x rownames(x) <- abbreviate(rownames(x))
x <- x[,!apply(x,2,function(x) all(is.na(x)))] dim(x)
[1] 19 32
x <- apply(x,2,function(x) ifelse(x == as.numeric(names(which.max(table(x)))), 0,x)) tmp <- as.data.frame(t(x))
boxplot(tmp, horizontal = TRUE, las = 1, col = "lightblue", main = "Fréquences alléliques au locus PentaD",
xlab = paste("Distribution des fréquences dans", nrow(tmp), "populations")) burritt$PentaD <- tmp 2,20 3,20 5,00 6,00 7,00 8,00 9,00 9,30 10,0 11,0 11,2 12,0 13,0 13,2 14,0 15,0 16,0 17,0 >17 0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35
Fréquences alléliques au locus PentaD
Distribution des fréquences dans 32 populations
2.15
Le locus PentaE
read.table("https://pbil.univ-lyon1.fr/R/donnees/for7/PentaE.csv", h=TRUE,sep="\t",dec=",", row.names = 1) -> x rownames(x) <- abbreviate(rownames(x))
x <- x[,!apply(x,2,function(x) all(is.na(x)))] dim(x)
[1] 23 41
x <- apply(x,2,function(x) ifelse(x == as.numeric(names(which.max(table(x)))), 0,x)) tmp <- as.data.frame(t(x))
boxplot(tmp, horizontal = TRUE, las = 1, col = "lightblue", main = "Fréquences alléliques au locus PentaE",
xlab = paste("Distribution des fréquences dans", nrow(tmp), "populations")) burritt$PentaE <- tmp
version 3.3.1 (2016-06-21) – Page 14/18 – Compilé le 2017-03-18 URL :https://pbil.univ-lyon1.fr/R/pdf/for7.pdf
5 6 7 8 9 10 11 12 13 13.214 15 16 17 18 19 20 20.321 22 23 24 25 0.00 0.05 0.10 0.15 0.20
Fréquences alléliques au locus PentaE
Distribution des fréquences dans 41 populations
2.16
Le locus D2S1338
read.table("https://pbil.univ-lyon1.fr/R/donnees/for7/D2S1338.csv", h=TRUE,sep="\t",dec=",", row.names = 1) -> x rownames(x) <- abbreviate(rownames(x))
x <- x[,!apply(x,2,function(x) all(is.na(x)))] dim(x)
[1] 14 13
x <- apply(x,2,function(x) ifelse(x == as.numeric(names(which.max(table(x)))), 0,x)) tmp <- as.data.frame(t(x))
boxplot(tmp, horizontal = TRUE, las = 1, col = "lightblue", main = "Fréquences alléliques au locus D2S1338",
xlab = paste("Distribution des fréquences dans", nrow(tmp), "populations")) burritt$D2S1338 <- tmp 15 16 17 18 19 20 21 22 23 24 25 26 27 28 0.00 0.05 0.10 0.15 0.20 0.25 0.30
Fréquences alléliques au locus D2S1338
2.17
Le locus D19S433
read.table("https://pbil.univ-lyon1.fr/R/donnees/for7/D19S433.csv", h=TRUE,sep="\t",dec=",", row.names = 1) -> x rownames(x) <- abbreviate(rownames(x))
x <- x[,!apply(x,2,function(x) all(is.na(x)))] dim(x)
[1] 17 13
x <- apply(x,2,function(x) ifelse(x == as.numeric(names(which.max(table(x)))), 0,x)) tmp <- as.data.frame(t(x))
boxplot(tmp, horizontal = TRUE, las = 1, col = "lightblue", main = "Fréquences alléliques au locus D19S433",
xlab = paste("Distribution des fréquences dans", nrow(tmp), "populations")) burritt$D19S433 <- tmp 9 10 11 11.2 12 12.2 13 13.2 14 14.2 15 15.2 16 16.2 17 17.2 18.2 0.0 0.1 0.2 0.3
Fréquences alléliques au locus D19S433
Distribution des fréquences dans 13 populations
2.18
Sauvegarde
save(burritt, file = "burritt.RData")
3
Vues d’ensemble
3.1
Restauration des données pré-traitées
load(url("https://pbil.univ-lyon1.fr/R/donnees/for7/burritt.RData"))
3.2
Nombre de populations par locus
par(mar = c(5,5,2,2)+0.1)
barplot(unlist(lapply(burritt,nrow)),horiz=T,las=1, main = "Populations documentées par locus",
xlab = "Nombre de populations")
version 3.3.1 (2016-06-21) – Page 16/18 – Compilé le 2017-03-18 URL :https://pbil.univ-lyon1.fr/R/pdf/for7.pdf
D3S1358 VWA FGA D8S1179 D21S11 D18S51 D5S818 D13S317 D7S820 D16S539 THO1 TPOX CSF1PO PentaD PentaE D2S1338 D19S433
Populations documentées par locus
Nombre de populations
0 50 100 150 200
3.3
Nombre d’allèles par locus
par(mar = c(5,5,2,2)+0.1)
apg <- unlist(lapply(burritt,ncol)) barplot(apg[order(apg)],horiz=T,las=1, main = "Nombre d'allèles par locus", xlab = "Nombre d'allèles")
D16S539 THO1 TPOX D8S1179 D3S1358 VWA D5S818 D13S317 CSF1PO D2S1338 D19S433 D7S820 PentaD D18S51 PentaE FGA D21S11
Nombre d'allèles par locus
Nombre d'allèles
0 5 10 15 20 25 30
3.4
Fréquences alléliques médianes
Le graphique donne pour les allèle, correspondant à un multiple entier du
motif de base et qui ne sont pas hors-échelle, la médiane des fréquences observées
au sein les populations en fonction de la taille du microsatellite :
par(mfrow = c(5,4), mar = c(2,1,2,1)+0.1) for(i in 1:length(burritt)){
x <- burritt[[i]]
suppressWarnings (xx <- as.numeric(sub(",",".",colnames(x)))) entiers <- floor(xx) == xx & !is.na(xx)
xval <- xx[entiers]
yval <- apply(x,2,median)[entiers] plot(xval, yval,
main = paste(names(burritt)[i],"(", nrow(x),"Pop. )") , yaxt = "n",
pch = ".")
for(i in min(xval):max(xval)) abline(v=i,col="grey") polycurve(xx[entiers], yval, col = "lightblue") } 12 14 16 18 D3S1358 ( 202 Pop. ) xval 12 14 16 18 20 VWA ( 202 Pop. ) xval yv al 18 22 26 30 FGA ( 202 Pop. ) xval yv al 10 12 14 16 D8S1179 ( 202 Pop. ) xval yv al 26 30 34 D21S11 ( 202 Pop. ) xval 12 16 20 D18S51 ( 202 Pop. ) xval yv al 8 10 12 14 D5S818 ( 202 Pop. ) xval yv al 8 9 11 13 15 D13S317 ( 202 Pop. ) xval yv al 6 8 10 12 14 D7S820 ( 202 Pop. ) xval 8 9 11 13 15 D16S539 ( 120 Pop. ) xval yv al 5 6 7 8 9 10 THO1 ( 137 Pop. ) xval yv al 6 7 8 9 11 13 TPOX ( 136 Pop. ) xval yv al 6 8 10 12 14 CSF1PO ( 136 Pop. ) xval 6 8 10 14 PentaD ( 32 Pop. ) xval yv al 5 10 15 20 25 PentaE ( 41 Pop. ) xval yv al 16 20 24 28 D2S1338 ( 13 Pop. ) xval yv al 10 12 14 16 D19S433 ( 13 Pop. )
Références
[1] J.M. Butler. Genetics and genomics of core short tandem repeat loci used
in human identity testing. Journal of Forensic Sciences, 51 :253–265, 2006.
version 3.3.1 (2016-06-21) – Page 18/18 – Compilé le 2017-03-18 URL :https://pbil.univ-lyon1.fr/R/pdf/for7.pdf