Cerebro:一个好用的单细胞数据展示shiny工具

常见的单细胞转录组图形基本都包含,用起来也比较方便,很适合不擅长生信分析的人来做数据探索。对于做分析的人来讲,这样一个网页工具也降低了和非分析合作者的沟通成本。
该工具2019年发表在Bioinformatics,文献标题"Cerebro: interactive visualization of scRNA-seq data".

具体来讲,Cerebro的功能主要包括:

  • 交互式降维结果展示
  • 差异基因展示
  • 通路富集分析结果展示
  • 基因和基因集评分的展示
  • 拟时序分析结果展示,用的Monocle2
  • 导出图片为pdf
  • 表格的导出

Cerebro的使用方法也很简单,首先需要准备好一个较完整的seurat对象,细胞注释这一步最好已经完成。得到这样一个seurat对象的代码为1.seurat.R,本文不演示。(公粽号上)本文最后会提供链接,用于获取本文涉及到的所有代码和示例数据。

下面先来看一下,如何生成这个shiny工具需要的.crb文件。

1. 安装R包并加载

cerebroApp这个R包是配套Cerebro工具使用的,这个R包的目的主要是准备Cerebro的输入文件,也包括一些基本分析,比如找差异基因、富集分析,都是一步搞定的。详细教程在https://romanhaa.github.io/cerebroApp/articles/cerebroApp_workflow_Seurat.html

BiocManager::install('romanhaa/cerebroApp')
library(cerebroApp)
2. 导入seurat对象,并进行基本分析
testEC=readRDS("testEC.rds")

2.1 计算线粒体、核糖体基因表达占比

testEC <- addPercentMtRibo(testEC,organism = 'hg',gene_nomenclature = 'name')

之后meta数据框会多出两列。此外,很神奇的是,所用到的线粒体、核糖体基因集会被存储在:

testEC@misc$gene_lists$mitochondrial_genes
testEC@misc$gene_lists$ribosomal_genes

我也是头一回知道seurat对象还可以有这个misc slot, 用于存储一些有用的基因集、数据框。

2.2 获取表达最多的基因
这里表达最多是从UMI总数的角度来说的,是指在特定的分组情况下,某个基因的UMI之和,比上所有基因的UMI之和。

testEC <- getMostExpressedGenes(testEC,assay = 'RNA',groups = c('sample','maintype'))

比如用maintype分组,就是求每种细胞类型里面,哪些基因表达最多。这些基因以数据框的形式存储:

testEC@misc$most_expressed_genes$sample
testEC@misc$most_expressed_genes$maintype

2.3 获取marker基因
这一步调用的是seurat的FindAllMarkers

testEC <- getMarkerGenes(
  testEC,
  assay = 'RNA',
  organism = 'hg',
  groups = c('sample','maintype'),
  name = 'cerebro_seurat',
  only_pos = TRUE,
  min_pct = 0.7,
  thresh_logFC = 0.25,
  thresh_p_val = 0.01,
  test = "wilcox"
)

结果存储在:

testEC@misc$marker_genes$cerebro_seurat$sample
testEC@misc$marker_genes$cerebro_seurat$maintype

这里最后一列是on_cell_surface信息,这个seurat里面好像是没有的。

2.4 通路富集分析

testEC <- getEnrichedPathways(
  testEC,
  marker_genes_input = 'cerebro_seurat',
  adj_p_cutoff = 0.01,
  max_terms = 100
)

结果以数据框的形式存储在:

testEC@misc$enriched_pathways$cerebro_seurat_enrichr$sample
testEC@misc$enriched_pathways$cerebro_seurat_enrichr$maintype

这一步富集用到的数据库比较全,包括:

2.5 GSEA也能做
不过只是得到表格,不出图

gmt_path <- "D:/hsy/bioinformatics/PTJ/019_EC_600/metabolic_pathways3.gmt"

testEC <- performGeneSetEnrichmentAnalysis(
  testEC,
  assay = 'RNA',
  GMT_file = gmt_path,
  groups = c('sample','maintype')
)

