waafle:注释程序集和查找lgt事件的工作流

waafle的Python项目详细描述


waafle

waafle(aworkflow toanotateaassembles andfindlgt events)是一种在包括人类微生物群在内的集合化基因组中发现新的lgt(侧向基因转移)事件的方法。waafle是由tiffany hsu和eric a.franzosa在哈佛t.h.chan公共卫生学院的huttenhower实验室开发的。请直接向waafle用户组提问。

[TOC]

引文

<表><广告>蒂芙尼·Y·许、埃里克·A·弗兰佐萨、丹尼斯·黄、罗成伟、罗伯特·G·贝科、摩根·兰吉尔、柯蒂斯·赫滕豪。人类微生物中新的侧向基因转移事件的前景。(正在准备中)

虽然waafle尚未发布,但如果您在工作中使用waafle或下面提供的数据集,请引用以下网站:http://huttenhower.sph.harvard.edu/waafle

安装

使用pip

安装waafle软件和python依赖项
$ pip install waafle

您还可以使用Mercurial从Bitbucket克隆waafle包(hg):

$ hg clone https://bitbucket.org/biobakery/waafle

或者直接下载并充气waafle软件包:

$ wget https://bitbucket.org/biobakery/waafle/get/default.zip
$ unzip default.zip

软件要求

  • python 3+或2.7+
  • pythonnumpy(用v1.13.3测试)
  • ncbi blast+(使用v2.6.0测试)
  • bowtie2(用于执行读取级qc;使用v2.2.3测试)

数据库要求

waafle需要两个输入数据库:1)blast格式的核苷酸序列数据库和2)相应的分类文件。waafle出版物中使用的版本可在此处下载:

输入数据

一个单独的waafle运行需要一个或两个非固定输入:1)包含元基因组contigs的文件和(可选)描述这些contigs上基因/orf坐标的gff文件。

输入控制(必需)

contigs应以fasta格式作为核苷酸序列提供。contigs应该有唯一的、与blast兼容的头文件。waafle被优化用于处理来自部分组装的亚基因组(跨越2-20个基因,或大约1-20kb)的片段contig。waafle并没有被优化来处理非常长的contigs(100个kbs)、支架或封闭基因组。waafle开发人员建议将megahit作为通用的亚基因组汇编程序。

