35.《Bioinformatics Data Skills》之生物信息文本处理利器bioawk

作为表格文本处理命令awk的延伸,Heng Li开发了专门处理生物信息学的文件(例如bed, sam, vcf, gtf等)的命令bioawk,我们了解一下。


简介

bioawk发布在github上,可以通过如下命令进行下载,编译与安装:

git clone git://github.com/lh3/bioawk.git && cd bioawk && make && sudo cp bioawk /usr/local/bin/

bioawkawk命令的使用方式类似(若不了解awk可以见上节内容),命令最大的特点在于-c参数,通过help了解可用的输入:

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

通过-c输入文件类型,bioawk会智能地将各列赋给指定的变量(与awk类似,使用$1$2也可以)。


实例

本节例子数据地址

  1. Mus_musculus.GRCm38.75_chr1.gtf为例,假如我们想要统计所有蛋白编码基因的长度的话,可以采用如下命令:
$ bioawk -c gff '$source~/protein_coding/ && $feature~/gene/ {print $seqname"\t"($end - $start)}' Mus_musculus.GRCm38.75_chr1.gtf | head -n4
1       465597
1       16807
1       5485
1       12533
  1. -c设置为fastx的话,bioawk会自动判断输入文件类型为fastq还是fasta。例如我们统计fastq文件的行数:
$ bioawk -c fastx 'END{print NR}' contam.fastq
8
  1. 可以通过如下命令将fastq文件转换为fasta文件:
$ bioawk -c fastx '{print ">"$name"\n"$seq}' contam.fastq | head -n4
>DJB775P1:248:D0MDGACXX:7:1202:12362:49613
TGCTTACTCTGCGTTGATACCACTGCTTAGATCGGAAGAGCACACGTCTGAA
>DJB775P1:248:D0MDGACXX:7:1202:12782:49716
CTCTGCGTTGATACCACTGCTTACTCTGCGTTGATACCACTGCTTAGATCGG

还可以使用revcomp函数来确定序列的逆向互补序列:

$ bioawk -c fastx '{print ">"$name"\n"revcomp($seq)}' contam.fastq | head -n4
>DJB775P1:248:D0MDGACXX:7:1202:12362:49613
TTCAGACGTGTGCTCTTCCGATCTAAGCAGTGGTATCAACGCAGAGTAAGCA
>DJB775P1:248:D0MDGACXX:7:1202:12782:49716
CCGATCTAAGCAGTGGTATCAACGCAGAGTAAGCAGTGGTATCAACGCAGAG
  1. 最后我们统计一下之前下载的小鼠参考基因组fa压缩文件的序列长度:
$ bioawk -c fastx '{print $name,length($seq)}' Mus_musculus.GRCm38.74.dna.toplevel.fa.gz  | head
1       195471971
10      130694993
11      122082543
12      120129022
13      120421639
14      124902244
15      104043685
16      98207768
17      94987271
18      90702639

  1. 其实,bioawk同样可以处理tsv文件,使用-t或者-c hdr作为参数。前者代表输入为纯tsv文件,而后者则代表此tsv的第一行为表头,bioawk为自动将每一列的信息赋给以表头命名的变量。以文件genotypes.txt为例进行说明:
id      ind_A   ind_B   ind_C   ind_D
S_000   G/G     A/G     A/A     A/G
S_001   A/T     A/T     T/T     T/T
S_002   C/T     T/T     C/C     C/T
S_003   C/T     C/T     C/T     C/C
S_004   C/G     G/G     C/C     C/G
S_005   A/T     A/T     A/T     T/T
S_006   C/G     C/C     C/G     C/G
S_007   A/G     G/G     A/A     G/G
S_008   G/T     G/T     T/T     G/T
S_009   C/C     C/C     A/A     A/C

这里通过bioawk寻找ind_Aind_B列值相同的id:

$ bioawk -c hdr '$ind_A == $ind_B{print $id}' genotypes.txt
S_001
S_003
S_005
S_008
S_009
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容

  • 前面我们学习了基本的Unix表格文本数据的处理命令(grep, cut, sort, uniq等),但是在更加复杂...
    DataScience阅读 421评论 0 6
  • 写在前面 能干什么? 学习任何一个工具或是文章中的一类炫酷图表时,我觉得首先需要能明白:这个工具/这类图表能干什么...
    Dawn_WangTP阅读 5,647评论 0 14
  • 第十章 使用序列数据 生物信息学的核心问题之一是处理大量的(通常定义糟糕或模糊)文件格式。久而久之,一些特定的简单...
    yangliunk1987阅读 4,984评论 3 53
  • 慢慢看,憋着急!很有用! 前言: 首先呢,在你的Linux系统中新建一个文件,Thanos.txt(紫薯侠赐予你力...
    刘小泽阅读 3,263评论 6 33
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 124,045评论 2 7