scVI安装与使用全攻略:从环境配置到实战避坑

安装scVI及使用教程 首先 参考教程 https://docs.scvi-tools.org/en/0.6.3/tutorials/basic_tutorial.html 其中输入 首先需要安装pytorch pip install torch==1.10.2 pip install scvi[notebooks] 即可,然后下载scVI自带数据需要注意 例如 import sys show_plot = True test_mode = False save_path = "data/" if not test_mode 阅读详情

1. 环境准备:选对版本,事半功倍

如果你刚接触单细胞数据分析,听到scVI这个名字可能会有点懵。简单来说,scVI(single-cell Variational Inference)是一个基于深度学习的强大工具,它能帮你从海量的单细胞RNA测序数据里,把那些真正有意义的生物信号“挖”出来,比如识别不同的细胞类型、整合多个批次的数据、去除技术噪音等等。想象一下,你手头有来自不同实验室、不同时间点的好几批数据,它们混在一起像一团乱麻,scVI就是那个能帮你把它们理得清清楚楚的“智能梳子”。

不过,这把“梳子”用起来的第一步——安装,就足以让很多新手朋友打退堂鼓。我刚开始用的时候,也在这上面栽了不少跟头。最让人头疼的就是版本问题。scVI这个项目,或者说这个生态,其实有点“分裂”。你可能会遇到两个主要的名字:scVI 和 scvi-tools。简单理解,早期的“scVI”更像是一个专注于特定分析(比如批次校正)的独立工具包。而后来发展出的“scvi-tools”是一个更庞大、更全面的工具箱,它把scVI、scANVI等多个模型都整合了进来,成为了一个统一的框架。所以,你现在去官方文档,会发现他们主推的是 scvi-tools。

这就引出了第一个大坑:你到底该安装哪一个? 根据我的经验,除非你明确要复现非常古老的论文代码,否则我强烈建议你直接从 scvi-tools 开始。它的功能更全,社区支持也更好。但是,这里又有一个版本选择的玄学。scvi-tools更新很快,新版本虽然功能多,但有时会引入一些不兼容的改动,或者依赖库的版本要求非常苛刻,导致安装失败。我个人的建议是,不要盲目追求最新版。对于大多数稳定分析,选择一个近一两年内、文档教程丰富的版本会更省心,比如 0.17.x 或 0.18.x 系列。

那么,具体怎么开始呢?我强烈推荐使用 Conda 来管理你的Python环境。这就像给你的每个项目建立一个独立的“工作室”,在这个工作室里,所有的工具(Python版本、各种库)都是为你当前的项目量身定制的,不会和别的项目打架。下面是我最常用、也最稳的一套创建环境的命令:

# 创建一个名为 scvi_env 的新环境,并指定 Python 3.9
conda create -n scvi_env python=3.9 -y
# 激活这个环境
conda activate scvi_env

为什么是Python 3.9?这是一个在稳定性和库支持上比较平衡的版本。太老的版本(如3.6)可能不支持新版的scvi-tools,而太新的版本(如3.11+)有时会遇到一些底层科学计算库的兼容性问题。选3.9,能避开很多不必要的麻烦。

环境建好了,接下来就是安装核心的scvi-tools。官方提供了几种安装选项,我实测下来,安装带教程依赖的版本最方便,因为它会把一些常用的可视化、笔记本工具也一并装上:

pip install scvi-tools[tutorials]

运行这条命令后,pip会自动处理依赖,包括一个匹配的PyTorch版本。这里你什么都不用管,交给它就好,这是最省事的方法。如果你想对PyTorch的版本有更精确的控制(比如需要匹配特定的CUDA版本以使用GPU),也可以先安装PyTorch,再安装scvi-tools。但作为新手,我建议先按默认的来,把流程跑通再说。

最后,为了让这个环境能在Jupyter Notebook里使用,我们还需要安装一个内核:

pip install ipykernel
python -m ipykernel install --name scvi_env --user

这样,你打开Jupyter Notebook后,就能在“Kernel” -> “Change kernel”菜单里找到并选择 scvi_env 这个环境了,确保你的代码运行在正确的“工作室”里。至此,一个干净的scVI分析环境就准备就绪了。记住,好的开始是成功的一半,花点时间把环境搭对,后面能省下无数排查错误的时间。

2. 实战安装与依赖避坑指南

环境框架搭好了,但安装过程 rarely 一帆风顺。上面那条 pip install scvi-tools[tutorials] 命令执行时,背后其实在进行一场复杂的“交响乐”编排,任何一个乐器(依赖包)版本不对,都可能演砸。我踩过最多的坑,都集中在依赖冲突上。

