SuperAPI AI 工具集

arboreto

数据与分析

查看项目

更新于 10-21 16:20

技能介绍

用途

Arboreto 是一个 Python 库,用于从基因表达数据推断基因调控网络(GRN)。其核心目标是:根据观测样本(细胞、样本、条件)的表达模式,识别哪些转录因子(TF)调控哪些靶基因。它通过 Dask 并行化基于树的集成回归算法(GRNBoost2、GENIE3),可在本地多核或远程集群上运行。

上游信息:PyPI 0.1.6(2021-02-09,最新版)。文档:arboreto.readthedocs.io。主要下游消费者:pySCENIC。

主要能力

基础 GRN 推断

支持标准 GRN 推断流程,包括输入数据准备(Pandas DataFrame 或 NumPy 数组)、使用 GRNBoost2 或 GENIE3 运行推断、按转录因子过滤、输出格式与解读。

算法选择

Arboreto 提供两种算法:

  • GRNBoost2(推荐):基于快速梯度提升的推断,针对大型数据集(1 万+ 观测)优化,是大多数分析的默认选择。
  • GENIE3:基于随机森林的推断,原始多元回归方法,用于对比或验证。

分布式计算

可将推断从本地多核扩展到集群环境:

  • 本地(默认):自动使用所有可用核心。
  • 自定义本地客户端:通过 distributed 的 LocalCluster 和 Client 控制资源。
  • 集群计算:连接到远程 Dask 调度器。

使用方式

安装

uv pip install arboreto

Conda(Bioconda):

conda install -c bioconda arboreto

依赖(来自上游 requirements.txt):dask[complete]、distributed、numpy、pandas、scikit-learn、scipy。

输入格式:pandas DataFrame、稠密 numpy.ndarray 或稀疏 scipy.sparse.csc_matrix(行=观测,列=基因)。对于数组/矩阵输入,需显式传入 gene_names。

基础推断示例

import pandas as pd from arboreto.algo import grnboost2

if name == 'main': expression_matrix = pd.read_csv('expression_data.tsv', sep='\t') network = grnboost2(expression_data=expression_matrix) network.to_csv('network.tsv', sep='\t', index=False, header=False)

关键:始终使用 if name == 'main': 保护,因为 Dask 会生成新进程。

算法对比示例

from arboreto.algo import grnboost2, genie3

network_grnboost = grnboost2(expression_data=matrix) network_genie3 = genie3(expression_data=matrix)

分布式计算示例

自定义本地客户端:

from distributed import LocalCluster, Client

local_cluster = LocalCluster(n_workers=10, memory_limit='8GB') client = Client(local_cluster) network = grnboost2(expression_data=matrix, client_or_address=client) client.close() local_cluster.close()

集群计算:

from distributed import Client

client = Client('tcp://scheduler:8786') network = grnboost2(expression_data=matrix, client_or_address=client)

输出解读

Arboreto 返回包含调控关系的 DataFrame:

  • TF:转录因子(调控者)
  • target:靶基因
  • importance:调控重要性分数(越高越强)

过滤策略:推断时使用 limit=N(全局返回前 N 条关系);事后重要性阈值(如 > 0.5);通过 groupby('target') 取每个靶基因的前几条关系;统计显著性检验(置换检验、外部工具)。

与 pySCENIC 集成

Arboreto 为 pySCENIC 的 GRN 推断步骤提供支持。pySCENIC 0.11+ 将稀疏表达矩阵传给 grnboost2 / genie3;pySCENIC 0.12+ 默认使用 arboreto_with_multiprocessing.py(无 Dask)以保持兼容——当需要 Dask 扩展时使用独立 arboreto。

将 AnnData 直接转换为 DataFrame:

expression_df = adata.to_df() # cells x genes

可复现性

始终设置种子以获得可复现结果:

network = grnboost2(expression_data=matrix, seed=777)

可运行多个种子进行稳健性分析,并对多次运行的 TF-target 对取平均重要性作为共识。

适用场景

  • 单细胞 RNA-seq 分析:从细胞 x 基因矩阵推断细胞类型特异性调控网络,并过滤高置信度关系。
  • Bulk RNA-seq 结合 TF 过滤:使用 load_tf_names 加载转录因子列表,限制推断范围。
  • 多条件比较分析:对不同条件分别推断网络。

限制与注意事项

  • 内存错误:通过过滤低方差基因缩小数据集,或使用分布式计算。
  • 性能缓慢:使用 GRNBoost2 而非 GENIE3,启用分布式客户端,过滤 TF 列表。
  • Dask 错误:确保脚本中存在 if name == 'main': 保护(在 Windows/macOS 的 spawn 多进程下必需)。
  • 结果为空:检查数据格式(基因作为列),验证 TF 名称与表达矩阵列名匹配。
  • 稀疏数据:使用 scipy.sparse.csc_matrix 并传入匹配的 gene_names;自 arboreto 0.1.6 / pySCENIC 0.11 起支持。
  • 版本特定细节可能已过时,请对照已安装版本的官方文档确认。
  • 不得编造结果、参数、标识符、引用或统计量;不得超出统计支持范围解读生物学意义,需报告多重检验校正。
  • 涉及费用、共享 GPU/云配额、个人或患者数据、不可撤销操作时,须先询问。