利用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 . +