最常见的一个报错是关于 numpy、pandas 或 scipy 这些基础科学计算库的版本不兼容。scvi-tools 对它们有比较严格的要求,而你的系统里可能已经装了其他版本。这就是为什么必须用Conda环境隔离的原因。如果即使在独立环境里还遇到这类问题,可以尝试在安装scvi-tools之前,先手动安装一个兼容的版本组合。比如,对于 scvi-tools 0.17+,我常用这个组合作为起点:

conda activate scvi_env
pip install numpy==1.23.5 pandas==1.5.3 scipy==1.10.1
pip install scvi-tools[tutorials]

另一个高频雷区是 h5py。这个库是用来读写HDF5格式文件的(单细胞数据常用格式.h5ad就是基于它)。很多教程里加载数据失败,报一些关于“object header message is too large”之类的诡异错误,十有八九是h5py版本太高或太低导致的。我印象特别深,有一次加载一个公共数据集,怎么都读不进来,折腾了半天,最后就是靠锁定h5py版本解决的:

pip install h5py==2.10.0

如果你在后续的数据加载步骤中遇到问题,不妨先试试回退到这个经典的2.10.0版本。这就像一把万能钥匙,解决了我很多次数据读取的麻烦。

接下来重点说说 PyTorch。scVI的核心是一个深度学习模型,PyTorch就是它的引擎。安装时最大的选择点在于:用CPU还是GPU?如果你有一张还算不错的NVIDIA显卡,并且安装了CUDA,那么使用GPU加速能让模型训练速度提升几倍甚至几十倍。pip install scvi-tools[tutorials] 默认会安装一个带CUDA支持的PyTorch(如果你的平台检测到相关库)。但有时这个自动选择不一定准。

怎么判断自己装上了GPU版本的PyTorch呢?可以在安装后,在Python里快速验证一下:

import torch
print(torch.__version__)  # 查看版本
print(torch.cuda.is_available())  # 如果输出True,恭喜,GPU可用!

如果第二行输出 False,但你的电脑确实有NVIDIA显卡,那可能是CUDA驱动或工具链没装好。这时,更稳妥的做法是去 PyTorch官网 根据你的CUDA版本,获取对应的安装命令。例如,对于CUDA 11.8,你可以这样安装:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

然后再安装scvi-tools。对于没有GPU或者不想折腾的同学,纯CPU运行也是完全可行的。训练小规模数据时速度尚可接受。你可以通过安装CPU版本的PyTorch来确保环境纯净:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu

最后,别忘了 scanpy。它是单细胞分析领域另一个不可或缺的Python工具包,和scvi-tools配合非常紧密,主要用于数据预处理和结果可视化。scvi-tools的安装通常会附带一个兼容的scanpy版本。但要注意,scanpy不同版本之间,其写入的.h5ad文件格式可能有细微差别。我就遇到过用新版scvi-tools(内嵌scanpy 1.9+)处理并保存的数据,无法在另一个装有scanpy 1.7的老环境里读取的情况。如果你的工作流需要在多个不同版本的环境间传递数据,这一点需要留意。通常,保持整个分析流程在同一个环境内完成,是避免这类问题的最佳实践。

3. 数据加载:从云端到本地的破局之法

环境装好了,摩拳擦掌准备跑第一个教程,结果第一步“加载示例数据”就卡住了——这可能是新手遇到的第二大挫折。官方教程为了简洁,通常会写一行类似 dataset = CortexDataset(save_path='./data') 的代码,期望自动从网上下载数据。但在实际网络环境下,由于众所周知的连接问题,这个下载步骤非常容易失败,要么速度极慢,要么直接超时。

我第一次跑的时候,对着不断报错的连接超时信息干瞪眼,感觉还没入门就要放弃了。后来摸索出了几个实用的解决办法。首选方案是“手动下载+本地加载”。当代码执行到下载步骤时,它会尝试访问一个具体的URL来获取数据文件(通常是.loom或.h5ad格式)。这个URL地址有时会在错误信息中显示出来。你可以仔细阅读报错信息,找到那个链接。更直接的方法是去scvi-tools的源代码里找。以 CortexDataset 为例,你可以在GitHub仓库或本地安装的包目录里,找到它的定义,里面会有数据文件的原始地址。

找到链接后,用浏览器、下载工具(如wget或curl)把它下载到你的本地,比如放在项目目录下的 data/ 文件夹里。然后,关键的一步来了:你需要告诉scVI去加载这个本地文件,而不是尝试下载。对于自带的数据集类,查看源码你会发现它们通常有一个 filename 或 url 参数。但更通用的方法是,直接使用 scvi.data.read_loom() 或 scanpy.read_h5ad() 这样的函数来读取你已经下载好的文件,然后再转换成scVI需要的格式。例如:

