首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提取具有特定fasta ID的fasta序列块

提取具有特定fasta ID的fasta序列块
EN

Stack Overflow用户
提问于 2013-11-21 06:03:26
回答 2查看 901关注 0票数 0

我是python的新手,我试着浏览了这里所有与我想要的相关的问题,但还没有得到答案。我想提取文件中具有特定fasta ID的连续fasta序列的块,并将序列写在单独的文件中。文件内容是异构的(在某些地方,fasta is后面没有序列)。输入文件如下所示:

代码语言:javascript
复制
 >ENS00000004062_species1
 >ENS00000004062_species2
 >ENS00000004062_species3
  ATGGGCTTTTCCACAGAGCTTGCAT
 >ENS00000004062_species4
  ATGGGCTTTTCCACAGAGCTTGCAAC
 >ENS00000006504_species2
  CTCTTTGACCCTCCCCATCAGGTTCA
 >ENS00000006504_species3
  CTCTGACCCTCCCCACCAGGTTCAGGG
  CTGGGAGGTGCACTCCAGGGATTC
 >ENS00000006504_species4

……加上许多其他序列和不同的ID,但物种和fasta ID的模式相同。

例如,如果我想用ENS00000006504提取序列,我想要它们的整个fasta描述以及它后面的序列,但是当它识别出一个新的fasta ID时,它应该停止。我有这段代码,但它没有做任何有意义的事情。它识别包含标志ID的第一行,但随后会打印所有内容。

代码语言:javascript
复制
 flag = 'ENSBTAT00000006504'
 with open(file_name) as file:
    for line in file:
       if flag in line:
          lines = file.readlines()
          print(lines)

我希望我已经说得很清楚了,但如果有必要的话,我愿意接受更多的澄清。谢谢。

EN

回答 2

Stack Overflow用户

发布于 2014-03-27 18:32:17

代码语言:javascript
复制
from Bio import SeqIO

input_file = open('file.fasta','r')
output_file = open('result.fasta','a')
for key in SeqIO.parse(input_file, 'fasta'):
    entry_name = key.name
    if key.name in ['ENSBTAT00000006504']: #Here you can list several IDs
        output_file.write(str('>' + (key.id)) + '\n')
        output_file.write(str(key.seq[0:]) + '\n') 
output_file.close()
input_file.close()
票数 0
EN

Stack Overflow用户

发布于 2020-06-13 23:12:39

代码语言:javascript
复制
from Bio import SeqIO

input_file = "your_file.fa"
flag = 'ENSBTAT00000006504'
selected_seqs = list()

for seq_record in SeqIO.parse(input_file, 'fasta'):
    if flag in seq_record.name:
        selected_seqs.append(seq_record)

SeqIO.write(selected_seqs, "new_filename.fa", "fasta")

这使用了更多的biopython。

Biopython Tutorial

Reading sequence files

Writing sequence files

备注:

  • 此选项不会仅/明确地选择连续的序列,而是选择包含该标志的序列。(因为FASTA文件更像字典,排序没有meaning [biopyhton doc on reading FASTA as dict])
  • seq_record可以有许多属性,如.name、.id、.description等。请检查您的标志所在的位置,并在必要时进行调整。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20107996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档