Implemented bridge search algorithm
parent
a242afd662
commit
d745b942bd
60
src/atom.py
60
src/atom.py
|
|
@ -262,8 +262,9 @@ def connected_ladders(ladd_1, ladd_2):
|
|||
links = []
|
||||
for bridge in ladd_1['bridges']:
|
||||
if bridge.res_partner in res_list(ladd_2):
|
||||
return([ladd_1['i'], ladd_1['j'], bridge.i, bridge.j,
|
||||
ladd_2['i'], ladd_2['j']])
|
||||
# return([ladd_1['i'], ladd_1['j'], bridge.i, bridge.j,
|
||||
# ladd_2['i'], ladd_2['j']])
|
||||
return ladd_2
|
||||
|
||||
return False
|
||||
|
||||
|
|
@ -276,29 +277,44 @@ def get_sheets(ladders):
|
|||
"""
|
||||
ladds = [ elem for elem in ladders.values() ]
|
||||
sheets = {}
|
||||
i = 0
|
||||
while i < len(ladds):
|
||||
j = i+1
|
||||
ladd = ladds[i]
|
||||
ladd1 = ladds[i]
|
||||
ladd2 = ladds[j]
|
||||
|
||||
while j < len(ladds):
|
||||
print(connected_ladders(ladd1, ladd2))
|
||||
corresp = {}
|
||||
for ladd1 in ladds:
|
||||
for ladd2 in ladds:
|
||||
if connected_ladders(ladd1, ladd2)!=False:
|
||||
ladd1 = ladd2
|
||||
#print(connected_ladders(ladd1, ladd2)[4])
|
||||
ladd2 = ladders[connected_ladders(ladd1, ladd2)[4]]
|
||||
j+=1
|
||||
print(ladd['i'], ladd2['i'])
|
||||
i+=1
|
||||
# for ladder in ladders:
|
||||
# for ladd2 in ladders:
|
||||
# if connected_ladders(ladders[ladder], ladders[ladd2]):
|
||||
# pass
|
||||
#print("ladder",ladders[ladder]['i'], ladders[ladder]['j'],"bridge",bridge.i, bridge.j,
|
||||
# "ladder 2",ladders[ladd2]['i'], ladders[ladd2]['j'])
|
||||
corresp_list = [ elem for elem in corresp.keys() ]
|
||||
if ladd1['i'] not in corresp_list and ladd2['i'] not in corresp_list:
|
||||
ind = len(sheets.keys())
|
||||
sheets[ind] = []
|
||||
sheets[ind].append(ladd1)
|
||||
sheets[ind].append(ladd2)
|
||||
corresp[ladd1['i']] = ind
|
||||
corresp[ladd2['i']] = ind
|
||||
elif ladd2 not in corresp_list and ladd1 in corresp_list:
|
||||
sheets[corresp[ladd1['i']]].append(ladd2)
|
||||
corresp[ladd2['i']] = corresp[ladd1['i']]
|
||||
elif ladd1 not in corresp_list and ladd2 in corresp_list:
|
||||
sheets[corresp[ladd2['i']]].append(ladd1)
|
||||
corresp[ladd1['i']] = corresp[ladd2['i']]
|
||||
|
||||
return sheets
|
||||
|
||||
def get_sheets2(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.
|
||||
"""
|
||||
sheets = {}
|
||||
for ladder in ladders:
|
||||
for ladd2 in ladders:
|
||||
if connected_ladders(ladders[ladder], ladders[ladd2]):
|
||||
pass
|
||||
print("ladder",ladders[ladder]['i'], ladders[ladder]['j'],"bridge",bridge.i, bridge.j,
|
||||
"ladder 2",ladders[ladd2]['i'], ladders[ladd2]['j'])
|
||||
|
||||
|
||||
def res_list(ladder):
|
||||
# TODO : method in ladder class
|
||||
l=[]
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ else:
|
|||
# get_chirality(pdb_file.residues)
|
||||
bridges = get_bridges(pdb_file.residues)
|
||||
ladders = get_ladders(bridges, pdb_file.residues)
|
||||
get_sheets(ladders)
|
||||
sheets = get_sheets(ladders)
|
||||
|
||||
# print("NBRIDGES",len(bridges))
|
||||
|
||||
|
|
@ -59,3 +59,9 @@ else:
|
|||
for i,ladder in enumerate(ladders.values()):
|
||||
print(chr(65+i))
|
||||
|
||||
for ind, sheet in sheets.items():
|
||||
print(ind, sheet)
|
||||
for ladder in sheet:
|
||||
print(ladder['start'], ladder['end'])
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue