def sidechain_cpp(in_res, in_pdb, in_dir, out, ip_dist_cutoff, optimize_match, match_cutoffs, backbone, filter_sidechains, print_counts, verbose): #RECEPTOR PEPTIDE if verbose: print 'Extracting residue position from ' + in_res + '...' res_lines = filelines2list(in_res) residues = [int(line.strip())-1 for line in res_lines] if verbose: print 'Extracting information from ' + in_pdb + '...' if filter_sidechains: pdbI = get_pdb_info(in_pdb, filter_sidechains = True) else: pdbI = get_pdb_info(in_pdb) for res in pdbI: if res.string_name == 'GLY': res.correct() if not backbone: res.strip_backbone() pdbSize = len(pdbI) if verbose: print 'Computing inter-atomic distances and finding interacting pairs...\n' (distance_matrix, use_indices) = dist_matrix_IPs_2terms(pdbI, residues, ip_dist_cutoff) if verbose: print use_indices num_ips = len(use_indices) energies = {key:0 for key in residues} for (i, (pos1, pos2)) in enumerate(use_indices): aa = pdbI[pos1].char_name dists = filter_sc_dists(pdbI[pos1].atom_names, ['CA', 'CB'], distance_matrix[pos1][pos2-pos1-1], 'forward') lib_file = os.path.join(in_dir, aa + '.dists') result = statium_cpp.query_distance(lib_file, str(dists.values()[1:-1], optimize_match, match_cutoffs[aa])) list_result = ast.literal_eval('[' + result + ']') for j in range(20): energies[pos2][j] += list_result[j] with open(out, 'w') as f: f.write('\t\t' + '\t'.join([AAint2char(i) for i in range(20)])) for res, energies in energies.iteritems(): f.write(res + '\t' + '\t'.join(energies))
import statium_cpp out = statium_cpp.query_distance('libfile_test.txt','8.0, 9.343, 123.93, 0.832', 100, 0.0) print out