CH03165 Accessory Materials
	●	Extra parameters used in MM3(92)
	●	Source code listing for the Chirality Searcher program
	●	Sybyl scripts used for processing confomers
	●	Table: Best predicted aVb3 activity for each novel molecule

Extra Parameters Used in MM3(92)
This list comprises the “extra.para” file which is read in by the MM3 program.  It shows that there are an extra 128 torsional, 7 stretching and 36 bending parameters.

  128    7        36                     
    1    1    8   18   0.0       0.0       0.46
    1    1    2    8   0.4       0.03      0.5
    1    2    8    1   0.0      10.0       0.0
    1    1    2   40   0.0       0.0       0.0
    1    2    8   23   0.0      10.0       0.0
    1    1    6   72   0.0       0.0       0.5
    1    1    3    3   0.0       0.0      –0.3
    1    1    3   72   0.0       0.0      –0.3
    1    1   50   42   0.0       0.0       0.1
    1    2    2    9  –1.2      16.25      0.0
    1    1   15   50   0.0       0.0       0.4
    1    1   50   42  –0.7      –0.2      –0.55 
    1    2    6   73   0.0       1.5       0.0
    1    3    3    9   0.0       3.0       0.0
    1    2   72   40   0.0       1.8       0.0
    1    2   40   72   0.0       6.0       0.0
    1    3    3   96   0.0       3.0       0.0
    1    3   72    6   0.0      12.0       0.0
    1    3   75    2   0.4       0.52      0.467
    1    6   72    3   0.0       3.6       0.0
    1    8   18    1   0.0       0.0       0.0
    1    8   18    2   0.0       0.0       0.0
    1    8   18    7   0.0       0.0       0.0
    1    9    1    2   0.0       0.0       0.46
    1   15   50   50   0.0       1.3       0.0
    1   40   72    2   0.0       6.0       0.0
    1   75    3    9   0.0       1.4       0.0
    2    1    3    2   0.0       0.0      –0.3
    2    1    6    2   0.0       0.0       0.4
    2    1    9    3   0.0       0.0      –0.46
    2    1    9   28   0.0       0.0       0.4
    2    1   75    3   1.5      –1.0       0.2
    2    2    3   72   0.0       1.2       0.0
    2    2    8    2   1.0       2.3       0.0
    2    2   18    8   0.0       0.6       0.0
    2    3    9   28   0.0       4.5       0.0
    2    8    2    8   0.0       3.5       0.0
    2    8    2   72   1.0       5.0       0.0
    2    9    3   75   0.0       4.5       0.0
    2   75    3    7   0.5      –0.42      0.0
    3    1    8    2   0.0       0.0       3.5
    3    1    2   40   0.4       0.03      0.5
    3    1   50   72   0.4       0.03      0.5
    3    1    8   50   0.0       0.0       3.5
    3    1    9    2   0.0       0.0       0.4
    3    1    8   18   0.0       0.0       3.5
    3    2    8    1   0.0       3.7       0.0
    3    2    2    6   0.0      15.0       0.0
    3    2    8   23   0.0       3.7       0.0
    3    2    6   73   0.0       1.5       0.0
    3    1    8   18   0.0       0.0       3.5  
    3    2   72   72   0.0       6.0       0.0
    3    3    9    1   0.0       4.5       0.0
    3    3    9   28   0.0       4.5       0.0
    3    3   72    6   0.0      16.0       0.0
    3   75    1    6   0.0       0.0       0.5
    5    1    2    8   0.4       0.03      0.5
    5    1    3    3   0.0       0.0      –0.3
    5    1    8   18   0.0       0.0       0.46
    5    1    6   72   0.0       0.0       0.5
    5    1    3   72   0.0       0.0      –0.3
    5    1   18    8   0.0       0.0       0.0
    5    1   15   50   0.0       0.0       0.4 
    5    1   40   72   0.0       0.0       0.25
    5    1   50   42   0.0       0.0       0.1
    5   50   50   15   0.0       7.0       0.0
    6    1    2    6   0.4       0.03      0.5
    6    2    2   40   0.0      12.0       0.0
    6    2    2   46   0.0      16.25      0.0
    6    2    3   75   0.0       1.2       0.0
    6    2    3   92   0.0       1.2       0.0
    6    2   72   40   0.0       6.0       0.0
    6    2   72   72   0.0       6.0       0.0
    6   50   50   46   0.0       7.0       0.0
    8    1    3   75  –0.44      0.24      0.06
    8    2    2   40   0.0      15.0       0.0
    8    2    2   42   0.0      15.0       0.0
    8    2    2   72   0.0      15.0       0.0
    8    2    3    1   0.0       1.2       0.0
    8    2    2   14   0.0      15.0       0.0
    8    2    3   72   0.0       1.2       0.0
    8    2    8   23   0.0       3.5       0.0
    8    2   72    1   0.0      10.0       0.0
    8    2   40   23   0.0       1.0       0.0
    8    2   40   50   0.0       1.0       0.0
    8    2   42    2   0.0       1.7       0.4
    8    2   72   23   0.0      10.0       0.0
    8    2   72   50   0.0       1.8       0.0
    8   50   50   46   0.0       7.0       0.0
    9    1    2    2   0.0       0.0      –0.35
    9    1    3    1   0.0       0.0      –0.3
    9    2   72   72   0.0       6.0       0.0
    9    3   50   42   0.0       1.5       0.0
    9    3  108    6   0.88     10.0       0.0
   15    1    1    8   0.0       0.0       0.483
   15   50   50   46   0.0       7.0       0.0
   21    6  108    3   0.0       2.3       0.0
   23    8    2   72   0.0       2.0       0.0
   23    8   18    7   0.0       0.0       2.0   
   23    8   18   50   0.0       0.0       2.0
   28    9    3   75   0.0       0.45      0.0
   37   50   50   18   0.0       8.1       0.3 
   37   50   50   46   0.0       7.0       0.0
   40    2    2    3   0.0      12.0       0.0
   40    2    3    9   0.0       2.5       0.0
   40    2    8   23   0.0       3.7       0.0
   40    2    8   50   0.0       3.7       0.0
   40   50    8    1  –1.6       3.2       0.0
   42    2    8    1   0.0       3.7       0.0
   42    2    8   23   0.0       3.7       0.0
   50    3    9   50  –0.835    11.053     1.431
   50    3  108    6   0.88     10.0       0.0 
   50   42   50    3   0.0       1.7       0.4
   50   42   50   42  –0.67      4.304     0.0
   50   50   50   15   0.0       7.0       0.0
   72    1    1    8   0.0       0.0       0.35
   72    2    3    9   0.0       2.5       0.0
   72    2    3   96   0.0       2.5       0.0
   72    3    3    9   0.0       3.0       0.0
   72    3    3   96   0.0       3.0       0.0
   72    2    6    1   0.0       1.5       0.0
   72    2    8    1   0.0       0.0       0.3
   72    2    9    3   0.0       2.3       0.0
   72    2    9   28   0.0       2.0       0.0
   72   50   50    3   0.0       8.7       0.0
   75    1    2    6   0.4       0.03      0.5
   75    3    9    1   1.1       3.8       0.0
   79    3   50   42   0.8      11.0       0.8
    2    9   5.5       1.36
    2   15   4.0       1.765
    3   72   6.83      1.377
    3  108   9.0       1.27
    6   72   7.81      1.47
    8   18   6.0       1.640
   50   15   4.0       1.765
    1    3    3        0.45    115.0
    1    3   72        0.45    115.0
    1    2    8        0.45    120.0
    1    6   72        0.5     109.0
    1    8   18        0.6     120.0
    1   15   50        0.2     109.0
    1   18    8        0.45    107.0
    1   40   72        0.0      57.8
    2    2   15        0.45    120.0
    2    3    9        0.45    120.0
    2    3   72        0.45    115.0
    2    8    2        0.43    120.0
    2   18    8        0.45    107.0
    2   75    3        0.77    106.8
    3    2    6        0.45    120.0
    3    2    8        0.45    120.0
    3    2   72        1.005   117.648
    3    3    9        0.45    115.0
    3    3   72        0.45    115.0
    3    3   96        0.45    115.0
    3   50   42        0.76    121.7
    3   72    6        1.579   106.872
    6    2   72        1.214   120.5
    7   18    8        0.45    107.0
    8    2   40        0.45    120.0
    8    2   42        0.45    120.0
    8    2   72        0.45    120.0
    9    3  108        0.4     120.0
    9    3   75        0.45    115.0
    9    2   72        0.45    120.0
   18    8   23        0.63    108.0
   21    6  108        0.36    109.0
   42   50   42        0.76    121.7
    0    2   14        0.8       0.0 
    0    3   72        0.8       0.0
    0   50   15        0.0       0.15

