From 51e500e4d0d7118869e3be64588f0943e3c8ab8b Mon Sep 17 00:00:00 2001 From: Kelly Sovacool Date: Wed, 9 Feb 2022 12:33:19 -0500 Subject: [PATCH 01/15] Add function to calculate relative abundance from a shared file --- R/calculate.R | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 R/calculate.R diff --git a/R/calculate.R b/R/calculate.R new file mode 100644 index 0000000..5458c01 --- /dev/null +++ b/R/calculate.R @@ -0,0 +1,8 @@ + +calc_rel_abun <- function(abs_abun_dat) { + abs_abun_dat$total_counts <- rowSums(abs_abun_dat %>% select(starts_with('Otu'))) + rel_abun_dat <- abs_abun_dat %>% rename(sample = Group) %>% + pivot_longer(starts_with("Otu"), names_to = 'otu', values_to = 'count') %>% + mutate(rel_abun = count / total_counts) %>% + select(sample, otu, rel_abun) +} From 573551e156a2fa794ee9101f874c1f28e3196fbd Mon Sep 17 00:00:00 2001 From: Kelly Sovacool Date: Thu, 10 Mar 2022 20:52:43 -0500 Subject: [PATCH 02/15] use_test('calculate') --- tests/testthat/test-calculate.R | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 tests/testthat/test-calculate.R diff --git a/tests/testthat/test-calculate.R b/tests/testthat/test-calculate.R new file mode 100644 index 0000000..8849056 --- /dev/null +++ b/tests/testthat/test-calculate.R @@ -0,0 +1,3 @@ +test_that("multiplication works", { + expect_equal(2 * 2, 4) +}) From 631b82be09be582867764b59762bcfa9bbfbc477 Mon Sep 17 00:00:00 2001 From: Kelly Sovacool Date: Thu, 22 Sep 2022 13:05:56 -0400 Subject: [PATCH 03/15] Add docs & tests for calc_relabun() --- DESCRIPTION | 2 +- NAMESPACE | 1 + R/calculate.R | 21 +++++++- tests/testthat/test-calculate.R | 89 ++++++++++++++++++++++++++++++++- vignettes/introduction.Rmd | 31 +++++++++++- 5 files changed, 138 insertions(+), 6 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 098c324..e6b0b08 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -66,4 +66,4 @@ VignetteBuilder: Encoding: UTF-8 LazyData: true Roxygen: list(markdown = TRUE) -RoxygenNote: 7.1.1 +RoxygenNote: 7.2.1 diff --git a/NAMESPACE b/NAMESPACE index a1fbf99..7258717 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -2,6 +2,7 @@ export("%>%") export(.data) +export(calc_relabun) export(close_enough) export(format_number) export(inline_hook) diff --git a/R/calculate.R b/R/calculate.R index 5458c01..ff0f1cf 100644 --- a/R/calculate.R +++ b/R/calculate.R @@ -1,8 +1,25 @@ -calc_rel_abun <- function(abs_abun_dat) { +#' Calculate OTU relative abundances from a shared file +#' +#' @param abs_abun_dat a data frame from reading in a [shared file](https://mothur.org/wiki/shared_file). +#' Should contain a `Group` column for sample names, +#' `Otu` columns for absolute counts of each OTU, +#' and rows as each sample. +#' +#' @return a new data frame with OTU relative abundances in long format. +#' @export +#' @author Kelly Sovacool \email{sovacool@@umich.edu} +#' +#' @examples +#' shared_dat <- readr::read_tsv(system.file("extdata", "test.shared", +#' package = "schtools")) +#' shared_dat %>% calc_relabun() +calc_relabun <- function(abs_abun_dat) { abs_abun_dat$total_counts <- rowSums(abs_abun_dat %>% select(starts_with('Otu'))) - rel_abun_dat <- abs_abun_dat %>% rename(sample = Group) %>% + rel_abun_dat <- abs_abun_dat %>% + rename(sample = Group) %>% pivot_longer(starts_with("Otu"), names_to = 'otu', values_to = 'count') %>% mutate(rel_abun = count / total_counts) %>% select(sample, otu, rel_abun) + return(rel_abun_dat) } diff --git a/tests/testthat/test-calculate.R b/tests/testthat/test-calculate.R index 8849056..3be4ca5 100644 --- a/tests/testthat/test-calculate.R +++ b/tests/testthat/test-calculate.R @@ -1,3 +1,88 @@ -test_that("multiplication works", { - expect_equal(2 * 2, 4) +library(tidyverse) +shared_dat <- data.frame( + label = rep.int(0.03, 3), + Group = glue::glue("p{seq.int(1, 3, 1)}") %>% as.character(), + numOtus = 3, + Otu00001 = c(10, 0, 0), # 10 + Otu00002 = c(2, 10, 2), # 14 + Otu00003 = c(2, 1, 10), # 13 + Otu00004 = c(2, 2, 0), # 04 + Otu00005 = c(2, 0, 10), # 12 + Otu00006 = c(0, 11, 12) # 23 +) +test_that("calc_rel_abun works", { + expect_equal( # rows sum to 1 + calc_relabun(shared_dat) %>% + pivot_wider(names_from = "otu", values_from = "rel_abun") %>% + select(starts_with('Otu')) %>% + rowSums(), + rep(1, 3) + ) + expect_equal(calc_relabun(shared_dat), + structure( + list( + sample = c( + "p1", + "p1", + "p1", + "p1", + "p1", + "p1", + "p2", + "p2", + "p2", + "p2", + "p2", + "p2", + "p3", + "p3", + "p3", + "p3", + "p3", + "p3" + ), + otu = c( + "Otu00001", + "Otu00002", + "Otu00003", + "Otu00004", + "Otu00005", + "Otu00006", + "Otu00001", + "Otu00002", + "Otu00003", + "Otu00004", + "Otu00005", + "Otu00006", + "Otu00001", + "Otu00002", + "Otu00003", + "Otu00004", + "Otu00005", + "Otu00006" + ), + rel_abun = c( + 0.555555555555556, + 0.111111111111111, + 0.111111111111111, + 0.111111111111111, + 0.111111111111111, + 0, + 0, + 0.416666666666667, + 0.0416666666666667, + 0.0833333333333333, + 0, + 0.458333333333333, + 0, + 0.0588235294117647, + 0.294117647058824, + 0, + 0.294117647058824, + 0.352941176470588 + ) + ), + row.names = c(NA,-18L), + class = c("tbl_df", "tbl", "data.frame") + )) }) diff --git a/vignettes/introduction.Rmd b/vignettes/introduction.Rmd index 2cc22be..e15c641 100644 --- a/vignettes/introduction.Rmd +++ b/vignettes/introduction.Rmd @@ -20,7 +20,36 @@ knitr::opts_chunk$set( library(schtools) ``` -## Parsing mothur output files +## Handling mothur data + +### Calculated relative abundances + +You can read a shared file and calculate relative abundances with `calc_relabun()`: + +```{r calc_relabun} +shared_dat <- readr::read_tsv(system.file("extdata", "test.shared", + package = "schtools")) +relabun_dat <- shared_dat %>% calc_relabun() +head(relabun_dat) +``` + +`calc_relabun()` returns the data frame in long format. +You can use `tidyr::pivot_wider()` to convert it to wide format: + +```{r pivot_wider} +wide_dat <- relabun_dat %>% + tidyr::pivot_wider(names_from = "otu", values_from = "rel_abun") +head(wide_dat) +``` + +You can see that the relative abundances for each sample sum to 1: + +```{r sum1} +wide_dat %>% + select(starts_with('Otu')) %>% + rowSums() +``` + ### Phylip-formatted distance file as a tibble From bceba9851e3e0e9dfb7ae179a8ae09f25c778689 Mon Sep 17 00:00:00 2001 From: Kelly Sovacool Date: Thu, 22 Sep 2022 13:06:12 -0400 Subject: [PATCH 04/15] document() --- man/calc_relabun.Rd | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 man/calc_relabun.Rd diff --git a/man/calc_relabun.Rd b/man/calc_relabun.Rd new file mode 100644 index 0000000..49795fb --- /dev/null +++ b/man/calc_relabun.Rd @@ -0,0 +1,28 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/calculate.R +\name{calc_relabun} +\alias{calc_relabun} +\title{Calculate OTU relative abundances from a shared file} +\usage{ +calc_relabun(abs_abun_dat) +} +\arguments{ +\item{abs_abun_dat}{a data frame from reading in a \href{https://mothur.org/wiki/shared_file}{shared file}. +Should contain a \code{Group} column for sample names, +\code{Otu} columns for absolute counts of each OTU, +and rows as each sample.} +} +\value{ +a new data frame with OTU relative abundances in long format. +} +\description{ +Calculate OTU relative abundances from a shared file +} +\examples{ +shared_dat <- readr::read_tsv(system.file("extdata", "test.shared", + package = "schtools")) +shared_dat \%>\% calc_relabun() +} +\author{ +Kelly Sovacool \email{sovacool@umich.edu} +} From 3159b3866daf5f14b036f3574c899a812fbb8336 Mon Sep 17 00:00:00 2001 From: Kelly Sovacool Date: Fri, 23 Sep 2022 12:09:41 -0400 Subject: [PATCH 05/15] Tweak example to use relabun data --- vignettes/introduction.Rmd | 34 ++++++++++++---------------------- 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/vignettes/introduction.Rmd b/vignettes/introduction.Rmd index 89d9941..1087d81 100644 --- a/vignettes/introduction.Rmd +++ b/vignettes/introduction.Rmd @@ -22,7 +22,7 @@ library(schtools) ## Handling mothur data -### Calculated relative abundances +### Calculate relative abundances You can read a shared file and calculate relative abundances with `calc_relabun()`: @@ -68,31 +68,21 @@ without italicizing the OTU label. This can be used with `ggtext::element_markdown()` to make nice plots: ```{r italic-genus} -library(dplyr) -library(ggplot2) library(ggtext) -library(tidyr) +library(tidyverse) set.seed(20220427) -pick_random_bool <- function(n = nrow(tax_dat)) { - sample(c(TRUE, FALSE), n, replace = TRUE) - } -tax_dat %>% - select(label_html) %>% - mutate(sample1 = pick_random_bool(), - sample2 = pick_random_bool(), - sample3 = pick_random_bool() + +relabun_dat %>% + mutate(sample_num = str_remove(sample, 'p') %>% as.integer(), + treatment = case_when(sample_num %% 2 == 1 ~ 'A', + TRUE ~ 'B') ) %>% - pivot_longer(starts_with('sample'), - names_to = 'sample', values_to = 'presence') %>% - ggplot(aes(x = sample, y = label_html)) + - geom_tile(colour = "whitesmoke", fill = "white", size=0.5) + - geom_point(aes(color = presence), size = 4) + - scale_fill_manual(values = c(`TRUE` = "#08519C", `FALSE` = "#F0F0F0")) + - scale_x_discrete(position = "top") + + inner_join(tax_dat, by = "otu") %>% + ggplot(aes(x = rel_abun, y = label_html, color = treatment)) + + geom_jitter(alpha = 0.7, height = 0.2) + + labs(x = 'Relative abundance', y = '') + theme_minimal() + - theme(axis.text.y = element_markdown(), - axis.title.y = element_blank(), - axis.title.x = element_blank()) + theme(axis.text.y = element_markdown()) ``` #### Pooling OTU counts at different taxonomic levels From a22ae6e014a54684c95d60fc367e8296d5254e26 Mon Sep 17 00:00:00 2001 From: Kelly Sovacool Date: Fri, 23 Sep 2022 12:12:16 -0400 Subject: [PATCH 06/15] Move tidyverse import earlier --- vignettes/introduction.Rmd | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/vignettes/introduction.Rmd b/vignettes/introduction.Rmd index 1087d81..1f8e162 100644 --- a/vignettes/introduction.Rmd +++ b/vignettes/introduction.Rmd @@ -18,6 +18,7 @@ knitr::opts_chunk$set( ```{r deps} library(schtools) +library(tidyverse) ``` ## Handling mothur data @@ -27,8 +28,8 @@ library(schtools) You can read a shared file and calculate relative abundances with `calc_relabun()`: ```{r calc_relabun} -shared_dat <- readr::read_tsv(system.file("extdata", "test.shared", - package = "schtools")) +shared_dat <- read_tsv(system.file("extdata", "test.shared", + package = "schtools")) relabun_dat <- shared_dat %>% calc_relabun() head(relabun_dat) ``` @@ -38,7 +39,7 @@ You can use `tidyr::pivot_wider()` to convert it to wide format: ```{r pivot_wider} wide_dat <- relabun_dat %>% - tidyr::pivot_wider(names_from = "otu", values_from = "rel_abun") + pivot_wider(names_from = "otu", values_from = "rel_abun") head(wide_dat) ``` @@ -69,7 +70,6 @@ without italicizing the OTU label. This can be used with ```{r italic-genus} library(ggtext) -library(tidyverse) set.seed(20220427) relabun_dat %>% @@ -94,6 +94,9 @@ mothur, and a corresponding taxonomy file. Take a look at the [mothur documentation](https://mothur.org/wiki/) for info on generating these files and performing microbiome analyses. +In this example, `pool_taxon_counts()` pools the OTU counts in the shared file +at the genus level and returns new shared and taxonomy data frames. + ```{r pool_genus} tax_dat <- read_tax(system.file("extdata", "test.taxonomy", package = "schtools")) @@ -102,8 +105,6 @@ shared_dat <- readr::read_tsv(system.file("extdata", "test.shared", pool_taxon_counts(shared_dat, tax_dat, genus) ``` -In this example, `pool_taxon_counts()` pools the OTU counts in the shared file -at the genus level and returns new shared and taxonomy data frames. You can do this for any taxonomic level in your taxonomy data frame. ```{r pool_phylum} From 873bd0d2a5ffb7d10644c4776def4ab6c840023b Mon Sep 17 00:00:00 2001 From: Kelly Sovacool Date: Fri, 23 Sep 2022 12:13:30 -0400 Subject: [PATCH 07/15] Simplify read_tax example --- vignettes/introduction.Rmd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vignettes/introduction.Rmd b/vignettes/introduction.Rmd index 1f8e162..ee4f746 100644 --- a/vignettes/introduction.Rmd +++ b/vignettes/introduction.Rmd @@ -59,8 +59,8 @@ You can use `read_tax()` to parse the taxonomy data and create separate columns for each taxonomic level. ```{r read_tax} -tax_filepath <- system.file("extdata", "test.taxonomy", package = "schtools") -tax_dat <- read_tax(tax_filepath) +tax_dat <- read_tax(system.file("extdata", "test.taxonomy", + package = "schtools")) head(tax_dat) ``` From 502433e214b3a000568eb2f737fe4db6b5c45c23 Mon Sep 17 00:00:00 2001 From: Kelly Sovacool Date: Fri, 23 Sep 2022 12:17:53 -0400 Subject: [PATCH 08/15] Fix imports -- can't suggest tidyverse --- vignettes/introduction.Rmd | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/vignettes/introduction.Rmd b/vignettes/introduction.Rmd index ee4f746..9595868 100644 --- a/vignettes/introduction.Rmd +++ b/vignettes/introduction.Rmd @@ -18,7 +18,10 @@ knitr::opts_chunk$set( ```{r deps} library(schtools) -library(tidyverse) +library(dplyr) +library(ggplot2) +library(readr) +library(tidyr) ``` ## Handling mothur data @@ -73,7 +76,7 @@ library(ggtext) set.seed(20220427) relabun_dat %>% - mutate(sample_num = str_remove(sample, 'p') %>% as.integer(), + mutate(sample_num = stringr::str_remove(sample, 'p') %>% as.integer(), treatment = case_when(sample_num %% 2 == 1 ~ 'A', TRUE ~ 'B') ) %>% From 9eb9e930f43a9c85bab8db87f3529fad4557d11a Mon Sep 17 00:00:00 2001 From: Kelly Sovacool Date: Mon, 26 Sep 2022 14:59:41 -0400 Subject: [PATCH 09/15] Fix imports for tests --- tests/testthat/test-calculate.R | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/testthat/test-calculate.R b/tests/testthat/test-calculate.R index 3be4ca5..bae8261 100644 --- a/tests/testthat/test-calculate.R +++ b/tests/testthat/test-calculate.R @@ -1,4 +1,5 @@ -library(tidyverse) +library(dplyr) +library(tidyr) shared_dat <- data.frame( label = rep.int(0.03, 3), Group = glue::glue("p{seq.int(1, 3, 1)}") %>% as.character(), From 51f38d2eaeb2c23fbabb4bb502720b8b44ed7724 Mon Sep 17 00:00:00 2001 From: Kelly Sovacool Date: Mon, 26 Sep 2022 16:42:49 -0400 Subject: [PATCH 10/15] Fix global var warnings --- R/calculate.R | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/R/calculate.R b/R/calculate.R index ff0f1cf..1919a9f 100644 --- a/R/calculate.R +++ b/R/calculate.R @@ -15,11 +15,14 @@ #' package = "schtools")) #' shared_dat %>% calc_relabun() calc_relabun <- function(abs_abun_dat) { - abs_abun_dat$total_counts <- rowSums(abs_abun_dat %>% select(starts_with('Otu'))) + count <- Group <- mutate <- otu <- rel_abun <- total_counts <- NULL + abs_abun_dat$total_counts <- rowSums(abs_abun_dat %>% + dplyr::select(starts_with('Otu'))) rel_abun_dat <- abs_abun_dat %>% - rename(sample = Group) %>% - pivot_longer(starts_with("Otu"), names_to = 'otu', values_to = 'count') %>% - mutate(rel_abun = count / total_counts) %>% - select(sample, otu, rel_abun) + dplyr::rename(sample = Group) %>% + tidyr::pivot_longer(dplyr::starts_with("Otu"), + names_to = 'otu', values_to = 'count') %>% + dplyr::mutate(rel_abun = count / total_counts) %>% + dplyr::select(sample, otu, rel_abun) return(rel_abun_dat) } From 20c4831453c5fbf5a6e537b0087fa821a6250d1c Mon Sep 17 00:00:00 2001 From: Kelly Sovacool Date: Mon, 26 Sep 2022 16:50:42 -0400 Subject: [PATCH 11/15] Fix fcn ref --- R/calculate.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/calculate.R b/R/calculate.R index 1919a9f..e07e37c 100644 --- a/R/calculate.R +++ b/R/calculate.R @@ -17,7 +17,7 @@ calc_relabun <- function(abs_abun_dat) { count <- Group <- mutate <- otu <- rel_abun <- total_counts <- NULL abs_abun_dat$total_counts <- rowSums(abs_abun_dat %>% - dplyr::select(starts_with('Otu'))) + dplyr::select(dplyr::starts_with('Otu'))) rel_abun_dat <- abs_abun_dat %>% dplyr::rename(sample = Group) %>% tidyr::pivot_longer(dplyr::starts_with("Otu"), From 351253a21d686a2d2dee99936be4cdeff73e09d7 Mon Sep 17 00:00:00 2001 From: Kelly Sovacool Date: Mon, 26 Sep 2022 17:00:08 -0400 Subject: [PATCH 12/15] Add calc_relabun() to pkgdown function page --- _pkgdown.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/_pkgdown.yml b/_pkgdown.yml index e5a26ec..1ecc013 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -23,10 +23,11 @@ reference: - schtools - title: Microbiome desc: > - Read files & handle microbiome-related data. + Handle microbiome-related data. contents: - starts_with('read_') - starts_with('parse_') + - calc_relabun - pool_taxon_counts - title: R Markdown helpers desc: > From d5322922a0e4f6c8993db1cae740019156beb1fa Mon Sep 17 00:00:00 2001 From: Kelly Sovacool Date: Mon, 26 Sep 2022 17:01:49 -0400 Subject: [PATCH 13/15] Update NEWS --- NEWS.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/NEWS.md b/NEWS.md index 35b05c0..e6cf098 100644 --- a/NEWS.md +++ b/NEWS.md @@ -6,18 +6,19 @@ level (e.g. genus, phylum, etc.) to enable comparing analyses at different taxonomic resolutions, as seen in (#37, @kelly-sovacool). +- New function `calc_relabun()` calculates OTU relative abundances (#38, @kelly-sovacool). # schtools 0.2.1 -- Improvements to `parse_tax()` (#32, @kelly-sovacool) +- Improvements to `parse_tax()` (#32, @kelly-sovacool). - New column `label_html` provides HTML to correctly italicize genus names but not OTU labels. - Added an example to the intro vignette to demonstrate using this feature with `ggtext`. - Changed taxonomy data frame column names to lowercase and reordered them. -- Minor documentation improvements (#33, @kelly-sovacool) +- Minor documentation improvements (#33, @kelly-sovacool). # schtools 0.1.1 -- Refactored `read_tax()` (#30, @kelly-sovacool) +- Refactored `read_tax()` (#30, @kelly-sovacool). - New function `parse_tax()` to separate the logic of reading and parsing taxonomy files. - `read_tax()` now accepts a `sep` parameter to handle different delim file types (e.g. csv or tsv). - schtools now has a logo! (#31, @kelly-sovacool) From 4a50febb16ee6c87a4857331fd1bacf9beaee7a3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 26 Sep 2022 21:08:19 +0000 Subject: [PATCH 14/15] =?UTF-8?q?=F0=9F=8E=A8=20Style=20R=20code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- R/calculate.R | 24 ++--- tests/testthat/test-calculate.R | 166 ++++++++++++++++---------------- 2 files changed, 97 insertions(+), 93 deletions(-) diff --git a/R/calculate.R b/R/calculate.R index e07e37c..e4f419d 100644 --- a/R/calculate.R +++ b/R/calculate.R @@ -12,17 +12,19 @@ #' #' @examples #' shared_dat <- readr::read_tsv(system.file("extdata", "test.shared", -#' package = "schtools")) +#' package = "schtools" +#' )) #' shared_dat %>% calc_relabun() calc_relabun <- function(abs_abun_dat) { - count <- Group <- mutate <- otu <- rel_abun <- total_counts <- NULL - abs_abun_dat$total_counts <- rowSums(abs_abun_dat %>% - dplyr::select(dplyr::starts_with('Otu'))) - rel_abun_dat <- abs_abun_dat %>% - dplyr::rename(sample = Group) %>% - tidyr::pivot_longer(dplyr::starts_with("Otu"), - names_to = 'otu', values_to = 'count') %>% - dplyr::mutate(rel_abun = count / total_counts) %>% - dplyr::select(sample, otu, rel_abun) - return(rel_abun_dat) + count <- Group <- mutate <- otu <- rel_abun <- total_counts <- NULL + abs_abun_dat$total_counts <- rowSums(abs_abun_dat %>% + dplyr::select(dplyr::starts_with("Otu"))) + rel_abun_dat <- abs_abun_dat %>% + dplyr::rename(sample = Group) %>% + tidyr::pivot_longer(dplyr::starts_with("Otu"), + names_to = "otu", values_to = "count" + ) %>% + dplyr::mutate(rel_abun = count / total_counts) %>% + dplyr::select(sample, otu, rel_abun) + return(rel_abun_dat) } diff --git a/tests/testthat/test-calculate.R b/tests/testthat/test-calculate.R index bae8261..0a7de7c 100644 --- a/tests/testthat/test-calculate.R +++ b/tests/testthat/test-calculate.R @@ -1,89 +1,91 @@ library(dplyr) library(tidyr) shared_dat <- data.frame( - label = rep.int(0.03, 3), - Group = glue::glue("p{seq.int(1, 3, 1)}") %>% as.character(), - numOtus = 3, - Otu00001 = c(10, 0, 0), # 10 - Otu00002 = c(2, 10, 2), # 14 - Otu00003 = c(2, 1, 10), # 13 - Otu00004 = c(2, 2, 0), # 04 - Otu00005 = c(2, 0, 10), # 12 - Otu00006 = c(0, 11, 12) # 23 + label = rep.int(0.03, 3), + Group = glue::glue("p{seq.int(1, 3, 1)}") %>% as.character(), + numOtus = 3, + Otu00001 = c(10, 0, 0), # 10 + Otu00002 = c(2, 10, 2), # 14 + Otu00003 = c(2, 1, 10), # 13 + Otu00004 = c(2, 2, 0), # 04 + Otu00005 = c(2, 0, 10), # 12 + Otu00006 = c(0, 11, 12) # 23 ) test_that("calc_rel_abun works", { - expect_equal( # rows sum to 1 - calc_relabun(shared_dat) %>% - pivot_wider(names_from = "otu", values_from = "rel_abun") %>% - select(starts_with('Otu')) %>% - rowSums(), - rep(1, 3) + expect_equal( # rows sum to 1 + calc_relabun(shared_dat) %>% + pivot_wider(names_from = "otu", values_from = "rel_abun") %>% + select(starts_with("Otu")) %>% + rowSums(), + rep(1, 3) + ) + expect_equal( + calc_relabun(shared_dat), + structure( + list( + sample = c( + "p1", + "p1", + "p1", + "p1", + "p1", + "p1", + "p2", + "p2", + "p2", + "p2", + "p2", + "p2", + "p3", + "p3", + "p3", + "p3", + "p3", + "p3" + ), + otu = c( + "Otu00001", + "Otu00002", + "Otu00003", + "Otu00004", + "Otu00005", + "Otu00006", + "Otu00001", + "Otu00002", + "Otu00003", + "Otu00004", + "Otu00005", + "Otu00006", + "Otu00001", + "Otu00002", + "Otu00003", + "Otu00004", + "Otu00005", + "Otu00006" + ), + rel_abun = c( + 0.555555555555556, + 0.111111111111111, + 0.111111111111111, + 0.111111111111111, + 0.111111111111111, + 0, + 0, + 0.416666666666667, + 0.0416666666666667, + 0.0833333333333333, + 0, + 0.458333333333333, + 0, + 0.0588235294117647, + 0.294117647058824, + 0, + 0.294117647058824, + 0.352941176470588 + ) + ), + row.names = c(NA, -18L), + class = c("tbl_df", "tbl", "data.frame") ) - expect_equal(calc_relabun(shared_dat), - structure( - list( - sample = c( - "p1", - "p1", - "p1", - "p1", - "p1", - "p1", - "p2", - "p2", - "p2", - "p2", - "p2", - "p2", - "p3", - "p3", - "p3", - "p3", - "p3", - "p3" - ), - otu = c( - "Otu00001", - "Otu00002", - "Otu00003", - "Otu00004", - "Otu00005", - "Otu00006", - "Otu00001", - "Otu00002", - "Otu00003", - "Otu00004", - "Otu00005", - "Otu00006", - "Otu00001", - "Otu00002", - "Otu00003", - "Otu00004", - "Otu00005", - "Otu00006" - ), - rel_abun = c( - 0.555555555555556, - 0.111111111111111, - 0.111111111111111, - 0.111111111111111, - 0.111111111111111, - 0, - 0, - 0.416666666666667, - 0.0416666666666667, - 0.0833333333333333, - 0, - 0.458333333333333, - 0, - 0.0588235294117647, - 0.294117647058824, - 0, - 0.294117647058824, - 0.352941176470588 - ) - ), - row.names = c(NA,-18L), - class = c("tbl_df", "tbl", "data.frame") - )) + ) }) From 090e5bac66c74ee34336b6757801aeea32f91df1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 26 Sep 2022 21:09:40 +0000 Subject: [PATCH 15/15] =?UTF-8?q?=F0=9F=93=91=20Build=20docs=20site?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/dev/articles/introduction.html | 120 +++++++++++----- .../figure-html/italic-genus-1.png | Bin 113698 -> 136171 bytes docs/dev/news/index.html | 6 +- docs/dev/pkgdown.yml | 2 +- docs/dev/reference/calc_relabun.html | 133 ++++++++++++++++++ docs/dev/reference/index.html | 7 +- docs/dev/search.json | 2 +- docs/dev/sitemap.xml | 3 + 8 files changed, 230 insertions(+), 43 deletions(-) create mode 100644 docs/dev/reference/calc_relabun.html diff --git a/docs/dev/articles/introduction.html b/docs/dev/articles/introduction.html index 93edaa0..c5ff320 100644 --- a/docs/dev/articles/introduction.html +++ b/docs/dev/articles/introduction.html @@ -90,17 +90,77 @@ +library(schtools) +library(dplyr) +#> +#> Attaching package: 'dplyr' +#> The following objects are masked from 'package:stats': +#> +#> filter, lag +#> The following objects are masked from 'package:base': +#> +#> intersect, setdiff, setequal, union +library(ggplot2) +library(readr) +library(tidyr)
-

Parsing mothur output files +

Handling mothur data

+

Calculate relative abundances +

+

You can read a shared file and calculate relative abundances with calc_relabun():

+
+shared_dat <- read_tsv(system.file("extdata", "test.shared", package = "schtools"))
+#> Rows: 10 Columns: 15
+#> ── Column specification ────────────────────────────────────────────────────────
+#> Delimiter: "\t"
+#> chr  (1): Group
+#> dbl (14): label, numOtus, Otu0001, Otu0003, Otu0004, Otu00008, Otu0044, Otu0...
+#> 
+#>  Use `spec()` to retrieve the full column specification for this data.
+#>  Specify the column types or set `show_col_types = FALSE` to quiet this message.
+relabun_dat <- shared_dat %>%
+    calc_relabun()
+head(relabun_dat)
+#> # A tibble: 6 × 3
+#>   sample otu      rel_abun
+#>   <chr>  <chr>       <dbl>
+#> 1 p1     Otu0001      0   
+#> 2 p1     Otu0003      0   
+#> 3 p1     Otu0004      0   
+#> 4 p1     Otu00008     0   
+#> 5 p1     Otu0044      0.25
+#> 6 p1     Otu0056      0.25
+

calc_relabun() returns the data frame in long format. You can use tidyr::pivot_wider() to convert it to wide format:

+
+wide_dat <- relabun_dat %>%
+    pivot_wider(names_from = "otu", values_from = "rel_abun")
+head(wide_dat)
+#> # A tibble: 6 × 13
+#>   sample Otu0001 Otu0003 Otu0004 Otu00…¹ Otu0044 Otu0056 Otu0057 Otu0058 Otu0159
+#>   <chr>    <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
+#> 1 p1       0        0      0       0       0.25    0.25    0       0.25      0  
+#> 2 p2       0.167    0      0.167   0       0.167   0       0       0.167     0  
+#> 3 p3       0        0.2    0       0       0.2     0       0       0         0.2
+#> 4 p4       0.25     0.25   0       0.25    0       0       0       0         0  
+#> 5 p5       0.25     0      0.25    0       0.25    0       0       0         0  
+#> 6 p6       0.167    0      0       0.167   0       0.167   0.167   0.167     0  
+#> # … with 3 more variables: Otu0208 <dbl>, Otu0328 <dbl>, Otu0329 <dbl>, and
+#> #   abbreviated variable name ¹​Otu00008
+

You can see that the relative abundances for each sample sum to 1:

+
+wide_dat %>%
+    select(starts_with("Otu")) %>%
+    rowSums()
+#>  [1] 1 1 1 1 1 1 1 1 1 1
+
+

Taxonomy files

mothur formats taxonomy files as tab-separated values (tsv). You can use read_tax() to parse the taxonomy data and create separate columns for each taxonomic level.

-
-tax_filepath <- system.file("extdata", "test.taxonomy", package = "schtools")
-tax_dat <- read_tax(tax_filepath)
+
+tax_dat <- read_tax(system.file("extdata", "test.taxonomy", package = "schtools"))
 head(tax_dat)
 #> # A tibble: 6 × 10
 #>   otu      otu_label tax_otu_l…¹ label…² kingdom phylum class order family genus
@@ -113,37 +173,23 @@ 

Taxonomy files#> 6 Otu0056 OTU 56 Bacteria (… <i>Bac… Bacter… Bacte… Bact… Bact… Bacte… Bact… #> # … with abbreviated variable names ¹​tax_otu_label, ²​label_html

The column label_html provides html that correctly italicizes the genus name without italicizing the OTU label. This can be used with ggtext::element_markdown() to make nice plots:

-
-library(dplyr)
-#> 
-#> Attaching package: 'dplyr'
-#> The following objects are masked from 'package:stats':
-#> 
-#>     filter, lag
-#> The following objects are masked from 'package:base':
-#> 
-#>     intersect, setdiff, setequal, union
-library(ggplot2)
-library(ggtext)
-library(tidyr)
+
+library(ggtext)
 set.seed(20220427)
-pick_random_bool <- function(n = nrow(tax_dat)) {
-    sample(c(TRUE, FALSE), n, replace = TRUE)
-}
-tax_dat %>%
-    select(label_html) %>%
-    mutate(sample1 = pick_random_bool(), sample2 = pick_random_bool(), sample3 = pick_random_bool()) %>%
-    pivot_longer(starts_with("sample"), names_to = "sample", values_to = "presence") %>%
-    ggplot(aes(x = sample, y = label_html)) + geom_tile(colour = "whitesmoke", fill = "white",
-    size = 0.5) + geom_point(aes(color = presence), size = 4) + scale_fill_manual(values = c(`TRUE` = "#08519C",
-    `FALSE` = "#F0F0F0")) + scale_x_discrete(position = "top") + theme_minimal() +
-    theme(axis.text.y = element_markdown(), axis.title.y = element_blank(), axis.title.x = element_blank())
+ +relabun_dat %>% + mutate(sample_num = stringr::str_remove(sample, "p") %>% + as.integer(), treatment = case_when(sample_num%%2 == 1 ~ "A", TRUE ~ "B")) %>% + inner_join(tax_dat, by = "otu") %>% + ggplot(aes(x = rel_abun, y = label_html, color = treatment)) + geom_jitter(alpha = 0.7, + height = 0.2) + labs(x = "Relative abundance", y = "") + theme_minimal() + theme(axis.text.y = element_markdown())

Pooling OTU counts at different taxonomic levels

A common task is to repeat OTU-level analyses at different taxonomic levels to determine which resolution is optimal for answering your questions. You’ll need a shared file, generated from clustering sequences into OTUs with mothur, and a corresponding taxonomy file. Take a look at the mothur documentation for info on generating these files and performing microbiome analyses.

-
+

In this example, pool_taxon_counts() pools the OTU counts in the shared file at the genus level and returns new shared and taxonomy data frames.

+
 tax_dat <- read_tax(system.file("extdata", "test.taxonomy", package = "schtools"))
 shared_dat <- readr::read_tsv(system.file("extdata", "test.shared", package = "schtools"))
 #> Rows: 10 Columns: 15
@@ -185,8 +231,8 @@ 

Pooling OTU counts at #> 8 Otu08 4 Clostridium XVIII #> 9 Otu09 7 Candidatus Saccharibacteria unclassified #> 10 Otu10 5 Clostridiales Incertae Sedis XIII unclassified

-

In this example, pool_taxon_counts() pools the OTU counts in the shared file at the genus level and returns new shared and taxonomy data frames. You can do this for any taxonomic level in your taxonomy data frame.

-
+

You can do this for any taxonomic level in your taxonomy data frame.

+
 pool_taxon_counts(shared_dat, tax_dat, phylum)
 #> $shared
 #> # A tibble: 10 × 8
@@ -218,7 +264,7 @@ 

Pooling OTU counts at

Distance files

If you have a distance file saved as a phylip-formatted lower triangle matrix from mothur’s dist.seqs command, you can read it into R with read_dist():

-
+
 dist_filepath <- system.file("extdata", "sample.final.thetayc.0.03.lt.ave.dist",
     package = "schtools")
 dist_tbl <- read_dist(dist_filepath)
@@ -238,15 +284,15 @@ 

Distance filesR Markdown helpers for scientific writing

When writing scientific papers with R Markdown, we often find ourselves using the same knitr chunk options and miscellaneous helper functions. To use our favorite options like eval=TRUE, echo=FALSE, and others, run set_knitr_opts() in the first chunk of your R Markdown document:

-
```{r, include = FALSE}
-set_knitr_opts()
-```
+
```{r, include = FALSE}
+set_knitr_opts()
+```

This also sets the inline hook to our custom inline_hook() function, which automatically formats numbers in a human-readable way and inserts an Oxford comma into lists when needed.

Who doesn’t love an Oxford comma?

When writing with R Markdown, you may wish to insert a list or vector inline and correctly format it with an Oxford comma. inline_hook() uses paste_oxford_list() to help you do just that!

-
+
 animals <- c("cats", "dogs", "fish")

Insert the string as inline code with `r `:

diff --git a/docs/dev/articles/introduction_files/figure-html/italic-genus-1.png b/docs/dev/articles/introduction_files/figure-html/italic-genus-1.png index d384ec546cb9b2488878673b8b24433be6f25f82..fdf55b2c0ceb51693557f057e79267f472e3b499 100644 GIT binary patch literal 136171 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 z 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 literal 113698 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 J(Rr)8{~y%q#2^3w diff --git a/docs/dev/news/index.html b/docs/dev/news/index.html index 33e4de1..ba35776 100644 --- a/docs/dev/news/index.html +++ b/docs/dev/news/index.html @@ -54,15 +54,15 @@

schtools 0.2.1

CRAN release: 2022-05-11

-
  • Improvements to parse_tax() (#32, @kelly-sovacool)
    • New column label_html provides HTML to correctly italicize genus names but not OTU labels.
    • +
      • Improvements to parse_tax() (#32, @kelly-sovacool).
        • New column label_html provides HTML to correctly italicize genus names but not OTU labels.
        • Added an example to the intro vignette to demonstrate using this feature with ggtext.
        • Changed taxonomy data frame column names to lowercase and reordered them.
      • -
      • Minor documentation improvements (#33, @kelly-sovacool)
      • +
      • Minor documentation improvements (#33, @kelly-sovacool).

schtools 0.1.1

CRAN release: 2022-03-11

-
  • Refactored read_tax() (#30, @kelly-sovacool)
    • New function parse_tax() to separate the logic of reading and parsing taxonomy files.
    • +
      • Refactored read_tax() (#30, @kelly-sovacool).
        • New function parse_tax() to separate the logic of reading and parsing taxonomy files.
        • read_tax() now accepts a sep parameter to handle different delim file types (e.g. csv or tsv).
      • diff --git a/docs/dev/pkgdown.yml b/docs/dev/pkgdown.yml index c5f597d..188c2eb 100644 --- a/docs/dev/pkgdown.yml +++ b/docs/dev/pkgdown.yml @@ -4,7 +4,7 @@ pkgdown_sha: ~ articles: logo: logo.html introduction: introduction.html -last_built: 2022-09-22T16:31Z +last_built: 2022-09-26T21:08Z urls: reference: http://www.schlosslab.org/schtools/reference article: http://www.schlosslab.org/schtools/articles diff --git a/docs/dev/reference/calc_relabun.html b/docs/dev/reference/calc_relabun.html new file mode 100644 index 0000000..1e0681e --- /dev/null +++ b/docs/dev/reference/calc_relabun.html @@ -0,0 +1,133 @@ + +Calculate OTU relative abundances from a shared file — calc_relabun • schtools + Skip to contents + + +
        +
        +
        + +
        +

        Calculate OTU relative abundances from a shared file

        +
        + +
        +

        Usage

        +
        calc_relabun(abs_abun_dat)
        +
        + +
        +

        Arguments

        +
        abs_abun_dat
        +

        a data frame from reading in a shared file. +Should contain a Group column for sample names, +Otu columns for absolute counts of each OTU, +and rows as each sample.

        + +
        +
        +

        Value

        + + +

        a new data frame with OTU relative abundances in long format.

        +
        +
        +

        Author

        +

        Kelly Sovacool sovacool@umich.edu

        +
        + +
        +

        Examples

        +
        shared_dat <- readr::read_tsv(system.file("extdata", "test.shared",
        +                                          package = "schtools"))
        +#> Rows: 10 Columns: 15
        +#> ── Column specification ────────────────────────────────────────────────────────
        +#> Delimiter: "\t"
        +#> chr  (1): Group
        +#> dbl (14): label, numOtus, Otu0001, Otu0003, Otu0004, Otu00008, Otu0044, Otu0...
        +#> 
        +#>  Use `spec()` to retrieve the full column specification for this data.
        +#>  Specify the column types or set `show_col_types = FALSE` to quiet this message.
        +shared_dat %>% calc_relabun()
        +#> # A tibble: 120 × 3
        +#>    sample otu      rel_abun
        +#>    <chr>  <chr>       <dbl>
        +#>  1 p1     Otu0001      0   
        +#>  2 p1     Otu0003      0   
        +#>  3 p1     Otu0004      0   
        +#>  4 p1     Otu00008     0   
        +#>  5 p1     Otu0044      0.25
        +#>  6 p1     Otu0056      0.25
        +#>  7 p1     Otu0057      0   
        +#>  8 p1     Otu0058      0.25
        +#>  9 p1     Otu0159      0   
        +#> 10 p1     Otu0208      0.25
        +#> # … with 110 more rows
        +
        +
        +
        + + +
        + + + + + + + diff --git a/docs/dev/reference/index.html b/docs/dev/reference/index.html index 7cf9cae..8c421d4 100644 --- a/docs/dev/reference/index.html +++ b/docs/dev/reference/index.html @@ -70,7 +70,7 @@

Microbiome

-

Read files & handle microbiome-related data.

+

Handle microbiome-related data.

@@ -95,6 +95,11 @@

Microbiomecalc_relabun() + +
Calculate OTU relative abundances from a shared file
+
+ pool_taxon_counts()
Pool OTU counts at a particular taxonomic level
diff --git a/docs/dev/search.json b/docs/dev/search.json index 41f0938..01993b2 100644 --- a/docs/dev/search.json +++ b/docs/dev/search.json @@ -1 +1 @@ -[{"path":[]},{"path":"http://www.schlosslab.org/schtools/dev/CODE_OF_CONDUCT.html","id":"our-pledge","dir":"","previous_headings":"","what":"Our Pledge","title":"Contributor Covenant Code of Conduct","text":"members, contributors, leaders pledge make participation community harassment-free experience everyone, regardless age, body size, visible invisible disability, ethnicity, sex characteristics, gender identity expression, level experience, education, socio-economic status, nationality, personal appearance, race, religion, sexual identity orientation. pledge act interact ways contribute open, welcoming, diverse, inclusive, healthy community.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CODE_OF_CONDUCT.html","id":"our-standards","dir":"","previous_headings":"","what":"Our Standards","title":"Contributor Covenant Code of Conduct","text":"Examples behavior contributes positive environment community include: Demonstrating empathy kindness toward people respectful differing opinions, viewpoints, experiences Giving gracefully accepting constructive feedback Accepting responsibility apologizing affected mistakes, learning experience Focusing best just us individuals, overall community Examples unacceptable behavior include: use sexualized language imagery, sexual attention advances kind Trolling, insulting derogatory comments, personal political attacks Public private harassment Publishing others’ private information, physical email address, without explicit permission conduct reasonably considered inappropriate professional setting","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CODE_OF_CONDUCT.html","id":"enforcement-responsibilities","dir":"","previous_headings":"","what":"Enforcement Responsibilities","title":"Contributor Covenant Code of Conduct","text":"Community leaders responsible clarifying enforcing standards acceptable behavior take appropriate fair corrective action response behavior deem inappropriate, threatening, offensive, harmful. Community leaders right responsibility remove, edit, reject comments, commits, code, wiki edits, issues, contributions aligned Code Conduct, communicate reasons moderation decisions appropriate.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CODE_OF_CONDUCT.html","id":"scope","dir":"","previous_headings":"","what":"Scope","title":"Contributor Covenant Code of Conduct","text":"Code Conduct applies within community spaces, also applies individual officially representing community public spaces. Examples representing community include using official e-mail address, posting via official social media account, acting appointed representative online offline event.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CODE_OF_CONDUCT.html","id":"enforcement","dir":"","previous_headings":"","what":"Enforcement","title":"Contributor Covenant Code of Conduct","text":"Instances abusive, harassing, otherwise unacceptable behavior may reported community leaders responsible enforcement [INSERT CONTACT METHOD]. complaints reviewed investigated promptly fairly. community leaders obligated respect privacy security reporter incident.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CODE_OF_CONDUCT.html","id":"enforcement-guidelines","dir":"","previous_headings":"","what":"Enforcement Guidelines","title":"Contributor Covenant Code of Conduct","text":"Community leaders follow Community Impact Guidelines determining consequences action deem violation Code Conduct:","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CODE_OF_CONDUCT.html","id":"1-correction","dir":"","previous_headings":"Enforcement Guidelines","what":"1. Correction","title":"Contributor Covenant Code of Conduct","text":"Community Impact: Use inappropriate language behavior deemed unprofessional unwelcome community. Consequence: private, written warning community leaders, providing clarity around nature violation explanation behavior inappropriate. public apology may requested.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CODE_OF_CONDUCT.html","id":"2-warning","dir":"","previous_headings":"Enforcement Guidelines","what":"2. Warning","title":"Contributor Covenant Code of Conduct","text":"Community Impact: violation single incident series actions. Consequence: warning consequences continued behavior. interaction people involved, including unsolicited interaction enforcing Code Conduct, specified period time. includes avoiding interactions community spaces well external channels like social media. Violating terms may lead temporary permanent ban.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CODE_OF_CONDUCT.html","id":"3-temporary-ban","dir":"","previous_headings":"Enforcement Guidelines","what":"3. Temporary Ban","title":"Contributor Covenant Code of Conduct","text":"Community Impact: serious violation community standards, including sustained inappropriate behavior. Consequence: temporary ban sort interaction public communication community specified period time. public private interaction people involved, including unsolicited interaction enforcing Code Conduct, allowed period. Violating terms may lead permanent ban.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CODE_OF_CONDUCT.html","id":"4-permanent-ban","dir":"","previous_headings":"Enforcement Guidelines","what":"4. Permanent Ban","title":"Contributor Covenant Code of Conduct","text":"Community Impact: Demonstrating pattern violation community standards, including sustained inappropriate behavior, harassment individual, aggression toward disparagement classes individuals. Consequence: permanent ban sort public interaction within community.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CODE_OF_CONDUCT.html","id":"attribution","dir":"","previous_headings":"","what":"Attribution","title":"Contributor Covenant Code of Conduct","text":"Code Conduct adapted Contributor Covenant, version 2.0, available https://www.contributor-covenant.org/version/2/0/ code_of_conduct.html. Community Impact Guidelines inspired Mozilla’s code conduct enforcement ladder. answers common questions code conduct, see FAQ https://www.contributor-covenant.org/faq. Translations available https:// www.contributor-covenant.org/translations.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CONTRIBUTING.html","id":null,"dir":"","previous_headings":"","what":"Contributing to schtools","title":"Contributing to schtools","text":"outlines propose change schtools. detailed info contributing , tidyverse packages, please see development contributing guide.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CONTRIBUTING.html","id":"fixing-typos","dir":"","previous_headings":"","what":"Fixing typos","title":"Contributing to schtools","text":"can fix typos, spelling mistakes, grammatical errors documentation directly using GitHub web interface, long changes made source file. generally means ’ll need edit roxygen2 comments .R, .Rd file. can find .R file generates .Rd reading comment first line.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CONTRIBUTING.html","id":"bigger-changes","dir":"","previous_headings":"","what":"Bigger changes","title":"Contributing to schtools","text":"want make bigger change, ’s good idea first file issue make sure someone team agrees ’s needed. ’ve found bug, please file issue illustrates bug minimal reprex (also help write unit test, needed).","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CONTRIBUTING.html","id":"pull-request-process","dir":"","previous_headings":"Bigger changes","what":"Pull request process","title":"Contributing to schtools","text":"Fork package clone onto computer. haven’t done , recommend using usethis::create_from_github(\"SchlossLab/schtools\", fork = TRUE). Install development dependences devtools::install_dev_deps(), make sure package passes R CMD check running devtools::check(). R CMD check doesn’t pass cleanly, ’s good idea ask help continuing. Create Git branch pull request (PR). recommend using usethis::pr_init(\"brief-description--change\"). Make changes, commit git, create PR running usethis::pr_push(), following prompts browser. title PR briefly describe change. body PR contain Fixes #issue-number. user-facing changes, add bullet top NEWS.md (.e. just first header). Follow style described https://style.tidyverse.org/news.html.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CONTRIBUTING.html","id":"code-style","dir":"","previous_headings":"Bigger changes","what":"Code style","title":"Contributing to schtools","text":"New code follow tidyverse style guide. can use styler package apply styles, please don’t restyle code nothing PR. use roxygen2, Markdown syntax, documentation. use testthat unit tests. Contributions test cases included easier accept.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CONTRIBUTING.html","id":"code-of-conduct","dir":"","previous_headings":"","what":"Code of Conduct","title":"Contributing to schtools","text":"Please note schtools project released Contributor Code Conduct. contributing project agree abide terms.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/LICENSE.html","id":null,"dir":"","previous_headings":"","what":"License","title":"License","text":"software licensed MIT License. Everything else licensed CC -SA license.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/LICENSE.html","id":"mit-license","dir":"","previous_headings":"","what":"MIT License","title":"License","text":"Copyright (c) 2021 Kelly L. Sovacool, Nick Lesniak, Patrick D. Schloss Permission hereby granted, free charge, person obtaining copy software associated documentation files (“Software”), deal Software without restriction, including without limitation rights use, copy, modify, merge, publish, distribute, sublicense, /sell copies Software, permit persons Software furnished , subject following conditions: copyright notice permission notice shall included copies substantial portions Software. SOFTWARE PROVIDED “”, WITHOUT WARRANTY KIND, EXPRESS IMPLIED, INCLUDING LIMITED WARRANTIES MERCHANTABILITY, FITNESS PARTICULAR PURPOSE NONINFRINGEMENT. EVENT SHALL AUTHORS COPYRIGHT HOLDERS LIABLE CLAIM, DAMAGES LIABILITY, WHETHER ACTION CONTRACT, TORT OTHERWISE, ARISING , CONNECTION SOFTWARE USE DEALINGS SOFTWARE.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/LICENSE.html","id":"creative-commons-share-alike-license","dir":"","previous_headings":"","what":"Creative Commons Share Alike License","title":"License","text":"schtools logo licensed CC -SA 4.0 license. hammer poo images contained logo designed OpenMoji, open-source emoji icon project, also licensed CC -SA 4.0.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/SUPPORT.html","id":null,"dir":"","previous_headings":"","what":"Getting help with schtools","title":"Getting help with schtools","text":"Thanks using schtools! filing issue, places explore pieces put together make process smooth possible.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/SUPPORT.html","id":"make-a-reprex","dir":"","previous_headings":"","what":"Make a reprex","title":"Getting help with schtools","text":"Start making minimal reproducible example using reprex package. haven’t heard used reprex , ’re treat! Seriously, reprex make R-question-asking endeavors easier (pretty insane ROI five ten minutes ’ll take learn ’s ). additional reprex pointers, check Get help! section tidyverse site.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/SUPPORT.html","id":"where-to-ask","dir":"","previous_headings":"","what":"Where to ask?","title":"Getting help with schtools","text":"Armed reprex, next step figure ask. ’s question: start community.rstudio.com, /StackOverflow. people answer questions. ’s bug: ’re right place, file issue. ’re sure: let community help figure ! problem bug feature request, can easily return report . opening new issue, sure search issues pull requests make sure bug hasn’t reported /already fixed development version. default, search pre-populated :issue :open. can edit qualifiers (e.g. :pr, :closed) needed. example, ’d simply remove :open search issues repo, open closed.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/SUPPORT.html","id":"what-happens-next","dir":"","previous_headings":"","what":"What happens next?","title":"Getting help with schtools","text":"efficient possible, development tidyverse packages tends bursty, shouldn’t worry don’t get immediate response. Typically don’t look repo sufficient quantity issues accumulates, ’s burst intense activity focus efforts. makes development efficient avoids expensive context switching problems, cost taking longer get back . process makes good reprex particularly important might multiple months initial report start working . can’t reproduce bug, can’t fix !","code":""},{"path":[]},{"path":"http://www.schlosslab.org/schtools/dev/articles/introduction.html","id":"taxonomy-files","dir":"Articles","previous_headings":"Parsing mothur output files","what":"Taxonomy files","title":"Introduction to schtools","text":"mothur formats taxonomy files tab-separated values (tsv). can use read_tax() parse taxonomy data create separate columns taxonomic level. column label_html provides html correctly italicizes genus name without italicizing OTU label. can used ggtext::element_markdown() make nice plots:","code":"tax_filepath <- system.file(\"extdata\", \"test.taxonomy\", package = \"schtools\") tax_dat <- read_tax(tax_filepath) head(tax_dat) #> # A tibble: 6 × 10 #> otu otu_label tax_otu_l…¹ label…² kingdom phylum class order family genus #> #> 1 Otu0001 OTU 1 Bacteroide… Bac… Bacter… Bacte… Bact… Bact… Bacte… Bact… #> 2 Otu0003 OTU 3 Porphyromo… Por… Bacter… Bacte… Bact… Bact… Porph… Porp… #> 3 Otu0004 OTU 4 Porphyromo… Por… Bacter… Bacte… Bact… Bact… Porph… Porp… #> 4 Otu00008 OTU 8 Enterobact… Ent… Bacter… Prote… Gamm… Ente… Enter… Ente… #> 5 Otu0044 OTU 44 Bacteria (… Bac… Bacter… Bacte… Bact… Bact… Bacte… Bact… #> 6 Otu0056 OTU 56 Bacteria (… Bac… Bacter… Bacte… Bact… Bact… Bacte… Bact… #> # … with abbreviated variable names ¹​tax_otu_label, ²​label_html library(dplyr) #> #> Attaching package: 'dplyr' #> The following objects are masked from 'package:stats': #> #> filter, lag #> The following objects are masked from 'package:base': #> #> intersect, setdiff, setequal, union library(ggplot2) library(ggtext) library(tidyr) set.seed(20220427) pick_random_bool <- function(n = nrow(tax_dat)) { sample(c(TRUE, FALSE), n, replace = TRUE) } tax_dat %>% select(label_html) %>% mutate(sample1 = pick_random_bool(), sample2 = pick_random_bool(), sample3 = pick_random_bool()) %>% pivot_longer(starts_with(\"sample\"), names_to = \"sample\", values_to = \"presence\") %>% ggplot(aes(x = sample, y = label_html)) + geom_tile(colour = \"whitesmoke\", fill = \"white\", size = 0.5) + geom_point(aes(color = presence), size = 4) + scale_fill_manual(values = c(`TRUE` = \"#08519C\", `FALSE` = \"#F0F0F0\")) + scale_x_discrete(position = \"top\") + theme_minimal() + theme(axis.text.y = element_markdown(), axis.title.y = element_blank(), axis.title.x = element_blank())"},{"path":"http://www.schlosslab.org/schtools/dev/articles/introduction.html","id":"pooling-otu-counts-at-different-taxonomic-levels","dir":"Articles","previous_headings":"Parsing mothur output files > Taxonomy files","what":"Pooling OTU counts at different taxonomic levels","title":"Introduction to schtools","text":"common task repeat OTU-level analyses different taxonomic levels determine resolution optimal answering questions. ’ll need shared file, generated clustering sequences OTUs mothur, corresponding taxonomy file. Take look mothur documentation info generating files performing microbiome analyses. example, pool_taxon_counts() pools OTU counts shared file genus level returns new shared taxonomy data frames. can taxonomic level taxonomy data frame.","code":"tax_dat <- read_tax(system.file(\"extdata\", \"test.taxonomy\", package = \"schtools\")) shared_dat <- readr::read_tsv(system.file(\"extdata\", \"test.shared\", package = \"schtools\")) #> Rows: 10 Columns: 15 #> ── Column specification ──────────────────────────────────────────────────────── #> Delimiter: \"\\t\" #> chr (1): Group #> dbl (14): label, numOtus, Otu0001, Otu0003, Otu0004, Otu00008, Otu0044, Otu0... #> #> ℹ Use `spec()` to retrieve the full column specification for this data. #> ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message. pool_taxon_counts(shared_dat, tax_dat, genus) #> $shared #> # A tibble: 10 × 13 #> label Group numOtus Otu01 Otu02 Otu03 Otu04 Otu05 Otu06 Otu07 Otu08 Otu09 #> #> 1 genus p1 10 0 0 0 2 0 1 0 1 0 #> 2 genus p10 10 1 0 1 0 1 0 1 1 1 #> 3 genus p2 10 1 1 0 1 0 1 0 0 1 #> 4 genus p3 10 0 1 0 1 0 0 1 0 1 #> 5 genus p4 10 1 1 1 0 0 0 0 0 0 #> 6 genus p5 10 1 1 0 1 0 0 0 0 1 #> 7 genus p6 10 1 0 1 1 1 1 0 0 1 #> 8 genus p7 10 0 0 0 1 1 0 1 0 1 #> 9 genus p8 10 0 1 1 2 0 0 1 1 0 #> 10 genus p9 10 0 1 1 2 0 0 1 1 1 #> # … with 1 more variable: Otu10 #> #> $tax #> # A tibble: 10 × 3 #> otu size genus #> #> 1 Otu01 5 Bacteroides #> 2 Otu02 6 Porphyromonadaceae unclassified #> 3 Otu03 5 Enterobacteriaceae unclassified #> 4 Otu04 11 Bacteria unclassified #> 5 Otu05 3 Acinetobacter #> 6 Otu06 3 Clostridium XlVa #> 7 Otu07 5 Betaproteobacteria unclassified #> 8 Otu08 4 Clostridium XVIII #> 9 Otu09 7 Candidatus Saccharibacteria unclassified #> 10 Otu10 5 Clostridiales Incertae Sedis XIII unclassified pool_taxon_counts(shared_dat, tax_dat, phylum) #> $shared #> # A tibble: 10 × 8 #> label Group numOtus Otu1 Otu2 Otu3 Otu4 Otu5 #> #> 1 phylum p1 5 0 0 2 2 0 #> 2 phylum p10 5 1 3 0 1 1 #> 3 phylum p2 5 2 0 1 2 1 #> 4 phylum p3 5 1 1 1 1 1 #> 5 phylum p4 5 2 1 0 1 0 #> 6 phylum p5 5 2 0 1 0 1 #> 7 phylum p6 5 1 2 1 1 1 #> 8 phylum p7 5 0 2 1 1 1 #> 9 phylum p8 5 1 2 2 1 0 #> 10 phylum p9 5 1 2 2 2 1 #> #> $tax #> # A tibble: 5 × 3 #> otu size phylum #> #> 1 Otu1 11 Bacteroidetes #> 2 Otu2 13 Proteobacteria #> 3 Otu3 11 Bacteria unclassified #> 4 Otu4 12 Firmicutes #> 5 Otu5 7 Candidatus Saccharibacteria"},{"path":"http://www.schlosslab.org/schtools/dev/articles/introduction.html","id":"distance-files","dir":"Articles","previous_headings":"Parsing mothur output files","what":"Distance files","title":"Introduction to schtools","text":"distance file saved phylip-formatted lower triangle matrix mothur’s dist.seqs command, can read R read_dist():","code":"dist_filepath <- system.file(\"extdata\", \"sample.final.thetayc.0.03.lt.ave.dist\", package = \"schtools\") dist_tbl <- read_dist(dist_filepath) head(dist_tbl) #> # A tibble: 6 × 3 #> rows columns distances #> #> 1 104_1_D1 104_1_D0 0.893 #> 2 104_1_D10 104_1_D0 0.254 #> 3 104_1_D10 104_1_D1 0.922 #> 4 104_1_D2 104_1_D0 0.874 #> 5 104_1_D2 104_1_D1 0.109 #> 6 104_1_D2 104_1_D10 0.904"},{"path":"http://www.schlosslab.org/schtools/dev/articles/introduction.html","id":"r-markdown-helpers-for-scientific-writing","dir":"Articles","previous_headings":"","what":"R Markdown helpers for scientific writing","title":"Introduction to schtools","text":"writing scientific papers R Markdown, often find using knitr chunk options miscellaneous helper functions. use favorite options like eval=TRUE, echo=FALSE, others, run set_knitr_opts() first chunk R Markdown document: also sets inline hook custom inline_hook() function, automatically formats numbers human-readable way inserts Oxford comma lists needed.","code":"```{r, include = FALSE} set_knitr_opts() ```"},{"path":"http://www.schlosslab.org/schtools/dev/articles/introduction.html","id":"who-doesnt-love-an-oxford-comma","dir":"Articles","previous_headings":"R Markdown helpers for scientific writing","what":"Who doesn’t love an Oxford comma?","title":"Introduction to schtools","text":"writing R Markdown, may wish insert list vector inline correctly format Oxford comma. inline_hook() uses paste_oxford_list() help just ! Insert string inline code `r `: `r animals` common pets. Rendered output: cats, dogs, fish common pets.","code":"animals <- c(\"cats\", \"dogs\", \"fish\")"},{"path":"http://www.schlosslab.org/schtools/dev/articles/introduction.html","id":"human-readable-numbers","dir":"Articles","previous_headings":"R Markdown helpers for scientific writing","what":"Human-readable numbers","title":"Introduction to schtools","text":"inline_hook() uses format_numbers() hood automatically format numbers human-readable format, rather display scientific notation. numbers `r c(1e-04, 1e-05, 1e-06)` precise, `r c(1e04, 1e05, 1e06)` large. Rendered output: numbers 0.0001, 0.00001, 0.000001 precise. 10,000, 100,000, 1,000,000 large.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/articles/logo.html","id":"emojis","dir":"Articles","previous_headings":"","what":"Emojis","title":"logo","text":"OpenMoji, licensed CC -SA 4.0 poop: https://openmoji.org/library/#search=poo&emoji=1F4A9 wrench: https://openmoji.org/library/#search=tool&emoji=1F527 hammer: https://openmoji.org/library/#search=tool&emoji=1F528","code":"poo_file <- here('vignettes', 'articles','1F4A9_color.png') wrench_file <- here('vignettes', 'articles', '1F527_color.png') hammer_file <- here('vignettes', 'articles', '1F528_color.png') img <- ggdraw() + #draw_image(wrench_file, scale = 0.55, x = 0.195, y = 0.05) + draw_image(hammer_file, scale = 0.7, x = -0.32, y = 0.05) + draw_image(poo_file) ggsave2(img, filename = here('vignettes', 'articles', 'poo-hammer.png'), height = 2, width = 2, units = 'in') img"},{"path":"http://www.schlosslab.org/schtools/dev/articles/logo.html","id":"schtools-logo","dir":"Articles","previous_headings":"","what":"Schtools Logo","title":"logo","text":"","code":"mint <- '#A2EAE0' pink <- '#FA9DC5' orange <- '#FFDBAD' black <- '#000000' logo_filename <- here('vignettes', 'articles', 'schtools-logo.png') sticker(img, package = 'schtools', s_x = 1, s_y = 0.85, s_width = 1.6, s_height = 1.6, p_x = 1, p_y = 1.55, p_color = black, p_size = 23, p_family = 'Source Sans Pro', h_fill = mint, h_color = orange, url = 'schlosslab.org/schtools', u_size = 3.5, filename = logo_filename) ggdraw() + draw_image(logo_filename)"},{"path":"http://www.schlosslab.org/schtools/dev/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Kelly Sovacool. Author, maintainer. Nick Lesniak. Author. Patrick Schloss. Author. Sarah Lucas. Contributor. Courtney Armour. Contributor. Jacqueline Moltzau. Contributor. Andrew Hannah. Contributor. Nielson Baxter. Contributor. Alyxandria Schubert. Contributor. Kathryn Iverson. Contributor.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Sovacool K, Lesniak N, Schloss P (2022). schtools: Schloss Lab Tools Reproducible Microbiome Research. http://www.schlosslab.org/schtools/, https://github.com/SchlossLab/schtools.","code":"@Manual{, title = {schtools: Schloss Lab Tools for Reproducible Microbiome Research}, author = {Kelly Sovacool and Nick Lesniak and Patrick Schloss}, year = {2022}, note = {http://www.schlosslab.org/schtools/, https://github.com/SchlossLab/schtools}, }"},{"path":"http://www.schlosslab.org/schtools/dev/index.html","id":"schtools-","dir":"","previous_headings":"","what":"Schloss Lab Tools for Reproducible Microbiome Research","title":"Schloss Lab Tools for Reproducible Microbiome Research","text":"Schloss Lab Tools Reproducible Microbiome Research 💩 collection useful functions example code created used Schloss Lab reproducible microbiome research. Perform common tasks like read output files mothur, tidy microbiome data, format rmarkdown documents publication. See website information, documentation, examples.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/index.html","id":"installation","dir":"","previous_headings":"","what":"Installation","title":"Schloss Lab Tools for Reproducible Microbiome Research","text":"can install latest release CRAN: development version GitHub : install terminal using conda mamba:","code":"install.packages(\"schtools\") # install.packages(\"devtools\") devtools::install_github(\"SchlossLab/schtools\") mamba install -c conda-forge r-schtools"},{"path":"http://www.schlosslab.org/schtools/dev/index.html","id":"usage","dir":"","previous_headings":"","what":"Usage","title":"Schloss Lab Tools for Reproducible Microbiome Research","text":"Check introductory vignette quick start tutorial take look reference documentation comprehensive list functions.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/index.html","id":"help--contributing","dir":"","previous_headings":"","what":"Help & Contributing","title":"Schloss Lab Tools for Reproducible Microbiome Research","text":"questions, create new post Discussions. come across bug, open issue include minimal reproducible example. ’d like contribute, see guidelines .","code":""},{"path":"http://www.schlosslab.org/schtools/dev/index.html","id":"code-of-conduct","dir":"","previous_headings":"","what":"Code of Conduct","title":"Schloss Lab Tools for Reproducible Microbiome Research","text":"Please note schtools project released Contributor Code Conduct. contributing project, agree abide terms.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/index.html","id":"license","dir":"","previous_headings":"","what":"License","title":"Schloss Lab Tools for Reproducible Microbiome Research","text":"schtools package licensed MIT license. logo licensed CC -SA license.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/index.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Schloss Lab Tools for Reproducible Microbiome Research","text":"cite schtools publications, use: Sovacool K, Lesniak N, Schloss P (2022). schtools: Schloss Lab Tools Reproducible Microbiome Research. http://www.schlosslab.org/schtools/, https://github.com/SchlossLab/schtools. BibTeX entry LaTeX users :","code":"@Manual{, title = {schtools: Schloss Lab Tools for Reproducible Microbiome Research}, author = {Kelly Sovacool and Nick Lesniak and Patrick Schloss}, year = {2022}, note = {http://www.schlosslab.org/schtools/, https://github.com/SchlossLab/schtools}, }"},{"path":"http://www.schlosslab.org/schtools/dev/pull_request_template.html","id":"issues","dir":"","previous_headings":"","what":"Issues","title":"NA","text":"Resolves # .","code":""},{"path":[]},{"path":"http://www.schlosslab.org/schtools/dev/pull_request_template.html","id":"checklist","dir":"","previous_headings":"","what":"Checklist","title":"NA","text":"(Strikethrough points applicable.) Write unit tests new functionality. Update roxygen comments & vignettes API changes. Update NEWS.md includes user-facing changes. check workflow succeeds recent commit.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/close_enough.html","id":null,"dir":"Reference","previous_headings":"","what":"Check whether two numeric vectors are close enough for gov't work. — close_enough","title":"Check whether two numeric vectors are close enough for gov't work. — close_enough","text":"like dplyr::near() except much less precision.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/close_enough.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check whether two numeric vectors are close enough for gov't work. — close_enough","text":"","code":"close_enough(x, y, tol = 10^-3)"},{"path":"http://www.schlosslab.org/schtools/dev/reference/close_enough.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check whether two numeric vectors are close enough for gov't work. — close_enough","text":"x numeric vector y another numeric vector tol tolerance (default: 10^-3.)","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/close_enough.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check whether two numeric vectors are close enough for gov't work. — close_enough","text":"TRUE numbers near enough within tolerance, otherwise FALSE","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/close_enough.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Check whether two numeric vectors are close enough for gov't work. — close_enough","text":"Kelly Sovacool sovacool@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/close_enough.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Check whether two numeric vectors are close enough for gov't work. — close_enough","text":"","code":"close_enough(0.0004, 0) #> [1] TRUE close_enough(0.8887, 0.8884) #> [1] TRUE close_enough(1, 2) #> [1] FALSE"},{"path":"http://www.schlosslab.org/schtools/dev/reference/format_number.html","id":null,"dir":"Reference","previous_headings":"","what":"Format human-readable numbers. — format_number","title":"Format human-readable numbers. — format_number","text":"Pastes formatted x numeric, otherwise x unmodified. Circumvents R's automatic scientific notation. number nearly whole (see is_nearly_whole()), rounded zero decimal places. Otherwise, numbers >= 1 rounded 1 decimal place; numbers < 1 rounded 2 significant digits.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/format_number.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Format human-readable numbers. — format_number","text":"","code":"format_number(x, nsmall = 1, signif_precise = 2)"},{"path":"http://www.schlosslab.org/schtools/dev/reference/format_number.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Format human-readable numbers. — format_number","text":"x inline code nsmall number digits decimal point round x nearly whole x >= 1. signif_precise number significant digits use x nearly whole","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/format_number.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Format human-readable numbers. — format_number","text":"formatted x numeric, otherwise x unmodified.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/format_number.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Format human-readable numbers. — format_number","text":"Pat Schloss pschloss@umich.edu Kelly Sovacool sovacool@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/format_number.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Format human-readable numbers. — format_number","text":"","code":"format_number(0.0256) #> [1] \"0.026\" format_number(.Machine$double.eps^0.5) #> [1] \"0.000000015\" format_number(100000.08) #> [1] \"100,000.1\" format_number(1.00000000000000000001) #> [1] \"1\" format_number(\"this is a string\") #> [1] \"this is a string\""},{"path":"http://www.schlosslab.org/schtools/dev/reference/inline_hook.html","id":null,"dir":"Reference","previous_headings":"","what":"Inline hook for knitr to paste human-readable numbers and nice lists. — inline_hook","title":"Inline hook for knitr to paste human-readable numbers and nice lists. — inline_hook","text":"Inline hook knitr paste human-readable numbers nice lists.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/inline_hook.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Inline hook for knitr to paste human-readable numbers and nice lists. — inline_hook","text":"","code":"inline_hook(x)"},{"path":"http://www.schlosslab.org/schtools/dev/reference/inline_hook.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Inline hook for knitr to paste human-readable numbers and nice lists. — inline_hook","text":"x just anything","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/inline_hook.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Inline hook for knitr to paste human-readable numbers and nice lists. — inline_hook","text":"string element x separated comma numbers human-readable format.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/inline_hook.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Inline hook for knitr to paste human-readable numbers and nice lists. — inline_hook","text":"Kelly Sovacool sovacool@umich.edu Pat Schloss pschloss@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/inline_hook.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Inline hook for knitr to paste human-readable numbers and nice lists. — inline_hook","text":"","code":"inline_hook(c(1.2993992, 0.03, 1000)) #> [1] \"1.3, 0.03, and 1,000\" inline_hook(c(\"cats\", \"dogs\")) #> [1] \"cats and dogs\""},{"path":"http://www.schlosslab.org/schtools/dev/reference/is_nearly_whole.html","id":null,"dir":"Reference","previous_headings":"","what":"Checks whether a number is near to a whole number — is_nearly_whole","title":"Checks whether a number is near to a whole number — is_nearly_whole","text":"Checks whether number near whole number","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/is_nearly_whole.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Checks whether a number is near to a whole number — is_nearly_whole","text":"","code":"is_nearly_whole(x)"},{"path":"http://www.schlosslab.org/schtools/dev/reference/is_nearly_whole.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Checks whether a number is near to a whole number — is_nearly_whole","text":"x numeric","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/is_nearly_whole.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Checks whether a number is near to a whole number — is_nearly_whole","text":"TRUE FALSE","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/is_nearly_whole.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Checks whether a number is near to a whole number — is_nearly_whole","text":"Kelly Sovacool sovacool@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/is_nearly_whole.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Checks whether a number is near to a whole number — is_nearly_whole","text":"","code":"is_nearly_whole(.Machine$double.eps^0.5) #> [1] FALSE is_nearly_whole(.Machine$double.eps^0.6) #> [1] TRUE is_nearly_whole(1) #> [1] TRUE"},{"path":"http://www.schlosslab.org/schtools/dev/reference/is_nondesc.html","id":null,"dir":"Reference","previous_headings":"","what":"Check whether all elements given are sorted in non-descending order — is_nondesc","title":"Check whether all elements given are sorted in non-descending order — is_nondesc","text":"Check whether elements given sorted non-descending order","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/is_nondesc.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check whether all elements given are sorted in non-descending order — is_nondesc","text":"","code":"is_nondesc(...)"},{"path":"http://www.schlosslab.org/schtools/dev/reference/is_nondesc.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check whether all elements given are sorted in non-descending order — is_nondesc","text":"... anything!","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/is_nondesc.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check whether all elements given are sorted in non-descending order — is_nondesc","text":"TRUE elements sorted non-descending order, otherwise FALSE","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/is_nondesc.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Check whether all elements given are sorted in non-descending order — is_nondesc","text":"Kelly Sovacool sovacool@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/is_nondesc.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Check whether all elements given are sorted in non-descending order — is_nondesc","text":"","code":"is_nondesc(1, 2, 3) #> [1] TRUE is_nondesc(c(1, 2), 3) #> [1] TRUE is_nondesc(6, 4, 1) #> [1] FALSE is_nondesc(\"a\", \"b\", \"c\") #> [1] TRUE is_nondesc(c(\"z\", \"y\")) #> [1] FALSE"},{"path":"http://www.schlosslab.org/schtools/dev/reference/load_deps.html","id":null,"dir":"Reference","previous_headings":"","what":"Install & load packages — load_deps","title":"Install & load packages — load_deps","text":"Install & load packages","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/load_deps.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Install & load packages — load_deps","text":"","code":"load_deps(...)"},{"path":"http://www.schlosslab.org/schtools/dev/reference/load_deps.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Install & load packages — load_deps","text":"... package names install & load","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/load_deps.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Install & load packages — load_deps","text":"Kelly Sovacool sovacool@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/log_snakemake.html","id":null,"dir":"Reference","previous_headings":"","what":"Save output, messages, warnings, and errors to the Snakemake log file — log_snakemake","title":"Save output, messages, warnings, and errors to the Snakemake log file — log_snakemake","text":"function checks whether log file specified Snakemake rule. , directs output, messages, warnings, errors rule-specific log file. See Snakemake documentation log files R scripts details.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/log_snakemake.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Save output, messages, warnings, and errors to the Snakemake log file — log_snakemake","text":"","code":"log_snakemake(quiet = TRUE)"},{"path":"http://www.schlosslab.org/schtools/dev/reference/log_snakemake.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Save output, messages, warnings, and errors to the Snakemake log file — log_snakemake","text":"quiet Silence messages status snakemake object log file (default: TRUE).","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/log_snakemake.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Save output, messages, warnings, and errors to the Snakemake log file — log_snakemake","text":"Kelly Sovacool sovacool@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/log_snakemake.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Save output, messages, warnings, and errors to the Snakemake log file — log_snakemake","text":"","code":"# The Snakemake object doesn't exist, so nothing happens log_snakemake(quiet = FALSE) #> No Snakemake object exists, so all output will print as usual"},{"path":"http://www.schlosslab.org/schtools/dev/reference/parse_tax.html","id":null,"dir":"Reference","previous_headings":"","what":"Convert taxonomy strings into dataframe of labels based on taxonomic classification — parse_tax","title":"Convert taxonomy strings into dataframe of labels based on taxonomic classification — parse_tax","text":"Convert taxonomy strings dataframe labels based taxonomic classification","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/parse_tax.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convert taxonomy strings into dataframe of labels based on taxonomic classification — parse_tax","text":"","code":"parse_tax(dat)"},{"path":"http://www.schlosslab.org/schtools/dev/reference/parse_tax.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convert taxonomy strings into dataframe of labels based on taxonomic classification — parse_tax","text":"dat dataframe mothur taxonomy file columns OTU, Size, Taxonomy","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/parse_tax.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Convert taxonomy strings into dataframe of labels based on taxonomic classification — parse_tax","text":"wide dataframe taxonomic labels","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/parse_tax.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Convert taxonomy strings into dataframe of labels based on taxonomic classification — parse_tax","text":"Nick Lesniak, nlesniak@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/parse_tax.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Convert taxonomy strings into dataframe of labels based on taxonomic classification — parse_tax","text":"","code":"taxonomy_filepath <- system.file(\"extdata\", \"test.taxonomy\", package = \"schtools\" ) taxonomy_tbl <- read_tax(taxonomy_filepath) head(taxonomy_tbl) #> # A tibble: 6 × 10 #> otu otu_label tax_otu_l…¹ label…² kingdom phylum class order family genus #> #> 1 Otu0001 OTU 1 Bacteroide… Bac… Bacter… Bacte… Bact… Bact… Bacte… Bact… #> 2 Otu0003 OTU 3 Porphyromo… Por… Bacter… Bacte… Bact… Bact… Porph… Porp… #> 3 Otu0004 OTU 4 Porphyromo… Por… Bacter… Bacte… Bact… Bact… Porph… Porp… #> 4 Otu00008 OTU 8 Enterobact… Ent… Bacter… Prote… Gamm… Ente… Enter… Ente… #> 5 Otu0044 OTU 44 Bacteria (… Bac… Bacter… Bacte… Bact… Bact… Bacte… Bact… #> 6 Otu0056 OTU 56 Bacteria (… Bac… Bacter… Bacte… Bact… Bact… Bacte… Bact… #> # … with abbreviated variable names ¹​tax_otu_label, ²​label_html"},{"path":"http://www.schlosslab.org/schtools/dev/reference/paste_oxford_list.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a prose string from a list or vector — paste_oxford_list","title":"Create a prose string from a list or vector — paste_oxford_list","text":"word '' inserted last element Oxford comma used.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/paste_oxford_list.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a prose string from a list or vector — paste_oxford_list","text":"","code":"paste_oxford_list(x)"},{"path":"http://www.schlosslab.org/schtools/dev/reference/paste_oxford_list.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a prose string from a list or vector — paste_oxford_list","text":"x list vector","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/paste_oxford_list.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a prose string from a list or vector — paste_oxford_list","text":"string element x separated comma","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/paste_oxford_list.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Create a prose string from a list or vector — paste_oxford_list","text":"Pat Schloss pschloss@umich.edu Kelly Sovacool sovacool@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/paste_oxford_list.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create a prose string from a list or vector — paste_oxford_list","text":"","code":"paste_oxford_list(1:3) #> [1] \"1, 2, and 3\" paste_oxford_list(c(\"cats\", \"dogs\", \"turtles\")) #> [1] \"cats, dogs, and turtles\""},{"path":"http://www.schlosslab.org/schtools/dev/reference/pool_taxon_counts.html","id":null,"dir":"Reference","previous_headings":"","what":"Pool OTU counts at a particular taxonomic level — pool_taxon_counts","title":"Pool OTU counts at a particular taxonomic level — pool_taxon_counts","text":"Enables comparing analyses different taxonomic resolutions, seen https://doi.org/10.1128/mbio.03161-21. Implementation adapted .","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/pool_taxon_counts.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Pool OTU counts at a particular taxonomic level — pool_taxon_counts","text":"","code":"pool_taxon_counts(otu_shared_dat, otu_tax_dat, taxon_level)"},{"path":"http://www.schlosslab.org/schtools/dev/reference/pool_taxon_counts.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Pool OTU counts at a particular taxonomic level — pool_taxon_counts","text":"otu_shared_dat data frame created shared file OTU level. otu_tax_dat data frame created taxonomy file OTU level. Must dataset shared file. taxon_level taxonomic level pool OTUs (kingdom, phylum, class, order, family, genus). column otu_tax_dat.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/pool_taxon_counts.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Pool OTU counts at a particular taxonomic level — pool_taxon_counts","text":"shared data frame OTUs specified taxon_level corresponding taxonomy dataframe new OTU numbers.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/pool_taxon_counts.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Pool OTU counts at a particular taxonomic level — pool_taxon_counts","text":"Kelly Sovacool, sovacool@umich.edu Pat Schloss pschloss@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/pool_taxon_counts.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Pool OTU counts at a particular taxonomic level — pool_taxon_counts","text":"","code":"tax_dat <- read_tax(system.file(\"extdata\", \"test.taxonomy\", package = \"schtools\" )) shared_dat <- readr::read_tsv(system.file(\"extdata\", \"test.shared\", package = \"schtools\" )) #> Rows: 10 Columns: 15 #> ── Column specification ──────────────────────────────────────────────────────── #> Delimiter: \"\\t\" #> chr (1): Group #> dbl (14): label, numOtus, Otu0001, Otu0003, Otu0004, Otu00008, Otu0044, Otu0... #> #> ℹ Use `spec()` to retrieve the full column specification for this data. #> ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message. pool_taxon_counts(shared_dat, tax_dat, genus) #> $shared #> # A tibble: 10 × 13 #> label Group numOtus Otu01 Otu02 Otu03 Otu04 Otu05 Otu06 Otu07 Otu08 Otu09 #> #> 1 genus p1 10 0 0 0 2 0 1 0 1 0 #> 2 genus p10 10 1 0 1 0 1 0 1 1 1 #> 3 genus p2 10 1 1 0 1 0 1 0 0 1 #> 4 genus p3 10 0 1 0 1 0 0 1 0 1 #> 5 genus p4 10 1 1 1 0 0 0 0 0 0 #> 6 genus p5 10 1 1 0 1 0 0 0 0 1 #> 7 genus p6 10 1 0 1 1 1 1 0 0 1 #> 8 genus p7 10 0 0 0 1 1 0 1 0 1 #> 9 genus p8 10 0 1 1 2 0 0 1 1 0 #> 10 genus p9 10 0 1 1 2 0 0 1 1 1 #> # … with 1 more variable: Otu10 #> #> $tax #> # A tibble: 10 × 3 #> otu size genus #> #> 1 Otu01 5 Bacteroides #> 2 Otu02 6 Porphyromonadaceae unclassified #> 3 Otu03 5 Enterobacteriaceae unclassified #> 4 Otu04 11 Bacteria unclassified #> 5 Otu05 3 Acinetobacter #> 6 Otu06 3 Clostridium XlVa #> 7 Otu07 5 Betaproteobacteria unclassified #> 8 Otu08 4 Clostridium XVIII #> 9 Otu09 7 Candidatus Saccharibacteria unclassified #> 10 Otu10 5 Clostridiales Incertae Sedis XIII unclassified #> pool_taxon_counts(shared_dat, tax_dat, family) #> $shared #> # A tibble: 10 × 13 #> label Group numOtus Otu01 Otu02 Otu03 Otu04 Otu05 Otu06 Otu07 Otu08 Otu09 #> #> 1 family p1 10 0 0 0 2 0 1 0 1 0 #> 2 family p10 10 1 0 1 0 1 0 1 1 1 #> 3 family p2 10 1 1 0 1 0 1 0 0 1 #> 4 family p3 10 0 1 0 1 0 0 1 0 1 #> 5 family p4 10 1 1 1 0 0 0 0 0 0 #> 6 family p5 10 1 1 0 1 0 0 0 0 1 #> 7 family p6 10 1 0 1 1 1 1 0 0 1 #> 8 family p7 10 0 0 0 1 1 0 1 0 1 #> 9 family p8 10 0 1 1 2 0 0 1 1 0 #> 10 family p9 10 0 1 1 2 0 0 1 1 1 #> # … with 1 more variable: Otu10 #> #> $tax #> # A tibble: 10 × 3 #> otu size family #> #> 1 Otu01 5 Bacteroidaceae #> 2 Otu02 6 Porphyromonadaceae #> 3 Otu03 5 Enterobacteriaceae #> 4 Otu04 11 Bacteria unclassified #> 5 Otu05 3 Moraxellaceae #> 6 Otu06 3 Lachnospiraceae #> 7 Otu07 5 Betaproteobacteria unclassified #> 8 Otu08 4 Erysipelotrichaceae #> 9 Otu09 7 Candidatus Saccharibacteria unclassified #> 10 Otu10 5 Clostridiales Incertae Sedis XIII #> pool_taxon_counts(shared_dat, tax_dat, phylum) #> $shared #> # A tibble: 10 × 8 #> label Group numOtus Otu1 Otu2 Otu3 Otu4 Otu5 #> #> 1 phylum p1 5 0 0 2 2 0 #> 2 phylum p10 5 1 3 0 1 1 #> 3 phylum p2 5 2 0 1 2 1 #> 4 phylum p3 5 1 1 1 1 1 #> 5 phylum p4 5 2 1 0 1 0 #> 6 phylum p5 5 2 0 1 0 1 #> 7 phylum p6 5 1 2 1 1 1 #> 8 phylum p7 5 0 2 1 1 1 #> 9 phylum p8 5 1 2 2 1 0 #> 10 phylum p9 5 1 2 2 2 1 #> #> $tax #> # A tibble: 5 × 3 #> otu size phylum #> #> 1 Otu1 11 Bacteroidetes #> 2 Otu2 13 Proteobacteria #> 3 Otu3 11 Bacteria unclassified #> 4 Otu4 12 Firmicutes #> 5 Otu5 7 Candidatus Saccharibacteria #>"},{"path":"http://www.schlosslab.org/schtools/dev/reference/read_dist.html","id":null,"dir":"Reference","previous_headings":"","what":"Read in lower left triangular matrix from file — read_dist","title":"Read in lower left triangular matrix from file — read_dist","text":"Read lower left triangular matrix file","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/read_dist.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Read in lower left triangular matrix from file — read_dist","text":"","code":"read_dist(dist_filename)"},{"path":"http://www.schlosslab.org/schtools/dev/reference/read_dist.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Read in lower left triangular matrix from file — read_dist","text":"dist_filename filename lower left triangular matrix (.dist)","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/read_dist.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Read in lower left triangular matrix from file — read_dist","text":"distance matrix tibble","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/read_dist.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Read in lower left triangular matrix from file — read_dist","text":"Nick Lesniak, nlesniak@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/read_dist.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Read in lower left triangular matrix from file — read_dist","text":"","code":"dist_filepath <- system.file(\"extdata\", \"sample.final.thetayc.0.03.lt.ave.dist\", package = \"schtools\" ) dist_tbl <- read_dist(dist_filepath) head(dist_tbl) #> # A tibble: 6 × 3 #> rows columns distances #> #> 1 104_1_D1 104_1_D0 0.893 #> 2 104_1_D10 104_1_D0 0.254 #> 3 104_1_D10 104_1_D1 0.922 #> 4 104_1_D2 104_1_D0 0.874 #> 5 104_1_D2 104_1_D1 0.109 #> 6 104_1_D2 104_1_D10 0.904"},{"path":"http://www.schlosslab.org/schtools/dev/reference/read_tax.html","id":null,"dir":"Reference","previous_headings":"","what":"Read in a taxonomy file and parse it to a wide dataframe — read_tax","title":"Read in a taxonomy file and parse it to a wide dataframe — read_tax","text":"Read taxonomy file parse wide dataframe","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/read_tax.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Read in a taxonomy file and parse it to a wide dataframe — read_tax","text":"","code":"read_tax(taxonomy_filename, sep = \"\\t\")"},{"path":"http://www.schlosslab.org/schtools/dev/reference/read_tax.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Read in a taxonomy file and parse it to a wide dataframe — read_tax","text":"taxonomy_filename filename taxonomy file sep Character separates fields taxonomy file. (Default: \\t).","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/read_tax.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Read in a taxonomy file and parse it to a wide dataframe — read_tax","text":"dataframe taxonomic labels, formatted parse_tax()","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/read_tax.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Read in a taxonomy file and parse it to a wide dataframe — read_tax","text":"Nick Lesniak, nlesniak@umich.edu Kelly Sovacool, sovacool@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/read_tax.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Read in a taxonomy file and parse it to a wide dataframe — read_tax","text":"","code":"taxonomy_filepath <- system.file(\"extdata\", \"test.taxonomy\", package = \"schtools\" ) taxonomy_tbl <- read_tax(taxonomy_filepath) head(taxonomy_tbl) #> # A tibble: 6 × 10 #> otu otu_label tax_otu_l…¹ label…² kingdom phylum class order family genus #> #> 1 Otu0001 OTU 1 Bacteroide… Bac… Bacter… Bacte… Bact… Bact… Bacte… Bact… #> 2 Otu0003 OTU 3 Porphyromo… Por… Bacter… Bacte… Bact… Bact… Porph… Porp… #> 3 Otu0004 OTU 4 Porphyromo… Por… Bacter… Bacte… Bact… Bact… Porph… Porp… #> 4 Otu00008 OTU 8 Enterobact… Ent… Bacter… Prote… Gamm… Ente… Enter… Ente… #> 5 Otu0044 OTU 44 Bacteria (… Bac… Bacter… Bacte… Bact… Bact… Bacte… Bact… #> 6 Otu0056 OTU 56 Bacteria (… Bac… Bacter… Bacte… Bact… Bact… Bacte… Bact… #> # … with abbreviated variable names ¹​tax_otu_label, ²​label_html"},{"path":"http://www.schlosslab.org/schtools/dev/reference/reexports.html","id":null,"dir":"Reference","previous_headings":"","what":"dplyr pipe — reexports","title":"dplyr pipe — reexports","text":"objects imported packages. Follow links see documentation. dplyr %>% rlang .data","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/schtools.html","id":null,"dir":"Reference","previous_headings":"","what":"schtools: Schloss Lab Tools for Reproducible Microbiome Research — schtools","title":"schtools: Schloss Lab Tools for Reproducible Microbiome Research — schtools","text":"collection useful functions example code created used Schloss Lab reproducible microbiome research. Perform common tasks like read files created mothur, tidy microbiome data, format rmarkdown documents publication. See website information, documentation, examples.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/set_knitr_opts.html","id":null,"dir":"Reference","previous_headings":"","what":"Set knitr chunk options & inline hook — set_knitr_opts","title":"Set knitr chunk options & inline hook — set_knitr_opts","text":"Call function setup chunk R Markdown files.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/set_knitr_opts.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set knitr chunk options & inline hook — set_knitr_opts","text":"","code":"set_knitr_opts()"},{"path":"http://www.schlosslab.org/schtools/dev/reference/set_knitr_opts.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Set knitr chunk options & inline hook — set_knitr_opts","text":"Pat Schloss pschloss@umich.edu Kelly Sovacool sovacool@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/dev/news/index.html","id":"schtools-021","dir":"Changelog","previous_headings":"","what":"schtools 0.2.1","title":"schtools 0.2.1","text":"CRAN release: 2022-05-11 New column label_html provides HTML correctly italicize genus names OTU labels. Added example intro vignette demonstrate using feature ggtext. Changed taxonomy data frame column names lowercase reordered . Minor documentation improvements (#33, @kelly-sovacool)","code":""},{"path":"http://www.schlosslab.org/schtools/dev/news/index.html","id":"schtools-011","dir":"Changelog","previous_headings":"","what":"schtools 0.1.1","title":"schtools 0.1.1","text":"CRAN release: 2022-03-11 New function parse_tax() separate logic reading parsing taxonomy files. read_tax() now accepts sep parameter handle different delim file types (e.g. csv tsv). schtools now logo! (#31, @kelly-sovacool)","code":""},{"path":"http://www.schlosslab.org/schtools/dev/news/index.html","id":"schtools-010","dir":"Changelog","previous_headings":"","what":"schtools 0.1.0","title":"schtools 0.1.0","text":"CRAN release: 2021-11-22 first release version schtools! 🎉 can now install schtools CRAN! Added NEWS.md file track changes package. read_dist() (#10, @NLesniak) read_tax() (#22, @NLesniak) set_knitr_opts() (#21, @pschloss, @kelly-sovacool) inline_hook() (#21, @pschloss, @kelly-sovacool) paste_oxford_list() (#21, @pschloss, @kelly-sovacool) format_number() (#24, @pschloss, @kelly-sovacool) is_nearly_whole() (#24, @pschloss, @kelly-sovacool) close_enough() (#26, @kelly-sovacool) is_nondesc() (#28, @kelly-sovacool) introduction","code":""}] +[{"path":[]},{"path":"http://www.schlosslab.org/schtools/dev/CODE_OF_CONDUCT.html","id":"our-pledge","dir":"","previous_headings":"","what":"Our Pledge","title":"Contributor Covenant Code of Conduct","text":"members, contributors, leaders pledge make participation community harassment-free experience everyone, regardless age, body size, visible invisible disability, ethnicity, sex characteristics, gender identity expression, level experience, education, socio-economic status, nationality, personal appearance, race, religion, sexual identity orientation. pledge act interact ways contribute open, welcoming, diverse, inclusive, healthy community.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CODE_OF_CONDUCT.html","id":"our-standards","dir":"","previous_headings":"","what":"Our Standards","title":"Contributor Covenant Code of Conduct","text":"Examples behavior contributes positive environment community include: Demonstrating empathy kindness toward people respectful differing opinions, viewpoints, experiences Giving gracefully accepting constructive feedback Accepting responsibility apologizing affected mistakes, learning experience Focusing best just us individuals, overall community Examples unacceptable behavior include: use sexualized language imagery, sexual attention advances kind Trolling, insulting derogatory comments, personal political attacks Public private harassment Publishing others’ private information, physical email address, without explicit permission conduct reasonably considered inappropriate professional setting","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CODE_OF_CONDUCT.html","id":"enforcement-responsibilities","dir":"","previous_headings":"","what":"Enforcement Responsibilities","title":"Contributor Covenant Code of Conduct","text":"Community leaders responsible clarifying enforcing standards acceptable behavior take appropriate fair corrective action response behavior deem inappropriate, threatening, offensive, harmful. Community leaders right responsibility remove, edit, reject comments, commits, code, wiki edits, issues, contributions aligned Code Conduct, communicate reasons moderation decisions appropriate.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CODE_OF_CONDUCT.html","id":"scope","dir":"","previous_headings":"","what":"Scope","title":"Contributor Covenant Code of Conduct","text":"Code Conduct applies within community spaces, also applies individual officially representing community public spaces. Examples representing community include using official e-mail address, posting via official social media account, acting appointed representative online offline event.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CODE_OF_CONDUCT.html","id":"enforcement","dir":"","previous_headings":"","what":"Enforcement","title":"Contributor Covenant Code of Conduct","text":"Instances abusive, harassing, otherwise unacceptable behavior may reported community leaders responsible enforcement [INSERT CONTACT METHOD]. complaints reviewed investigated promptly fairly. community leaders obligated respect privacy security reporter incident.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CODE_OF_CONDUCT.html","id":"enforcement-guidelines","dir":"","previous_headings":"","what":"Enforcement Guidelines","title":"Contributor Covenant Code of Conduct","text":"Community leaders follow Community Impact Guidelines determining consequences action deem violation Code Conduct:","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CODE_OF_CONDUCT.html","id":"1-correction","dir":"","previous_headings":"Enforcement Guidelines","what":"1. Correction","title":"Contributor Covenant Code of Conduct","text":"Community Impact: Use inappropriate language behavior deemed unprofessional unwelcome community. Consequence: private, written warning community leaders, providing clarity around nature violation explanation behavior inappropriate. public apology may requested.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CODE_OF_CONDUCT.html","id":"2-warning","dir":"","previous_headings":"Enforcement Guidelines","what":"2. Warning","title":"Contributor Covenant Code of Conduct","text":"Community Impact: violation single incident series actions. Consequence: warning consequences continued behavior. interaction people involved, including unsolicited interaction enforcing Code Conduct, specified period time. includes avoiding interactions community spaces well external channels like social media. Violating terms may lead temporary permanent ban.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CODE_OF_CONDUCT.html","id":"3-temporary-ban","dir":"","previous_headings":"Enforcement Guidelines","what":"3. Temporary Ban","title":"Contributor Covenant Code of Conduct","text":"Community Impact: serious violation community standards, including sustained inappropriate behavior. Consequence: temporary ban sort interaction public communication community specified period time. public private interaction people involved, including unsolicited interaction enforcing Code Conduct, allowed period. Violating terms may lead permanent ban.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CODE_OF_CONDUCT.html","id":"4-permanent-ban","dir":"","previous_headings":"Enforcement Guidelines","what":"4. Permanent Ban","title":"Contributor Covenant Code of Conduct","text":"Community Impact: Demonstrating pattern violation community standards, including sustained inappropriate behavior, harassment individual, aggression toward disparagement classes individuals. Consequence: permanent ban sort public interaction within community.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CODE_OF_CONDUCT.html","id":"attribution","dir":"","previous_headings":"","what":"Attribution","title":"Contributor Covenant Code of Conduct","text":"Code Conduct adapted Contributor Covenant, version 2.0, available https://www.contributor-covenant.org/version/2/0/ code_of_conduct.html. Community Impact Guidelines inspired Mozilla’s code conduct enforcement ladder. answers common questions code conduct, see FAQ https://www.contributor-covenant.org/faq. Translations available https:// www.contributor-covenant.org/translations.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CONTRIBUTING.html","id":null,"dir":"","previous_headings":"","what":"Contributing to schtools","title":"Contributing to schtools","text":"outlines propose change schtools. detailed info contributing , tidyverse packages, please see development contributing guide.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CONTRIBUTING.html","id":"fixing-typos","dir":"","previous_headings":"","what":"Fixing typos","title":"Contributing to schtools","text":"can fix typos, spelling mistakes, grammatical errors documentation directly using GitHub web interface, long changes made source file. generally means ’ll need edit roxygen2 comments .R, .Rd file. can find .R file generates .Rd reading comment first line.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CONTRIBUTING.html","id":"bigger-changes","dir":"","previous_headings":"","what":"Bigger changes","title":"Contributing to schtools","text":"want make bigger change, ’s good idea first file issue make sure someone team agrees ’s needed. ’ve found bug, please file issue illustrates bug minimal reprex (also help write unit test, needed).","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CONTRIBUTING.html","id":"pull-request-process","dir":"","previous_headings":"Bigger changes","what":"Pull request process","title":"Contributing to schtools","text":"Fork package clone onto computer. haven’t done , recommend using usethis::create_from_github(\"SchlossLab/schtools\", fork = TRUE). Install development dependences devtools::install_dev_deps(), make sure package passes R CMD check running devtools::check(). R CMD check doesn’t pass cleanly, ’s good idea ask help continuing. Create Git branch pull request (PR). recommend using usethis::pr_init(\"brief-description--change\"). Make changes, commit git, create PR running usethis::pr_push(), following prompts browser. title PR briefly describe change. body PR contain Fixes #issue-number. user-facing changes, add bullet top NEWS.md (.e. just first header). Follow style described https://style.tidyverse.org/news.html.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CONTRIBUTING.html","id":"code-style","dir":"","previous_headings":"Bigger changes","what":"Code style","title":"Contributing to schtools","text":"New code follow tidyverse style guide. can use styler package apply styles, please don’t restyle code nothing PR. use roxygen2, Markdown syntax, documentation. use testthat unit tests. Contributions test cases included easier accept.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/CONTRIBUTING.html","id":"code-of-conduct","dir":"","previous_headings":"","what":"Code of Conduct","title":"Contributing to schtools","text":"Please note schtools project released Contributor Code Conduct. contributing project agree abide terms.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/LICENSE.html","id":null,"dir":"","previous_headings":"","what":"License","title":"License","text":"software licensed MIT License. Everything else licensed CC -SA license.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/LICENSE.html","id":"mit-license","dir":"","previous_headings":"","what":"MIT License","title":"License","text":"Copyright (c) 2021 Kelly L. Sovacool, Nick Lesniak, Patrick D. Schloss Permission hereby granted, free charge, person obtaining copy software associated documentation files (“Software”), deal Software without restriction, including without limitation rights use, copy, modify, merge, publish, distribute, sublicense, /sell copies Software, permit persons Software furnished , subject following conditions: copyright notice permission notice shall included copies substantial portions Software. SOFTWARE PROVIDED “”, WITHOUT WARRANTY KIND, EXPRESS IMPLIED, INCLUDING LIMITED WARRANTIES MERCHANTABILITY, FITNESS PARTICULAR PURPOSE NONINFRINGEMENT. EVENT SHALL AUTHORS COPYRIGHT HOLDERS LIABLE CLAIM, DAMAGES LIABILITY, WHETHER ACTION CONTRACT, TORT OTHERWISE, ARISING , CONNECTION SOFTWARE USE DEALINGS SOFTWARE.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/LICENSE.html","id":"creative-commons-share-alike-license","dir":"","previous_headings":"","what":"Creative Commons Share Alike License","title":"License","text":"schtools logo licensed CC -SA 4.0 license. hammer poo images contained logo designed OpenMoji, open-source emoji icon project, also licensed CC -SA 4.0.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/SUPPORT.html","id":null,"dir":"","previous_headings":"","what":"Getting help with schtools","title":"Getting help with schtools","text":"Thanks using schtools! filing issue, places explore pieces put together make process smooth possible.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/SUPPORT.html","id":"make-a-reprex","dir":"","previous_headings":"","what":"Make a reprex","title":"Getting help with schtools","text":"Start making minimal reproducible example using reprex package. haven’t heard used reprex , ’re treat! Seriously, reprex make R-question-asking endeavors easier (pretty insane ROI five ten minutes ’ll take learn ’s ). additional reprex pointers, check Get help! section tidyverse site.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/SUPPORT.html","id":"where-to-ask","dir":"","previous_headings":"","what":"Where to ask?","title":"Getting help with schtools","text":"Armed reprex, next step figure ask. ’s question: start community.rstudio.com, /StackOverflow. people answer questions. ’s bug: ’re right place, file issue. ’re sure: let community help figure ! problem bug feature request, can easily return report . opening new issue, sure search issues pull requests make sure bug hasn’t reported /already fixed development version. default, search pre-populated :issue :open. can edit qualifiers (e.g. :pr, :closed) needed. example, ’d simply remove :open search issues repo, open closed.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/SUPPORT.html","id":"what-happens-next","dir":"","previous_headings":"","what":"What happens next?","title":"Getting help with schtools","text":"efficient possible, development tidyverse packages tends bursty, shouldn’t worry don’t get immediate response. Typically don’t look repo sufficient quantity issues accumulates, ’s burst intense activity focus efforts. makes development efficient avoids expensive context switching problems, cost taking longer get back . process makes good reprex particularly important might multiple months initial report start working . can’t reproduce bug, can’t fix !","code":""},{"path":[]},{"path":"http://www.schlosslab.org/schtools/dev/articles/introduction.html","id":"calculate-relative-abundances","dir":"Articles","previous_headings":"Handling mothur data","what":"Calculate relative abundances","title":"Introduction to schtools","text":"can read shared file calculate relative abundances calc_relabun(): calc_relabun() returns data frame long format. can use tidyr::pivot_wider() convert wide format: can see relative abundances sample sum 1:","code":"shared_dat <- read_tsv(system.file(\"extdata\", \"test.shared\", package = \"schtools\")) #> Rows: 10 Columns: 15 #> ── Column specification ──────────────────────────────────────────────────────── #> Delimiter: \"\\t\" #> chr (1): Group #> dbl (14): label, numOtus, Otu0001, Otu0003, Otu0004, Otu00008, Otu0044, Otu0... #> #> ℹ Use `spec()` to retrieve the full column specification for this data. #> ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message. relabun_dat <- shared_dat %>% calc_relabun() head(relabun_dat) #> # A tibble: 6 × 3 #> sample otu rel_abun #> #> 1 p1 Otu0001 0 #> 2 p1 Otu0003 0 #> 3 p1 Otu0004 0 #> 4 p1 Otu00008 0 #> 5 p1 Otu0044 0.25 #> 6 p1 Otu0056 0.25 wide_dat <- relabun_dat %>% pivot_wider(names_from = \"otu\", values_from = \"rel_abun\") head(wide_dat) #> # A tibble: 6 × 13 #> sample Otu0001 Otu0003 Otu0004 Otu00…¹ Otu0044 Otu0056 Otu0057 Otu0058 Otu0159 #> #> 1 p1 0 0 0 0 0.25 0.25 0 0.25 0 #> 2 p2 0.167 0 0.167 0 0.167 0 0 0.167 0 #> 3 p3 0 0.2 0 0 0.2 0 0 0 0.2 #> 4 p4 0.25 0.25 0 0.25 0 0 0 0 0 #> 5 p5 0.25 0 0.25 0 0.25 0 0 0 0 #> 6 p6 0.167 0 0 0.167 0 0.167 0.167 0.167 0 #> # … with 3 more variables: Otu0208 , Otu0328 , Otu0329 , and #> # abbreviated variable name ¹​Otu00008 wide_dat %>% select(starts_with(\"Otu\")) %>% rowSums() #> [1] 1 1 1 1 1 1 1 1 1 1"},{"path":"http://www.schlosslab.org/schtools/dev/articles/introduction.html","id":"taxonomy-files","dir":"Articles","previous_headings":"Handling mothur data","what":"Taxonomy files","title":"Introduction to schtools","text":"mothur formats taxonomy files tab-separated values (tsv). can use read_tax() parse taxonomy data create separate columns taxonomic level. column label_html provides html correctly italicizes genus name without italicizing OTU label. can used ggtext::element_markdown() make nice plots:","code":"tax_dat <- read_tax(system.file(\"extdata\", \"test.taxonomy\", package = \"schtools\")) head(tax_dat) #> # A tibble: 6 × 10 #> otu otu_label tax_otu_l…¹ label…² kingdom phylum class order family genus #> #> 1 Otu0001 OTU 1 Bacteroide… Bac… Bacter… Bacte… Bact… Bact… Bacte… Bact… #> 2 Otu0003 OTU 3 Porphyromo… Por… Bacter… Bacte… Bact… Bact… Porph… Porp… #> 3 Otu0004 OTU 4 Porphyromo… Por… Bacter… Bacte… Bact… Bact… Porph… Porp… #> 4 Otu00008 OTU 8 Enterobact… Ent… Bacter… Prote… Gamm… Ente… Enter… Ente… #> 5 Otu0044 OTU 44 Bacteria (… Bac… Bacter… Bacte… Bact… Bact… Bacte… Bact… #> 6 Otu0056 OTU 56 Bacteria (… Bac… Bacter… Bacte… Bact… Bact… Bacte… Bact… #> # … with abbreviated variable names ¹​tax_otu_label, ²​label_html library(ggtext) set.seed(20220427) relabun_dat %>% mutate(sample_num = stringr::str_remove(sample, \"p\") %>% as.integer(), treatment = case_when(sample_num%%2 == 1 ~ \"A\", TRUE ~ \"B\")) %>% inner_join(tax_dat, by = \"otu\") %>% ggplot(aes(x = rel_abun, y = label_html, color = treatment)) + geom_jitter(alpha = 0.7, height = 0.2) + labs(x = \"Relative abundance\", y = \"\") + theme_minimal() + theme(axis.text.y = element_markdown())"},{"path":"http://www.schlosslab.org/schtools/dev/articles/introduction.html","id":"pooling-otu-counts-at-different-taxonomic-levels","dir":"Articles","previous_headings":"Handling mothur data > Taxonomy files","what":"Pooling OTU counts at different taxonomic levels","title":"Introduction to schtools","text":"common task repeat OTU-level analyses different taxonomic levels determine resolution optimal answering questions. ’ll need shared file, generated clustering sequences OTUs mothur, corresponding taxonomy file. Take look mothur documentation info generating files performing microbiome analyses. example, pool_taxon_counts() pools OTU counts shared file genus level returns new shared taxonomy data frames. can taxonomic level taxonomy data frame.","code":"tax_dat <- read_tax(system.file(\"extdata\", \"test.taxonomy\", package = \"schtools\")) shared_dat <- readr::read_tsv(system.file(\"extdata\", \"test.shared\", package = \"schtools\")) #> Rows: 10 Columns: 15 #> ── Column specification ──────────────────────────────────────────────────────── #> Delimiter: \"\\t\" #> chr (1): Group #> dbl (14): label, numOtus, Otu0001, Otu0003, Otu0004, Otu00008, Otu0044, Otu0... #> #> ℹ Use `spec()` to retrieve the full column specification for this data. #> ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message. pool_taxon_counts(shared_dat, tax_dat, genus) #> $shared #> # A tibble: 10 × 13 #> label Group numOtus Otu01 Otu02 Otu03 Otu04 Otu05 Otu06 Otu07 Otu08 Otu09 #> #> 1 genus p1 10 0 0 0 2 0 1 0 1 0 #> 2 genus p10 10 1 0 1 0 1 0 1 1 1 #> 3 genus p2 10 1 1 0 1 0 1 0 0 1 #> 4 genus p3 10 0 1 0 1 0 0 1 0 1 #> 5 genus p4 10 1 1 1 0 0 0 0 0 0 #> 6 genus p5 10 1 1 0 1 0 0 0 0 1 #> 7 genus p6 10 1 0 1 1 1 1 0 0 1 #> 8 genus p7 10 0 0 0 1 1 0 1 0 1 #> 9 genus p8 10 0 1 1 2 0 0 1 1 0 #> 10 genus p9 10 0 1 1 2 0 0 1 1 1 #> # … with 1 more variable: Otu10 #> #> $tax #> # A tibble: 10 × 3 #> otu size genus #> #> 1 Otu01 5 Bacteroides #> 2 Otu02 6 Porphyromonadaceae unclassified #> 3 Otu03 5 Enterobacteriaceae unclassified #> 4 Otu04 11 Bacteria unclassified #> 5 Otu05 3 Acinetobacter #> 6 Otu06 3 Clostridium XlVa #> 7 Otu07 5 Betaproteobacteria unclassified #> 8 Otu08 4 Clostridium XVIII #> 9 Otu09 7 Candidatus Saccharibacteria unclassified #> 10 Otu10 5 Clostridiales Incertae Sedis XIII unclassified pool_taxon_counts(shared_dat, tax_dat, phylum) #> $shared #> # A tibble: 10 × 8 #> label Group numOtus Otu1 Otu2 Otu3 Otu4 Otu5 #> #> 1 phylum p1 5 0 0 2 2 0 #> 2 phylum p10 5 1 3 0 1 1 #> 3 phylum p2 5 2 0 1 2 1 #> 4 phylum p3 5 1 1 1 1 1 #> 5 phylum p4 5 2 1 0 1 0 #> 6 phylum p5 5 2 0 1 0 1 #> 7 phylum p6 5 1 2 1 1 1 #> 8 phylum p7 5 0 2 1 1 1 #> 9 phylum p8 5 1 2 2 1 0 #> 10 phylum p9 5 1 2 2 2 1 #> #> $tax #> # A tibble: 5 × 3 #> otu size phylum #> #> 1 Otu1 11 Bacteroidetes #> 2 Otu2 13 Proteobacteria #> 3 Otu3 11 Bacteria unclassified #> 4 Otu4 12 Firmicutes #> 5 Otu5 7 Candidatus Saccharibacteria"},{"path":"http://www.schlosslab.org/schtools/dev/articles/introduction.html","id":"distance-files","dir":"Articles","previous_headings":"Handling mothur data","what":"Distance files","title":"Introduction to schtools","text":"distance file saved phylip-formatted lower triangle matrix mothur’s dist.seqs command, can read R read_dist():","code":"dist_filepath <- system.file(\"extdata\", \"sample.final.thetayc.0.03.lt.ave.dist\", package = \"schtools\") dist_tbl <- read_dist(dist_filepath) head(dist_tbl) #> # A tibble: 6 × 3 #> rows columns distances #> #> 1 104_1_D1 104_1_D0 0.893 #> 2 104_1_D10 104_1_D0 0.254 #> 3 104_1_D10 104_1_D1 0.922 #> 4 104_1_D2 104_1_D0 0.874 #> 5 104_1_D2 104_1_D1 0.109 #> 6 104_1_D2 104_1_D10 0.904"},{"path":"http://www.schlosslab.org/schtools/dev/articles/introduction.html","id":"r-markdown-helpers-for-scientific-writing","dir":"Articles","previous_headings":"","what":"R Markdown helpers for scientific writing","title":"Introduction to schtools","text":"writing scientific papers R Markdown, often find using knitr chunk options miscellaneous helper functions. use favorite options like eval=TRUE, echo=FALSE, others, run set_knitr_opts() first chunk R Markdown document: also sets inline hook custom inline_hook() function, automatically formats numbers human-readable way inserts Oxford comma lists needed.","code":"```{r, include = FALSE} set_knitr_opts() ```"},{"path":"http://www.schlosslab.org/schtools/dev/articles/introduction.html","id":"who-doesnt-love-an-oxford-comma","dir":"Articles","previous_headings":"R Markdown helpers for scientific writing","what":"Who doesn’t love an Oxford comma?","title":"Introduction to schtools","text":"writing R Markdown, may wish insert list vector inline correctly format Oxford comma. inline_hook() uses paste_oxford_list() help just ! Insert string inline code `r `: `r animals` common pets. Rendered output: cats, dogs, fish common pets.","code":"animals <- c(\"cats\", \"dogs\", \"fish\")"},{"path":"http://www.schlosslab.org/schtools/dev/articles/introduction.html","id":"human-readable-numbers","dir":"Articles","previous_headings":"R Markdown helpers for scientific writing","what":"Human-readable numbers","title":"Introduction to schtools","text":"inline_hook() uses format_numbers() hood automatically format numbers human-readable format, rather display scientific notation. numbers `r c(1e-04, 1e-05, 1e-06)` precise, `r c(1e04, 1e05, 1e06)` large. Rendered output: numbers 0.0001, 0.00001, 0.000001 precise. 10,000, 100,000, 1,000,000 large.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/articles/logo.html","id":"emojis","dir":"Articles","previous_headings":"","what":"Emojis","title":"logo","text":"OpenMoji, licensed CC -SA 4.0 poop: https://openmoji.org/library/#search=poo&emoji=1F4A9 wrench: https://openmoji.org/library/#search=tool&emoji=1F527 hammer: https://openmoji.org/library/#search=tool&emoji=1F528","code":"poo_file <- here('vignettes', 'articles','1F4A9_color.png') wrench_file <- here('vignettes', 'articles', '1F527_color.png') hammer_file <- here('vignettes', 'articles', '1F528_color.png') img <- ggdraw() + #draw_image(wrench_file, scale = 0.55, x = 0.195, y = 0.05) + draw_image(hammer_file, scale = 0.7, x = -0.32, y = 0.05) + draw_image(poo_file) ggsave2(img, filename = here('vignettes', 'articles', 'poo-hammer.png'), height = 2, width = 2, units = 'in') img"},{"path":"http://www.schlosslab.org/schtools/dev/articles/logo.html","id":"schtools-logo","dir":"Articles","previous_headings":"","what":"Schtools Logo","title":"logo","text":"","code":"mint <- '#A2EAE0' pink <- '#FA9DC5' orange <- '#FFDBAD' black <- '#000000' logo_filename <- here('vignettes', 'articles', 'schtools-logo.png') sticker(img, package = 'schtools', s_x = 1, s_y = 0.85, s_width = 1.6, s_height = 1.6, p_x = 1, p_y = 1.55, p_color = black, p_size = 23, p_family = 'Source Sans Pro', h_fill = mint, h_color = orange, url = 'schlosslab.org/schtools', u_size = 3.5, filename = logo_filename) ggdraw() + draw_image(logo_filename)"},{"path":"http://www.schlosslab.org/schtools/dev/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Kelly Sovacool. Author, maintainer. Nick Lesniak. Author. Patrick Schloss. Author. Sarah Lucas. Contributor. Courtney Armour. Contributor. Jacqueline Moltzau. Contributor. Andrew Hannah. Contributor. Nielson Baxter. Contributor. Alyxandria Schubert. Contributor. Kathryn Iverson. Contributor.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Sovacool K, Lesniak N, Schloss P (2022). schtools: Schloss Lab Tools Reproducible Microbiome Research. http://www.schlosslab.org/schtools/, https://github.com/SchlossLab/schtools.","code":"@Manual{, title = {schtools: Schloss Lab Tools for Reproducible Microbiome Research}, author = {Kelly Sovacool and Nick Lesniak and Patrick Schloss}, year = {2022}, note = {http://www.schlosslab.org/schtools/, https://github.com/SchlossLab/schtools}, }"},{"path":"http://www.schlosslab.org/schtools/dev/index.html","id":"schtools-","dir":"","previous_headings":"","what":"Schloss Lab Tools for Reproducible Microbiome Research","title":"Schloss Lab Tools for Reproducible Microbiome Research","text":"Schloss Lab Tools Reproducible Microbiome Research 💩 collection useful functions example code created used Schloss Lab reproducible microbiome research. Perform common tasks like read output files mothur, tidy microbiome data, format rmarkdown documents publication. See website information, documentation, examples.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/index.html","id":"installation","dir":"","previous_headings":"","what":"Installation","title":"Schloss Lab Tools for Reproducible Microbiome Research","text":"can install latest release CRAN: development version GitHub : install terminal using conda mamba:","code":"install.packages(\"schtools\") # install.packages(\"devtools\") devtools::install_github(\"SchlossLab/schtools\") mamba install -c conda-forge r-schtools"},{"path":"http://www.schlosslab.org/schtools/dev/index.html","id":"usage","dir":"","previous_headings":"","what":"Usage","title":"Schloss Lab Tools for Reproducible Microbiome Research","text":"Check introductory vignette quick start tutorial take look reference documentation comprehensive list functions.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/index.html","id":"help--contributing","dir":"","previous_headings":"","what":"Help & Contributing","title":"Schloss Lab Tools for Reproducible Microbiome Research","text":"questions, create new post Discussions. come across bug, open issue include minimal reproducible example. ’d like contribute, see guidelines .","code":""},{"path":"http://www.schlosslab.org/schtools/dev/index.html","id":"code-of-conduct","dir":"","previous_headings":"","what":"Code of Conduct","title":"Schloss Lab Tools for Reproducible Microbiome Research","text":"Please note schtools project released Contributor Code Conduct. contributing project, agree abide terms.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/index.html","id":"license","dir":"","previous_headings":"","what":"License","title":"Schloss Lab Tools for Reproducible Microbiome Research","text":"schtools package licensed MIT license. logo licensed CC -SA license.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/index.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Schloss Lab Tools for Reproducible Microbiome Research","text":"cite schtools publications, use: Sovacool K, Lesniak N, Schloss P (2022). schtools: Schloss Lab Tools Reproducible Microbiome Research. http://www.schlosslab.org/schtools/, https://github.com/SchlossLab/schtools. BibTeX entry LaTeX users :","code":"@Manual{, title = {schtools: Schloss Lab Tools for Reproducible Microbiome Research}, author = {Kelly Sovacool and Nick Lesniak and Patrick Schloss}, year = {2022}, note = {http://www.schlosslab.org/schtools/, https://github.com/SchlossLab/schtools}, }"},{"path":"http://www.schlosslab.org/schtools/dev/pull_request_template.html","id":"issues","dir":"","previous_headings":"","what":"Issues","title":"NA","text":"Resolves # .","code":""},{"path":[]},{"path":"http://www.schlosslab.org/schtools/dev/pull_request_template.html","id":"checklist","dir":"","previous_headings":"","what":"Checklist","title":"NA","text":"(Strikethrough points applicable.) Write unit tests new functionality. Update roxygen comments & vignettes API changes. Update NEWS.md includes user-facing changes. check workflow succeeds recent commit.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/calc_relabun.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate OTU relative abundances from a shared file — calc_relabun","title":"Calculate OTU relative abundances from a shared file — calc_relabun","text":"Calculate OTU relative abundances shared file","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/calc_relabun.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate OTU relative abundances from a shared file — calc_relabun","text":"","code":"calc_relabun(abs_abun_dat)"},{"path":"http://www.schlosslab.org/schtools/dev/reference/calc_relabun.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate OTU relative abundances from a shared file — calc_relabun","text":"abs_abun_dat data frame reading shared file. contain Group column sample names, Otu columns absolute counts OTU, rows sample.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/calc_relabun.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate OTU relative abundances from a shared file — calc_relabun","text":"new data frame OTU relative abundances long format.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/calc_relabun.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Calculate OTU relative abundances from a shared file — calc_relabun","text":"Kelly Sovacool sovacool@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/calc_relabun.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate OTU relative abundances from a shared file — calc_relabun","text":"","code":"shared_dat <- readr::read_tsv(system.file(\"extdata\", \"test.shared\", package = \"schtools\")) #> Rows: 10 Columns: 15 #> ── Column specification ──────────────────────────────────────────────────────── #> Delimiter: \"\\t\" #> chr (1): Group #> dbl (14): label, numOtus, Otu0001, Otu0003, Otu0004, Otu00008, Otu0044, Otu0... #> #> ℹ Use `spec()` to retrieve the full column specification for this data. #> ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message. shared_dat %>% calc_relabun() #> # A tibble: 120 × 3 #> sample otu rel_abun #> #> 1 p1 Otu0001 0 #> 2 p1 Otu0003 0 #> 3 p1 Otu0004 0 #> 4 p1 Otu00008 0 #> 5 p1 Otu0044 0.25 #> 6 p1 Otu0056 0.25 #> 7 p1 Otu0057 0 #> 8 p1 Otu0058 0.25 #> 9 p1 Otu0159 0 #> 10 p1 Otu0208 0.25 #> # … with 110 more rows"},{"path":"http://www.schlosslab.org/schtools/dev/reference/close_enough.html","id":null,"dir":"Reference","previous_headings":"","what":"Check whether two numeric vectors are close enough for gov't work. — close_enough","title":"Check whether two numeric vectors are close enough for gov't work. — close_enough","text":"like dplyr::near() except much less precision.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/close_enough.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check whether two numeric vectors are close enough for gov't work. — close_enough","text":"","code":"close_enough(x, y, tol = 10^-3)"},{"path":"http://www.schlosslab.org/schtools/dev/reference/close_enough.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check whether two numeric vectors are close enough for gov't work. — close_enough","text":"x numeric vector y another numeric vector tol tolerance (default: 10^-3.)","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/close_enough.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check whether two numeric vectors are close enough for gov't work. — close_enough","text":"TRUE numbers near enough within tolerance, otherwise FALSE","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/close_enough.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Check whether two numeric vectors are close enough for gov't work. — close_enough","text":"Kelly Sovacool sovacool@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/close_enough.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Check whether two numeric vectors are close enough for gov't work. — close_enough","text":"","code":"close_enough(0.0004, 0) #> [1] TRUE close_enough(0.8887, 0.8884) #> [1] TRUE close_enough(1, 2) #> [1] FALSE"},{"path":"http://www.schlosslab.org/schtools/dev/reference/format_number.html","id":null,"dir":"Reference","previous_headings":"","what":"Format human-readable numbers. — format_number","title":"Format human-readable numbers. — format_number","text":"Pastes formatted x numeric, otherwise x unmodified. Circumvents R's automatic scientific notation. number nearly whole (see is_nearly_whole()), rounded zero decimal places. Otherwise, numbers >= 1 rounded 1 decimal place; numbers < 1 rounded 2 significant digits.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/format_number.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Format human-readable numbers. — format_number","text":"","code":"format_number(x, nsmall = 1, signif_precise = 2)"},{"path":"http://www.schlosslab.org/schtools/dev/reference/format_number.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Format human-readable numbers. — format_number","text":"x inline code nsmall number digits decimal point round x nearly whole x >= 1. signif_precise number significant digits use x nearly whole","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/format_number.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Format human-readable numbers. — format_number","text":"formatted x numeric, otherwise x unmodified.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/format_number.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Format human-readable numbers. — format_number","text":"Pat Schloss pschloss@umich.edu Kelly Sovacool sovacool@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/format_number.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Format human-readable numbers. — format_number","text":"","code":"format_number(0.0256) #> [1] \"0.026\" format_number(.Machine$double.eps^0.5) #> [1] \"0.000000015\" format_number(100000.08) #> [1] \"100,000.1\" format_number(1.00000000000000000001) #> [1] \"1\" format_number(\"this is a string\") #> [1] \"this is a string\""},{"path":"http://www.schlosslab.org/schtools/dev/reference/inline_hook.html","id":null,"dir":"Reference","previous_headings":"","what":"Inline hook for knitr to paste human-readable numbers and nice lists. — inline_hook","title":"Inline hook for knitr to paste human-readable numbers and nice lists. — inline_hook","text":"Inline hook knitr paste human-readable numbers nice lists.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/inline_hook.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Inline hook for knitr to paste human-readable numbers and nice lists. — inline_hook","text":"","code":"inline_hook(x)"},{"path":"http://www.schlosslab.org/schtools/dev/reference/inline_hook.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Inline hook for knitr to paste human-readable numbers and nice lists. — inline_hook","text":"x just anything","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/inline_hook.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Inline hook for knitr to paste human-readable numbers and nice lists. — inline_hook","text":"string element x separated comma numbers human-readable format.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/inline_hook.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Inline hook for knitr to paste human-readable numbers and nice lists. — inline_hook","text":"Kelly Sovacool sovacool@umich.edu Pat Schloss pschloss@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/inline_hook.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Inline hook for knitr to paste human-readable numbers and nice lists. — inline_hook","text":"","code":"inline_hook(c(1.2993992, 0.03, 1000)) #> [1] \"1.3, 0.03, and 1,000\" inline_hook(c(\"cats\", \"dogs\")) #> [1] \"cats and dogs\""},{"path":"http://www.schlosslab.org/schtools/dev/reference/is_nearly_whole.html","id":null,"dir":"Reference","previous_headings":"","what":"Checks whether a number is near to a whole number — is_nearly_whole","title":"Checks whether a number is near to a whole number — is_nearly_whole","text":"Checks whether number near whole number","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/is_nearly_whole.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Checks whether a number is near to a whole number — is_nearly_whole","text":"","code":"is_nearly_whole(x)"},{"path":"http://www.schlosslab.org/schtools/dev/reference/is_nearly_whole.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Checks whether a number is near to a whole number — is_nearly_whole","text":"x numeric","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/is_nearly_whole.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Checks whether a number is near to a whole number — is_nearly_whole","text":"TRUE FALSE","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/is_nearly_whole.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Checks whether a number is near to a whole number — is_nearly_whole","text":"Kelly Sovacool sovacool@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/is_nearly_whole.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Checks whether a number is near to a whole number — is_nearly_whole","text":"","code":"is_nearly_whole(.Machine$double.eps^0.5) #> [1] FALSE is_nearly_whole(.Machine$double.eps^0.6) #> [1] TRUE is_nearly_whole(1) #> [1] TRUE"},{"path":"http://www.schlosslab.org/schtools/dev/reference/is_nondesc.html","id":null,"dir":"Reference","previous_headings":"","what":"Check whether all elements given are sorted in non-descending order — is_nondesc","title":"Check whether all elements given are sorted in non-descending order — is_nondesc","text":"Check whether elements given sorted non-descending order","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/is_nondesc.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check whether all elements given are sorted in non-descending order — is_nondesc","text":"","code":"is_nondesc(...)"},{"path":"http://www.schlosslab.org/schtools/dev/reference/is_nondesc.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check whether all elements given are sorted in non-descending order — is_nondesc","text":"... anything!","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/is_nondesc.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check whether all elements given are sorted in non-descending order — is_nondesc","text":"TRUE elements sorted non-descending order, otherwise FALSE","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/is_nondesc.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Check whether all elements given are sorted in non-descending order — is_nondesc","text":"Kelly Sovacool sovacool@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/is_nondesc.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Check whether all elements given are sorted in non-descending order — is_nondesc","text":"","code":"is_nondesc(1, 2, 3) #> [1] TRUE is_nondesc(c(1, 2), 3) #> [1] TRUE is_nondesc(6, 4, 1) #> [1] FALSE is_nondesc(\"a\", \"b\", \"c\") #> [1] TRUE is_nondesc(c(\"z\", \"y\")) #> [1] FALSE"},{"path":"http://www.schlosslab.org/schtools/dev/reference/load_deps.html","id":null,"dir":"Reference","previous_headings":"","what":"Install & load packages — load_deps","title":"Install & load packages — load_deps","text":"Install & load packages","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/load_deps.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Install & load packages — load_deps","text":"","code":"load_deps(...)"},{"path":"http://www.schlosslab.org/schtools/dev/reference/load_deps.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Install & load packages — load_deps","text":"... package names install & load","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/load_deps.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Install & load packages — load_deps","text":"Kelly Sovacool sovacool@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/log_snakemake.html","id":null,"dir":"Reference","previous_headings":"","what":"Save output, messages, warnings, and errors to the Snakemake log file — log_snakemake","title":"Save output, messages, warnings, and errors to the Snakemake log file — log_snakemake","text":"function checks whether log file specified Snakemake rule. , directs output, messages, warnings, errors rule-specific log file. See Snakemake documentation log files R scripts details.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/log_snakemake.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Save output, messages, warnings, and errors to the Snakemake log file — log_snakemake","text":"","code":"log_snakemake(quiet = TRUE)"},{"path":"http://www.schlosslab.org/schtools/dev/reference/log_snakemake.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Save output, messages, warnings, and errors to the Snakemake log file — log_snakemake","text":"quiet Silence messages status snakemake object log file (default: TRUE).","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/log_snakemake.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Save output, messages, warnings, and errors to the Snakemake log file — log_snakemake","text":"Kelly Sovacool sovacool@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/log_snakemake.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Save output, messages, warnings, and errors to the Snakemake log file — log_snakemake","text":"","code":"# The Snakemake object doesn't exist, so nothing happens log_snakemake(quiet = FALSE) #> No Snakemake object exists, so all output will print as usual"},{"path":"http://www.schlosslab.org/schtools/dev/reference/parse_tax.html","id":null,"dir":"Reference","previous_headings":"","what":"Convert taxonomy strings into dataframe of labels based on taxonomic classification — parse_tax","title":"Convert taxonomy strings into dataframe of labels based on taxonomic classification — parse_tax","text":"Convert taxonomy strings dataframe labels based taxonomic classification","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/parse_tax.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convert taxonomy strings into dataframe of labels based on taxonomic classification — parse_tax","text":"","code":"parse_tax(dat)"},{"path":"http://www.schlosslab.org/schtools/dev/reference/parse_tax.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convert taxonomy strings into dataframe of labels based on taxonomic classification — parse_tax","text":"dat dataframe mothur taxonomy file columns OTU, Size, Taxonomy","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/parse_tax.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Convert taxonomy strings into dataframe of labels based on taxonomic classification — parse_tax","text":"wide dataframe taxonomic labels","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/parse_tax.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Convert taxonomy strings into dataframe of labels based on taxonomic classification — parse_tax","text":"Nick Lesniak, nlesniak@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/parse_tax.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Convert taxonomy strings into dataframe of labels based on taxonomic classification — parse_tax","text":"","code":"taxonomy_filepath <- system.file(\"extdata\", \"test.taxonomy\", package = \"schtools\" ) taxonomy_tbl <- read_tax(taxonomy_filepath) head(taxonomy_tbl) #> # A tibble: 6 × 10 #> otu otu_label tax_otu_l…¹ label…² kingdom phylum class order family genus #> #> 1 Otu0001 OTU 1 Bacteroide… Bac… Bacter… Bacte… Bact… Bact… Bacte… Bact… #> 2 Otu0003 OTU 3 Porphyromo… Por… Bacter… Bacte… Bact… Bact… Porph… Porp… #> 3 Otu0004 OTU 4 Porphyromo… Por… Bacter… Bacte… Bact… Bact… Porph… Porp… #> 4 Otu00008 OTU 8 Enterobact… Ent… Bacter… Prote… Gamm… Ente… Enter… Ente… #> 5 Otu0044 OTU 44 Bacteria (… Bac… Bacter… Bacte… Bact… Bact… Bacte… Bact… #> 6 Otu0056 OTU 56 Bacteria (… Bac… Bacter… Bacte… Bact… Bact… Bacte… Bact… #> # … with abbreviated variable names ¹​tax_otu_label, ²​label_html"},{"path":"http://www.schlosslab.org/schtools/dev/reference/paste_oxford_list.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a prose string from a list or vector — paste_oxford_list","title":"Create a prose string from a list or vector — paste_oxford_list","text":"word '' inserted last element Oxford comma used.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/paste_oxford_list.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a prose string from a list or vector — paste_oxford_list","text":"","code":"paste_oxford_list(x)"},{"path":"http://www.schlosslab.org/schtools/dev/reference/paste_oxford_list.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a prose string from a list or vector — paste_oxford_list","text":"x list vector","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/paste_oxford_list.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a prose string from a list or vector — paste_oxford_list","text":"string element x separated comma","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/paste_oxford_list.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Create a prose string from a list or vector — paste_oxford_list","text":"Pat Schloss pschloss@umich.edu Kelly Sovacool sovacool@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/paste_oxford_list.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create a prose string from a list or vector — paste_oxford_list","text":"","code":"paste_oxford_list(1:3) #> [1] \"1, 2, and 3\" paste_oxford_list(c(\"cats\", \"dogs\", \"turtles\")) #> [1] \"cats, dogs, and turtles\""},{"path":"http://www.schlosslab.org/schtools/dev/reference/pool_taxon_counts.html","id":null,"dir":"Reference","previous_headings":"","what":"Pool OTU counts at a particular taxonomic level — pool_taxon_counts","title":"Pool OTU counts at a particular taxonomic level — pool_taxon_counts","text":"Enables comparing analyses different taxonomic resolutions, seen https://doi.org/10.1128/mbio.03161-21. Implementation adapted .","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/pool_taxon_counts.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Pool OTU counts at a particular taxonomic level — pool_taxon_counts","text":"","code":"pool_taxon_counts(otu_shared_dat, otu_tax_dat, taxon_level)"},{"path":"http://www.schlosslab.org/schtools/dev/reference/pool_taxon_counts.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Pool OTU counts at a particular taxonomic level — pool_taxon_counts","text":"otu_shared_dat data frame created shared file OTU level. otu_tax_dat data frame created taxonomy file OTU level. Must dataset shared file. taxon_level taxonomic level pool OTUs (kingdom, phylum, class, order, family, genus). column otu_tax_dat.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/pool_taxon_counts.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Pool OTU counts at a particular taxonomic level — pool_taxon_counts","text":"shared data frame OTUs specified taxon_level corresponding taxonomy dataframe new OTU numbers.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/pool_taxon_counts.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Pool OTU counts at a particular taxonomic level — pool_taxon_counts","text":"Kelly Sovacool, sovacool@umich.edu Pat Schloss pschloss@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/pool_taxon_counts.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Pool OTU counts at a particular taxonomic level — pool_taxon_counts","text":"","code":"tax_dat <- read_tax(system.file(\"extdata\", \"test.taxonomy\", package = \"schtools\" )) shared_dat <- readr::read_tsv(system.file(\"extdata\", \"test.shared\", package = \"schtools\" )) #> Rows: 10 Columns: 15 #> ── Column specification ──────────────────────────────────────────────────────── #> Delimiter: \"\\t\" #> chr (1): Group #> dbl (14): label, numOtus, Otu0001, Otu0003, Otu0004, Otu00008, Otu0044, Otu0... #> #> ℹ Use `spec()` to retrieve the full column specification for this data. #> ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message. pool_taxon_counts(shared_dat, tax_dat, genus) #> $shared #> # A tibble: 10 × 13 #> label Group numOtus Otu01 Otu02 Otu03 Otu04 Otu05 Otu06 Otu07 Otu08 Otu09 #> #> 1 genus p1 10 0 0 0 2 0 1 0 1 0 #> 2 genus p10 10 1 0 1 0 1 0 1 1 1 #> 3 genus p2 10 1 1 0 1 0 1 0 0 1 #> 4 genus p3 10 0 1 0 1 0 0 1 0 1 #> 5 genus p4 10 1 1 1 0 0 0 0 0 0 #> 6 genus p5 10 1 1 0 1 0 0 0 0 1 #> 7 genus p6 10 1 0 1 1 1 1 0 0 1 #> 8 genus p7 10 0 0 0 1 1 0 1 0 1 #> 9 genus p8 10 0 1 1 2 0 0 1 1 0 #> 10 genus p9 10 0 1 1 2 0 0 1 1 1 #> # … with 1 more variable: Otu10 #> #> $tax #> # A tibble: 10 × 3 #> otu size genus #> #> 1 Otu01 5 Bacteroides #> 2 Otu02 6 Porphyromonadaceae unclassified #> 3 Otu03 5 Enterobacteriaceae unclassified #> 4 Otu04 11 Bacteria unclassified #> 5 Otu05 3 Acinetobacter #> 6 Otu06 3 Clostridium XlVa #> 7 Otu07 5 Betaproteobacteria unclassified #> 8 Otu08 4 Clostridium XVIII #> 9 Otu09 7 Candidatus Saccharibacteria unclassified #> 10 Otu10 5 Clostridiales Incertae Sedis XIII unclassified #> pool_taxon_counts(shared_dat, tax_dat, family) #> $shared #> # A tibble: 10 × 13 #> label Group numOtus Otu01 Otu02 Otu03 Otu04 Otu05 Otu06 Otu07 Otu08 Otu09 #> #> 1 family p1 10 0 0 0 2 0 1 0 1 0 #> 2 family p10 10 1 0 1 0 1 0 1 1 1 #> 3 family p2 10 1 1 0 1 0 1 0 0 1 #> 4 family p3 10 0 1 0 1 0 0 1 0 1 #> 5 family p4 10 1 1 1 0 0 0 0 0 0 #> 6 family p5 10 1 1 0 1 0 0 0 0 1 #> 7 family p6 10 1 0 1 1 1 1 0 0 1 #> 8 family p7 10 0 0 0 1 1 0 1 0 1 #> 9 family p8 10 0 1 1 2 0 0 1 1 0 #> 10 family p9 10 0 1 1 2 0 0 1 1 1 #> # … with 1 more variable: Otu10 #> #> $tax #> # A tibble: 10 × 3 #> otu size family #> #> 1 Otu01 5 Bacteroidaceae #> 2 Otu02 6 Porphyromonadaceae #> 3 Otu03 5 Enterobacteriaceae #> 4 Otu04 11 Bacteria unclassified #> 5 Otu05 3 Moraxellaceae #> 6 Otu06 3 Lachnospiraceae #> 7 Otu07 5 Betaproteobacteria unclassified #> 8 Otu08 4 Erysipelotrichaceae #> 9 Otu09 7 Candidatus Saccharibacteria unclassified #> 10 Otu10 5 Clostridiales Incertae Sedis XIII #> pool_taxon_counts(shared_dat, tax_dat, phylum) #> $shared #> # A tibble: 10 × 8 #> label Group numOtus Otu1 Otu2 Otu3 Otu4 Otu5 #> #> 1 phylum p1 5 0 0 2 2 0 #> 2 phylum p10 5 1 3 0 1 1 #> 3 phylum p2 5 2 0 1 2 1 #> 4 phylum p3 5 1 1 1 1 1 #> 5 phylum p4 5 2 1 0 1 0 #> 6 phylum p5 5 2 0 1 0 1 #> 7 phylum p6 5 1 2 1 1 1 #> 8 phylum p7 5 0 2 1 1 1 #> 9 phylum p8 5 1 2 2 1 0 #> 10 phylum p9 5 1 2 2 2 1 #> #> $tax #> # A tibble: 5 × 3 #> otu size phylum #> #> 1 Otu1 11 Bacteroidetes #> 2 Otu2 13 Proteobacteria #> 3 Otu3 11 Bacteria unclassified #> 4 Otu4 12 Firmicutes #> 5 Otu5 7 Candidatus Saccharibacteria #>"},{"path":"http://www.schlosslab.org/schtools/dev/reference/read_dist.html","id":null,"dir":"Reference","previous_headings":"","what":"Read in lower left triangular matrix from file — read_dist","title":"Read in lower left triangular matrix from file — read_dist","text":"Read lower left triangular matrix file","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/read_dist.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Read in lower left triangular matrix from file — read_dist","text":"","code":"read_dist(dist_filename)"},{"path":"http://www.schlosslab.org/schtools/dev/reference/read_dist.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Read in lower left triangular matrix from file — read_dist","text":"dist_filename filename lower left triangular matrix (.dist)","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/read_dist.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Read in lower left triangular matrix from file — read_dist","text":"distance matrix tibble","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/read_dist.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Read in lower left triangular matrix from file — read_dist","text":"Nick Lesniak, nlesniak@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/read_dist.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Read in lower left triangular matrix from file — read_dist","text":"","code":"dist_filepath <- system.file(\"extdata\", \"sample.final.thetayc.0.03.lt.ave.dist\", package = \"schtools\" ) dist_tbl <- read_dist(dist_filepath) head(dist_tbl) #> # A tibble: 6 × 3 #> rows columns distances #> #> 1 104_1_D1 104_1_D0 0.893 #> 2 104_1_D10 104_1_D0 0.254 #> 3 104_1_D10 104_1_D1 0.922 #> 4 104_1_D2 104_1_D0 0.874 #> 5 104_1_D2 104_1_D1 0.109 #> 6 104_1_D2 104_1_D10 0.904"},{"path":"http://www.schlosslab.org/schtools/dev/reference/read_tax.html","id":null,"dir":"Reference","previous_headings":"","what":"Read in a taxonomy file and parse it to a wide dataframe — read_tax","title":"Read in a taxonomy file and parse it to a wide dataframe — read_tax","text":"Read taxonomy file parse wide dataframe","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/read_tax.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Read in a taxonomy file and parse it to a wide dataframe — read_tax","text":"","code":"read_tax(taxonomy_filename, sep = \"\\t\")"},{"path":"http://www.schlosslab.org/schtools/dev/reference/read_tax.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Read in a taxonomy file and parse it to a wide dataframe — read_tax","text":"taxonomy_filename filename taxonomy file sep Character separates fields taxonomy file. (Default: \\t).","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/read_tax.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Read in a taxonomy file and parse it to a wide dataframe — read_tax","text":"dataframe taxonomic labels, formatted parse_tax()","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/read_tax.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Read in a taxonomy file and parse it to a wide dataframe — read_tax","text":"Nick Lesniak, nlesniak@umich.edu Kelly Sovacool, sovacool@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/read_tax.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Read in a taxonomy file and parse it to a wide dataframe — read_tax","text":"","code":"taxonomy_filepath <- system.file(\"extdata\", \"test.taxonomy\", package = \"schtools\" ) taxonomy_tbl <- read_tax(taxonomy_filepath) head(taxonomy_tbl) #> # A tibble: 6 × 10 #> otu otu_label tax_otu_l…¹ label…² kingdom phylum class order family genus #> #> 1 Otu0001 OTU 1 Bacteroide… Bac… Bacter… Bacte… Bact… Bact… Bacte… Bact… #> 2 Otu0003 OTU 3 Porphyromo… Por… Bacter… Bacte… Bact… Bact… Porph… Porp… #> 3 Otu0004 OTU 4 Porphyromo… Por… Bacter… Bacte… Bact… Bact… Porph… Porp… #> 4 Otu00008 OTU 8 Enterobact… Ent… Bacter… Prote… Gamm… Ente… Enter… Ente… #> 5 Otu0044 OTU 44 Bacteria (… Bac… Bacter… Bacte… Bact… Bact… Bacte… Bact… #> 6 Otu0056 OTU 56 Bacteria (… Bac… Bacter… Bacte… Bact… Bact… Bacte… Bact… #> # … with abbreviated variable names ¹​tax_otu_label, ²​label_html"},{"path":"http://www.schlosslab.org/schtools/dev/reference/reexports.html","id":null,"dir":"Reference","previous_headings":"","what":"dplyr pipe — reexports","title":"dplyr pipe — reexports","text":"objects imported packages. Follow links see documentation. dplyr %>% rlang .data","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/schtools.html","id":null,"dir":"Reference","previous_headings":"","what":"schtools: Schloss Lab Tools for Reproducible Microbiome Research — schtools","title":"schtools: Schloss Lab Tools for Reproducible Microbiome Research — schtools","text":"collection useful functions example code created used Schloss Lab reproducible microbiome research. Perform common tasks like read files created mothur, tidy microbiome data, format rmarkdown documents publication. See website information, documentation, examples.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/set_knitr_opts.html","id":null,"dir":"Reference","previous_headings":"","what":"Set knitr chunk options & inline hook — set_knitr_opts","title":"Set knitr chunk options & inline hook — set_knitr_opts","text":"Call function setup chunk R Markdown files.","code":""},{"path":"http://www.schlosslab.org/schtools/dev/reference/set_knitr_opts.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set knitr chunk options & inline hook — set_knitr_opts","text":"","code":"set_knitr_opts()"},{"path":"http://www.schlosslab.org/schtools/dev/reference/set_knitr_opts.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Set knitr chunk options & inline hook — set_knitr_opts","text":"Pat Schloss pschloss@umich.edu Kelly Sovacool sovacool@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/dev/news/index.html","id":"schtools-021","dir":"Changelog","previous_headings":"","what":"schtools 0.2.1","title":"schtools 0.2.1","text":"CRAN release: 2022-05-11 New column label_html provides HTML correctly italicize genus names OTU labels. Added example intro vignette demonstrate using feature ggtext. Changed taxonomy data frame column names lowercase reordered . Minor documentation improvements (#33, @kelly-sovacool).","code":""},{"path":"http://www.schlosslab.org/schtools/dev/news/index.html","id":"schtools-011","dir":"Changelog","previous_headings":"","what":"schtools 0.1.1","title":"schtools 0.1.1","text":"CRAN release: 2022-03-11 New function parse_tax() separate logic reading parsing taxonomy files. read_tax() now accepts sep parameter handle different delim file types (e.g. csv tsv). schtools now logo! (#31, @kelly-sovacool)","code":""},{"path":"http://www.schlosslab.org/schtools/dev/news/index.html","id":"schtools-010","dir":"Changelog","previous_headings":"","what":"schtools 0.1.0","title":"schtools 0.1.0","text":"CRAN release: 2021-11-22 first release version schtools! 🎉 can now install schtools CRAN! Added NEWS.md file track changes package. read_dist() (#10, @NLesniak) read_tax() (#22, @NLesniak) set_knitr_opts() (#21, @pschloss, @kelly-sovacool) inline_hook() (#21, @pschloss, @kelly-sovacool) paste_oxford_list() (#21, @pschloss, @kelly-sovacool) format_number() (#24, @pschloss, @kelly-sovacool) is_nearly_whole() (#24, @pschloss, @kelly-sovacool) close_enough() (#26, @kelly-sovacool) is_nondesc() (#28, @kelly-sovacool) introduction","code":""}] diff --git a/docs/dev/sitemap.xml b/docs/dev/sitemap.xml index a727f5d..e381e5e 100644 --- a/docs/dev/sitemap.xml +++ b/docs/dev/sitemap.xml @@ -39,6 +39,9 @@ http://www.schlosslab.org/schtools/dev/pull_request_template.html + + http://www.schlosslab.org/schtools/dev/reference/calc_relabun.html + http://www.schlosslab.org/schtools/dev/reference/close_enough.html