1 摘要
重建转移的进化历史对于理解其基本生物学原理具有深远的临床意义至关重要。全基因组测序数据使现代系统基因组学方法能够从前所未有的深度从嘈杂和不纯的散装肿瘤样本中准确地解剖亚克隆及其系统发育。然而,现有的方法并不能推断转移传播模式。在这里,我们开发了一种工具,称为树组学,重建转移的系统发育,并将亚克隆定位到它们的解剖位置。树组学推断胰腺癌、卵巢癌和前列腺癌的综合播种模式。此外,树组学正确地从测序伪影中消除了真正的播种模式的歧义;7%的变异被常规统计方法错误分类。这些人工产物可以通过在不同样本中产生虚幻的肿瘤异质性来扭曲系统发育。与现有方法相比,在广泛的样品纯度(15-95%)和测序深度(25-800X)范围内对模拟肿瘤系统发育进行基准测试证明了Treeomics的准确性。
2 软件安装
2.1 创建环境
conda create --name treeomics python=3.6
conda activate treeomics
2.2 下载
git clone https://github.com/reiterlab/treeomics.git
2.3 安装
cd /home/data/t030339/software/treeomics
python setup.py clean sdist bdist_wheel
pip install -e ./
2.4 依赖cplex
cd /home/data/t030339/miniconda3/envs/treeomics/cplex/python/
python setup.py install --prefix /home/data/t030339/miniconda3/envs/treeomics
vim ~/.bashrc
# 在文件末尾加上:
exportPATH=/home/data/t030339/miniconda3/envs/treeomics/cplex/bin/x86-64_linux/:$PATH
source ~/.bashrc
2.5 依赖包
conda install python=3.6 qt=5
conda install -c etetoolkit ete3
2.6 下载基因组cdna和gtf
pip install varcode
pyensembl install --release 75 76
如下载速度非常慢,可以使用wget直接下载
wget-c https://ftp.ensembl.org/pub/release-75/gtf/homo_sapiens/Homo_sapiens.GRCh37.75.gtf.gz
wget-c ftp://ftp.ensembl.org/pub/release-75/fasta/homo_sapiens/cdna/Homo_sapiens.GRCh37.75.cdna.all.fa.gz
下载完成之后将文件放在如下文件中:
mv Homo_sapiens.GRCh37.75.cdna.all.fa.gz /home/data/t030339/.cache/pyensembl/GRCh37/ensembl75/
mv Homo_sapiens.GRCh37.75.cdna.all.fa.gz /home/data/t030339/.cache/pyensembl/GRCh37/ensembl75/
2.7 测试
cd /home/data/t030339/software/treeomics
python treeomics -h
usage: treeomics [-h] [-m MODE]
[--csv_file CSV_FILE |-v VCF_FILE |-d DIRECTORY]
[-n [NORMAL [NORMAL ...]]] [--suffix SUFFIX]
[-x [EXCLUDE [EXCLUDE ...]]]
[--include [INCLUDE [INCLUDE ...]]]
[--purities [PURITIES [PURITIES ...]]] [-r MUT_READS]
[-s COVERAGE] [-o OUTPUT] [-e ERROR_RATE] [-z PROB_ZERO]
[-a MAX_ABSENT_VAF] [-c MIN_MEDIAN_COVERAGE]
[-f MIN_MEDIAN_VAF] [--min_vaf MIN_VAF]
[--min_var_reads MIN_VAR_READS] [--min_var_cov MIN_VAR_COV]
[-g REF_GENOME] [--wes_filtering]
[--mut_reads_normal_th MUT_READS_NORMAL_TH]
[--vaf_normal_th VAF_NORMAL_TH] [--driver_genes DRIVER_GENES]
[--common_vars_file COMMON_VARS_FILE]
[-p FALSE_POSITIVE_RATE] [-i FALSE_DISCOVERY_RATE]
[-y MIN_ABSENT_COVERAGE] [--verbose] [--plots |--no_plots]
[--tikztrees|--no_tikztrees][--benchmarking] [-b BOOT]
[--pool_size POOL_SIZE] [-t TIME_LIMIT] [--threads THREADS]
[-l MAX_NO_MPS] [-u |--no_subclone_detection]
Infers the evolution of cancer.
3 例子实操
3.1 例子 1
基于靶向测序数据重建胰腺癌患者Pam03的系统发育5例明显肝转移,3例明显肺转移,2例原发肿瘤。
treeomics-r input/Makohon2017/Pam03_1-10_mutant_reads.txt -s input/Makohon2017/Pam03_1-10_phredcoverage.txt -n Pam03N3 -e 0.005
3.2 例子 2
重建了Bashashati等(2013)病例5的高级别浆液性卵巢癌的系统发育。
treeomics-r input/Bashashati2013/Case5_mutant_reads.txt -s input/Bashashati2013/Case5_coverage.txt -e 0.01
3.3 例子 3
从给定的VCF文件重建具有6个转移的模拟癌症的系统发育(见input/example.vcf)。 关于VCF文件输入格式,Treeomics期望标准列:#CHROM、POS、ID、REF、ALT、QUAL、FILTER、INFO、format以及每个考虑的样本的附加列。
treeomics-v input/example.vcf
最小AD(等位基因深度)必须在FORMAT列中提供,然后在每个样品的相应列中提供实际观察到的参考和备用等位基因的数量)。 生成的输出可以在‘output/example_output ’中找到,相应的Treeomics报告位于 [output/example_output/example_6_e=0_01_c0=0_5_af=0_05_report.pdf](output/example_output/example_6_e=0_01_c0=0_5_af=0_05_report.pdf)。
4 DeepSeek解决报错问题
4.1 报错 1
ImportError:/home/data/t030339/miniconda3/lib/python3.9/site-packages/matplotlib/ft2font.cpython-39-x86_64-linux-gnu.so: undefined symbol: _ZSt28__throw_bad_array_new_lengthv
解决办法:
要解决ImportError中提到的未定义符号问题,请按照以下步骤操作:
步骤 1:更新 Conda 环境中的 libstdc++ 在终端中运行以下命令,确保使用 Conda 提供的较新版本的 libstdcxx-ng:
conda install -c conda-forge libstdcxx-ng
步骤 2:重新安装 Matplotlib 通过 Conda-Forge 渠道重新安装 Matplotlib,以确保依赖项兼容:
conda install -c conda-forge matplotlib --force-reinstall
步骤 3:验证安装并检查依赖 确认所有相关包均通过 Conda 安装,避免混合使用 Pip 和 Conda:
conda list |grep matplotlib
4.2 报错 2
AttributeError: module 'matplotlib.cbook' has no attribute '_strip_comment' 怎么解决
原因分析 此错误通常是由于:
Matplotlib 版本过新:_strip_comment 是旧版本 Matplotlib 中的内部私有方法(如 3.4.x 及更早版本),在新版本(如 3.5+)中已被移除或重构。
代码或第三方库依赖旧 API:你的代码或某个第三方库直接调用了 Matplotlib 的私有方法(以下划线开头的函数),而这些方法在新版本中不再可用。
解决办法 方法 1:降级 Matplotlib 到兼容版本 直接回退到包含 _strip_comment 的旧版本(如 3.4.3):
conda install matplotlib=3.4.3
或通过 pip:
pip install matplotlib==3.4.3
4.3 报错 3
/home/data/t030339/miniconda3/envs/treeomics/lib/python3.6/site-packages/setuptools/dist.py:720: UserWarning: Usage of dash-separated 'description-file' will not be supported in future versions. Please use the underscore name 'description_file' instead
解决办法 步骤 1:定位配置文件 该警告表明你的项目(或某个依赖包)在 setup.py 或 setup.cfg 中使用了旧式连字符参数(如 description-file)。 需修改为下划线格式(如 description_file)。
修改方法 情况 1:修改自己的项目文件(setup.py 或 setup.cfg) 打开 setup.py:
# 旧代码(连字符)
setup(
name="your_package",
description-file="README.md", # ❌ 错误写法
# ...
)
# 修改为(下划线)
setup(
name="your_package",
description_file="README.md", # ✅ 正确写法
# ...
)
或修改 setup.cfg:
ini
# 旧配置(连字符)
[metadata]
description-file= README.md # ❌ 错误写法
# 修改为(下划线)
[metadata]
description_file = README.md # ✅ 正确写法
# 例子实操
4.4 报错 4
ERROR: Could not find a version that satisfies the requirement matplotlib (from treeomics) (from versions: none)
ERROR: No matching distribution found for matplotlib
解决办法 解决方案 1. 检查 Python 版本兼容性 Matplotlib 自 3.8 版本起不再支持 Python 3.6。 若需在 Python 3.6 环境中安装,必须使用旧版本 Matplotlib(如 3.3.4):
# 通过 pip 安装指定版本
pip install matplotlib==3.3.4
# 或通过 conda 安装
conda install matplotlib=3.3.4
4.5 报错 5
ERROR: Could not find a version that satisfies the requirement networkx<2.0 (from treeomics) (from versions: none)
ERROR: No matching distribution found for networkx<2.0
问题分析 此错误表明 pip 或 conda 无法找到与当前环境兼容的 networkx<2.0 版本,原因通常包括:
Python 版本过高:networkx<2.0(即 1.x 版本)仅支持较旧的 Python 版本(如 Python 2.7 或 Python 3.5 以下)。
包源未包含旧版本:默认的 PyPI 或 Conda 仓库可能未保留 networkx<2.0 的安装包。
依赖冲突:当前环境中已安装的包与 networkx<2.0 不兼容。
解决办法 通过 Conda 安装旧版本 NetworkX Conda 的 conda-forge 仓库可能保留旧版本包。尝试以下命令:
# 添加 conda-forge 渠道
conda config --add channels conda-forge
# 安装 networkx 1.11
conda install networkx=1.11
4.6 报错 6
File "/home/data/t030339/miniconda3/envs/treeomics/lib/python3.6/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/home/data/t030339/miniconda3/envs/treeomics/lib/python3.6/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "treeomics/__main__.py", line 15, in<module>
import treeomics.tree_inference as ti
File "/home/data/t030339/software/treeomics/treeomics/tree_inference.py", line 8, in<module>
from treeomics.phylogeny.simple_phylogeny import SimplePhylogeny
File "/home/data/t030339/software/treeomics/treeomics/phylogeny/simple_phylogeny.py", line 14, in<module>
import treeomics.phylogeny.cplex_solver as cps
File "/home/data/t030339/software/treeomics/treeomics/phylogeny/cplex_solver.py", line 8, in<module>
import cplex as cp
ModuleNotFoundError: No module named 'cplex'
问题原因 此错误表示 Python 环境中未安装 IBM 的 CPLEX 优化库(商业数学规划工具),而 treeomics 依赖该库。 CPLEX 是专有软件,需通过合法授权获取,以下是解决方案:
解决办法
安装 IBM CPLEX 并配置 Python API 步骤 1:获取 CPLEX 安装包 途径 1:通过机构或公司获取合法授权,从 IBM官网 下载对应操作系统的安装包(需 IBM 账户和许可证)。
途径 2:若为学术用户,可申请免费学术版 IBM Academic Initiative。
步骤 2:安装 CPLEX 解压下载的安装包(如 cplex_studio2210.linux_x86_64.bin)并运行安装脚本:
chmod +x cplex_studio2210.linux_x86_64.bin
./cplex_studio2210.linux_x86_64.bin
按提示完成安装(默认路径为 /opt/ibm/ILOG/CPLEX_Studio2210)。
步骤 3:配置 Python API 进入 CPLEX 的 Python 接口目录,安装到当前环境:
# 进入 Python API 目录(路径根据实际安装版本调整)
cd /opt/ibm/ILOG/CPLEX_Studio2210/cplex/python/3.6/x86-64_linux
/home/data/t030339/miniconda3/envs/treeomics/cplex/python/3.6/x86-64_linux/
# 安装到 conda 环境
python setup.py install --prefix /home/data/t030339/miniconda3/envs/treeomics
5 Reference
Reiter, J., Makohon-Moore, A., Gerold, J. et al. Reconstructing metastatic seeding patterns of human cancers. Nat Commun 8, 14114 (2017).