Beispiel #1
0
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))
Beispiel #2
0
import statium_cpp
out = statium_cpp.query_distance('libfile_test.txt','8.0, 9.343, 123.93, 0.832', 100, 0.0)
print out