From SAVARY@sc2a.unige.ch  Mon May  2 09:21:58 1994
Received: from chx400.switch.ch  for SAVARY@sc2a.unige.ch
	by www.ccl.net (8.6.4/930601.1506) id JAA08216; Mon, 2 May 1994 09:12:06 -0400
From: <SAVARY@sc2a.unige.ch>
X400-Received: by mta chx400.switch.ch in /PRMD=switch/ADMD=arcom/C=CH/;
               Relayed; Mon, 2 May 1994 15:11:20 +0200
X400-Received: by /PRMD=SWITCH/ADMD=ARCOM/C=CH/; Relayed;
               Mon, 2 May 1994 15:10:40 +0200
X400-Received: by /PRMD=SWITCH/ADMD=ARCOM/C=CH/; Relayed;
               Mon, 2 May 1994 17:09:45 +0200
X400-Received: by /PRMD=SWITCH/ADMD=ARCOM/C=CH/; Relayed;
               Mon, 2 May 1994 17:09:36 +0200
X400-Received: by /PRMD=SWITCH/ADMD=ARCOM/C=CH/; Relayed;
               Mon, 2 May 1994 17:09:36 +0200
Date: Mon, 2 May 1994 17:09:36 +0200
X400-Originator: SAVARY@sc2a.unige.ch
X400-Recipients: non-disclosure:;
X400-MTS-Identifier: [/PRMD=SWITCH/ADMD=ARCOM/C=CH/;<01HBV8T5S9N6002QM3@sc2a.unige.c]
X400-Content-Type: P2-1984 (2)
Content-Identifier: csd_to_pdb ne...
Alternate-Recipient: Allowed
Message-ID: <01HBV8T5S9N6002QM3@sc2a.unige.ch>
To: CHEMISTRY@ccl.net
Subject: csd_to_pdb new version
X-Envelope-to: CHEMISTRY@ccl.net
X-VMS-To: IN%"CHEMISTRY@ccl.net"
MIME-version: 1.0
Content-transfer-encoding: 7BIT


Dear netters,

As it seems that the program I made a few months ago is
of some interest for lots of people and that the first version
was not 100 % error free (this version is surely also not but still a bit
better). I have corrected the code so that the program now reads
the fdat file and produces PDB files (with .ent extension)
up to 250 atoms it also makes the connectivity matrix so you can
directly read it to HyperChem 3.0, or any program that lakes bond making
the files produced are made with the refcode in the fdat file with 6 up to 8
characters if necesserary. The program is still not using every informations
that are avalaible in the fdat file, sorry I'm not a cristallographer.

Hope it will help

Francois Savary


P.S. : follows the C-code

--------------------------------------------------------------
Francois Savary

Department of Physical Chemistry
University of Geneva
30, quai Ernest-Ansermet
CH-1211 Geneva 4

phone  : +4122 702 65 32
fax    : +4122 702 65 18
e-mail : savary@sc2a.unige.ch
--------------------------------------------------------------

-------------------it follows the C code of csdpdb.c---------------------

