Scanpy_3 多个样本的单细胞分析流程(scvi)
代码说明:
视频链接:https://www.youtube.com/watch?v=YT9qTuF6YFk&list=PLi1VnGoeDGjsssKTF898Nu0a9ki9beb_W&index=13
代码链接:https://github.com/mousepixels/sanbomics_scripts/blob/main/scVI_tools_introduction.ipynb
该代码来自油管博主sanbomics,该博主是我目前看过的所有讲scanpy教程讲的最好的,不过视频是全英的而且需要科学上网;
该单细胞分析流程适用于两个或以上样本的单细胞数据,有去批次效应,有整合内容。
该流程使用scvi方法整合:scvi采用了一种基于深度生成模型的算法来降维和批次效应校正,相比传统的PCA或t-SNE等降维方法,该算法可以更好地处理单细胞RNA测序数据中的噪声和批次效应。
在单细胞RNA测序数据分析中,批次效应是一个常见的问题,它可能导致不同批次之间的细胞分布存在差异,影响细胞类型的鉴定和分析。scvi提供了一种基于深度生成模型的批次效应校正算法,称为SCVI。 SCVI算法基于变分自编码器(VAE)和高斯混合模型(GMM),通过对单细胞RNA测序数据进行联合建模,学习到每个细胞的表达特征和批次效应之间的关系,从而将批次效应校正到细胞表达矩阵中。具体来说,SCVI算法的流程如下:
对单细胞RNA测序数据进行预处理,包括基因表达量的对数变换、基因表达量的归一化和批次信息的记录。
使用SCVI模型对单细胞RNA测序数据进行联合建模,将每个细胞的表达特征和批次效应之间的关系建模成一个高斯混合模型。
通过变分推断算法,从模型中学习到每个细胞的表达特征和批次效应之间的关系,从而将批次效应校正到细胞表达矩阵中。
校正后的细胞表达矩阵可以用于后续的数据分析,如聚类、细胞类型注释、差异表达分析等。 需要注意的是,SCVI算法是一种非常强大的批次效应校正方法,但它也有一些限制。例如,当批次效应非常强烈或存在非线性关系时,SCVI可能无法完全校正批次效应。此外,SCVI的计算复杂度相对较高,需要消耗大量的计算资源和时间。因此,在使用SCVI进行批次效应校正时,需要谨慎评估其适用性和计算成本。
这个流程我用自己的电脑(只有集成显卡没有GPU)跑到model.train()程序就崩了,试了好几个次均不行,就暂时放下。
如果你需要使用深度学习库和框架来处理大规模的计算任务,建议使用专门的显卡(例如 NVIDIA 的 GeForce 或 Quadro 系列显卡),或者使用云计算服务来获得更高的计算能力和更大的显存。云计算服务如google colab,亲测好用。
!pip install scikit-misc
import scvi
import scanpy as sc
from matplotlib.pyplot import rc_context
sc.set_figure_params(dpi=100)
#where your adata comes from doesn't matter, you just need adata
#these are 10x output h5 files
data1 = sc.read_10x_h5('lung1.h5')
data2 = sc.read_10x_h5('lung2.h5')
data3 = sc.read_10x_h5('lung3.h5')
data1.var_names_make_unique()
data2.var_names_make_unique()
data3.var_names_make_unique()
#skip if you have only 1 sample
adata = data1.concatenate(data2, data3, batch_key = "Sample")
#pp
sc.pp.filter_cells(ad
参考阅读
发表评论