emmakopp1 / phylogeny_trust

This project aims to validate (or invalidate) a phylogenetic tree estimation.
0 stars 0 forks source link

get_tip_ages #21

Open tpellard opened 2 months ago

tpellard commented 2 months ago

Dans 01_Import.R, la fonction get_tip_ages() calcule maintenant la moyenne des âges de chaque feuille. Mais il faudrait enlever le burnin non? Et finalement on prend la moyenne ou la médiane?

J'étais parti sur l'idée d'extraire tous les âges et d'écrire ça dans des fichiers csv, et dans un second temps de réimporter ces données et d'enlever le burnin et de calculer la moyenne. Ça fait des gros fichiers et c'est pas le plus efficace mais c'est plus incrémental. Ta solution est peut-être plus pratique

emmakopp1 commented 2 months ago

Robin propose de prendre la médiane

Quand tu parles d'(extraire tous les âges et de les écrire dans un fichier .csv, c'est ce qu'on fait dans 01_Import.R non ?

De même pour le burnin etc, j'ai l'impression de l'enlever dans 02_Tidy.R.

Je ne vois pas en quoi notre solution eset différente

tpellard commented 1 month ago

Je retravaille un peu le code, l'objectif c'est que chaque fichier code puisse être lancé sans avoir besoin de relancer à chaque fois tous ceux qui précèdent dans la chaîne. D'où les fichiers intermédiaires.

Par contre je ne vois pas comment obtenir les valeurs médianes de π₀ et π₁ pour le TEA vu que le fichier tracelog contient des valeurs par trait contrairement aux autres familles. On fait la médiane sur tous les traits de tous les arbres?

emmakopp1 commented 1 month ago

Pour les fichiers TEA et Iecor avec des paramètres pour chaque traits, on va avoir besoin de calculer q pour chaque trait. (je dis souvent q_k pour le trait k). Il faut aussi que l'on ai le nombre de site par trait.

Example : on a 2 trait "manger" et "dormir" et un arbre de 3 feuille avec des séquences au feuilles Y1 Y2 et Y3. le trait "manger" regroupe 3 sites et "dormir" en regroupe 2. On va avoir Y1 de taille 3+2. On aura besoin de calculer q1 et q2 les q pour chaque traits et de savoir que q1 concerne 3 sites et q2 en concerne 2.

Dis moi si cen'est pas clair Ca complique un peu les choses....

tpellard commented 1 month ago

Quelle distinction tu fais entre trait et site? Pourquoi dans ton exemple «dormir» n'a que deux sites? Si c'est plus facile tu peux faire une pseudo-matrice de traits pour expliquer.

Mais si je comprends bien il va falloir extraire pour chaque trait les valeurs de π₀ et π₁ du .log. On fait aussi pour chaque trait la médiane sur l'ensemble des arbres (moins le burnin5?

emmakopp1 commented 1 month ago

Je ne sais pas comment marhce une pseudo matrice, mais on peut peut-être faire un zoom rapide pour en parler demain matin si tu veux ?

tpellard commented 1 month ago

Je voulais dire un exemple fictif de matrice de traits. Mais on peut en parler demain mardi 28 après-midi uniquement

emmakopp1 commented 1 month ago

Je vois robin demain matin, donc je t'envoie un exemple fictif clair car j'ai peur de dire des bêtises seule

emmakopp1 commented 1 month ago

Finalement je vois Robin à 16h donc on peut faire un zoom rapide à 14h pour clarifier ce point si tu es disponible

tpellard commented 1 month ago

Je ne trouve pas les paramètres du type freqParameter dans les fichiers log de l'indo-européen.

library(here)
library(tracerer)
parse_beast_tracelog_file(here("data/real/iecor_ctmc-strict-M1/iecor_ctmc-strict-M1.log.permeaning")) |> 
  colnames()

