bedtools神器 | gtf转bed | bed文件运算

我们生信技能书有一篇介绍bedtools的文章,可以在微信里搜着看下,非常有用。

http://bedtools.readthedocs.io/en/latest/

gtf转bed用Linux命令完全可以实现,因为gtf每一行比较规律,不像fasta和fastq。

cat gffcmp.combined.gtf | grep -v exon | cut -f1,4,5,9 | cut -f1 -d";" | awk '{print $1, $2, $3, $5}' | sed -e 's/ /\t/g' | sed -e 's/\"//g' > gffcmp.combined.bed

 后面发现,只提取transcript的首尾是不对的,必须要提取exon信息:

cat gffcmp.combined.gtf | grep exon | cut -f1,4,5,9 | cut -f1 -d";" |  awk '{print $1, $2, $3, $5}' | sed -e 's/ /\t/g' | sed -e 's/\"//g' > gffcmp.combined.exon.bed

 

awk轻松计算总的覆盖度:

cat cov.out.coding.exon.out | awk 'BEGIN{i=1;j=1}{i=i+$5;j=j+$6}END{print i,j}'

 

1. bed的 过滤/overlap 运算,就是从一个bed里过滤掉与另一个bed有交集的所有区域。

bedtools intersect -v -a gffcmp.combined.bed -b coding.bed -wa > test.bed

2. bed的覆盖度i计算,比如我有一些转录本,想知道它们在基因组上的覆盖度,怎么办,transcript之间是有overlap的

bedtools coverage -a Teatree_Assembly.fasta.bed -b gffcmp.combined.bed  > cov.out

结果的每一行怎么解读,请看:链接  

Sc0000000       1       3505831 977     1824630 3505830 0.5204559
Sc0000001       1       3488299 853     1929980 3488298 0.5532727
Sc0000002       1       2866215 896     1435119 2866214 0.5007020
Sc0000003       1       2774837 512     1285961 2774836 0.4634368
Sc0000004       1       2768176 402     720812  2768175 0.2603925

3. 2的另一种实现方式

bedtools genomecov -i Arabidopsis_thaliana.TAIR10.38.bed -g Arabidopsis_thaliana.TAIR10.dna_sm.bed > Arabidopsis_thaliana.cov  

解读方法不一样:

chr1   0  980  1000  0.98
chr1   1  20   1000  0.02
chr2   1  500  500   1
genome 0  980  1500  0.653333
genome 1  520  1500  0.346667
chromosome (or entire genome)
depth of coverage from features in input file
number of bases on chromosome (or genome) with depth equal to column 2.
size of chromosome (or entire genome) in base pairs
fraction of bases on chromosome (or entire genome) with depth equal to column 2.

 

fai变bed 

cat Arabidopsis_thaliana.TAIR10.dna_sm.fasta.fai | awk '{print $1, 1, $2}' | sed -e's/ /\t/g' > Arabidopsis_thaliana.TAIR10.dna_sm.bed

gff3转gtf

gffread Arabidopsis_thaliana.TAIR10.38.gff3 -T -o Arabidopsis_thaliana.TAIR10.38.gtf

gtf转bed

cat Arabidopsis_thaliana.TAIR10.38.gtf | cut -f1,4,5,9 | cut -f1 -d";" | awk '{print $1, $2, $3, $5}' | sed -e 's/ /\t/g' | sed -e 's/\"//g' | sed -e 's/transcript\://g' > Arabidopsis_thaliana.TAIR10.38.bed

coverage方法计算覆盖度

bedtools coverage -a Arabidopsis_thaliana.TAIR10.dna_sm.bed -b Arabidopsis_thaliana.TAIR10.38.coding.bed > coding.cov.c

最终统计

cat coding.cov.c | awk 'BEGIN{i=1;j=1}{i=i+$5;j=j+$6}END{print i,j}'

 

我比较了,这两种方法算出来的覆盖度是一摸一样的,但是如果真的只想算基因组覆盖度,genomecov肯定更快一些。

   

bedtools,真的神器,你值得拥有。

  

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GTF(Gene Transfer Format)和BED(Browser Extensible Data)是两种常用的基因组数据格式,用于描述基因的注释和位置信息。 GTF是由基因组浏览器(如Ensembl和UCSC)使用的一种格式,用于记录基因和录本的注释信息。它包含多个字段,包括染色体名称、基因类型、基因的起始和终止位置等。GTF格式适用于对基因和录本级别的信息进行注释和分析。 而BED格式则更简洁,更适合进行基因组注释信息的快速处理和分析。BED文件由至少三列组成,包括染色体名称、区域的起始和终止位置。其它可选的列可以用来提供附加的注释信息,比如基因名、功能等。 GTFBED,我们可以使用bedtools工具。bedtools是一个功能强大的命令行工具集,专门用于处理和分析BED格式的数据。它提供了多种功能,如取交集、合并、排序、过滤等,能够帮助我们高效地处理基因组注释数据。 具体操作可以按照以下步骤进行: 1. 安装bedtools工具,并将其添加到系统的环境变量中。 2. 使用bedtools的命令行工具,执行以下命令: ```shell bedtools convert -i input.gtf -o output.bed -g genome_file.txt ``` 其中,`input.gtf`是待换的GTF文件名,`output.bed`是输出的BED文件名,`genome_file.txt`是包含基因组大小信息的文件。 `< input.gtf`表示将`input.gtf`作为标准输入,`> output.bed`表示将标准输出保存到`output.bed`文件中。 `-g genome_file.txt`用于提供染色体的长度信息,格式如下: ```plaintext chr1 123456 chr2 78910 ... ``` 其中,`chr1`、`chr2`等为染色体名称,`123456`、`78910`等为对应染色体的长度。 3. 执行上述命令后,即可将GTF文件换为BED文件换完成后,我们可以使用BED文件进行后续的数据处理和分析,比如基因区域的合并、查找、统计等操作,以满足不同的研究需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值