input_directory = 'C:\\development\\sources\\' output_directory = 'C:\\development\\workdir\\' processed_energies = cast_values('%s\\%s' % (input_directory, '1KXP_energies.txt')) input_file = open('%s\\1KXP_dockedPoses\\filelist.txt' % input_directory).readlines() file_list = [] for line in input_file: file_list.append(line[:-1]) output_file = open('%s\\visualization_ligands.pdb' % output_directory, 'w') counter = 0 for file_name in file_list: atoms = read_pdb_file('%s\\afterSplit\\%s_lig.pdb' % (output_directory, file_name[0:-4])) s_tuple = [] for atom_line in atoms: if atom_line[0:4] == 'ATOM': coord_tuple = (float(atom_line[30:38].strip()), float(atom_line[38:46].strip()), float(atom_line[46:54].strip())) s_tuple.append(coord_tuple) cx, cy, cz = get_centroid(s_tuple) counter += 1 output_file.write('HETATM%5s%5s VIS X%4i %8.3f%8.3f%8.3f 1.00%6.2f\n' % (str(counter), file_name.replace('.pdb', ''), 0, cx, cy, cz, processed_energies[file_name])) output_file.close()
residue_id = '' chain_id = '' for line in atoms: chain_id = line[21] residue_id = line[22:26] break for line in atoms: if line[21] != chain_id: chain_id = line[21] residue_id = line[22:26] if int(line[22:26]) != int(residue_id) and int(line[22:26]) != (int(residue_id)+1): distance_C_N = get_distance(coord_C['%s%s' % (chain_id, residue_id)], coord_N['%s%s' % (line[21], line[22:26])]) print('Suspicious %s%s: C-N %f' % (line[21], line[22:26], distance_C_N)) if distance_C_N > 1.40: missing_residue = 'MISSING RESIDUE BEFORE: %s' % line[17:26] break residue_id = line[22:26] return missing_residue if __name__ == '__main__': main_directory = 'C:\\development\\sources\\' atoms = read_pdb_file('%s\\%s' % (main_directory, 'missing1.pdb')) #atoms = read_pdb_file('%s\\%s' % (main_directory, 'missing2.pdb')) #atoms = read_pdb_file('%s\\%s' % (main_directory, 'missing3.pdb')) #atoms = read_pdb_file('%s\\%s' % (main_directory, 'missing4.pdb')) #atoms = read_pdb_file('%s\\%s' % (main_directory, 'missing5.pdb')) #atoms = read_pdb_file('%s\\%s' % (main_directory, 'missing6.pdb')) print(find_missing_atoms(atoms)) print(find_missing_residues(atoms))
from task3_readPDB import read_pdb_file from task9_findDistance import get_distance def get_interface_residues(atoms1, atoms2): """ :param atoms1: ATOM records list for atom 1 :type atoms1: list :param atoms2: ATOM records list for atom 2 :type atoms2: list :return: interface residues as a list """ interface = [] for a1 in atoms1: for a2 in atoms2: distance = get_distance(a1, a2) if distance <= 10.0: interaction = '%s WITH %s' % (a1[17:26], a2[17:26]) if interaction not in interface: interface.append(interaction) return interface if __name__ == '__main__': main_directory = 'C:\\development\\workdir\\' atoms_receptor = read_pdb_file('%s\\afterSplit\\%s' % (main_directory, '0a_rec.pdb')) atoms_ligand = read_pdb_file('%s\\afterSplit\\%s' % (main_directory, '0a_lig.pdb')) print(get_interface_residues(atoms_receptor, atoms_ligand))
from task3_readPDB import read_pdb_file from task8_printSequence import get_sequence import numpy as np import matplotlib.pyplot as plt if __name__ == '__main__': main_directory = 'C:\\development\\sources' atoms = read_pdb_file('%s\\1KXP_dockedPoses\\%s' % (main_directory, '0a.pdb')) sequence = get_sequence(atoms) seqsplit = sequence.split('\n') chains = [] position = 0 sequence = '' while position < len(seqsplit): if seqsplit[position] != '': sequence += seqsplit[position] else: if len(sequence) > 0: chains.append(sequence) sequence = '' position += 1 res1lett = [ 'G', 'A', 'L', 'I', 'V', 'D', 'E', 'N', 'Q', 'R', 'K', 'S', 'T', 'C', 'M', 'F', 'Y', 'H', 'W', 'P' ] res_dictionary = {'CHAIN A': {}, 'CHAIN B': {}} for res in res1lett: res_dictionary['CHAIN A'][res] = 0
for line in energies_file: spline = line.split() my_tuple = (spline[0], float(spline[1])) energies.append(my_tuple) energies.sort(key=lambda x: x[1]) output = open('%s\\clusters_reduced.txt' % output_directory, 'w') for i in range(0, len(energies)): structure1 = energies[i][0] if structure1 in already_clustered: continue new_cluster = [structure1] already_clustered.append(structure1) atoms1 = read_pdb_file( '%s\\afterSplit\\%s' % (output_directory, '%s_lig.pdb' % structure1[0:-4])) s1_tuple = [] for atom_line_1 in atoms1: if atom_line_1[0:4] == 'ATOM': coord_tuple = (float(atom_line_1[30:38].strip()), float(atom_line_1[38:46].strip()), float(atom_line_1[46:54].strip())) s1_tuple.append(coord_tuple) counter = 0 for j in range(i + 1, len(energies)): structure2 = energies[j][0] if structure2 in already_clustered: continue counter += 1 atoms2 = read_pdb_file(
:type s1: tuple :param s2: x,y,z coordinates of structure 2 :type s2: tuple :return: RMSD as float """ rmsd = 0.0 for i in range(0, len(s1)): rmsd = rmsd + ((s2[i][0] - s1[i][0])**2) + ( (s2[i][1] - s1[i][1])**2) + ((s2[i][2] - s1[i][2])**2) rmsd = sqrt(rmsd / len(s1)) return rmsd if __name__ == '__main__': main_directory = 'C:\\development\\workdir\\' atoms1 = read_pdb_file('%s\\afterSplit\\%s' % (main_directory, '100a_lig.pdb')) atoms2 = read_pdb_file('%s\\afterSplit\\%s' % (main_directory, '100d_lig.pdb')) s1_tuple = [] s2_tuple = [] for atom_line in atoms1: if atom_line[0:4] == 'ATOM': coord_tuple = (float(atom_line[30:38].strip()), float(atom_line[38:46].strip()), float(atom_line[46:54].strip())) s1_tuple.append(coord_tuple) for atom_line in atoms2: if atom_line[0:4] == 'ATOM': coord_tuple = (float(atom_line[30:38].strip()), float(atom_line[38:46].strip()), float(atom_line[46:54].strip()))