> [1] "Sample"                                    "posterior"                                
  [3] "likelihood"                                "prior"                                    
  [5] "treeLikelihood.ant"                        "treeLikelihood.ash"                       
  [7] "treeLikelihood.back"                       "treeLikelihood.bad"                       
  [9] "treeLikelihood.bark"                       "treeLikelihood.belly"                     
 [11] "treeLikelihood.big"                        "treeLikelihood.bird"                      
 [13] "treeLikelihood.bite"                       "treeLikelihood.bitter"                    
 [15] "treeLikelihood.black"                      "treeLikelihood.blood"                     
 [17] "treeLikelihood.bone"                       "treeLikelihood.breathe"                   
 [19] "treeLikelihood.burn"                       "treeLikelihood.carry"                     
 [21] "treeLikelihood.chest"                      "treeLikelihood.claw"                      
 [23] "treeLikelihood.cloud"                      "treeLikelihood.cold"                      
 [25] "treeLikelihood.come"                       "treeLikelihood.count"                     
 [27] "treeLikelihood.cry"                        "treeLikelihood.day"                       
 [29] "treeLikelihood.die"                        "treeLikelihood.dig"                       
 [31] "treeLikelihood.dirty"                      "treeLikelihood.do"                        
 [33] "treeLikelihood.dog"                        "treeLikelihood.drink"                     
 [35] "treeLikelihood.dry"                        "treeLikelihood.dust"                      
 [37] "treeLikelihood.ear"                        "treeLikelihood.earth"                     
 [39] "treeLikelihood.eat"                        "treeLikelihood.egg"                       
 [41] "treeLikelihood.eye"                        "treeLikelihood.fall"                      
 [43] "treeLikelihood.far"                        "treeLikelihood.fear"                      
 [45] "treeLikelihood.feather"                    "treeLikelihood.fight"                     
 [47] "treeLikelihood.fire"                       "treeLikelihood.fish"                      
 [49] "treeLikelihood.five"                       "treeLikelihood.flower"                    
 [51] "treeLikelihood.fly_N"                      "treeLikelihood.fly_V"                     
 [53] "treeLikelihood.fog"                        "treeLikelihood.foot"                      
 [55] "treeLikelihood.forest"                     "treeLikelihood.four"                      
 [57] "treeLikelihood.freeze"                     "treeLikelihood.fruit"                     
 [59] "treeLikelihood.full"                       "treeLikelihood.give"                      
 [61] "treeLikelihood.go"                         "treeLikelihood.good"                      
 [63] "treeLikelihood.grass"                      "treeLikelihood.green"                     
 [65] "treeLikelihood.grind"                      "treeLikelihood.hair"                      
 [67] "treeLikelihood.hand"                       "treeLikelihood.hard"                      
 [69] "treeLikelihood.head"                       "treeLikelihood.hear"                      
 [71] "treeLikelihood.heart"                      "treeLikelihood.heavy"                     
 [73] "treeLikelihood.hide"                       "treeLikelihood.hit"                       
 [75] "treeLikelihood.horn"                       "treeLikelihood.hot"                       
 [77] "treeLikelihood.house"                      "treeLikelihood.hunt"                      
 [79] "treeLikelihood.ice"                        "treeLikelihood.kill"                      
 [81] "treeLikelihood.knee"                       "treeLikelihood.know"                      
 [83] "treeLikelihood.lake"                       "treeLikelihood.laugh"                     
 [85] "treeLikelihood.leaf"                       "treeLikelihood.left"                      
 [87] "treeLikelihood.leg"                        "treeLikelihood.live"                      
 [89] "treeLikelihood.liver"                      "treeLikelihood.long"                      
 [91] "treeLikelihood.louse"                      "treeLikelihood.man"                       
 [93] "treeLikelihood.meat"                       "treeLikelihood.moon"                      
 [95] "treeLikelihood.mountain"                   "treeLikelihood.mouth"                     
 [97] "treeLikelihood.nail"                       "treeLikelihood.name"                      
 [99] "treeLikelihood.narrow"                     "treeLikelihood.navel"                     
