Commit 40c6fd63 authored by Leonardo Solis's avatar Leonardo Solis
Browse files

temp config for testing grads using spec genomes

parent 732b15b6
......@@ -197,9 +197,9 @@ odock: check-env-all stringify $(SRC)
# Example
PDB := 3ce3
NRUN := 100
POPSIZE := 2048
PDB := 1ac8
NRUN := 1
POPSIZE := 10
TESTNAME:= test
test: odock
......
......@@ -88,6 +88,9 @@ void gpu_calc_gradient(
__local float* gradient_intra_x,
__local float* gradient_intra_y,
__local float* gradient_intra_z,
__local float* gradient_x,
__local float* gradient_y,
__local float* gradient_z,
__local float* gradient_per_intracontributor,
__local float* gradient_genotype
)
......@@ -645,13 +648,12 @@ void gpu_calc_gradient(
barrier(CLK_LOCAL_MEM_FENCE);
// Accumulating inter- and intramolecular gradients
// simply into "gradient_inter_{x|y|z}"
for (uint atom_cnt = get_local_id(0);
atom_cnt < dockpars_num_of_atoms;
atom_cnt+= NUM_OF_THREADS_PER_BLOCK) {
gradient_inter_x[atom_cnt] = gradient_inter_x[atom_cnt] + gradient_intra_x[atom_cnt];
gradient_inter_y[atom_cnt] = gradient_inter_y[atom_cnt] + gradient_intra_y[atom_cnt];
gradient_inter_z[atom_cnt] = gradient_inter_z[atom_cnt] + gradient_intra_z[atom_cnt];
gradient_x[atom_cnt] = gradient_inter_x[atom_cnt] + gradient_intra_x[atom_cnt];
gradient_y[atom_cnt] = gradient_inter_y[atom_cnt] + gradient_intra_y[atom_cnt];
gradient_z[atom_cnt] = gradient_inter_z[atom_cnt] + gradient_intra_z[atom_cnt];
}
barrier(CLK_LOCAL_MEM_FENCE);
......@@ -663,9 +665,9 @@ void gpu_calc_gradient(
for (uint lig_atom_id = 0;
lig_atom_id<dockpars_num_of_atoms;
lig_atom_id++) {
gradient_genotype[0] += gradient_inter_x[lig_atom_id]; // gradient for gene 0: gene x
gradient_genotype[1] += gradient_inter_y[lig_atom_id]; // gradient for gene 1: gene y
gradient_genotype[2] += gradient_inter_z[lig_atom_id]; // gradient for gene 2: gene z
gradient_genotype[0] += gradient_x[lig_atom_id]; // gradient for gene 0: gene x
gradient_genotype[1] += gradient_y[lig_atom_id]; // gradient for gene 1: gene y
gradient_genotype[2] += gradient_z[lig_atom_id]; // gradient for gene 2: gene z
}
/*
......@@ -691,14 +693,18 @@ void gpu_calc_gradient(
float3 torque_rot = (float3)(0.0f, 0.0f, 0.0f);
printf("%-20s %-10.5f %-10.5f %-10.5f\n", "initial torque: ", torque_rot.x, torque_rot.y, torque_rot.z);
// Center of rotation
// In getparameters.cpp, it indicates
// translation genes are in grid spacing (instead of Angstroms)
float3 about;
about.x = genotype[0];
about.y = genotype[1];
about.z = genotype[2];
//#if 0
about.x = 30/*genotype[0]*/;
about.y = 30/*genotype[1]*/;
about.z = 30/*genotype[2]*/;
//#endif
// Temporal variable to calculate translation differences.
// They are converted back to Angstroms here
float3 r;
......@@ -709,31 +715,37 @@ void gpu_calc_gradient(
r.x = (calc_coords_x[lig_atom_id] - about.x) * dockpars_grid_spacing;
r.y = (calc_coords_y[lig_atom_id] - about.y) * dockpars_grid_spacing;
r.z = (calc_coords_z[lig_atom_id] - about.z) * dockpars_grid_spacing;
torque_rot += cross(r, torque_rot);
}
const float rad = 1E-8;
const float rad_div_2 = native_divide(rad, 2);
float3 force = (float3)(-gradient_x[lig_atom_id], -gradient_y[lig_atom_id], -gradient_z[lig_atom_id]) / dockpars_grid_spacing;
torque_rot += cross(r, force);
printf("%-20s %-10u\n", "contrib. of atom-id: ", lig_atom_id);
printf("%-20s %-10.5f %-10.5f %-10.5f\n", "r : ", r.x, r.y, r.z);
printf("%-20s %-10.5f %-10.5f %-10.5f\n", "force : ", force.x, force.y, force.z);
printf("%-20s %-10.5f %-10.5f %-10.5f\n", "partial torque: ", torque_rot.x, torque_rot.y, torque_rot.z);
printf("\n");
}
float quat_w, quat_x, quat_y, quat_z;
printf("%-20s %-10.5f %-10.5f %-10.5f\n", "final torque: ", torque_rot.x, torque_rot.y, torque_rot.z);
// Derived from rotation.py/axisangle_to_q()
// genes[3:7] = rotation.axisangle_to_q(torque, rad)
torque_rot = fast_normalize(torque_rot);
quat_x = torque_rot.x;
quat_y = torque_rot.y;
quat_z = torque_rot.z;
float torque_length = fast_length(torque_rot);
// Rotation-related gradients are expressed here in quaternions
quat_w = native_cos(rad_div_2);
quat_x = quat_x * native_sin(rad_div_2);
quat_y = quat_y * native_sin(rad_div_2);
quat_z = quat_z * native_sin(rad_div_2);
// Infinitesimal rotation in radians
const float infinitesimal_radian = 1E-8;
// Finding the quaternion that performs
// the infinitesimal rotation around torque axis
float4 quat_torque;
quat_torque.w = native_cos(infinitesimal_radian*0.5f);
quat_torque.x = fast_normalize(torque_rot).x * native_sin(infinitesimal_radian*0.5f);
quat_torque.y = fast_normalize(torque_rot).y * native_sin(infinitesimal_radian*0.5f);
quat_torque.z = fast_normalize(torque_rot).z * native_sin(infinitesimal_radian*0.5f);
// Converting quaternion gradients into Shoemake gradients
// Derived from autodockdev/motion.py/_get_cube3_gradient
// This is where we are in cube3
// This is where we are in Shoemake space
float current_u1, current_u2, current_u3;
current_u1 = genotype[3]; // check very initial input Shoemake genes
current_u2 = genotype[4];
......@@ -741,47 +753,75 @@ void gpu_calc_gradient(
// This is where we are in quaternion space
// current_q = cube3_to_quaternion(current_u)
float current_qw, current_qx, current_qy, current_qz;
current_qw = native_sqrt(1-current_u1) * native_sin(PI_TIMES_2*current_u2);
current_qx = native_sqrt(1-current_u1) * native_cos(PI_TIMES_2*current_u2);
current_qy = native_sqrt(current_u1) * native_sin(PI_TIMES_2*current_u3);
current_qz = native_sqrt(current_u1) * native_cos(PI_TIMES_2*current_u3);
float4 current_q;
current_q.w = native_sqrt(1-current_u1) * native_sin(PI_TIMES_2*current_u2);
current_q.x = native_sqrt(1-current_u1) * native_cos(PI_TIMES_2*current_u2);
current_q.y = native_sqrt(current_u1) * native_sin(PI_TIMES_2*current_u3);
current_q.z = native_sqrt(current_u1) * native_cos(PI_TIMES_2*current_u3);
// This is where we want to be in quaternion space
float target_qw, target_qx, target_qy, target_qz;
float4 target_q;
// target_q = rotation.q_mult(q, current_q)
// Derived from autodockdev/rotation.py/q_mult()
// In our terms means q_mult(quat_{w|x|y|z}, current_q{w|x|y|z})
target_qw = quat_w*current_qw - quat_x*current_qx - quat_y*current_qy - quat_z*current_qz;// w
target_qx = quat_w*current_qx + quat_x*current_qw + quat_y*current_qz - quat_z*current_qy;// x
target_qy = quat_w*current_qy + quat_y*current_qw + quat_z*current_qx - quat_x*current_qz;// y
target_qz = quat_w*current_qz + quat_z*current_qw + quat_x*current_qy - quat_y*current_qx;// z
target_q.w = quat_torque.w*current_q.w - quat_torque.x*current_q.x - quat_torque.y*current_q.y - quat_torque.z*current_q.z;// w
target_q.x = quat_torque.w*current_q.x + quat_torque.x*current_q.w + quat_torque.y*current_q.z - quat_torque.z*current_q.y;// x
target_q.y = quat_torque.w*current_q.y + quat_torque.y*current_q.w + quat_torque.z*current_q.x - quat_torque.x*current_q.z;// y
target_q.z = quat_torque.w*current_q.z + quat_torque.z*current_q.w + quat_torque.x*current_q.y - quat_torque.y*current_q.x;// z
// This is where we want to be in cube3
// This is where we want to be in Shoemake space
float target_u1, target_u2, target_u3;
// target_u = quaternion_to_cube3(target_q)
// Derived from autodockdev/motions.py/quaternion_to_cube3()
// In our terms means quaternion_to_cube3(target_q{w|x|y|z})
target_u1 = target_qy*target_qy + target_qz*target_qz;
target_u2 = atan2(target_qw, target_qx);
target_u3 = atan2(target_qy, target_qz);
target_u1 = target_q.y*target_q.y + target_q.z*target_q.z;
target_u2 = atan2(target_q.w, target_q.x);
target_u3 = atan2(target_q.y, target_q.z);
if (target_u2 < 0.0f) {
target_u2 += PI_TIMES_2;
}
if (target_u2 > PI_TIMES_2) {
target_u2 -= PI_TIMES_2;
}
if (target_u3 < 0.0f) {
target_u3 += PI_TIMES_2;
}
if (target_u3 > PI_TIMES_2) {
target_u3 -= PI_TIMES_2;
}
target_u2 = target_u2 / PI_TIMES_2;
target_u3 = target_u3 / PI_TIMES_2;
// The infinitesimal rotation will produce an infinitesimal displacement
// in shoemake space. This is to guarantee that the direction of
// the displacement in shoemake space is not distorted.
// The correct amount of displacement in shoemake space is obtained
// by multiplying the infinitesimal displacement by shoemake_scaling:
float shoemake_scaling = torque_length / infinitesimal_radian;
// Derivates in cube3
float grad_u1, grad_u2, grad_u3;
grad_u1 = target_u1 - current_u1;
grad_u2 = target_u2 - current_u2;
grad_u3 = target_u3 - current_u3;
grad_u1 = shoemake_scaling * (target_u1 - current_u1);
grad_u2 = shoemake_scaling * (target_u2 - current_u2);
grad_u3 = shoemake_scaling * (target_u3 - current_u3);
// Empirical scaling
float temp_u1 = genotype[3];
if ((temp_u1 > 1.0f) || (temp_u1 < 0.0f)){
grad_u1 *= ((1/temp_u1) + (1/(1-temp_u1)));
if (0.0f < temp_u1 < 1.0f){
grad_u1 *= ((1.0f/temp_u1) + (1.0f/(1.0f-temp_u1)));
}
grad_u2 *= 4 * (1-temp_u1);
grad_u3 *= 4 * temp_u1;
grad_u2 *= 4.0f * (1.0f-temp_u1);
grad_u3 *= 4.0f * temp_u1;
// Setting gradient rotation-related genotypes in cube3
gradient_genotype[3] = grad_u1;
......
......@@ -3,7 +3,7 @@
// Original source in https://stackoverflow.com/a/27910756
#define DEBUG_MINIMIZER
// FIXME: original call of stepGPU
......@@ -77,6 +77,7 @@ gradient_minimizer(
__local int run_id;
__local float local_energy;
#if 0
if (get_local_id(0) == 0)
{
entity_id = get_group_id(0) % dockpars_num_of_lsentities;
......@@ -106,6 +107,24 @@ gradient_minimizer(
*/
}
#endif
if (get_local_id(0) == 0)
{
// Choosing a random entity out of the entire population
entity_id = (uint)(dockpars_pop_size * gpu_randf(dockpars_prng_states));
run_id = get_group_id(0);
local_energy = dockpars_energies_next[run_id*dockpars_pop_size+entity_id];
#if defined (DEBUG_MINIMIZER)
//printf("run_id: %5u entity_id: %5u local_energy: %.5f\n", run_id, entity_id, local_energy);
//printf("%-40s %f\n", "BEFORE GRADIENT - local_energy: ", local_energy);
#endif
}
barrier(CLK_LOCAL_MEM_FENCE);
......@@ -167,7 +186,11 @@ gradient_minimizer(
__local float gradient_intra_y[MAX_NUM_OF_ATOMS];
__local float gradient_intra_z[MAX_NUM_OF_ATOMS];
__local float gradient_per_intracontributor[MAX_INTRAE_CONTRIBUTORS];
// Accummulated gradient
__local float gradient_x[MAX_NUM_OF_ATOMS];
__local float gradient_y[MAX_NUM_OF_ATOMS];
__local float gradient_z[MAX_NUM_OF_ATOMS];
// -------------------------------------------------------------------
// Variables to store partial energies
......@@ -179,7 +202,20 @@ gradient_minimizer(
// -----------------------------------------------------------------------------
// Perform gradient-descent iterations
do {
///*
// Specific input genotypes for a ligand with no rotatable bonds (1ac8).
// Translation genes must be expressed in grids in OCLADock (local_genotype [0|1|2]).
// However, for testing purposes,
// we start using translation values in real space (Angstrom): {31.79575, 93.743875, 47.699875}
// Rotation genes are expresed in the Shoemake space: local_genotype [3|4|5]
// xyz_gene_gridspace = gridcenter_gridspace + (input_gene_realspace - gridcenter_realspace)/gridsize
local_genotype[0] = 30 + (31.79575 - 31.924) / 0.375;
local_genotype[1] = 30 + (93.743875 - 93.444) / 0.375;
local_genotype[2] = 30 + (47.699875 - 47.924) / 0.375;
local_genotype[3] = 0.1f;
local_genotype[4] = 0.5f;
local_genotype[5] = 0.9f;
//*/
// Calculating gradient
// =============================================================
gpu_calc_gradient(
......@@ -231,11 +267,24 @@ gradient_minimizer(
gradient_intra_x,
gradient_intra_y,
gradient_intra_z,
gradient_x,
gradient_y,
gradient_z,
gradient_per_intracontributor,
local_gradient
);
// =============================================================
barrier(CLK_LOCAL_MEM_FENCE);
#if defined (DEBUG_MINIMIZER)
if (get_local_id(0) == 0) {
for (uint i=0; i<dockpars_num_of_genes; i++) {
printf("AFTER- GRADIENT - local_gradient[%u]: %f\n", i, local_gradient[i]);
}
}
#endif
for(uint i = get_local_id(0);
i < dockpars_num_of_genes;
i+= NUM_OF_THREADS_PER_BLOCK) {
......@@ -297,6 +346,16 @@ gradient_minimizer(
// -----------------------------------------------------------------------------
///*
local_genotype[0] = 30 + (31.79575 - 31.924) / 0.375;
local_genotype[1] = 30 + (93.743875 - 93.444) / 0.375;
local_genotype[2] = 30 + (47.699875 - 47.924) / 0.375;
local_genotype[3] = 0.1f;
local_genotype[4] = 0.5f;
local_genotype[5] = 0.9f;
//*/
// Calculating energy
// =============================================================
gpu_calc_energy(dockpars_rotbondlist_length,
......@@ -340,11 +399,14 @@ gradient_minimizer(
);
// =============================================================
/*
//barrier(CLK_LOCAL_MEM_FENCE);
#if defined (DEBUG_MINIMIZER)
if (get_local_id(0) == 0) {
printf("AFTER- GRADIENT - local_energy: %f\n\n", local_energy);
printf("%-40s %f\n", "AFTER- GRADIENT - local_energy: ", local_energy);
//printf("\n");
}
*/
#endif
// Copying final genotype and energy into global memory
if (get_local_id(0) == 0) {
......
......@@ -781,16 +781,19 @@ void gen_initpop_and_reflig(Dockpars* mypars,
*/
for (i=0; i<mypars->num_of_runs; i++)
{
#if defined (REPRO)
ref_ori_angles[3*i] = 190.279;
ref_ori_angles[3*i+1] = 90.279;
ref_ori_angles[3*i+2] = 190.279;
#else
ref_ori_angles[3*i] = ((float) rand()/ (float) RAND_MAX); // u1
ref_ori_angles[3*i+1] = ((float) rand()/ (float) RAND_MAX); // u2
ref_ori_angles[3*i+2] = ((float) rand()/ (float) RAND_MAX); // u3
//#if defined (REPRO)
// These specific values for the rotation genes (in Shoemake space)
// correspond to a quaternion for NO rotation.
ref_ori_angles[3*i] = 0.0f;
ref_ori_angles[3*i+1] = 0.25f;
ref_ori_angles[3*i+2] = 0.0f;
//#else
// ref_ori_angles[3*i] = ((float) rand()/ (float) RAND_MAX); // u1
// ref_ori_angles[3*i+1] = ((float) rand()/ (float) RAND_MAX); // u2
// ref_ori_angles[3*i+2] = ((float) rand()/ (float) RAND_MAX); // u3
//printf("u1, u2, u3: %10f %10f %10f \n", ref_ori_angles[3*i], ref_ori_angles[3*i+1], ref_ori_angles[3*i+2]);
#endif
//#endif
}
get_movvec_to_origo(myligand, movvec_to_origo);
......@@ -798,4 +801,8 @@ void gen_initpop_and_reflig(Dockpars* mypars,
scale_ligand(myligand, 1.0/mygrid->spacing);
get_moving_and_unit_vectors(myligand);
printf("ligand: movvec_to_origo: %f %f %f\n", movvec_to_origo[0], movvec_to_origo[1], movvec_to_origo[2]);
}
......@@ -392,6 +392,8 @@ filled with clock() */
blocksPerGridForEachLSEntity = dockpars.num_of_lsentities*mypars->num_of_runs;
printf("dockpars.rotbondlist_length:%u\n", dockpars.rotbondlist_length);
// Experimental TSRI gradient-based minimizer kernel argument
// Setup here (temporarily?) the gradient and associated parameters.
......@@ -423,10 +425,14 @@ filled with clock() */
mallocBufferObject(context, CL_MEM_READ_ONLY, size_conformation_min_perturbation, &mem_gradpars_conformation_min_perturbation);
memcopyBufferObjectToDevice(command_queue, mem_gradpars_conformation_min_perturbation, gradientpars.conformation_min_perturbation, size_conformation_min_perturbation);
/*
// Initially, the number of entities that undergo gradient-minimization,
// by default, it is the same as the number of entities that undergo gradient-based minimizer
blocksPerGridForEachGradMinimizerEntity = /*dockpars.num_of_lsentities**/mypars->num_of_runs;
blocksPerGridForEachGradMinimizerEntity = dockpars.num_of_lsentities*mypars->num_of_runs;
*/
// test, only one entity per reach run, undergoes gradient minimization
blocksPerGridForEachGradMinimizerEntity = mypars->num_of_runs;
clock_start_docking = clock();
......
outlev 0 # diagnostic output level
parameter_file AD4.1_bound.dat # force field default parameter file
intelec # calculate internal electrostatics
seed pid time # seeds for random generator
ligand_types A C N SA # atoms types in ligand
fld 1ac8_rec.maps.fld # grid_data_file
map 1ac8_rec.A.map # atom-specific affinity map
map 1ac8_rec.C.map # atom-specific affinity map
map 1ac8_rec.N.map # atom-specific affinity map
map 1ac8_rec.SA.map # atom-specific affinity map
elecmap 1ac8_rec.e.map # electrostatics map
desolvmap 1ac8_rec.d.map # desolvation map
move 1ac8_lig.pdbqt # small molecule
about 31.7958 93.7439 47.6999 # small molecule center
tran0 random # initial coordinates/A or random
quat0 random # initial quaternion
ndihe 0 # number of active torsions
dihe0 random # initial dihedrals (relative) or random
tstep 2.0 # translation step/A
qstep 50.0 # quaternion step/deg
dstep 50.0 # torsion step/deg
torsdof 0 # torsional degrees of freedom and coefficient
unbound 0.0 # free energy of ligand's unbound state
rmstol 0.5 # cluster_tolerance/A
extnrg 1000.0 # external grid energy
e0max 0.0 10000 # max initial energy; max number of retries
ga_pop_size 150 # number of individuals in population
ga_num_evals 25000000 # maximum number of energy evaluations
ga_num_generations 27000 # maximum number of generations
ga_elitism 1 # number of top individuals to survive to next generation
ga_mutation_rate 0.02 # rate of gene mutation
ga_crossover_rate 0.8 # rate of crossover
ga_window_size 10 #
ga_cauchy_alpha 0.0 # Alpha parameter of Cauchy distribution
ga_cauchy_beta 1.0 # Beta parameter Cauchy distribution
set_ga # set the above parameters for GA or LGA
sw_max_its 300 # iterations of Solis & Wets local search
sw_max_succ 4 # consecutive successes before changing rho
sw_max_fail 4 # consecutive failures before changing rho
sw_rho 1.0 # size of local search space to sample
sw_lb_rho 0.01 # lower bound on rho
ls_search_freq 0.06 # probability of performing local search on individual
set_sw1 # set the above Solis & Wets parameters
unbound 0.0 # compute extended ligand energy
ga_run 100 # do this many hybrid GA-LS runs
analysis # perform a ranked cluster analysis
npts 60 60 60 # num.grid points in xyz
parameter_file AD4.1_bound.dat # force field default parameter file
gridfld 1ac8_rec.maps.fld # grid_data_file
spacing 0.375 # spacing(A)
receptor_types A C FE HD N NA OA SA # receptor atom types
ligand_types A C N S # ligand atom types
receptor 1ac8_rec.pdbqt # macromolecule
gridcenter 31.9237 93.4438 47.9238 # xyz-coordinates or auto
smooth 0.5 # store minimum energy w/in rad(A)
map 1ac8_rec.A.map # atom-specific affinity map
map 1ac8_rec.C.map # atom-specific affinity map
map 1ac8_rec.N.map # atom-specific affinity map
map 1ac8_rec.S.map # atom-specific affinity map
elecmap 1ac8_rec.e.map # electrostatic potential map
dsolvmap 1ac8_rec.d.map # desolvation potential map
dielectric -0.1465 # <0, AD4 distance-dep.diel;>0, constant
REMARK 0 active torsions:
REMARK status: ('A' for Active; 'I' for Inactive)
REMARK RMS_REF 0.4500
ROOT
ATOM 1 S1 AC8 1 31.383 94.416 49.468 1.00 15.00 0.120 S
ATOM 2 A1 AC8 1 32.858 93.565 49.052 1.00 15.00 0.737 A
ATOM 3 N1 AC8 1 32.857 93.236 47.747 1.00 15.00 -0.159 N
ATOM 4 A2 AC8 1 31.686 93.676 47.081 1.00 15.00 0.059 A
ATOM 5 A3 AC8 1 30.751 94.289 47.890 1.00 15.00 0.037 A
ATOM 6 C4 AC8 1 33.847 92.539 47.156 1.00 15.00 0.115 C
ATOM 7 C5 AC8 1 31.549 93.287 45.656 1.00 15.00 0.051 C
ATOM 8 C6 AC8 1 29.435 94.943 47.549 1.00 15.00 0.040 C
ENDROOT
TORSDOF 0
# AVS field file
#
# AutoDock Atomic Affinity and Electrostatic Grids
#
# Created by ../../autogrid4.
#
#SPACING 0.375
#NELEMENTS 60 60 60
#CENTER 31.924 93.444 47.924
#MACROMOLECULE 1ac8_rec.pdbqt
#GRID_PARAMETER_FILE 1ac8_1ac8.gpf
#
ndim=3 # number of dimensions in the field
dim1=61 # number of x-elements
dim2=61 # number of y-elements
dim3=61 # number of z-elements
nspace=3 # number of physical coordinates per point
veclen=6 # number of affinity values at each point
data=float # data type (byte, integer, float, double)
field=uniform # field type (uniform, rectilinear, irregular)
coord 1 file=rec.maps.xyz filetype=ascii offset=0
coord 2 file=rec.maps.xyz filetype=ascii offset=2
coord 3 file=rec.maps.xyz filetype=ascii offset=4
label=A-affinity # component label for variable 1
label=C-affinity # component label for variable 2
label=N-affinity # component label for variable 3
label=S-affinity # component label for variable 4
label=Electrostatics # component label for variable 4
label=Desolvation # component label for variable 5
#
# location of affinity grid files and how to read them
#
variable 1 file=rec.A.map filetype=ascii skip=6
variable 2 file=rec.C.map filetype=ascii skip=6
variable 3 file=rec.N.map filetype=ascii skip=6
variable 4 file=rec.S.map filetype=ascii skip=6
variable 5 file=rec.e.map filetype=ascii skip=6
variable 6 file=rec.d.map filetype=ascii skip=6
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
# $Id$
#
# AutoDock
#
# Copyright (C) 1989-2007, Garrett M. Morris, David S. Goodsell, Ruth Huey, Arthur J. Olson,
# All Rights Reserved.
#
# AutoDock is a Trade Mark of The Scripps Research Institute.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# AutoDock Linear Free Energy Model Coefficients and Energetic Parameters
# Version 4.1 Bound
# $Revision$
# AutoDock 4 free energy coefficients with respect to original (AD2) energetic parameters
# This model assumes that the bound and unbound conformations are the same.
# See Table 3 in Huey,Morris,Olson&Goodsell (2007) J Comput Chem 28: 1145-1152.
#
# Free Energy Coefficient
# ------
FE_coeff_vdW 0.1662
FE_coeff_hbond 0.1209
FE_coeff_estat 0.1406
FE_coeff_desolv 0.1322
FE_coeff_tors 0.2983
# AutoDock 4 Energy Parameters
# - Atomic solvation volumes and parameters
# - Unweighted vdW and Unweighted H-bond Well Depths
#
# - Atom Types
# - Rii = sum of vdW radii of two like atoms (in Angstrom)
# - epsii = vdW well depth (in Kcal/mol)
# - vol = atomic solvation volume (in Angstrom^3)
# - solpar = atomic solvation parameter
# - Rij_hb = H-bond radius of the heteroatom in contact with a hydrogen (in Angstrom)
# - epsij_hb = well depth of H-bond (in Kcal/mol)
# - hbond = integer indicating type of H-bonding atom (0=no H-bond)
# - rec_index = initialised to -1, but later on holds count of how many of this atom type are in receptor
# - map_index = initialised to -1, but later on holds the index of the AutoGrid map
# - bond_index = used in AutoDock to detect bonds; see "mdist.h", enum {C,N,O,H,XX,P,S}
#