1

遺伝子解析用の.bedファイルを作成しようとしています。私はPythonの初心者です。私が作成したいファイルは、タブで区切られた3列で、最初の列は常に同じ(染色体番号)で、サイズ200の2列目と3列目のウィンドウはゼロから始まり染色体の終わりで終わる必要があります。例えば:

chr20 0 200
chr20 200 400
chr20 400 600
chr20 600 800
...

私は染色体のサイズを持っているので、現時点では、列2 <(クロムのサイズ)の印刷行で'と言いたいと思っています。私はスクリプトのスケルトンを持っていますが、経験が不足しているため、うまく機能していません。これが私がこれまでに持っているものです:

output = open('/homw/genotyping/wholegenome/Chr20.bed', 'rw') 

column2 = 0
column1 = 0
while column2 < 55268282:
    for line in output:
        column1 = column1 + 0
        column2 = column2 + 100

        print output >> "chr20" + '\t' + str(column1) + '\t' + str(column2)

誰かがこの単純なスクリプトを私が説明したように修正できるか、または本当に感謝されるより良い解決策を書くことができれば。20番染色体とchrXのすべてのファイルを出力できるスクリプトを作成することを検討しましたが、染色体のサイズを指定する必要があるため、各ファイルを個別に実行する必要があると思います。

前もって感謝します!

4

2 に答える 2

2

これはどう:

step = 200 # change values by this amount
with open('Chr20.bed', 'w') as outfp:
   for val in range(0, 1000, step):  #increment by step, max value 1000
      outfp.write('{0}\t{1:d}\t{2:d}\n'.format('chr20', val, val+step))

要求に応じてタブ区切りの出力を提供します

chr20   0   200
chr20   200 400
chr20   400 600
chr20   600 800
chr20   800 1000

: using を使用withすると、作業が終了したとき、または例外が発生したときに、ファイルが自動的に閉じられます。

興味がある場合は、これにより.format()関数に関する詳細情報が得られます。

于 2012-06-10T10:57:50.213 に答える
1

numpy.savetxt関数を使用してデータをテキスト ファイルに保存することをお勧めします。

windows = range(0, 55268282, 200)
numpy.savetxt('Chr20.bed', numpy.transpose((windows[:-1], windows[1:])), fmt=('chr20\t%d\t%d'))
于 2012-06-10T10:56:41.533 に答える