Source Code Listing for the Chirality Searcher Program
/* A piece of code to take atom coordinates from a MM3 file
 * find out whether a chiral centre is R or S
 *
 * Written by Tim Astley, University of Tasmania - June 2001
 * Version 1.3 - added check to avoid looping in differentiate() 4/9/2001
 */

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define TRUE 1
#define FALSE 0

typedef struct atom {
    double x,y,z;
    int type,numbonds,bondedTo[7],chiralList[7],check[7];
    double weight;
    char name[5];
    } *Atom, AtomStruct;

char *cfgets(char *str,FILE *file)
{
  char *last;

  if (fgets(str,100,file) == NULL) {
      str[0] = '\0';
      return NULL;
      }
    else {
      str[strlen(str)-1] = '\0';
      last = &(str[strlen(str)-1]);
      while ((*last == ' ') || (*last == '\r')) last--;
      last++;
      *last = '\0';
      return str;
      }
}

/* bcfgets is just like cfgets except it ignores blank lines and returns the
 * next line with something in it.
 */
char *bcfgets(char *str,FILE *file)
{
        char *temp;
        do temp=cfgets(str,file); while (temp && (!strlen(str)));
        return temp;
}

void rotate(double *x,double *y, double angle)
{
double newx,newy;

newx=*x*cos(angle)-(*y)*sin(angle);
newy=*y*cos(angle)+(*x)*sin(angle);
*x=newx;
*y=newy;
}

