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



我是编程新手,这是我第一次使用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:2092n', 'CTAAAAAGCGAGTGCGNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNANNNNNNCNNNNNNNNAAACANNAAGGTAAGAAACAAGCACAGATGAGAGCn', 'n', '+n', '#####################################################################################################n', 'n', '@DBV2SVN1:110:B:7:1101:2491:2141n', 'AAGTGAGCAAACAGAAACATAGTGCGGAGTGGGAAAATGAGACTCAAAAAAAGAGTGTGGGTATTCAGTAGGGGATATTAGGCCACAATACGAAAGAGCAAn', 'n', '+n', '#####################################################################################################n', 'n', '@DBV2SVN1:110:B:7:1101:2924:2130n'......]

这是一个列表,每个序列都有标题。因此,我只想把每一行的DNA序列(CTAAAA或AAGTAAAGCA(作为一个列表。有人能帮我吗?非常感谢

干杯,约翰·

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

import re
file = list(filter(re.compile("[ACGTN]+s*$").match, file))

以移除其他线路。

如果包含N的字符串不应该包括在内(我不知道足够的生物化学知识来知道它们代表什么——从外表上看不是核苷酸(,那么显然要从正则表达式中排除N

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

only_dna = fasta_file[1::6]

在[1::6]中,1是起始位置,6是"0";跳过间隔";在列表中。

  • 根据这个问题,我认为你想要的是所有的DNA序列
  • 如果行中包含除A、C、G、T以外的任何内容,则可以对其进行筛选
def read_fasta(inputfile):
with open(inputfile,'r') as f:
file=f.readlines()
ret = []
for line in file:
if set(strip(line)) == {'A','G','T','C'}:
ret.append(strip(line)) 
return ret 
fasta_file=read_fasta('SELEX_100_reads.txt')
print(fasta_file)

相关内容

  • 没有找到相关文章

最新更新