Hi Jérémie,

You're correct: the current version of write.tree() scales with n^2. This seems to be related to calling the generic '[[' operator. You can modify the code with the usual fix(write.tree), then insert these two lines:

    phy <- .uncompressTipLabel(phy)
    class(phy) <- NULL

right before the 'for' loop, save and close. You may need to use the modified code once or twice (with a small tree) so that R might byte-compile it. I've tried it with the 2027025 trees generared by allTrees(9,rooted=T) and it took 8.5 mins (instead of the predicted 28 hrs with the current code).

Best,

Emmanuel

Le 23/01/2019 à 10:51, Jérémie Bardin a écrit :
Hi all,
I tried to export 2 millions trees to a .tre file with write.tree. This never 
ends, thus i tried to get why and realized that the time to write the .tre 
depends exponentially on the number of trees.

trees<-allTrees(9,rooted=T)to<-seq(10000,2000000,10000)durations<-NAfor(i in 1:length(to)) { 
ptm <- proc.time() write.tree(trees[1:to[i]], file = "test.tre") 
durations[i]<-(proc.time() - ptm)[3]}
I do not really get why it is not nearly linear. Any explanation?
Cheers, Jérémie
----
Jérémie Bardin, Dr.

CR2P - Centre de Recherche en Paléontologie - ParisSorbonne Université - MNHN - 
CNRS
Site Jussieu, Tour 46-56, 5°et.
4 place Jussieu, 75252 Paris Cedex 05
tel. +331.44.27.51.77.
jeremie.bar...@upmc.fr / jbar...@mnhn.fr / jeremiebar...@yahoo.fr

        [[alternative HTML version deleted]]

_______________________________________________
R-sig-phylo mailing list - R-sig-phylo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-phylo
Searchable archive at http://www.mail-archive.com/r-sig-phylo@r-project.org/


Pour nous remonter une erreur de filtrage, veuillez vous rendre ici : 
http://f.security-mail.net/fPLqvOj4



_______________________________________________
R-sig-phylo mailing list - R-sig-phylo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-phylo
Searchable archive at http://www.mail-archive.com/r-sig-phylo@r-project.org/

Reply via email to