Bio.SearchIO.ExonerateIO包

子模块

模块内容

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

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

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

  • 版本:2.2

  • 型号:-affine:local-cdna2基因组-编码2编码-est2基因组-基因组2ome-ner-protein 2dna-protein 2基因组-未映射-未映射:已翻译

虽然模型测试不是详尽的,但ExonerateIO应该能够处理所有免除责任的模型。如果您偶然发现无法解析的文件,请提交错误报告。

有关免责的更多信息,请访问其主页:www.ebi.ac.uk/~Guy/exonerate/

支持的格式

  • 纯文本对齐-‘免责-文本’-解析,索引

  • 粗俗的行-‘无罪-粗俗’-解析,索引

  • 雪茄行-‘免责-雪茄’-解析,索引

在免责时,这些输出格式并不是彼此独占的。例如,您可能在同一文件中同时具有纯文本和粗俗输出。但是,ExonerateIO一次只能处理其中一个。例如,如果您有一个同时包含纯文本和粗俗行的文件,则必须选择“exonerate-text”或“exonerate-gugar”来解析它。

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

免责-文本

纯文本输出/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看到内含子、NER挡路或FrameShift,它会将片段拆分成两个HSPFragment对象,并相应地调整它们的开始和结束坐标。

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

如果蛋白质序列不是实际比对的一部分,例如在est2基因组或genome2基因组模型中,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

查询序列链

请注意,您还可以使用默认的HSP或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)]

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

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

另一个示例是使用 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个移位)。

您还可以使用其他默认HSP属性来简化您的工作流。有关更多详细信息,请参阅HSP对象文档。

免责-粗俗

粗俗格式提供了一种简洁的方式来表示由Exonerate创建的对齐。通常,除了“模型”信息和实际序列本身之外,它包含的信息与纯文本输出相同。您可以预期使用‘exonerate-text’和‘exonerate-gugar’得到的坐标是相同的。这两种格式还使用相同的触发器创建HSPFragment:内含子、NER块和/或帧移位。

免责雪茄

雪茄格式提供了对免责对齐的更紧凑的表示。然而,这是以丢失信息为代价的。例如,在雪茄形式中,内含子被视为简单的缺失。这使得解析器不可能区分简单的删除或内含子区域。因此,与“免责-粗俗”或“免责文本”相比,“免责雪茄”可能会产生不同的坐标组和碎片。