美文网首页Linuxtss
「 bedtools 」提取上游+gene+下游序列

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

作者: 溪溪溪溪溪川 | 来源:发表于2021-04-22 21:50 被阅读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

    相关文章

      网友评论

        本文标题:「 bedtools 」提取上游+gene+下游序列

        本文链接:https://www.haomeiwen.com/subject/jwafrltx.html