[101] "treeLikelihood.near"                       "treeLikelihood.neck"                      
[103] "treeLikelihood.new"                        "treeLikelihood.night"                     
[105] "treeLikelihood.nose"                       "treeLikelihood.old"                       
[107] "treeLikelihood.one"                        "treeLikelihood.play"                      
[109] "treeLikelihood.pull"                       "treeLikelihood.push"                      
[111] "treeLikelihood.rain"                       "treeLikelihood.red"                       
[113] "treeLikelihood.right"                      "treeLikelihood.river"                     
[115] "treeLikelihood.root"                       "treeLikelihood.rotten"                    
[117] "treeLikelihood.round"                      "treeLikelihood.run"                       
[119] "treeLikelihood.salt"                       "treeLikelihood.sand"                      
[121] "treeLikelihood.say"                        "treeLikelihood.sea"                       
[123] "treeLikelihood.see"                        "treeLikelihood.seed"                      
[125] "treeLikelihood.sew"                        "treeLikelihood.sharp"                     
[127] "treeLikelihood.short"                      "treeLikelihood.sing"                      
[129] "treeLikelihood.sit"                        "treeLikelihood.skin"                      
[131] "treeLikelihood.sky"                        "treeLikelihood.sleep"                     
[133] "treeLikelihood.small"                      "treeLikelihood.smell"                     
[135] "treeLikelihood.smoke"                      "treeLikelihood.smooth"                    
[137] "treeLikelihood.snake"                      "treeLikelihood.snow"                      
[139] "treeLikelihood.stand"                      "treeLikelihood.star"                      
[141] "treeLikelihood.stick"                      "treeLikelihood.stone"                     
[143] "treeLikelihood.straight"                   "treeLikelihood.sun"                       
[145] "treeLikelihood.sweet"                      "treeLikelihood.swell"                     
[147] "treeLikelihood.swim"                       "treeLikelihood.tail"                      
[149] "treeLikelihood.take"                       "treeLikelihood.thick"                     
[151] "treeLikelihood.thigh"                      "treeLikelihood.think"                     
[153] "treeLikelihood.three"                      "treeLikelihood.throw"                     
[155] "treeLikelihood.tie"                        "treeLikelihood.tongue"                    
[157] "treeLikelihood.tooth"                      "treeLikelihood.tree"                      
[159] "treeLikelihood.turn"                       "treeLikelihood.two"                       
[161] "treeLikelihood.vomit"                      "treeLikelihood.wash"                      
[163] "treeLikelihood.water"                      "treeLikelihood.wet"                       
[165] "treeLikelihood.white"                      "treeLikelihood.wide"                      
[167] "treeLikelihood.wind"                       "treeLikelihood.wing"                      
[169] "treeLikelihood.woman"                      "treeLikelihood.worm"                      
[171] "treeLikelihood.year"                       "treeLikelihood.yellow"                    
[173] "treeLikelihood.yesterday"                  "mutationRate.s.five"                      
[175] "gammaShape.s.five"                         "freqParameter.s.five.1"                   
[177] "freqParameter.s.five.2"                    "logP.mrca.Hittite.leaf.prior.."           
[179] "height.Hittite."                           "logP.mrca.Luvian.leaf.prior.."            
[181] "height.Luvian."                            "logP.mrca.TocharianA.leaf.prior.."        
[183] "height.TocharianA."                        "logP.mrca.TocharianB.leaf.prior.."        
[185] "height.TocharianB."                        "logP.mrca.MycenaeanGreek.leaf.prior.."    
[187] "height.MycenaeanGreek."                    "logP.mrca.AncientGreek.leaf.prior.."      
[189] "height.AncientGreek."                      "logP.mrca.NTGreek.leaf.prior.."           
[191] "height.NTGreek."                           "logP.mrca.TsakonianPropontis.leaf.prior.."
[193] "height.TsakonianPropontis."                "logP.mrca.ClassicalArmenian.leaf.prior.." 
[195] "height.ClassicalArmenian."                 "logP.mrca.VedicEarly.leaf.prior.."        
[197] "height.VedicEarly."                        "logP.mrca.Pali.leaf.prior.."              
[199] "height.Pali."                              "logP.mrca.AvestanYounger.leaf.prior.."    
[201] "height.AvestanYounger."                    "logP.mrca.Khwarazmian.leaf.prior.."       
[203] "height.Khwarazmian."                       "logP.mrca.Sogdian.leaf.prior.."           
[205] "height.Sogdian."                           "logP.mrca.Khotanese.leaf.prior.."         
[207] "height.Khotanese."                         "logP.mrca.Bactrian.leaf.prior.."          
[209] "height.Bactrian."                          "logP.mrca.Parthian.leaf.prior.."          
[211] "height.Parthian."                          "logP.mrca.OldPersian.leaf.prior.."        
[213] "height.OldPersian."                        "logP.mrca.MiddlePersian.leaf.prior.."     
[215] "height.MiddlePersian."                     "logP.mrca.OldPrussian.leaf.prior.."       
[217] "height.OldPrussian."                       "logP.mrca.OldChurchSlavonic.leaf.prior.." 
[219] "height.OldChurchSlavonic."                 "logP.mrca.SloveneEarlyModern.leaf.prior.."
[221] "height.SloveneEarlyModern."                "logP.mrca.OldPolish.leaf.prior.."         
[223] "height.OldPolish."                         "logP.mrca.Polabian.leaf.prior.."          
[225] "height.Polabian."                          "logP.mrca.OldCzech.leaf.prior.."          
[227] "height.OldCzech."                          "logP.mrca.OldNovgorod.leaf.prior.."       
[229] "height.OldNovgorod."                       "logP.mrca.Gothic.leaf.prior.."            
[231] "height.Gothic."                            "logP.mrca.OldIcelandic.leaf.prior.."      
[233] "height.OldIcelandic."                      "logP.mrca.OldSwedish.leaf.prior.."        
[235] "height.OldSwedish."                        "logP.mrca.OldSaxon.leaf.prior.."          
[237] "height.OldSaxon."                          "logP.mrca.OldHighGerman.leaf.prior.."     
[239] "height.OldHighGerman."                     "logP.mrca.MiddleHighGerman.leaf.prior.."  
[241] "height.MiddleHighGerman."                  "logP.mrca.MiddleDutch.leaf.prior.."       
[243] "height.MiddleDutch."                       "logP.mrca.OldFrisian.leaf.prior.."        
[245] "height.OldFrisian."                        "logP.mrca.OldEnglish.leaf.prior.."        
[247] "height.OldEnglish."                        "logP.mrca.Latin.leaf.prior.."             
[249] "height.Latin."                             "logP.mrca.DalmatianVegliote.leaf.prior.." 
[251] "height.DalmatianVegliote."                 "logP.mrca.AngloNorman.leaf.prior.."       
[253] "height.AngloNorman."                       "logP.mrca.OldOccitan.leaf.prior.."        
[255] "height.OldOccitan."                        "logP.mrca.OldCatalan.leaf.prior.."        
[257] "height.OldCatalan."                        "logP.mrca.OldSpanish.leaf.prior.."        
[259] "height.OldSpanish."                        "logP.mrca.Oscan.leaf.prior.."             
[261] "height.Oscan."                             "logP.mrca.Umbrian.leaf.prior.."           
[263] "height.Umbrian."                           "logP.mrca.Gaulish.leaf.prior.."           
[265] "height.Gaulish."                           "logP.mrca.OldWelsh.leaf.prior.."          
[267] "height.OldWelsh."                          "logP.mrca.MiddleWelsh.leaf.prior.."       
[269] "height.MiddleWelsh."                       "logP.mrca.MiddleCornish.leaf.prior.."     
[271] "height.MiddleCornish."                     "logP.mrca.LateCornish.leaf.prior.."       
[273] "height.LateCornish."                       "logP.mrca.OldBreton.leaf.prior.."         
[275] "height.OldBreton."                         "logP.mrca.MiddleBreton.leaf.prior.."      
[277] "height.MiddleBreton."                      "logP.mrca.OldIrish.leaf.prior.."          
[279] "height.OldIrish."                          "logP.mrca.GaelicManx.leaf.prior.."        
[281] "height.GaelicManx."
parse_beast_tracelog_file(here("data/real/iecor_ctmc-strict-M1/iecor_ctmc-strict-M1.log")) |> 
  colnames()

