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 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()
4

1 に答える 1

2

コードが機能しない理由は、多かれ少なかれ完全に間違っているからです。プログラムを実行しようとしたときにエラーに到達した順序でエラーに対処するには、次のようにします。

  1. main:
    1. new_fastq = fastq(str)入力したばかりのものを渡すのではなくseq、組み込みの文字列型を渡します。
  2. __init__:
    1. 引数を に呼び出すのfastq.__init__ strは、渡そうとしたばかりのビルトインをマスクするため、悪い考えです。
    2. しかし、あなたがそれを何と呼んでも、関数定義とその中にあるものとの間で一貫性を持たせてください - どこinStrから来ていると思いますか?
  3. lists:
    1. なぜこれは別のものであり、によっても呼び出されないの__init__ですか?
    2. 引数を渡さないのはなぜですか?
    3. 議論は何のparametersためですか?
  4. zip:
    1. fastq.__str__オブジェクトを出力するメソッドを定義するのではなく、文字列表現を返すメソッドを定義する方がより Pythonicです。その後、できますprint(str(new_fastq))。そうは言っても;
    2. 繰り返しますが、ビルトインをマスクします。この場合、それをマスクするメソッド内で実際にビルトインを使用しようとするため、より問題になります。それを別の名前で呼んでください。
    3. 繰り返しますが、不必要な引数を定義に入れても、それらを渡す必要はありません。
    4. あるべきものは何self.transformですか?それは他のどこにも言及されていません。ということですかself.str(これもまた、ビルトインをマスクし、実際には string ではないという理由から、別の名前にする必要があります)?
    5. myZipはあなたが渡したことがない引数の 1 つであり、実際には ; が必要だと思いますself.Zip。しかし
    6. なぜ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()
于 2014-04-12T07:44:43.900 に答える