相比于awk,bioawk更加方便,因为使用awk,我们不得不数所需要的是第几列,而bioawk则是将其设定为一变量,更加方便。学习bioawk,对于处理fasta/q,vcf,bed等文件着实方便不少,告别写代码。
安装
git clone git://github.com/lh3/bioawk.git && cd bioawk && make && mv awk bioawk
#或者使用conda
conda install bioawk
使用
查看帮助信息
bioawk -c help
bed:
1:chrom 2:start 3:end 4:name 5:score 6:strand 7:thickstart 8:thickend 9:rgb 10:blockcount 11:blocksizes 12:blockstarts
sam:
1:qname 2:flag 3:rname 4:pos 5:mapq 6:cigar 7:rnext 8:pnext 9:tlen 10:seq 11:qual
vcf:
1:chrom 2:pos 3:id 4:ref 5:alt 6:qual 7:filter 8:info
gff:
1:seqname 2:source 3:feature 4:start 5:end 6:score 7:strand 8:frame 9:attribute
fastx:
1:name 2:seq 3:qual 4:comment
#各种格式的每一列或者每一行都设为为一个变量,方便记忆,无需查找
基本参数一览
- -t将输入输出的分隔符设置为tab
- -c 设置输入文件或想解析的文件的格式
- -v 设置自定义的变量
- -H 保留输出结果的header(例如sam file)
处理fasta文件
筛选>50的序列
bioawk -c fastx 'length($seq) > 50{ print $name }' input.fasta
测量fasta序列文件中gc含量
bioawk -c fastx '{ print $name, gc($seq) }' input.fasta
获取所有序列的反向互补链序列
bioawk -c fastx '{ print ">"$name;print revcomp($seq) }' input.fasta
修改序列ID,增加前缀或者后缀
bioawk -c fastx '{ print ">PREFIX"$name; $seq }' input.fasta
bioawk -c fastx '{ print ">"$name"|SUFFIX"; $seq }' input.fasta
处理fastq文件
将fastq格式转为fasta格式
bioawk -c fastx '{print ">"$name; print $seq}' input.fastq
计算fastq中碱基的平均质量分数
bioawk -c fastx '{print ">"$name; print meanqual($qual)}' input.fastq
处理BED file
计算bed file中,所对应feature的长度,例如基因的长度
bioawk -c bed '{ print $end - $start }' test.bed
处理SAM 文件
bioawk -c sam '{ s=$seq; if(and($flag, 16)) {s=revcomp($seq) } print ">"$qname"\n"s}' input.sam > output.fasta
处理VCF文件
输出你想要那组samples(这里是foo和bar)所对应的基因型:
grep -v "^##" in.vcf | bioawk -tc hdr '{print $foo,$bar}'
网友评论