Dear Max,
there is a function called coph in phangorn. The function is hidden in the
name space, so you have to use phangorn:::coph.
It returns a dist object instead of a matrix and computing time is roughly
O(n^2) instead of O(n^3).
> library(phangorn)> tree <- rtree(10000)
> system.time(cm1 <- cophenetic(tree))
   user  system elapsed
  4.312   0.428   4.752
> system.time(cm2 <- phangorn:::coph(tree))
   user  system elapsed
  0.228   0.036   0.262
For large trees you are likely running out of memory, so Cecile's approach
is in the long run probably better.
Cheers,
Klaus



On Fri, Dec 15, 2017 at 5:26 PM, Cecile Ane <cecile....@wisc.edu> wrote:

> Not in phylolm, because it’s faster to avoid manipulating this large
> matrix, if possible (and it is indeed possible for many purposes). If you
> can rephrase your calculations to use branching times (distance from a node
> to its descendant tips) or using the nodes’ distance to the root, then you
> could use functions like pruningwise.branching.times and
> pruningwise.distFromRoot in phylolm. Other folks could chime in, for tools
> in other packages.
> Cécile
>
> On Dec 15, 2017, at 3:55 PM, Max Farrell <maxwellfarr...@gmail.com<mailto:
> maxwellfarr...@gmail.com>> wrote:
>
> Hi Cecile,
>
> Thanks for the input - it looks like this function does perform the tree
> rescaling, and in about 1/4 of the time, so this could help speed up the
> code!
>
> However, the function doesn't seem to return a covariance matrix. Is there
> a way to get the cophenetic matrix with the out put of this function?
> Otherwise I'm stuck using cophenetic again...
>
> Max
>
> Max
>
> On Fri, Dec 15, 2017 at 4:36 PM, Cecile Ane <cecile....@wisc.edu<mailto:ce
> cile....@wisc.edu>> wrote:
> In the package phylolm, the function "transf.branch.lengths” might do what
> you need. It has an option model=“EB” for early burst.
> Cécile
>
> > On Dec 15, 2017, at 3:27 PM, Max Farrell <maxwellfarr...@gmail.com<
> mailto:maxwellfarr...@gmail.com>> wrote:
> >
> > I have been using the rescale function from geiger for a link prediction
> > model I recently helped develop (https://arxiv.org/abs/1707.08354). I'm
> now
> > running this model on a much larger dataset and part of the code is
> > computing cophenetic(rescale(phy)) with 'EB' rescaling many many times.
> >
> > We're finding that calling cophenetic() is the rate limiting step, and if
> > we can avoid this function we expect to speed up our code by up to 4
> times.
> > This would be very useful as our simulation has been running for over 50
> > days now...
> >
> > I was wondering if there is a way to do EB transformations on a
> > phylogenetic distance matrix directly so as to avoid using the cophenetic
> > function?
> >
> > Any help or insights would be greatly appreciated!
> >
> >       [[alternative HTML version deleted]]
> >
> > _______________________________________________
> > R-sig-phylo mailing list - R-sig-phylo@r-project.org<mailto:
> 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-ph...@r-project.org/
>
> _______________________________________________
> R-sig-phylo mailing list - R-sig-phylo@r-project.org<mailto:
> 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-ph...@r-project.org/
>
>
>
>         [[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-ph...@r-project.org/
>



-- 
Klaus Schliep
Postdoctoral Fellow
Revell Lab, University of Massachusetts Boston
http://www.phangorn.org/

        [[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/

Reply via email to