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

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

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

快捷操作bed,sam,vcf,gff,fastx的工具bioawk_第1张图片

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)

快捷操作bed,sam,vcf,gff,fastx的工具bioawk_第2张图片

  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的工具bioawk_第3张图片

你可能感兴趣的:(快捷操作bed,sam,vcf,gff,fastx的工具bioawk)