2023.3.28初版
误入BioInfor的大黄鸭 --一个喜欢把教程写着写着写成科普的本科临床医学生
学习了生信菜鸟团赵小明老师(赵小明777)的文章Scissor,花了两天时间学习了这个R包,这个R包可以通过提供三个信息(scRNA的表达矩阵,bulk表达矩阵、临床数据),可以找出与临床数据正相关和负相关的细胞亚群。老师文章里只做了生存相关性的分析,我这里教大家如何做二分类临床数据的相关性分析(如TNM、性别等),顺便教大家如何解决Linux服务器中关于:ERROR; return code from pthread_create() is 22这个错误的方法。
目录
- 1.输入文件的准备
- 2.包的准备
- 3.二分类数据的操作流程
- 4.报错修改
输入文件的准备
我们需要准备:
1.scRNA的表达矩阵(scrt)(行名为基因名,列名为细胞名称)(数据类型:matrix)
2.bulk的表达矩阵(bulk_dataset)(行名为基因名,列名为样本名称)(数据类型:matrix)
3.临床信息矩阵(bulk_phenotype)(第一列为bulk的样本名称,注意顺序要和第二个文件的顺序一样,第二列为临床数据,这里我以转移“1”和非转移“0”为例,注意要改为0和1)(数据类型:matrix和dataframe都行)
把三个数据读取进Rstudio里。
包的准备
devtools::install_github("jinworks/scAB")
二分类数据的操作流程
读入的表达矩阵用下面代码转换为Seurat对象,注意别用普通单细胞Seurat的转换代码,不然会报错,一定要用下面的代码转:
sc_dataset <- Seurat_preprocessing(scrt, verbose = F)
用这个代码看看临床数据和表达矩阵的顺序能不能对得上:
all(colnames(bulk_dataset) == bulk_phenotype$ID)
把临床数据转化为一个带有name的numeric向量:
phenotype <- as.numeric(bulk_survival[,2])
names(phenotype)<-bulk_survival[,1]
创建一个tag:
tag<-c("M0","M1") #注意第一个为对照组第二个为实验组
运行Scissor:
infos4 <- Scissor::Scissor(bulk_dataset, sc_dataset, phenotype, tag = tag, alpha = 0.5, family = "binomial", Save_file = "M_mutation.RData")
后续输出umap:
Scissor_select <- rep(0, ncol(sc_dataset))
names(Scissor_select) <- colnames(sc_dataset)
Scissor_select[infos4$Scissor_pos] <- 1
Scissor_select[infos4$Scissor_neg] <- 2
sc_dataset <- AddMetaData(sc_dataset, metadata = Scissor_select, col.name = "scissor")
DimPlot(sc_dataset, reduction = 'umap', group.by = 'scissor', cols = c('grey','indianred1','royalblue'), pt.size = 1.2, order = c(2,1))
本包适合内存大的电脑运行,我的40G的电脑也运行不了2w个细胞的scRNA数据,建议大家在Linux环境下运行。
报错修改
我们在使用Linux运行时,通常会遇到以下错误:
ERROR; return code from pthread_create() is 22,或者是:
我初步怀疑是因为preprocessCore包版本问题或者损坏导致的,我们需要重新安装这个包,打开Linux工作台:
git clone https://github.com/bmbolstad/preprocessCore.git
cd preprocessCore
R CMD INSTALL --configure-args="--disable-threading" .
重新安装即可完美解决。(引自简书)
本教程就先讲到这啦,后续随后更新,欢迎大家关注支持~大家关注一下我:误入BioInfor的大黄鸭