0

我是编码新手,在尝试制作自己的 fastq 掩码器时遇到了麻烦。第一个模块应该用 + 修剪行,将序列标题(以 > 开头)修改为行号,同时保留序列和质量行(分别为 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

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

4

2 回答 2

1

您的问题在于您对 return 语句的理解。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,所以我在此处更改了答案。

于 2013-06-19T20:43:58.137 回答
1

除了@Brian 解决的问题之外,您还有各种错误。我猜你的ifelse测试试图检查line?的第一个字符 你会这样做

if line[0] == '@':
    etc.

您可能很快需要编写更多脚本,因此我建议您完成Python 教程,以便掌握基础知识。这将是值得的。

于 2013-06-19T20:59:36.550 回答