123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
-
- class Turn:
-
- def __init__(self, turn_type, res_num):
- self.turn_type = turn_type
-
- class Bridge:
-
- def __init__(self, bridge_type, res_num):
- self.bridge_type = bridge_type
- self.res_num = res_num
-
- class Helix:
-
- def __init__(self, residues):
- self.residues = residues
-
- def get_turns(residues):
- turns = []
- for i,res in enumerate(residues):
- for j in range(3,6):
- if(i+j<len(residues)):
- if(res.h_bond(residues[i+j]<-0.5)):
- turns.append(Turn(j,i))
- return(turns)
-
- def get_bridges(residues):
- bridges = []
- bridge = {}
- strongest_bridge = {}
- for i in range(1,len(residues)-4):
- E_min = 0
- for j in range(i+2,len(residues)-1):
- # select triplet with the minimal energy
-
- if(residues[i-1].h_bond(residues[j])<-0.5
- and residues[j].h_bond(residues[i+1])<-0.5):
- bridge = {'res1':residues[i-1].h_bond(residues[j]),
- 'res2':residues[j].h_bond(residues[i+1]),
- 'ipos':i,
- '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
- and residues[i].h_bond(residues[j+1])<-0.5):
- bridge = {'res1':residues[j-1].h_bond(residues[i]),
- 'res2':residues[i].h_bond(residues[j+1]),
- 'ipos':i,
- 'jpos':j,
- 'btype':"para"}
- # if(residues[j-1].h_bond(residues[i])+
- # residues[i].h_bond(residues[j+1]))<E_min:
- # E_min = residues[j-1].h_bond(residues[i])
- # +residues[i].h_bond(residues[j+1])
- # bridge_type = "para"
-
- if(residues[i].h_bond(residues[j])<-0.5
- and residues[j].h_bond(residues[i])<-0.5):
- 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(residues, turns):
- for i in range(residues):
- for j in range(i+1,i+5):
- if
|