--- title: "2.D: PANTHER & rbioapi" author: "Moosa Rezwani" description: > Connect to PANTHER in R with rbioapi package. date: "`r Sys.Date()`" output: rmarkdown::html_vignette: toc: true anchor_sections: true number_sections: true self_contained: true dev: png encoding: 'UTF-8' vignette: > %\VignetteIndexEntry{2.D: PANTHER & rbioapi} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r message=FALSE, include=FALSE, results="hide", setup, echo=FALSE} knitr::opts_chunk$set(echo = TRUE, eval = TRUE, message = FALSE, warning = FALSE, collapse = TRUE, tidy = FALSE, cache = FALSE, dev = "png", comment = "#>") library(rbioapi) rba_options(timeout = 30, skip_error = TRUE) ``` ------------------------------------------------------------------------ ## Introduction {#introduction .heading2} Directly quoting the the paper published by [PANTHER](https://www.pantherdb.org "Protein Analysis THrough Evolutionary Relationships (PANTHER)") (Protein Analysis THrough Evolutionary Relationships) authors: > The PANTHER classification system () a comprehensive system that combines genomes, gene function , pathways and statistical analysis tools to enable to analyze large-scale genome-wide experimental data. The system (PANTHER v.14.0) covers 131 complete genomes organized gene families and subfamilies; evolutionary relationships between are represented in phylogenetic trees, multiple sequence and statistical models (hidden Markov models (HMMs)). The families and subfamilies are annotated with Gene Ontology (GO) terms, sequences are assigned to PANTHER pathways. A suite of tools has built to allow users to browse and query gene functions and analyze-scale experimental data with a number of statistical tests. is widely used by bench scientists, bioinformaticians, computer and systems biologists. > > (source: Mi, Huaiyu, et al. "Protocol Update for large-scale genome and gene function analysis with the PANTHER classification system (v. 14.0)." *Nature protocols* 14.3 (2019): 703-721) The available tools in PANTHER's **RESTful API services** can be divided into 3 broad categories: Mapping genes, retrieving information, and research tools. Herein, we provide a very short introduction; you can always check functions' manuals for detailed guides and examples. ------------------------------------------------------------------------ ## Map genes {#map-genes .heading2} - `rba_panther_mapping()`: map your gene-set to PANTHER database and retrieve attributes and annotations associated with your genes - `rba_panther_ortholog()`: Retrieve Orthologs of your genes - `rba_panther_homolog()`: Retrieve Homologs of your genes ------------------------------------------------------------------------ ## Get information {#get-information .heading2} - `rba_panther_info`(): Retrieve a list of PANTHER's supported organisms, datasets, families, or pathways - `rba_panther_family`(): Retrieve Orthologs, MSA, or Tree topology of a given PANTHER family. ------------------------------------------------------------------------ ## Research tools {#research-tools .heading2} ### Gene List Analysis {#gene-list-analysis .heading3} `rba_panther_enrich()` is an equivalent to [Gene List analysis tool's webpage.](https://www.pantherdb.org/index.jsp "PANTHER Gene List Analysis"). Here is a usage example: ```{r rba_panther_enrich, message=TRUE} ## 1 We get the available annotation datasets in PANTHER (we need to select one of them to submit an enrichment request) annots <- rba_panther_info(what = "datasets") # Note that you should enter the "id" of the datasets, not its label (e.g. entering "biological_process" is incorrect, you should rather enter "GO:0008150"). ## 2 We create a variable with our genes' IDs genes <- c("p53", "BRCA1", "cdk2", "Q99835", "CDC42","CDK1","KIF23","PLK1", "RAC2","RACGAP1","RHOA","RHOB", "PHF14", "RBM3", "MSL1") ## 3 Now we can submit the enrichment request. enriched <- rba_panther_enrich(genes = genes, organism = 9606, annot_dataset = "ANNOT_TYPE_ID_PANTHER_PATHWAY", cutoff = 0.05) ``` ```{r enriched_df, echo=FALSE} if (utils::hasName(enriched, "result") && is.data.frame(enriched$result)) { DT::datatable(data = enriched$result, options = list(scrollX = TRUE, paging = TRUE, fixedHeader = TRUE, keys = TRUE, pageLength = 10)) } else { print("Vignette building failed. It is probably because the web service was down during the building.") } ``` **Please Note:** Other services supported by rbioapi also provide Over-representation analysis tools. Please see the vignette article [Do with rbioapi: Over-Representation (Enrichment) Analysis in R](rbioapi_do_enrich.html) ([link to the documentation site](https://rbioapi.moosa-r.com/articles/rbioapi_do_enrich.html)) for an in-depth review. ### Tree grafter {#tree-grafter .heading3} `rba_panther_tree_grafter()` is an equivalent to the "[Graft sequence into PANTHER library of trees](https://www.pantherdb.org/tools/sequenceSearchForm.jsp)" tool. ------------------------------------------------------------------------ ## How to Cite? {#citations .heading2} To cite PANTHER (Please see ): - Huaiyu Mi, Dustin Ebert, Anushya Muruganujan, Caitlin Mills, Laurent-Philippe Albou, Tremayne Mushayamaha, Paul D Thomas, PANTHER version 16: a revised family classification, tree-based classification tool, enhancer regions and extensive API, *Nucleic Acids Research*, Volume 49, Issue D1, 8 January 2021, Pages D394--D403, To cite rbioapi: - Moosa Rezwani, Ali Akbar Pourfathollah, Farshid Noorbakhsh, rbioapi: user-friendly R interface to biologic web services' API, Bioinformatics, Volume 38, Issue 10, 15 May 2022, Pages 2952--2953, ------------------------------------------------------------------------ ## Links {#links .heading2} - [This article in rbioapi documentation site](https://rbioapi.moosa-r.com/articles/rbioapi_panther.html "2.C: PANTHER & rbioapi") - [Functions references in rbioapi documentation site](https://rbioapi.moosa-r.com/reference/index.html#section-enrichr-rba-enrichr- "rbioapi reference") - [rbioapi vignette index](rbioapi.html "rbioapi: User-Friendly R Interface to Biologic Web Services' API") ------------------------------------------------------------------------ ## Session info {#session-info .heading2} ```{r sessionInfo, echo=FALSE} sessionInfo() ```