当前位置: 首页 > news >正文

【plink 和vcftools使用】从 VCF 文件中提取指定 SNP 的 REF/ALT 方法

从 VCF 文件中提取指定 SNP 的 REF/ALT 方法


方法一:基于 vcftools 直接提取

步骤说明

1. 准备位点文件 positions.txt
# 格式要求:两列,无表头,分别为染色体和物理位置(空格/TAB分隔)
# 示例内容:
1   3078680
2   3142683
2. 提取指定位点的 VCF 子集
vcftools --vcf raw.vcf --positions positions.txt --recode --out extracted
  • --positions:指定目标位点文件
  • 输出文件:extracted.recode.vcf
3. 提取 REF/ALT 信息
# 假设 VCF 头部有 39734 行注释(以 # 开头)
tail -n +39735 extracted.recode.vcf | cut -f 1,2,4,5 > genotype.list
  • 关键点
    • 使用 tail -n +N 跳过头部注释(N 需根据实际 VCF 文件调整)
    • cut -f 1,2,4,5 提取 CHROM, POS, REF, ALT
4. 结果示例
#CHROM  POS     REF     ALT
1       223     T       A
1       224     A       G

方法二:通过 Plink 转换后提取

步骤说明

1. 将 VCF 转为 Plink 格式
plink --vcf raw.vcf --const-fid -snps-only just-acgt --keep-allele-order \--biallelic-only strict --allow-extra-chr --make-bed --out vcf-plink \--chr-set 95
  • --chr-set 95:适用于非人类物种(人类数据可移除此参数)
  • --keep-allele-order:保持 VCF 中 REF/ALT 的原始顺序
2. 重命名 SNP ID(可选)
mv vcf-plink.bim vcf-plink-old.bim
awk '{OFS="\t"; $2=$1":"$4; print $0}' vcf-plink-old.bim > vcf-plink.bim
  • 将 SNP ID 格式改为 染色体:位置(示例:1:3078680
3. 准备 SNP 列表文件 snp.list
# 格式要求:一列,每行为 SNP ID(需与 .bim 中命名一致)
# 示例内容:
1:223
1:224
4. 提取目标 SNP
plink --bfile vcf-plink --extract snp.list --keep-allele-order \--make-bed --out this --chr-set 95 --allow-extra-chr
  • 输出文件:this.bim 包含目标 SNP 信息
5. 结果示例(this.bim 格式)
CHROM  SNPID       CM  POS    ALT  REF
1      1:223       0   223    A    T
1      1:224       0   224    G    A
  • 注意:Plink 的 .bim 文件中,REF/ALT 列顺序!

方法对比

特性vcftools 方法Plink 方法
优势直接提取,无需格式转换适合后续关联分析或质控
劣势需处理 VCF 头部注释行REF/ALT 顺序可能反转,需加参数限制keep-allele-order
适用场景快速提取少量位点需要结合 Plink 进行下游分析

注意事项

  1. VCF 头部行数
    使用 grep -n "^#" raw.vcf | tail -1 查看实际注释行数,替换 tail -n +N 中的 N

  2. REF/ALT 顺序

    • VCF 格式:第 4 列为 REF,第 5 列为 ALT
    • Plink 的 .bim:第 5 列为 ALT,第 6 列为 REF
  3. 染色体格式
    非标准染色体(如 chr1)需在 Plink 命令中添加 --allow-extra-chr

相关文章:

  • ICML 2025 Spotlight | 机器人界的「Sora」!让机器人实时进行未来预测和动作执行!
  • 【LLM相关知识点】 LLM关键技术简单拆解,以及常用应用框架整理(二)
  • linux进程用户态内存泄露问题从进程角度跟踪举例
  • C语言 — 自定义类型(结构体,联合体,枚举)
  • 利用Dify创建一个公司产品知识问答
  • DeepSeek R1-0528:深度思考能力的重大跃升与技术突破全解析
  • LLM优化技术——Paged Attention
  • VC++: identifer “M_PI“ is undefined
  • C++11新特性lambda的使用详解
  • 2025-05-31 Python深度学习10——模型训练流程
  • 【Dv3Admin】工具请求配置文件解析
  • 计算晶体结构和电子能带的软件
  • Linux命令之ausearch命令
  • 【HW系列】—日志介绍
  • Linux531rsync定时同步 再回忆
  • 一文认识并学会c++模板初阶
  • 随机响应噪声-极大似然估计
  • 每日算法-250531
  • resubmit v1.2.0 新特性支持类级别防止重复提交
  • 深入剖析Java类加载机制:双亲委派模型的突破与实战应用
  • 遵义网站建设哪家好?/怎么做好公司官网推广
  • 做桂林网站的图片/公司网站制作公司
  • 龙岩网站制作/seo大牛
  • 长沙网站建设长沙/网络营销推广工具有哪些
  • 中国建设银行官网站查询卡号/广告软文案例
  • 长宁苏州网站建设/小红书推广运营