vcf 文件小练习

作者: Juan_NF | 来源:发表于2019-03-09 15:35 被阅读84次
    代码
    bowtie2 -x ../reference/lambda_virus -1 reads_1.fq -2 reads_2.fq|samtools sort -@ 5 -o tmp.bam - 
    bcftools mpileup -f ../reference/lambda_virus.fa tmp.bam |bcftools call -vm > tmp.vcf
    

    VCF 4.2格式中,关于SNP和INDEL,已没有 Dels 这个标签,无INDEL即为SNP;

    1.把突变记录的vcf文件区分成 INDEL和SNP条目
     cat tmp.vcf|grep 'INDEL'|less -S
     cat tmp.vcf|grep -v 'INDEL'|less -S
    
    2.统计INDEL和SNP条目的各自的平均测序深度
    cat tmp.vcf|grep -v "^#"|grep INDEL|cut -f8|cut -d";" -f4|cut -d"=" -f2|awk '{ sum += $0; } END { print sum/NR }'
    
    3.把INDEL条目再区分成insertion和deletion情况
    cat tmp.vcf|grep -v "^#"|grep INDEL|awk '{if(length($4)>length($5)) print }' |less -S
    cat tmp.vcf|grep -v "^#"|grep INDEL|awk '{if(length($5)>length($4)) print }' |less -S
    
    4.统计SNP条目的突变组合分布频率
    cat tmp.vcf|grep -v '^#'|grep -v 'INDEL'|cut -f 4,5|sed 's/\s\+//g'|sort|uniq >uniq.txt
    cat > snp_perc.sh
    cat uniq.txt|while read line
    do
    total=`cat tmp.vcf|grep -v '^#'|grep -v 'INDEL'|cut -f 4,5|wc -l`
    sub=`cat tmp.vcf|grep -v '^#'|grep -v 'INDEL'|cut -f 4,5|sed 's/\s\+//g'|grep $line|wc -l`
    echo $line $sub `echo "scale=2;$sub/$total*100"|bc`%
    done
    bash snp_perc.sh
    
    5.找到基因型不是 1/1 的条目,个数
    cat tmp.vcf|grep -v '1/1'|grep -v '^#'|less -S
    cat tmp.vcf|grep -v '1/1'|grep -v '^#'|wc -l
    
    6.筛选测序深度大于20的条目
    #####注意本题在脚本中的输出方式应该是>>,如果变量的使用不熟练,注意看脚本中的颜色变化
    cat tmp.vcf|grep -o -E 'DP='[0-9]+|grep -Eo '[0-9]+'|awk '{if($0>20) print NR}' > linenum.txt
    cat > target_20.sh
    cat linenum.txt|while read line
    do
    echo $line 
    cat tmp.vcf|grep -v '^#'|sed -n ${line}p >> target_20.txt
    done
    bash target_20.sh
    
    7.筛选变异位点质量值大于30的条目
    cat tmp.vcf|grep -v "^#"|awk '{if($6>30)print}'|less -S
    
    8.组合筛选变异位点质量值大于30并且深度大于20的条目
     cat target_20.txt|grep -v "^#"|awk '{if($6>30)print}'|less -S
    
    9.理解DP4=4,7,11,18 这样的字段,就是 Number of high-quality ref-forward , ref-reverse, alt-forward and alt-reverse bases 计算每个变异位点的 AF
    cat tmp.vcf|grep -v '^#'|cut -f 8|grep -Eo 'DP4=[0-9]+,[0-9]+,[0-9]+,[0-9]+'|grep -Eo '[0-9]+,[0-9]+,[0-9]+,[0-9]+'|awk 'BEGIN{FS=","}{print ($3+$4)/($1+$2+$3+$4)}' > AF.txt
    paste -d -s tmp.txt AF.txt |less -S
    
    10.在前面步骤的bam文件里面找到这个vcf文件的某一个突变位点的测序深度表明的那些reads,并且在IGV里面可视化bam和vcf定位到该变异位点。

    相关文章

      网友评论

        本文标题:vcf 文件小练习

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