跳转至

ExpansionHunter — 短串联重复序列扩展检测工具


一句话说明

ExpansionHunter(v5.0.0)专门检测基因组中的短串联重复序列(STR)是否异常扩增——许多遗传病(如亨廷顿病、脆性X综合征、ALS相关C9ORF72扩增)正是由特定位点的重复序列从正常的几十个变成几百上千个拷贝造成的。


安装与配置

# 方法1:conda安装(v5.0.0,推荐)
conda create -n expansionhunter python=3.9
conda activate expansionhunter
conda install -c bioconda expansionhunter   # 安装最新版(v5.0.0)

# 验证安装
ExpansionHunter --version    # 查看版本号

# 方法2:下载预编译二进制(Linux/macOS)
# 访问 https://github.com/Illumina/ExpansionHunter/releases 下载
wget https://github.com/Illumina/ExpansionHunter/releases/download/v5.0.0/ExpansionHunter-v5.0.0-linux_x86_64.tar.gz
tar xzf ExpansionHunter-v5.0.0-linux_x86_64.tar.bz2
./ExpansionHunter-v5.0.0-linux_x86_64/bin/ExpansionHunter --version

# 获取变异目录文件(STR位点定义)
# 官方提供hg19/hg38的STR变异目录
# 位于 ExpansionHunter 安装目录的 variant_catalog/ 子目录下
ls ExpansionHunter-v5.0.0-linux_x86_64/variant_catalog/
# hg19/  hg38/  - 各含 variant_catalog.json(常见致病STR位点)

核心用法

基本用法(检测已知STR位点)

# 最常用:用官方变异目录检测全部已知致病STR
ExpansionHunter \
    --reads sample.bam \              # 输入BAM或CRAM文件(需排序和索引)
    --reference reference.fasta \    # 参考基因组(需.fai索引)
    --variant-catalog variant_catalog.json \  # STR位点定义文件
    --output-prefix sample_EH \       # 输出文件前缀
    --threads 8                       # 线程数(v5.0支持多线程)

指定分析模式

# 流式分析(默认,适合少量位点<1000)
ExpansionHunter \
    --reads sample.bam \
    --reference reference.fasta \
    --variant-catalog variant_catalog.json \
    --output-prefix sample_EH \
    --analysis-mode streaming          # 默认模式

# 寻路分析(大型目录,>10k位点时用,速度更快)
ExpansionHunter \
    --reads sample.bam \
    --reference reference.fasta \
    --variant-catalog large_catalog.json \
    --output-prefix sample_EH \
    --analysis-mode seeking \          # 寻路模式,适合大目录
    --threads 16                       # 多线程加速

使用REViewer可视化重复(辅助工具)

# REViewer生成每个STR位点的reads可视化图(SVG格式)
# 先安装REViewer
conda install -c bioconda reviewer

# 生成可视化(需要ExpansionHunter的BAM输出)
REViewer \
    --reads sample_EH_realigned.bam \  # ExpansionHunter输出的BAM
    --vcf sample_EH.vcf \             # ExpansionHunter输出的VCF
    --reference reference.fasta \
    --catalog variant_catalog.json \
    --locus HTT \                      # 指定查看HTT(亨廷顿)位点
    --output-prefix HTT_review

参数详解

参数说明示例值
--reads输入BAM/CRAM文件(需索引)sample.bam
--reference参考基因组FASTAhg38.fasta
--variant-catalogSTR位点定义JSON文件variant_catalog.json
--output-prefix输出文件前缀sample_output
--sex样本性别(影响X/Y染色体分析)malefemale
--threads线程数8
--analysis-mode分析模式streaming(默认)、seeking(大目录)
--log-level日志级别infodebug

实战案例

# 完整流程:检测神经退行性疾病相关STR扩增

REF="hg38.fasta"
CATALOG="ExpansionHunter-v5.0.0/variant_catalog/hg38/variant_catalog.json"

# 1. 运行ExpansionHunter
ExpansionHunter \
    --reads patient_sample.bam \
    --reference $REF \
    --variant-catalog $CATALOG \
    --output-prefix patient_STR \
    --sex female \               # 指定样本性别(影响X连锁位点如FMR1)
    --threads 16

# 2. 查看输出文件
ls patient_STR.*
# patient_STR.vcf           - VCF格式结果(每个STR位点的基因型)
# patient_STR.json          - JSON格式详细结果
# patient_STR_realigned.bam - 重新比对的reads(供REViewer可视化)

# 3. 查看关键致病位点结果
# 常见致病STR及其正常/致病阈值:
# HTT   (亨廷顿病):     正常 ≤36 CAG,致病 ≥40
# C9ORF72 (ALS/FTD):    正常 ≤30 GGGGCC,致病 ≥200
# FMR1  (脆性X综合征):  正常 ≤45 CGG,致病 ≥200
# ATXN3 (SCA3脊髓小脑): 正常 ≤44 CAG,致病 ≥55

# 提取HTT位点结果
grep "HTT" patient_STR.vcf | grep -v "^#"

# 4. 解读VCF中的GT字段
# 示例结果:
# HTT  GT:REPCN  1/1:17/19   - 两条染色体分别17和19个CAG重复(正常)
# HTT  GT:REPCN  1/2:17/45   - 一条17个,一条45个CAG重复(致病!)

# 5. 提取扩增位点(重复次数大于某阈值)
python3 << 'EOF'
import json
with open("patient_STR.json") as f:   # 读取JSON结果
    data = json.load(f)               # 解析JSON
for locus in data["LocusResults"]:   # 遍历所有位点
    for variant in locus["Variants"].values():  # 查看每个变异
        if "RepeatCount" in variant:
            rc = variant["RepeatCount"]
            if max(rc) > 50:         # 超过50次重复则输出(示例阈值)
                print(locus["LocusId"], rc)  # 输出位点名和重复次数
EOF

常见报错与解决

报错1:The sample's sex is not specified(警告) - 原因:未指定--sex参数,X/Y染色体上的STR(如FMR1)分析可能不准确 - 解决:根据实际样本性别添加--sex female--sex male

报错2:Could not find reads for locus - 原因:该STR位点覆盖度过低(<5x),或BAM缺少该区域 - 解决:检查样本覆盖度;该位点结果会标记为"./."(无法检测)

报错3:分析大目录(>10k位点)速度很慢 - 原因:默认streaming模式对大目录效率低 - 解决:改用--analysis-mode seeking --threads 32,速度可提升数倍


速查表

命令/位点说明
--variant-catalog variant_catalog.json官方提供的致病STR目录(hg38/hg19)
--analysis-mode seeking大型STR目录分析模式
--sex male/female指定样本性别(影响X/Y位点)
*.vcfVCF格式基因型结果
*.jsonJSON格式详细信息
*_realigned.bam供REViewer可视化的BAM
HTT:≥40 CAG亨廷顿病致病阈值
C9ORF72:≥200 GGGGCCALS/FTD致病阈值
FMR1:≥200 CGG脆性X综合征致病阈值
REPCNVCF中的重复次数字段