void translate(Atom atom, Atom centre)
{
atom->x-=centre->x;
atom->y-=centre->y;
atom->z-=centre->z;
}

double distance(Atom a1,Atom a2)
{
double difx,dify,difz;

difx=a1->x-a2->x;
dify=a1->y-a2->y;
difz=a1->z-a2->z;

return sqrt(difx*difx+dify*dify+difz*difz);
}

double heaviestOn(Atom *atom, int x, int *which, int from)
{
int loop;
double max=-1;

for (loop=1;loop<=atom[x]->numbonds;loop++) {
        if (atom[atom[x]->bondedTo[loop]]->weight>max && atom[x]->bondedTo[loop]!=from) {
        max=atom[atom[x]->bondedTo[loop]]->weight;
        *which=atom[x]->bondedTo[loop];
        }
        }
return max;
}

double weightOn(Atom *atom,int x)
{
int loop;
double totWt=0;

for (loop=1;loop<=atom[x]->numbonds;loop++) {
    totWt+=atom[atom[x]->bondedTo[loop]]->weight;
    }
return totWt;
}

double findWeight(int x)
{
double val;

switch (x) {
    case 1:
    case 2:
    case 22:
    case 29:
    case 30:
    case 38:
    case 50:
    case 56:
    case 57:
    case 58:
    case 67:
    case 68:
    case 71:
    case 106:
    case 3: val=12.000;
        break;
    case 4: val=12.100; /* Alkyne type carbon */
        break;
    case 21:
    case 23:
    case 24:
    case 28:
    case 44:
    case 48:
    case 73:
    case 5: val=1.008;
        break;
    case 36: val=2.014;
        break;
    case 51: val=4.003;
        break;
    case 27:
    case 26: val=11.009;
        break;
    case 8:
    case 9:
    case 10:
    case 37:
    case 39:
case 40:
    case 43:
    case 45:
    case 46:
    case 72:
    case 107:
    case 108:
    case 109: val=14.003;
        break;
    case 6:
    case 7:
    case 41:
    case 49:
    case 69:
    case 70:
    case 75:
    case 76:
    case 77:
    case 78:
    case 79:
    case 80:
    case 81:
    case 82:
    case 83:
    case 84:
    case 85:
    case 86:
    case 87:
    case 88:
    case 89:
    case 90:
    case 91:
    case 92:
    case 93:
    case 94:
    case 95:
    case 96:
    case 97:
    case 98:
    case 99:
    case 100:
    case 101:
    case 102:
    case 103: val=15.995;
        break;
    case 11: val=18.998;
        break;
    case 52: val=20.179;
        break;
    case 59: val=24.301;
        break;
    case 19: val=27.977;
        break;
    case 25: val=30.994;
        break;
    case 60:
    case 15:
    case 16:
    case 17:
    case 18:
    case 42:
    case 104:
    case 105: val=31.972;
        break;
    case 12: val=34.969;
        break;
    case 53: val=39.948;
        break;
    case 61:
    case 62: val=55.847;
        break;
    case 63:
    case 64: val=58.710;
break;
    case 63:
    case 64: val=58.710;
        break;
    case 65:
    case 66: val=58.933;
        break;
    case 31: val=73.922;
        break;
    case 13: val=78.918;
        break;
    case 34: val=79.917;
        break;
    case 54: val=83.800;
        break;
    case 32: val=117.902;
        break;
    case 14: val=126.900;
        break;
    case 35: val=129.907;
        break;
    case 55: val=131.300;
        break;
    case 33: val=207.977;
        break;
    default: val=999.000;
        break;
    }
return val;
}