import scanpy as sc
# 手动下载后,读取本地文件
adata = sc.read_loom('data/your_downloaded_file.loom')
# 然后进行后续的scVI数据设置...

对于教程中常用的示例数据,还有一个更巧妙的办法:利用预下载的镜像资源。一些国内的生物信息学社区或镜像站,可能会缓存常用的单细胞数据集。你可以搜索一下,看看能否找到所需数据的国内下载源。下载后,同样采用上述本地加载的方式。

数据成功加载到内存后,还不能直接扔给scVI模型。我们需要进行一步关键的设置:setup_anndata。这个函数的作用是告诉scVI,你的数据矩阵(adata.X)在哪里,你的批次信息(batch_key)存储在 adata.obs 的哪一列,以及其他任何模型需要知道的协变量。这一步千万不能错,否则模型训练会出大问题。一个典型的设置如下:

import scvi
# 假设你的批次信息列名为 'batch'
scvi.data.setup_anndata(adata, layer='counts', batch_key='batch')

这里有几个参数需要注意:

  • layer='counts':这指定了模型使用哪个数据层。单细胞数据通常会把原始计数(raw counts)和标准化后的数据分开存放。scVI模型必须使用原始计数,因为它的概率模型是基于计数分布的。如果你的原始计数存在 adata.layers['counts'] 里,就像上面这样指定。如果原始计数就在 adata.X 里,则不需要 layer 参数。
  • batch_key='batch':这是你必须提供的,告诉模型哪些细胞属于哪个实验批次,这是它进行批次校正的依据。

执行完这行代码后,你可以通过 print(adata) 来查看,会发现 adata 对象多了一个 uns 字段,里面记录了scVI的配置信息。这表示数据已经准备妥当,可以喂给模型了。走通数据加载这一步,你就已经突破了scVI实践中最常见的非技术性壁垒,真正进入了数据分析的舞台。

4. 模型训练与关键参数解析

数据准备停当,终于来到了核心环节:创建和训练scVI模型。这一步看似简单,几行代码就能启动,但里面的门道不少,参数怎么调,训练过程怎么看,直接关系到最终结果的好坏。

创建模型非常简单,一行代码足矣:

model = scvi.model.SCVI(adata)

这行代码基于我们之前用 setup_anndata 设置好的数据,初始化了一个scVI模型。它会自动根据数据维度(基因数、细胞数)来配置神经网络的结构。对于初学者,大部分默认参数就已经工作得很好了。但如果你想深入优化,有几个关键参数值得关注:

  • n_latent: 潜空间的维度,默认是10。你可以把它理解为模型学习到的“摘要”或“压缩表示”的维度。对于非常复杂的数据集(细胞类型非常多、异质性极大),适当增加这个值(比如到20或30)可能让模型捕捉到更细微的差异。但也不是越大越好,维度太高可能会引入噪音或导致过拟合。
  • gene_likelihood: 基因似然分布,默认是 "zinb"(零膨胀负二项分布),这是为单细胞计数数据量身定制的。除非你有特殊理由,否则不要改动它。
  • n_hidden: 神经网络隐藏层的神经元数量,默认是128。对于大型数据集(细胞数超过10万),可以考虑增加到256或512,增强模型表达能力。
  • n_layers: 神经网络的层数,默认是2。增加层数可以提升模型的复杂度,但也会增加训练时间和过拟合风险。

模型初始化后,就是训练了:

model.train()

这行默认设置会训练400个轮次(epoch),并使用一个固定的学习率。在训练过程中,你的屏幕上会打印出进度条和损失值(loss)。一定要学会看这个loss!一个健康的训练过程,loss应该随着训练轮次快速下降,然后逐渐趋于平稳。如果loss剧烈震荡、不下降、甚至变成NaN(非数字),那说明训练出了问题,可能是学习率太高、数据预处理有误,或者模型架构不适合你的数据。

train() 方法也有很多参数可以调整,最常用的是 max_epochs 和 learning_rate。如果你发现默认的400轮之后loss还在稳步下降,可以增加 max_epochs。如果训练不稳定(loss震荡),可以尝试调低 learning_rate(比如从默认的0.001调到0.0005)。更高级的用法是使用 plan_kwargs 来配置训练策略,比如设置学习率预热(warmup)或权重衰减(weight decay),这些对于训练大型或困难的数据集有帮助。

训练完成后,我们最关心的就是模型从数据中学到的“精华”——潜空间表示(latent representation)。这可以通过以下代码获取:

latent_representation = model.get_latent_representation()
adata.obsm["X_scVI"] = latent_representation

我们把得到的这个低维表示(比如10维)存放到 adata.obsm["X_scVI"] 中。这个 X_scVI 矩阵,行对应每个细胞,列对应潜空间的每个维度。它已经整合了批次效应,意味着不同批次的相同细胞类型,在这个空间里会聚集在一起。

