--- title: "MeSH Tables" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{MeSH Tables} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include=FALSE} knitr::opts_chunk$set( message = FALSE, warning = FALSE, comment = "#>" ) ``` `puremoe` ships three MeSH reference tables: a thesaurus of descriptors and entry terms, a tree of hierarchical classifications, and a frequency table of descriptor occurrence across PubMed. ```{r libs} library(puremoe) library(dplyr) library(DT) ``` ## MeSH thesaurus `data_mesh_thesaurus()` downloads and combines the MeSH Descriptor Thesaurus and Supplementary Concept Records (SCR). One row per term, including synonyms and entry terms for each descriptor. ```{r thesaurus} thesaurus <- puremoe::data_mesh_thesaurus() ``` ```{r thesaurus-table} thesaurus |> head(20) |> DT::datatable(rownames = FALSE, options = list(scrollX = TRUE)) ``` ## MeSH trees `data_mesh_trees()` provides the hierarchical classification structure. Each descriptor can appear in multiple branches; `tree_location` encodes the full path (e.g., `I01.880.604` = Social Sciences > Political Science > Political Systems). ```{r trees} trees <- puremoe::data_mesh_trees() ``` ```{r trees-table} trees |> head(20) |> DT::datatable(rownames = FALSE, options = list(scrollX = TRUE)) ``` ## MeSH descriptor frequencies `data_mesh_frequencies` is a bundled dataset giving the frequency of each MeSH descriptor across the full PubMed corpus (39.7 M PMIDs, April 2026). Proportions use the total corpus as denominator, making them suitable as a baseline for enrichment analyses against arbitrary PubMed subsets. ```{r frequencies} puremoe::data_mesh_frequencies |> head(20) |> DT::datatable(rownames = FALSE, options = list(scrollX = TRUE)) ``` ## Persistent storage Both datasets are ~10 MB and fetched from GitHub on each call by default. To avoid re-downloading every session, set `use_persistent_storage = TRUE` — the files are cached to a system data directory and reused on subsequent calls. ```{r persistent, eval=FALSE} thesaurus <- puremoe::data_mesh_thesaurus(use_persistent_storage = TRUE) trees <- puremoe::data_mesh_trees(use_persistent_storage = TRUE) ```