テキストファイルを並べ替える必要があります。ファイルには、改行で区切られた行が含まれています'\n'
。入力例:
ATOM 1591 O5' G A 958 5.497 -3.281 3.598 1.00 99.99 O
ATOM 1592 C5' G A 958 4.345 -3.184 2.781 1.00 99.99 C
ATOM 1 P C A 924 -12.106 6.485 -14.650 1.00 99.99 P
ATOM 2 OP1 C A 924 -12.981 6.565 -15.850 1.00 99.99 O
ATOM 3 OP2 C A 924 -10.829 7.256 -14.620 1.00 99.99 O
ATOM 429 2H4 C A 947 1.295 -1.142 -0.764 1.00 99.99 H
ATOM 430 P G A 948 -2.886 -4.112 7.863 1.00 99.99 P
そして、私は6列目(によってそれらをソートしたい958
、924
など)
ATOM 1 P C A 924 -12.106 6.485 -14.650 1.00 99.99 P
ATOM 2 OP1 C A 924 -12.981 6.565 -15.850 1.00 99.99 O
ATOM 3 OP2 C A 924 -10.829 7.256 -14.620 1.00 99.99 O
ATOM 429 2H4 C A 947 1.295 -1.142 -0.764 1.00 99.99 H
ATOM 430 P G A 948 -2.886 -4.112 7.863 1.00 99.99 P
ATOM 1591 O5' G A 958 5.497 -3.281 3.598 1.00 99.99 O
ATOM 1592 C5' G A 958 4.345 -3.184 2.781 1.00 99.99 C
私はそれをこのようにしてみました:
splitted = pdb_data.splitlines()
sorted(splitted, key = lambda residue: int(residue.split()[5]))
pdb_data = '\n'.join(splitted)
pdb_data +='\nTER\n'
しかし、それはソートされていません。:-/
ソートに間違った方法を使用しています。その場で並べ替えるには、次のlist.sort()
方法を使用します。
splitted.sort(key = lambda residue: int(residue.split()[5]))
このsorted()
関数は、元のリストをソートせずに新しいリストを返しますが、コードは戻り値を無視します。
sorted()
backの戻り値をに割り当てることもできますが、splitted
ここではかなり非効率的です。
並べ替え自体は問題なく機能します。
>>> splitted = '''\
... ATOM 1591 O5' G A 958 5.497 -3.281 3.598 1.00 99.99 O
... ATOM 1592 C5' G A 958 4.345 -3.184 2.781 1.00 99.99 C
... ATOM 1 P C A 924 -12.106 6.485 -14.650 1.00 99.99 P
... ATOM 2 OP1 C A 924 -12.981 6.565 -15.850 1.00 99.99 O
... ATOM 3 OP2 C A 924 -10.829 7.256 -14.620 1.00 99.99 O
... ATOM 429 2H4 C A 947 1.295 -1.142 -0.764 1.00 99.99 H
... ATOM 430 P G A 948 -2.886 -4.112 7.863 1.00 99.99 P
... '''.splitlines()
>>> splitted.sort(key = lambda residue: int(residue.split()[5]))
>>> pdb_data = '\n'.join(splitted)
>>> print pdb_data
ATOM 1 P C A 924 -12.106 6.485 -14.650 1.00 99.99 P
ATOM 2 OP1 C A 924 -12.981 6.565 -15.850 1.00 99.99 O
ATOM 3 OP2 C A 924 -10.829 7.256 -14.620 1.00 99.99 O
ATOM 429 2H4 C A 947 1.295 -1.142 -0.764 1.00 99.99 H
ATOM 430 P G A 948 -2.886 -4.112 7.863 1.00 99.99 P
ATOM 1591 O5' G A 958 5.497 -3.281 3.598 1.00 99.99 O
ATOM 1592 C5' G A 958 4.345 -3.184 2.781 1.00 99.99 C
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加