我有一个 Excel 文件,其中给出了 2000 多个生物体,其中每个生物体都有一个相关的 Bioproject ID(如 PRJNA12997)。这个想法是使用这些 ID 来获取序列,以便稍后与我在文本文件中拥有的其他五个序列进行多重比对。
谁能帮我理解如何使用 biopython 做到这一点?至少具有生物项目 ID 的部分。
我有一个 Excel 文件,其中给出了 2000 多个生物体,其中每个生物体都有一个相关的 Bioproject ID(如 PRJNA12997)。这个想法是使用这些 ID 来获取序列,以便稍后与我在文本文件中拥有的其他五个序列进行多重比对。
谁能帮我理解如何使用 biopython 做到这一点?至少具有生物项目 ID 的部分。
您可以首先使用以下方式获取信息Bio.Entrez
:
from Bio import Entrez
Entrez.email = "Your.Name.Here@example.org"
# This call to efetch fails sometimes with a 400 error.
handle = Entrez.efetch(db="bioproject", id="PRJNA12997")
我一直在尝试,Entrez.read(handle)
似乎没有用。但如果这样做record_xml = handle.read()
,您将获得该记录的 XML 条目。在此 XML 中,您可以获得有机体的 ID,在本例中为12997
。
handle = Entrez.esearch(db="nuccore", term="12997[BioProject]")
search_results = Entrez.read(handle)
现在您可以efecth
从您的搜索结果中。此时,您应该使用 Biopython 解析在 efetch 步骤中将获得的任何内容,使用 rettype http://www.ncbi.nlm.nih.gov/books/NBK25499/table/chapter4.T._valid_values_of__retmode_and/
for result in search_results["IdList"]:
entry = Entrez.efetch(db="nuccore", id=result, rettype="fasta")
this_seq_in_fasta = entry.read()