将多个列表合并到一个文本文件中

时间:2013-06-19 20:14:31

标签: python python-3.x fastq

我是编码的新手,在尝试制作自己的fastq masker时遇到了麻烦。第一个模块应该用+远修剪线,将序列标题(以>开头)修改为行号,同时分别保留序列和质量线(A,G,C,T线和Unicode分数) )。

class Import_file(object):

def trim_fastq (self, fastq_file):
    f = open('path_to_file_a', 'a' )
    sanger = []
    sequence = []
    identifier = []
    plus = []
    f2 = open('path_to_file_b')

   for line in f2.readlines():
        line = line.strip()
        if line[0]=='@':
            identifier.append(line)
            identifier.replace('@%s','>[i]' %(line))

        elif line[0]==('A' or 'G'or 'T' or 'U' or 'C'):
            seq = ','.join(line)
            sequence.append(seq)

        elif line[0]=='+'and line[1]=='' :
            plus.append(line)
            remove_line = file.writelines()

        elif line[0]!='@' or line[0]!=('A' or 'G'or 'T' or 'U' or 'C') or line[0]!='+' and line[1]!='':
            sanger.append(line)

        else:
            print("Danger Will Robinson, Danger!")


    f.write("'%s'\n '%s'\n '%s'" %(identifier, sequence, sanger))
    f.close()

    return (sanger,sequence,identifier,plus)

现在提出我的问题。我运行了这个并没有出现错误,但是目标文件是空的。我想知道我做错了什么...这是我处理列表还是缺少.join的方式?如果这是重复,我很抱歉。很简单,我不知道这里的错误是什么。此外,重要提示......这不是一些功课,我只需要一个工作的掩码......任何帮助都非常感谢,所有提到的代码改进都受到欢迎。感谢。

注意(fastq格式):

@SRR566546.970 HWUSI-EAS1673_11067_FC7070M:4:1:2299:1109 length=50
TTGCCTGCCTATCATTTTAGTGCCTGTGAGGTGGAGATGTGAGGATCAGT

+

hhhhhhhhhhghhghhhhhfhhhhhfffffe`ee[`X]b[d[ed`[Y[^Y

编辑:仍然无法得到任何东西,但正在努力。

2 个答案:

答案 0 :(得分:1)

您的问题在于您对退货声明的理解。 return x表示停止执行当前函数并将x返回给任何调用它的人。在您的代码中,您有:

return sanger
return sequence
return identifier
return plus

当第一个执行(return sanger)时,函数的执行停止并返回sanger。第二到第四个返回语句永远不会被评估,最后你的I / O也不会被评估。如果你真的对返回所有这些值感兴趣,请在文件I / O之后移动它,并将它们中的四个打包为元组。

f.write("'%s'\n '%s'\n '%s'" %(identifier, sequence, sanger))
f.close()
return (sanger,sequence,identifier,plus)

这应该至少可以获得文件中的一些输出。无论输出是否符合您想要的格式,我都无法说出来。

编辑: 刚刚注意到您使用的是/n,可能还需要\n,所以我在这里修改了答案。

答案 1 :(得分:1)

除了@Brian所说的,你还有各种各样的错误。我猜你的ifelse测试试图检查line的第一个字符?你可以用

做到这一点
if line[0] == '@':
    etc.

您可能需要尽快编写更多脚本,因此我建议您使用Python Tutorial,以便掌握基础知识。这是值得的。