在Python中维护输入和输出之间的顺序

时间:2015-11-25 15:55:56

标签: python string

我正在尝试修剪文件中的某些序列,每个序列字符串都有一个相应的字符串,用于描述序列质量。这是一个例子(文件中数千个之一):

@HS2:447:C2DFYACXX:4:2309:9964:54984 1:N:0:GCCAAT
TGCATNGCAGGCTGCTTCCTTTCTAGATCAGCTAGCAGCTGCAGGAAGGCATATTTTGG
+
BBBBF#0<FFFFFIIIIIIIIIIIIIIIIIIIIIIIIIIIFIIIIIIIIIIIIIIIIIF

我需要修剪以TGCA ...和BBBB ...开头的行,并以相同的顺序将较短的字符串与其他两行行(保持未修改)一起输出到新文件。我已经找到了如何修剪字符串,但我无法弄清楚如何在新的输出文件中将这四行保持在一起。

这是我到目前为止所写的:

import gzip
new_seqs=[]
with gzip.open('ALJG001B_index6_GCCAAT_L004_R1_004.fastq.gz', 'r') as file:
    n=0
    file_content = file.readlines()
    for line in file_content:
        n+=1
        if n % 4 == 0:
            new_seqs.append(line)

当然,它只生成最后一行(每4行)的列表:

['BBBBF#0<FFFFFIIIIIIIIIIIIIIIIIIIIIIIIIIIFIIIIIIIIIIIIIIIIIF\n', ...]

这是我编写的用于修剪序列的代码:

if len(line) > 50 and not line.startswith('@'):
    print line[:-9]

1 个答案:

答案 0 :(得分:2)

看起来您正在修剪fastq文件中的读取,请使用fasta格式指南。只需追加以&#39; @&#39;开头的行。或&#39; +&#39;没有修剪和修剪线序列和质量线。

 for line in file_content:
    if line[:1] == '@' or line[:1] == '+':
       new_seqs.append(line)
    else :
       new_seqs.append(line[:-9])