Working phi_psi
parent
7ddd47c379
commit
8532e4ecd7
20
src/dssp.py
20
src/dssp.py
|
|
@ -23,19 +23,17 @@ else:
|
||||||
|
|
||||||
turns = get_turns(pdb_file.residues)
|
turns = get_turns(pdb_file.residues)
|
||||||
get_helix(pdb_file.residues, turns)
|
get_helix(pdb_file.residues, turns)
|
||||||
# get_bends(pdb_file.residues)
|
get_bends(pdb_file.residues)
|
||||||
# get_chirality(pdb_file.residues)
|
# get_chirality(pdb_file.residues)
|
||||||
bridges = get_bridges(pdb_file.residues)
|
# bridges = get_bridges(pdb_file.residues)
|
||||||
ladders = get_ladders(bridges, pdb_file.residues)
|
# ladders = get_ladders(bridges, pdb_file.residues)
|
||||||
get_sheets(ladders)
|
# get_sheets(ladders)
|
||||||
|
|
||||||
# print("NBRIDGES",len(bridges))
|
# print("NBRIDGES",len(bridges))
|
||||||
|
|
||||||
bridges = get_bridges(pdb_file.residues)
|
# bridges = get_bridges(pdb_file.residues)
|
||||||
|
|
||||||
get_bonds(pdb_file.residues)
|
# get_bonds(pdb_file.residues)
|
||||||
|
|
||||||
print(pdb_file.residues[1].h_bond(pdb_file.residues[2]))
|
|
||||||
|
|
||||||
residues = pdb_file.residues
|
residues = pdb_file.residues
|
||||||
e_min = 0
|
e_min = 0
|
||||||
|
|
@ -44,4 +42,8 @@ else:
|
||||||
if ene <= e_min:
|
if ene <= e_min:
|
||||||
e_min = ene
|
e_min = ene
|
||||||
best_res = res
|
best_res = res
|
||||||
print(residues[1].resid, best_res.resid,e_min)
|
#print(residues[1].resid, best_res.resid,e_min)
|
||||||
|
|
||||||
|
#get_phi_psi(residues)
|
||||||
|
#print(residues[2].atoms, residues[0].resid, residues[1].resid)
|
||||||
|
print(get_TCO(residues[2],residues[3]))
|
||||||
|
|
|
||||||
|
|
@ -144,8 +144,10 @@ def get_helix(residues, turns):
|
||||||
while(i+k in turns):
|
while(i+k in turns):
|
||||||
k+=1
|
k+=1
|
||||||
temp_res.append(residues[i])
|
temp_res.append(residues[i])
|
||||||
|
last_res_pos = residues[i].resid+k
|
||||||
if(k>=1):
|
if(k>=1):
|
||||||
print(k,"- HELIX at", residues[i].resid)
|
helix_size=last_res_pos - residues[i].resid
|
||||||
|
print(turns[i].turn_type,"- HELIX at", residues[i].resid)
|
||||||
helix.append(Helix(temp_res,residues[i].resid))
|
helix.append(Helix(temp_res,residues[i].resid))
|
||||||
i = i+k
|
i = i+k
|
||||||
else:
|
else:
|
||||||
|
|
@ -201,10 +203,10 @@ def res_list(ladder):
|
||||||
def get_bends(residues):
|
def get_bends(residues):
|
||||||
bends = {}
|
bends = {}
|
||||||
for i in range(2,len(residues)-2):
|
for i in range(2,len(residues)-2):
|
||||||
angle = vector_angles(vectors_substr(position_vector(residues[i].atoms["CA"].coords),
|
angle = math.degrees(vector_angles(vectors_substr(position_vector(residues[i].atoms["CA"].coords),
|
||||||
position_vector(residues[i-2].atoms["CA"].coords)),
|
position_vector(residues[i-2].atoms["CA"].coords)),
|
||||||
vectors_substr(position_vector(residues[i+2].atoms["CA"].coords),
|
vectors_substr(position_vector(residues[i+2].atoms["CA"].coords),
|
||||||
position_vector(residues[i].atoms["CA"].coords)))
|
position_vector(residues[i].atoms["CA"].coords))))
|
||||||
if(angle>70):
|
if(angle>70):
|
||||||
print("angle", residues[i].resid, angle)
|
print("angle", residues[i].resid, angle)
|
||||||
bends[residues[i].resid] = angle
|
bends[residues[i].resid] = angle
|
||||||
|
|
@ -240,8 +242,7 @@ def vector_angles(v1,v2):
|
||||||
norm_v2 = vector_norm(v2)
|
norm_v2 = vector_norm(v2)
|
||||||
term = dot_prod/(abs(norm_v1)*abs(norm_v2))
|
term = dot_prod/(abs(norm_v1)*abs(norm_v2))
|
||||||
rad_angle = math.acos(term)
|
rad_angle = math.acos(term)
|
||||||
deg_angle = rad_angle*(180/math.pi)
|
return rad_angle
|
||||||
return deg_angle
|
|
||||||
|
|
||||||
def calc_dihedral(u1, u2, u3, u4):
|
def calc_dihedral(u1, u2, u3, u4):
|
||||||
""" Calculate dihedral angle method. From bioPython.PDB
|
""" Calculate dihedral angle method. From bioPython.PDB
|
||||||
|
|
@ -299,3 +300,30 @@ def get_chirality(residues):
|
||||||
|
|
||||||
return chirality
|
return chirality
|
||||||
|
|
||||||
|
|
||||||
|
def get_phi_psi(residues):
|
||||||
|
for i in range(len(residues)):
|
||||||
|
if(i==0):
|
||||||
|
phi = 360.0
|
||||||
|
else:
|
||||||
|
phi = calc_dihedral(residues[i-1].atoms["C"].coords,
|
||||||
|
residues[i].atoms["N"].coords,
|
||||||
|
residues[i].atoms["CA"].coords,
|
||||||
|
residues[i].atoms["C"].coords)
|
||||||
|
if(i==len(residues)-1):
|
||||||
|
psi = 360.0
|
||||||
|
else:
|
||||||
|
psi = calc_dihedral(residues[i].atoms["N"].coords,
|
||||||
|
residues[i].atoms["CA"].coords,
|
||||||
|
residues[i].atoms["C"].coords,
|
||||||
|
residues[i+1].atoms["N"].coords)
|
||||||
|
|
||||||
|
print("ANGLES", i, phi, psi)
|
||||||
|
|
||||||
|
def get_TCO(res1, res2):
|
||||||
|
CO_res1 = vector_from_pos(res1.atoms["C"].coords,
|
||||||
|
res1.atoms["O"].coords)
|
||||||
|
CO_res2 = vector_from_pos(res2.atoms["C"].coords,
|
||||||
|
res2.atoms["O"].coords)
|
||||||
|
angle = vector_angles(CO_res1, CO_res2)
|
||||||
|
return(math.cos(angle))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue