利用linux中awk从gtf文件中提取外显子的bed文件

利用awk从gtf文件中提取exon的bed文件。

bed文件格式比较灵活,这里我们提取下前6列。

  • 第1列,染色体编号
  • 第2列,feature(这里指提取的exon)在染色体上起始位置,从0开始计算
  • 第3列,feature(这里指提取的exon)在染色体上结束位置。
  • 第4列,feature的name。
  • 第5列,score值。
  • 第6列,feature所在染色体链,+或者-

其中,feature起始与结束为左闭右开区间,即表示第1到第100个碱基可以理解为数学上的区间[0,100) ,0 为第1个碱基,100表示第101个碱基,但是不包含第101个碱基,因此这个写法表示位置1到100。

cat Homo_sapiens.GRCh38.110.gtf |grep -v  '^#' |sed 's/; /\t/g' |awk 'BEGIN{FS=OFS="\t"} $3 == "exon" { 
gsub(/gene_id "/,"",$9);gsub(/"/,"",$9)
gsub(/transcript_id "/,"",$11);gsub(/"/,"",$11)
gsub(/_number "/,"",$13);gsub(/"/,"",$13)
print $1, $4-1, $5,$9"_"$11"_"$13,".",$7
}' > Homo_sapiens.GRCh38.110_exon.bed

grep -v '^#' 先剔除开始的# 开头的说明行。

BEGIN{FS=OFS="\t"} 表示输入文件分割符FS与输出文件分割符OFS均为制表符“\t”

$3 == "exon" 表示筛选第3列为exion 字符的行。

sed 's/; /\t/g' 这里将原gtf文件的第9列拆分为tab分割。

gsub 是awk 内部函数,将变量替换修改内容返回到变量中。

这里将基因ID ,转录本ID和exon编号做一些处理,在后续print时放到了一起,以便留存更多的信息。

由于bed文件起始位置要从0开始,与gtf文件不同,所以在打印时起始位点要减去1,即$4-1 。这里时可以直接进行减法运算的。

$9"_"$11"_"$13 即为将基因ID,转录本ID和exon number拼接在了一起,以保留更多内容。

查看下最终的bed文件部分内容

$ cat Homo_sapiens.GRCh38.110_exon.bed |head -n 20
chr1	182695	182746	ENSG00000279928_ENST00000624431_exon1	.	+
chr1	183131	183216	ENSG00000279928_ENST00000624431_exon2	.	+
chr1	183493	183571	ENSG00000279928_ENST00000624431_exon3	.	+
chr1	183739	183901	ENSG00000279928_ENST00000624431_exon4	.	+
chr1	183980	184174	ENSG00000279928_ENST00000624431_exon5	.	+
chr1	2581559	2581650	ENSG00000228037_ENST00000424215_exon1	.	+
chr1	2583369	2583495	ENSG00000228037_ENST00000424215_exon2	.	+
chr1	2584124	2584533	ENSG00000228037_ENST00000424215_exon3	.	+
chr1	3069167	3069296	ENSG00000142611_ENST00000511072_exon1	.	+
chr1	3186124	3186474	ENSG00000142611_ENST00000511072_exon2	.	+
chr1	3244086	3244137	ENSG00000142611_ENST00000511072_exon3	.	+
chr1	3385148	3385286	ENSG00000142611_ENST00000511072_exon4	.	+
chr1	3396490	3396593	ENSG00000142611_ENST00000511072_exon5	.	+
chr1	3402790	3402998	ENSG00000142611_ENST00000511072_exon6	.	+
chr1	3404738	3404886	ENSG00000142611_ENST00000511072_exon7	.	+
chr1	3405494	3405648	ENSG00000142611_ENST00000511072_exon8	.	+
chr1	3411383	3412800	ENSG00000142611_ENST00000511072_exon9	.	+
chr1	3414559	3414647	ENSG00000142611_ENST00000511072_exon10	.	+
chr1	3417827	3417997	ENSG00000142611_ENST00000511072_exon11	.	+
chr1	3418666	3418744	ENSG00000142611_ENST00000511072_exon12	.	+
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值