/* converter from .dat file, from CSD to .ent file
   Francois Savary, University of Geneva
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <ctype.h>
#define SQR(a) (a)*(a)

FILE *open_file(char buffer[101],char type[5]);
char* get_name(char text[]);
char buffer[101],dumm[101],refcode[9],txtinfo[101],symetrypos[101],
     radiusvalue[101],nomat[250][6];
long sys,adat,nopr,nrad,nat,nsat,year,cella,cellb,cellc,cellA,cellB,cellC
     ,preca,precb,precc,precA,precB,precC,nline,nbat,nrfac,nrem,ndis,nerr
     ,nsymline,nradline,ntxtline;
float x[250],y[250],z[250],rcov[250];
void ortho(float x[250],float y[250],float z[250],long cella,long cellb,
	      long cellc,long cellA,long cellB,long cellC, long nbat);
void writepdb(char nomat[250][6],float x[250],float y[250],
	            float z[250], char refcode[9]);


static char rcovlab[98][3]={
" H","H1","H2","H3","NE"," F"," O","O1","O2","O3","O4"," N",
" C","C1","C2","C3","C4"," B","BE","HE","AR","CL"," S",
" P","SI","KR","BR","NI","CO","SE","MN","FE","CU","AL","CR","AS","GE",
" V","LI","RU","ZN","RH","GA","OS","IR","TC","RE","PD",
" W","PT","MO","XE","TI"," I","NB","TA","AU","AG","MG","TE","SB","SN",
" U","IN","SC","HF","AT","ZR","BI","PO","PB","TH","CD","HG","NA","LU",
"TM","ER","HO","DY","TB","GD","SM"," Y","PM","ND","TH","CE","PR","LA",
"CA","YB","EU","SR","BA"," K","RB","CS"};

static float rcovval[98]={
0.32,0.32,0.32,0.32,0.71,0.72,0.73,0.73,0.73,0.73,0.73,0.75,0.77,0.77,
0.77,0.77,0.77,0.82,0.90,0.93,0.98,0.99,1.02,1.00,1.11,1.12,1.14,1.15,
1.16,1.16,1.17,1.17,1.17,1.18,1.18,1.20,1.22,1.22,1.23,1.25,1.25,
1.25,1.26,1.26,1.27,1.27,1.28,1.28,1.30,1.30,1.30,1.31,1.32,1.33,
1.34,1.34,1.34,1.34,1.36,1.36,1.40,1.41,1.42,1.44,1.44,1.44,1.45,
1.45,1.46,1.46,1.47,1.48,1.48,1.49,1.54,1.56,1.56,1.57,1.58,1.59,
1.59,1.61,1.62,1.62,1.63,1.64,1.65,1.65,1.65,1.69,1.74,1.74,1.85,
1.91,1.98,2.03,2.16,2.35};


void main(void)
{
  register int i,j,k;
  char blank[21];
  FILE *inp;
  strcpy(buffer,get_name("nom input file : "));
  inp=open_file(buffer,"r");
  strcpy(blank,"                   ");
  while (fgets(buffer,100,inp))
    {
    sscanf(buffer,"%1c",dumm);
    if(!(strncmp(dumm,"#",1)))
      {
    sscanf(buffer+1,"%8c",refcode);
    sscanf(buffer+9,"%1c",dumm);
    sscanf(dumm,"%ld",&sys);strcpy(dumm,blank);
    sscanf(buffer+11,"%6c",dumm);
    sscanf(dumm,"%ld",&adat);strcpy(dumm,blank);
    sscanf(buffer+26,"%3c",dumm);
    sscanf(dumm,"%ld",&nrfac);strcpy(dumm,blank);
    sscanf(buffer+29,"%3c",dumm);
    sscanf(dumm,"%ld",&nrem);strcpy(dumm,blank);
    sscanf(buffer+32,"%3c",dumm);
    sscanf(dumm,"%ld",&ndis);strcpy(dumm,blank);
    sscanf(buffer+35,"%3c",dumm);
    sscanf(dumm,"%ld",&nerr);strcpy(dumm,blank);
    sscanf(buffer+38,"%3c",dumm);
    sscanf(dumm,"%ld",&nopr);strcpy(dumm,blank);
    sscanf(buffer+41,"%3c",dumm);
    sscanf(dumm,"%ld",&nrad);strcpy(dumm,blank);
    sscanf(buffer+44,"%3c",dumm);
    sscanf(dumm,"%ld",&nat);strcpy(dumm,blank);
    sscanf(buffer+47,"%3c",dumm);
    sscanf(dumm,"%ld",&nsat);strcpy(dumm,blank);
    sscanf(buffer+78,"%2c",dumm);
    sscanf(dumm,"%ld",&year);strcpy(dumm,blank);
    fgets(buffer,100,inp);
    sscanf(buffer,"%6c",dumm);
    sscanf(dumm,"%ld",&cella);strcpy(dumm,blank);
    sscanf(buffer+6,"%6c",dumm);
    sscanf(dumm,"%ld",&cellb);strcpy(dumm,blank);
    sscanf(buffer+12,"%6c",dumm);
    sscanf(dumm,"%ld",&cellc);strcpy(dumm,blank);
    sscanf(buffer+18,"%6c",dumm);
    sscanf(dumm,"%ld",&cellA);strcpy(dumm,blank);
    sscanf(buffer+24,"%6c",dumm);
    sscanf(dumm,"%ld",&cellB);strcpy(dumm,blank);
    sscanf(buffer+30,"%6c",dumm);
    sscanf(dumm,"%ld",&cellC);strcpy(dumm,blank);
    sscanf(buffer+36,"%1c",dumm);
    sscanf(dumm,"%d",&preca);strcpy(dumm,blank);
    sscanf(buffer+37,"%1c",dumm);
    sscanf(dumm,"%d",&precb);strcpy(dumm,blank);
    sscanf(buffer+38,"%1c",dumm);
    sscanf(dumm,"%d",&precc);strcpy(dumm,blank);
    sscanf(buffer+39,"%1c",dumm);
    sscanf(dumm,"%d",&precA);strcpy(dumm,blank);
    sscanf(buffer+40,"%1c",dumm);
    sscanf(dumm,"%d",&precB);strcpy(dumm,blank);
    sscanf(buffer+41,"%1c",dumm);
    sscanf(dumm,"%d",&precC);strcpy(dumm,blank);
    nline=(nrfac+nrem+ndis+nerr) %80;
    if (nline !=0) {ntxtline=(nrfac+nrem+ndis+nerr) / 80 +1;}
    else {ntxtline=(nrfac+nrem+ndis+nerr) / 80;};
    for (i=0;i<ntxtline;i++)
    fgets(txtinfo,100,inp);
    nline=nopr %5;
    if (nline !=0) {nsymline=nopr / 5 +1;}
    else {nsymline=nopr / 5;};
    for (i=0;i<nsymline;i++)
    {
     fgets(symetrypos,100,inp);
    }
    nline=nrad%16;
    if (nline !=0) {nradline=nrad / 16 +1;}
    else {nradline=nrad/16;};
    for (i=0;i<nradline;i++)
     fgets(radiusvalue,100,inp);
    nbat = nat + nsat;
    nline = nbat % 3;
    if (nline !=0)
      {
      k= (nbat / 3) + 1;
      for (i=0;i < k;i++)
	{
	  j= 3*i;
	  fgets(buffer,100,inp);
	  sscanf(buffer,"%5c",nomat+j);
	  sscanf(buffer+5,"%7c",dumm);
	  sscanf(dumm,"%f",x+j);strcpy(dumm,blank);
	  sscanf(buffer+12,"%7c",dumm);
	  sscanf(dumm,"%f",y+j);strcpy(dumm,blank);
	  sscanf(buffer+19,"%7c",dumm);
	  sscanf(dumm,"%f",z+j);strcpy(dumm,blank);
	  sscanf(buffer+27,"%5c",nomat+j+1);
	  sscanf(buffer+32,"%7c",dumm);
	  sscanf(dumm,"%f",x+j+1);strcpy(dumm,blank);
	  sscanf(buffer+39,"%7c",dumm);
	  sscanf(dumm,"%f",y+j+1);strcpy(dumm,blank);
	  sscanf(buffer+46,"%7c",dumm);
	  sscanf(dumm,"%f",z+j+1);strcpy(dumm,blank);
	  sscanf(buffer+54,"%5c",nomat+j+2);
	  sscanf(buffer+59,"%7c",dumm);
	  sscanf(dumm,"%f",x+j+2);strcpy(dumm,blank);
	  sscanf(buffer+66,"%7c",dumm);
	  sscanf(dumm,"%f",y+j+2);strcpy(dumm,blank);
	  sscanf(buffer+73,"%7c",dumm);
	  sscanf(dumm,"%f",z+j+2);strcpy(dumm,blank);
	}
    }
    else
      {
      k= (nbat / 3);
      for (i=0;i < k;i++)
	{

	  j= 3*i;
	  fgets(buffer,100,inp);
	  sscanf(buffer,"%5c",nomat+j);
	  sscanf(buffer+5,"%7c",dumm);
	  sscanf(dumm,"%f",x+j);strcpy(dumm,blank);
	  sscanf(buffer+12,"%7c",dumm);
	  sscanf(dumm,"%f",y+j);strcpy(dumm,blank);
	  sscanf(buffer+19,"%7c",dumm);
	  sscanf(dumm,"%f",z+j);strcpy(dumm,blank);
	  sscanf(buffer+27,"%5c",nomat+j+1);
	  sscanf(buffer+32,"%7c",dumm);
	  sscanf(dumm,"%f",x+j+1);strcpy(dumm,blank);
	  sscanf(buffer+39,"%7c",dumm);
	  sscanf(dumm,"%f",y+j+1);strcpy(dumm,blank);
	  sscanf(buffer+46,"%7c",dumm);
	  sscanf(dumm,"%f",z+j+1);strcpy(dumm,blank);
	  sscanf(buffer+54,"%5c",nomat+j+2);
	  sscanf(buffer+59,"%7c",dumm);
	  sscanf(dumm,"%f",x+j+2);strcpy(dumm,blank);
	  sscanf(buffer+66,"%7c",dumm);
	  sscanf(dumm,"%f",y+j+2);strcpy(dumm,blank);
	  sscanf(buffer+73,"%7c",dumm);
	  sscanf(dumm,"%f",z+j+2);strcpy(dumm,blank);


	}
    }
    ortho(x,y,z,cella,cellb,cellc,cellA,cellB,cellC,nbat);
    writepdb(nomat ,x,y,z,refcode);
  }
  }
  fclose(inp);
}

void ortho(float x[250],float y[250],float z[250],long cella,long cellb,
	      long cellc,long cellA,long cellB,long cellC, long nbat)
{
  register int i;
  float alp,bet,gam,cosa,cosb,cosg,sing,q,p,degrad,precaf,precbf,preccf;

  degrad = 1/57.29578;
  alp = cellA*exp(precA*log(10)*-1)*degrad;
  bet = cellB*degrad*exp(precB*log(10)*-1);
  gam = cellC*degrad*exp(precC*log(10)*-1);
  cosa = cos(alp);
  cosb = cos(bet);
  cosg = cos(gam);
  sing = sin(gam);
  q = (cosa-cosb*cosg) / sing;
  p = sqrt(1.-cosb*cosb-q*q);
  precaf=exp(preca*(-1*log(10)));
  precbf=exp(precb*(-1*log(10)));
  preccf=exp(precc*(-1*log(10)));
  for (i=0;i<nbat;i++)
    {
    x[i] = x[i]*1e-5*cella*precaf;
    y[i] = y[i]*1e-5*cellb*precbf;
    z[i] = z[i]*1e-5*cellc*preccf;
    x[i] += y[i]*cosg + z[i]*cosb;
    y[i] = y[i]*sing + z[i]*q;
    z[i] *= p;
  }
  return;
}


void writepdb(char nomat[250][6],float x[250],float y[250],
	            float z[250], char refcode[9])
{
  FILE *out;
  char blank[21];
  float rayon;
  char file[12],nom[5],nom1[5];
  register int i,j,inom,bond;
  strcpy(blank,"                   ");
  strncpy(file,blank,11);
  strncpy(file,refcode,8);
  if (!strncmp(file+6," ",1)) 
  {
   strcpy(file+6,"\0");
  }
  else
  {
   if (!strncmp(file+7," ",1))
   {
    strcpy(file+7,"\0");
   }
   else
   {
    strcpy(file+8,"\0");
   }
  }
  strcat(file,".ent");
  for (i=0;i<strlen(file);i++) file[i]=tolower(file[i]);
  out=open_file(file,"w");
  fprintf(out,"AUTHOR Francois Savary, csdpdb 1993\n");
  for (i=0;i<nbat;i++)
    {
   strncpy(nom,blank,5);
   strncpy(nom,nomat[i],4);
   inom = isalpha(nom[1]);
   if (inom==0)
     {
    strcpy(nom1," \0");
    strncat(nom1,nom,3);
    strcpy(nom,nom1);
     }
   if (strlen(nom)>4) strcpy(nom+4,"\0");

   fprintf(out,"ATOM   %4d %4s NUL     0    %8.3f%8.3f%8.3f\n",
	      i+1,nom,x[i],y[i],z[i]);

    j=0;
    while (1)
    {
     if (strstr(nom,rcovlab[j]))
     {
      rcov[i]=rcovval[j];
      break;
     }
     j++;
    }


 }


  for (i=0;i<nbat;i++)
  {
   bond=0;
  for (j=i+1;j<nbat;j++)  
  {
   rayon = sqrt(SQR(x[i]-x[j])+SQR(y[i]-y[j])+SQR(z[i]-z[j]));
   if (rayon <= (1.1*(rcov[i]+rcov[j])))
    {
     if (bond==0) fprintf(out,"CONECT%5d",i+1);
     fprintf(out,"%5d",j+1);
     bond++;
    }
  }
   if (bond!=0) fprintf(out,"\n");
  }


  fclose(out);
}


char* get_name(char text[])
{
  char name[101];
  printf("%s",text);
  gets(name);
  return(name);
}

FILE *open_file(char name[101],char type[5])
{
  FILE *Filename;

  if((Filename=fopen(name,type))==NULL) {
    printf("cannot open the file %s\n",name);
    exit(1);
  }
  return(Filename);
}



From SAVARY@sc2a.unige.ch  Mon May  2 12:22:03 1994
Received: from chx400.switch.ch  for SAVARY@sc2a.unige.ch
	by www.ccl.net (8.6.4/930601.1506) id LAA10134; Mon, 2 May 1994 11:35:29 -0400
From: <SAVARY@sc2a.unige.ch>
X400-Received: by mta chx400.switch.ch in /PRMD=switch/ADMD=arcom/C=CH/;
               Relayed; Mon, 2 May 1994 17:34:38 +0200
X400-Received: by /PRMD=SWITCH/ADMD=ARCOM/C=CH/; Relayed;
               Mon, 2 May 1994 17:33:40 +0200
X400-Received: by /PRMD=SWITCH/ADMD=ARCOM/C=CH/; Relayed;
               Mon, 2 May 1994 19:32:55 +0200
X400-Received: by /PRMD=SWITCH/ADMD=ARCOM/C=CH/; Relayed;
               Mon, 2 May 1994 19:32:48 +0200
X400-Received: by /PRMD=SWITCH/ADMD=ARCOM/C=CH/; Relayed;
               Mon, 2 May 1994 19:32:48 +0200
Date: Mon, 2 May 1994 19:32:48 +0200
X400-Originator: SAVARY@sc2a.unige.ch
X400-Recipients: non-disclosure:;
X400-MTS-Identifier: [/PRMD=SWITCH/ADMD=ARCOM/C=CH/;<01HBVEA97F8I003CX6@sc2a.unige.c]
X400-Content-Type: P2-1984 (2)
Content-Identifier: csd_to_pdb re...
Alternate-Recipient: Allowed
Message-ID: <01HBVEA97F8I003CX6@sc2a.unige.ch>
To: CHEMISTRY@ccl.net
Subject: csd_to_pdb renew version
X-Envelope-to: CHEMISTRY@ccl.net
X-VMS-To: IN%"CHEMISTRY@ccl.net"
MIME-version: 1.0
Content-transfer-encoding: 7BIT


Dear netters,

Sorry to bother you,

I did include a wrong code of csdpdb.c, oops!, the one I send works
but does not skip molecules with no coordinates, that one does.

See you

Francois Savary

--------------------------------------------------------------
Francois Savary

Department of Physical Chemistry
University of Geneva
30, quai Ernest-Ansermet
CH-1211 Geneva 4

phone  : +4122 702 65 32
fax    : +4122 702 65 18
e-mail : savary@sc2a.unige.ch
--------------------------------------------------------------

--------------------ultimate version-------------------------
/* converter from .dat file, from CSD to .ent file
   Francois Savary, University of Geneva
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <ctype.h>
#define SQR(a) (a)*(a)

FILE *open_file(char buffer[101],char type[5]);
char* get_name(char text[]);
char buffer[101],dumm[101],refcode[9],txtinfo[101],symetrypos[101],
     radiusvalue[101],nomat[250][6];
long sys,adat,nopr,nrad,nat,nsat,year,cella,cellb,cellc,cellA,cellB,cellC
     ,preca,precb,precc,precA,precB,precC,nline,nbat,nrfac,nrem,ndis,nerr
     ,nsymline,nradline,ntxtline;
float x[250],y[250],z[250],rcov[250];
void ortho(float x[250],float y[250],float z[250],long cella,long cellb,
	      long cellc,long cellA,long cellB,long cellC, long nbat);
void writepdb(char nomat[250][6],float x[250],float y[250],
	            float z[250], char refcode[9]);


static char rcovlab[98][3]={
" H","H1","H2","H3","NE"," F"," O","O1","O2","O3","O4"," N",
" C","C1","C2","C3","C4"," B","BE","HE","AR","CL"," S",
" P","SI","KR","BR","NI","CO","SE","MN","FE","CU","AL","CR","AS","GE",
" V","LI","RU","ZN","RH","GA","OS","IR","TC","RE","PD",
" W","PT","MO","XE","TI"," I","NB","TA","AU","AG","MG","TE","SB","SN",
" U","IN","SC","HF","AT","ZR","BI","PO","PB","TH","CD","HG","NA","LU",
"TM","ER","HO","DY","TB","GD","SM"," Y","PM","ND","TH","CE","PR","LA",
"CA","YB","EU","SR","BA"," K","RB","CS"};

static float rcovval[98]={
0.32,0.32,0.32,0.32,0.71,0.72,0.73,0.73,0.73,0.73,0.73,0.75,0.77,0.77,
0.77,0.77,0.77,0.82,0.90,0.93,0.98,0.99,1.02,1.00,1.11,1.12,1.14,1.15,
1.16,1.16,1.17,1.17,1.17,1.18,1.18,1.20,1.22,1.22,1.23,1.25,1.25,
1.25,1.26,1.26,1.27,1.27,1.28,1.28,1.30,1.30,1.30,1.31,1.32,1.33,
1.34,1.34,1.34,1.34,1.36,1.36,1.40,1.41,1.42,1.44,1.44,1.44,1.45,
1.45,1.46,1.46,1.47,1.48,1.48,1.49,1.54,1.56,1.56,1.57,1.58,1.59,
1.59,1.61,1.62,1.62,1.63,1.64,1.65,1.65,1.65,1.69,1.74,1.74,1.85,
1.91,1.98,2.03,2.16,2.35};


void main(void)
{
  register int i,j,k;
  char blank[21];
  FILE *inp;
  strcpy(buffer,get_name("nom input file : "));
  inp=open_file(buffer,"r");
  strcpy(blank,"                   ");
  while (fgets(buffer,100,inp))
    {
    sscanf(buffer,"%1c",dumm);
    if(!(strncmp(dumm,"#",1)))
      {
    sscanf(buffer+1,"%8c",refcode);
    sscanf(buffer+9,"%1c",dumm);
    sscanf(dumm,"%ld",&sys);strcpy(dumm,blank);
    sscanf(buffer+11,"%6c",dumm);
    sscanf(dumm,"%ld",&adat);strcpy(dumm,blank);
    sscanf(buffer+26,"%3c",dumm);
    sscanf(dumm,"%ld",&nrfac);strcpy(dumm,blank);
    sscanf(buffer+29,"%3c",dumm);
    sscanf(dumm,"%ld",&nrem);strcpy(dumm,blank);
    sscanf(buffer+32,"%3c",dumm);
    sscanf(dumm,"%ld",&ndis);strcpy(dumm,blank);
    sscanf(buffer+35,"%3c",dumm);
    sscanf(dumm,"%ld",&nerr);strcpy(dumm,blank);
    sscanf(buffer+38,"%3c",dumm);
    sscanf(dumm,"%ld",&nopr);strcpy(dumm,blank);
    sscanf(buffer+41,"%3c",dumm);
    sscanf(dumm,"%ld",&nrad);strcpy(dumm,blank);
    sscanf(buffer+44,"%3c",dumm);
    sscanf(dumm,"%ld",&nat);strcpy(dumm,blank);
    sscanf(buffer+47,"%3c",dumm);
    sscanf(dumm,"%ld",&nsat);strcpy(dumm,blank);
    sscanf(buffer+78,"%2c",dumm);
    sscanf(dumm,"%ld",&year);strcpy(dumm,blank);
    fgets(buffer,100,inp);
    sscanf(buffer,"%6c",dumm);
    sscanf(dumm,"%ld",&cella);strcpy(dumm,blank);
    sscanf(buffer+6,"%6c",dumm);
    sscanf(dumm,"%ld",&cellb);strcpy(dumm,blank);
    sscanf(buffer+12,"%6c",dumm);
    sscanf(dumm,"%ld",&cellc);strcpy(dumm,blank);
    sscanf(buffer+18,"%6c",dumm);
    sscanf(dumm,"%ld",&cellA);strcpy(dumm,blank);
    sscanf(buffer+24,"%6c",dumm);
    sscanf(dumm,"%ld",&cellB);strcpy(dumm,blank);
    sscanf(buffer+30,"%6c",dumm);
    sscanf(dumm,"%ld",&cellC);strcpy(dumm,blank);
    sscanf(buffer+36,"%1c",dumm);
    sscanf(dumm,"%d",&preca);strcpy(dumm,blank);
    sscanf(buffer+37,"%1c",dumm);
    sscanf(dumm,"%d",&precb);strcpy(dumm,blank);
    sscanf(buffer+38,"%1c",dumm);
    sscanf(dumm,"%d",&precc);strcpy(dumm,blank);
    sscanf(buffer+39,"%1c",dumm);
    sscanf(dumm,"%d",&precA);strcpy(dumm,blank);
    sscanf(buffer+40,"%1c",dumm);
    sscanf(dumm,"%d",&precB);strcpy(dumm,blank);
    sscanf(buffer+41,"%1c",dumm);
    sscanf(dumm,"%d",&precC);strcpy(dumm,blank);
    nline=(nrfac+nrem+ndis+nerr) %80;
    if (nline !=0) {ntxtline=(nrfac+nrem+ndis+nerr) / 80 +1;}
    else {ntxtline=(nrfac+nrem+ndis+nerr) / 80;};
    for (i=0;i<ntxtline;i++)
    fgets(txtinfo,100,inp);
    nline=nopr %5;
    if (nline !=0) {nsymline=nopr / 5 +1;}
    else {nsymline=nopr / 5;};
    for (i=0;i<nsymline;i++)
    {
     fgets(symetrypos,100,inp);
    }
    nline=nrad%16;
    if (nline !=0) {nradline=nrad / 16 +1;}
    else {nradline=nrad/16;};
    for (i=0;i<nradline;i++)
     fgets(radiusvalue,100,inp);
    nbat = nat + nsat;
    if (nbat!=0)
    {
    nline = nbat % 3;
    if (nline !=0)
      {
      k= (nbat / 3) + 1;
      for (i=0;i < k;i++)
	{
	  j= 3*i;
	  fgets(buffer,100,inp);
	  sscanf(buffer,"%5c",nomat+j);
	  sscanf(buffer+5,"%7c",dumm);
	  sscanf(dumm,"%f",x+j);strcpy(dumm,blank);
	  sscanf(buffer+12,"%7c",dumm);
	  sscanf(dumm,"%f",y+j);strcpy(dumm,blank);
	  sscanf(buffer+19,"%7c",dumm);
	  sscanf(dumm,"%f",z+j);strcpy(dumm,blank);
	  sscanf(buffer+27,"%5c",nomat+j+1);
	  sscanf(buffer+32,"%7c",dumm);
	  sscanf(dumm,"%f",x+j+1);strcpy(dumm,blank);
	  sscanf(buffer+39,"%7c",dumm);
	  sscanf(dumm,"%f",y+j+1);strcpy(dumm,blank);
	  sscanf(buffer+46,"%7c",dumm);
	  sscanf(dumm,"%f",z+j+1);strcpy(dumm,blank);
	  sscanf(buffer+54,"%5c",nomat+j+2);
	  sscanf(buffer+59,"%7c",dumm);
	  sscanf(dumm,"%f",x+j+2);strcpy(dumm,blank);
	  sscanf(buffer+66,"%7c",dumm);
	  sscanf(dumm,"%f",y+j+2);strcpy(dumm,blank);
	  sscanf(buffer+73,"%7c",dumm);
	  sscanf(dumm,"%f",z+j+2);strcpy(dumm,blank);
	}
    }
    else
      {
      k= (nbat / 3);
      for (i=0;i < k;i++)
	{

	  j= 3*i;
	  fgets(buffer,100,inp);
	  sscanf(buffer,"%5c",nomat+j);
	  sscanf(buffer+5,"%7c",dumm);
	  sscanf(dumm,"%f",x+j);strcpy(dumm,blank);
	  sscanf(buffer+12,"%7c",dumm);
	  sscanf(dumm,"%f",y+j);strcpy(dumm,blank);
	  sscanf(buffer+19,"%7c",dumm);
	  sscanf(dumm,"%f",z+j);strcpy(dumm,blank);
	  sscanf(buffer+27,"%5c",nomat+j+1);
	  sscanf(buffer+32,"%7c",dumm);
	  sscanf(dumm,"%f",x+j+1);strcpy(dumm,blank);
	  sscanf(buffer+39,"%7c",dumm);
	  sscanf(dumm,"%f",y+j+1);strcpy(dumm,blank);
	  sscanf(buffer+46,"%7c",dumm);
	  sscanf(dumm,"%f",z+j+1);strcpy(dumm,blank);
	  sscanf(buffer+54,"%5c",nomat+j+2);
	  sscanf(buffer+59,"%7c",dumm);
	  sscanf(dumm,"%f",x+j+2);strcpy(dumm,blank);
	  sscanf(buffer+66,"%7c",dumm);
	  sscanf(dumm,"%f",y+j+2);strcpy(dumm,blank);
	  sscanf(buffer+73,"%7c",dumm);
	  sscanf(dumm,"%f",z+j+2);strcpy(dumm,blank);


	}
    }
    ortho(x,y,z,cella,cellb,cellc,cellA,cellB,cellC,nbat);
    writepdb(nomat ,x,y,z,refcode);
  }
  }
  }
  fclose(inp);
}

void ortho(float x[250],float y[250],float z[250],long cella,long cellb,
	      long cellc,long cellA,long cellB,long cellC, long nbat)
{
  register int i;
  float alp,bet,gam,cosa,cosb,cosg,sing,q,p,degrad,precaf,precbf,preccf;

  degrad = 1/57.29578;
  alp = cellA*exp(precA*log(10)*-1)*degrad;
  bet = cellB*degrad*exp(precB*log(10)*-1);
  gam = cellC*degrad*exp(precC*log(10)*-1);
  cosa = cos(alp);
  cosb = cos(bet);
  cosg = cos(gam);
  sing = sin(gam);
  q = (cosa-cosb*cosg) / sing;
  p = sqrt(1.-cosb*cosb-q*q);
  precaf=exp(preca*(-1*log(10)));
  precbf=exp(precb*(-1*log(10)));
  preccf=exp(precc*(-1*log(10)));
  for (i=0;i<nbat;i++)
    {
    x[i] = x[i]*1e-5*cella*precaf;
    y[i] = y[i]*1e-5*cellb*precbf;
    z[i] = z[i]*1e-5*cellc*preccf;
    x[i] += y[i]*cosg + z[i]*cosb;
    y[i] = y[i]*sing + z[i]*q;
    z[i] *= p;
  }
  return;
}


void writepdb(char nomat[250][6],float x[250],float y[250],
	            float z[250], char refcode[9])
{
  FILE *out;
  char blank[21];
  float rayon;
  char file[12],nom[5],nom1[5];
  register int i,j,inom,bond;
  strcpy(blank,"                   ");
  strncpy(file,blank,11);
  strncpy(file,refcode,8);
  if (!strncmp(file+6," ",1)) 
  {
   strcpy(file+6,"\0");
  }
  else
  {
   if (!strncmp(file+7," ",1))
   {
    strcpy(file+7,"\0");
   }
   else
   {
    strcpy(file+8,"\0");
   }
  }
  strcat(file,".ent");
  for (i=0;i<strlen(file);i++) file[i]=tolower(file[i]);
  out=open_file(file,"w");
  fprintf(out,"AUTHOR Francois Savary, csdpdb 1993\n");
  for (i=0;i<nbat;i++)
    {
   strncpy(nom,blank,5);
   strncpy(nom,nomat[i],4);
   inom = isalpha(nom[1]);
   if (inom==0)
     {
    strcpy(nom1," \0");
    strncat(nom1,nom,3);
    strcpy(nom,nom1);
     }
   if (strlen(nom)>4) strcpy(nom+4,"\0");

   fprintf(out,"ATOM   %4d %4s NUL     0    %8.3f%8.3f%8.3f\n",
	      i+1,nom,x[i],y[i],z[i]);

    j=0;
    while (1)
    {
     if (strstr(nom,rcovlab[j]))
     {
      rcov[i]=rcovval[j];
      break;
     }
     j++;
    }


 }


  for (i=0;i<nbat;i++)
  {
   bond=0;
  for (j=i+1;j<nbat;j++)  
  {
   rayon = sqrt(SQR(x[i]-x[j])+SQR(y[i]-y[j])+SQR(z[i]-z[j]));
   if (rayon <= (1.1*(rcov[i]+rcov[j])))
    {
     if (bond==0) fprintf(out,"CONECT%5d",i+1);
     fprintf(out,"%5d",j+1);
     bond++;
    }
  }
   if (bond!=0) fprintf(out,"\n");
  }


  fclose(out);
}


char* get_name(char text[])
{
  char name[101];
  printf("%s",text);
  gets(name);
  return(name);
}

FILE *open_file(char name[101],char type[5])
{
  FILE *Filename;

  if((Filename=fopen(name,type))==NULL) {
    printf("cannot open the file %s\n",name);
    exit(1);
  }
  return(Filename);
}


From chen@agouron.com  Mon May  2 13:22:05 1994
Received: from agouron.com  for chen@agouron.com
	by www.ccl.net (8.6.4/930601.1506) id MAA10581; Mon, 2 May 1994 12:28:23 -0400
Received: from agouron.agouron.com by agouron.com via SMTP (931110.SGI/930901.SGI)
	for chemistry@ccl.net id AA10731; Mon, 2 May 94 09:31:00 -0700
Received: by agouron (5.64/10.0)
	id AA06823; Mon, 2 May 94 09:30:42 -0700
Date: Mon, 2 May 94 09:30:42 -0700
From: chen@agouron.com (Chris Chen)
Message-Id: <9405021630.AA06823@agouron>
To: chemistry@ccl.net
Subject: Summary: conformational search


Dear Netter:
Here comes the summray to my question about conformational
search . Thanks everyone for the help.
Chris Chen

----------------------- Original Question ----------------------------- 
>From chen@agouron.com  Thu Apr 21 01:31:48 1994
Subject: sysmatic conf. search and MC conf. search

Dear netters:

Can someone recommand  me some papers which evulate different 
conformational search methods, namely systematic conformational search 
and Monta Carlo conformational search?

Thanks in advance

Chris Chen
chen@agouron.com 
San Diego
	-- the finest city in the States
	
----------------------- Summary of Answers ----------------------------- 
From: wolf@molout.tutkie.tut.ac.jp (Wolf-D. Ihlenfeldt)

I think there was some review by Willet et al., J.Chem.Inf.Comput.Sci,
1994, 34

WDI
------------------------------------------------------------------------
From: m.langoor@ams.chem.ruu.nl

I have seen a very recent paper on complete 
conformational searching in MM-calculations 
compared with other methods. In its introduction 
it discusses a lot of other techniques (like MC, 
MD, grid search) and gives references for them.
I think it might be useful for you.
The reference is:

F. Villamagna and M. A. Whitehead
J. Chem. Soc. Faraday Trans., 90(1), 1994, pp. 47-54

Marcel Langoor.
Ing. M.H. Langoor
Analytical Molecular Spectrometry
Utrecht University
P.O. Box 80083
3508 TB Utrecht
The Netherlands
tel. +31 - 30 - 536811
fax  +31 - 30 - 518219
email: M.Langoor@ams.chem.ruu.nl

------------------------------------------------------------------------

From: robby@frodo.ciam.unibo.it (Roberto Maiani)

About your problems you can see:
 JACS 1990 (112) 1419-1427 
 Macromolecules 1984 (17) 2044-2050

You can see also some articles published on "Reviews on Computational Chemistry"  
								Roberto Maiani
------------------------------------------------------------------------

From: osawa@cochem.tutkie.tut.ac.jp (Eiji Osawa)

        I cannot overlook your message, because this is my field. The
following paper (of my own) discusses
the point you are looking for:
        H. Goto and E. Osawa, J. Chem. Soc., Perkin Trans. 2, 1993,
187-198.
Our point is that Monte Carlo conformation search can be inefficient when
high energy conformers are inherently more populated than the low energy
ones, which is actually the case for n-alkanes. because systematic search
explodes quickly under the heavy increase in computer time, it must be
efficient in the point that it should have some means to direct the space
search always to low-energy region.
More details are in that paper. Good luck! Eiji Osawa

/*********************************************************
*  Eiji Osawa                                            *
*  Department of Knowledge-based Information Engineering *
*  Toyohashi University of Technology                    *
*  Aichi 441, Japan                                      *
*  Phone: x-81-532-47-0111(ex. 853)                      *
*  FAX: x-81-532-48-5588                                 *              
*  E-mail: osawa@cochem.tutkie.tut.ac.jp                 *
*********************************************************/