> [1] "Sample"                           "posterior"                        "likelihood"                      
  [4] "prior"                            "birthDeath"                       "TreeHeight.t.tree"               
  [7] "reproductiveNumber"               "becomeUninfectiousRate"           "samplingProportion.1"            
 [10] "samplingProportion.2"             "samplingProportion.3"             "samplingRateChangeTimes.t.tree.1"
 [13] "samplingRateChangeTimes.t.tree.2" "samplingRateChangeTimes.t.tree.3" "rho"                             
 [16] "birth"                            "SACount"                          "gammaShape.s.five"               
 [19] "treeLikelihood.ant"               "treeLikelihood.ash"               "treeLikelihood.back"             
 [22] "treeLikelihood.bad"               "treeLikelihood.bark"              "treeLikelihood.belly"            
 [25] "treeLikelihood.big"               "treeLikelihood.bird"              "treeLikelihood.bite"             
 [28] "treeLikelihood.bitter"            "treeLikelihood.black"             "treeLikelihood.blood"            
 [31] "treeLikelihood.bone"              "treeLikelihood.breathe"           "treeLikelihood.burn"             
 [34] "treeLikelihood.carry"             "treeLikelihood.chest"             "treeLikelihood.claw"             
 [37] "treeLikelihood.cloud"             "treeLikelihood.cold"              "treeLikelihood.come"             
 [40] "treeLikelihood.count"             "treeLikelihood.cry"               "treeLikelihood.day"              
 [43] "treeLikelihood.die"               "treeLikelihood.dig"               "treeLikelihood.dirty"            
 [46] "treeLikelihood.do"                "treeLikelihood.dog"               "treeLikelihood.drink"            
 [49] "treeLikelihood.dry"               "treeLikelihood.dust"              "treeLikelihood.ear"              
 [52] "treeLikelihood.earth"             "treeLikelihood.eat"               "treeLikelihood.egg"              
 [55] "treeLikelihood.eye"               "treeLikelihood.fall"              "treeLikelihood.far"              
 [58] "treeLikelihood.fear"              "treeLikelihood.feather"           "treeLikelihood.fight"            
 [61] "treeLikelihood.fire"              "treeLikelihood.fish"              "treeLikelihood.five"             
 [64] "treeLikelihood.flower"            "treeLikelihood.fly_N"             "treeLikelihood.fly_V"            
 [67] "treeLikelihood.fog"               "treeLikelihood.foot"              "treeLikelihood.forest"           
 [70] "treeLikelihood.four"              "treeLikelihood.freeze"            "treeLikelihood.fruit"            
 [73] "treeLikelihood.full"              "treeLikelihood.give"              "treeLikelihood.go"               
 [76] "treeLikelihood.good"              "treeLikelihood.grass"             "treeLikelihood.green"            
 [79] "treeLikelihood.grind"             "treeLikelihood.hair"              "treeLikelihood.hand"             
 [82] "treeLikelihood.hard"              "treeLikelihood.head"              "treeLikelihood.hear"             
 [85] "treeLikelihood.heart"             "treeLikelihood.heavy"             "treeLikelihood.hide"             
 [88] "treeLikelihood.hit"               "treeLikelihood.horn"              "treeLikelihood.hot"              
 [91] "treeLikelihood.house"             "treeLikelihood.hunt"              "treeLikelihood.ice"              
 [94] "treeLikelihood.kill"              "treeLikelihood.knee"              "treeLikelihood.know"             
 [97] "treeLikelihood.lake"              "treeLikelihood.laugh"             "treeLikelihood.leaf"             
