893932098
发表于 2014-12-12 18:08
银风冷月
发表于 2014-12-12 18:36
a = for x in open('PYL5.pdb') if x.startswith('ATOM')]
f =
for i in range(1,len(a)):
if int(a)-int(a) == 1 or int(a)-int(a) == 0:
pass
else:
f = 'TER\n'+f
with open('PYL50.pdb','w') as fw:
fw.writelines(f)试试这个如何?
奢侈动车
发表于 2014-12-13 11:29
支持楼主,推荐~~
893932098
发表于 2014-12-13 13:24
893932098
发表于 2014-12-13 13:24
ch_hoho
发表于 2014-12-15 19:51
awk实现,尝试新的解决方案。
awk 'NR==1{a=$6;print $0;next}{if(a==$6||++a==$6)print $0;else{ print "TER";print $0;a=$6}}'
kooleon
发表于 2014-12-16 13:01
本帖最后由 kooleon 于 2014-12-16 13:05 编辑
$awk -F "[ ]+"'NR==1 {i=$6;print $0;next} {print ($6==i || $6==i+1)?$0:"TER";i=$6}' file1
ATOM 573O MET B 110 7.574-8.751-3.7741.00 41.42 O
ATOM 574N VAL B 111 7.244-7.123-5.3281.00 41.20 N
ATOM 575CAVAL B 111 6.111-6.471-4.7761.00 42.74 C
ATOM 576CBVAL B 111 6.348-4.974-4.6741.00 43.45 C
ATOM 577CG1 VAL B 111 5.257-4.266-3.8681.000.00 C
ATOM 578CG2 VAL B 111 7.740-4.774-4.0491.000.00 C
ATOM 579C VAL B 111 5.022-6.999-5.6831.00 46.95 C
ATOM 580O VAL B 111 4.896-8.203-5.5031.00 55.71 O
TER
ATOM 582CAPRO B 116 3.376-7.544-7.1901.00 75.54 C
ATOM 583CDPRO B 116 3.417-5.287-6.4131.00 80.36 C
ATOM 584CBPRO B 116 2.112-6.860-7.7161.00 74.55 C
ATOM 585CGPRO B 116 1.983-5.596-6.8611.00 78.83 C
ATOM 586C PRO B 116 4.211-8.026-8.3131.00 73.33 C
ATOM 587O PRO B 116 5.059-8.901-8.1861.00 70.39 O
ATOM 588N ALA B 117 3.949-7.422-9.4461.00 69.09 N
ATOM 589CAALA B 117 4.764-7.535 -10.6481.00 61.56 C
ATOM 590CBALA B 117 3.884-7.662 -11.8871.00 60.67 C
ATOM 591C ALA B 117 5.680-6.324 -10.7421.00 65.02 C
ATOM 592O ALA B 117 5.554-5.488 -11.6481.00 69.82 O
ATOM 593N VAL B 118 6.576-6.224-9.7651.00 61.78 N
嗯。刚才想了下,思路和楼上一相,还是贴出来吧
893932098
发表于 2014-12-16 14:35
KoomIer
发表于 2014-12-16 22:11
我都觉得我可以写,哈哈
就是缓存上一个值比较呗
[~/python]$ cat PYL5.pdb
ATOM 573O MET B 110 7.574-8.751-3.7741.00 41.42 O
ATOM 574N VAL B 111 7.244-7.123-5.3281.00 41.20 N
ATOM 575CAVAL B 111 6.111-6.471-4.7761.00 42.74 C
ATOM 576CBVAL B 111 6.348-4.974-4.6741.00 43.45 C
ATOM 577CG1 VAL B 111 5.257-4.266-3.8681.000.00 C
ATOM 578CG2 VAL B 111 7.740-4.774-4.0491.000.00 C
ATOM 579C VAL B 111 5.022-6.999-5.6831.00 46.95 C
ATOM 580O VAL B 111 4.896-8.203-5.5031.00 55.71 O
ATOM 581N PRO B 116 4.195-6.511-6.5881.00 77.67 N
ATOM 582CAPRO B 116 3.376-7.544-7.1901.00 75.54 C
ATOM 583CDPRO B 116 3.417-5.287-6.4131.00 80.36 C
ATOM 584CBPRO B 116 2.112-6.860-7.7161.00 74.55 C
ATOM 585CGPRO B 116 1.983-5.596-6.8611.00 78.83 C
ATOM 586C PRO B 116 4.211-8.026-8.3131.00 73.33 C
ATOM 587O PRO B 116 5.059-8.901-8.1861.00 70.39 O
ATOM 588N ALA B 117 3.949-7.422-9.4461.00 69.09 N
ATOM 589CAALA B 117 4.764-7.535 -10.6481.00 61.56 C
ATOM 590CBALA B 117 3.884-7.662 -11.8871.00 60.67 C
ATOM 591C ALA B 117 5.680-6.324 -10.7421.00 65.02 C
ATOM 592O ALA B 117 5.554-5.488 -11.6481.00 69.82 O
ATOM 593N VAL B 118 6.576-6.224-9.7651.00 61.78 N
[~/python]$ cat Change.py
#!/usr/bin/python
import re
filein = open('PYL5.pdb','r')
fileout = open('PYL5out.pdb','w+')
initflag=1
for line in filein:
data=int(line.split())
if initflag==0:
if data==lastdata+1 or data==lastdata:
fileout.write("%s"%(line))
else:
fileout.write("TER\n")
elif initflag==1:
fileout.write("%s"%(line))
initflag=0
lastdata=data
filein.close()
fileout.close()
[~/python]$ cat PYL5out.pdb
ATOM 573O MET B 110 7.574-8.751-3.7741.00 41.42 O
ATOM 574N VAL B 111 7.244-7.123-5.3281.00 41.20 N
ATOM 575CAVAL B 111 6.111-6.471-4.7761.00 42.74 C
ATOM 576CBVAL B 111 6.348-4.974-4.6741.00 43.45 C
ATOM 577CG1 VAL B 111 5.257-4.266-3.8681.000.00 C
ATOM 578CG2 VAL B 111 7.740-4.774-4.0491.000.00 C
ATOM 579C VAL B 111 5.022-6.999-5.6831.00 46.95 C
ATOM 580O VAL B 111 4.896-8.203-5.5031.00 55.71 O
TER
ATOM 582CAPRO B 116 3.376-7.544-7.1901.00 75.54 C
ATOM 583CDPRO B 116 3.417-5.287-6.4131.00 80.36 C
ATOM 584CBPRO B 116 2.112-6.860-7.7161.00 74.55 C
ATOM 585CGPRO B 116 1.983-5.596-6.8611.00 78.83 C
ATOM 586C PRO B 116 4.211-8.026-8.3131.00 73.33 C
ATOM 587O PRO B 116 5.059-8.901-8.1861.00 70.39 O
ATOM 588N ALA B 117 3.949-7.422-9.4461.00 69.09 N
ATOM 589CAALA B 117 4.764-7.535 -10.6481.00 61.56 C
ATOM 590CBALA B 117 3.884-7.662 -11.8871.00 60.67 C
ATOM 591C ALA B 117 5.680-6.324 -10.7421.00 65.02 C
ATOM 592O ALA B 117 5.554-5.488 -11.6481.00 69.82 O
ATOM 593N VAL B 118 6.576-6.224-9.7651.00 61.78 N
回复 3# 893932098
893932098
发表于 2014-12-17 09:02