------------------------------------------------------------------------

From: adit@Kodak.COM (Adi Treasurywala)

Chris,
	My group and I have spent the been involved in a systematic
	survey of the applicability of the different methods of
	conformational analysis of small molecules for several years
	now. We have published two papers on teh subject using a
	standard set of molecules that will be applied to all of the
	methods in J Compu Chem. More work has of course been completed
	and I would be happy to discuss it with you on the phone if you
	are interested.

	If you get other responses please let me know. I would be
	interested in making sure that I have an up-to-date collection
	of references of others' work in this area.

Adi M Treasurywala,Sterling Winthrop Inc,1250 South Collegeville Road,
PO Box 5000, Collegeville, PA 19426-0900,Voice (215)983-6610 FAX
(215)983-5559, INTERNET adit@kodak.com

------------------------------------------------------------------------

From: burkhart@goodyear.com (Craig W. Burkhart)

Almost any paper on rotational isomeric state (RIS) analyses by Paul
Flory and his coworkers would fit the bill. They were pioneers in
this form of work...

Craig W. Burkhart, Ph.D.                   Senior Research Chemist 
E-mail: cburkhart@goodyear.com             The Goodyear Tire & Rubber Co.
Fone:   216.796.3163                       Research Center
Fax:    216.796.3304                       142 Goodyear Boulevard
					   Akron, OH   44305