接下来,我们就可以用这个“净化”过的表示来做下游分析了。最标准的流程是进行聚类和可视化:

import scanpy as sc
# 使用 scVI 的潜空间进行邻居图计算
sc.pp.neighbors(adata, use_rep="X_scVI", n_neighbors=15, n_pcs=None)
# 运行 Leiden 聚类算法(比 Louvain 更现代)
sc.tl.leiden(adata, resolution=0.5)
# 基于邻居图进行 UMAP 降维可视化
sc.tl.umap(adata)
# 绘制 UMAP 图,着色看批次和聚类结果
sc.pl.umap(adata, color=['batch', 'leiden'], frameon=False, wspace=0.4)

如果一切顺利,你得到的UMAP图上,不同颜色的点(代表不同批次)应该均匀地混合在一起,而不是按批次聚成几大块;而聚类结果(leiden)应该能清晰地划分出不同的细胞群。这就是scVI工作的直观证明——它把技术变异(批次)从生物变异(细胞类型)中分离了出来。第一次看到自己跑出来的清晰整合结果时,那种成就感是非常棒的。训练模型就像在教导一个学生,参数是你的教学方法,损失值是学生的反馈,而最终清晰的UMAP图,就是一份优秀的毕业答卷。

5. 版本差异与CPU/GPU运行配置

在scVI的使用过程中,版本差异是一个无法回避的现实,尤其是当你在网上搜索教程和解决方案时,可能会发现别人的代码和你的运行结果对不上。这很大程度上是因为scvi-tools在快速发展中,一些API(函数接口)发生了改变。了解这些变化,能让你少走很多弯路。

一个经典的例子是 强制使用CPU运行 的配置方式。在早期版本(例如0.8.x)中,如果你想在有GPU的机器上强制使用CPU(可能是因为GPU内存不够,或者只想快速测试一下),通常需要在创建模型时传入一个参数。然而,在较新的版本(如0.17.x及以后),这个方式变了。新版的scvi-tools更多地遵循PyTorch的风格,通过设置全局设备上下文来控制。下面是一个对比:

# 假设在 scvi-tools 0.8.x 时代的做法(可能已过时):
# vae = scvi.model.SCVI(adata, use_cuda=False)

# 在 scvi-tools 0.17.x 及以后版本的正确做法:
import torch
# 在导入scvi和创建模型之前,设置默认的Tensor设备为CPU
torch.set_default_tensor_type(torch.FloatTensor)
# 或者更精确地,如果你已经安装了GPU版本的PyTorch但想用CPU:
device = torch.device("cpu")
# 然后在模型训练时,通常不需要特别指定,因为数据会自动放在默认设备上。
# 但某些获取结果的函数可能需要指定设备:
# latent = model.get_latent_representation(adata, device=device)

更常见的做法是,直接让PyTorch的自动设备选择失效。实际上,在新版中,如果你没有可用的CUDA,PyTorch和scvi-tools会自动回退到CPU,无需额外设置。所以,强制CPU的需求已经不那么强烈了。

另一个重要的版本差异体现在 数据准备函数 上。老教程里你可能看到 scvi.data.setup_anndata 这个函数有许多复杂的参数,甚至需要手动传递一些张量。在新版中,这个函数的设计更加简洁和自动化,它主要依赖于 adata 对象中已经存储好的信息(比如我们在 adata.obs 中设置的批次列)。这意味着,按照新版教程的步骤,正确构建你的 adata 对象是重中之重。只要你用 scvi.data.setup_anndata(adata, batch_key='...') 正确设置了,模型就能自动找到它需要的一切。

此外,模型保存与加载 的API也可能有变。新版推荐使用 model.save() 和 scvi.model.SCVI.load() 方法,它们会保存完整的模型状态和相关的数据配置信息,确保加载后能无缝继续使用。而老版本可能有一些不同的序列化方法。

那么,如何应对这些版本差异呢?我的经验是:

  1. 明确你的版本:在开始任何教程前,先用 print(scvi.__version__) 确认自己使用的scvi-tools版本。
  2. 查阅对应版本的文档:这是最有效的方法。不要只看官网首页的默认教程。像原始资料里提到的,去 scvi-tools的GitHub页面,点击“Branch”或“Tags”,选择与你安装版本一致的标签(如 0.17.1),然后查看该版本下的文档。这样你看到的API说明才是准确的。
  3. 谨慎参考网络代码:对于搜索到的博客或论坛代码,先看其发布日期和声称的scVI版本。如果年代久远,就要警惕其可能已过时。
  4. 利用错误信息:如果报错说某个函数或参数找不到,第一时间去官方文档搜索该函数名,看它是否在新版中被改名、移除或有了新的替代方案。

