美文网首页生物信息杂谈生信工具生信基础知识
快捷操作bed,sam,vcf,gff,fastx的工具bioa

快捷操作bed,sam,vcf,gff,fastx的工具bioa

作者: 生信杂谈 | 来源:发表于2019-04-13 22:37 被阅读138次

    虽然现在操作几种常用格式的专用工具都有了,比如bedtools、samtools、vcftools、bcftools等,但bioawk的优势就是方便快捷。

        大神Heng Li将常用几种格式(bed、sam、vcf、gff和fastx)的文件按照字段属性映射到awk的变量,我们只需要指明待操作文件的格式,输入变量名就能提取想要的信息,并能结合内置函数灵活应用,bioawk能操作的文件格式如下表所示:


    bioawk 安装,conda一行命令搞定,或者上github上下载源文件编译:
    conda install -c bioconda bioawk
    

    可能会用到的几个参数

    -t 设置input和output文件的分隔符为Tab
    -c fmt 指定输入文件的格式
    -v var=value 初始化一个变量,可以从shell导入并可以指定多次,和awk一样
    -H 在output文件中保留header,比如sam文件的header。
    

    可能会用到的的几个函数

    -  gc($seq): 返回序列 $seq 的 GC 含量
    -  meanqual($seq) 返回 fastq 格式的序列 $seq 的平均Q值
    -  reverse($seq) 返回序列 $seq 的反意链
    -  revcomp($seq) 返回序列 $seq 的反意互补链
    - qualcount($qual, threshold) 返回高于threshold的$qual的数量
    -  trimq(qual, beg, end, param) Trims the quality string qual in the Sanger scale
    -  and(x, y)位运算符且
    -  or(x, y)位运算符或
    -  xor(x, y)位运算符异或
    

    实例:

    操作fasta文件:

    1. 获得fasta文件中每条序列的长度:
    bioawk -c fastx '{ print $name, length($seq) }' hg19.fasta
    
    1. 获得fasta文件中每条序列的GC含量:
    bioawk -c fastx '{print $name,gc($seq)}' hg19.fasta
    
    1. 获得反向互补序列:
    bioawk -c fastx '{ print ">"$name;print revcomp($seq) }' hg19.fasta
    
    1. 筛选出长度大于100bp的序列:
    bioawk -c fastx 'length($seq) > 100{ print ">"$name; print $seq }' hg19.fasta
    
    1. 给序列名称添加前缀或者后缀:
    bioawk -c fastx '{ print ">PREFIX"$name; $seq }' input.fasta
    bioawk -c fastx '{ print ">"$name"|SUFFIX"; $seq }' input.fasta
    
    1. 将fasta文件修改为tab分割的文件:
    bioawk -t -c fastx '{ print $name, $seq }' input.fasta
    

    操作fastq文件:

    1. 统计reads数目:
    # 对于4行一个read的文件
    bioawk -t -c fastx 'END {print NR}' input.fastq
    
    1. 转为fasta文件:
    bioawk -c fastx '{print ">"$name; print $seq}' input.fastq
    
    1. 获得每条reads的平均质量值:
    bioawk -c fastx '{print ">"$name; print meanqual($qual)}' input.fastq
    
    1. 过滤掉长度小于10 bp 的reads:
    bioawk -cfastx 'length($seq) > 10 {print "@"$name"\n"$seq"\n+\n"$qual}' input.fastq
    
    1. 根据质量修剪reads:
    # 去除0-5bp内质量值小于30的reads(Richard Motts algorithm (used in Phred)
    bioawk -c fastx ' trimq(30, 0, 5){print $0}' input.fastq
    
    1. 统计以GATTAC开头的reads的数量
    bioawk -c fastx '$seq~/^GATTAC/ {++n} END { print n }' input.fastq.gz
    

    操作bed文件:

    1. 提取每个feature的范围:
    bioawk -c bed '{ print $end - $start }' test.bed
    

    操作SAM文件:

    1. 提取unmapped reads:
    bioawk -c sam 'and($flag,4)' input.sam
    
    1. 提取 mapped reads(带header):
    bioawk -c sam -H '!and($flag,4)' input.sam
    

    (顺便:查询flag所表示信息:https://broadinstitute.github.io/picard/explain-flags.html)

    1. sam转为fasta:
    bioawk -c sam '{ s=$seq; if(and($flag, 16)) {s=revcomp($seq) } print ">"$qname"\n"s}' input.sam > output.fasta
    

    操作vcf文件:

    1. 提取样本foo和bar的基因型:
    grep -v ^## in.vcf | bioawk -tc hdr '{print $foo,$bar}'
    

    更多原创精彩视频敬请关注生信杂谈:

    相关文章

      网友评论

        本文标题:快捷操作bed,sam,vcf,gff,fastx的工具bioa

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