Code Monkey home page Code Monkey logo

treesearch's Introduction

TreeSearch

codecov CRAN Status Badge CRAN RStudio mirror downloads CRAN RStudio mirror downloads DOI Project Status: Active – – The project has reached a stable, usable state and is being actively developed.

"TreeSearch" (Smith 2023) is an R package that contains a "shiny" user interface for interactive tree search and exploration of results, including character visualization, rogue taxon detection (Smith 2022a), tree space mapping (Smith 2022b), and cluster consensus trees.

Inapplicable character states are handled using the algorithm of Brazeau, Guillerme and Smith (2019) using the "Morphy" C library (Brazeau et al. 2017). Implied weighting (Goloboff, 1993), Profile Parsimony (Faith and Trueman, 2001) and Successive Approximations (Farris, 1969) are implemented; custom optimality criteria and search approaches can also be defined.

Installing in R

Full installation instructions, including notes on installing R, are available in a vignette.

Install and load the stable version from CRAN as follows:

install.packages("TreeSearch")
library("TreeSearch")

Install and load the development version of "TreeSearch" with:

if(!require("curl")) install.packages("curl")
if(!require("remotes")) install.packages("remotes")
remotes::install_github("ms609/TreeSearch")
library("TreeSearch")

Installing stand-alone application

The TreeSearch user interface can be run as a stand-alone application without installing R. Download the latest release for your platform. If your preferred platform is not supported, please contact the maintainer.

Installation on Windows

You may need to obtain the ffmpeg library before you can run TreeSearch.

This is best installed using 'Chocolatey'.

Once chocolatey is installed, open a PowerShell window with administrative privileges, and type choco install ffmpeg; then restart your computer.

Quick start

Launch a graphical user interface by typing TreeSearch::EasyTrees() in the R console.

For more control over search settings, see ?MaximizeParsimony().

Flow charts listing common actions facilitated by TreeSearch

Documentation

Please note that the 'TreeSearch' project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.

References

Brazeau M. D., Smith M. R., Guillerme T. (2017). MorphyLib: a library for phylogenetic analysis of categorical trait data with inapplicability. doi: 10.5281/zenodo.815372.

Brazeau, M. D., Guillerme, T. and Smith, M. R. (2019). An algorithm for morphological phylogenetic analysis with inapplicable data. Systematic Biology, 68(4), 619-631. doi: 10.1093/sysbio/syy083.

Faith D. P., Trueman J. W. H. (2001). Towards an inclusive philosophy for phylogenetic inference. Systematic Biology, 50(3), 331–350. doi: 10.1080/10635150118627.

Farris, J. S. (1969). A successive approximations approach to character weighting. Systematic Biology, 18(4), 374–385. doi: 10.2307/2412182.

Goloboff, P. A. (1993). Estimating character weights during tree search. Cladistics, 9(1), 83–91. doi: 10.1111/j.1096-0031.1993.tb00209.x.

Goloboff, P. A., Torres, A., Arias, J. S. (2018). Weighted parsimony outperforms other methods of phylogenetic inference under models appropriate for morphology. Cladistics, 34(4), 407–437. doi: 10.1111/cla.12205.

Smith, M. R. (2022a). Using information theory to detect rogue taxa and improve phylogenetic trees. Systematic Biology, 71(5), 1088–1094. doi: 10.1093/sysbio/syab099

Smith, M. R. (2022b). Robust analysis of phylogenetic tree space. Systematic Biology, 71(5), 1255–1270. doi: 10.1093/sysbio/syab100

Smith, M. R. (2023). TreeSearch: morphological phylogenetic analysis in R. R Journal, 14(4), 305-315. doi: 10.32614/RJ-2023-019

treesearch's People

Contributors

actions-user avatar fabriziosandri avatar ms609 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

treesearch's Issues

rgl import

Either

  • Remove rgl from imports, and from the app
    or
  • Add 3d plotting functionality to the app

Citation should link to MorphyLib

Should cite TreeSearch as standalone package, with MorphyLib & algorithm paper to be cited when used (cf. profile parsimony / successive approx / etc context)

Loading trees

Hi Martin,

My name is Eunok Lee from the Westmead Institute for Medical Research. I am trying to load the tree using ape and phytool packages and I ran into the issues below:

  1. When I tried to load my phylogenetic tree using read.tree(mytree.newick), I found that some tip labels were removed. When I opened the same newick file in text, I could see the tip label that I am interested in. I reinstalled the ape package and re-loaded in R, but the same problem occurred.... Could you help me how to fix this issue?

  2. Due to the problem above, I tried using phytools::read.newick(). This does import the tree with all the tip labels; however, the tip label is only showing up to 22 characters. What should do to make the tip label to display the tip labels in a full character length?

Thank you and I look forward to your advice!

With kind regards,

Eunok

Random crashes due to allocation issues

Turbinicarpus ss_26 paupout.txt

I have tested the package with some data (attached).
Here the code that causes the crash. This snippet is taken from vignettes/inapplicable.rmd example code, which runs flawlessly.


turbini.data <- ReadAsPhyDat("Turbinicarpus ss_26 paupout.nex")
RNGversion("3.5.0")
set.seed(0)

nj.tree <- NJTree(turbini.data)
outgroup <- c("beguinii")
rooted.tree <- EnforceOutgroup(nj.tree, outgroup)

better.tree <- TreeSearch(tree=rooted.tree, dataset=turbini.data,
                        EdgeSwapper=RootedNNISwap, verbosity=3)

Thank you very much for the help.

Calculate the Clade Concordance statistic of Nixon & Carpenter (1996)

Requires scores to be calculated on polytomies.

See Kearney 2002, Syst Biol, for a potential use wrt rogue taxa.

@article{Nixon1996,
  title = {On consensus, collapsibility, and clade concordance},
  author = {Nixon, Kevin C. and Carpenter, James M.},
  year = {1996},
  journal = {Cladistics},
  volume = {12},
  number = {4},
  pages = {305--321},
  doi = {10.1111/j.1096-0031.1996.tb00017.x}
}

@article{Kearney2002,
  title = {Fragmentary taxa, missing data, and ambiguity: mistaken assumptions and conclusions},
  author = {Kearney, Maureen},
  year = {2002},
  journal = {Systematic Biology},
  volume = {51},
  number = {2},
  pages = {369--381},
  doi = {10.1080/10635150252899824}
}

MaximumLength()

Function to complement [MinimumLength()] is advertised in NEWS.md but doesn't yet exist.

Fix PhyDat

Function doesn't work with
dataset <- inapplicable.datasets[['Longrich2010']]

Generate all rearranged trees

A substantial proportion of time is being spent sampling, and in the overhead of decomposing a tree into variables. If we could list all trees that were 1 SPR step away from the current tree and score those, we'd save a lot of time in rearrangements.

could not find function with TreeSearch 0.4.0

Hi,

I update the package to version 0.4.0 . But it doesn't work. Below is the error

library(TreeSearch)
Warning message:
package ‘TreeSearch’ was built under R version 3.5.3
SampleOne(1:10,len=10)
Error in SampleOne(1:10, len = 10) : could not find function "SampleOne"

@DSRovinsky wishlist

  • Support stats like:

    • Bremer/branch supports
    • CI/RI: See phangorn:CI()
    • bootstrapping: See MorphyBootstrap(), though Jackknife() is usually more appropriate.
  • Ability to

    • 'force' a tip into a clade
    • & run a Templeton test for alternative hypotheses
    • [MS note for v1.0:] Can profile parsimony offer a better test?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.