--------------------------------------------------------------------------

From: Lipkowitz <lipkowitz@chem.iupui.edu>

Chris, I had that same question several years ago...along with many
others...so, Don Boyd and I started a review series to answer such questions. 
The answer to your question is: Andrew Leach, "A Survey of Methods for
Searching the Conformational Space of Small and Medium Sized Molecules" in
Reviews in Computational Chemistry, Volume 2, VCH Publishers, 1991.  Also see:
H.A. Scheraga, "Predicting Three-Dimensional Structures of Oligopeptides" in
Volume 3 of that series.  Both are complete tutorials that will help you.
Kenny.
------------------------------------------------------------------------
From: "Gregory L. Durst - DowElanco R&D" <GDURST@ELINET1.DOWELANCO.COM>

The 2 *reviews* I'm aware of on conformational search are:
A. Howard & P. Kollman,  J. Med. Chem., v31,(9), (1988), 1669.
A. Leach in "Reviews in Computational Chemistry Vol.2" eds Boyd & Lipkowitz, 
 VCH Inc., NY, (1991), pp1-55.


Other papers on conformational searching possibly of interest:

M. Saunders, JACS, 109, (1987), 3150.
D. Ferguson & D. Raber, JACS, 111, (1989), 4371.
G. Chang, W. Guida & C. Still, JACS, 111, (1989), 4379 
T. Perkins & D. Barlow, J. Mol. Graphics, 8, (1990), 156.
M. Saunders et al, JACS, 112, (1990), 1419.

