下游笔记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")
⚠️ 安装碰到问题?
• Windows用户别忘了装Rtools:https://cran.r-project.org/bin/windows/Rtools/
• 网不好的同学可以科学一下
• R/RStudio版本太老的话更新一下
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. 打开shinyapps.io
2. 点击"Sign Up" 并输入相关信息
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. ShinyCell GitHub
2. Tutorial for creating a ShinyCell app containing several single-cell datasets
3. Instructions on how to deploy ShinyCell apps online
💌 有问题?想学更多?欢迎在评论区告诉我!
#生物信息学 #单细胞测序 #数据可视化 #R语言