输入ORF调用(可选)

  1. 可选的gff文件(如果提供)应符合gff格式。waafle开发人员建议使用带有gff输出的通用orf调用者prodigal。 < > >

    执行waafle分析

    用waafle三步一致性分析一组contigs,其中一步是可选的。这三个步骤由三个独立的脚本执行:waafle_searchwaafle_genecaller(可选)和waafle_orgscorer

    步骤1(必需):运行waafle_search

    waafle_searchblastn的简单包装,有助于指导针对waafle格式数据库的亚基因组contigs的核苷酸级搜索(例如,它确保生成下游处理所需的所有非默认blast输出字段)。

    使用输入contigscontigs.fna和位于waafledb中的blast数据库调用waafle_search的示例将是:

    $ waafle_search contigs.fna waafledb/waafled
    

    默认情况下,这将在与输入contigs相同的位置生成输出文件contigs.blatut。有关其他配置选项,请参见--help菜单。

    步骤1.5(可选):运行waafle_genecaller

    如果用户选择不提供gff文件及其contigs,waafle可以直接从上一步产生的blast输出中识别感兴趣的基因坐标:

    $waafle_genecaller contigs.blatut

    这将生成一个名为contigs.gff的gff格式的文件,用于下一个和最后一个waafle步骤。有关其他配置选项,请参见--help菜单。

    步骤2(必需):运行waafle_orgscorer

    waafle分析的最后也是最关键的一步是将步骤1中产生的blast输出与gff文件结合起来,1)沿着输入contigs的长度对基因进行分类评分,然后2)确定这些contigs来自一个或一对clades(即假定的lgt)。假设您已经运行了上述步骤1和1.5,那么对waafle_orgscorer的示例调用将是:

    $ waafle_orgscorer \
      contigs.fna \
      contigs.blastout \
      contigs.gff \
      taxonomy.tsv
    

    这将生成三个输出文件,它们将您的contig划分并描述为假定的lgt contigs、单个clade(无lgt)contigs和未分类contigs(例如,不包含基因的contigs):

    • contigs.lgt.tsv
    • 继续。无lgt.tsv
    • contigs.unclassified.tsv

    下面将更详细地介绍这些文件及其格式(请参见"解释waafle输出"。

    waafle_orgscorer提供了许多微调分析的选项。各种分析参数已经预先优化,以获得对短contigs(只包含两个部分基因)和长contigs(10个基因)的最大特异性。这些选项在--help菜单中有详细说明:

    WAAFLE输出

    contigs.lgt.tsv输出文件列出了假定的lgt contigs的详细信息。它的字段是其他输出文件中包含的字段类型的超集。下面表示acontigs.lgt.tsvfile转置后的前两行,这样第一行(列标题)显示为第一列,第一个lgt contig(第二行)的详细信息显示为第二列:

    CONTIG_NAME          12571
    CALL                 lgt
    CONTIG_LENGTH        9250
    MIN_MAX_SCORE        0.856
    AVG_MAX_SCORE        0.965
    SYNTENY              AABAAAA
    DIRECTION            B>A
    CLADE_A              s__Ruminococcus_bromii
    CLADE_B              s__Faecalibacterium_prausnitzii
    LCA                  f__Ruminococcaceae
    MELDED_A             --
    MELDED_B             --
    TAXONOMY_A           r__Root|k__Bacteria|p__Firmicutes|...|g__Ruminococcus|s__Ruminococcus_bromii
    TAXONOMY_B           r__Root|k__Bacteria|p__Firmicutes|...|g__Faecalibacterium|s__Faecalibacterium_prausnitzii
    LOCI                 252:668:-|792:1367:-|1557:2360:-|2724:3596:-|4540:5592:+|5608:7977:+|8180:8425:+
    ANNOTATIONS:UNIPROT  R5E4K6|D4L7I2|D4JXM0|D4L7I1|D4L7I0|None|D4L7H8
    

    详细字段:

    • contig_name:输入fasta文件中contig的名称。
    • 调用:表示这是一个lgt contig。
    • 连续长度:核苷酸中连续长度。
    • min_max_score:沿容器长度解释容器的两个类的最小分数。(即,将其识别为假定的lgt contig的分数,默认阈值为0.8。)
    • avg_max_score:解释contig的两个类的平均得分(用于对contig的多个潜在解释进行排序)。
    • synteny:分配给a或b类的基因沿着contig的模式。*表示基因可以由任何一个分支贡献;~表示被忽略的基因;表示出现问题(不应发生)。
    • 方向:表示这是一个假定的b-to-a转移事件,由synteny(插入的b基因侧面的一个基因)确定。<代码>?b表示方向不确定。
    • 类别a:类别a的名称。
    • 类b:类b的名称。
    • lca:类a和类b的最低公共祖先。较高级别的lca表示较远的lgt事件。
    • melded_a:如果使用meld报告选项,则此处列出单个melded clades。例如,如果可以通过从属1种转移到属2种属2种来解释contig,则该字段将列出属2作为类a
    • 融合b见上文
    • 分类法
    • 分类法
    • 位点:在格式为start:stop:strand的情况下考虑用于此contig的位点(基因)的坐标
    • 注释:uniprot:表示为输入序列数据库中的基因提供了uniprot注释(格式为uniprot=identifier)。这里给出了每个基因的最佳评分uniprot注释。(附加注释将在输出中显示为附加的、格式类似的列。)

    控制级质量控制

    上述waafle工作流程已经过优化,以将lgts与其他生物事件(如基因缺失)区分开来。然而,它不能从本质上识别错误组装(如嵌合)导致的虚假lgt。为此,我们提供了一个单独的方法,脚本waafle_junctionwaafle_qc

    waafle_连接量化连接支持

    waafle_连接maps读取到contigs以量化对个体基因连接的支持。具体而言,考虑/计算两种形式的支持:

    1. 跨基因-基因连接的测序片段(成对读取)。对于大于典型顺序插入尺寸(约300 nT)的连接,这些不太常见。

    2. 与两个侧翼基因的平均覆盖率相比的相对连接覆盖率。如果连接处相对于其侧翼基因没有被很好地覆盖,它可能代表非生物重叠。

    3. < > >

      调用waafle_junctions的示例如下:

      $ waafle_qc \
        contigs.fna \
        contigs.gff \
        --reads1 contigs_reads.1.fq \
        --reads2 contigs_reads.2.fq \
      

      通过此调用,waafle_junctions将使用bowtie2索引contigs,然后将输入读取(成对)与索引对齐以生成sam文件。(waafle_连接还可以解释来自现有sam文件的映射。)然后将对齐结果解释为对单个连接进行评分,为每个连接生成一个输出文件。

      • contigs.junctions.tsv

      单个连接点的示例报告如下所示:

      CONTIG             SRS011086_k119_10006
      GENE1              1:1363:-
      GENE2              1451:2382:-
      LEN_GENE1          1363
      LEN_GENE2          932
      GAP                87
      JUNCTION_HITS      5
      COVERAGE_GENE1     8.1079
      COVERAGE_GENE2     11.3573
      COVERAGE_JUNCTION  10.9101
      RATIO              1.1210
      

      这篇报告表明基因1和2之间的连接(可能是或可能不是一个lgt连接)是很好的补充。rted:由5对配对(连接点hits=5)跨越,覆盖率(比值=1.12)与侧翼基因(8.11和11.4)的平均值。

      waafle_连接可以调整以生成额外的基因和核苷酸水平的质量报告。有关选项的完整列表,请参阅--help菜单。

      使用连接数据进行连续质量控制

      waafle_qc脚本解释waafle_连接的输出以删除一个或多个连接处具有弱读取支持的连接。目前,该脚本的重点是在假定的含有连接蛋白的lgt中,lgt'ed基因两侧的连接处。

      对waafle qc的调用示例如下:

      $ waafle_qc contigs.lgt.tsv contigs.junctions.tsv
      

      其中contigs.junctions.tsv是这组contigs及其底层读操作上的waafle_junctions的输出。这将生成一个文件contigs.lgt.tsv.qc_pass:read-level evidence支持的原始lgt调用的子集。

      默认情况下,如果一个连接点包含在2+配对中,则该连接点的覆盖率为其两个侧翼基因的平均覆盖率的0.5倍。这些阈值可通过--min结命中--min结比率参数分别进行调节。有关选项的完整列表,请参阅--help菜单。

      高级主题

      格式化waafle的序列数据库

      waafle对一组分类注释的蛋白质编码基因(全基因组)进行核苷酸水平的亚基因组contigs搜索。建立这样一个数据库的一个常见方法是将感兴趣的微生物泛基因组集合起来。蛋白质编码基因应以fasta格式组织,然后编制索引,以便与blastn一起使用。例如,fasta文件waafledb.fnt将被索引为:

      $ pip install waafle
      
      0

      waafle希望输入的fasta序列头遵循特定的格式。报头至少必须包含一个唯一的序列ID(下面的gene_/code>),后跟一个分类单元名或分类ID(下面的species_/code>):

      $ pip install waafle
      
      1

      标题可以包含与基因的功能注释相对应的附加分隔字段。这些字段的格式为system=identifier,每个标题可以包含多个这样的字段,如:

      $ pip install waafle
      
      2

      允许头包含不同的功能注释字段集。waafle目前期望每个基因每个注释系统最多有一个注释;这将在未来的版本中得到改进。(我们目前建议针对uniref90和uniref50数据库对基因进行注释,以便在下游分析中链接到更详细的功能注释。)

      waafle假设序列数据库文件中列出的分类单元都处于相同的分类级别(例如,所有属或所有种或所有株)。

      格式化waafle分类文件

      waafle需要一个分类文件来理解其基因包含在序列数据库中的分类单元之间的分类关系。分类文件是以制表符分隔的子-父关系列表,例如:

      $ pip install waafle
      
      3

      虽然此文件的格式相对简单,但它有许多必须遵守的关键结构约束:

      • 序列数据库中使用的所有分类单元名称/标识都必须出现在分类文件中。

      • 该文件必须包含一个根分类单元,所有其他分类单元都从该根分类单元下移(根分类单元应命名为r\uu root,如上所述)。

      • 序列数据库中使用的所有分类单元名称/标识必须与根目录保持相同的距离。

      分类文件的以下属性是可选的:

      • 传统分类群低于序列文件中分类群的级别可以包含在分类文件中。例如,物种级序列数据库可以包含作为分类文件中物种级分支的子级的分离基因组。(waafle可以为lgt事件使用"leaf support"等条目。)

      • 我们建议在分类学分支前加上前缀,以表示它们的级别。例如,g_u homohomo标识为上面的一个属。

      欢迎加入QQ群-->: 979659372 Python中文网_新手群

      推荐PyPI第三方库


热门话题
无JPA的纯Hibernate ORM java SpringBoot配置   安卓会生成一组唯一的java数字   java我的自定义阵列列表每次启动时都会崩溃我不确定为什么会一直崩溃   Java继承;将子类传递给超类的抽象方法   java从没有if语句的数组中获取instanceof type   java中使用对象的温度转换   存储库接口的JavaSpringDataMongoDBeanXML配置   java JAXWS为iBM websphere、iBM web服务客户端添加寻址   数组试图返回Java中两个对象的面积之和   apache Spark java:columnNameOfCorruptRecord和badRecordsPath在加载csv时不工作   java无法创建。txt文件   java Hibernate与MySQL插入查询不一致   不考虑java Hazelcast分布式地图的最大大小   bash Java如何在父进程中设置环境变量