Bio.GenBank.Scanner 模块

用于解析 GenBank 和 EMBL 文件的内部代码(私有)。

此代码不打算直接使用。它提供了一个基本的扫描器(用于与 Bio.GenBank._FeatureConsumer 等事件消费者一起使用)来解析 GenBank 或 EMBL 文件(以及它们共享的 INSDC 特征表)。

它被 Bio.GenBank 用于解析 GenBank 文件,也被 Bio.SeqIO 用于解析 GenBank 和 EMBL 文件。

特征表文档

class Bio.GenBank.Scanner.InsdcScanner(debug=0)

基类:object

将 GenBank/EMBL 文件分解成子部分的基本功能。

国际核酸序列数据库合作 (INSDC) 是 DDBJ、EMBL 和 GenBank 之间的合作。这些组织在他们的纯文本平面文件格式中都使用相同的“特征表”布局。

然而,EMBL 文件的标题和序列部分在布局上与 GenBank/DDBJ 生成的文件大不相同。

RECORD_START = 'XXX'
HEADER_WIDTH = 3
FEATURE_START_MARKERS = ['XXX***FEATURES***XXX']
FEATURE_END_MARKERS = ['XXX***END FEATURES***XXX']
FEATURE_QUALIFIER_INDENT = 0
FEATURE_QUALIFIER_SPACER = ''
SEQUENCE_HEADERS = ['XXX']
__init__(debug=0)

初始化类。

set_handle(handle)

设置 handle 属性。

find_start()

读取行,直到找到 ID/LOCUS 行,并返回该行。

任何前导信息(例如 NCBI 在 *.seq.gz 档案中使用的标题)将被忽略。

parse_header()

返回组成标题的字符串列表。

换行符将被删除。

假设你已经读入了 ID/LOCUS 行。

parse_features(skip=False)

返回特征的元组列表(如果有)。

每个特征都以一个元组(键、位置、限定符)的形式返回,其中键和位置是字符串(例如,“CDS”和“complement(join(490883..490885,1..879))”),而限定符是两个字符串元组的列表(特征限定符键和值)。

假设你已经读到了特征表的开头。

parse_feature(feature_key, lines)

解析一个以字符串列表形式给定的特征,并将其转换为一个元组。

期望一个特征作为字符串列表,返回一个元组 (key, location, qualifiers)

例如,给定这个 GenBank 特征

CDS             complement(join(490883..490885,1..879))
                /locus_tag="NEQ001"
                /note="conserved hypothetical [Methanococcus jannaschii];
                COG1583:Uncharacterized ACR; IPR001472:Bipartite nuclear
                localization signal; IPR002743: Protein of unknown
                function DUF57"
                /codon_start=1
                /transl_table=11
                /product="hypothetical protein"
                /protein_id="NP_963295.1"
                /db_xref="GI:41614797"
                /db_xref="GeneID:2732620"
                /translation="MRLLLELKALNSIDKKQLSNYLIQGFIYNILKNTEYSWLHNWKK
                EKYFNFTLIPKKDIIENKRYYLIISSPDKRFIEVLHNKIKDLDIITIGLAQFQLRKTK
                KFDPKLRFPWVTITPIVLREGKIVILKGDKYYKVFVKRLEELKKYNLIKKKEPILEEP
                IEISLNQIKDGWKIIDVKDRYYDFRNKSFSAFSNWLRDLKEQSLRKYNNFCGKNFYFE
                EAIFEGFTFYKTVSIRIRINRGEAVYIGTLWKELNVYRKLDKEEREFYKFLYDCGLGS
                LNSMGFGFVNTKKNSAR"

那么应该将输入 key=”CDS” 和其余数据作为字符串列表 lines=[“complement(join(490883..490885,1..879))”, …, “LNSMGFGFVNTKKNSAR”],其中前导空格和尾随换行符已删除。

返回包含以下内容的元组:(key 作为字符串、location 字符串、qualifiers 作为列表),例如:

key = “CDS”,string location = “complement(join(490883..490885,1..879))”,string qualifiers = string 元组列表

