Corrected get_bridges func

master
Thomas Forest 2019-09-15 14:47:21 +02:00
parent e363f37ce0
commit 4cd628fa50
1 changed files with 70 additions and 23 deletions

View File

@ -1,13 +1,14 @@
class Turn: class Turn:
def __init__(self, turn_type): def __init__(self, turn_type, res_num):
self.turn_type = turn_type self.turn_type = turn_type
class Bridge: class Bridge:
def __init__(self, bridge_type): def __init__(self, bridge_type, res_num):
self.bridge_type = bridge_type self.bridge_type = bridge_type
self.res_num = res_num
class Helix: class Helix:
@ -20,11 +21,13 @@ def get_turns(residues):
for j in range(3,6): for j in range(3,6):
if(i+j<len(residues)): if(i+j<len(residues)):
if(res.h_bond(residues[i+j]<-0.5)): if(res.h_bond(residues[i+j]<-0.5)):
turns.append(Turn(j)) turns.append(Turn(j,i))
return(turns) return(turns)
def get_bridges(residues): def get_bridges(residues):
bridges = [] bridges = []
bridge = {}
strongest_bridge = {}
for i in range(1,len(residues)-4): for i in range(1,len(residues)-4):
E_min = 0 E_min = 0
for j in range(i+2,len(residues)-1): for j in range(i+2,len(residues)-1):
@ -32,28 +35,72 @@ def get_bridges(residues):
if(residues[i-1].h_bond(residues[j])<-0.5 if(residues[i-1].h_bond(residues[j])<-0.5
and residues[j].h_bond(residues[i+1])<-0.5): and residues[j].h_bond(residues[i+1])<-0.5):
if(residues[i-1].h_bond(residues[j])+ bridge = {'res1':residues[i-1].h_bond(residues[j]),
residues[j].h_bond(residues[i+1]))<E_min: 'res2':residues[j].h_bond(residues[i+1]),
E_min = residues[i-1].h_bond(residues[j]) 'ipos':i,
+residues[j].h_bond(residues[i+1]) 'jpos':j,
'btype':"para"}
# if(residues[i-1].h_bond(residues[j])+
# residues[j].h_bond(residues[i+1]))<E_min:
# E_min = residues[i-1].h_bond(residues[j])
# +residues[j].h_bond(residues[i+1])
# bridge_type = "para"
if(residues[j-1].h_bond(residues[i])<-0.5 if(residues[j-1].h_bond(residues[i])<-0.5
and residues[i].h_bond(residues[j+1])<-0.5): and residues[i].h_bond(residues[j+1])<-0.5):
if(residues[j-1].h_bond(residues[i])+ bridge = {'res1':residues[j-1].h_bond(residues[i]),
residues[i].h_bond(residues[j+1]))<E_min: 'res2':residues[i].h_bond(residues[j+1]),
E_min = residues[j-1].h_bond(residues[i]) 'ipos':i,
+residues[i].h_bond(residues[j+1]) 'jpos':j,
#bridges.append(Bridge("para")) 'btype':"para"}
# if(residues[j-1].h_bond(residues[i])+
# residues[i].h_bond(residues[j+1]))<E_min:
if((residues[i].h_bond(residues[j])<-0.5 # E_min = residues[j-1].h_bond(residues[i])
and residues[j].h_bond(residues[i])<-0.5) # +residues[i].h_bond(residues[j+1])
or(residues[i-1].h_bond(residues[j+1])<-0.5 # bridge_type = "para"
and residues[j-1].h_bond(residues[i+1])<-0.5)):
#bridges.append(Bridge("anti")) if(residues[i].h_bond(residues[j])<-0.5
#bridges.append(strongest_bridge) and residues[j].h_bond(residues[i])<-0.5):
return(bridges) bridge = {'res1':residues[i].h_bond(residues[j]),
'res2':residues[j].h_bond(residues[i]),
'ipos':i,
'jpos':j,
'btype':"anti"}
# if(residues[i].h_bond(residues[j])+
# residues[j].h_bond(residues[i]))<E_min:
# E_min = residues[i].h_bond(residues[j])
# +residues[j].h_bond(residues[i])
# bridge_type = "anti"
if(residues[i-1].h_bond(residues[j+1])<-0.5
and residues[j-1].h_bond(residues[i+1])<-0.5):
bridge = {'res1':residues[i-1].h_bond(residues[j+1]),
'res2':residues[j-1].h_bond(residues[i+1]),
'ipos':i,
'jpos':j,
'btype':"anti"}
# if(residues[i-1].h_bond(residues[j+1])+
# residues[j-1].h_bond(residues[i+1]))<E_min:
# E_min = residues[i-1].h_bond(residues[j+1])
# +residues[j-1].h_bond(residues[i+1])
# bridge_type = "anti"
if(bridge):
if(bridge['res1']+bridge['res2']<E_min):
E_min = bridge['res1']+bridge['res2']
strongest_bridge = bridge
bridge = {}
# finally add the strongest bridge at i and j pos
if(strongest_bridge):
bridges.append(Bridge(strongest_bridge['btype'],
strongest_bridge['ipos']))
bridges.append(Bridge(strongest_bridge['btype'],
strongest_bridge['jpos']))
if(len(bridges)>0):
return(bridges)
else:
return(False)
def get_helix(turns): def get_helix(residues, turns):
pass for i in range(residues):
for j in range(i+1,i+5):
if