matplotlib.use('Agg')
import matplotlib.pyplot as plt
import os.path
+from itertools import cycle
iatom=0
nmol=0
y.append(fluct)
b=[]
-ires=''
+newchain=True
if os.path.exists('plik.pdb'):
with open('plik.pdb') as f:
for line in f:
if line[0:4]=='ATOM' and line[13:15]=='CA':
# print line
- if ires=='' or int(line[22:26])>ires:
+ if newchain or int(line[22:26])>ires:
b.append(math.sqrt(float(line[60:66])*3/8/math.pi/math.pi))
ires=int(line[22:26])
+ newchain=False
+ if line[0:3]=='TER':
+ newchain=True
+ if line[0:3]=='END':
+ break
+
plt.xlabel('residue')
plt.plot(x,b,'-',c='red')
plt.legend(['fluctuations','sqrt(3*bfactor/8*pi^2)'])
plt.savefig('fluct_plot.png')
+
+ycycle=cycle(y)
+with open('plik.pdb') as f, open ('plik_bf.pdb','w') as fw:
+ prev_ires=None
+ for line in f:
+ if line[0:4]=='ATOM':
+ if line[22:26] != prev_ires:
+ prev_ires=line[22:26]
+ bf=next(ycycle)
+ fw.write(line[0:60]+'{:6.2f}'.format(bf)+line[66:])
+ elif line[0:3] == 'TER' or line[0:6] == 'CONECT':
+ fw.write(line)
\ No newline at end of file