• Bedtools如何比较两个参考基因组注释版本的基因?


    问题

    原问题来自:How to calculate overlapping genes between two genome annotation versions?

    其实可分为两个问题:

    • 一是我组装了一个新的基因组,做了多个注释版本,如何比较它们的feature?比如gene
    • 二是我组装了一个新的参考基因组,并做了注释,想和其他已有的同物种参考基因组比较,如何寻找共有和特有的基因(或其他feature)?

    思路

    第一个问题是比较好解决的,使用bedtools即可。

    bedtools比较gff、bed、bam的方法类似,具体可参考这篇教程:
    bedtools求overlap
    要比较gene,可先从gff中提取gene后再进行比较。或者比较所有feature后再筛选也行。

    # 将所有overlap 区域成对输出
     bedtools intersect -a  A.gene.gff3 -b B.gene.gff3 -wa -wb >gene_wa_wb.out
    #只要A中的这段区域与B中区域有交集,就输出,而且overlap几次,就输出几次
     bedtools intersect -a  A.gene.gff3 -b B.gene.gff3 -wa >gene_wa.out
    #除了输出A中的overlap区域外,还会输出B中的整个区间
     bedtools intersect -a  A.gene.gff3 -b B.gene.gff3 -wb >gene_wb.out
    #统计A中每个区域与B overlap的次数
     bedtools intersect -a  A.gene.gff3 -b B.gene.gff3 -c >gene_overlap.count
    #只输出A中没有与B overlap的区域
     bedtools intersect -a  A.gene.gff3 -b B.gene.gff3 -v >gene_nonoverlap.count
     bedtools intersect  -a B.gene.gff3 -b  A.gene.gff3 -v >gene_msu_uniq.count
    

    第二个问题需要用比对软件,如gmap进行比对,建立两个基因组的联系,得到gff文件。再利用bedtools比较。

    /gmap/bin/gmap_build -D ./ -d A A.fa
    /gmap/bin/gmap -D ./ -t 30 -d A -f gff3_gene ../B.cdna > B.gff3
    

    最后的结果要注意,feature不是一一对应的,有一对多,多对一,unique等情况。

  • 相关阅读:
    swoole多进程操作
    LinUX系统ThinkPHP5链接MsSQL数据库的pdo_dblib扩展
    php 访问用友u8数据
    C++/CLI剪辑
    托管代码中调用c++本地代码
    非托管代码中调用托管代码
    Resharper快捷键使用
    Unity3d简便的声音管理方案
    QT离线安装包
    Winform中使用Reactivex代替BeginInvoke/Invoke来更新UI数据
  • 原文地址:https://www.cnblogs.com/jessepeng/p/14823527.html
Copyright © 2020-2023  润新知