从 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,请熟悉 sed
、awk
和 tail/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.
我正在使用来自 swiss-port (ftp://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase/complete/uniprot_sprot.fasta.gz) 的 fasta 文件,在以“>
”开头的行中,我们在接下来的行中有一些蛋白质信息氨基酸序列。
有没有办法使用基因名称搜索所有行(在描述为“GN=xxxxxxx
”的行中是 x
的基因名称)并导入序列之后出现在行中?
我正在努力解决这个问题,因为我无法在行的中间搜索并创建循环来复制下一行。
如果您正在使用 Linux,请熟悉 sed
、awk
和 tail/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.