-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.Rmd
168 lines (128 loc) · 4.73 KB
/
README.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
phylodiv
========
```{r echo=FALSE}
knitr::opts_chunk$set(
warning = FALSE,
message = FALSE,
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/"
)
```
[![Build Status](https://travis-ci.com/ropensci/phylodiv.svg?branch=master)](https://travis-ci.com/ropensci/phylodiv)
[![Build status](https://ci.appveyor.com/api/projects/status/6mgc02mkd8j4sq3g/branch/master)](https://ci.appveyor.com/project/sckott/phylodiv-175/branch/master)
[![codecov.io](https://codecov.io/github/ropensci/phylodiv/coverage.svg?branch=master)](https://codecov.io/github/ropensci/phylodiv?branch=master)
[![rstudio mirror downloads](https://cranlogs.r-pkg.org/badges/phylodiv)](https://github.com/metacran/cranlogs.app)
[![cran version](https://www.r-pkg.org/badges/version/phylodiv)](https://cran.r-project.org/package=phylodiv)
`phylodiv`: Phylogenetic Biodiversity Query Tools
## Installation
Development version from GitHub
```{r eval=FALSE}
if (!require("remotes")) install.packages("remotes")
remotes::install_github("ropensci/phylodiv")
```
```{r eval=FALSE}
BiocManager::install("ggtree")
```
```{r}
library('phylodiv')
```
## The idea
```
# given a tree
tree
# read the tree
pd_read()
# collect all higher taxonomic information from those names
pd_taxa()
# compose a phylogeny based query
pd_query()
# send the query to a biodiversity backend, e.g., GBIF
pd_biodiv()
# visualize results
pd_viz()
```
## given a tree
```{r}
library(ape)
heli <- c("Helianthus agrestis", "Helianthus angustifolius", "Helianthus annuus",
"Helianthus deserticola", "Helianthus divaricatus", "Helianthus eggertii",
"Helianthus gracilentus", "Helianthus hirsutus", "Helianthus inexpectatus",
"Helianthus laciniatus", "Helianthus maximiliani",
"Helianthus nuttallii", "Helianthus occidentalis", "Helianthus paradoxus",
"Helianthus pauciflorus", "Helianthus petiolaris", "Helianthus porteri",
"Helianthus verticillatus", "Helianthus winteri")
tree <- rcoal(length(heli))
(tree$tip.label <- heli)
```
## read the tree
```{r}
(res <- pd_read(tree))
```
The PhyloDiv object
```{r}
class(res)
names(res)
```
## collect all higher taxonomic information from those names
```{r}
(res <- pd_taxa(res))
res$trees
```
## compose a phylogeny based query
```{r}
res <- pd_query(res, c("Helianthus agrestis", "Helianthus angustifolius", "Helianthus petiolaris"))
res$query
```
## send the query to a biodiversity backend, e.g., GBIF
```{r}
(res <- pd_biodiv(res, type = 'facet', by = "country"))
```
## visualize results
```{r}
pd_vis(res, type = "facet")
```
## metadata
```{r eval=FALSE}
pd_meta() # print to cosole
file <- tempfile()
pd_meta(file = file) # save to file
jsonlite::fromJSON(file)
```
## Thinking out loud
**general questions**
- how do people interact with phylogenies in R? that is how to they most often refer to nodes/tips?
- what about the use case of comparing 1 or more phylogenies against one another?
-
**pd_read**:
- make sure to handle any local or remote tree, and many R tree objects
**pd_taxa**:
- add option to use taxizedb to handle large data problems better
- is there a way to programatically label upstream nodes after collecting taxonomic hierarchies?
**pd_query**:
- this is the most slippery problem
- two major approaches: taxonomic or phylogenetic
- taxonomic e.g., if user wants specific names (e.g., i want species A, B, and C)
- phylogenetic e.g., if user wants to see clade A compared to clade B
- what to do if a user wants higher node in the tree for which we don't know the name?
- are there tools to guess these names?
- possibly just error with message telling user to name that node?
**pd_biodiv** options include (assuming using GBIF):
- get all occurrences (via `rgbif::occ_data()`), slowish; need caching mechanism
- get just count data (via `rgbif::occ_data()`, but just get counts), fast; probably no need for caching mechanism
- GBIF downloads (via `rgbif::occ_download()`), slowish, but only option to "get all the data"; need caching mechanism
**pd_vis** options include:
- base plots, plain ol maps
- GBIF maps API, rasters:
- with base plots, static maps
- with leaflet, interactive maps
- do we support maps of occurences matched against a phylogeny? or is that not needed?
- perhaps other R packages can be leveraged here
## Meta
* Please [report any issues or bugs](https://github.com/ropensci/phylodiv/issues).
* License: MIT
* Get citation information for `phylodiv` in R doing `citation(package = 'phylodiv')`
* Please note that this project is released with a [Contributor Code of Conduct][coc].
By participating in this project you agree to abide by its terms.
[![rofooter](https://ropensci.org/public_images/github_footer.png)](https://ropensci.org)
[coc]: https://github.com/ropensci/phylodiv/blob/master/CODE_OF_CONDUCT.md