From 65fe1d0a64da7cc1e1a2429f6559e1c7c17eb17f Mon Sep 17 00:00:00 2001 From: Kelly Sovacool Date: Wed, 5 Oct 2022 16:52:13 -0400 Subject: [PATCH] Prepare CRAN release --- DESCRIPTION | 4 +- NEWS.md | 2 +- cran-comments.md | 9 +- docs/404.html | 9 +- docs/CODE_OF_CONDUCT.html | 15 +- docs/CONTRIBUTING.html | 7 +- docs/LICENSE-text.html | 7 +- docs/LICENSE.html | 7 +- docs/SUPPORT.html | 7 +- docs/articles/index.html | 9 +- docs/articles/introduction.html | 275 +++++++++++++----- .../figure-html/italic-genus-1.png | Bin 113698 -> 136171 bytes docs/articles/logo.html | 176 ++++++----- docs/authors.html | 7 +- .../bootstrap-5.1.3/bootstrap.bundle.min.js | 7 + .../bootstrap.bundle.min.js.map | 1 + docs/deps/bootstrap-5.1.3/bootstrap.min.css | 1 + docs/deps/data-deps.txt | 4 +- docs/index.html | 50 ++-- docs/news/index.html | 27 +- docs/pkgdown.yml | 6 +- docs/pull_request_template.html | 9 +- docs/reference/Rplot001.png | Bin 1011 -> 14456 bytes docs/reference/calc_relabun.html | 134 +++++++++ docs/reference/close_enough.html | 28 +- docs/reference/format_number.html | 28 +- docs/reference/index.html | 36 ++- docs/reference/inline_hook.html | 18 +- docs/reference/is_nearly_whole.html | 22 +- docs/reference/is_nondesc.html | 28 +- docs/reference/load_deps.html | 10 +- docs/reference/log_snakemake.html | 118 ++++++++ docs/reference/parse_tax.html | 44 +-- docs/reference/paste_oxford_list.html | 18 +- docs/reference/pool_taxon_counts.html | 231 +++++++++++++++ docs/reference/read_dist.html | 26 +- docs/reference/read_tax.html | 48 +-- docs/reference/reexports.html | 9 +- docs/reference/schtools.html | 7 +- docs/reference/set_knitr_opts.html | 9 +- docs/reference/theme_lucas-1.png | Bin 0 -> 25841 bytes docs/reference/theme_lucas.html | 118 ++++++++ docs/reference/theme_sovacool-1.png | Bin 0 -> 29548 bytes docs/reference/theme_sovacool.html | 105 +++++++ docs/search.json | 2 +- docs/sitemap.xml | 15 + 46 files changed, 1349 insertions(+), 344 deletions(-) create mode 100644 docs/deps/bootstrap-5.1.3/bootstrap.bundle.min.js create mode 100644 docs/deps/bootstrap-5.1.3/bootstrap.bundle.min.js.map create mode 100644 docs/deps/bootstrap-5.1.3/bootstrap.min.css create mode 100644 docs/reference/calc_relabun.html create mode 100644 docs/reference/log_snakemake.html create mode 100644 docs/reference/pool_taxon_counts.html create mode 100644 docs/reference/theme_lucas-1.png create mode 100644 docs/reference/theme_lucas.html create mode 100644 docs/reference/theme_sovacool-1.png create mode 100644 docs/reference/theme_sovacool.html diff --git a/DESCRIPTION b/DESCRIPTION index a2a5649..b89183f 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: schtools Title: Schloss Lab Tools for Reproducible Microbiome Research -Version: 0.2.1.9000 -Date: 2022-05-11 +Version: 0.3.0 +Date: 2022-10-05 Authors@R: c(person(given = "Kelly", family = "Sovacool", diff --git a/NEWS.md b/NEWS.md index 3e8825c..0fb180a 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,4 @@ -# schtools development version +# schtools 0.3.0 - New function `log_snakemake()` redirects all output to a rule-specific log file when called by a Snakemake rule (#35, @kelly-sovacool). diff --git a/cran-comments.md b/cran-comments.md index bb81fc5..1d01115 100644 --- a/cran-comments.md +++ b/cran-comments.md @@ -1,6 +1,6 @@ ## Test environments -- local macOS install; R 4.2.0 +- local macOS install; R 4.2.1 - win-builder; R release - github-actions macOS-latest; R release - github-actions ubuntu-latest; R release, devel, and oldrel @@ -15,8 +15,13 @@ Found the following (possibly) invalid URLs: From: README.md Status: 400 Message: Bad Request + URL: https://doi.org/10.1128/mbio.03161-21 + From: inst/doc/introduction.html + NEWS.md + Status: 503 + Message: Service Unavailable -This URL works in my browser. +These URLs work in my browser. ## revdepcheck results diff --git a/docs/404.html b/docs/404.html index 8580696..c3578fd 100644 --- a/docs/404.html +++ b/docs/404.html @@ -13,8 +13,8 @@ - - + + @@ -31,7 +31,7 @@ schtools - 0.2.1.9000 + 0.3.0 + + @@ -50,7 +79,7 @@
-
-
+ + - + + diff --git a/docs/authors.html b/docs/authors.html index 0831c63..1cdc40e 100644 --- a/docs/authors.html +++ b/docs/authors.html @@ -1,5 +1,5 @@ -Authors and Citation • schtoolsAuthors and Citation • schtools @@ -10,7 +10,7 @@ schtools - 0.2.1.9000 + 0.3.0 + + + + + +
+
+
+ +
+

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/reference/close_enough.html b/docs/reference/close_enough.html index db2c659..01357aa 100644 --- a/docs/reference/close_enough.html +++ b/docs/reference/close_enough.html @@ -1,5 +1,5 @@ -Check whether two numeric vectors are close enough for gov't work. — close_enough • schtoolsCheck whether two numeric vectors are close enough for gov't work. — close_enough • schtools @@ -10,7 +10,7 @@ schtools - 0.2.1.9000 + 0.3.0 + + + + + +
+
+
+ +
+

This function checks whether a log file was specified in the Snakemake rule. +If so, it directs any output, messages, warnings, or errors to the +rule-specific log file. +See the Snakemake documentation on log files +and R scripts +for more details.

+
+ +
+

Usage

+
log_snakemake(quiet = TRUE)
+
+ +
+

Arguments

+
quiet
+

Silence messages about the status of the snakemake object and +log file (default: TRUE).

+ +
+
+

Author

+

Kelly Sovacool sovacool@umich.edu

+
+ +
+

Examples

+
# The Snakemake object doesn't exist, so nothing happens
+log_snakemake(quiet = FALSE)
+#> No Snakemake object exists, so all output will print as usual
+
+
+
+ + +
+ + + + + + + diff --git a/docs/reference/parse_tax.html b/docs/reference/parse_tax.html index aeb66e2..2a62a14 100644 --- a/docs/reference/parse_tax.html +++ b/docs/reference/parse_tax.html @@ -1,5 +1,5 @@ -Convert taxonomy strings into dataframe of labels based on taxonomic classification — parse_tax • schtoolsConvert taxonomy strings into dataframe of labels based on taxonomic classification — parse_tax • schtools @@ -10,7 +10,7 @@ schtools - 0.2.1.9000 + 0.3.0 + + + + + +
+
+
+ +
+

Enables comparing analyses at different taxonomic resolutions, +as seen in doi:10.1128/mbio.03161-21 +. +Implementation adapted from here.

+
+ +
+

Usage

+
pool_taxon_counts(otu_shared_dat, otu_tax_dat, taxon_level)
+
+ +
+

Arguments

+
otu_shared_dat
+

data frame created from a shared file +at the OTU level.

+ + +
otu_tax_dat
+

data frame created from a taxonomy file +at the OTU level. Must be from the same dataset as the shared file.

+ + +
taxon_level
+

taxonomic level to pool OTUs into (kingdom, phylum, +class, order, family, genus). This should be a column in otu_tax_dat.

+ +
+
+

Value

+ + +

a shared data frame with the OTUs at the specified taxon_level and +a corresponding taxonomy dataframe with new OTU numbers.

+
+
+

Author

+

Kelly Sovacool, sovacool@umich.edu

+

Pat Schloss pschloss@umich.edu

+
+ +
+

Examples

+
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
+#>    <chr> <chr>   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
+#>  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 <dbl>
+#> 
+#> $tax
+#> # A tibble: 10 × 3
+#>    otu    size genus                                         
+#>    <chr> <dbl> <chr>                                         
+#>  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
+#>    <chr>  <chr>   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
+#>  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 <dbl>
+#> 
+#> $tax
+#> # A tibble: 10 × 3
+#>    otu    size family                                  
+#>    <chr> <dbl> <chr>                                   
+#>  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
+#>    <chr>  <chr>   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
+#>  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                     
+#>   <chr> <dbl> <chr>                      
+#> 1 Otu1     11 Bacteroidetes              
+#> 2 Otu2     13 Proteobacteria             
+#> 3 Otu3     11 Bacteria unclassified      
+#> 4 Otu4     12 Firmicutes                 
+#> 5 Otu5      7 Candidatus Saccharibacteria
+#> 
+
+
+
+ + +
+ + + + + + + diff --git a/docs/reference/read_dist.html b/docs/reference/read_dist.html index a3a01dc..9213d7e 100644 --- a/docs/reference/read_dist.html +++ b/docs/reference/read_dist.html @@ -1,5 +1,5 @@ -Read in lower left triangular matrix from file — read_dist • schtoolsRead in lower left triangular matrix from file — read_dist • schtools @@ -10,7 +10,7 @@ schtools - 0.2.1.9000 + 0.3.0 + + + + + +
+
+
+ +
+

Requires the hrbrthemes package and the PT Sans and PT Sans Narrow +fonts from Google Fonts.

+
+ +
+

Usage

+
theme_lucas()
+
+ +
+

Value

+ + +

list of ggproto objects

+
+
+

Author

+

Sarah Lucas salucas@umich.edu

+
+ +
+

Examples

+
library(ggplot2)
+library(showtext)
+#> Loading required package: sysfonts
+#> Loading required package: showtextdb
+
+# run once to download the PT Sans fonts
+font_add_google(name = "PT Sans", family = "PT Sans")
+font_add_google(name = "PT Sans Narrow", family = "PT Sans Narrow")
+showtext_auto()
+
+# make a plot with theme_lucas()
+ggplot(mtcars) +
+  aes(x = mpg, y = wt, color = cyl) +
+  geom_point() +
+  theme_lucas()
+
+
+
+
+ + +
+ + + + + + + diff --git a/docs/reference/theme_sovacool-1.png b/docs/reference/theme_sovacool-1.png new file mode 100644 index 0000000000000000000000000000000000000000..f7342285c26dc1c33a61c4e740514b58a96c023d GIT binary patch literal 29548 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 B;MD*C literal 0 HcmV?d00001 diff --git a/docs/reference/theme_sovacool.html b/docs/reference/theme_sovacool.html new file mode 100644 index 0000000..f40bbaa --- /dev/null +++ b/docs/reference/theme_sovacool.html @@ -0,0 +1,105 @@ + +Kelly's go-to theme for ggplot2 — theme_sovacool • schtools + Skip to contents + + +
+
+
+ +
+

Uses ggplot2::theme_bw() and removes margins.

+
+ +
+

Usage

+
theme_sovacool()
+
+ +
+

Value

+ + +

list of ggproto objects

+
+
+

Author

+

Kelly Sovacool sovacool@umich.edu

+
+ +
+

Examples

+
library(ggplot2)
+ggplot(mtcars) +
+  aes(x = mpg, y = wt, color = cyl) +
+  geom_point() +
+  theme_sovacool()
+
+
+
+
+ + +
+ + + + + + + diff --git a/docs/search.json b/docs/search.json index 06f24c3..bd9f8ee 100644 --- a/docs/search.json +++ b/docs/search.json @@ -1 +1 @@ -[{"path":[]},{"path":"http://www.schlosslab.org/schtools/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/articles/introduction.html","id":"taxonomy-files","dir":"Articles","previous_headings":"Parsing mothur output files","what":"Taxonomy files","title":"Introduction to schtools","text":"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_label label_html kingdom phylum class order family #> #> 1 Otu0001 OTU 1 Bacteroides (… Bacter… Bacter… Bacte… Bact… Bact… Bacte… #> 2 Otu0003 OTU 3 Porphyromonad… Porphy… Bacter… Bacte… Bact… Bact… Porph… #> 3 Otu0004 OTU 4 Porphyromonad… Porphy… Bacter… Bacte… Bact… Bact… Porph… #> 4 Otu00008 OTU 8 Enterobacteri… Entero… Bacter… Prote… Gamm… Ente… Enter… #> 5 Otu0044 OTU 44 Bacteria (OTU… Bacter… Bacter… Bacte… Bact… Bact… Bacte… #> 6 Otu0056 OTU 56 Bacteria (OTU… Bacter… Bacter… Bacte… Bact… Bact… Bacte… #> # … with 1 more variable: genus 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/articles/introduction.html","id":"phylip-formatted-distance-file-as-a-tibble","dir":"Articles","previous_headings":"Parsing mothur output files","what":"Phylip-formatted distance file as a tibble","title":"Introduction to schtools","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/articles/introduction.html","id":"miscellaneous-helpers","dir":"Articles","previous_headings":"","what":"Miscellaneous helpers","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/articles/introduction.html","id":"who-doesnt-love-an-oxford-comma","dir":"Articles","previous_headings":"Miscellaneous helpers","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/articles/introduction.html","id":"human-readable-numbers","dir":"Articles","previous_headings":"Miscellaneous helpers","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/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/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/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/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/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/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/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/index.html","id":"help--contributing","dir":"","previous_headings":"","what":"Help & Contributing","title":"Schloss Lab Tools for Reproducible Microbiome Research","text":"come across bug, open issue include minimal reproducible example. ’d like contribute, see guidelines .","code":""},{"path":"http://www.schlosslab.org/schtools/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/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/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/pull_request_template.html","id":"issues","dir":"","previous_headings":"","what":"Issues","title":"NA","text":"Resolves # .","code":""},{"path":[]},{"path":"http://www.schlosslab.org/schtools/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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_label label_html kingdom phylum class order family #> #> 1 Otu0001 OTU 1 Bacteroides (… Bacter… Bacter… Bacte… Bact… Bact… Bacte… #> 2 Otu0003 OTU 3 Porphyromonad… Porphy… Bacter… Bacte… Bact… Bact… Porph… #> 3 Otu0004 OTU 4 Porphyromonad… Porphy… Bacter… Bacte… Bact… Bact… Porph… #> 4 Otu00008 OTU 8 Enterobacteri… Entero… Bacter… Prote… Gamm… Ente… Enter… #> 5 Otu0044 OTU 44 Bacteria (OTU… Bacter… Bacter… Bacte… Bact… Bact… Bacte… #> 6 Otu0056 OTU 56 Bacteria (OTU… Bacter… Bacter… Bacte… Bact… Bact… Bacte… #> # … with 1 more variable: genus "},{"path":"http://www.schlosslab.org/schtools/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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_label label_html kingdom phylum class order family #> #> 1 Otu0001 OTU 1 Bacteroides (… Bacter… Bacter… Bacte… Bact… Bact… Bacte… #> 2 Otu0003 OTU 3 Porphyromonad… Porphy… Bacter… Bacte… Bact… Bact… Porph… #> 3 Otu0004 OTU 4 Porphyromonad… Porphy… Bacter… Bacte… Bact… Bact… Porph… #> 4 Otu00008 OTU 8 Enterobacteri… Entero… Bacter… Prote… Gamm… Ente… Enter… #> 5 Otu0044 OTU 44 Bacteria (OTU… Bacter… Bacter… Bacte… Bact… Bact… Bacte… #> 6 Otu0056 OTU 56 Bacteria (OTU… Bacter… Bacter… Bacte… Bact… Bact… Bacte… #> # … with 1 more variable: genus "},{"path":"http://www.schlosslab.org/schtools/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/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/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/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/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/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/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/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/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/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/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/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/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/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/CODE_OF_CONDUCT.html","id":"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/CODE_OF_CONDUCT.html","id":"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/CODE_OF_CONDUCT.html","id":"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/CODE_OF_CONDUCT.html","id":"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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/pull_request_template.html","id":"issues","dir":"","previous_headings":"","what":"Issues","title":"NA","text":"Resolves # .","code":""},{"path":[]},{"path":"http://www.schlosslab.org/schtools/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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 doi:10.1128/mbio.03161-21 . Implementation adapted .","code":""},{"path":"http://www.schlosslab.org/schtools/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/reference/theme_lucas.html","id":null,"dir":"Reference","previous_headings":"","what":"Sarah's go-to theme for ggplot2 — theme_lucas","title":"Sarah's go-to theme for ggplot2 — theme_lucas","text":"Requires hrbrthemes package PT Sans PT Sans Narrow fonts Google Fonts.","code":""},{"path":"http://www.schlosslab.org/schtools/reference/theme_lucas.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sarah's go-to theme for ggplot2 — theme_lucas","text":"","code":"theme_lucas()"},{"path":"http://www.schlosslab.org/schtools/reference/theme_lucas.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sarah's go-to theme for ggplot2 — theme_lucas","text":"list ggproto objects","code":""},{"path":"http://www.schlosslab.org/schtools/reference/theme_lucas.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Sarah's go-to theme for ggplot2 — theme_lucas","text":"Sarah Lucas salucas@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/reference/theme_lucas.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Sarah's go-to theme for ggplot2 — theme_lucas","text":"","code":"library(ggplot2) library(showtext) #> Loading required package: sysfonts #> Loading required package: showtextdb # run once to download the PT Sans fonts font_add_google(name = \"PT Sans\", family = \"PT Sans\") font_add_google(name = \"PT Sans Narrow\", family = \"PT Sans Narrow\") showtext_auto() # make a plot with theme_lucas() ggplot(mtcars) + aes(x = mpg, y = wt, color = cyl) + geom_point() + theme_lucas()"},{"path":"http://www.schlosslab.org/schtools/reference/theme_sovacool.html","id":null,"dir":"Reference","previous_headings":"","what":"Kelly's go-to theme for ggplot2 — theme_sovacool","title":"Kelly's go-to theme for ggplot2 — theme_sovacool","text":"Uses ggplot2::theme_bw() removes margins.","code":""},{"path":"http://www.schlosslab.org/schtools/reference/theme_sovacool.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Kelly's go-to theme for ggplot2 — theme_sovacool","text":"","code":"theme_sovacool()"},{"path":"http://www.schlosslab.org/schtools/reference/theme_sovacool.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Kelly's go-to theme for ggplot2 — theme_sovacool","text":"list ggproto objects","code":""},{"path":"http://www.schlosslab.org/schtools/reference/theme_sovacool.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Kelly's go-to theme for ggplot2 — theme_sovacool","text":"Kelly Sovacool sovacool@umich.edu","code":""},{"path":"http://www.schlosslab.org/schtools/reference/theme_sovacool.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Kelly's go-to theme for ggplot2 — theme_sovacool","text":"","code":"library(ggplot2) ggplot(mtcars) + aes(x = mpg, y = wt, color = cyl) + geom_point() + theme_sovacool()"},{"path":"http://www.schlosslab.org/schtools/news/index.html","id":"schtools-030","dir":"Changelog","previous_headings":"","what":"schtools 0.3.0","title":"schtools 0.3.0","text":"New function log_snakemake() redirects output rule-specific log file called Snakemake rule (#35, @kelly-sovacool). New function pool_taxon_counts() pools OTU counts particular taxonomic level (e.g. genus, phylum, etc.) enable comparing analyses different taxonomic resolutions, seen https://doi.org/10.1128/mbio.03161-21 (#37, @kelly-sovacool). New function calc_relabun() calculates OTU relative abundances (#38, @kelly-sovacool). theme_sovacool() (#39, @kelly-sovacool) theme_lucas() (#40, @sklucas)","code":""},{"path":"http://www.schlosslab.org/schtools/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/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/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/sitemap.xml b/docs/sitemap.xml index 2fe8c3a..b2022de 100644 --- a/docs/sitemap.xml +++ b/docs/sitemap.xml @@ -42,6 +42,9 @@ http://www.schlosslab.org/schtools/pull_request_template.html + + http://www.schlosslab.org/schtools/reference/calc_relabun.html + http://www.schlosslab.org/schtools/reference/close_enough.html @@ -63,12 +66,18 @@ http://www.schlosslab.org/schtools/reference/load_deps.html + + http://www.schlosslab.org/schtools/reference/log_snakemake.html + http://www.schlosslab.org/schtools/reference/parse_tax.html http://www.schlosslab.org/schtools/reference/paste_oxford_list.html + + http://www.schlosslab.org/schtools/reference/pool_taxon_counts.html + http://www.schlosslab.org/schtools/reference/read_dist.html @@ -84,4 +93,10 @@ http://www.schlosslab.org/schtools/reference/set_knitr_opts.html + + http://www.schlosslab.org/schtools/reference/theme_lucas.html + + + http://www.schlosslab.org/schtools/reference/theme_sovacool.html +