处理版本问题就像是在不同版本的地图间切换,拿对了地图,路就顺了。花点时间确认版本和查阅对应文档,虽然前期稍微麻烦点,但能避免后期大量的调试和返工,绝对是值得的。

6. 进阶实战:数据整合与结果评估

当你成功运行了基础教程,得到了一个漂亮的、批次效应被移除的UMAP图后,你可能会想:这结果到底有多好?我能不能用它来做更复杂的分析,比如整合更多样化的数据集?这就是进阶实战要解决的问题。

首先,我们来谈谈 多批次数据整合。上面的例子假设你只有一个批次协变量。但现实中,数据可能来自不同实验室、不同测序平台、不同捐赠者等多个维度。scVI的强大之处在于它能同时处理多个协变量。在 setup_anndata 时,你可以通过 categorical_covariate_keys 参数传入一个列表,指定多个需要被校正的分类协变量列名。

# 假设 adata.obs 中有 'donor'(供体)和 'tech'(技术平台)两列
scvi.data.setup_anndata(adata,
                        layer='counts',
                        batch_key='batch',  # 主要的批次列
                        categorical_covariate_keys=['donor', 'tech'])

模型会在学习过程中,尝试将这些技术性协变量的效应从生物信号中解耦出来。这比只校正一个批次因子更具挑战性,但也更贴近真实世界的复杂情况。

模型训练好之后,我们如何客观地 评估整合效果 呢?不能光靠肉眼看UMAP图。有几个常用的量化指标:

  1. 批次混合分数:理想情况下,每个细胞群(聚类)内部,不同批次的细胞应该比例均匀。我们可以计算一些统计量,如“轮廓系数”(silhouette score,基于批次标签)的负值,或者专门的批次整合评分(如iLISI分数)。分数越好,表示批次混合越充分。
  2. 生物保守性:在移除技术变异的同时,不能把真正的生物差异也抹掉了。我们可以检查相同细胞类型(如果有已知标签)的细胞在潜空间中是否仍然聚集在一起。可以用基于细胞类型标签的聚类评估指标,如归一化互信息(NMI)或调整兰德指数(ARI)。

为了方便地计算这些指标,社区开发了像 scib-metrics 这样的工具包。你可以安装它来进行系统评估:

pip install scib-metrics

使用起来也不复杂。你需要提供整合前的数据(原始PCA空间)和整合后的数据(scVI潜空间),以及批次标签和细胞类型标签,然后调用相应的函数计算得分。这能给你一个比肉眼更可靠的性能判断。

除了经典的SCVI模型,scvi-tools工具箱里还有其他“武器”,适用于不同场景:

  • scANVI:这是SCVI的“半监督”升级版。如果你有一部分细胞有已知的标签(即使是部分细胞),scANVI可以利用这些标签信息,学习得更好,并能预测未知细胞的标签。这对于细胞类型注释任务非常有用。
  • totalVI:用于同时分析单细胞RNA和表面蛋白(CITE-seq)数据。
  • PeakVI:用于分析单细胞ATAC-seq(表观基因组)数据。

探索这些高级模型,就像是给你的scVI工具箱里添加了更专业的扳手和螺丝刀。例如,当你手头有一部分参考细胞标注时,尝试scANVI往往会得到比无监督的SCVI更清晰、生物学意义更明确的聚类结果。实战中,我经常先用SCVI做一个无监督的整合和初步聚类,然后利用聚类结果和已知标记基因,给一部分高置信度的细胞打上“伪标签”,再用scANVI进行半监督训练和最终注释,这套组合拳效果非常扎实。

最后,别忘了 结果的可复现性。在开始任何分析之前,设置一个随机种子是好习惯:

import scvi
scvi.settings.seed = 0

这能确保你的模型初始化、训练过程(在相同硬件和软件环境下)是确定的,下次跑能得到一模一样的结果。这对于科学研究和方法调试至关重要。从基础整合到多因子校正,从主观可视到客观评估,再到尝试半监督等高级模型,一步步深入,你会逐渐感受到scVI这个工具在解开单细胞数据复杂谜团时的强大与优雅。每一次成功的分析,都是对你数据处理能力和生物学洞察力的一次提升。

2025.04.15【实战指南】| scvi-tools环境搭建全攻略:从零配置到高效运行 本文提供了一份详尽的scvi-tools环境搭建实战指南。针对单细胞数据分析新手常遇的安装难题,文章深入剖析了环境依赖冲突的根源,并对比了Conda与新兴工具uv两种主流方案。从Python版本选择、虚拟环境创建、核心软件包安装,到GPU加速配置与常见报错排查,手把手指导用户从零配置一个稳定、高效且可复现的工作环境,确保后续分析流程顺畅。 阅读详情

