从 Swiss-Prot Fasta 文件导入序列

Import Sequences From Swiss-Prot Fasta File

我正在使用来自 swiss-port (ftp://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase/complete/uniprot_sprot.fasta.gz) 的 fasta 文件,在以“>”开头的行中,我们在接下来的行中有一些蛋白质信息氨基酸序列。

有没有办法使用基因名称搜索所有行(在描述为“GN=xxxxxxx”的行中是 x 的基因名称)并导入序列之后出现在行中?

我正在努力解决这个问题,因为我无法在行的中间搜索并创建循环来复制下一行。

如果您正在使用 Linux,请熟悉 sedawktail/head。他们将来会为你节省很多时间。

假设我们正在寻找基因 FV3-002L

sed -n '/GN=FV3-002L/,/^>/p' uniprot_sprot.fasta | head -n -1

-n:告诉 sed 只在被告知时才打印

GN=FV3-002L:您的搜索字词

^>:你的搜索结束,^是一行的开始,>是FASTA的开始header

/p:告诉 sed 打印匹配项

| head -n -1:让我们去掉最后一行(懒得找更好的正则表达式,但你明白了)


使用Python:

gene = 'FV3-002L'
gene_found = False
fasta = ''
with open('uniprot_sprot.fasta') as f:
    for line in f:
        if gene in line:
            gene_found = True
            fasta += line
        elif gene_found and line.startswith('>'):
            break
        elif gene_found:
            fasta += line

print(fasta)

脚本打开您的 uniprot 文件,读取每一行,检查是否找到基因名称,如果找到,它会读取每一行直到下一个 header,最后打印 FASTA 序列。

请注意:这些片段适用于单个示例,但也适用于多个基因。如果您想定期执行此操作,则值得寻找更有效的数据处理方式。对于生物数据的操作,您还可以查看 BioPython.