Linuxtss

「 bedtools 」提取上游+gene+下游序列

2021-04-22  本文已影响0人  溪溪溪溪溪川

1、bed文件格式介绍

BED文件每行至少包括chrom,chromStart,chromEnd三列必选;另外还可以添加额外的9列可选,这些列的顺序是固定的(之前一直以为时第五列,由于共线性里面分析的格式的第五列是正负,一直造成误解,啊啊啊啊啊)。

必选的三列:
1.chrom - 染色体的名称(例如chr3,chrY,chr2_random)或支架(例如scaffold10671)。
2.chromStart- 染色体或支架中特征的起始位置。染色体中的第一个碱基编号为0。
3.chromEnd- 染色体或支架中特征的结束位置。所述 chromEnd碱没有包括在特征的显示。例如,染色体的前100个碱基定义为chromStart = 0,chromEnd = 100,并跨越编号为0-99的碱基。
9个可选的BED字段:
4.name - 定义BED行的名称。当轨道打开到完全显示模式时,此标签显示在Genome浏览器窗口中BED行的左侧,或者在打包模式下直接显示在项目的左侧。
5.score - 得分在0到1000之间。如果此注释数据集的轨迹线useScore属性设置为1,则得分值将确定显示此要素的灰度级别(较高的数字=较深的灰色)。此表显示 Genome Browser将BED分数值转换为灰色阴影:
6.strand - 定义strand。要么“。” (=无绞线)或“+”或“ - ”。
7.thickStart- 绘制特征的起始位置(例如,基因显示中的起始密码子)。当没有厚部分时,thickStart和thickEnd通常设置为chromStart位置。
8.thickEnd - 绘制特征的结束位置(例如基因显示中的终止密码子)。
blockStart位置。此列表中的项目数应与blockCount相对应。
9.itemRgb- R,G,B形式的RGB值(例如255,0,0)。如果轨道行 itemRgb属性设置为“On”,则此RBG值将确定此BED行中包含的数据的显示颜色。注意:建议使用此属性的简单颜色方案(八种颜色或更少颜色),以避免压倒Genome浏览器和Internet浏览器的颜色资源。
10.blockCount- BED行中的块(外显子)数。
11.blockSizes- 块大小的逗号分隔列表。此列表中的项目数应与blockCount相对应。
12.blockStarts - 以逗号分隔的块开始列表。应该相对于chromStart计算所有blockStart**位置。此列表中的项目数应与blockCount相对应。

2.bedtools提取序列

bedtools:
[ Genome arithmetic ] #基因组区间运算
intersect-查看两个文件不同区间是否有 overlap;
closest-#找到和目标区间最近的特征区间;
coverage-计算特定区间的覆盖深度;
map-针对存在交叠区间的 B 文件的某一列应用函数如说求和、均值
genomecov-计算在整个基因组的覆盖深度;
merge-将重叠的或相邻的区间合并成一个区域;
cluster-类似 merge,但是只是增加一列标记,用于标明哪些行是聚集在一起的;
complement-提供一个区间,然后获得此区间与整个基因组不重叠的区域;
subtract-类似 complement,不是针对基因组,而是针对两个区域,去除掉一
个区域与另一个区域重叠部分;
slop-根据已有特征区间向外延展,可分别指定上下游延伸长度;
flank-根据现有区间,指定侧翼延伸长度,得到两侧翼位置的新区间,不包含现有区间;
sort-对区域进行排序;
random-根据 genome 文件随机生成指定长度指定个数的区域;
annotate-从其他多个文件中统计指定区间的覆盖深度;

2.1 提取gff文件的所有基因位置,并转换成bed格式
less ../01.data/EVM.final.gene.gff3|grep -w gene > genes.gff
convert2bed  --input=gff --output=bed  <genes.gff >genes.bed #调用的bedops,也可以自己用awk等提取

awk 示例 :
less Mimosa_pudica_v1.gff |grep -w mRNA |awk '{print$1"\t"$4"\t"$5"\t"$9"\t"".""\t"$7}' |head
效果如下:
scaffold10018_cov214    9657    10808   ID=Mimpu10018S00001     .-
scaffold1001_cov228     131443  132576  ID=Mimpu1001S00002      .+
scaffold1001_cov228     134493  139136  ID=Mimpu1001S00003      .-
scaffold1001_cov228     38129   38701   ID=Mimpu1001S00004      .+
scaffold10020_cov190    52371   53006   ID=Mimpu10020S00005     .+
scaffold10020_cov190    72945   74067   ID=Mimpu10020S00006     .-
scaffold10020_cov190    171722  173389  ID=Mimpu10020S00007     .+
scaffold10020_cov190    137289  137993  ID=Mimpu10020S00008     .-


2.2 计算染色体长度
samtools faidx ../01.data/03.Assembly_final/final.genome.fasta
cut -f 1,2 ../01.data/03.Assembly_final/final.genome.fasta.fai >final.genome.fasta.len
2.3 创建包含promoter位置的bed文件,up or down位置

slop-根据已有特征区间向外延展,可分别指定上下游延伸长度;
flank-根据现有区间,指定侧翼延伸长度,得到两侧翼位置的新区间,不包含现有区间;
一般默认启动子区域应该是上下游2kb,最大不超过5kb。

#up or down
#提取上游3k bed
bedtools flank -i genes.bed -g final.genome.fasta.len  -l 3000 -r 0 -s > up_3k.promoters.bed
#提取gene bed
bedtools flank -i genes.bed -g final.genome.fasta.len  -l 0 -r 2000 -s > down_2k.promoters.bed
#提取上下游的bed
bedtools flank -i genes.bed -g final.genome.fasta.len  -l 3000 -r 2000 -s > up_down.promoters.bed

一起提取 up+gene+down序列,放在一条序列中,重点!!!我也不理解做启动子预测为什么要把基因序列加进去,但是有些人就喜欢这样,既然如此就满足各方需求。

bedtools slop  -i genes.bed -g final.genome.fasta.len  -l 3000 -r 2000 -s > up_3k.promoters.slop.bed

# -l 基因起始位置前多少bp
# # -r 基因后多少bp
# # -s 
2.4 根据bed中的位置信息,在基因组序列中提取指定序列

分上下游提取;上下游一起提取,fa文件中id会一致;提取上游+gene+下游

#分上下游提取
bedtools getfasta -s -fi ../01.data/03.Assembly_final/final.genome.fasta -bed up_3k.promoters.bed -fo up_3k.promoters.fa -name
bedtools getfasta -s -fi ../01.data/03.Assembly_final/final.genome.fasta -bed down_2k.promoters.bed -fo down_2k.promoters.fa -name
#上下游一起提取,fa文件中id会一致
bedtools getfasta -s -fi ../01.data/03.Assembly_final/final.genome.fasta -bed up_down_2k.promoters.bed -fo down_2k.promoters.fa -name
#提取gene序列
bedtools getfasta -s -fi ../01.data/03.Assembly_final/final.genome.fasta -bed genes.bed -fo J493.genes.fa -name
#提取上游+gene+下游,重点
bedtools getfasta -s -fi ../01.data/03.Assembly_final/final.genome.fasta -bed up_3k.promoters.slop.bed -fo J493.up_genes_down.fa -name

如果超过坐标范围,bedtools会自己将坐标写到可提取到的坐标,如起始为0,末尾不足想要的长度时,提取的序列会用小写提示。

参考:
https://www.jianshu.com/p/9208c3b89e44

上一篇下一篇

猜你喜欢

热点阅读