Bio.SearchIO.ExonerateIO包

子模块

模块内容

Bio.SearchIO支持免除输出格式。

此模块添加了对处理免罪输出的支持。Exonerate是一种用于成对序列比较的通用工具,允许您使用几种不同的模型来对齐序列。

Bio.SearchIO.ExonerateIO在以下Exonerate版本和型号上进行了测试:

  • 版本:2.2

  • 模型:-仿射:本地 - dna 2基因组-编码2编码 - est 2基因组-基因组2基因组 - ner -蛋白质2dna - 蛋白质2基因组-无缺陷 - unapped:翻译

尽管模型测试并非详尽无遗,但ExonerateIO应该能够应对所有Exonerate模型。如果您偶然发现不可解析的文件,请提交错误报告。

有关Exonerate的更多信息,请访问其主页www.ebi.ac.uk/~guy/exonerate/

支持的格式

  • 纯文本对齐方式-“exonerate-text” - 解析、索引

  • 粗俗路线 - “免罪-粗俗”-解析、索引

  • 雷达线 - 'exonerate-cigar' -解析、索引

在Exconerate上,这些输出格式并不相互排斥。例如,同一文件中可能同时有纯文本和粗俗输出。然而,ExonerateIO一次只能处理其中一个。例如,如果您有一个既包含纯文本又包含粗俗行的文件,则必须选择“exonerate-text”或“exonerate-vulty”来解析它。

由于雪茄格式规范,对齐的许多特征(例如插页或移码)可能会折叠成单个特征(在这种情况下,它们被标记为“D”代表“删除”)。解析器不会试图猜测它遇到的D标签是真正的删除还是折叠的特征。因此,与“exonerate-text”或“exonerate-civil”相比,使用“exonerate-civil”进行解析或索引可能会产生不同的结果。

免罪文本

纯文本输出/ C4对齐是由“--showalignemnt”标志触发的输出。与其他两种输出格式相比,这种格式包含最多的信息,具有完整的查询和比对序列。

以下是ExonerateIO可以处理的C4输出对齐的一些示例(坐标未按比例编写)::

1. simple ungapped alignments

       1 : ATGGGCAATATCCTTCGGAAAGGTCAGCAAAT :      56
           ||||||||||||||||||||||||||||||||
 1319275 : ATGGGCAATATCCTTCGGAAAGGTCAGCAAAT : 1319220

2. alignments with frameshifts:

     129 : -TGCCGTTACCAT----GACGAAAGTATTAAT : 160
           -CysArgTyrHis----AspGluSerIleAsn
           #||||||||||||####|||||||||||||||
           #CysArgTyrHis####AspGluSerIleAsn
 1234593 : GTGCCGTTACCATCGGTGACGAAAGTATTAAT : 1234630

3. alignments with introns and split codons:

    382 :    {A}                             {CC}AAA                 :    358
          AAA{T}  >>>> Target Intron 3 >>>>  {hr}LysATGAGCGATGAAAATA
          || { }++         55423 bp        ++{  } !  |||  ||||||||||
          AAC{L}gt.........................ag{eu}AspTTGAATGATGAAAATA
  42322 :    {C}                             {TG}GAT                 :  97769

4. alignments with NER blocks

    111 : CAGAAAA--<   31  >--CTGCCCAGAAT--<   10  >--AACGAGCGTTCCG- :    184
          | |||||--< NER 1 >--| ||||| | |--< NER 2 >--|||  | ||||||-
 297911 : CTGAAAA--<   29  >--CCGCCCAAAGT--<   13  >--AACTGGAGTTCCG- : 297993

ExonerateIO相当广泛地利用HSPFragment模型来处理非无缺口对齐。对于任何单个HSPFragment,如果ExonerateIO看到intron、NER块或移码,它会将该片段分解为两个HSPFragment对象,并适当调整它们的每个开始和结束坐标。

您可能注意到Exonerate总是使用三个字母的氨基酸代码来显示蛋白质序列。如果蛋白质本身是查询序列的一部分,例如在蛋白质2dna模型中,ExonerateIO将将蛋白质序列转换为使用单字母代码。这是因为存储序列的SeqRecord对象仅为单字母序列设计。如果Exonerate还输出基础的核苷酸序列,则它将被保存到 aln_annotation 作为三胞胎列表的条目。

