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: 行 8: 26729 已杀死 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的抽取细胞方式,结果还是比较稳健的,可以放心使用。
标准分析|分群注释全流程(实验原理、seurat标准分析流程、多样本整合、doublet分析、自动注释、批量差异分析、批量富集分析、添加注释样本分组信息、可视化)
标准分析|Read10X源码拆解
标准分析|自动获得QC阈值
标准分析|污染处理工具SoupX
注释|植物细胞marker的数据库
注释|自动注释小工具——SCSA
细胞分化|轨迹分析的基本概念1
细胞分化|轨迹分析的基本概念2
细胞分化|monocle1原理
细胞分化|解决monocle2报错
细胞分化|使用VECTOR进行无监督发育方向推断
细胞分化|单细胞可变剪切分析全流程(基于velocyto.R)
细胞分化|不同scVelo模型
细胞分化|使用GeneTrajectory进行基因轨迹分析
富集分析|基于TBtools&R语言进行富集分析及可视化
富集分析|更新clusterprofiler包
富集分析|基因ID格式转换
富集分析|水稻富集分析
富集分析|植物组织特异性干细胞通路获取
分享内容:分子标记开发及种质资源鉴定、单细胞多组学数据分析、生信编程、算法原理、文献分享与复现等...
点个赞再走!