[(‘locus_tag’, ‘“NEQ001”’),

(‘note’, ‘“conserved hypothetical [Methanococcus jannaschii];nCOG1583:…”’), (‘codon_start’, ‘1’), (‘transl_table’, ‘11’), (‘product’, ‘“hypothetical protein”’), (‘protein_id’, ‘“NP_963295.1”’), (‘db_xref’, ‘“GI:41614797”’), (‘db_xref’, ‘“GeneID:2732620”’), (‘translation’, ‘“MRLLLELKALNSIDKKQLSNYLIQGFIYNILKNTEYSWLHNWKKnEKYFNFT…”’)]

在上面的示例中,“note” 和 “translation” 为了简洁而进行了编辑,它们将包含多个换行符(在上文中显示为 n)。

如果限定符被引号括起来(在本例中,除了 codon_start 和 transl_table 之外),那么引号不会被删除。

请注意,不会删除任何空格。

返回一个元组,其中包含任何杂项字符串的列表以及序列。

feed(handle, consumer, do_features=True)

将一组数据输入消费者。

此方法旨在用于 Bio.GenBank 中的“旧”代码。

参数
  • handle - 包含要解析信息的句柄。

  • consumer - 应该被通知事件的消费者。

  • do_features - 布尔值,是否应该解析特征?跳过特征可以更快。

返回值
  • true - 传递了一个记录

  • false - 未找到记录

parse(handle, do_features=True)

返回一个 SeqRecord(如果 do_features=True,则包含 SeqFeatures)。

请参阅 parse_records() 方法,用于处理多记录文件。

parse_records(handle, do_features=True)

解析记录,返回一个 SeqRecord 对象迭代器。

每个记录(从 ID/LOCUS 行到 // 行)都将成为一个 SeqRecord

如果 do_features=True,则 SeqRecord 对象将包含 SeqFeatures。

此方法旨在用于 Bio.SeqIO 中。

parse_cds_features(handle, alphabet=None, tags2id=('protein_id', 'locus_tag', 'product'))

解析 CDS 特征,返回 SeqRecord 对象迭代器。

每个 CDS 特征都将成为一个 SeqRecord。

参数
  • alphabet - 已过时,应该保留为 None。

  • tags2id - 三个字符串的元组,用于记录 id、名称和描述的特征键。

此方法旨在用于 Bio.SeqIO 中。

class Bio.GenBank.Scanner.EmblScanner(debug=0)

基类:InsdcScanner

用于从 EMBL 文件中提取信息块。

RECORD_START = 'ID   '
HEADER_WIDTH = 5
FEATURE_START_MARKERS = ['FH   Key             Location/Qualifiers', 'FH']
FEATURE_END_MARKERS = ['XX']
FEATURE_QUALIFIER_INDENT = 21
FEATURE_QUALIFIER_SPACER = 'FT                   '
SEQUENCE_HEADERS = ['SQ', 'CO']
EMBL_INDENT = 5
EMBL_SPACER = '     '

返回一个元组,其中包含任何杂项字符串的列表以及序列。

class Bio.GenBank.Scanner.GenBankScanner(debug=0)

基类:InsdcScanner

用于从 GenBank 文件中提取信息块。

RECORD_START = 'LOCUS       '
HEADER_WIDTH = 12
FEATURE_START_MARKERS = ['FEATURES             Location/Qualifiers', 'FEATURES']
FEATURE_END_MARKERS: list[str] = []
FEATURE_QUALIFIER_INDENT = 21
FEATURE_QUALIFIER_SPACER = '                     '
SEQUENCE_HEADERS = ['CONTIG', 'ORIGIN', 'BASE COUNT', 'WGS', 'TSA', 'TLS']
GENBANK_INDENT = 12
GENBANK_SPACER = '            '
STRUCTURED_COMMENT_START = '-START##'
STRUCTURED_COMMENT_END = '-END##'
STRUCTURED_COMMENT_DELIM = ' :: '

返回一个元组,其中包含任何杂项字符串的列表以及序列。

__annotations__ = {'FEATURE_END_MARKERS': list[str]}