读取fasta文件并在python中编辑行

读取fasta文件并在python中编辑行,python,sequence,edit,Python,Sequence,Edit,我是编程新手,这是我第一次使用python。我正在编写一个代码,它应该读取一个fasta文件并删除每个序列的头。 读取文件的我的代码: def read_fasta(inputfile): with open(inputfile,'r') as f: file=f.readlines() f.close return file fasta_file=read_fasta('SELEX_100_reads.txt') print(fasta_file)

我是编程新手,这是我第一次使用python。我正在编写一个代码,它应该读取一个fasta文件并删除每个序列的头。 读取文件的我的代码:

def read_fasta(inputfile):
    with open(inputfile,'r') as f:
        file=f.readlines()
    f.close
    return file

fasta_file=read_fasta('SELEX_100_reads.txt')

print(fasta_file)
fasta文件的输出如下所示:

['@DBV2SVN1:110:B:7:1101:1456:2092\n', 'CTAAAAAGCGAGTGCGNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNANNNNNNCNNNNNNNNAAACANNAAGGTAAGAAACAAGCACAGATGAGAGC\n', '\n', '+\n', '#####################################################################################################\n', '\n', '@DBV2SVN1:110:B:7:1101:2491:2141\n', 'AAGTGAGCAAACAGAAACATAGTGCGGAGTGGGAAAATGAGACTCAAAAAAAGAGTGTGGGTATTCAGTAGGGGATATTAGGCCACAATACGAAAGAGCAA\n', '\n', '+\n', '#####################################################################################################\n', '\n', '@DBV2SVN1:110:B:7:1101:2924:2130\n'......]
它是一个列表,每个序列都有标题。因此,我只想把每一行的DNA序列(CTAAAA或AAGTAAAGCA)作为一个列表。 有人能帮我吗? 非常感谢

干杯, 约翰

  • 从这个问题上,我想你想要的是所有的DNA序列
  • 如果行包含除A、C、G、T以外的任何内容,则可以对其进行过滤
def read_fasta(输入文件):
将open(inputfile,'r')作为f:
file=f.readlines()
ret=[]
对于文件中的行:
如果设置(条带(线))=={'A'、'G'、'T'、'C'}:
ret.append(带(线))
回程网
fasta\u file=read\u fasta('SELEX\u 100\u reads.txt')
打印(fasta_文件)

您可以使用正则表达式过滤器。假设您只需要包含一个或多个A/C/G/T或N字符的行(除了换行符和任何其他尾随空格),您可以执行以下操作:

import re

file = list(filter(re.compile("[ACGTN]+\s*$").match, file))
删除其他行


如果不包括包含N的字符串(我不知道足够的生物化学来知道它们代表什么-从外观上看不是核苷酸),那么显然从regexp中排除
N

您可以将DNA过滤到一个新列表中:

only_dna = fasta_file[1::6]

在[1::6]中,1是开始位置,6是列表中的“跳过间隔”。

请修复代码。如果将
与打开的
上下文管理器一起使用,则不需要
f.close
。此外,甚至不调用
f.close
。您可以删除该行。这是我的新代码:def read_fasta(inputfile):将open(inputfile,'r')作为f:file=f。readlines()表示文件中的元素:if elem!='@':文件。删除(elem)返回文件你好,丹尼斯,谢谢你的帮助。这对我帮助很大。你好,阿兰尼维,谢谢你的帮助。一个好的方法和途径。谢谢