DEV Community

JH5
JH5

Posted on

PrimateAI-3D 變異預測完全指南

生物資訊工具實戰部署報告:RTX 3090環境

測試日期與環境

測試時間: 2026年1月29日

測試環境: Ubuntu 22.04, RTX 3090, Docker 27.5.1

測試資料: HG001 WES VCF (818,830 variants, 138MB)

執行摘要

本報告記錄了在內網隔離環境(無外網訪問)的RTX 3090伺服器上部署常见生物資訊工具時遇到的實際問題及解決方案。

⚠️ 核心發現

最大挑戰: 伺服器防火牆限制特定端口訪問,導致所有依賴在線資料库或FTP下載的工具無法直接部署。

網路診斷結果:

# ✅ ICMP (ping) 正常
ping 8.8.8.8
# 64 bytes from 8.8.8.8: icmp_seq=1 ttl=115 time=2.18 ms

# ✅ HTTPS 正常
curl -I https://www.google.com
# HTTP/2 200 OK

# ✅ HTTPS下載 Ensembl 資料 正常
wget https://ftp.ensembl.org/pub/release-112/README
# 6666 bytes downloaded at 1.67 GB/s

# ❌ MySQL端口 (3306) 被阻止
telnet ensembldb.ensembl.org 3306
# Connection timed out

# ❌ FTP端口 (21) 被阻止  
curl ftp://ftp.ensembl.org/
# Connection timed out
Enter fullscreen mode Exit fullscreen mode

結論: ✅ HTTPS完全可用!可以直接下載VEP cache和所有資料!

🔔 Ensembl服務更新 (2026-01): Ensembl鏡像站點目前存在伺服器問題。如果遇到連接問題,可以嘗試:

  • 主站點(禁用重定向): https://ensembl.org?redirect=no
  • 最近的archive: https://may2025.archive.ensembl.org/
  • 新的beta站點: https://beta.ensembl.org
連接測試 結果 原因分析
ICMP (ping 8.8.8.8) ✅ 成功 (2ms) 基本網路正常
HTTPS (443端口) ✅ 成功 可下載所有資料
MySQL (3306端口) ❌ 超時 防火牆阻止
FTP (21端口) ❌ 超時 防火牆阻止

網路診斷流程

1. 基本連接測試

# 步驟1: 測試ICMP (ping)
ping -c 3 8.8.8.8
# ✅ 成功: 基本網路通
# ❌ 失敗: 完全無網路

# 步驟2: 測試DNS解析
nslookup ensembl.org
# ✅ 成功: DNS正常
# ❌ 失敗: 需要配置DNS伺服器

# 步驟3: 測試HTTP/HTTPS
curl -I https://www.google.com
# ✅ 成功: HTTPS可用
# ❌ 失敗: 需要代理或被阻止

# 步驟4: 測試特定端口
telnet ensembldb.ensembl.org 3306
# ✅ 成功: MySQL端口可訪問
# ❌ 失敗: 防火牆阻止

telnet ftp.ensembl.org 21
# ✅ 成功: FTP端口可訪問
# ❌ 失敗: 防火牆阻止
Enter fullscreen mode Exit fullscreen mode

2. 根據診斷結果選擇方案

場景 ping DNS HTTPS MySQL/FTP 解決方案
場景1 直接使用在線工具
場景2 使用HTTPS下載,避免FTP/MySQL
場景3 配置代理或預下載資料
場景4 完全離線,必須預下載

當前3090伺服器屬於場景2: ✅ HTTPS完全可用,可直接下載所有資料!

3. 代理配置 (如果需要)

# 檢查是否已配置代理
echo $http_proxy
echo $https_proxy

# 如果需要代理,設定環境變數
export http_proxy=http://proxy.company.com:8080
export https_proxy=http://proxy.company.com:8080
export no_proxy=localhost,127.0.0.1

# 配置wget
cat >> ~/.wgetrc <<EOF
http_proxy = http://proxy.company.com:8080
https_proxy = http://proxy.company.com:8080
EOF

# 配置curl
cat >> ~/.curlrc <<EOF
proxy = http://proxy.company.com:8080
EOF
Enter fullscreen mode Exit fullscreen mode

工具部署測試

1. Ensembl VEP (Variant Effect Predictor)

1.1 基本資訊

  • 用途: 變異功能注釋 (consequence預測、SIFT/PolyPhen)
  • Docker鏡像: ensemblorg/ensembl-vep:release_112.0 (2.1GB)
  • 所需資料: Cache (~20GB) 或 在線資料库訪問

1.2 實際測試過程

步驟1: 下載Docker鏡像