[100] "treeLikelihood.left"              "treeLikelihood.leg"               "treeLikelihood.live"             
[103] "treeLikelihood.liver"             "treeLikelihood.long"              "treeLikelihood.louse"            
[106] "treeLikelihood.man"               "treeLikelihood.meat"              "treeLikelihood.moon"             
[109] "treeLikelihood.mountain"          "treeLikelihood.mouth"             "treeLikelihood.nail"             
[112] "treeLikelihood.name"              "treeLikelihood.narrow"            "treeLikelihood.navel"            
[115] "treeLikelihood.near"              "treeLikelihood.neck"              "treeLikelihood.new"              
[118] "treeLikelihood.night"             "treeLikelihood.nose"              "treeLikelihood.old"              
[121] "treeLikelihood.one"               "treeLikelihood.play"              "treeLikelihood.pull"             
[124] "treeLikelihood.push"              "treeLikelihood.rain"              "treeLikelihood.red"              
[127] "treeLikelihood.right"             "treeLikelihood.river"             "treeLikelihood.root"             
[130] "treeLikelihood.rotten"            "treeLikelihood.round"             "treeLikelihood.run"              
[133] "treeLikelihood.salt"              "treeLikelihood.sand"              "treeLikelihood.say"              
[136] "treeLikelihood.sea"               "treeLikelihood.see"               "treeLikelihood.seed"             
[139] "treeLikelihood.sew"               "treeLikelihood.shadow"            "treeLikelihood.sharp"            
[142] "treeLikelihood.short"             "treeLikelihood.sing"              "treeLikelihood.sit"              
[145] "treeLikelihood.skin"              "treeLikelihood.sky"               "treeLikelihood.sleep"            
[148] "treeLikelihood.small"             "treeLikelihood.smell"             "treeLikelihood.smoke"            
[151] "treeLikelihood.smooth"            "treeLikelihood.snake"             "treeLikelihood.snow"             
[154] "treeLikelihood.stand"             "treeLikelihood.star"              "treeLikelihood.stick"            
[157] "treeLikelihood.stone"             "treeLikelihood.straight"          "treeLikelihood.sun"              
[160] "treeLikelihood.sweet"             "treeLikelihood.swell"             "treeLikelihood.swim"             
[163] "treeLikelihood.tail"              "treeLikelihood.take"              "treeLikelihood.thick"            
[166] "treeLikelihood.thigh"             "treeLikelihood.think"             "treeLikelihood.three"            
[169] "treeLikelihood.throw"             "treeLikelihood.tie"               "treeLikelihood.tongue"           
[172] "treeLikelihood.tooth"             "treeLikelihood.tree"              "treeLikelihood.turn"             
[175] "treeLikelihood.two"               "treeLikelihood.vomit"             "treeLikelihood.wash"             
[178] "treeLikelihood.water"             "treeLikelihood.wet"               "treeLikelihood.white"            
[181] "treeLikelihood.wide"              "treeLikelihood.wind"              "treeLikelihood.wing"             
[184] "treeLikelihood.woman"             "treeLikelihood.worm"              "treeLikelihood.year"             
[187] "treeLikelihood.yellow"            "treeLikelihood.yesterday"         "mutationRate.s.five"             
[190] "freqParameter.s.five.1"           "freqParameter.s.five.2"           "clockRate.c.clock"

