所以我试图解析一个FastQ序列,但是我是Python的初学者,我对为什么我的代码不能工作感到有点困惑。这是该方案应开展的工作:
如果我输入FASTQ seqname行..。
@EAS139:136:FC706VJ:2:2104:15343:197393...then程序应该输出:
Instrument = EAS139
Run ID = 136
Flow Cell ID = FC706VJ
Flow Cell Lane = 2
Tile Number = 2104
X-coord = 15343
Y-coord = 197393 以下是我迄今未完成的代码:
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()发布于 2014-04-12 07:44:43
您的代码不能工作的原因是它或多或少完全错误。为了解决您的错误,在尝试运行程序时,我们会按照它们的顺序进行处理:
main:new_fastq = fastq(str)不传递我们输入的seq,它传递内置的字符串类型;
__init__:fastq.__init__ str是个坏主意,因为它掩盖了我们刚刚试图传递给它的内置内容;inStr是从哪里来的?
lists:__init__调用parameters的论点到底是为了什么?
zip:fastq.__str__。然后你就可以print(str(new_fastq))了。话虽如此;self.transform应该是什么?在其他地方从来没有提到过。您的意思是self.str (同样,它应该被称为其他东西,因为它掩盖了一个内置的,而实际上不是一个字符串)?myZip是你从未通过过的论点之一,我认为你实际上想要self.Zip;但是x = tuple(y)上创建print(tuple(y))?print(x)!
解决这些问题,加上一些额外的PEP-008整理:
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()https://stackoverflow.com/questions/23026942
复制相似问题