Calculer de FST.

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Benjamin Leduc
Messages : 158
Enregistré le : 09 Avr 2010, 08:48

Calculer de FST.

Messagepar Benjamin Leduc » 13 Nov 2012, 13:08

Bonjour,

Lors d'un échange avec ma directrice de thèse, pour l'analyse de donnés AFLP, elle m'a donné le conseil suivant:
ma DDT a écrit :About
Diversity Index I believe you need to use indices that are suitable for
bi-parentally inherited, neutral markers (like AFLP), e.g the do the
standard Fst, which measures the deviation in hetrozygotes due to population
sub-division.

Après avoir googleisé ça, on trouve cette ref: Hartl and Clark, 1989 ... Est ce qu'il y a qui que ça soit qui ai une idée pour calculer ça facilement?

mon tableau de donné est binaire (1 / 0) avec en ligne les individus et en colonne les allèles ...

merci d'avance....
Je dois être Suicide-R

Pierre Bady
Messages : 405
Enregistré le : 02 Mai 2006, 07:46

Messagepar Pierre Bady » 13 Nov 2012, 13:51

hello,

le calcul des Fst et Gst sont implémentés dans adegenet.
par contre, il faudra peut-être modifier un peu le format de tes données (voir la doc du package + site web:http://adegenet.r-forge.r-project.org/).

voir aussi : http://finzi.psych.upenn.edu/cgi-bin/na ... name=views


hth


pierre
=@===--------¬-------¬------¬-----¬
liens utiles :
http://www.gnurou.org/Writing/SmartQuestionsFr
http://neogrifter.free.fr/welcomeOnInternet.jpg
]<((((*< -------------------------------

Benjamin Leduc
Messages : 158
Enregistré le : 09 Avr 2010, 08:48

Messagepar Benjamin Leduc » 13 Nov 2012, 14:46

Merci pour cette réponse, j'ai installé le package... j'ai lu la notice un peu.... Il parlent surtout de séquences et pas de markers anonymes.... Je ne suis pas contre une piste....
Je dois être Suicide-R

Gabriel Terraz
Messages : 591
Enregistré le : 26 Sep 2011, 15:11

Messagepar Gabriel Terraz » 13 Nov 2012, 15:27

Sinon y'a le package pegas

Benjamin Leduc
Messages : 158
Enregistré le : 09 Avr 2010, 08:48

Messagepar Benjamin Leduc » 21 Nov 2012, 09:29

donc; en essayant la methode adegenet, il faut tout d'abords créer un objet genind...

Code : Tout sélectionner

genind(gel)

   #####################
   ### Genind object ###
   #####################
- genotypes of individuals -

S4 class:  genind
@call: genind(tab = gel)

@tab:  169 x 55 matrix of genotypes

@ind.names: vector of  169 individual names
@loc.names: vector of  1 locus names
@loc.nall: number of alleles per locus
@loc.fac: locus factor for the  55 columns of @tab
@all.names: list of  1 components yielding allele names for each locus
@ploidy:  2
@type:  codom

Optionnal contents:
@pop:  - empty -
@pop.names:  - empty -

@other: - empty -
En entrant d'abords l'objet pour voir si il est corect pas de problème.... cela dit je ne suis pas avec un marqueur codominant mais dominant...

Code : Tout sélectionner

> genind(gel,type="PA")
Erreur dans `colnames<-`(`*tmp*`, value = "L1") :
  la longueur de 'dimnames' [2] n'est pas égale à l'étendue du tableau


Qui sais me dire ce qui m'arrive?
Je dois être Suicide-R

Yves Rousselle
Messages : 47
Enregistré le : 26 Nov 2007, 13:25

Messagepar Yves Rousselle » 26 Nov 2012, 09:33

Il nous faudrait avoir une idée de ton tableau de données "gel" pour pouvoir t'aider.
Tu as un seul marqueur ?

Benjamin Leduc
Messages : 158
Enregistré le : 09 Avr 2010, 08:48

Messagepar Benjamin Leduc » 27 Nov 2012, 12:36

Yves Rousselle a écrit :Il nous faudrait avoir une idée de ton tableau de données "gel" pour pouvoir t'aider.
Tu as un seul marqueur ?


non, c'est de l'AFLP, donc....
169 individus en ligne, 55 marker 1/0 en colone...
Voilà un morceau:

Code : Tout sélectionner

          al.225 al.236 al.250 al.260 al.262 al.263 al.265 al.270 al.273
B-40-2n-T        1      0      1      1      0      1      0      0      0
B-41-2n-T        1      0      1      1      0      1      0      1      0
B-43-2n-T        1      0      1      1      0      0      0      0      0
B-47-2n-T        0      0      1      1      0      1      0      1      0
B-52-2n-T        0      1      1      1      0      1      1      1      0
B-72-3n-T        0      0      1      0      0      0      0      1      0
B-73-2n-A        0      0      1      1      0      0      0      1      0
B-75-4n-T        0      0      1      1      0      1      0      0      0
B-83-4n-A        0      0      1      1      0      1      0      0      0
B-84-4n-NA       0      0      1      1      0      1      0      1      0
Je dois être Suicide-R

Yves Rousselle
Messages : 47
Enregistré le : 26 Nov 2007, 13:25

Messagepar Yves Rousselle » 27 Nov 2012, 12:52

Je te demandais le nombre de marqueur parce que dans ton premier import, l'objet genind précise un seul nom de locus (ligne commençant par "@loc.names:") :

Code : Tout sélectionner

> genind(gel)

   #####################
   ### Genind object ###
   #####################
- genotypes of individuals -

S4 class:  genind
@call: genind(tab = gel)

@tab:  10 x 9 matrix of genotypes

@ind.names: vector of  10 individual names
@loc.names: vector of  1 locus names
@loc.nall: number of alleles per locus
@loc.fac: locus factor for the  9 columns of @tab
@all.names: list of  1 components yielding allele names for each locus
@ploidy:  2
@type:  codom

Optionnal contents:
@pop:  - empty -
@pop.names:  - empty -

@other: - empty -



La solution à ton problème apparaît quand on lui demande les noms de locus qu'il a réussi à récupérer de l'import de gel dans un objet genind :

Code : Tout sélectionner

> gel.genind@loc.names
  L1
"al"


Il a donc (sans que je puisse pourquoi) un soucis avec les points dans les noms de locus qui l'empêche de lire correctement les noms de locus et de voir qu'il y en a plus qu'un.

Si tu enlèves les points, ça marche très bien. (J'ai repris juste le fragment de ta table dans mon exemple) :

Code : Tout sélectionner

> names(gel)<-gsub(".","",names(gel),fixed=T)
> genind(gel,type="PA")


   #####################
   ### Genind object ###
   #####################
- genotypes of individuals -

S4 class:  genind
@call: genind(tab = gel, type = "PA")

@tab:  10 x 9 matrix of genotypes

@ind.names: vector of  10 individual names
@loc.names: vector of  9 locus names
@loc.nall: NULL
@loc.fac: NULL
@all.names: NULL
@ploidy:  2
@type:  PA

Optionnal contents:
@pop:  - empty -
@pop.names:  - empty -

@other: - empty -


J'espère que ça résoudra effectivement ton problème.

Benjamin Leduc
Messages : 158
Enregistré le : 09 Avr 2010, 08:48

Messagepar Benjamin Leduc » 29 Nov 2012, 09:55

Merci, cela m'a permis d'avancer.... Jusqu'au problème suivant....

Si quelqu'un as une idée tordu:

Code : Tout sélectionner

genind(gel,pop=info$Pop,prevcall=NULL, ploidy=info$Ploidy, type="PA")

   #####################
   ### Genind object ###
   #####################
- genotypes of individuals -

S4 class:  genind
@call: genind(tab = gel, pop = info$Pop, prevcall = NULL, ploidy = info$Ploidy,
    type = "PA")

@tab:  169 x 55 matrix of genotypes

@ind.names: vector of  169 individual names
@loc.names: vector of  55 locus names
@loc.nall: NULL
@loc.fac: NULL
@all.names: NULL
@ploidy:  2 2 2 2 2 3 2 4 4 4 4 4 4 2 4 2 2 4 2 4 2 4 2 4 2 4 2 4 2 3 2 3 2 4 2 3 2 4 2 4 3 3 4 2 4 2 4 2 4 3 4 2 4 2 4 2 4 2 3 4 4 2 3 4 2 4 3 3 2 4 2 4 2 4 4 4 4 2 4 2 4 4 3 4 4 4 2 3 4 2 4 4 2 4 2 2 3 2 4 2 4 2 4 2 4 4 2 2 4 3 4 4 4 4 4 4 4 4 4 4 4 2 2 3 2 2 4 3 4 2 4 4 2 2 4 3 4 2 4 4 2 4 3 2 3 2 4 2 4 2 4 4 4 2 2 2 4 2 2 4 2 4 2 2 4 4 4 4 2
@type:  PA

Optionnal contents:
@pop:  factor giving the population of each individual
@pop.names:  factor giving the population of each individual

@other: - empty -

Message d'avis :
In if (plo < as.integer(1)) stop("ploidy inferior to 1") :
  la condition a une longueur > 1 et seul le premier élément est utilisé

Oui, j'ai le cariotype de chaque individu, qui peut être diploïde, triploïde ou tétraploïde.... pas sur que l'on puisse gérer....

Sinon.... J'avance sans tenir compte de se point:

Code : Tout sélectionner

genind(gel,pop=info$Pop,prevcall=NULL, type="PA")->Betgen
pairwise.fst(Betgen)
Erreur dans Hs(temp) : not implemented for presence/absence markers
De plus : Message d'avis :
In df2genind(tab, pop = pop, ploidy = x[[1]]@ploidy, type = x[[1]]@type) :
  non-polymorphic marker(s) deleted

ça doit pas être adapté...

Version avec pegas:

Code : Tout sélectionner

as.loci(Betgen)->Betloc
Fst(Betloc)
Erreur dans Fst(Betloc) : Fst() requires diploid data


pas mieu...
Je dois être Suicide-R


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité