1. 项目背景与需求解析
在猪基因组育种研究中,SNP芯片数据是分析群体遗传结构、进行全基因组关联分析(GWAS)的重要基础数据。然而在实际操作中,我们经常会遇到芯片数据缺失的问题——可能是由于样本质量、杂交效率或检测技术限制导致的基因型缺失。这种数据缺失会直接影响后续分析的准确性。
PHARP(Pig Haplotype Reference Panel)作为猪基因组研究的专用工具,能够利用参考面板对缺失基因型进行高精度填充。但要让PHARP发挥最佳效果,关键在于前期数据准备的规范性。这就像给汽车做保养前需要准备好合适的机油和滤芯一样,数据格式的标准化处理直接决定了填充效果的好坏。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 原始数据格式要求与检查
2.1 VCF文件的标准规范
PHARP要求输入数据为VCF(Variant Call Format)格式,这是生物信息学中存储基因变异的通用格式。一个合格的VCF文件需要包含以下关键字段:
- CHROM:染色体编号(如1-18号染色体及X/Y)
- POS:变异位点在染色体上的物理位置
- ID:SNP标识符(如rs编号)
- REF/ALT:参考基因组碱基和变异碱基
- FORMAT:必须包含GT(基因型)字段
- 样本列:每个样本的基因型数据(如0/0、0/1、1/1)
实际操作中常用bcftools进行格式验证:
bash复制bcftools view -H input.vcf | head -n 3 # 检查前3行数据
bcftools stats input.vcf > quality_report.txt # 生成质量报告
2.2 常见数据问题排查
在笔者的项目经验中,猪芯片数据常出现以下典型问题:
-
染色体命名不一致:不同芯片平台可能使用"chr1"或"1"等不同命名方式
bash复制# 使用bcftools修正染色体命名 bcftools annotate --rename-chrs chr_name_map.txt input.vcf > output.vcf -
基因型编码错误:部分平台用"1/2"代替"0/1"表示杂合子
bash复制# 使用awk修正基因型编码 awk '{gsub(/1\/2/, "0\/1"); print}' input.vcf > corrected.vcf -
缺失率过高:单个SNP缺失率>10%或样本缺失率>5%需要特别处理
bash复制# 计算每个SNP的缺失率 bcftools query -f '[%SAMPLE\t%GT\n]' input.vcf | awk '{if($2=="./.") miss[$1]++} END {for(s in miss) print s,miss[s]/NR*100"%"}'
3. 数据预处理全流程
3.1 从PLINK到VCF的转换
大多数猪芯片数据以PLINK格式(.bed/.bim/.fam)分发,需要使用PLINK2进行格式转换:
bash复制plink2 --bfile chip_data \
--recode vcf bgz \
--snps-only just-acgt \
--out chip_data_vcf
关键参数说明:
--snps-only:仅保留SNP变异just-acgt:过滤非ATCG的位点bgz:输出压缩格式
注意:转换后务必检查是否所有样本都被保留,笔者曾遇到因fam文件ID包含特殊字符导致样本丢失的情况。
3.2 位点坐标一致性处理
猪参考基因组有多个版本(如Sscrofa11.1和Sscrofa10.2),需要确保芯片坐标与PHARP参考面板一致。使用CrossMap进行坐标转换:
bash复制CrossMap.py vcf old_to_new.chain input.vcf new_ref.fa output.vcf
转换后需要处理indel导致的坐标偏移问题:
bash复制bcftools norm --check-ref ws -f reference.fa -m+any output.vcf > normalized.vcf
3.3 样本血缘关系验证
PHARP对样本亲缘关系敏感,建议先用KING工具验证样本关系:
bash复制king -b chip_data.bed --kinship --prefix kinship_out
典型问题处理:
- 重复样本(kinship≈1):保留质量较高的一个
- 亲子样本(kinship≈0.5):可能需要分开分析
- 异常样本(kinship异常):检查是否污染或错标
4. PHARP输入文件准备
4.1 配置文件详解
PHARP需要三个核心输入文件:
- VCF文件:经过前述处理的基因型数据
- 样本信息文件:包含群体结构信息
code复制# sample_info.txt SampleID Population Sex Pig001 Landrace M Pig002 Duroc F - 参数文件:控制填充算法参数
json复制{ "pharp_mode": "impute", "min_maf": 0.01, "max_missing": 0.1, "threads": 8 }
4.2 质量控制的黄金标准
根据笔者在多个猪育种项目的经验,推荐以下QC标准:
| 指标 | 阈值 | 处理方式 |
|---|---|---|
| SNP缺失率 | <5% | 过滤高缺失位点 |
| 样本缺失率 | <3% | 排除低质量样本 |
| MAF | >1% | 保留常见变异 |
| HWE p值 | >1e-6 | 排除偏离群体 |
实现代码:
bash复制plink2 --vcf input.vcf \
--maf 0.01 \
--geno 0.05 \
--mind 0.03 \
--hwe 1e-6 \
--make-bed \
--out qc_passed
5. 实战案例:大白猪群体数据准备
以笔者参与的某大白猪育种项目为例,原始数据特点:
- Illumina PorcineSNP50芯片数据
- 1,256头核心群种猪
- 原始缺失率平均8.3%
处理流程中的关键发现:
- 发现7个样本的重复率>99.9%,系技术重复
- 染色体18有23个SNP位置在新版本参考基因组发生倒位
- 使用--keep-allele-order参数避免等位基因翻转
最终达到的QC后指标:
- 剩余1,249个样本
- 45,678个SNP位点
- 平均缺失率降至2.1%
填充效果验证:
- 随机mask 5%已知基因型
- 填充准确率达到98.7%
- 表型预测R²提升0.15
这个案例说明,严格的数据准备虽然耗时,但能显著提升后续分析质量。特别是在处理不同品种混合群体时,额外需要注意群体分层对填充效果的影响。建议在正式分析前,先用小样本量测试不同参数组合的效果。
