-1

所以我正在尝试处理一个 FastQ 序列,但我是 Python 的初学者,我对如何完成我的代码有点困惑。这是程序应该执行的操作:

如果我输入 FASTQ seqname 行...

@EAS139:136:FC706VJ:2:2104:15343:197393

...然后程序将输出:

Instrument = EAS139
Run ID = 136
Flow Cell ID = FC706VJ
Flow Cell Lane = 2
Tile Number = 2104
X-coord = 15343
Y-coord = 197393

这是我的(不完整的)代码:

    class cleaner:
    def __init__(self,str):
        self.str = seq.upper()
    def line (self):
        1 = inStr.replace ('@',' ').replace (':',' ').split (' ')
newTuple =(float(1[1]),float(1[2))] #...etc                


    def printInstrument (self):
        print ("Instrument: {0}".format(float(1[1])))
    def printRunID (self):
        print ("Run ID: {0}".format(float(1[2])))
    def printFlowCellID (self):
        print ("Flow Cell ID: {0}".format(float(1[3])))
    def printFlowCellLane (self):
        print ("Flow Cell Lane: {0}".format(float(1[4])))
    def printTileNumber (self):
        print ("Tile Number{0}".format(float(1[5])))
    def printX (self):
        print ("X-coordinate:{0}".format(float(1[6])))
    def printY (self):
        print ("y-coordinate: {0}".format(float(1[7])))
 def main():
    seq = input('Enter FastQ sequence:')


main()
4

1 回答 1

1

如果您的输入是这样的,请删除第一个字符(@),将字符串拆分:,然后将您通过执行此操作获得的值压缩到一组预设的键:

>>> keys=["Instrument", "Run ID", "Flow Cell ID", "Flow Cell Lane", "Title Number", "X-coord", "Y-coord"]
>>> values="@EAS139:136:FC706VJ:2:2104:15343:197393"[1:].split(':')
>>> my_dict=dict(zip(keys, values))
>>> for key, val in my_dict.iteritems():
...     print "%s: %s" % (key, val)
...
Run ID: 136
Flow Cell ID: FC706VJ
Title Number: 2104
Y-coord: 197393
X-coord: 15343
Flow Cell Lane: 2
Instrument: EAS139

我强烈建议您检查:

  • 切片字符串(这里
  • split 函数对字符串的作用
  • 什么是字典(这里
  • zip 的作用(这里
于 2014-04-12T00:07:05.473 回答