Débutant dans la GWAS, je me suis lancé dans GenAbel.
Grâce à la fonction ibs(), on peut calculer une distance entre individus à partir des marqueurs.
Code : Tout sélectionner
> TsaiyaRFI.gkin[1:5,1:5]
230051 230064 230053 230038 230054
230051 0.69181443 6.786500e+04 6.792600e+04 6.745600e+04 6.797600e+04
230064 0.02664986 6.746765e-01 6.779900e+04 6.740800e+04 6.786300e+04
230053 0.05058215 1.827279e-02 7.605652e-01 6.738500e+04 6.794600e+04
230038 0.04776457 8.667402e-02 7.369850e-02 7.303391e-01 6.745000e+04
230054 0.03814102 1.890136e-02 1.054625e-01 3.672067e-02 7.317633e-01
Et ce qui m'intéresse ici c'est le triangle inférieur de cette matrice.
J'applique (bêtement ?) les instructions pour représenter le nuage des mes individus dans le plan principal, et ça marche plutôt bien.
Code : Tout sélectionner
TsaiyaRFI.gkin<-ibs(TsaiyaRFI[,autosomal(TsaiyaRFI)],weight="freq")
TsaiyaRFI.dist<-as.dist(0.5-TsaiyaRFI.gkin)
TsaiyaRFI.mds<-cmdscale(TsaiyaRFI.dist)
phdata(TsaiyaRFI)$line<-as.factor(phdata(TsaiyaRFI)$line)
jpeg(filename="nuageRFI_0.jpg",height=800,width=800)
plot(TsaiyaRFI.mds,col=as.numeric(phdata(TsaiyaRFI)$line),main="Nuage des génotypes Tsaiya sur plan principal",xlab="axe1",ylab="axe2")
abline(h=0,lty=2)
abline(v=0,lty=2)
legend("bottomleft",legend=levels(phdata(TsaiyaRFI)$line),pch=1,col=c(1,2),cex=1.2)
dev.off()
Je dis "bêtement" car je ne comprends pas pourquoi il faut appliquer le as.dist() sur "0.5 - TsaiyaRFI.gkin" et non sur TsaiyaRFI.gkin. Toujours est-il que si je le fais j'ai un joli graphe, alors qu'il est ultra moche si je l'applique directement sur la matrice qui sort de ibs().
Je désire maintenant comparer les distances obtenues avec les marqueurs et les distances obtenues par le pedigree.
Pour cela j'utilise la fonction makeA() du package pedigree.Ceci me permet de créer une table matA qui contient les coefficients de parenté entre les individus.
Code : Tout sélectionner
> matA[1:5,]
i j a
1 3411 3411 1.125240
2 3412 3411 0.168365
3 3412 3412 1.082430
4 3414 3411 0.179199
5 3414 3412 0.284164
Malheureusement les lignes & colonnes sont numérotées de 1 à n.
Après les fusions idoines j'obtiens néanmoins un fichier avec les mêmes identifiants que ceux utilisés par ibs():
Code : Tout sélectionner
> matA[1:5,]
j i a id.i id.j
1 3411 3411 1.1252400 230001 230001
2 3411 3412 0.1683650 230004 230001
3 3411 3573 0.4840090 230403 230001
4 3411 3414 0.1791990 230006 230001
5 3411 3646 0.0258942 231044 230001
Mon problème est d'arriver à obtenir une matrice avec pour identifiant des lignes et colonnes les quantités id.i et id.j, matrice que je pourrais ensuite comparer à celle donnée par ibs().
C'est une matrice symétrique et la fonction makeA() ne me donne que de quoi en remplir la moitié, diagonale comprise, soit 20910 (= 204*205/2) termes.
Savez-vous comment je pourrais créer cette matrice ?
Et à supposer que je parvienne à réaliser le même type de graphique, quel moyen objectif me conseilleriez-vous pour comparer l'information pedigree (donnée par makeA() ) et l'information génomique (donnée par ibs() ) ?
Merci