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))
예제 #3
0
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))
예제 #4
0
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(
예제 #6
0
    :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()))