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_ranges
或 hit_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_all
和 query_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区。因此,与“免罪-粗俗”或“免罪-文本”相比,“免罪-雪茄”可能会产生不同的坐标集和片段。