int differentiate(Atom *atom,int first, int second, int *chiral, int firstfrom, int secondfrom, int conf)
{
double firstwt=0,firsthv=0;
int nextfirst=0;
double secondwt=0,secondhv=0;
int nextsecond=0;

/*printf("Comparing %s from %s and %s from %s\n",atom[first]->name,atom[firstfrom]->name,atom[second]->name,atom[secondfrom]->name);*/

/* To avoid looping around and around if the two atoms are identical
 * we should have looped and thus should stop */
if (first==second) {
        if (conf==0) printf(" WARNING - we reached a loop at atom number %d %s\n",first,atom[first]->name);
        return 3;
        }
firstwt=weightOn(atom,first);
secondwt=weightOn(atom,second);
firsthv=heaviestOn(atom,first,&nextfirst,firstfrom);
secondhv=heaviestOn(atom,second,&nextsecond,secondfrom);
if (atom[nextfirst]->weight==1.008 && atom[nextsecond]->weight==1.008) return 2;
if (firstwt==secondwt && firsthv==secondhv) {
/* OK - so they are the same - probably CH2 - so we
 * need to go further down the chain to see what we can find */
    if (differentiate(atom,nextfirst,nextsecond,chiral,first,second,conf)!=0){
        *(chiral)=0;
        return 1;
        }
    else { /* weight should be different so redo*/
        firstwt=weightOn(atom,first);
        secondwt=weightOn(atom,second);
        firsthv=heaviestOn(atom,first,&nextfirst,firstfrom);
        secondhv=heaviestOn(atom,second,&nextsecond,secondfrom);
        }
}
/* since they are different we can change them with little
* must be careful that we haven't changed them if the atom
* is not chiral - we use heaviest on to base priority to
* start with but if they both have the same heaviest atom
* then the one with the heaviest total will most likely win
* out */
    if (firsthv<secondhv) atom[second]->weight+=0.05;
        else if (secondhv<firsthv) atom[first]->weight+=0.05;
else {
                if (firstwt<secondwt) atom[second]->weight+=0.05;
                else atom[first]->weight+=0.05;
                }
/*printf("%f %f\n",weightOn(atom,first),weightOn(atom,second)); */
return 0;
}

