-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathREADME.Rmd
More file actions
185 lines (131 loc) · 5.64 KB
/
Copy pathREADME.Rmd
File metadata and controls
185 lines (131 loc) · 5.64 KB
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
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
---
title: ""
output:
md_document
---
```{r, echo = FALSE, message = FALSE, warning = FALSE}
#knitr::opts_chunk$set(out.width='750px', dpi=200)
knitr::opts_chunk$set(collapse = TRUE, comment = "#>")
```
--------------------------------------------------------------------------------
### Informatic sequence classification trees
`insect` is an R package for taxonomic identification of amplicon
sequence variants generated by DNA meta-barcoding analysis.
The learning and classification algorithms implemented in the
package are based on full probabilistic models (profile hidden Markov models)
and offer highly accurate taxon IDs, albeit at a relatively high computational cost.
The package also contains functions for searching and downloading reference
sequences and taxonomic information from NCBI,
a "virtual PCR" tool for sequence trimming,
a function for purging erroneously labeled reference sequences,
and several other tools.
`insect` is designed to be used in conjunction with the
[dada2](https://benjjneb.github.io/dada2/index.html) pipeline or other
de-noising tools that produce a list of amplicon sequence variants (ASVs).
While unfiltered sequences can also be processed with high accuracy,
the **insect** classification algorithm is relatively slow,
since it uses a computationally intensive dynamic
programming algorithm to find the likelihood values
of each sequence given the models at each node of the classification tree.
Hence filtered input datasets are generally be
much faster to process.
### Installation
To download **insect** from CRAN and load the package, run
```{r, eval = FALSE}
install.packages("insect")
library(insect)
```
To download the latest development version from GitHub, run:
```{r, eval = FALSE}
devtools::install_github("shaunpwilkinson/insect", build_vignettes = TRUE)
library(insect)
```
```{r, echo = FALSE}
library(insect)
```
### Classifying sequences
Classifiers for some of the more commonly used metabarcoding primer
sets are available here:
<!-- note newlines needed between html tags and code chunk -->
<div class="verysmall">
```{r, echo = FALSE, results='asis'}
tmp <- tempfile(fileext = ".csv")
u <- "https://docs.google.com/spreadsheets/d/1pmTlZBnWIZzxZzS8zm943uGL56qpDPBmoOBht9OzVvQ/export?gid=0&format=csv"
download.file(u, destfile = tmp)
mytab <- read.table(text = readLines(tmp, warn = FALSE), header = TRUE, sep = ",", stringsAsFactors = FALSE)
mytab <- mytab[order(mytab$Marker, mytab$Target),]
rownames(mytab) <- NULL
knitr::kable(mytab)
```
</div>
To classify a sequence or set of sequences, first read them into R as a "DNAbin"
list object. FASTA files can be parsed as follows:
```{r, eval = FALSE}
x <- readFASTA("<path-to-file>.fasta")
```
Alternatively users may wish to assign taxon IDs to the output from the
[DADA2](https://www.nature.com/articles/nmeth.3869)
pipeline, in which case the column names of the ouput
table can be parsed as in the following example:
```{r}
data("samoa")
x <- char2dna(colnames(samoa))
## name the sequences sequentially
names(x) <- paste0("ASV", seq_along(x))
```
The next step is to download and read in the classifier.
It is important to ensure that the classifier was trained using the
same primer set as that used to generate the query data.
In this example the data were generated from
autonomous reef monitoring structures in
American Samoa (ARMS) using the COI metabarcoding primers mlCOIintF and jgHCO2198
([Leray et al 2013](https://frontiersinzoology.biomedcentral.com/articles/10.1186/1742-9994-10-34)),
and de-noised, filtered and merged following the
[DADA2 tutorial](https://benjjneb.github.io/dada2/tutorial.html).
The COI classifier was created using the
MIDORI UNIQUE 20180221 (https://reference-midori.info/download.php)
trainingset, supplemented with around 14,000 non-metazoan
COI sequences downloaded from GenBank.
The 140 MB classifier can be downloaded
and read into R as follows:
```{r}
tmpf <- tempfile()
download.file("https://www.dropbox.com/s/dvnrhnfmo727774/classifier.rds?dl=1",
destfile = tmpf, mode = "wb")
classifier <- readRDS(tmpf)
```
There is an option to perform a nearest-neighbor search prior to the
computationally-expensive recursive model test procedure, which can save
time and improve resolution ('recall') at lower taxonomic ranks.
Note that this can be a double-edged sword; if multiple species share
an identical or near-identical sequence, and the true taxon of the query sequence
is missing from the trainingset, the algorithm may over-classify the sequence
and return a congeneric taxon.
To perform a nearest-neighbor search with a similarity threshold of 0.99
(meaning any sequence in the trainingset with a similarity greater than or
equal to 99% is considered a match), set `ping = 0.99`.
To stay on the safe side, we will set `ping = 1`
(i.e. only sequences with 100% identity are considered matches).
```{r}
out <- classify(x, classifier, threshold = 0.8)
```
<!-- note newlines needed between html tags and code chunk -->
<div class="verysmall">
```{r, echo = FALSE}
knitr::kable(out)
```
</div>
### Further reading
A more detailed overview of the package and its functions can be found
[here](https://rpubs.com/shaunpwilkinson/insect) or by running
```{r, eval = FALSE}
vignette("insect-vignette")
```
### Issues
If you experience a problem using this software please feel free to
raise it as an issue on [GitHub](https://github.com/shaunpwilkinson/insect/issues).
### Acknowledgements
This software was developed at
[Victoria University of Wellington](https://www.wgtn.ac.nz/)
with funding from a Rutherford Foundation Postdoctoral Research Fellowship
award from the Royal Society of New Zealand.