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 = []
|
links = []
|
||||||
for bridge in ladd_1['bridges']:
|
for bridge in ladd_1['bridges']:
|
||||||
if bridge.res_partner in res_list(ladd_2):
|
if bridge.res_partner in res_list(ladd_2):
|
||||||
return([ladd_1['i'], ladd_1['j'], bridge.i, bridge.j,
|
# return([ladd_1['i'], ladd_1['j'], bridge.i, bridge.j,
|
||||||
ladd_2['i'], ladd_2['j']])
|
# ladd_2['i'], ladd_2['j']])
|
||||||
|
return ladd_2
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
@ -276,28 +277,43 @@ def get_sheets(ladders):
|
||||||
"""
|
"""
|
||||||
ladds = [ elem for elem in ladders.values() ]
|
ladds = [ elem for elem in ladders.values() ]
|
||||||
sheets = {}
|
sheets = {}
|
||||||
i = 0
|
|
||||||
while i < len(ladds):
|
|
||||||
j = i+1
|
|
||||||
ladd = ladds[i]
|
|
||||||
ladd1 = ladds[i]
|
|
||||||
ladd2 = ladds[j]
|
|
||||||
|
|
||||||
while j < len(ladds):
|
corresp = {}
|
||||||
print(connected_ladders(ladd1, ladd2))
|
for ladd1 in ladds:
|
||||||
|
for ladd2 in ladds:
|
||||||
if connected_ladders(ladd1, ladd2)!=False:
|
if connected_ladders(ladd1, ladd2)!=False:
|
||||||
ladd1 = ladd2
|
corresp_list = [ elem for elem in corresp.keys() ]
|
||||||
#print(connected_ladders(ladd1, ladd2)[4])
|
if ladd1['i'] not in corresp_list and ladd2['i'] not in corresp_list:
|
||||||
ladd2 = ladders[connected_ladders(ladd1, ladd2)[4]]
|
ind = len(sheets.keys())
|
||||||
j+=1
|
sheets[ind] = []
|
||||||
print(ladd['i'], ladd2['i'])
|
sheets[ind].append(ladd1)
|
||||||
i+=1
|
sheets[ind].append(ladd2)
|
||||||
# for ladder in ladders:
|
corresp[ladd1['i']] = ind
|
||||||
# for ladd2 in ladders:
|
corresp[ladd2['i']] = ind
|
||||||
# if connected_ladders(ladders[ladder], ladders[ladd2]):
|
elif ladd2 not in corresp_list and ladd1 in corresp_list:
|
||||||
# pass
|
sheets[corresp[ladd1['i']]].append(ladd2)
|
||||||
#print("ladder",ladders[ladder]['i'], ladders[ladder]['j'],"bridge",bridge.i, bridge.j,
|
corresp[ladd2['i']] = corresp[ladd1['i']]
|
||||||
# "ladder 2",ladders[ladd2]['i'], ladders[ladd2]['j'])
|
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):
|
def res_list(ladder):
|
||||||
# TODO : method in ladder class
|
# TODO : method in ladder class
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ else:
|
||||||
# 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)
|
sheets = get_sheets(ladders)
|
||||||
|
|
||||||
# print("NBRIDGES",len(bridges))
|
# print("NBRIDGES",len(bridges))
|
||||||
|
|
||||||
|
|
@ -59,3 +59,9 @@ else:
|
||||||
for i,ladder in enumerate(ladders.values()):
|
for i,ladder in enumerate(ladders.values()):
|
||||||
print(chr(65+i))
|
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