newgeo
|
clear_screen.c,
filter_atom_type.c,
intgen.c,
newgeo.c,
newgeo.h,
newgeo.make,
read_geo.c,
read_mm2.c,
read_sybyl.c,
valid_atom.c,
write_geo.c,
write_mm2.c,
write_sybyl.c,
|
|
|
#include "utility.h"
#include "newgeo.h"
#define MAX_SYBYL_ATOM_TYPE 31
#define MIN_SYBYL_ATOM_TYPE 1
static char sybyl_mnemonics[MAX_SYBYL_ATOM_TYPE][6] =
{
"C.3", /* 1 */
"C.2", /* 2 */
"C.ar", /* 3 */
"C.1", /* 4 */
"N.3", /* 5 */
"N.2", /* 6 */
"N.1", /* 7 */
"O.3", /* 8 */
"O.2", /* 9 */
"S.3", /*10 */
"N.ar", /*11 */
"P.3", /*12 */
"H", /*13 */
"Br", /*14 */
"Cl", /*15 */
"F", /*16 */
"I", /*17 */
"S.2", /*18 */
"N.pl3", /*19 */
"LP", /*20 */
"Na", /*21 */
"K", /*22 */
"Ca", /*23 */
"Li", /*24 */
"Al", /*25 */
"Du", /*26 */
"Si", /*27 */
"N.am", /*28 */
"S.O", /*29 */
"S.O2", /*30 */
"N.4" /*31 */
};
static char sybyl_elements[MAX_SYBYL_ATOM_TYPE][3] =
{
"C ", /* 1 */
"C ", /* 2 */
"C ", /* 3 */
"C ", /* 4 */
"N ", /* 5 */
"N ", /* 6 */
"N ", /* 7 */
"O ", /* 8 */
"O ", /* 9 */
"S ", /*10 */
"N ", /*11 */
"P ", /*12 */
"H ", /*13 */
"Br", /*14 */
"Cl", /*15 */
"F ", /*16 */
"I ", /*17 */
"S ", /*18 */
"N ", /*19 */
"LP", /*20 */
"Na", /*21 */
"K ", /*22 */
"Ca", /*23 */
"Li", /*24 */
"Al", /*25 */
"Du", /*26 */
"Si", /*27 */
"N ", /*28 */
"S ", /*29 */
"S ", /*30 */
"N " /*31 */
};
int read_sybyl_mol(infile)
/*============================================================================*/
/* This routine reads in SYBYL MOL file from a disk file .
/* AUTHOR: John R. Hurst, Data Management, 051088
/* LAST MODIFICATION: 2 APRIL 1992 MVG (ADDED READ MOL2 CAPABILITY)
/*============================================================================*/
FILE *infile;
{
int bond_cnt;
char line[130]; /* Multipurpose character string */
int i; /* loop variable */
int atom1; /* FIRST ATOM IN BOND. */
int atom2; /* SECOND ATOM IN BOND. */
/* READ IN THE HEADER. */
if (fgets(line,sizeof line,infile) == NULL) return(FALSE);
atom_cnt = 0;
if (sscanf(line,"%hd",&atom_cnt)!=1) return(errmsg("Reading header",FALSE)); /* GET THE TOTAL NUMBER OF ATOMS. */
strncpy(source_title,&line[18],20); /* GET THE MOLECULE NAME AS TITLE. */
source_title[20]='\0'; /* ADD NULL THAT STRNCPY LEAVES OFF. */
notrail(source_title,' ');
/* READ IN EACH ATOM OF THE GEOMETRY DEFINITION. */
for (i=0; iMOLECULE")==0)
{
/* GRAB MOLECULE NAME, AND NUMBER OF ATOMS/BONDS. */
if (fgets(source_title,sizeof source_title,infile)==NULL)
return(errmsg("Reading molecule name",FALSE));
if (fgets(line,sizeof line,infile)==NULL)
return(errmsg("Reading number of atoms and bonds",FALSE));
if (sscanf(line,"%hd %d",&atom_cnt,&bond_cnt)!=2)
return(errmsg("Reading number of atoms and bonds",FALSE));
/* SKIP MOLECULE TYPE, CHARGE TYPE, AND STATUS. */
if (fgets(line,sizeof line,infile)==NULL)
return(errmsg("Reading molecule type",FALSE));
if (fgets(line,sizeof line,infile)==NULL)
return(errmsg("Reading molecule charge type",FALSE));
if (fgets(line,sizeof line,infile)==NULL)
return(errmsg("Reading molecule status bits",FALSE));
/* GET THE COMMENT LINE. */
if (fgets(header_text[0],sizeof header_text[0],infile)==NULL)
return(errmsg("Reading molecule comment",FALSE));
}
else if (strcmp(line,"@ATOM")==0)
{
/* GRAB THE DEFINITION OF EACH ATOM. */
for (natom=0; natomBOND")==0)
{
/* GRAB THE DEFINITION OF EACH BOND. */
for (nbond=0; nbond=MIN_SYBYL_ATOM_TYPE)
return(sybyl_mnemonics[atom_type-1]);
else return("Bad");
}
|