从Genbank记录或Entrez查询中提取病毒宿主

问题描述 投票:0回答:1

我希望能够从许多 Genbank 记录中看到病毒宿主生物。我已经尝试过通过下载 Genbank 完整文件并使用

Biopython.SeqIO.read()
阅读它们,并且我还尝试通过
Entrez.efetch
查询数据库,这是一个仅使用一个 ID 的示例:

$ pip install biopython
from Bio import Entrez, SeqIO

id = 'CY238774.1'
handle = Entrez.efetch(db='nucleotide', id=id, rettype='gb', retmode='text')
record = SeqIO.read(handle, 'gb')

当我通过网络浏览器在 NCBI 上查找这条 id 记录时,我可以看到记录中写着“host=Homo sapiens”。此文本也存在于下载的 .gb 文件中。但是,我在上面创建的 SeqRecord 对象中的任何位置都找不到此信息。创建 SecRecord 时,此信息似乎会丢失。我已经检查了所有的类属性。

有没有办法从 SeqRecord 中提取这些信息?

python bioinformatics biopython ncbi
1个回答
1
投票

当我在 NCBI 上查找此 ID 记录时...

让我们回顾一下该记录:

$ curl -i 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nucleotide&id=CY238774.1&rettype=gb&retmode=text&tool=biopython'
...
content-type: text/plain
...
FEATURES             Location/Qualifiers
     source          1..1002
                     /organism="Influenza A virus (A/Washington/27/2017(H3N2))"
                     /mol_type="viral cRNA"
                     /strain="A/Washington/27/2017"
                     /serotype="H3N2"
                     /host="Homo sapiens"
...

所以我们正在寻找功能 --> 来源 --> 主机。

现在让我们切换到 API。 事实证明,返回的第一个功能的类型为 Source。

>>> from pprint import pp
>>> 
>>> record.features[0]
SeqFeature(SimpleLocation(ExactPosition(0), ExactPosition(1002), strand=1), type='source', qualifiers=...)
>>> 
>>> record.features[0].type
'source'
>>> 
>>> pp(record.features[0].qualifiers)
{'organism': ['Influenza A virus (A/Washington/27/2017(H3N2))'],
 'mol_type': ['viral cRNA'],
 'strain': ['A/Washington/27/2017'],
 'serotype': ['H3N2'],
 'host': ['Homo sapiens'],
 'db_xref': ['taxon:1984973'],
 'segment': ['7'],
 'country': ['USA: Washington'],
 'collection_date': ['01-Mar-2017'],
 'note': ['passage details: S2 (2017-03-26)']}
>>> 
>>> record.features[0].qualifiers['host'][0]
'Homo sapiens'

哒哒!它潜伏在里面。

© www.soinside.com 2019 - 2024. All rights reserved.