docker pull ensemblorg/ensembl-vep:release_112.0
# 成功: 鏡像下載完成
Enter fullscreen mode Exit fullscreen mode

步驟2: 嘗試offline模式

docker run --rm -v $(pwd):/data ensemblorg/ensembl-vep:release_112.0 vep \
  --input_file /data/input.vcf \
  --output_file /data/output.txt \
  --offline --dir_cache /opt/vep/.vep

# 錯誤:
# ERROR: Cache directory /opt/vep/.vep/homo_sapiens not found
Enter fullscreen mode Exit fullscreen mode

步驟3: 嘗試database模式

docker run --rm -v $(pwd):/data ensemblorg/ensembl-vep:release_112.0 vep \
  --input_file /data/input.vcf \
  --database

# 錯誤:
# DBI connect('ensembldb.ensembl.org:3306') failed: 
# Can't connect to MySQL server (110 Connection timeout)

# 注: 2026年1月Ensembl鏡像站點存在伺服器問題
# 可嘗試使用主站點或archive:
# --host ensembl.org  # 主站點
# --host may2025.archive.ensembl.org  # 最近的archive
Enter fullscreen mode Exit fullscreen mode

步驟4: 嘗試下載cache成功!

# 原方法 (FTP) 失敗:
docker run --rm -v $(pwd)/vep_data:/data ensemblorg/ensembl-vep:release_112.0 \
  INSTALL.pl -a cf -s homo_sapiens -y GRCh38 --CACHEDIR /data
# ❌ ERROR: Could not connect to FTP host ftp.ensembl.org

# 新方法 (HTTPS) 成功:
cd ~/biotools_work
wget https://ftp.ensembl.org/pub/release-112/variation/indexed_vep_cache/homo_sapiens_vep_112_GRCh38.tar.gz
# ✅ 下載成功! (20GB, 預計需要約15-30分鐘)

# 解壓並使用:
tar -xzf homo_sapiens_vep_112_GRCh38.tar.gz -C vep_data/

# 使用cache執行VEP:
docker run --rm -v $(pwd):/data ensemblorg/ensembl-vep:release_112.0 vep \
  --input_file /data/input.vcf \
  --output_file /data/output.vcf \
  --cache --offline --dir_cache /data/vep_data \
  --vcf --symbol --fork 32
Enter fullscreen mode Exit fullscreen mode

步驟5: 嘗試使用FASTA模式

docker run --rm -v $(pwd):/data ensemblorg/ensembl-vep:release_112.0 vep \
  --input_file /data/input.vcf \
  --fasta /data/hg38.fa

# 錯誤:
# The VEP can read gene data from either a local cache or local/remote databases.
# ERROR: Must use --cache or --database
Enter fullscreen mode Exit fullscreen mode

1.3 結論與解決方案

問題根源: VEP 強製要求 cache或database,單獨FASTA檔案不夠

解決方案:

  1. 方案A: 預下載cache (推薦)
   # 在有外網的機器上下載:
   wget http://ftp.ensembl.org/pub/release-112/variation/indexed_vep_cache/homo_sapiens_vep_112_GRCh38.tar.gz

   # 傳輸到伺服器:
   scp homo_sapiens_vep_112_GRCh38.tar.gz server:~/vep_data/

   # 解壓:
   tar -xzf homo_sapiens_vep_112_GRCh38.tar.gz

   # 使用cache:
   docker run --rm -v $(pwd):/data ensemblorg/ensembl-vep:release_112.0 vep \
     --input_file /data/input.vcf \
     --output_file /data/output.txt \
     --cache --offline --dir_cache /data/vep_cache
Enter fullscreen mode Exit fullscreen mode
  1. 方案B: 使用SnpEff替代

    • SnpEff可以通過內置資料库工作
    • 更輕量,但注釋詳細程度不如VEP
  2. 方案C: 使用bcftools + annotations.vcf

    • 預先準備好的注釋VCF (dbSNP, gnomAD等)
    • 使用 bcftools annotate 合並

2. AlphaMissense / PrimateAI-3D (AI預測工具)

2.1 基本資訊

  • 用途: AI致病性預測
  • 依賴: dbNSFP資料库 (~30GB)
  • 實現方式: VEP plugin或bcftools annotate

2.2 實際測試過程

步驟1: 嘗試下載dbNSFP

wget https://dbnsfp.softgenetics.com/dbNSFP4.7a.zip
# 錯誤: 連接超時
Enter fullscreen mode Exit fullscreen mode

2.3 解決方案

預下載dbNSFP資料:

# 在有外網的機器上:
wget https://dbnsfp.softgenetics.com/dbNSFP4.7a.zip
unzip dbNSFP4.7a.zip

# 準備索引檔案:
for chr in {1..22} X Y M; do
  bgzip dbNSFP4.7a_variant.chr${chr}
  tabix -s 1 -b 2 -e 2 dbNSFP4.7a_variant.chr${chr}.gz
done

# 傳輸到伺服器
rsync -avz dbNSFP4.7a_variant.chr*.gz* server:~/biotools_data/
Enter fullscreen mode Exit fullscreen mode

使用方法:

# 通過VEP plugin
docker run --rm -v $(pwd):/data ensemblorg/ensembl-vep:release_112.0 vep \
  --input_file /data/input.vcf \
  --plugin dbNSFP,/data/dbNSFP4.7a_variant.chr1.gz,AlphaMissense_score

# 或通過bcftools
bcftools annotate -a dbNSFP4.7a_variant.chr1.gz \
  -c INFO/AlphaMissense_score input.vcf
Enter fullscreen mode Exit fullscreen mode

3. Exomiser (表型驅動排序)

3.1 基本資訊

  • 用途: HPO表型 + 基因型联合分析
  • 所需資料: Gene-phenotype DB (~20GB)
  • Docker鏡像: exomiser/exomiser-cli:13.1.0

3.2 實際測試過程

步驟1: 嘗試下載資料

wget https://data.monarchinitiative.org/exomiser/latest/2302_hg38.zip
# 錯誤: 連接超時
Enter fullscreen mode Exit fullscreen mode

3.3 解決方案

預下載Exomiser資料:

# 在有外網的機器上:
wget https://data.monarchinitiative.org/exomiser/latest/2302_hg38.zip
unzip 2302_hg38.zip

# 傳輸到伺服器
scp -r 2302_hg38/ server:~/biotools_data/exomiser_data/
Enter fullscreen mode Exit fullscreen mode

使用方法:

docker run --rm -v $(pwd):/data \
  -v $(pwd)/exomiser_data:/exomiser_data \
  exomiser/exomiser-cli:13.1.0 \
  --analysis-mode pass-through \
  --hpo-ids HP:0001263,HP:0001250 \
  --vcf /data/input.vcf \
  --assembly hg38 \
  --exomiser-data-directory /exomiser_data
Enter fullscreen mode Exit fullscreen mode

4. InterVar (ACMG自動分類)

4.1 基本資訊

  • 用途: ACMG準則自動評分
  • 依賴: ANNOVAR humandb (~15GB)

4.2 解決方案

預下載ANNOVAR資料:

# 需要ANNOVAR許可證
# 在有外網的機器上:
annotate_variation.pl -buildver hg38 -downdb -webfrom annovar \
  refGene humandb/
annotate_variation.pl -buildver hg38 -downdb -webfrom annovar \
  gnomad30_genome humandb/
# ... 其他資料库

# 傳輸到伺服器
rsync -avz humandb/ server:~/biotools_data/humandb/
Enter fullscreen mode Exit fullscreen mode

實戰建議總結

對於內網隔離環境

1. 資料準備清單

必需資料包:

biotools_data/
├── vep_cache/                    # 20GB
│   └── homo_sapiens_vep_112_GRCh38/
├── dbNSFP/                       # 30GB
│   └── dbNSFP4.7a_variant.chr*.gz
├── exomiser_data/                # 20GB
│   └── 2302_hg38/
├── annovar_humandb/              # 15GB
│   ├── hg38_refGene.txt
│   └── hg38_gnomad30_genome.txt
└── reference/                    # 3GB
    └── hg38.fa
Enter fullscreen mode Exit fullscreen mode

總大小: ~90GB

2. 資料傳輸指令碼

在外網機器上準備:

#!/bin/bash
# download_biotools_data.sh

# VEP cache
wget http://ftp.ensembl.org/pub/release-112/variation/indexed_vep_cache/homo_sapiens_vep_112_GRCh38.tar.gz

# dbNSFP
wget https://dbnsfp.softgenetics.com/dbNSFP4.7a.zip

# Exomiser
wget https://data.monarchinitiative.org/exomiser/latest/2302_hg38.zip

# 打包
tar -czf biotools_data.tar.gz *.tar.gz *.zip
Enter fullscreen mode Exit fullscreen mode

傳輸到內網伺服器:

# 通過跳板機或USB
scp biotools_data.tar.gz server:~/
ssh server "cd ~ && tar -xzf biotools_data.tar.gz"
Enter fullscreen mode Exit fullscreen mode

3. 輕量級替代工具

如果不想下載大量資料,可以考慮:

原工具 替代方案 優點
VEP SnpEff 內置資料库(~1GB)
AlphaMissense 預計算分數BED檔案 只下載特定區域
Exomiser 手動HPO匹配 + OMIM 輕量級指令碼
InterVar ClinVar + 規則引擎 僅依賴ClinVar

效能對比 (假設資料已準備)

VEP注釋效能 (預測)

資料量 CPU(32核) GPU加速?
1000變異 ~30秒 ❌ VEP不支援GPU
818K變異 ~15分鐘
5M變異(WGS) ~60分鐘

注意: VEP主要是CPU密集型,GPU無法加速

Exomiser效能 (預測)

樣本類型 變異數 處理時間
WES ~20K ~5分鐘
WGS ~5M ~45分鐘

最佳實踐

1. 環境準備 (一次性)

# 在內網伺服器上
mkdir -p ~/biotools_work/{vep_cache,dbNSFP,exomiser_data,results}

# 從外網機器傳輸資料包
# (假設已通過跳板機或物理介質傳輸)
cd ~/biotools_work
tar -xzf biotools_data.tar.gz

# 解壓各個資料包
tar -xzf homo_sapiens_vep_112_GRCh38.tar.gz -C vep_cache/
unzip dbNSFP4.7a.zip -d dbNSFP/
unzip 2302_hg38.zip -d exomiser_data/
Enter fullscreen mode Exit fullscreen mode

2. 日常使用流程

# Step 1: VEP注釋
docker run --rm \
  -v ~/biotools_work:/data \
  ensemblorg/ensembl-vep:release_112.0 vep \
  --input_file /data/input.vcf \
  --output_file /data/annotated.vcf \
  --vcf --cache --offline \
  --dir_cache /data/vep_cache \
  --everything --fork 32

# Step 2: 添加AI預測分數
bcftools annotate \
  -a ~/biotools_work/dbNSFP/dbNSFP4.7a_variant.chr*.gz \
  -c INFO/AlphaMissense_score,INFO/PrimateAI_score \
  annotated.vcf > annotated_AI.vcf

# Step 3: Exomiser排序
docker run --rm \
  -v ~/biotools_work:/data \
  exomiser/exomiser-cli:13.1.0 \
  --hpo-ids HP:0001263 \
  --vcf /data/annotated_AI.vcf \
  --exomiser-data-directory /data/exomiser_data \
  --output /data/prioritized
Enter fullscreen mode Exit fullscreen mode

故障排除檢查清單

連接問題診斷

# 1. 測試MySQL連接
nc -zv ensembldb.ensembl.org 3306
# 預期結果(內網): Connection timed out

# 2. 測試FTP連接  
curl -I ftp://ftp.ensembl.org/
# 預期結果(內網): Failed to connect

# 3. 測試HTTP下載
wget --spider http://ftp.ensembl.org/pub/
# 預期結果(內網): Failed: Connection timed out
Enter fullscreen mode Exit fullscreen mode

Docker權限檢查

# 確認非root用戶可以執行Docker
docker run --rm hello-world

# 確認卷掛載權限
docker run --rm -v $(pwd):/data alpine ls -la /data
Enter fullscreen mode Exit fullscreen mode

資料完整性驗證

# VEP cache
ls -lh vep_cache/homo_sapiens/112_GRCh38/

# dbNSFP
for f in dbNSFP/dbNSFP4.7a_variant.chr*.gz; do
  tabix -l $f | head -1
done

# Exomiser
ls -lh exomiser_data/2302_hg38/
Enter fullscreen mode Exit fullscreen mode

總結

關鍵教訓

  1. 內網環境需要完整的離線資料包 - 約90GB
  2. VEP強製要求cache或database - 無法繞過
  3. 大部分工具不支援GPU加速 - 僅限於Parabricks等少數工具
  4. 資料傳輸是最大瓶颈 - 需提前規劃

推薦工作流

對於內網隔離環境:

  1. 使用Parabricks進行GPU加速的FASTQ→VCF (✓ FQ2BAM 已實測: 97GB WGS 164分鐘 @ RTX 3090)
  2. 預先下載VEP cache + dbNSFP資料包
  3. 使用輕量級工具(SnpEff, bcftools)作為備選
  4. 建立本地注釋資料库鏡像

對於有外網環境:

  • 直接使用在線服務(Franklin, ClinVar web)
  • 按需下載資料,無需預先準備

相關文檔

作者: Laman Wu

測試日期: 2026年1月29日

環境: RTX 3090, Ubuntu 22.04, 內網隔離環境

Top comments (0)