哈哈哈哈好久好久没有登上我的账号了!登上去竟然有71个粉丝了,年底冲冲业绩是不是可以100啊啊啊,期待~~
这次写这个文章,是因为我想用Seurat中整合多套数据的功能,但是做到其中一步的时候,跟我说没有这个函数PrepSCTIntegration,然后我就捣腾了一下午终于把这个问题解决了,特别特别开心。
先简单贴上数据整合的代码
是在Linux系统上跑的
integrated.exp <- readRDS("cells_count.rds")
metadata <- readRDS("metadata.rds")
all.equal(colnames(integrated.exp), rownames(metadata)) # TRUE
# 构建seurat object
# 过滤了下基因,至少在20个细胞内表达
integrated <- CreateSeuratObject(integrated.exp, meta.data = metadata, min.cells = 20)
[email protected]$orig.ident <- integrated$detail
[email protected] <- integrated$orig.ident
# 看下两次数据的数据质量情况
mt_pattern<-"^mt-"
rp_pattern<-"^Rpl|^Rps"
integrated[["percent.mt"]] <- PercentageFeatureSet(object = integrated,
pattern = mt_pattern)
integrated[["percent.rp"]] <- PercentageFeatureSet(object = integrated,
pattern = rp_pattern)
name_pre <- "unfilter"
# QC是自己写的函数
QC(integrated,name_pre)
integrated.list <- SplitObject(integrated, split.by = "datasource")
## SCT normalization: 这一步需要比较久的时间,所以我会先提前保存下来
for (i in 1:length(integrated.list)) {
integrated.list[[i]] <- SCTransform(integrated.list[[i]], verbose = FALSE)
}
saveRDS(integrated.list,"integrated.list.rds")
## 查看下Seurat的版本
library(Seurat)
packageVersion("Seurat")# ‘3.2.2’
## 重新读取数据,工作区间更干净
rm(list=ls())
integrated.list <- readRDS("integrated.list.rds")
## 整合数据
integrated.features <- SelectIntegrationFeatures(object.list = integrated.list,
nfeatures = 3000)
integrated.list <- PrepSCTIntegration(object.list = integrated.list,
anchor.features = integrated.features,
verbose = FALSE)
integrated.anchors <- FindIntegrationAnchors(object.list = integrated.list,
normalization.method = "SCT",
anchor.features = integrated.features,
verbose = FALSE)
ob.integrated <- IntegrateData(anchorset = integrated.anchors,
normalization.method = "SCT",
verbose = FALSE)
然后做到这里,发现找不到这个PrepSCTIntegration,原因是因为我之前的Seurat版本是3.0.2的版本,是比较老的版本了,师姐的版本是3.2.2的是有这个函数。我去看了下CRAN上包的版本
然后我想更新就死活安不上这个包,原因是uwot包没安上。
然后我就尝试各种方法安装uwot这个包
方法一,没反应,可能是我下午的网络不好
install.packages("remotes")
library(remotes)
remotes::install_github("jlmelville/uwot")
方法二:我自己到github 下载包,自己手动安装
https://github.com/jlmelville/uwot
网络实在太差然后我同学给我下载的
## copy 到你的R包路径
.libPaths() # 查看你的R包路径
install.packages("uwot-master.zip", repos= NULL)
这个方法会出现一个问题:
unable to load shared object '/Library/Frameworks/R.framework/Versions/3.5/Resources/library/uwot/libs/uwot.so
我查到的一个帖子:https://github.com/jlmelville/uwot/issues/1
但是对我并不管用
后来看到师姐可以安装uwot这个包,我就从师姐那拷贝过来然后解压
方法三:拷贝别人的uwot 包解压到R包路径下
# Linux 下
unzip uwot.zip
# 然后进去R
library(uwot)
这时候出现了一个问题:
glibcxx_3.4.22' not found ubuntu
然后主要参照这个博文,解决了问题
https://blog.csdn.net/weixin_43399156/article/details/103146323
cd /usr/lib/x86_64-linux-gnu
strings libstdc++.so.6 | grep GLIBCXX
cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /home/user name你的账户名/miniconda(你的可能叫miniconda3)/lib
#进入到miniconda中的lib文件加下, 改动红色字体,变成你自己的。
cd /home/user name你的账户名/miniconda(你的可能叫miniconda3)/lib
libstdc++.so.6 | grep GLIBCXX
哈哈哈哈然乎就是可以用了,开心的飞起!!!
20201210 06:24 AJI