相关推荐

Scanpy_3 多个样本的单细胞分析流程(scvi)

如果你需要使用深度学习库和框架来处理大规模的计算任务,建议使用专门的显卡(例如 NVIDIA 的 GeForce 或 Quadro 系列显卡),或者使用云计算服务来获得更高的计算能力和更大的显存。在单细胞RNA测序数据分析中,批次效应是一个常见的问题,它可能导致不同批次之间的细胞分布存在差异,影响细胞类型的鉴定和分析。该流程使用scvi方法整合:scvi采用了一种基于深度生成模型的算法来降维和批次效应校正,相比传统的PCA或t-SNE等降维方法,该算法可以更好地处理单细胞RNA测序数据中的噪声和批次效应。

weixin_43314378的博客 4155

单细胞scvi,cuda安装,cuda虐我千百遍

单细胞数据增强scvi,cuda安装与配置

qq_15348919的博客 1548

scanpy 单细胞分析API接口使用案例;scvi单细胞特征提取算法包

参考:https://zhuanlan.zhihu.com/p/537206999scanpy python包主要分四个模块:1)read 读写模块、2)pp Preprocessing 预处理模块3)tl Tools工具箱模块,包括降维聚类等算法3)pl Plotting画图模块。

weixin_42357472的博客 1173

单细胞数据分析工具scvi介绍

之前听师兄在组会上介绍了scvi,恰巧最近在用scvi做一些分析,感觉这个方法很精巧效果也不错,因此研究了一下原始论文,这里简要介绍一下这个单细胞数据分析工具的新星。 scvi是Nature Methods在2018年12月发表的一个单细胞RNA测序(scRNA-seq)数据的集成分析平台,预印版文章在2018年3月就已经在bioRxiv上线。scvi是一个快速的多功能方法,整合了来自机器学习、统计模型、概率图模型等领域的思想和模型,应用到了单细胞数据的多种下游分析上来,相比其他针对单一下游分析的方法来说

goodljq的博客 5718

scvi-tutorials:scvi-tools教程中使用的笔记本

指南 用于scvi教程中使用的笔记本的回购。 参见 Master分支是稳定的,dev是用于教程更新的。

scvi-tools:单细胞组学数据的深度概率分析

(单细胞变体推断工具)是在和基础上构建的用于单细胞组学数据概率模型的软件包。 单细胞组学模型的可用实现 scvi-tools包含几种模型的可伸缩实现,这些模型可促进许多组学中的大量任务,包括: 用于单细胞RNA数据分析的及其改进的差异表达 。 用于使用半标记示例对scRNA-seq数据进行细胞注释。 用于分析CITE-seq数据的 。 用于从scRNA-seq数据推断空间转录组学中的缺失基因。 用于评估scRNA-seq数据中零充气的基因特异性水平。 用于的可解释线性因子模型版本。 用于空间转录组学数据解卷积的。 peakVI用于分析ATAC-seq数据。 (目前支持scVI,scANVI和TotalVI),用于转移从一个单细胞图谱于查询数据集学习。 用于基于参考的scRNA-seq数据注释。 用于在scRNA-seq数据中进行双峰检测的 。 所有这些实现均具有与交互的高级

scvi安装scVI及使用教程 python2

我发现一个问题,就是最新的scvi-tools里面的scanpy是1.9.1,但是1.9.1写入的h5ad在scanpy1.7.2中读取不了,很奇怪,我暂时不管这个问题了,所以我在python3.6.10中装了scvi-tools的0.7.1,已经是很旧的版本了,下面记录一下怎么使用旧版本的教程。这里显示的是最新版的教程,有函数已经被弃掉了,就是说scvi-tools最新版的教程用scvi-tools 0.7.1是会报错的,这个两个不同的环境,就离谱为啥要弄成两个环境,感觉作者是有病。

生信小博士的博客 1527

QT | QT打包生成单个EXE文件

1.以release方式运行程序 2.在release文件夹中找到.exe文件 如果没有找到exe,可能是因为在项目中勾选了shadow build,你可以在构建目录中找到exe 3.将exe放在一个新建的文件夹中,因为待会儿会生成很多dll文件 4.点击电脑左下角搜索QT,打开Qt 5.8 for Desktop (MinGQW 5.3.0 32bit) 5.进入刚刚新建的文件夹,输入wi...

⊳ideal world⊲~ヽ(゚︺゚)Hi 1236

从单细胞到多批次分析:scVI不同版本环境配置全攻略(含GPU/CPU切换技巧)

本文提供了scVI工具从单细胞到多批次分析的完整环境配置指南。针对不同版本(如0.8.1与0.17+)的API差异,详细讲解了如何通过Conda创建隔离环境、解决依赖冲突,并重点介绍了GPU与CPU的灵活切换技巧,帮助用户构建稳定可复现的分析工作流,有效应对批次效应。