int chirality(char dirname[30],char basename[30],int conf)
{
FILE *fp;
double phi,theta,rho; /* angle of rotation */
char current_line[100],filename[60];
int countlines=0,numatoms=0,numnames=0,loop=0,loop2=0,value=0,bigloop=0;
int numint=0,numterm=0,priority=0;
int chiral=0,first=0,second=0,third=0,fourth=0;
int foundEndcart=FALSE;
int startNames=FALSE;
int endNames=FALSE;
int startHess=FALSE;
int a,b,type,number;
double x,y,z,max;
Atom atom[100],original_centre;
char name[10];
char garbage[100];
int temp;
double temp2;

if (conf==0) {
    sprintf(filename,"%s/%s.mm3",dirname,basename);
    printf("Base Molecule has ");
    }
else {
    if (conf<10) sprintf(filename,"%s/%ss000%d.mm3",dirname,basename,conf);
    else if (conf<100) sprintf(filename,"%s/%ss00%d.mm3",dirname,basename,conf);
    else sprintf(filename,"%s/%ss0%d.mm3",dirname,basename,conf);
    printf("Conformer %d has ",conf);
    }
fp=fopen(filename,"r");
atom[0]=(Atom)malloc(sizeof(AtomStruct));
original_centre=(Atom)malloc(sizeof(AtomStruct));
bcfgets(current_line,fp);
/* first line tells us amongst other things the number of atoms */
sscanf(current_line,"%s %d %d",garbage,&temp,&numatoms);
/* loop through array making space for all atoms - we start
 * at 1 not 0 since the atoms are referred to as starting from
 * 1 in the MM3 file */
for (loop=1;loop<=numatoms;loop++) {
    atom[loop]=(Atom)malloc(sizeof(AtomStruct));
    atom[loop]->numbonds=0;
    }
bcfgets(current_line,fp);
/* second line tells us the number of 'internal' bonds
 * and the number of terminal bonds */
sscanf(current_line,"%d %d %f %d",&temp,&numint,&temp2,&numterm);
/* OK - now we loop through numint and store away linked atoms */
for (loop=1;loop<=numint;loop++) {
    bcfgets(current_line,fp);
    sscanf(current_line,"%d %d",&a,&b);
    atom[a]->numbonds++;
    atom[b]->numbonds++;
    atom[a]->bondedTo[atom[a]->numbonds]=b;
    atom[b]->bondedTo[atom[b]->numbonds]=a;
    }
while (numterm>0) {
    fscanf(fp,"%d %d",&a,&b);
    numterm--;
    atom[a]->numbonds++;
    atom[b]->numbonds++;
    atom[a]->bondedTo[atom[a]->numbonds]=b;
    atom[b]->bondedTo[atom[b]->numbonds]=a;
    }
/* Time to read in coordinates */
for (loop=1;loop<=numatoms;loop++) {
    if (conf==0) fscanf(fp,"%10lf%10lf%10lf%2s%3d(%3d)",&x,&y,&z,name,&type,&number);
    else fscanf(fp,"%10lf%10lf%10lf%5d(%3d)",&x,&y,&z,&type,&number);
    atom[loop]->x=x;
    atom[loop]->y=y;
    atom[loop]->z=z;
    if (conf==0) strcpy(atom[loop]->name,name);
    atom[loop]->type=type;
    atom[loop]->weight=findWeight(type);
    /*printf("%f %f %f %s %d %d %f\n",x,y,z,name,type,number,atom[loop]->weight);*/
    }

chiral=0;
bigloop=0;
while (chiral==0 && bigloop<numatoms) {
    bigloop++;
    if (atom[bigloop]->type==1) {
    chiral=bigloop;
    /* Loop through bonded Atoms looking for duplicates so we
       can decide what are potential chiral sites */
    for (loop=1;loop<atom[bigloop]->numbonds;loop++) {
        atom[bigloop]->check[loop]=FALSE; /* while we are at it set this value to false */
        /*printf("%d bonded to %s\n",loop,atom[atom[bigloop]->bondedTo[loop]]->name);*/
        for (loop2=loop+1;loop2<=atom[bigloop]->numbonds;loop2++) {
            if (atom[atom[bigloop]->bondedTo[loop]]->weight==
                atom[atom[bigloop]->bondedTo[loop2]]->weight) {
                if (atom[atom[bigloop]->bondedTo[loop]]->weight==1.008) chiral=0; /* they are H - give up now */
                /* OK - here are 2 non Hydrogens that are the same - we need to make sure they are different if we can */
                else {
    /* first and second are the array locations of the two atoms
     * we wish to differentiate */
                    first=atom[bigloop]->bondedTo[loop];
                    second=atom[bigloop]->bondedTo[loop2];
                    differentiate(atom,first,second,&chiral,bigloop,bigloop,conf);
                    } /* end of else */
                }
            } /* end of loop2 */
    } /* end of numbonds loop */
    } /* end of type=1 loop */
    } /* end of bigloop */
if (chiral==0) {
    printf("There is no chiral atom.\n");
    return 0;
    }
if (conf==0) printf("Chiral atom is %d %s and it is ",chiral,atom[chiral]->name);
/* Time to 'order' the bonded atoms */
for (priority=1;priority<=atom[chiral]->numbonds;priority++) {
max=0;
for (loop=1;loop<=atom[chiral]->numbonds;loop++) {
    if (atom[atom[chiral]->bondedTo[loop]]->weight>max &&
        atom[chiral]->check[loop]==FALSE) {
        max=atom[atom[chiral]->bondedTo[loop]]->weight;
        value=loop;
        }
    }
    atom[chiral]->chiralList[priority]=atom[chiral]->bondedTo[value];
    atom[chiral]->check[value]=TRUE;
} /* end priority loop */

/*
printf("Highest Priority atom is %s %d %f\n",atom[atom[chiral]->chiralList[1]]->name,atom[atom[chiral]->chiralList[1]]->type,atom[atom[chiral]->chiralList[1]]->weight);
printf("Second Priority atom is %s %d %f\n",atom[atom[chiral]->chiralList[2]]->name,atom[atom[chiral]->chiralList[2]]->type,atom[atom[chiral]->chiralList[2]]->weight);
printf("Third Priority atom is %s %d %f\n",atom[atom[chiral]->chiralList[3]]->name,atom[atom[chiral]->chiralList[3]]->type,atom[atom[chiral]->chiralList[3]]->weight);
printf("Lowest Priority atom is %s %d %f\n",atom[atom[chiral]->chiralList[4]]->name,atom[atom[chiral]->chiralList[4]]->type,atom[atom[chiral]->chiralList[4]]->weight);
*/

/* make a copy of the original chiral centre coordinates so
 * when we do the translation and move it we can still move
 * all the other atoms */
original_centre->x=atom[chiral]->x;
original_centre->y=atom[chiral]->y;
original_centre->z=atom[chiral]->z;

for (loop=1;loop<=numatoms;loop++) translate(atom[loop],original_centre);

first=atom[chiral]->chiralList[4];

/* rotate point to x axis - (x,0,z) */

phi = -1 * atan2(atom[first]->y,atom[first]->x);

for (loop=1;loop<=numatoms;loop++) rotate(&atom[loop]->x,&atom[loop]->y,phi);

/* rotate point to along x axis - (x,0,0) */

theta = -1 * atan2(atom[first]->z,atom[first]->x);

for (loop=1;loop<=numatoms;loop++) rotate(&atom[loop]->x,&atom[loop]->z,theta);

/* now rotate around x axis not moving first point
 * but getting second point into xy plane */

second=atom[chiral]->chiralList[3];

rho = -1 * atan2(atom[second]->z,atom[second]->y);

for (loop=1;loop<=numatoms;loop++) rotate(&atom[loop]->y,&atom[loop]->z,rho);

third=atom[chiral]->chiralList[2];
fourth=atom[chiral]->chiralList[1];

/* Isomer is decided based on Tell's formula */
if (atom[second]->y>0) {
    if (atom[fourth]->z<0) printf("S\n");
    else printf("R\n");
    }
else {
    if (atom[fourth]->z>0) printf("S\n");
    else printf("R\n");
    }

/* For debugging
printf("Coords for %s %f %f %f\n",atom[chiral]->name,atom[chiral]->x,atom[chiral]->y,atom[chiral]->z);
printf("Coords for %s %f %f %f\n",atom[first]->name,atom[first]->x,atom[first]->y,atom[first]->z);
printf("Coords for %s %f %f %f\n",atom[second]->name,atom[second]->x,atom[second]->y,atom[second]->z);
printf("Coords for %s %f %f %f\n",atom[third]->name,atom[third]->x,atom[third]->y,atom[third]->z);
printf("Coords for %s %f %f %f\n",atom[fourth]->name,atom[fourth]->x,atom[fourth]->y,atom[fourth]->z);
printf("Dist %f\n",distance(atom[chiral],atom[first]));
printf("Dist %f\n",distance(atom[chiral],atom[second]));
printf("Dist %f\n",distance(atom[chiral],atom[third]));
printf("Dist %f\n",distance(atom[chiral],atom[fourth]));
*/
fclose (fp);
return 1;
}

