import pdb import atom import sys from structure import * from atom import * def print_dssp(): empt_line=" " * 145 if(len(sys.argv)<2): print("Not enough arguments! Run with --help to learn more about proper" "call structure and parameters.") else: pdb_file = pdb.PDBFile(sys.argv[1]) #turns = get_turns(pdb_file.residues) #get_helix(pdb_file.residues, turns) #get_bends(pdb_file.residues) # get_chirality(pdb_file.residues) # print("NBRIDGES",len(bridges)) # bridges = get_bridges(pdb_file.residues) # get_bonds(pdb_file.residues) # e_min = 0 # for res in residues: # ene = residues[1].h_bond(res) # if ene <= e_min: # e_min = ene # best_res = res #print(residues[1].resid, best_res.resid,e_min) #get_phi_psi(residues) #print(residues[2].atoms, residues[0].resid, residues[1].resid) #print(get_TCO(residues[2],residues[3])) # for i,ladder in enumerate(ladders.values()): # print(chr(65+i)) # for ind, sheet in sheets.items(): # print(ind, sheet) # for ladder in sheet: # print(ladder['start'], ladder['end']) ################### OUTPUT #################### # print DSSP-style formatted header of PDB file for elem in pdb_file.get_header() : print(pdb_file.get_header()[elem], end="") # Get preliminary data for print loop residues = pdb_file.residues bridges = get_bridges(residues) ladders = get_ladders(bridges, residues) sheets = get_sheets(ladders) helix = build_helix_patterns(residues) # iterating over residues for i,res in enumerate(residues): #res.get_turns(residues, turns) kappa = res.get_bends(residues)[0] bend_symbol = res.get_bends(residues)[1] t_co = res.get_tco(residues) alpha = res.get_chirality(residues)[0] chirality = res.get_chirality(residues)[1] phi = res.get_phi_psi(residues)[0] psi = res.get_phi_psi(residues)[1] x_ca = res.atoms["CA"].coord_x y_ca = res.atoms["CA"].coord_y z_ca = res.atoms["CA"].coord_z turns = build_turns_patterns(residues) turn_3 = print_turn_pattern(residues, res, turns[0]) turn_4 = print_turn_pattern(residues, res, turns[1]) turn_5 = print_turn_pattern(residues, res, turns[2]) helix_3 = print_helix_pattern(residues, res, helix[0]) helix_4 = print_helix_pattern(residues, res, helix[1]) helix_5 = print_helix_pattern(residues, res, helix[2]) if i in bridges.keys(): bp1 = bridges[i].j else: bp1 = 0 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), round(alpha, 1), round(phi, 1), round(psi,1), round(x_ca,1), round(y_ca,1), round(z_ca,1)) for ladd1 in ladders: ladd_1 = ladders[ladd1] for ladd2 in ladders: ladd_2 = ladders[ladd2] for bridge in ladd_1['bridges']: if bridge.j in res_list(ladd_2): print("ladder", ladd_1['i'],"-",ladd_1['j'], "|", bridge.i, "...", bridge.j, "| ladder", ladd_2['i'], ladd_2['j']) # for ind, sheet in sheets.items(): # print(ind, sheet) # for ladder in sheet: # print(ladder['start'], ladder['end'])