使用scDiffusion扩散模型能生成高质量单细胞数据吗?

生活不止眼前的苟且,还有学不完的数据分析。
基本介绍
单细胞 RNA 测序 (scRNA-seq) 数据对于研究单细胞水平的生命规律至关重要。然而,获取足够多的高质量 scRNA-seq 数据仍然具有挑战性。为了缓解数据有限的问题,已经提出了生成模型来计算生成合成的 scRNA-seq 数据。今天分享scDiffusion扩散模型,使用该模型生成单细胞数据,这是一种将扩散模型和基础模型相结合的生成模型,用于在受控条件下生成高质量的 scRNA-seq 数据。该软件作者设计了多个分类器来同时指导扩散过程,使 scDiffusion 能够在多种条件组合下生成数据。还提出了一种称为梯度插值的新控制策略。该策略允许模型从给定的细胞状态生成细胞发育的连续轨迹。实验表明,scDiffusion 可以生成与真实 scRNA-seq 数据非常相似的单细胞基因表达数据。此外,scDiffusion 可以有条件地生成特定细胞类型(包括稀有细胞类型)的数据。scDiffusion模型这里我们提出了 scDiffusion,一种将 LDM 与基础模型相结合的计算机模拟scRNA-seq 数据生成模型,用于生成具有给定条件的单细胞基因表达数据。scDiffusion 包含三部分:自动编码器、去噪网络和条件控制器。使用预训练模型 SCimilarity作为自动编码器来纠正原始分布并降低 scRNA-seq 数据的维数,从而使数据适合扩散建模。基于跳跃连接的多层感知器(MLP)重新设计了去噪网络,以学习逆扩散过程。条件控制器是一个细胞类型分类器,使 scDiffusion 能够根据不同的需求生成特定于特定细胞或器官类型的数据。
在这里插入图片描述
(1)自动编码器LDM 的一个重要前提是拥有合适的自动编码器来连接潜在空间和原始空间中的数据。为了满足这个前提,使用预先训练的基础模型 SCimilarity 作为自动编码器,对每个单细胞的基因表达数据进行编码嵌入到潜在空间中。
在这里插入图片描述
SCimilarity是一个编码器-解码器风格的网络,它对 399 项已发表的 scRNA-seq 研究中收集的 2270 万个细胞语料库进行训练,可用于从细胞表达谱中提取统一的表示。编码器的输入是一个基因表达谱,该基因表达谱由 1e4 总计数标准化,然后取对数,输出是一个 128D 潜在空间嵌入,就像在预训练模型中设置的那样。解码器随后接受潜在空间嵌入并生成相应的表达谱年代新的作为输出。利用基础模型强大的表示和泛化能力,我们可以从细胞表达中提取完整的信息到潜在表示中,并准确地重建原始基因表达。(a) scDiffusion 生成的 Tabular Muris 数据和真实 Tabular Muris 数据的UMAP。(b) scDiffusion 生成的人类肺 PF 数据和真实人类肺 PF 数据的UMAP。© scDiffusion 生成的 PBMC68k 数据和真实 PBMC68k 数据的UMAP。

(2)去噪网络从编码器获得嵌入后,对每个嵌入应用扩散过程以获得噪声数据。在这些噪声嵌入上训练去噪网络以学习逆过程。经典的去噪网络模型(如卷积神经网络)不适用于基因表达,因为 scRNA-seq 数据的基因表达谱是一个长、稀疏且无序的向量。因此,开发了一种新的架构作为主干,具有完全连接的层和跳跃连接结构。跳跃连接结构有助于保持不同层次特征的特征并减少信息丢失。

(3)条件控制器与梯度插值采用分类器引导的方法进行条件生成。这种方法不干扰去噪网络模型的训练。而是先使用细胞类型等条件标签单独训练分类器,然后提供梯度来指导细胞生成。用于引导的分类器非常灵活。理论上,所有能够生成梯度的基于深度学习的细胞分类器都可以用来指导条件生成过程,例如 scANVI、MARS和 scFoundation。(4)评估指标为了比较生成细胞和真实细胞之间的相似性,我们用各种指标评估了生成的数据。统计指标包括斯皮尔曼相关系数 (SCC)、最大平均差异 (MMD)、局部逆辛普森指数 (LISI)和分位数-分位数图 (QQ 图)。我们对生成细胞和真实细胞的基因表达数据进行对数标准化,并计算它们之间的 SCC。使用 Python 包 scib在数据集成的 KNN 图上计算 LISI 分数。QQ 图是使用给定细胞类型的特定基因的真实和生成的表达数据绘制的。非统计指标包括均匀流形近似和投影 (UMAP) 可视化(、标记基因表达、CellTypist 分类、随机森林评估和 KNN 评估。UMAP 图用于在 2D 平面上可视化生成的和真实的表达数据,以提供对生成的数据的主观判断。CellTypist 用于判断条件生成的数据是否可以归类到正确的类型。随机森林评估与 scGAN 的想法相同,它使用具有 1000 棵树和 5 个最大深度的随机森林模型来区分真实细胞和生成细胞,并且这两个细胞越相似,随机森林的受试者工作特征 (ROC) 曲线下面积 (AUC) 指标越接近 0.5。KNN 评估指标与随机森林指标相同,只是分类器模型切换为 KNN 模型。

代码实现
在这里插入图片描述

####Python环境
pytorch                   1.13.0  
numpy                     1.23.4  
anndata                   0.8.0  
scanpy                    1.9.1  
scikit-learn              1.2.2  
blobfile                  2.0.0  
pandas                    1.5.1  
celltypist                1.3.0  
imbalanced-learn          0.11.0  
mpi4py                    3.1.4  
####第一步,训练自动编码器
python VAE_train.py --data_dir '/data1/lep/Workspace/guided-diffusion/data/tabula_muris/all.h5ad' --num_genes 18996 --save_dir '../output/checkpoint/AE/my_VAE' --max_steps 200000
####第二步,训练扩散模型主干网络
python cell_train.py --data_dir '/data1/lep/Workspace/guided-diffusion/data/tabula_muris/all.h5ad' --vae_path 'output/checkpoint/AE/my_VAE/model_seed=0_step=150000.pt' --model_name 'my_diffusion' --save_dir 'output/checkpoint/backbone' --lr_anneal_steps 800000
####第三步,训练分类器
python classifier_train.py --data_dir '/data1/lep/Workspace/guided-diffusion/data/tabula_muris/all.h5ad' --model_path "output/checkpoint/classifier/my_classifier" --iterations 400000 --vae_path 'output/checkpoint/AE/my_VAE/model_seed=0_step=150000.pt' --num_class=12
####细胞生成,无条件生成
python cell_sample.py --model_path 'output/checkpoint/backbone/my_diffusion/model600000.pt' --sample_dir 'output/simulated_samples/muris' --num_samples 3000 --batch_size 1000
####细胞生成,有条件生成
python classifier_sample.py --model_path 'output/checkpoint/backbone/my_diffusion/model600000.pt' --classifier_path 'output/checkpoint/classifier/my_classifier/model200000.pt' --sample_dir 'output/simulated_samples/muris' --num_samples 3000 --batch_size 1000           

欢迎大家留言讨论,如果对结果或者方法实现有疑问的可以联系管理员进行解决:kriswcyYQ。欢迎关注我的公众号:质绘元。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值