如果蛋白质序列不是实际比对的一部分,例如在est2genome或genome2genome模型中,ExonerateIO将保留三个字母代码并将其存储为 aln_annotation 条目在这些情况下,命中和查询序列可以直接用作SeqRecord对象,因为它们是单字母核苷酸代码。然后将三个字母的蛋白质序列作为条目存储在 aln_annotation 字典

对于'exonerate-text',ExonerateIO提供以下对象属性:

对象

属性

QueryResult

描述

查询序列描述

ID

查询序列ID

模型

对准模型

程序

“开脱”

击中

描述

命中序列描述

ID

命中序列ID

HSP

hit_split_codons

命中序列中分裂密码子坐标列表

评分

对准分数

query_split_codons

查询序列中分裂密码子坐标列表

HSPFragment

aln_annotation

对齐相似性字符串、命中序列注释和/或查询序列注释

击中

命中序列

hit_end

命中序列结束坐标

hit_frame

命中序列阅读框

hit_start

命中序列开始坐标

hit_strand

命中序列链

查询

查询序列

query_end

查询序列结束坐标

query_frame

查询序列阅读框架

query_start

查询序列起始坐标

query_strand

查询序列链

请注意,您还可以使用默认的SPP或HSPFragment属性。例如,要检查结果的插页坐标,您可以使用 query_inter_rangeshit_inter_ranges 属性:

>>> from Bio import SearchIO
>>> fname = 'Exonerate/exn_22_m_genome2genome.exn'
>>> all_qresult = list(SearchIO.parse(fname, 'exonerate-text'))
>>> hsp = all_qresult[-1][-1][-1]   # last qresult, last hit, last hsp
>>> hsp
HSP(...)
>>> hsp.query_inter_ranges
[(388, 449), (284, 319), (198, 198), (114, 161)]
>>> hsp.hit_inter_ranges
[(487387, 641682), (386207, 487327), (208677, 386123), (71917, 208639)]

在这里,您可以看到,对于查询和命中Intron,每个数组中的坐标始终是(start,end),其中start <= end。但当您将每个二元组与下一个二元组进行比较时,坐标就会减少。这表明查询序列和命中序列都位于负链上。免除输出减去链的结果以递减的方式;开始坐标始终大于结束坐标。ExonerateIO保留了整个片段的顺序,但使用其自己的标准来存储单个片段的开始和结束坐标。

您可能还注意到,中的第三个二元组 query_inter_ranges 是(198,198),两个完全相同的数字。这意味着查询序列在该位置没有任何间隙。该缺口仅存在于命中序列中,其中我们看到第三组包含(208677,386123),约177 k个碱基的缺口。

另一个例子是使用 hit_frame_allquery_frame_all 要查看您的对齐中是否有任何帧移:

>>> from Bio import SearchIO
>>> fname = 'Exonerate/exn_22_m_coding2coding_fshifts.exn'
>>> qresult = next(SearchIO.parse(fname, 'exonerate-text'))
>>> hsp = qresult[0][0]      # first hit, first hsp
>>> hsp
HSP(...)
>>> hsp.query_frame_all
[1, 2, 2, 2]
>>> hsp.hit_frame_all
[1, 1, 3, 1]

在这里您可以看到,对齐整体有三个移码。第一个发生在查询序列中,在第一个片段(1 -> 2个转移)之后,第二个发生在命中序列中,在第二个片段(1 -> 3个转移)之后,最后一个也发生在命中序列中,在最后一个片段(3 -> 1个转移)之前。

您可以使用其他默认的热休克蛋白属性来简化您的工作流程。有关更多详细信息,请参阅SPP对象文档。

免罪粗俗

粗俗的格式提供了一种简洁的方式来表示Exonerate创建的路线。一般来说,除了“模型”信息和实际序列本身之外,它包含与纯文本输出相同的信息。您可以预期使用“exonerate-text”和“exonerate-vulty”获得的坐标是相同的。这两种格式还使用相同的触发器创建HSPFragment:intron、NER块和/或移码。

无罪雪茄

雪茄格式提供了更紧凑的免责对齐表示。然而,这会带来丢失信息的代价。例如,在雪茄格式中,插入子被视为简单删除。这使得解析器无法区分简单删除区或intron区。因此,与“免罪-粗俗”或“免罪-文本”相比,“免罪-雪茄”可能会产生不同的坐标集和片段。