下游笔记3: 三分钟实现交互式可视化

· 5 min read · Analysis Notes

下游笔记3: 三分钟实现交互式可视化

下游笔记3: 三分钟实现交互式可视化

📢 本期干货预告:

  • • 零基础学会制作交互式单细胞数据展示

  • • 一键部署到云端,随时随地分享数据

  • • 超详细的配置教程,复制粘贴就能用!

今天给大家分享一个交互式可视化神器--ShinyCell 。想分享这个包很久了,实验室的小伙伴们用了都说好,不需要代码也可以查看单细胞数据的基因表达、热图等等,真是非常方便。

ShinyCell 会利用你已经分析好的单细胞数据(支持Seurat,AnnData,Loom等等)生成一个Shiny应用,既可以上载到云,用浏览器访问,也可以在本地运行,并且不需要有Shiny和网页开发的基础(当然有基础就可以自定义某些模块了)。

Source: ShinyCell GitHub

💻 上代码!

1️⃣ 准备工作

# 老规矩,先装包
reqPkg =c("data.table","Matrix","hdf5r","reticulate","ggplot2",
"gridExtra","glue","readr","RColorBrewer","R.utils","Seurat")
newPkg = reqPkg[!(reqPkg %in% installed.packages()[,"Package"])]
if(length(newPkg)){install.packages(newPkg)}
# 如果用的是scanpy分析,下面这个也要装
# reticulate::py_install("anndata")
if(!require("devtools")) install.packages("devtools")
if(!require("shiny")) install.packages("shiny")

# 安装ShinyCell
devtools::install_github("SGDDNB/ShinyCell")

⚠️ 安装碰到问题?

2️⃣ 生成可视化应用

library(ShinyCell)
library(Seurat)

# 假设你的seurat对象叫seu
# Step 1: 生成配置文件
scConf = createConfig(seu)

# Step 2: 生成应用文件(简单版本)
makeShinyApp(seu, scConf,
             gene.mapping =TRUE,# 让基因名支持模糊搜索
             shiny.title ="我的单细胞数据",# 网页标题
             shiny.dir ="myapp")# 保存在哪个文件夹,用绝对或者相对路径都可以

# Step 3: 本地运行试试看
runShiny("myapp")

看到RStudio打开的新窗口了吗?恭喜你!你的第一个ShinyCell应用已经成功运行啦!🎉

Source: ShinyCell GitHub

3️⃣ 多个样本的情况

ShinyCell也支持多个数据集的可视化。这种情况下每个数据集会拥有单独的页面:

library(ShinyCell)
library(Seurat)

# 第一个对象
# Step 1: 生成配置文件
scConf1 = createConfig(seu1)

# Step 2: 生成应用文件(进阶版本)
makeShinyFiles(seu1, scConf1,
                gex.assay ="RNA",# 需要展示的assay,如果用了SCT就填SCT
                gex.slot ="data",# 需要展示的slot
                gene.mapping =TRUE,# 同上,基因模糊搜索
                shiny.prefix ="sc1",# 配置文件前缀,可自定义
                shiny.dir ="myapp/",# App路径
default.gene1 ="EPCAM",# 默认展示的基因名1
default.gene2 ="PTPRC",# 默认展示的基因名2
default.multigene =c("KRT8","KRT5","CD3D","MS4A1","DCN"),# 默认展示的多基因
default.dimred =c("UMAP_1","UMAP_2"))# 默认的降维图

# 第二个对象
scConf2=createConfig(seu2)
makeShinyFiles(seu2, scConf2,
                gex.assay ="RNA",
                gex.slot ="data",
                gene.mapping =TRUE,
                shiny.prefix ="sc2",
                shiny.dir ="myapp/",
default.gene1 ="EPCAM",
default.gene2 ="PTPRC",
default.multigene =c("KRT8","KRT5","CD3D","MS4A1","DCN"),
default.dimred =c("UMAP_1","UMAP_2"))

# 最后生成shinyapp的代码
makeShinyCodesMulti(
  shiny.title ="多数据集展示",
  shiny.prefix =c("sc1","sc2"),# 输入之前定义的前缀
  shiny.headers =c("数据集1","数据集2"),# 输入页面的标题
  shiny.dir ="myapp/")# 应用的路径,记得跟之前保持一致

# Step 3: 本地运行试试看
runShiny("myapp")

🌐 部署到网络(以shinyapps.io为例)

虽然能本地运行也不错,但是想分享给小伙伴还是不够方便。要么把整个应用所在的文件夹打包发送,让小伙伴在本地的RStudio里运行,要么就得每次都把自己电脑端到小伙伴面前。有没有办法部署到网络上,用浏览器就能打开呢?

你别说,还真有。shinyapps.io就是由Rstudio母公司Posit开发的一个专门部署Shiny App的平台,更棒的是它的免费档位就可以部署5个小型应用(小于1G),而且不用像别的云端服务器一样需要自己从头开始配置,日常使用属于是绰绰有余了。

Step 1: 注册账号

  1. 1. 打开shinyapps.io

  2. 2. 点击"Sign Up" 并输入相关信息

  3. 3. 选择"FREE"计划就够用啦!

注册完毕后,需要获取一下API的token。点击右上角的头像 -> Tokens -> Add Token

此时就会生成一条token记录。点击Show -> Copy to clipboard把token复制到剪贴板。

⚠️ 关于Tokens

  • • shinyapps.io的token是可以反复查看的,不一定需要单独保存(当然保存是一个好习惯)

  • • 不要泄漏你的token对应的secret!

  • • 一个token可以多次使用,并不需要每次都重新生成

Step 2: 配置部署工具

# 安装部署工具
install.packages("rsconnect")

# 把刚刚复制的内容粘贴到R里运行
rsconnect::setAccountInfo(name='user', token='XXXXXXXXXX', secret='XXXXXXXXXX')

Step 3: 一键部署

# 确保工作目录包含myapp文件夹
rsconnect::deployApp("myapp")

📌 部署小贴士:

  • • 部署时间跟数据大小有关,耐心等待...

  • • 免费账号每月有25小时运行时间

  • • 想更新内容?直接重新部署就行

  • • 记得保存网址,一般是username.shinyapps.io/myapp/

⚠️ 常见问题

运行特别慢?

 # 试试缩减数据:
seu <- DietSeurat(seu)  # 删掉不必要的数据
seu <- subset(seu, downsample=5000)  # 随机抽5000个细胞

部署失败了?

  • • 检查网络连接

  • • 看看Token是不是正确粘贴了

  • • 确认工作目录是否包含目标文件夹

参考资料

  1. 1. ShinyCell GitHub

  2. 2. Tutorial for creating a ShinyCell app containing several single-cell datasets

  3. 3. Instructions on how to deploy ShinyCell apps online


💌 有问题?想学更多?欢迎在评论区告诉我!

#生物信息学 #单细胞测序 #数据可视化 #R语言

Single Cell Seurat Downstream