int main()
{
int loop=1,numconf=1;
char dirname[30],basename[30];

printf("Please enter Name of Directory :");
scanf("%s",dirname);
printf("Please enter Base filename (the bit before the 's'):");
scanf("%s",basename);
printf("Please enter number of conformations :");
scanf("%d",&numconf);
printf("\n\nWelcome to Chirality Searcher - we are analysing Molecule %s\n",dirname);
if (chirality(dirname,basename,0)==0) return 0;
else while (loop<=numconf) {chirality(dirname,basename,loop); loop++;}

return 0;
}

Sybyl Scripts Used for Processing Conformers
These scripts were used to calculate charges, reassign dummy atoms and add structures to the Sybyl database.
addDB1.spl
uims define macro addDB1 sybylbasic

localvar molecule
localvar name
database open %cat($home /RESEARCH.DATABASE/ $1 .mdb) update
for molecule in %DIR(*.mol2)
#	echo $molecule
#open
	zap *
	mol2 in m1 $molecule
#redefine hydrogen
for dummy_atom in %ATOMS(<Du>)
	modify atom type $dummy_atom H
endfor
#calculate charge
	charge m1 compute gast_huck |
#name it
setvar name %substr($molecule 1 %math(%pos(“.” $molecule) -1)
	echo $name
	modify molecule name m1 $name
#add to database
	database add m1 replace
endfor
database close
.

addDB2.spl
uims define macro addDB2 sybylbasic

localvar molecule
#	set default_directory %cat($home /RGD_CONFORMERS/ $1)

for molecule in %DIR(*)
	set default_directory %cat($molecule / $molecule)
	addDB1 $1
	# set default_directory %cat($home /RGD_CONFORMERS/ $1)
endfor
set default_directory $home
.

Table. Best predicted avb3 activity for each novel moleculeA
Molecule name	Conformer number	IC50  aVb3 [nM]	Selectivity	
UTA1a	9	14	0.75	
UTA1c	8	3.2	4.0	
UTA1d	8	0.56	38	
UTA2c	1	4.4	1.2	
UTA3b	1	8.3	0.94	
UTA3d	5	4.8	2.2	
UTA4a	5	14	1.2	
UTA4d	7	14	0.73	
A  Only predictions that meet the reliability criteria discussed in the text are included.