Par contre ça a l'air bon pour le transeurasien.

emmakopp1 commented 1 month ago

Oui…. Il n’ont pas demandé ces paramètres dans avant de lancer BEAST et je n’avais pas vérifié…. Je vais relancer l’analyse en demandant ces outputs. Est-ce que tu pourrais avoir facilement une liste de tous les meaning pour être sur que je n’en oublie pas ?

Dès que j’ai cela je peux lancer l’analyse. Je vais upload les premier output (même s’ils n’ont pas convergé pour que l’on puisse quand même travailler sur le code)

tpellard commented 1 month ago

Pour le TEA, les valeurs de π₀, π₁, q par concept et le nombre d'ensemble de cognats par concept (n_cogsets) sont dans le fichier "output/results/tracelog_summary.csv":

family n_trees pi0 pi1 q t_R concept n_cogsets N k
Bantu 57120 0.99 0.01 1.03 6.17 NA NA 424 3859
Bantu_subset 10001 0.98 0.02 1.04 5.20 NA NA 107 3859
Bantu_subset2 10001 0.98 0.02 1.05 6.06 NA NA 52 3859
ST 100001 0.94 0.06 1.12 8.45 NA NA 50 3784
TEA 2001 0.82 0.18 1.41 146.73 1PL 6 98 3421
TEA 2001 0.83 0.17 1.41 146.73 1SG 6 98 3421
TEA 2001 0.97 0.03 1.06 146.73 2PL 12 98 3421
TEA 2001 0.95 0.05 1.10 146.73 2SG 10 98 3421
TEA 2001 0.98 0.02 1.05 146.73 3SG 13 98 3421
TEA 2001 0.93 0.07 1.14 146.73 above 10 98 3421
tpellard commented 1 month ago

