首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FastQ编程误差

FastQ编程误差
EN

Stack Overflow用户
提问于 2014-04-12 06:26:05
回答 1查看 127关注 0票数 1

所以我试图解析一个FastQ序列,但是我是Python的初学者,我对为什么我的代码不能工作感到有点困惑。这是该方案应开展的工作:

如果我输入FASTQ seqname行..。

代码语言:javascript
复制
@EAS139:136:FC706VJ:2:2104:15343:197393

...then程序应该输出:

代码语言:javascript
复制
Instrument = EAS139
Run ID = 136
Flow Cell ID = FC706VJ
Flow Cell Lane = 2
Tile Number = 2104
X-coord = 15343
Y-coord = 197393 

以下是我迄今未完成的代码:

代码语言:javascript
复制
class fastq:
    def __init__(self,str):
        self.str = inStr.replace ('@',' ').split (':')
    def lists (self,parameters):
        self.parameters = ("Instrument","Run ID","Flow Cell ID","Flow Cell Lane","Tile     Number","X-coordinates","y-coordinates")
    def zip (self,myZip,zippedTuple):
        self.Zip = zip(self.parameters,self.transform)
        self.zippedTuple = tuple(myZip)
        print (tuple(myZip))

def main():
    seq = input('Enter FastQ sequence:')
    new_fastq = fastq(str)
    new_fastq.lists()
    new_fastq.zip()

main()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-12 07:44:43

您的代码不能工作的原因是它或多或少完全错误。为了解决您的错误,在尝试运行程序时,我们会按照它们的顺序进行处理:

  1. main
    1. new_fastq = fastq(str)不传递我们输入的seq,它传递内置的字符串类型;

  1. __init__
    1. 把这个论点称为fastq.__init__ str是个坏主意,因为它掩盖了我们刚刚试图传递给它的内置内容;
    2. 但是不管你叫它什么,函数定义和它里面的什么是一致的--你认为inStr是从哪里来的?

  1. lists
    1. 为什么这是单独的,甚至没有被__init__调用
    2. 你为什么不提出任何论点呢?
    3. parameters的论点到底是为了什么?

  1. zip
    1. 与其定义打印对象的方法,不如定义返回字符串表示的fastq.__str__。然后你就可以print(str(new_fastq))了。话虽如此;
    2. 再一次,你掩盖了一个内置的东西。在这种情况下,这是一个更大的问题,因为您实际上尝试使用内置的方法来掩盖它。管它叫别的什么;
    3. 再说一遍,你在定义中加入了不必要的参数,然后无论如何也不用去传递它们;
    4. self.transform应该是什么?在其他地方从来没有提到过。您的意思是self.str (同样,它应该被称为其他东西,因为它掩盖了一个内置的,而实际上不是一个字符串)?
    5. myZip是你从未通过过的论点之一,我认为你实际上想要self.Zip;但是
    6. 为什么要在下一行x = tuple(y)上创建print(tuple(y))print(x)

解决这些问题,加上一些额外的PEP-008整理:

代码语言:javascript
复制
class FastQ:

    def __init__(self, seq):
        self.elements = seq.replace ('@',' ').split (':')
        self.parameters = ("Instrument", "Run ID", "Flow Cell ID",
                           "Flow Cell Lane", "Tile Number",
                           "X-coordinates", "y-coordinates")

    def __str__(self):
        """A rough idea to get you started."""
        return "\n".join(map(str, zip(self.parameters, self.elements)))


def main():
    seq = input('Enter FastQ sequence: ')
    new_fastq = FastQ(seq)
    print(str(new_fastq))

main()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23026942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档