```{css, echo=FALSE, eval=TRUE} pre code { white-space: pre !important; overflow-x: scroll !important; word-break: keep-all !important; word-wrap: initial !important; }
body { max-width: 2000px !important; }
.main-container { max-width: 1800px !important; margin-left: auto; margin-right: auto; }
```r options(width=80, max.print=1000) knitr::opts_chunk$set( eval=as.logical(Sys.getenv("KNITR_EVAL", "TRUE")), cache=as.logical(Sys.getenv("KNITR_CACHE", "TRUE")), tidy.opts=list(width.cutoff=60), tidy=TRUE, eval = FALSE) # shiny::tagList(rmarkdown::html_dependency_font_awesome())
suppressPackageStartupMessages(library(systemPipeShiny))
knitr::include_graphics(path = "../inst/app/www/img/logo.png")
systemPipeShiny
(SPS) extends the widely used systemPipeR
(SPR) workflow
environment with a versatile graphical user interface provided by a Shiny
App. This allows non-R users, such as
experimentalists, to run many systemPipeR's workflow designs, control, and
visualization functionalities interactively without requiring knowledge of R.
Most importantly, SPS
has been designed as a general purpose framework for
interacting with other R packages in an intuitive manner. Like most Shiny Apps,
SPS can be used on both local computers as well as centralized server-based
deployments that can be accessed remotely as a public web service for using
SPR's functionalities with community and/or private data. The framework can
integrate many core packages from the R/Bioconductor ecosystem. Examples of
SPS' current functionalities include: (a) interactive creation of experimental
designs and metadata using an easy to use tabular editor or file uploader; (b)
visualization of workflow topologies combined with auto-generation of R
Markdown preview for interactively designed workflows; (c) access to a wide
range of data processing routines; (d) and an extendable set of visualization
functionalities. Complex visual results can be managed on a 'Canvas Workbench'
allowing users to organize and to compare plots in an efficient manner combined
with a session snapshot feature to continue work at a later time. The present
suite of pre-configured visualization examples include different methods to
plot a count table. The modular design of
SPR makes it easy to design custom functions without any knowledge of Shiny,
as well as extending the environment in the future with contributions from
the community.
This vignette only includes the basics of SPS. For full documentations of SPS, visit our website at: https://systempipe.org/sps.
SPS has provided a variety of options to change how it work. Here are some examples. At the time of writing, there is an interactive tutorial (guide) embedded in the demos that users can access from the upper-right corner. The tutorial introduces major functionalities of SPS.
| Type and link| option changed | notes |
| --- | --- | --- |
| Default full installation | See installation | full app, may take longer (~15s) to load |
| Minimum installation | See installation | no modules installed |
| Login enabled | login_screen = TRUE; login_theme = "empty"
| no modules installed |
| Login and login themes | login_screen = TRUE; login_theme = "random"
| no modules installed |
| App admin page | admin_page = TRUE
| use the link or simply add "?admin" to the end of URL of any demos |
For the login required demos, the app account name is "user" password "user".
For the admin login, account name "admin", password "admin".
Please DO NOT delete or change password when you are trying the admin features. Although shinyapps.io will reset the app once a while, this will affect other people who are viewing the demo simultaneously.
if (!requireNamespace("BiocManager", quietly=TRUE)) install.packages("BiocManager") BiocManager::install("systemPipeShiny", dependencies=TRUE)
This will install all required packages including suggested packages that are required by the core modules. Be aware, it will take quite some time if you are installing on Linux where only source installation is available. Windows and Mac binary installations will be much faster.
To install the package, please use the BiocManager::install
command:
if (!requireNamespace("BiocManager", quietly=TRUE)) install.packages("BiocManager") BiocManager::install("systemPipeShiny")
By the minimum installation, all the 3 core modules are not installed. You can still start the app, and when you start the app and click on these modules, it will tell to enable these modules, what packages to install and waht command you need to run. Just follow the instructions. Install as you need.
To obtain the most recent updates immediately, one can install it directly from GitHub as follow:
if (!requireNamespace("remotes", quietly=TRUE)) install.packages("remotes") remotes::install("systemPipeR/systemPipeShiny", dependencies=TRUE)
Similarly, remotes::install("systemPipeR/systemPipeShiny")
for the minimum develop
version.
If you are on Linux, you may also need the following libraries before installing SPS. Different distributions may have different commands, but the following commands are examples for Ubuntu:
sudo apt-get install -y libicu-dev sudo apt-get install -y pandoc sudo apt-get install -y zlib1g-dev sudo apt-get install -y libcurl4-openssl-dev sudo apt-get install -y libssl-dev sudo apt-get install -y make
Currently, SPS
includes 5 main functional categories (Fig 1):
Besides, SPS provides many functions to extend the default Shiny development, like more UI components, server functions and useful general R ulitlieslike error catching, logging, and more. These functionalitlies are distributed as SPS supporting packages: spsComps, drawer, and spsUtil.
systemPipeShiny.
The framework provides an interactive web interface for workflow management and data visualization.
Within the functional categories, SPS
functions are modularized in
sub-components, here referred to as SPS tabs that are similar to
menu tabs in other GUI applications that organize related and inter-connected
functionalies into groups. On the backend, SPS tabs are based on Shiny modules,
that are stored in separate files. This modular structure is highly extensible
and greatly simplifies the design of new SPS
tabs by both users and/or developers.
Details about extending existing tabs and designing new ones are provided in
advanced sections on our website.
The following instructions go through use each module step by step.
This vignette is the simplified version of instruactions. Due to package size limit, we cannot write the full instructions here. We highly recommend you to read the full details on our website: https://systempipe.org/sps/ for instructions, animations, videos, and advanced sections.
Load the systemPipeShiny
package in your R session.
library(systemPipeShiny)
SPS
projectBefore launching the SPS
application, a project environment needs to be created with the
following command.
spsInit()
For this toy example, the project directory structure is written to a temporary directory on a user's system. For a real project, it should be written to a defined and user controlled location on a system rather than a temporary directory.
sps_tmp_dir <- tempdir() spsInit(app_path = sps_tmp_dir, change_wd = FALSE, project_name = "SPSProject") sps_dir <- file.path(sps_tmp_dir, "SPSProject")
The file and directory structure of an SPS project is organized as follows.
SPS_xx/ ├── server.R | ├── global.R | Most important server, UI and global files, unless special needs, `global.R` is the only file you need to edit manually ├── ui.R | ├── deploy.R | Deploy helper file ├── config | Important app config files. Do not edit them if you don't know │ ├── sps.db | SPS database │ ├── sps_options.yaml | SPS default option list │ └── tabs.csv | SPS tab information ├── data | App example data files │ ├── xx.csv ├── R | All SPS additional tab files and helper R function files │ ├── tab_xx.R ├── README.md ├── results | Not in use for this current version, you can store some data been generated from the app │ └── README.md └── www | Internet resources ├── about | About tab information │ └── xx.md ├── css | CSS files │ └── sps.css ├── img | App image resources │ └── xx.png ├── js | Javascripts │ └── xx.js ├── loading_themes | Loading screen files │ └── xx.html └── plot_list | Image files for plot gallery └── plot_xx.jpg
SPS
By default, the working directory will be set inside the project folder automatically.
To launch the SPS
Shiny application, one only needs to execute the following command.
shiny::runApp()
After the SPS app has been launched, clicking the "Continue to app" button on the welcome screen will open the main dashboard (Fig.2).
Alternatively, when using RStudio one can click the Run App
button in the top right corner.
In addition, in Rstudio the global.R file will be automatically
opened when the SPS
project is created. Custom changes can be made inside this file
before the app launches. The advanced section explains how
to change and create new custom tabs.
The workflow management module in SPS
allows one to modify or create the
configuration files required for running data analysis workflows in
systemPipeR (SPR). This includes
three types of important files: a sample metadata (targets) file, a
workflow file (in R Markdown format) defining the workflow steps, and workflow running
files in Common Workflow Language (CWL) format. In SPS, one can easily create
these files under the "Workflow Management" module, located in navigation bar
on the left of the dashboard (Fig2 - 2).
The current version of SPS
allows to:
The targets file defines all input file paths and other sample information of
analysis workflows. To better undertand the structure of this file, one can
consult the "Structure of targets
file"
section in the SPR vignette. Essentially, this is the tabular file representation
of the colData
slot in an SummarizedExperiment
object which stores sample
IDs and other meta information.
The following step-by-step instructions explain how to create and/or modify targets files using RNA-Seq as an example (Fig.3 A):
data
directory. Choose any column you want from the dropdown to check and watch the statistics bar change in this section.In SPR, workflows are defined in Rmarkdown files, you can read details and obtain them here.
Now let us follow the order below to see how SPS helps you to prepare a workflow file for a RNAseq project (Fig.3 B):
On the designer there are two types of workflow steps. One is R step, which only has R code. Then it is the time to run these R steps, they will be run in the same R session as the Shiny app and in a separate environment different than your global environment. In other words, all R steps are in the same environment, they can communicate with each other, meaning you can define a variable in one step and use it in other R steps.
sysArgs steps, on the other hand, is different, as its name suggest, it will invoke system commands (like bash) when run. Details of how to create these steps will be discussed on Fig 3.B.5, Fig 3.B.6.
Current SPS allows users to view some basic information of R steps like, step name, select dependency(ies). Besides, users are welcome to change the R code they want in the second sub-tab (Fig 3.B.2).
Modification of sysArgs steps is limited to step name and dependency. However, this kind steps will provide more information to view, like the files that were used to create this step, raw commandline code that will be run, targets (metadata) and output dataframes. This information is distributed in different subtabs (Fig 3.B.3).
After clicking the button in Fig 3.B.1, you would need to choose whether to create an R or sysArgs step (Figure 3. B.5).
Create a new R step
Create a new R step is simple. In the modal, type the step name, R code, and select dependency (Fig 3. B.6).
Create a new sysArgs step
Basic info for sysArgs step is simialr to R step (Fig 3. B.7).
To generate some commandline line, there are three items need to be prepared: targets, CWL file, CWL yaml file (Fig.3. B.8).
CWL yaml file: provides CWL variables.
Choose the targets source. Targets in SPR workflow steps can come from either a fresh file or inherit from a previous sysArg step(s) (output from a previous step can become input of the next(s)).
.cwl
and .yaml
or .yml
files inside your workflow project param/cwl
folder will be listed here. You
could drop more of these files you want to this folder. They will become aviable
the next time you create a new step.
In the new version of SPR, all individual system workflow steps are called by the CWL files. Each SPR workflow has a set of CWL files and normally users do not need to make any change. In case you want to learn more about CWL and create some new CWL files, Step 4 is a good place to practice.
To run a CWL step in SPR, 3 files are required:
SPR is the parser between R and CWL by injecting sample information from targets
to CWL input
file and then CWL parser translates it to bash code.
Up until this step, congratulations, the workflow is prepared. You can choose to download the workflow project files as a bundle or continue to run the workflow.
This is a module which takes a raw count table to do normalization, Differential gene expression (DEG) analysis, and finally helps users to generate different plots to visualize the results.
To start, we require two files, the metadata file (targets) and a raw count table (Fig. 5).
SampleName
should be a unique character
string without space for each row. Factor
is the experiment design factors, or
conditions, or treatments. Note: For the count table, the first column will be used as gene names. Other column
names will be treated as sample names, and values in these columns are treated as
raw counts. Make sure columns except the first one are numeric, and replace NA
with 0
.
Upon successfully confirm targets and count table, you should see the "Normalize Data" subtab is enabled. You can click on the top navigation or click the pop-up for the next step.
If this UI is displayed, that means your targets and count table are accepted by SPS (Fig 6). On this sub-tab, you can choose:
These two options are independent.
SPS RNAseq module provides 6 different plot options to cluster transformed count table.
SPS Canvas
tab. Or clicking the down-arrow button to directly save current plot to a png or jpg. This is a special sub-tab designed to filter and visualize DEG results. This sub-tab can be accessed once the DEG is calculated on the "Normalize Data" sub-tab.
If you are familiar with R and want to continue other analysis after these, simple stop SPS:
spsRNA_trans
object stored in your R
environment. raw
method gives you a normalized count table. Other two methods
give you a DESeq2
class object. You can use it for other analysis.spsDEG.
It is a summerizedExperiment
object which has all individual tables from all
DEG comparisons. You can use it for other downstream analysis.If you are using SPS from a remote server, you can choose to download results from
"Normalize Data" sub-tab. Choose results in tabular format or summerizedExperiment
format which is saved in a .rds
file.
This module enables you to quickly upload datasets and make a {ggplot} in a second by using some functionalities from {Esquisse}.
For a more specific guide, read Esquisse official guide.
SPS Canvas is a place to display and edit scrennshots from different plots. To start to use Canvas, you need to take some screenshots but clicking "To Canvas" buttons on different tabs/modules. After clicking, the screenshots will be automatically sent from these places to this Canvas.
Figure 9 Canvas
Keyboard shortcuts are also enabled with SPS Canvas. Go to "help" menu to see these options.
To read the detailed advanced features, please to go our website.
sessionInfo()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.