美文网首页生信分析Variants callingDNA-seq学习
如何从vcf文件中批量提取一系列基因的SNP位点?

如何从vcf文件中批量提取一系列基因的SNP位点?

作者: 生物信息与育种 | 来源:发表于2021-03-13 23:04 被阅读0次

需求

客户的一个简单需求:

我有一批功能基因位点,想从重测序的群体材料中找到这些位点,如何批量快速获得?

示例文件

gene.txt


image.png

test.vcf


image.png

代码实现

run.sh

cat $1 |while read gene chr from to
do
    #echo $chr $from $to
    if echo $2 |grep -q '.*.vcf.gz$';then
        vcftools --gzvcf $2 --chr $chr --from-bp $from --to-bp $to  --recode --recode-INFO-all --out $gene.$chr.$from-$to 
    elif echo $2 |grep -q '.*.vcf$';then
        vcftools --vcf $2 --chr $chr --from-bp $from --to-bp $to  --recode --recode-INFO-all --out $gene.$chr.$from-$to
    fi
done

运行sh run.sh gene.txt test.vcf,或sh run.sh gene.txt test.vcf.gz

生成结果:


image.png

补充说明

以上代码中利用了vcftools工具,以及shell中读取每行文件的每个字段进行赋值。

vcftools还能提取某个具体位置的SNP:

vcftools --gzvcf test.vcf.gz --positions specific_position.txt --recode --out specific_position.vcf

specific_position.txt文件格式如下:

1 842013
1 891021
1 903426
1 949654
1 1018704

除了vcftools,bcftools和plink等工具也能实现类似的功能。

bcftools filter test.vcf.gz --regions 9:4700000-4800000 > out.vcf

但bcftools要求vcf必须是gz格式,如不是,则需要进行转化(直接用gzip不行):

bcftools view test.vcf -Oz -o test.vcf.gz
bcftools index test.vcf.gz

需要格外注意的是,vcf中的染色体名称要和提取文件中的染色体名保持一致,如Chr1或chr1或1

或者:

 bcftools view  -S keep.list test.vcf >sub_indv.vcf

keep.list可以是“染色体+具体位置”两列,也可以是“染色体+起始+终止”三列:

chr1    27639
chr1    60383
chr2    60469
chr3    60516
chr4    60534

#或者
chr1  1  1000
chr1  2000  4500

在plink中,可以指定特定的样本(keep)或SNP(extract)。

指定样本提取:

plink --bfile file --noweb --keep sampleID.txt --recode --make-bed --out sample

sampleID.txt第一列为提取的样本Family ID,第二列为Within-family ID(IID)。

指定位点提取:

plink --bfile file --extract snp.txt --make-bed --out snp 

snp.txt文件中一个SNP名称一行。

Ref:https://www.cnblogs.com/chenwenyan/p/9151672.html
https://blog.csdn.net/weixin_34387468/article/details/94519445
https://www.cnblogs.com/mmtinfo/p/11945592.html
https://www.cnblogs.com/chenwenyan/p/8991417.html

相关文章

  • 如何从vcf文件中批量提取一系列基因的SNP位点?

    需求 客户的一个简单需求: 我有一批功能基因位点,想从重测序的群体材料中找到这些位点,如何批量快速获得? 示例文件...

  • vcf文件提取SNP位点

    测序得到VCF文件后,有时需要提取部分SNP位点,这里介绍的工具是VCFtools,安装以及基础功能见下贴:vcf...

  • bed文件格式

    有snp的坐标,提取snp位点前后100bp的参考基因组 对snp位点bed文件 start 减10 ,end 加...

  • 2021-03-31 为VCF文件建立索引(.idx)

    问题背景: 做GWAS分析,对方只提供了具有SNP和indel的vcf文件,需要提取SNP时,提取时去发现,需要对...

  • SnpEff使用方法

    SnpEff使用方法 SnpEff 软件通过基因组结构注释数据(GTF文件),对VCF文件中的SNP/InDel信...

  • 各种常用的处理命令

    提取染色体片段 提取文件中的某几列 根据位置提取vcf文件对应位点的信息 提取某一列数值满足条件的列 提取某些样本...

  • gff中的负链如何理解

    在我们得到SNP位点的VCF文件,想要查看某个SNP位点其在蛋白序列哪一个位点,以了解该位点氨基酸突变的情况时,遇...

  • 从vcf文件提取exon中的snp和Indel

    首先制作bed格式的文件包含基因组全部的外显子区域坐标如下: 从vcf文件中提取位于exon区域的变异位点

  • 11.2 GWAS流程学习

    主要使用plink和structure: 1、在snp-calling后得到vcf文件 2、基因型填充: http...

  • VCF文件参数解读

    VCF (variant callformat) 文件记录了所有样品基因组中所有位置变异(主要包括SNP和InDe...

网友评论

    本文标题:如何从vcf文件中批量提取一系列基因的SNP位点?

    本文链接:https://www.haomeiwen.com/subject/ufsfcltx.html