# 结果存储在:
# testEC@misc$enriched_pathways$cerebro_GSVA$sample
# testEC@misc$enriched_pathways$cerebro_GSVA$maintype
3. 导出crb文件
exportFromSeurat(
  testEC,
  assay = 'RNA',
  slot = 'data',
  file = 'testEC.crb',
  experiment_name = 'EC',
  organism = 'hg',
  groups = c('sample','seurat_clusters','maintype'),
  nUMI = 'nCount_RNA',
  nGene = 'nFeature_RNA',
  add_all_meta_data = TRUE,
  verbose = FALSE
)

这一步会在工作目录下面生成.crb文件

4. 打开shiny工具
launchCerebro(version = "v1.3")

之后你的浏览器就会自动打开一个网页,如下:

点击上方的Browse按键,导入上一步得到的文件,之后就可以开始可视化了

5. 图形展示

最左边的是菜单栏

5.1 降维图,对应菜单栏为overview

左边有一列参数调整的控件,降维方式、分组方式、点的大小和透明度、是否筛选细胞等等这些都可以调整。

右侧绘图区,可以下载图片,也可以选中细胞。选中的细胞在该页面下方会有统计信息,包括细胞数量,以及meta数据框中的属性信息。如下:

5.2 细胞类型的占比,几个质控指标

对应菜单Groups

上图为每个样本里面,各种细胞类型的占比

上图为每个样本线粒体基因表达占比

5.3 表达最多的基因,对应菜单栏为most expressed gene

如图,表示D_cell中表达最多的基因

5.4 差异基因

如图,表示C_cell中的差异基因。表格的展示也是很好看的,此外,这些表格都是可以下载的。

5.5 富集分析的结果展示

展示形式跟上面差不多,此处略过

5.6 基因表达、基因集评分的投影图

5.7 基因ID转换

以上是一些展示功能,基因转换这个小功能也很有用


本次分享就到这里。真心觉得是个不错的工具,不太擅长生信分析或者刚刚接触单细胞的朋友可以试试。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的用backtrader库的RSI均线量化回测,数据从tushare获取的Python代码。请确保你已经安装了backtrader和tushare库。 ```python import backtrader as bt import tushare as ts class RSI_Moving_Average(bt.Strategy): params = (('rsi_period', 14), ('ma_period', 30), ('printlog', False)) def log(self, txt, dt=None, doprint=False): if self.params.printlog or doprint: dt = dt or self.datas[0].datetime.date(0) print('%s, %s' % (dt.isoformat(), txt)) def __init__(self): self.rsi = bt.indicators.RSI_SMA(self.data.close, period=self.params.rsi_period) self.sma = bt.indicators.SimpleMovingAverage(self.data.close, period=self.params.ma_period) def next(self): if not self.position: if self.rsi < 30: self.buy() else: if self.rsi > 70: self.sell() def notify_order(self, order): if order.status in [order.Submitted, order.Accepted]: return if order.status in [order.Completed]: if order.isbuy(): self.log('BUY EXECUTED, Price: %.2f, Cost: %.2f, Comm %.2f' % (order.executed.price, order.executed.value, order.executed.comm)) else: self.log('SELL EXECUTED, Price: %.2f, Cost: %.2f, Comm %.2f' % (order.executed.price, order.executed.value, order.executed.comm)) elif order.status in [order.Canceled, order.Margin, order.Rejected]: self.log('Order Canceled/Margin/Rejected') def notify_trade(self, trade): if not trade.isclosed: return self.log('OPERATION PROFIT, GROSS %.2f, NET %.2f' % (trade.pnl, trade.pnlcomm)) if __name__ == '__main__': cerebro = bt.Cerebro() # 获取数据 data = ts.get_k_data('000001', start='2010-01-01', end='2021-01-01') data = bt.feeds.PandasData(dataname=data) cerebro.adddata(data) # 添加策略 cerebro.addstrategy(RSI_Moving_Average) # 设定初始资金和手续费 cerebro.broker.setcash(100000.0) cerebro.broker.setcommission(commission=0.002) # 运行回测 print('Starting Portfolio Value: %.2f' % cerebro.broker.getvalue()) cerebro.run() print('Final Portfolio Value: %.2f' % cerebro.broker.getvalue()) ``` 这个策略是基于RSI和移动平均线的交叉进行交易的。当RSI低于30时,策略会买入股票,当RSI高于70时,策略会卖出股票。回测数据来自于tushare的历史数据,回测结果将会输出到控制台,包括每次交易的成本和收益。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值