waafle:注释程序集和查找lgt事件的工作流
waafle的Python项目详细描述
waafle
waafle(aworkflow toanotateaassembles andfindlgt events)是一种在包括人类微生物群在内的集合化基因组中发现新的lgt(侧向基因转移)事件的方法。waafle是由tiffany hsu和eric a.franzosa在哈佛t.h.chan公共卫生学院的huttenhower实验室开发的。请直接向waafle用户组提问。
[TOC]
引文
<表><广告>(虽然waafle尚未发布,但如果您在工作中使用waafle或下面提供的数据集,请引用以下网站:http://huttenhower.sph.harvard.edu/waafle)
安装
使用pip
:
$ 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+
- python
numpy
(用v1.13.3测试) - ncbi blast+(使用v2.6.0测试)
- bowtie2(用于执行读取级qc;使用v2.2.3测试)
数据库要求
waafle需要两个输入数据库:1)blast格式的核苷酸序列数据库和2)相应的分类文件。waafle出版物中使用的版本可在此处下载:
- waafledb.tar.gz(4.3 GB)
- waafledb廑u taxonomy.tsv(<;1 MB)
输入数据
一个单独的waafle运行需要一个或两个非固定输入:1)包含元基因组contigs的文件和(可选)描述这些contigs上基因/orf坐标的gff文件。
输入控制(必需)
contigs应以fasta格式作为核苷酸序列提供。contigs应该有唯一的、与blast兼容的头文件。waafle被优化用于处理来自部分组装的亚基因组(跨越2-20个基因,或大约1-20kb)的片段contig。waafle并没有被优化来处理非常长的contigs(100个kbs)、支架或封闭基因组。waafle开发人员建议将megahit作为通用的亚基因组汇编程序。
输入ORF调用(可选)
- 可选的gff文件(如果提供)应符合gff格式。waafle开发人员建议使用带有gff输出的通用orf调用者prodigal。
< > >
执行waafle分析
用waafle三步一致性分析一组contigs,其中一步是可选的。这三个步骤由三个独立的脚本执行:
waafle_search
,waafle_genecaller
(可选)和waafle_orgscorer
。步骤1(必需):运行
waafle_search
waafle_search
是blastn
的简单包装,有助于指导针对waafle格式数据库的亚基因组contigs的核苷酸级搜索(例如,它确保生成下游处理所需的所有非默认blast输出字段)。使用输入contigs
contigs.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.tsv
file转置后的前两行,这样第一行(列标题)显示为第一列,第一个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_junction
和waafle_qc
用
waafle_连接量化连接支持
waafle_连接
maps读取到contigs以量化对个体基因连接的支持。具体而言,考虑/计算两种形式的支持:跨基因-基因连接的测序片段(成对读取)。对于大于典型顺序插入尺寸(约300 nT)的连接,这些不太常见。
与两个侧翼基因的平均覆盖率相比的相对连接覆盖率。如果连接处相对于其侧翼基因没有被很好地覆盖,它可能代表非生物重叠。
< > >contigs.junctions.tsv
序列数据库中使用的所有分类单元名称/标识都必须出现在分类文件中。
该文件必须包含一个根分类单元,所有其他分类单元都从该根分类单元下移(根分类单元应命名为
r\uu root
,如上所述)。序列数据库中使用的所有分类单元名称/标识必须与根目录保持相同的距离。
传统分类群低于序列文件中分类群的级别可以包含在分类文件中。例如,物种级序列数据库可以包含作为分类文件中物种级分支的子级的分离基因组。(waafle可以为lgt事件使用"leaf support"等条目。)
我们建议在分类学分支前加上前缀,以表示它们的级别。例如,
g_u homo
将homo标识为上面的一个属。
调用
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文件的映射。)然后将对齐结果解释为对单个连接进行评分,为每个连接生成一个输出文件。单个连接点的示例报告如下所示:
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
将被索引为:
0$ pip install waafle
waafle希望输入的fasta序列头遵循特定的格式。报头至少必须包含一个唯一的序列ID(
下面的gene_/code>),后跟一个分类单元名或分类ID(
下面的species_/code>):
1$ pip install waafle
标题可以包含与基因的功能注释相对应的附加
分隔字段。这些字段的格式为
system=identifier
,每个标题可以包含多个这样的字段,如:
2$ pip install waafle
允许头包含不同的功能注释字段集。waafle目前期望每个基因每个注释系统最多有一个注释;这将在未来的版本中得到改进。(我们目前建议针对uniref90和uniref50数据库对基因进行注释,以便在下游分析中链接到更详细的功能注释。)
waafle假设序列数据库文件中列出的分类单元都处于相同的分类级别(例如,所有属或所有种或所有株)。
格式化waafle分类文件
waafle需要一个分类文件来理解其基因包含在序列数据库中的分类单元之间的分类关系。分类文件是以制表符分隔的子-父关系列表,例如:
3$ pip install waafle
虽然此文件的格式相对简单,但它有许多必须遵守的关键结构约束:
分类文件的以下属性是可选的:
推荐PyPI第三方库