Bio.SearchIO.BlatIO 模块
用于 BLAT 输出格式的 Bio.SearchIO 解析器。
此模块添加了对解析 BLAT 输出的支持。BLAT(BLAST-Like Alignment Tool)是一种序列相似性搜索程序,最初是为注释人类基因组而构建的。
Bio.SearchIO.BlastIO 已使用独立 BLAT 版本 34、psLayout 版本 3 进行测试。它应该能够毫无问题地解析 psLayout 版本 4。
有关 BLAT 的更多信息,请访问以下网站:
支持的格式
BlatIO 支持对 PSL 和 PSLX 输出格式进行解析、索引和写入,无论是否包含标题。要解析、索引或写入 PSLX 文件,请使用 'pslx' 关键字参数并将其设置为 True。
>>> # blat-psl defaults to PSL files
>>> from Bio import SearchIO
>>> psl = 'Blat/psl_34_004.psl'
>>> qresult = SearchIO.read(psl, 'blat-psl')
>>> qresult
QueryResult(id='hg19_dna', 10 hits)
>>> # set the pslx flag to parse PSLX files
>>> pslx = 'Blat/pslx_34_004.pslx'
>>> qresult = SearchIO.read(pslx, 'blat-psl', pslx=True)
>>> qresult
QueryResult(id='hg19_dna', 10 hits)
对于解析和索引,您无需指定文件是否包含标题。对于写入,如果您想写入标题,可以将 'header' 关键字参数设置为 True。这将向您的输出文件写入 'psLayout 版本 3' 标题。
>>> from Bio import SearchIO
>>> qresult = SearchIO.read(psl, "blat-psl")
>>> SearchIO.write(qresult, "example.psl", "blat-psl", header=True)
(1, 10, 19, 23)
>>> import os
>>> os.remove("example.psl")
请注意,写入的 HSPFragment 数量可能超过 HSP 对象的数量。这是因为在 PSL 文件中,可以将单个匹配项组成非连续的序列片段。这就是 HSPFragment 对象发挥作用的地方。这些片段被归组到单个 HSP 中,因为它们共享相同的统计信息(例如匹配数量、BLAT 评分等)。但是,它们不共享相同的序列属性,例如起点和终点坐标,这使得它们成为不同的对象。
除了解析 PSL(X) 文件外,BlatIO 还会计算搜索结果的百分比标识和评分。这是使用此处发布的计算公式完成的:http://genome.ucsc.edu/FAQ/FAQblat.html#blat4。它模仿了 UCSC 的 Web BLAT 服务所做的评分和百分比标识计算。
由于 BlatIO 以单次传递的方式解析文件,因此它期望来自同一查询的所有结果都在连续的行中。如果来自一个查询的结果分布在非连续的行中,那么 BlatIO 将认为它们是单独的 QueryResult 对象。
在大多数情况下,PSL(X) 格式使用与 Python 相同的坐标系(从零开始,半开)。这些坐标固定在正链上。但是,如果查询与负链对齐,则 BLAT 将在负链上固定 qStarts 坐标。BlatIO 知道这一点,并且每当它看到负链查询匹配时,它都会将 qStarts 坐标重新固定到正链上。相反,当您写入 PSL(X) 文件时,BlatIO 将再次将 qStarts 重新固定到负链上。
BlatIO 提供以下属性-列映射
对象 |
属性 |
列名,值 |
---|---|---|
QueryResult |
id |
Q name,查询序列 ID |
seq_len |
Q size,查询序列完整长度 |
|
Hit |
id |
T name,命中序列 ID |
seq_len |
T size,命中序列完整长度 |
|
HSP |
hit_end |
T end,最后一个命中片段的结束坐标 |
hit_gap_num |
T gap bases,插入到命中序列的碱基数量 |
|
hit_gapopen_num |
T gap count,命中序列中插入的间隙数量 |
|
hit_span_all |
blockSizes,每个片段的大小 |
|
hit_start |
T start,第一个命中片段的起始坐标 |
|
hit_start_all |
tStarts,每个命中片段的起始坐标 |
|
match_num |
match,非重复匹配的数量 |
|
mismatch_num |
mismatch,错配的数量 |
|
match_rep_num |
rep. match,属于重复序列的匹配数量 |
|
n_num |
N’s,N 碱基的数量 |
|
query_end |
Q end,最后一个查询片段的结束坐标 |
|
query_gap_num |
query fragment Q gap bases,插入到查询序列的碱基数量 |
|
query_gapopen_num |
Q gap count,查询序列中插入的间隙数量 |
|
query_span_all |
blockSizes,每个片段的大小 |
|
query_start |
Q start,第一个查询块的起始坐标 |
|
query_start_all |
qStarts,每个查询片段的起始坐标 |
|
len [1] |
block count,比对中的块数量 |
|
HSPFragment |
hit |
hit sequence,如果存在 |
hit_strand |
strand,命中序列链 |
|
query |
query sequence,如果存在 |
|
query_strand |
strand,查询序列链 |
除了上面的列映射之外,BlatIO 还提供以下对象属性
对象 |
属性 |
值 |
---|---|---|
HSP |
gapopen_num |
|
ident_num |
matches + repmatches,相同残基的总数 |
|
ident_pct |
百分比标识,使用 UCSC 的公式计算 |
|
query_is_protein |
布尔值,查询序列是否为蛋白质 |
|
score |
HSP 评分,使用 UCSC 的公式计算 |
最后,还提供了默认的 HSP 和 HSPFragment 属性。有关这些属性的更多详细信息,请参阅 HSP 和 HSPFragment 文档。
- class Bio.SearchIO.BlatIO.BlatPslParser(handle, pslx=False)
基类:
object
用于 BLAT PSL 格式的解析器。
- __init__(handle, pslx=False)
初始化类。
- __iter__()
遍历 BlatPslParser,生成查询结果。