import prody as pd
import numpy as np
nmr_model = pd.parsePDB('5zc6', segment='A')
RMSFs = [np.mean(pd.calcRMSF(res)) for res in nmr_model.iterResidues()]
del RMSFs[165:168] #удаляем остатки которых нет в РСА
print(len(RMSFs))
xray_model = pd.parsePDB('121P', segment='A')
pr_mass_center = pd.calcCenter(xray_model, weights=xray_model.getMasses())
distans = []
betas = []
for residue in xray_model.iterResidues():
if "CA" in residue.getNames(): # if residue is an aminoacid
mean_beta = np.mean(residue.getBetas())
betas.append(mean_beta)
print(len(betas))
import matplotlib.pyplot as plt
fig,ax = plt.subplots()
ax.scatter(betas, RMSFs, s=1)
ax.set_xlabel('Beta-factor')
ax.set_ylabel('RMSFs')
plt.plot()
#coef = np.polyfit(betas, RMSFs 2)
#equ = np.poly1d(coef)
#x_plot = np.linspace(0,50)
#y_plot = equ(distans)
#plt.plot(distans, y_plot, color='r')
fig.show()
plt.savefig('pr5_plot.png')
NMR_prot = pd.parsePDB("5zc6")
bb_hb_dist = []
sc_hb_dist = []
loop_hb_dist = []
THR20 = NMR_prot["A", 20]["N"].getCoordsets()
LYS16 = NMR_prot["A", 16]["O"].getCoordsets()
SER17 = NMR_prot["A", 17]["OG"].getCoordsets()
ASP57_OD1 = NMR_prot["A", 57]["OD1"].getCoordsets()
ASP57_OD2 = NMR_prot["A", 57]["OD2"].getCoordsets()
ASN26 = NMR_prot["A", 26]["OD1"].getCoordsets()
ARG149_NH1 = NMR_prot["A", 149]["NH1"].getCoordsets()
ARG149_NH2 = NMR_prot["A", 149]["NH2"].getCoordsets()
for i in range(15):
bb_hb_dist.append(pd.calcDistance(THR20[i], LYS16[i]))
sc_hb_dist.append(min(pd.calcDistance(SER17[i], ASP57_OD1[i]), pd.calcDistance(SER17[i], ASP57_OD2[i])))
loop_hb_dist.append(min(pd.calcDistance(ASN26[i], ARG149_NH1[i]), pd.calcDistance(ASN26[i], ARG149_NH2[i])))
bb_pr = 0
sc_pr = 0
loop_pr = 0
for i in range(15):
if bb_hb_dist[i] < 3.5:
bb_pr+=1
if sc_hb_dist[i] < 3.5:
sc_pr+=1
if loop_hb_dist[i] < 3.5:
loop_pr+=1
print(f"Пара остатков \tmin\tmax\tmedian \t hbonds \t percent hbonds\n\
THR20 и LYS16\t \t{np.min(bb_hb_dist):.2f}\t{np.max(bb_hb_dist):.2f}\t{np.median(bb_hb_dist):.2f}\t{(bb_pr):.1f}\t\t{(bb_pr/15*100):.2f}\n\
SER17 и ASP57\t\t{np.min(sc_hb_dist):.2f}\t{np.max(sc_hb_dist):.2f}\t{np.median(sc_hb_dist):.2f}\t{(sc_pr):.1f}\t\t{(sc_pr/15*100):.2f}\n\
ASN26 и ARG149 \t \t{np.min(loop_hb_dist):.2f}\t{np.max(loop_hb_dist):.2f}\t{np.median(loop_hb_dist):.2f}\t{(loop_pr):.1f}\t\t{(loop_pr/15*100):.2f}\n")