Experimental get_sheets() function
parent
1621940855
commit
bc420e4656
|
|
@ -38,6 +38,7 @@ class Residue:
|
||||||
#e = 1.602176634 * 10*math.exp(-19)
|
#e = 1.602176634 * 10*math.exp(-19)
|
||||||
# dimensionnal factor f
|
# dimensionnal factor f
|
||||||
f = 332
|
f = 332
|
||||||
|
# partial charges
|
||||||
q1 = 0.42
|
q1 = 0.42
|
||||||
q2 = 0.20
|
q2 = 0.20
|
||||||
# r, distance between O-N atoms, in angströms
|
# r, distance between O-N atoms, in angströms
|
||||||
|
|
|
||||||
|
|
@ -20,4 +20,5 @@ else:
|
||||||
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)
|
||||||
get_ladders(bridges)
|
ladders = get_ladders(bridges)
|
||||||
|
get_sheets(ladders)
|
||||||
|
|
|
||||||
|
|
@ -13,9 +13,10 @@ class Turn(Structure):
|
||||||
|
|
||||||
class Bridge(Structure):
|
class Bridge(Structure):
|
||||||
|
|
||||||
def __init__(self, bridge_type, res_num):
|
def __init__(self, bridge_type, res_num, res_partner):
|
||||||
self.bridge_type = bridge_type
|
self.bridge_type = bridge_type
|
||||||
self.res_num = res_num
|
self.res_num = res_num
|
||||||
|
self.res_partner = res_partner
|
||||||
Structure.res = res_num
|
Structure.res = res_num
|
||||||
|
|
||||||
class Helix(Structure):
|
class Helix(Structure):
|
||||||
|
|
@ -26,6 +27,7 @@ class Helix(Structure):
|
||||||
Structure.res = res_num
|
Structure.res = res_num
|
||||||
|
|
||||||
def get_turns(residues):
|
def get_turns(residues):
|
||||||
|
# TODO : prevent redondency of overlapping turns
|
||||||
turns = {}
|
turns = {}
|
||||||
for i,res in enumerate(residues):
|
for i,res in enumerate(residues):
|
||||||
for j in range(3,6):
|
for j in range(3,6):
|
||||||
|
|
@ -103,9 +105,11 @@ def get_bridges(residues):
|
||||||
# finally add the strongest bridge at i and j pos
|
# finally add the strongest bridge at i and j pos
|
||||||
if(strongest_bridge):
|
if(strongest_bridge):
|
||||||
bridges[strongest_bridge['ipos']] = (Bridge(strongest_bridge['btype'],
|
bridges[strongest_bridge['ipos']] = (Bridge(strongest_bridge['btype'],
|
||||||
strongest_bridge['ipos']))
|
strongest_bridge['ipos'],
|
||||||
|
strongest_bridge['jpos']))
|
||||||
bridges[strongest_bridge['jpos']] = (Bridge(strongest_bridge['btype'],
|
bridges[strongest_bridge['jpos']] = (Bridge(strongest_bridge['btype'],
|
||||||
strongest_bridge['jpos']))
|
strongest_bridge['jpos'],
|
||||||
|
strongest_bridge['ipos']))
|
||||||
if(len(bridges)>0):
|
if(len(bridges)>0):
|
||||||
return(bridges)
|
return(bridges)
|
||||||
else:
|
else:
|
||||||
|
|
@ -134,20 +138,45 @@ def get_ladders(bridges):
|
||||||
i = 1
|
i = 1
|
||||||
while i < len(bridges):
|
while i < len(bridges):
|
||||||
k = 1
|
k = 1
|
||||||
while (((i in bridges.keys()) and (i+k in bridges.keys())) and
|
if i in bridges.keys():
|
||||||
(bridges[i].bridge_type == bridges[i+k].bridge_type)):
|
temp_bridges = [bridges[i]]
|
||||||
k+=1
|
while ((i+k in bridges.keys()) and
|
||||||
|
(bridges[i].bridge_type == bridges[i+k].bridge_type)):
|
||||||
|
temp_bridges.append(bridges[i+k])
|
||||||
|
k+=1
|
||||||
if k>1:
|
if k>1:
|
||||||
ladders[bridges[i].res_num] = k-1
|
ladders[bridges[i].res_num] = k-1
|
||||||
print("ladder", bridges[i].res_num, bridges[i+k-1].res_num)
|
print("ladder", bridges[i].res_num, bridges[i+k-1].res_num)
|
||||||
ladders[bridges[i].res_num] = {'start':bridges[i].res_num,
|
ladders[bridges[i].res_num] = {'start':bridges[i].res_num,
|
||||||
'end':bridges[i+k-1].res_num}
|
'end':bridges[i+k-1].res_num,
|
||||||
|
'bridges':temp_bridges}
|
||||||
i+=k-1
|
i+=k-1
|
||||||
else:
|
else:
|
||||||
i+=1
|
i+=1
|
||||||
return ladders
|
return ladders
|
||||||
|
|
||||||
|
def get_sheets(ladders):
|
||||||
|
"""
|
||||||
|
Bridges between ladders.
|
||||||
|
Check if 1 bridge between one ladder and one or more other ladders.
|
||||||
|
Iterate over all residues of one ladder and check if bridge with other residues
|
||||||
|
of the other ladders.
|
||||||
|
"""
|
||||||
|
|
||||||
|
for ladder in ladders:
|
||||||
|
for bridge in ladders[ladder]['bridges']:
|
||||||
|
for ladd2 in ladders:
|
||||||
|
if bridge.res_partner in res_list(ladders[ladd2]):
|
||||||
|
print("ladder",ladders[ladder]['start'], ladders[ladder]['end'],"bridge",bridge.res_num, bridge.res_partner,
|
||||||
|
"ladder 2",ladders[ladd2]['start'], ladders[ladd2]['end'])
|
||||||
|
|
||||||
|
|
||||||
|
def res_list(ladder):
|
||||||
|
# TODO : method in ladder class
|
||||||
|
l=[]
|
||||||
|
for i in range(ladder['start'], ladder['end']):
|
||||||
|
l.append(i)
|
||||||
|
return(l)
|
||||||
|
|
||||||
def get_bends(residues):
|
def get_bends(residues):
|
||||||
bends = {}
|
bends = {}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue