测试|cytotrace v1使用不同细胞数对结果的影响

文摘   2024-05-22 20:38   江苏  

Part1背景

虽然我们经常使用Monocle来推断不同细胞类群之间的分化轨迹,但是这些轨迹分析软件并没有办法判断起点,即找不出分化程度最低(干性最高)的组细胞亚群。那么我们需要结合生物学背景来对monocle的起点进行修改。那么有没有一款软件,可以不需要先验知识,就能判断起点呢?也是有的。CytoTRACE这个工具发表于2020年,是专门用来评估单细胞数据中各细胞亚群的分化潜力,从而鉴定出组细胞的工具。前不久cytotrace2也已发布,这个工具还是很有潜力的。iCytoTRACE的安装稍稍有一些麻烦,不过如果不需要用的话跳过这个模块也没关系,我们将在更新完monocle系列后推送cytotrace从安装到分析流程的完整代码【点赞对一只羊催更】

最近我在分析数据时因为数据量较大服务器上也跑不动,所以顺手记录了使用所有细胞or软件默认的FAST模式/自行downsample结果的差异,供大家参考。

Part2run_cytotrace函数使用方法

我已经将cytotrace的代码及所需结果打包为run_cytotrace函数,使用方法为

run_cytotrace(out_dir = out_dir,#输出路径
obj           = PRO,#seurat对象
idents        = "seurat_clusters",#分群所在列
prefix        = "enableFast",#输出文件前缀
downsample    = 1000,              #max cell number per cluster [default: 1000]
slot          = "data",            #提取矩阵时的slot,count或data,
topgene       = 10,
enableFast    = FALSE,             #默认TRUE会进行subsample,FALSE为使用所有细胞
subsamplesize = 10000,             #当enableFast = TRUE时生效,默认subsamplesize到1000
ncores        = 5,                 #当enableFast = TRUE时生效
reduction     = c("tsne","umap"),  #降维图展示
barplot.sort.by=median,#按中值排序,可使用max,min,mean等
return        = FALSE)

demo视频:

【【单细胞转录组R包开发】使用cytotrace进行细胞分化分析-哔哩哔哩】 https://b23.tv/LF0hK7w

以下只展示boxplot的结果。要注意的是,cytotrace默认当细胞数量超过3000个时自动采用fast模式,并默认只使用1000个细胞进行分析,如果想使用所有细胞需要手动设置。那么,cytotrace的这个设置是合理的吗?不用所有细胞只用部分细胞也能得到稳健的结果?

Part3单样本结果测试

单样本细胞数一般在一万左右,对于服务器来说使用所有细胞也没有压力。但是要注意了,cytotrace默认并不是使用所有细胞的。这里选用的数据有9936个细胞,6个分群,根据注释判断6为cycling细胞,3为分化早期的细胞。

使用所有细胞

run_cytotrace(out_dir ="~/2024/test/cytotrace/",
obj           = PRO,
idents        = "seurat_clusters",
prefix        = "single_all_cells",
downsample    = NULL,
enableFast    = FALSE)

输出结果:

The number of cells in your dataset exceeds 3,000. CytoTRACE will now be run in fast mode (see documentation). You can multi-thread this run using the 'ncores' flag. To disable fast mode, please indicate 'enableFast = FALSE'.
CytoTRACE will be run on 1 sub-sample(s) of approximately 9936 cells each using 1 / 5 core(s)
Pre-processing data and generating similarity matrix...
Calculating gene counts signature...
Smoothing values with NNLS regression and diffusion...
Calculating genes associated with CytoTRACE...
Done

可以看到设置enableFast = FALSE时使用了所有细胞。

cytotrace的分析结果和注释结果对应:即cycling和分化早期的细胞cytotrace得分最高。

使用1000个细胞

run_cytotrace(out_dir ="~/2024/test/cytotrace/",
obj             = PRO,
idents          = "seurat_clusters",
prefix          = "subsamples",
downsample      = NULL,
enableFast      = TRUE,
subsamplesize = 1000)

输出结果:

The number of cells in your dataset exceeds 3,000. CytoTRACE will now be run in fast mode (see documentation). You can multi-thread this run using the 'ncores' flag. To disable fast mode, please indicate 'enableFast = FALSE'.
CytoTRACE will be run on 10 sub-sample(s) of approximately 994 cells each using 5 / 5 core(s)
Pre-processing data and generating similarity matrix...
Calculating gene counts signature...
Smoothing values with NNLS regression and diffusion...
Calculating genes associated with CytoTRACE...
Done

当我们设置enableFast = TRUE,并且subsamplesize = 1000时,使用了994个细胞进行分析。可以发现对于这个样本,无论使用所有细胞还是只用994个细胞,基本是没有差异的。

Part4多样本结果测试

在对多样本进行分析时,使用所有细胞对内存就比较有压力了。当这里共有63953个细胞时就出现了报错,所以只能使用部分细胞。根据注释,判断14/15群为cycling细胞,2群为分化早期的细胞。

The number of cells in your dataset exceeds 3,000. CytoTRACE will now be run in fast mode (see documentation). You can multi-thread this run using the 'ncores' flag. To disable fast mode, please indicate 'enableFast = FALSE'.
CytoTRACE will be run on 1 sub-sample(s) of approximately 63953 cells each using 1 / 1 core(s)
Pre-processing data and generating similarity matrix...
/gss1/home/lwr/.lsbatch/1715911546.644616: 行 826729 已杀死               Rscript test.R

downsample

假如进行downsample,这里相当于每个群最多1000个细胞。

PRO
#33255 features across 63953 samples within 1 assay
table(PRO@meta.data$seurat_clusters)
#     1     2     3     4     5     6     7     8     9    10    11    12    13
# 13073  9792  6842  4288  3926  3668  3548  2999  2998  2370  1791  1675  1659 
#    14    15    16    17    18    19 
#  1472  1282  1110   620   575   265

pro = subset(PRO,downsample=1000)
#33255 features across 17460 samples within 1 assay
table(pro@meta.data$seurat_clusters)
#    1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16
# 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 
#   17   18   19 
#  620  575  265

我们测试一下会得到怎样的结果。

run_cytotrace(out_dir ="~/2024/test/cytotrace/",
obj           = PRO,
idents        = "seurat_clusters",
prefix        = "test1",
downsample    = 1000,              
enableFast    = FALSE)

当每个群最多取1000个细胞时,用17460个细胞进行分析,结果如下:

cycling细胞14/15群有较高的cytotrace得分,cytotrace在判断这类细胞还是比较准的。按中位数排序为

15>14>10>1>2>9>3>5>18>19>8>4>17>6>13>11>7>16>12

每个群最多取N个细胞似乎不太合理。接着设置取一万个细胞看一下。

使用10000个细胞

run_cytotrace(out_dir ="~/2024/test/cytotrace/",
obj           = PRO,
idents        = "seurat_clusters",
prefix        = "test3",
downsample    = NULL,          
enableFast    = TRUE,          
subsamplesize = 10000)

按中位数排序为

15>14>1>9>3>2>10>4>13>17>16>18>5>19>8>11>6>7>12

可以看到除了cytotrace得分最高/低的14/15/12群,其它群的排序出现了变化。

使用20000个细胞

run_cytotrace(out_dir ="~/2024/test/cytotrace/",
obj           = PRO,
idents        = "seurat_clusters",
prefix        = "test4",
downsample    = NULL,    
enableFast    = TRUE,    
subsamplesize = 20000     
)

在使用21318个细胞进行分析时,按中位数排序为

15>14>1>9>3>2>10>4>17>13>16>18>5>8>19>11>6>7>12

使用1000个细胞

以上是采用10000/20000个细胞进行分析,那么cytotrace默认的只用1000个细胞结果怎样?设置enableFast = TRUE, subsamplesize = 1000后最终采用999个细胞进行分析。

run_cytotrace(out_dir ="~/2024/test/cytotrace/",
obj           = PRO,
idents        = "seurat_clusters",
prefix        = "test2",
downsample    = NULL,          
enableFast    = TRUE,          
subsamplesize = 1000
)

按中位数排序为

15>1>14>9>3>2>10>4>13>17>16>18>5>19>8>11>6>7>12

Part5小结

由此可见,对于单样本的情况,使用所有细胞还是只使用cytotrace默认的FAST模式,使用1000个细胞来分析基本上不会影响结果,如果不放心的话两种方式可以都跑一下。

当细胞数量较大时,使用所有细胞会比较有压力,你可以自己去抽取部分细胞减少细胞数(注意抽取方式是否合理),也可以直接采用cytotrace的FAST模式使用部分细胞进行分析。

#downsample
15>14>10>1>2>9>3>5>18>19>8>4>17>6>13>11>7>16>12
#1000
15>1>14>9>3>2>10>4>13>17>16>18>5>19>8>11>6>7>12
#10000
15>14>1>9>3>2>10>4>13>17>16>18>5>19>8>11>6>7>12
#20000
15>14>1>9>3>2>10>4>17>13>16>18>5>8>19>11>6>7>12

对于cytotrace的抽取细胞方式,结果还是比较稳健的,可以放心使用。


END


#

付费合集

#

推荐阅读

生信分析环境搭建

上游分析|植物gtf文件修改后进行上游分析

标准分析|分群注释全流程(实验原理、seurat标准分析流程、多样本整合、doublet分析、自动注释、批量差异分析、批量富集分析、添加注释样本分组信息、可视化)
标准分析|Read10X源码拆解
标准分析|自动获得QC阈值
标准分析|污染处理工具SoupX

注释|植物细胞marker的数据库
注释|自动注释小工具——SCSA

细胞分化|轨迹分析的基本概念1
细胞分化|轨迹分析的基本概念2
细胞分化|monocle1原理
细胞分化|解决monocle2报错
细胞分化|使用VECTOR进行无监督发育方向推断
细胞分化|单细胞可变剪切分析全流程(基于velocyto.R)
细胞分化|不同scVelo模型
细胞分化|使用GeneTrajectory进行基因轨迹分析

富集分析|基于TBtools&R语言进行富集分析及可视化
富集分析|更新clusterprofiler包
富集分析|基因ID格式转换
富集分析|水稻富集分析
富集分析|植物组织特异性干细胞通路获取

可视化|Featureplot函数进阶
可视化|DotPlot函数进阶
可视化|给你的Dotplot添加聚类及其它统计信息

单细胞联合bulk|一文搞定R包Scissor

公共数据|EgdeTurbo下载CNCB数据
公共数据|不使用Read10x如何读取数据

#

关于我

分享内容:分子标记开发及种质资源鉴定、单细胞多组学数据分析、生信编程、算法原理、文献分享与复现等...

点个赞再走!


你好我是一只羊
个人号,内容主要涉及种质资源、分子标记开发及遗传多样性分析,表观遗传、编程语言在生物信息学中的应用、转录组、基因组、单细胞测序多组学数据分析等;其它更新平台:B站&小红书-一只羊做生信/捡羊毛的咩/生信小羊🐑
 最新文章