Réimplémentation du programme DSSP en Python

dssp.py 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. import pdb
  2. import atom
  3. import sys
  4. from structure import *
  5. from atom import *
  6. def print_dssp():
  7. empt_line=" " * 145
  8. if(len(sys.argv)<2):
  9. print("Not enough arguments! Run with --help to learn more about proper"
  10. "call structure and parameters.")
  11. else:
  12. pdb_file = pdb.PDBFile(sys.argv[1])
  13. #turns = get_turns(pdb_file.residues)
  14. #get_helix(pdb_file.residues, turns)
  15. #get_bends(pdb_file.residues)
  16. # get_chirality(pdb_file.residues)
  17. # print("NBRIDGES",len(bridges))
  18. # bridges = get_bridges(pdb_file.residues)
  19. # get_bonds(pdb_file.residues)
  20. # e_min = 0
  21. # for res in residues:
  22. # ene = residues[1].h_bond(res)
  23. # if ene <= e_min:
  24. # e_min = ene
  25. # best_res = res
  26. #print(residues[1].resid, best_res.resid,e_min)
  27. #get_phi_psi(residues)
  28. #print(residues[2].atoms, residues[0].resid, residues[1].resid)
  29. #print(get_TCO(residues[2],residues[3]))
  30. # for i,ladder in enumerate(ladders.values()):
  31. # print(chr(65+i))
  32. # for ind, sheet in sheets.items():
  33. # print(ind, sheet)
  34. # for ladder in sheet:
  35. # print(ladder['start'], ladder['end'])
  36. ################### OUTPUT ####################
  37. # print DSSP-style formatted header of PDB file
  38. for elem in pdb_file.get_header() :
  39. print(pdb_file.get_header()[elem], end="")
  40. # Get preliminary data for print loop
  41. residues = pdb_file.residues
  42. bridges = get_bridges(residues)
  43. ladders = get_ladders(bridges, residues)
  44. sheets = get_sheets(ladders)
  45. helix = build_helix_patterns(residues)
  46. # iterating over residues
  47. for i,res in enumerate(residues):
  48. #res.get_turns(residues, turns)
  49. kappa = res.get_bends(residues)[0]
  50. bend_symbol = res.get_bends(residues)[1]
  51. t_co = res.get_tco(residues)
  52. alpha = res.get_chirality(residues)[0]
  53. chirality = res.get_chirality(residues)[1]
  54. phi = res.get_phi_psi(residues)[0]
  55. psi = res.get_phi_psi(residues)[1]
  56. x_ca = res.atoms["CA"].coord_x
  57. y_ca = res.atoms["CA"].coord_y
  58. z_ca = res.atoms["CA"].coord_z
  59. turns = build_turns_patterns(residues)
  60. turn_3 = print_turn_pattern(residues, res, turns[0])
  61. turn_4 = print_turn_pattern(residues, res, turns[1])
  62. turn_5 = print_turn_pattern(residues, res, turns[2])
  63. helix_3 = print_helix_pattern(residues, res, helix[0])
  64. helix_4 = print_helix_pattern(residues, res, helix[1])
  65. helix_5 = print_helix_pattern(residues, res, helix[2])
  66. if i in bridges.keys():
  67. bp1 = bridges[i].j
  68. else:
  69. bp1 = 0
  70. print(i+1, res.resid, res.chain_id, res.res_letter, helix_3, helix_4, helix_5, turn_3, turn_4, turn_5, bend_symbol, chirality, bp1,round(t_co, 3), round(kappa,1),
  71. round(alpha, 1), round(phi, 1), round(psi,1), round(x_ca,1), round(y_ca,1), round(z_ca,1))
  72. for ladd1 in ladders:
  73. ladd_1 = ladders[ladd1]
  74. for ladd2 in ladders:
  75. ladd_2 = ladders[ladd2]
  76. for bridge in ladd_1['bridges']:
  77. if bridge.j in res_list(ladd_2):
  78. print("ladder", ladd_1['i'],"-",ladd_1['j'], "|", bridge.i, "...", bridge.j, "| ladder", ladd_2['i'], ladd_2['j'])
  79. # for ind, sheet in sheets.items():
  80. # print(ind, sheet)
  81. # for ladder in sheet:
  82. # print(ladder['start'], ladder['end'])