Hope this leads you to where you want to go!
Greg
+-----------------------------------------------------------------------+
|   Gregory L. Durst                   Computational Chemistry          |
|   phone:   317/337-3413              DowElanco  R&D                   |
|   email:   gdurst@dowelanco.com      9330 Zionsville Rd.  Bldg 306/D2 |
|                                      Indianapolis, IN  46268   USA    |
+-----------------------------------------------------------------------+
--------------------------------------------------------------------------
From: R.G.A. Bone <rgab@purisima.molres.org>

J. Med. Chem., 31, 1831, (1988)
Chapter 1 of 'Reviews in Computational Chemistry, II', Ed. Lipkowitz and Boyd.
RGAB

R. G. A. Bone.
Molecular Research Institute,
845 Page Mill Road,
Palo Alto,
CA 94304-1011,
U.S.A.
Tel. +1 (415) 424 9924 x110
FAX  +1 (415) 424 9501
E-mail  rgab@purisima.molres.org

---------------------------------------------------------------------
From: Thomas Weimar <weimar@sfu.ca>

hi chris,
i can only point out some papers wich deal with monte-carlo simulations
on oligosaccharides. have a look at " Peters, et al., Carbohydr. Res. 238, 49-73, 1993.
this paper compares monte carlo vs. systematic conf. search.

