[大家好,我正在使用庞大的gz压缩fasta文件,并且我有一个不错的fasta解析器,但我想以一种更通用的方式来检查压缩,以解析gz或未压缩的文件。
我尝试此代码:
def is_header(line):
return line[0] == '>'
def parse_multi_fasta_file_compressed_or_not(filename):
if filename.endswith('.gz'):
with gzip.open(filename, 'rt') as f:
fasta_iter = (it[1] for it in itertools.groupby(f, is_header))
else:
with open(filename, 'r') as f:
fasta_iter = (it[1] for it in itertools.groupby(f, is_header))
for name in fasta_iter:
name = name.__next__()[1:].strip()
sequences = ''.join(seq.strip() for seq in fasta_iter.__next__())
yield name, sequences
ref:https://drj11.wordpress.com/2010/02/22/python-getting-fasta-with-itertools-groupby/https://www.biostars.org/p/710/
我尝试修改标识。 Python不会抱怨任何错误,但是不会打印或显示任何结果。我正在使用5个序列的玩具文件。
仅提醒fasta文件是这样的:
>header_1
AATATATTCAATATGGAGAGAATAAAAGAACTAAGAGATCTAATGTCACAGTCTCGCACTCGCGAGATAC
TCACCAAAACCACTGTGGACCACATGGCCATAATCAAAAAGTACACATCAGGAAGGCAAGAGAAGAACCC
TGCACTCAGGATGAAGTGGATGATG
>header_2
AACCATTTGAATGGATGTCAATCCGACTTTACTTTTCTTGAAAGTTCCAGCGCAAAATGCCATAAGCACC
ACATTTCCCTATACTGGAGACCCTCC
我想改用somr try exeception,如果你们中的任何人有什么秘诀可以帮助我弄清楚我会非常满意(这根本不是任何课程的练习!)。>>
谢谢您的时间。
Paulo
[伙计们,我正在使用巨大的gz压缩fasta文件,并且我有一个不错的fasta解析器,但我想使它更通用,以检查压缩的方式来解析gz或非gz ...
看来您已经缩进了`for循环。尝试以下操作: