GExPipe

Gene Expression Pipeline — a Shiny application for high-throughput genomic analysis of bulk RNA-seq and microarray data (e.g. from GEO).

Resource Link
Bioconductor bioconductor.org/packages/GExPipe
GitHub github.com/safarafique/GExPipe
Bug reports Bioconductor Support · tag GExPipe

Overview

GExPipe is a 16-step Shiny workflow for bulk RNA-seq and microarray data from GEO. Step 1 has four analysis types:

Type What it does
RNA-seq only Count DE (DESeq2 / edgeR / voom) or limma on TMM. One or more GSE IDs in the RNA-seq box.
Microarray only Platform normalization + limma. One or more GSE IDs in the microarray box.
Merged (Both) Normalize each study, intersect common genes, one joint batch, one limma DE. Each box accepts several GSE IDs.
Parallel DE, then merge RNA-seq and microarray stay separate through DE (two engines). Step 7 keeps same-direction overlap. Each box accepts several GSE IDs.

Later steps (WGCNA, DEG ∩ modules, PPI, ML, validation, ROC, nomogram, GSEA, report) are shared.

The pipeline covers:

Dependencies are from CRAN and Bioconductor only.


Requirements

R version Bioconductor Supported
4.4.x 3.19 / 3.20 ❌ (below minimum)
4.5.x 3.21 ❌ (below DESCRIPTION minimum R ≥ 4.6.0)
4.6.x stable 3.22 ✅ (required)
4.6.x alpha/beta — ❌ (no binaries available)

Use a stable R release. Download from https://cran.r-project.org/bin/windows/base/


Installation & Run

Option 1 — Run directly from GitHub (main, includes Parallel DE and multi-GSE)

Paste into R or RStudio. Install pkgload once so the app loads the cloned source (not an older Bioconductor install).

if (!requireNamespace("shiny", quietly = TRUE)) install.packages("shiny")
if (!requireNamespace("pkgload", quietly = TRUE)) install.packages("pkgload")
shiny::runGitHub(
  "safarafique/GExPipe",
  ref = "main",
  subdir = "inst/shinyapp",
  destdir = tempfile()
)

First run on a fresh machine takes 10–30 min (downloading dependencies). After an R upgrade, restart R once (Ctrl+Shift+F10 in RStudio) before the first run.


Option 2 — Install once, run every session (recommended)

Install or update (use force = TRUE when updating to the latest GitHub code):

if (!requireNamespace("remotes", quietly = TRUE)) install.packages("remotes")
remotes::install_github(
  "safarafique/GExPipe",
  force = TRUE,
  upgrade = "always",
  INSTALL_opts = "--no-staged-install"
)

Restart R once after install or update (RStudio: Ctrl+Shift+F10).
This avoids Windows glmnet DLL lock issues and ensures PVCA / ML helpers load correctly.

app <- GExPipe::runGExPipe()      # Step 1: build app (check console for "glmnet OK")
shiny::runApp(app)  # Step 2: start server

Every later session (no reinstall unless you want updates):

app <- GExPipe::runGExPipe()
shiny::runApp(app)

To pull the latest fixes from GitHub into an existing install:

remotes::install_github("safarafique/GExPipe", force = TRUE, upgrade = "always",
                        INSTALL_opts = "--no-staged-install")
# then Ctrl+Shift+F10 and runGExPipe() again

Both options require R >= 4.6.0 (stable). Bioconductor 3.22 is selected automatically.

From Bioconductor (when accepted)

BiocManager::install("GExPipe", dependencies = TRUE)
app <- GExPipe::runGExPipe()
shiny::runApp(app)

Dependencies are installed at package install time. Runtime auto-install is off by default for Bioconductor installs.

For GitHub installs into your normal R library, enable first-run auto-install if needed:

options(gexpipe.auto_install = TRUE)
app <- GExPipe::runGExPipe()
shiny::runApp(app)

Running in Google Colab (or other cloud notebooks)

In Google Colab (or any headless R session) there is no local browser, so you must expose the app on all interfaces and open the URL Colab provides.

Use Option 1 or Option 2 above to install, then start with:

library(GExPipe)
library(shiny)
app <- runGExPipe(launch.browser = FALSE, host = "0.0.0.0", port = 3838L)
shiny::runApp(app)

Open port 3838 via Colab’s port-forwarding panel, or run a tunnel (ngrok http 3838) and open the HTTPS URL.


Package versions

Runtime dependencies are declared in DESCRIPTION (Imports / Suggests, with minimum versions where specified). The app also uses affy and oligo for microarray CEL RMA when supplementary CEL files are available.

To list installed versions for packages declared in DESCRIPTION:

desc <- read.dcf(system.file("DESCRIPTION", package = "GExPipe"))
pkgs <- sub("\\s*\\(.*", "", strsplit(desc[1, "Imports"], ",\\s*")[[1]])
pkgs <- pkgs[pkgs != "parallel"]
sapply(pkgs, function(p) as.character(packageVersion(p)))

Use sessionInfo() when reporting issues.


Building for Bioconductor submission

The vignette is R Markdown and requires Pandoc. If Pandoc is not installed, build without vignettes:

R CMD build . --no-build-vignettes

The resulting GExPipe_0.99.109.tar.gz is valid for submission; vignette source is in vignettes/. To build the vignette locally, install Pandoc and run R CMD build . without --no-build-vignettes.

Package check

From the package root:

R CMD build . --no-build-vignettes
R CMD check GExPipe_0.99.109.tar.gz --no-build-vignettes --no-manual

Before submission, fix any ERRORs and WARNINGs from R CMD check, then run BiocCheck("GExPipe_0.99.109.tar.gz") and address any reported issues.


Contributors