the same monte carlo approach is used in "Stuike-Prill & Meyer, Eur. J. Biochem., 194, 903
-919, 1991. but thei program (GEGOP) is also able to calculate peptide or 
proteins.

hope that helps
thomas
---------------------------------------------------------
* Thomas Weimar (Ph. D.)    voice: 604 291 5650         *
* Department of Chemistry   fax  : 604 291 3765         *
* Simon Fraser University                               *
* Burnaby, B.C.                                         *
* V5A 1S6, Canada          e-mail: thomas_weimar@sfu.ca *
---------------------------------------------------------

----------------------------------------------------------------------
From: Max Vasquez <wk01189@worldlink.com>
To: chen@agouron.com

Dear Chris,

       the "classical" test paper is by Saunders and co-workers; this appeared
in JACS 112, 1419-1427 (1990).  The authors compare several MC methods, MD,
DG, and systematic approaches to the conformational analysis of a cyclic
hydrocarbon.  You may also want to take a look at Goodman & Still in
J. Comp. Chem. 12, 110 (1991), Judson et al. J. Comp. Chem. 14, 1407 (1993),
and McGarrah et al J. Comp. Chem. 14, 1385 (1993).  The last two compare
systematic with "genetic algorithm" (GA) approaches.  There was another paper
in J. Comp. Chem. in 92 or so, I believe by a group in Germany or Switzerland,
which also addresses some of these issues -- I do not recall the reference for
that one.
========================================
Max Vasquez, PhD
Protein Design Labs, Inc.
2375 Garcia Ave.
Mountain View CA 94043
Phone (415) 903 3744   FAX (415) 903 3730
e-Mail  wk01189 @ worldlink.com
========================================