Pour l'indo-européen, j'ai du mal à comprendre le fichier iecor.nex.

Il contient 161 langues × 4990 caractères, mais comme on avait vu, la liste des charstatelabels contient par exemple au début

begin characters;
  dimensions nchar=4990;
  format symbols="01" missing=?;
  charstatelabels
    1 ant_group,
    2 ant_cognate_5007,
    3 ant_cognate_6094,
    4 ant_cognate_5281,

Et pour le concept "ant", il y a 23 entrées qui correspondent a priori aux 23 premières colonnes de la matrice, mais la ligne avec ant_group est étrange.

Or on peut vérifier que dans la base de données en ligne il n'y a que 22 classes de cognats pour le concept "ant", et pas 23: https://iecor.clld.org/parameters/ant

Donc ant_group est une colonne de la matrice de traits mais pourtant ça ne correspond pas à une classe de cognats.

En regardant la matrice, il semble que toutes les entrées du type _group sont remplies par:

Je n'ai jamais vu ça et je ne sais pas pourquoi c'est fait comme ça

emmakopp1 commented 1 month ago

Mon interprétation (peut-être fausse) est que si BEAST sort un pi0 et pi1 par sens, cela me parait cohérent d’avoir une colonne qui correspond au sens global. Par ailleurs j’ai l’impression que pour ‘ant’ la colonne ant_group est toujours encodé par un 0. Cela voudrait dire qu’elle ne rentre pas en compte dans l’analyse. Ce qui voudrait dire que l’on peut l’ignore.

Le fait que la base de donnée dise qu’il y en a 22 et 23 va dans ce sens également. Je propose donc qu’on ignore les ‘group’. Pour etre sur on peut vérifier que la sommes du nombre de colonne par sens est bien égale au nombre de sens total à la fin (i.e 4990)

Qu’en penses-tu ?

tpellard commented 1 month ago

En fait comme je le disais ant_group a pour valeur soit ? soit 0. Je ne sais pas si cela peut avoir une influence ou non sur les résultats mais je ne comprends pas à quoi ça sert de mettre ça en entrée de l'analyse beast.

Pour le nombre de traits:

read_lines(here("data/real/iecor_ctmc-strict-M1/iecor.nex")) |> 
  str_subset("_(group|cognate)") |> 
  str_replace("^.+_(group|cognate)(_\\d+)?,?$", "\\1") |> 
  table()

> cognate   group 
   4820     170

On sait effectivement que leur liste a 170 concepts différents.

tpellard commented 1 month ago

La liste de concepts à partir du fichier nexus:

read_lines(here("data/real/iecor_ctmc-strict-M1/iecor.nex")) |> 
  str_subset("_(group|cognate)") |> 
  str_remove_all("_(group|cognate).*$|^\\s+\\d+\\s+") |> 
  unique()

