예제 #1
0
    model_name, model_name, iter_)
net_param = caffe_util.NetParameter.from_prototxt(model_file)
net_param.set_molgrid_data_source(data_file, '')
data_param = net_param.get_molgrid_data_param(caffe.TEST)
data_param.random_rotation = True

net = caffe_util.Net.from_param(net_param, weights_file, phase=caffe.TEST)

latent_name = '{}_latent_fc'.format(dict(r='rec', l='lig')[encode])
after_latent_name = 'lig_latent_defc'
net.forward(end=latent_name)
n_samples = n = net.blobs[latent_name].shape[0]
v0 = np.array(net.blobs[latent_name].data[0])
v1 = np.array(net.blobs[latent_name].data[1])
net.blobs[latent_name].data[0:n // 2] = lerp(v0, v1, np.linspace(0, 1, n // 2))
net.blobs[latent_name].data[n // 2:n] = lerp(v1, v0, np.linspace(0, 1, n // 2))
net.forward(start=after_latent_name)

dx_groups = {}
blob_names = ['lig_gen']
for j in range(n_samples):
    for blob_name in blob_names:
        grid_name = '{}_{}k_{}_{}'.format(name, iter_, blob_name, j)
        grid = np.array(net.blobs[blob_name].data[j])
        dx_groups[grid_name] = g.write_grids_to_dx_files(
            grid_name, grid, channels, center, 0.5)

pymol_file = '{}.pymol'.format(name)
other_files = [rec_file, lig_file]
g.write_pymol_script(pymol_file, dx_groups, other_files, [center, center])
예제 #2
0
for name, blob in latent_blobs.items():
    latent_vecs['zero'][name] = np.zeros(blob.shape[1:])
    blob.data[...] = 0.0

for target in latent_vecs:
    for name in latent_vecs[target]:
        latent_vec = latent_vecs[target][name]
        print name, target, latent_vec.shape, np.linalg.norm(latent_vec)

grid_names = []
for rec_target in latent_vecs:
    for lig_target in latent_vecs:
        idx = len(grid_names)
        latent_blobs['rec'].data[idx, ...] = latent_vecs[rec_target]['rec']
        latent_blobs['lig'].data[idx, ...] = latent_vecs[lig_target]['lig']
        grid_names.append('REC_{}_LIG_{}'.format(rec_target, lig_target))
        print grid_names[-1]

net.forward(start='latent_concat')

dx_groups = {}
for i, grid_name in enumerate(grid_names):
    grid = net.blobs['lig_gen'].data[i]
    dx_groups[grid_name] = generate.write_grids_to_dx_files(
        grid_name, grid, channels, np.zeros(3), 0.5)

generate.write_pymol_script('REC_COND.pymol', dx_groups, rec_files + lig_files,
                            2 * centers)
print 'done'
예제 #3
0
net.forward(end='latent_concat')
net.blobs['lig_latent_mean'] = 0.0
net.blobs['lig_latent_std'] = 1.0
net.forward(start='lig_latent_noise')

for other_file in rec_files + lig_files:
    shutil.copyfile(other_file, os.path.basename(other_file))
rec_files = [os.path.basename(f) for f in rec_files]
lig_files = [os.path.basename(f) for f in lig_files]

dx_groups = []
target_grids = dict()
for i, (rec_file, lig_file) in enumerate(zip(rec_files, lig_files)):
    target = os.path.splitext(os.path.basename(lig_file))[0]
    grid = 8.0 * np.array(net.blobs['lig_gen'].data[i])
    generate.write_grids_to_dx_files(target, grid, channels, centers[i], 0.5)
    dx_groups.append(target)
    target_grids[target] = grid

fit_algo = dict(greedy=True,
                bonded=True,
                max_init_bond_E=0.2,
                lambda_E=0.2,
                radius_factor=1.33)


def do_fit(args):
    lig_file, center = args
    target = os.path.splitext(os.path.basename(lig_file))[0]
    grid = target_grids[target]
    xyz, c, bonds, loss = generate.fit_atoms_to_grids(grid,