q9w8e7r6t5的博客 354

PLL锁相环基础知识(一)

本文介绍了锁相环(PLL)的核心组件及其工作原理,重点阐述了压控振荡器(VCO)的结构与调谐机制。VCO作为PLL的关键部分,通过变容二极管实现频率调谐,但易受温度、电压等因素影响稳定性。文章详细讲解了VCO的谐振电路原理、硅基集成方案,以及通过分频器和调制器实现的频率控制技术。特别分析了整数型和分数型N分频器的差异,指出高阶德尔塔-西格玛调制器可有效降低分数杂散。文章还探讨了预分频器的应用及其对频率分辨率的影响,揭示了PLL通过反馈环路实现频率锁定的基本原理。

weixin_49761275的博客 3028

《联邦学习实战》杨强 读书笔记十四——构建公平的大数据交易市场

当数据具有资产属性之后,数据便可以直接或者间接地为公司、为社会创造价值和收益,并且可以作为一种特殊的商品在市场中进行交易。 与传统的商品交易相比,数据资产交易的市场前景更广阔,但同时也面临着很多的挑战,主要包括: 数据的质量、价格如何定义 在合法合规的前提下,数据的交易如何确保不会泄露用户的隐私 如何构建合理的激励机制来鼓励更多的参与方加入数据交易市场中 大数据交易 数据交易的定义 数据交易是指一种对数据进行买卖的行为,大数据交易由三方共同参与,分别为数据提供方、大数据交易平台和数据需求方:

IEEE802_11的博客 3430

单细胞数据整合全攻略:从批次效应处理到Seurat/Harmony/scVI实战

单细胞转录组测序技术飞速发展,但多批次数据的整合仍是分析流程中的关键难点。批次效应源于实验操作、测序平台等非生物学因素,若不加校正,会导致聚类与差异分析结果失真。数据整合的核心在于消除技术差异、保留真实生物学信号。主流方案包括Seurat锚点整合、Harmony快速校正以及scVI深度生成模型,分别适用于不同规模与复杂度的场景。从数据质控、标准化到整合效果评估,再到完整R/Python代码实操,系统化掌握整合策略,能帮助研究者正确处理多批次单细胞数据,获得可靠的下游分析结论。

weixin_29051811的博客 158

游戏开发实战:如何用旋转矩阵实现2D角色平滑转向(附Unity代码)

本文深入探讨了在Unity游戏开发中,如何运用旋转矩阵原理实现2D角色的平滑转向。文章从核心理论出发,提供了计算目标旋转、实现平滑插值(Lerp与SmoothDamp)的完整C#代码,并解决了与动画系统、物理引擎协同的常见难题,帮助开发者提升游戏操作手感与视觉流畅度。

weixin_29057237的博客 287

单细胞测序数据整合全攻略:从批次效应到Seurat/Harmony实战

单细胞测序产生的表达矩阵中,样本间技术噪声与真实生物学差异常混叠,形成批次效应,直接影响细胞聚类和注释的可靠性。数据整合通过锚点匹配、低维嵌入校正或生成模型等手段,在保留细胞类型与状态差异的同时消除系统性偏移。随着多队列、多平台单细胞研究普及,整合已成为稀有细胞群发现、跨样本比较和跨物种分析的基础环节。Seurat锚点整合、Harmony、fastMNN等方法各有特点,本文结合实践场景盘点选型依据与操作细节,帮助研究者构建稳健的单细胞数据分析流程。

weixin_34288121的博客 400

(计算机组成原理)第二章数据的表示和运算-第二节:数字电路基础知识

本文介绍了计算机组成原理中的逻辑门电路、多路选择器和三态门。逻辑门电路包括基本逻辑运算(与、或、非)和复合逻辑运算(与非、或非、异或、同或),这些运算通过门电路实现,并满足分配律和结合律。多路选择器(MUX)用于从多个输入信号中选择一个输出,广泛应用于数据选择、资源共享和逻辑函数实现等场景。三态门则具有三种输出状态(高电平、低电平、高阻态),常用于总线控制和信号隔离。这些元件在数字电路设计和计算机系统中具有重要作用。

快乐江湖的博客 2472

Agentic RL: 大模型后训练 SFT、PPO和GRPO

本文介绍了从LLM训练到Agentic RL的发展过程。传统LLM训练包括预训练和后训练两个阶段,其中后训练通过监督微调、奖励建模和强化学习等技术优化模型表现。针对智能体在复杂任务中的不足,提出了Agentic RL新范式,将LLM嵌入强化学习框架,通过多步交互、工具使用和环境反馈来优化长期目标。相比传统单轮对话优化(PBRFT),Agentic RL具有状态包含历史上下文、行动类型多样、动态状态转移等特点,更适合解决需要多步推理和规划的任务。这种新方法为开发更强大的智能体系统提供了可能。

Cachel Wood的博客 698

单细胞RNA测序分析工具全攻略:从新手到专家的终极指南

单细胞RNA测序(scRNA-seq)已成为现代生物学研究的核心技术,能够揭示细胞异质性和复杂生物系统的奥秘。面对海量的分析工具和复杂的数据处理流程,新手和普通用户常常感到无所适从。本文将为您梳理**单细胞RNA测序分析工具**的完整生态,帮助您快速上手并掌握核心技能。 ## 为什么需要关注单细胞分析工具? 单细胞RNA测序技术的快速发展带来了数据分析的挑战。每个实验可能产生数千到数百万个细胞

gitblog_00001的博客 454

【OS】AUTOSAR OS Alarm实现原理

AUTOSAR OS Alarm实现原理

qq_36056498的博客 1022

InterviewGuide 简历篇:互联网校招简历为什么是“生死关“——从简历初筛机制到26版迭代实战

简历是求职者与互联网公司的第一次接触:在面试官见到你本人之前,它几乎是唯一能够替你做自我介绍的材料。本文以 InterviewGuide 仓库中阿秀的简历系列文档为核心,从"简历关"背后的算法初筛机制讲起,完整梳理一份合格的计算机校招简历应具备的模块与写法,并给出可验证的实战案例(从第 1 版到第 26 版的迭代过程、批量简历修改中暴露的常见问题),帮助普通背景的同学把简历真正打磨成"到得了面试官

gitblog_00513的博客 132

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的远距离停车位检测系统(深度学习代码+UI界面+训练数据集)

本文详细介绍了基于YOLOv5/YOLOv6/YOLOv7/YOLOv8深度学习模型的远距离停车位检测系统的完整实现方案。该系统能够准确识别200米范围内的停车位状态,为智能停车场管理系统、自动驾驶车辆提供关键的视觉感知能力。文章涵盖算法原理、数据集构建、模型训练、系统实现及优化策略,并提供完整的代码实现和UI界面设计。关键词:YOLO系列,深度学习,停车位检测,计算机视觉,智能交通系统pythonimport cv2import os"""创建数据存储目录""""""定时采集图像"""

YOLO 183

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

scVI与MultiVI

单细胞数据的变分推断

白景屹的博客 2465

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

python中使用scvi 去除批次效应 scvi整合批次效应 Integration with scVI 在python中scvi去除批次效应python4

python中使用scvi 去除批次效应 scvi整合批次效应 Integration with scVI 在python中scvi去除批次效应python4 使用注释之后的数据去除批次效应 更好的做轨迹推断 细胞分化 速率分析

生信小博士的博客 3502

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

scVi和scArches单细胞批次效应去除工具安装

scVi scArches 安装

hh5187的博客 1322

scvi 去除批次效应 降维 python 3

【代码】scvi 去除批次效应 降维 python 3。

生信小博士的博客 1005

python中运行scvi整合数据去除批次效应时 gpu可以加速为何GPU可以用于加速人工智能或者机器学习的计算速度(并行计算能力)

而一部分机器学习算法,比如遗传算法,神经网络等,也具有这种分布式及局部独立的特性(e.g.比如说一条神经网络中的链路跟另一条链路之间是同时进行计算,而且相互之间没有依赖的),这种情况下可以采用大量小核心同时运算的方式来加快运算速度。GPU的产生是为了解决图形渲染效率的问题,但随着技术进步,GPU越来越强大,尤其是shader出现之后(这个允许我们在GPU上编程),GPU能做的事越来越多,不再局限于图形领域,也就有人动手将其能力扩展到其他计算密集的领域,这就是GP(General Purpose)GPU。

生信小博士的博客 639

scVI latent space是什么

在Representative Learning中,Latent Space能够将更加复杂形式的原始数据转化为更简单的数据表示,而更有益于去做数据处理。假设我们的原始数据集是为 5 x 5 x 1 的图像。我们将Latent Space的维度是 3 x 1,就能够将一张图片压缩成一个3维数据点,而这个三维数据点就可以在三维空间去可视化表示。比如下面这个可以通过对Latent Space进行插值来生成不同的面部结构,并使用deconder将Latent Space表示重构为与原始输入具有相同维度的二维图像。

生信小博士的博客 1621
上一篇: 《ESP32》实战指南:Adafruit_GFX与u8g2双驱动SSD1306全解析
下一篇: AM调制技术:从信号生成到频域特性的深度解析
dapp9builder
博客等级 码龄1天 0粉丝 1648原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值