> [1] "ant"       "ash"       "back"      "bad"       "bark"      "belly"     "big"       "bird"             
  [9] "bite"      "bitter"    "black"     "blood"     "bone"      "breathe"   "burn"      "carry"    
 [17] "chest"     "claw"      "cloud"     "cold"      "come"      "count"     "cry"       "day"      
 [25] "die"       "dig"       "dirty"     "do"        "dog"       "drink"     "dry"       "dust"     
 [33] "ear"       "earth"     "eat"       "egg"       "eye"       "fall"      "far"       "fear"     
 [41] "feather"   "fight"     "fire"      "fish"      "five"      "flower"    "fly_N"     "fly_V"    
 [49] "fog"       "foot"      "forest"    "four"      "freeze"    "fruit"     "full"      "give"     
 [57] "go"        "good"      "grass"     "green"     "grind"     "hair"      "hand"      "hard"     
 [65] "head"      "hear"      "heart"     "heavy"     "hide"      "hit"       "horn"      "hot"      
 [73] "house"     "hunt"      "ice"       "kill"      "knee"      "know"      "lake"      "laugh"    
 [81] "leaf"      "left"      "leg"       "live"      "liver"     "long"      "louse"     "man"      
 [89] "meat"      "moon"      "mountain"  "mouth"     "nail"      "name"      "narrow"    "navel"    
 [97] "near"      "neck"      "new"       "night"     "nose"      "old"       "one"       "play"     
[105] "pull"      "push"      "rain"      "red"       "right"     "river"     "root"      "rotten"   
[113] "round"     "run"       "salt"      "sand"      "say"       "sea"       "see"       "seed"     
[121] "sew"       "shadow"    "sharp"     "short"     "sing"      "sit"       "skin"      "sky"      
[129] "sleep"     "small"     "smell"     "smoke"     "smooth"    "snake"     "snow"      "stand"    
[137] "star"      "stick"     "stone"     "straight"  "sun"       "sweet"     "swell"     "swim"     
[145] "tail"      "take"      "thick"     "thigh"     "think"     "three"     "throw"     "tie"      
[153] "tongue"    "tooth"     "tree"      "turn"      "two"       "vomit"     "wash"      "water"    
[161] "wet"       "white"     "wide"      "wind"      "wing"      "woman"     "worm"      "year"     
[169] "yellow"    "yesterday"
emmakopp1 commented 1 month ago

Je pense que ça sert à rien en effet de mettre soit ? soit 0. J’en parle à Robin demain. Merci pour la liste des concept, je lance l'analyse

emmakopp1 commented 1 month ago

Après analyse détaillée des fichiers .xml et (moins détaillée) des documents supplémentaires, ils mettent pour chaque trait un model différent. Le modèle étant définit par : un modèle d’arbre, un modèle d’évolution des sites, et un modèle d'horloge.

En voici un exemple : <distribution id="treeLikelihood.fall" spec="TreeLikelihood" branchRateModel="@StrictClock.c:clock" siteModel="@SiteModel.s:five" tree="@Tree.t:tree>

Ici pour le sens ‘fall’, ils proposent un arbre, un clock model et un site model. On remarque que le modèle d’évolution des sites est @SiteModel.s:five. Cela est le cas pour chacun des sens. Selon moi, cela signifie que tous les sens suivent le même modèle de substitution que le sens ‘five’. Ce qui voudrait dire que finalement nous avons un seul output pi0 et pi1.

J’ai essayé de faire apparaître en dans les fichiers log le paramètre « freqParameter.s:turn » pour voir s’ils existent, cela renvoie une erreur selon laquelle  freqParameter.s:turn n’existe pas.

Ma conclusion : un seul pi0 et pi1 pour ce dataset. Question : pourquoi mettre une arbre différent sur chaque sens ?

tpellard commented 1 month ago

Oui j'avais vu qu'on avait le même paramètre freqParameter.s.five qui se répétait, mais je ne comprends pas pourquoi puisque je m'attendais comme pour le TEA a avoir un paramètre par concept

emmakopp1 commented 1 month ago

Je suis étonnée aussi. D’autant plus que ‘five’ fait référence à un sens et non pas à un paramètre général….

En revanche il met un arbre par concept. D’où le un paramètre tree.likelihood présent pour chaque concept