0
outfile2 = open('cordrandm.pdb', 'w')
for kk in text1:
if kk != '':
    outfile2.write(kk)
    outfile2.write('\n')

for alcord in alistcoord:
    uacoord = alcord[1]
    for blcord in blistcoord:
        ubcoord = blcord[1]    
        for arang in range(1000):
            arang = arang + 1
            x,y,z = uacoord
            x1,y1,z1 = (uniform(x-3.5,x+3.5), uniform(y-3.5,y+3.5), uniform(z-3.5,z+3.5))
            pacord = [x1,y1,z1]

            dist_pap = euDist(uacoord, pacord)
            if  3.5 > dist_pap > 2.5: 
               dist_pap1 = dist_pap

    outfile2.write('ATOM         OW  HOH X          %6.3f  %6.3f  %6.3f\n' % (pacord[0],  pacord[1],  pacord[2]))

outfile2.close()

このコードから、このような出力ファイルを取得しています

1------10 11-----20 21------30-----so on
123456789012345678901234567890123456789012345678901234
ATOM         OW  HOH X          10.533  22.567  61.777
ATOM         OW  HOH X           5.655  23.758  61.221
ATOM         OW  HOH X          10.125  20.476  68.503
ATOM         OW  HOH X          11.222  16.810  69.267
ATOM         OW  HOH X           4.351  18.904  66.256
ATOM         OW  HOH X           9.194  22.065  67.714
ATOM         OW  HOH X           4.347  16.527  68.278

各行「HOH」にカウンターを挿入して、このように出力したい

ATOM         OW  HOH X   1      10.533  22.567  61.777
ATOM         OW  HOH X   2       5.655  23.758  61.221
ATOM         OW  HOH X  10      10.125  20.476  68.503
ATOM         OW  HOH X 100      11.222  16.810  69.267
ATOM         OW  HOH X 101       4.351  18.904  66.256
ATOM         OW  HOH X 102       9.194  22.065  67.714
ATOM         OW  HOH X1000       4.347  16.527  68.278

列範囲 23 ~ 26 は、HOH のシリアル番号を指定することを意味します。出力を変更しない特定の列に HOH のカウントを挿入する方法。

前もって感謝します

4

2 に答える 2

1

パコードに関する最後の質問とまったく同じ..行を次のように変更するだけです。

outfile2.write('ATOM OW HOH X%4s %6.3f %6.3f %6.3f\n' % (hoh_serial, pacord[0], pacord[1], pacord[2]))

hoh_serialその行のシリアルが含まれていることを考慮してください)

編集

また、行のシリアル番号を本当に意味する場合は、次も追加する必要があります。

from itertools import count
...
hoh_serial = count(1)
...
...
outfile2.write('ATOM         OW  HOH X%4s      %6.3f  %6.3f  %6.3f\n' % (hoh_serial.next(), pacord[0],  pacord[1],  pacord[2]))
于 2013-09-25T09:58:30.483 に答える
0

私はあなたが意味すると思います

for counter, blcord in enumerate(blistcoord):
    ...
    outfile2.write('ATOM ...', (counter,...) )

そしてカウンターはあなたのカウンターです。

于 2013-09-25T09:59:19.083 に答える