vcf转为plink文件前的预处理
在分析 VCF 文件 前,需要对其进行预处理,然后转换为 PLINK 格式(.bed、.bim 和 .fam 文件),以便输入到 FastLMM 中进行分析。以下是一个通用的工作流程,帮助你完成这一过程:
1. 环境准备
确保安装以下工具:
- PLINK:用于处理基因型数据。
- BCFtools 或 vcftools:用于处理和过滤 VCF 文件。
2. VCF 数据预处理
VCF 文件通常包含以下内容:
- 所有样本的基因型数据。
- 可能的低质量 SNP 或样本。
步骤 1:检查 VCF 文件的质量
检查文件是否符合标准格式,并查看样本信息:
bcftools view your_file.vcf | less
- 检查样本数:
bcftools query -l your_file.vcf。 - 统计变异位点数:
bcftools stats your_file.vcf > stats.txt。
步骤 2:过滤低质量数据
对 VCF 文件应用质量控制,确保数据可靠。
vcftools --vcf your_file.vcf \
--minQ 30 \ # 质量值过滤(PHRED > 30)
--maf 0.01 \ # 过滤小于 1% 的次要等位基因频率 (MAF)
--max-missing 0.95 \ # 保留覆盖率大于 95% 的 SNP
--recode \ # 输出处理后的 VCF
--out filtered_data
--minQ:移除低质量的变异。--maf:剔除次要等位基因频率非常低的位点(可能是噪声)。--max-missing:移除缺失率高的 SNP。
3. 将 VCF 转换为 PLINK 格式
使用 PLINK 将预处理后的 VCF 文件转换为二进制格式。
命令:转换为二进制文件
plink --vcf filtered_data.recode.vcf \
--make-bed \ # 输出二进制格式文件
--out data
这将生成以下文件:
data.bed:基因型矩阵。data.bim:SNP 信息。data.fam:样本信息。
常见的额外选项
- 如果 VCF 文件没有显式的基因型编码(如
0/0,0/1,1/1),可使用:plink --vcf your_file.vcf --vcf-half-call m --make-bed --out data - 如果你只想保留某些染色体或样本:
plink --vcf filtered_data.recode.vcf \ --chr 1-22 \ # 仅保留常染色体 --keep sample_list.txt \ # 保留样本列表 --make-bed \ --out filtered_data
4. 基本质量控制
在 PLINK 格式中进一步过滤,确保高质量数据输入到 FastLMM 中。
步骤 1:样本过滤
- 移除低覆盖率的样本(样本缺失率过高)。
plink --bfile data \
--mind 0.1 \ # 移除缺失率 >10% 的样本
--make-bed \
--out qc_data
步骤 2:SNP 过滤
- 移除低质量的 SNP(补充对 VCF 中未完成的过滤)。
plink --bfile qc_data \
--geno 0.05 \ # 移除缺失率 >5% 的 SNP
--hwe 1e-6 \ # 硬性过滤 Hardy-Weinberg 不平衡的 SNP
--make-bed \
--out final_data
5. 验证和检查
步骤 1:检查过滤后的样本和 SNP
- 检查样本数和 SNP 数:
plink --bfile final_data --freq
步骤 2:绘制分布图
- 表型分布:确保表型值没有异常偏差。
- PCA 分析:用来验证样本是否存在群体结构偏差:
plink --bfile final_data --pca 10 --out pca_results
总结
- 质量控制是最关键的一步,尽量减少噪声数据的影响。
- 确保 VCF 文件转换后的样本 ID 和表型文件一致。
- 如果存在高低温组数据,建议使用协变量调整温度效应,或分组分析。
浙公网安备 33010602011771号