Réimplémentation du programme DSSP en Python

structure.py 1.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. class Turn:
  2. def __init__(self, turn_type):
  3. self.turn_type = turn_type
  4. class Bridge:
  5. def __init__(self, bridge_type):
  6. self.bridge_type = bridge_type
  7. class Helix:
  8. def __init__(self, residues):
  9. self.residues = residues
  10. def get_turns(residues):
  11. turns = []
  12. for i,res in enumerate(residues):
  13. for j in range(3,6):
  14. if(i+j<len(residues)):
  15. if(res.h_bond(residues[i+j]<-0.5)):
  16. turns.append(Turn(j))
  17. return(turns)
  18. def get_bridges(residues):
  19. bridges = []
  20. for i in range(1,len(residues)-4):
  21. E_min = 0
  22. for j in range(i+2,len(residues)-1):
  23. # select triplet with the minimal energy
  24. if(residues[i-1].h_bond(residues[j])<-0.5
  25. and residues[j].h_bond(residues[i+1])<-0.5):
  26. if(residues[i-1].h_bond(residues[j])+
  27. residues[j].h_bond(residues[i+1]))<E_min:
  28. E_min = residues[i-1].h_bond(residues[j])
  29. +residues[j].h_bond(residues[i+1])
  30. if(residues[j-1].h_bond(residues[i])<-0.5
  31. and residues[i].h_bond(residues[j+1])<-0.5):
  32. if(residues[j-1].h_bond(residues[i])+
  33. residues[i].h_bond(residues[j+1]))<E_min:
  34. E_min = residues[j-1].h_bond(residues[i])
  35. +residues[i].h_bond(residues[j+1])
  36. #bridges.append(Bridge("para"))
  37. if((residues[i].h_bond(residues[j])<-0.5
  38. and residues[j].h_bond(residues[i])<-0.5)
  39. or(residues[i-1].h_bond(residues[j+1])<-0.5
  40. and residues[j-1].h_bond(residues[i+1])<-0.5)):
  41. #bridges.append(Bridge("anti"))
  42. #bridges.append(strongest_bridge)
  43. return(bridges)
  44. def get_helix(turns):
  45. pass