mcpField
A
arboreto

arboreto

github.com/jackspace数据与数据库1635 次安装12 周前更新
代码仓库

关于 arboreto

arboreto 是用于从基因表达数据推断基因调控网络的 Python 库,提供 GRNBoost2 和 GENIE3 算法,并支持从本地多核扩展到 Dask 集群计算。

主要功能

  1. 01使用 GRNBoost2 和 GENIE3 推断
  2. 02按转录因子筛选
  3. 03本地与集群计算
  4. 04输出调控链接重要性分数
  5. 05通过随机种子复现结果

适用场景

  1. 01从单细胞 RNA-seq 推断网络
  2. 02比较不同条件下的网络
  3. 03筛选转录因子分析 bulk RNA-seq

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jackspace/claudeskillz --skill arboreto

安装后在 Claude Code 中输入/arboreto确认已加载。

附带文件SKILL.json

详细介绍

Arboreto

概述

Arboreto 是一个计算库,可使用并行化算法从基因表达数据推断基因调控网络(GRN),并能从单机扩展到多节点集群。

核心能力:根据多个观测对象(细胞、样本、条件)中的表达模式,识别哪些转录因子(TF)调控哪些靶基因。

快速入门

安装 arboreto:

pip install arboreto

基本 GRN 推断:

import pandas as pd
from arboreto.algo import grnboost2

if __name__ == '__main__':
    # Load expression data (genes as columns)
    expression_matrix = pd.read_csv('expression_data.tsv', sep='\t')

    # Infer regulatory network
    network = grnboost2(expression_data=expression_matrix)

    # Save results (TF, target, importance)
    network.to_csv('network.tsv', sep='\t', index=False, header=False)

重要:务必使用 if __name__ == '__main__': 守卫,因为 Dask 会生成新进程。

核心能力

1. 基本 GRN 推断

适用于标准 GRN 推断工作流,包括:

  • 准备输入数据(Pandas DataFrame 或 NumPy 数组)
  • 使用 GRNBoost2 或 GENIE3 运行推断
  • 按转录因子筛选
  • 输出格式及结果解读

参见:references/basic_inference.md

使用可直接运行的脚本:scripts/basic_grn_inference.py,执行标准推断任务:

python scripts/basic_grn_inference.py expression_data.tsv output_network.tsv --tf-file tfs.txt --seed 777
2. 算法选择

Arboreto 提供两种算法:

GRNBoost2(推荐):

  • 基于梯度提升的快速推断
  • 针对大型数据集(1 万个以上观测对象)进行了优化
  • 大多数分析的默认选择

GENIE3:

  • 基于随机森林的推断
  • 原始的多元回归方法
  • 用于比较或验证

快速比较:

from arboreto.algo import grnboost2, genie3

# Fast, recommended
network_grnboost = grnboost2(expression_data=matrix)

# Classic algorithm
network_genie3 = genie3(expression_data=matrix)

算法详细比较、参数和选择指南:references/algorithms.md

3. 分布式计算

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

本地(默认)——自动使用所有可用核心:

network = grnboost2(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()

集群计算——连接远程 Dask 调度器:

from distributed import Client

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

集群设置、性能优化和大规模工作流:references/distributed_computing.md

安装

推荐(Conda):

conda install -c bioconda arboreto

其他方式(pip):

pip install arboreto

创建隔离环境:

conda create --name arboreto-env
conda activate arboreto-env
conda install -c bioconda arboreto

依赖项:scipy、scikit-learn、numpy、pandas、dask、distributed

常见用例

单细胞 RNA-seq 分析
import pandas as pd
from arboreto.algo import grnboost2

if __name__ == '__main__':
    # Load single-cell expression matrix (cells x genes)
    sc_data = pd.read_csv('scrna_counts.tsv', sep='\t')

    # Infer cell-type-specific regulatory network
    network = grnboost2(expression_data=sc_data, seed=42)

    # Filter high-confidence links
    high_confidence = network[network['importance'] > 0.5]
    high_confidence.to_csv('grn_high_confidence.tsv', sep='\t', index=False)
使用 TF 筛选的 Bulk RNA-seq
from arboreto.utils import load_tf_names
from arboreto.algo import grnboost2

if __name__ == '__main__':
    # Load data
    expression_data = pd.read_csv('rnaseq_tpm.tsv', sep='\t')
    tf_names = load_tf_names('human_tfs.txt')

    # Infer with TF restriction
    network = grnboost2(
        expression_data=expression_data,
        tf_names=tf_names,
        seed=123
    )

    network.to_csv('tf_target_network.tsv', sep='\t', index=False)
比较分析(多个条件)
from arboreto.algo import grnboost2

if __name__ == '__main__':
    # Infer networks for different conditions
    conditions = ['control', 'treatment_24h', 'treatment_48h']

    for condition in conditions:
        data = pd.read_csv(f'{condition}_expression.tsv', sep='\t')
        network = grnboost2(expression_data=data, seed=42)
        network.to_csv(f'{condition}_network.tsv', sep='\t', index=False)

输出解读

Arboreto 返回包含调控连接的 DataFrame:

列描述
TF转录因子(调控因子)
target靶基因
importance调控重要性评分(越高表示调控越强)

筛选策略:

  • 每个靶基因选取排名前 N 的连接
  • 重要性阈值(例如,> 0.5)
  • 统计显著性检验(置换检验)

与 pySCENIC 集成

Arboreto 是用于单细胞调控网络分析的 SCENIC 流程的核心组件:

# Step 1: Use arboreto for GRN inference
from arboreto.algo import grnboost2
network = grnboost2(expression_data=sc_data, tf_names=tf_list)

# Step 2: Use pySCENIC for regulon identification and activity scoring
# (See pySCENIC documentation for downstream analysis)

可复现性

务必设置随机种子,以获得可复现的结果:

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

运行多个随机种子,以进行稳健性分析:

from distributed import LocalCluster, Client

if __name__ == '__main__':
    client = Client(LocalCluster())

    seeds = [42, 123, 777]
    networks = []

    for seed in seeds:
        net = grnboost2(expression_data=matrix, client_or_address=client, seed=seed)
        networks.append(net)

    # Combine networks and filter consensus links
    consensus = analyze_consensus(networks)

故障排除

内存错误:筛除低方差基因以缩小数据集,或使用分布式计算

运行缓慢:使用 GRNBoost2 替代 GENIE3,启用分布式客户端,筛选 TF 列表

Dask 错误:确保脚本中包含 if __name__ == '__main__': 守卫

结果为空:检查数据格式(基因应为列),确认 TF 名称与基因名称匹配

评论

支持 Markdown