From jkshin@radon.sait.samsung.co.kr  Mon May  2 21:22:05 1994
Received: from han.hana.nm.kr  for jkshin@radon.sait.samsung.co.kr
	by www.ccl.net (8.6.4/930601.1506) id UAA15346; Mon, 2 May 1994 20:49:02 -0400
Received: from  (saitgw.sait.samsung.co.kr) by han.hana.nm.kr (4.1/KUM-0.1)
	id AA22540; Tue, 3 May 94 09:45:19 KST
Received: from radon.sait.samsung.co.kr by  (4.1/SMI-4.1)
	id AA14779; Tue, 3 May 94 09:51:07 KST
Received: by radon.sait.samsung.co.kr (931110.SGI/920502.SGI)
	for @saitgw.sait.samsung.co.kr:chemistry@ccl.net id AA01388; Tue, 3 May 94 09:48:54 +0900
Date: Tue, 3 May 94 09:48:54 +0900
From: jkshin@radon.sait.samsung.co.kr (Jaikwang Shin)
Message-Id: <9405030048.AA01388@radon.sait.samsung.co.kr>
To: chemistry@ccl.net
Subject: Resins data base:


Dear Netters:

	I would like to know if there is any commertial or public
data base of resins. If yes, how can I reach there?
Thanks in advance

Jai K. Shin
Email: jkshin@radon.sait.samsung.co.kr


