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_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)]
在这里您可以看到,对于查询内含子和命中内含子,每个元组中的坐标总是(start,end)where start<=end。但是,当您将每个元组与下一个元组进行比较时,坐标会减少。这表明查询和命中序列都位于负链上。免责输出减去STRING结果以递减的方式进行;开始坐标始终大于结束坐标。ExonerateIO将片段排序作为一个整体保留,但使用其自己的标准来存储单个片段的开始和结束坐标。
您可能还注意到,中的第三个元组 query_inter_ranges
是(198,198),两个完全相同的数字。这意味着查询序列在该位置没有任何间隙。这个缺口只出现在命中序列中,我们看到第三个元组包含(208677,386123),大约有177k个碱基的缺口。
另一个示例是使用 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个移位)。
您还可以使用其他默认HSP属性来简化您的工作流。有关更多详细信息,请参阅HSP对象文档。
免责-粗俗¶
粗俗格式提供了一种简洁的方式来表示由Exonerate创建的对齐。通常,除了“模型”信息和实际序列本身之外,它包含的信息与纯文本输出相同。您可以预期使用‘exonerate-text’和‘exonerate-gugar’得到的坐标是相同的。这两种格式还使用相同的触发器创建HSPFragment:内含子、NER块和/或帧移位。
免责雪茄¶
雪茄格式提供了对免责对齐的更紧凑的表示。然而,这是以丢失信息为代价的。例如,在雪茄形式中,内含子被视为简单的缺失。这使得解析器不可能区分简单的删除或内含子区域。因此,与“免责-粗俗”或“免责文本”相比,“免责雪茄”可能会产生不同的坐标组和碎片。