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"
int write_geo(geo_type)
/*============================================================================*/
/* FILENAME: WRITE_GEO.C
/* WRITTEN: J.R.HURST
/* MODIFICATIONS:
/* 12 OCT 1993 MVG: ADDED WRITE_GENERIC_CART.
/* 2 APR 1992 MVG: ADDED WRITE_SYBYL_MOL2.
*/
int geo_type; /* Type of geometry */
{
char line[130]; /* Multipurpose character string */
FILE* outfile; /* file for input of structure */
int i; /* loop variable */
char prompt[80];
char rawfile[130]; /* COPY OF RAW FILENAME AS ENTERED BY USER. */
int status;
char message[100]; /* ERROR MESSAGE. */
void exit();
/* QUERY USER FOR THE TYPE OF GEO FILE TO BE WRITTEN IF NOT EXPRESS MODE. */
if (!express_mode)
{
if ((geo_type=get_output_type()) == TYPE_NONE) return(0);
}
/* GENERATE THE DEFAULT OUTPUT FILE NAME FROM THE INPUT FILE NAME. */
strcpy(output_file_name,input_file_name); /* START WITH THE INPUT FILE NAME. */
if (geo_type==TYPE_AMPAC_INTERNAL || geo_type==TYPE_AMPAC_CART) new_extension(output_file_name,".ampac");
else if (geo_type==TYPE_MOPAC_INTERNAL || geo_type==TYPE_MOPAC_CART) new_extension(output_file_name,".mopac");
else if (geo_type==TYPE_CADPAC_INTERNAL || geo_type==TYPE_CADPAC_CART) new_extension(output_file_name,".i");
else if (geo_type==TYPE_GAUSSIAN_INTERNAL) new_extension(output_file_name,".i");
else if (geo_type==TYPE_SYBYL_MOL) new_extension(output_file_name,".mol");
else if (geo_type==TYPE_SYBYL_MOL2) new_extension(output_file_name,".mol2");
else if (geo_type==TYPE_PRDDOE_INPUT) new_extension(output_file_name,".ext");
else if (geo_type==TYPE_MM2_INPUT) new_extension(output_file_name,".mm2");
else if (geo_type==TYPE_MM3_INPUT) new_extension(output_file_name,".mm3");
else if (geo_type==TYPE_UNICHEM_STRUCTURE) new_extension(output_file_name,".ucm");
else if (geo_type==TYPE_MACROMODEL_STRUCTURE) new_extension(output_file_name,".mmod");
else if (geo_type==TYPE_GENERIC_CART) new_extension(output_file_name,".cart");
else new_extension(output_file_name,".unknown");
/* QUERY USER FOR THE FILE NAME TO BE WRITTEN IF NOT EXPRESS MODE. */
if (!express_mode)
{
printf("\n");
strcpy(prompt,"Enter file name to write [");
strcat(prompt,output_file_name);
strcat(prompt,"]");
status=gstring(prompt,NULL_OK,line);
if (status==ABORT_ENTRY) return(0);
else if (status==NULL_ENTRY) strcpy(rawfile,output_file_name);
else strcpy(rawfile,line); /* SAVE THE RAW FILENAME. */
}
else strcpy(rawfile,output_file_name);
/* WRITE OUT THE FILE ACCORDING TO THE GEOMETRY TYPE. */
switch(geo_type)
{
case TYPE_SYBYL_MOL:
if ((outfile=file_opened(rawfile,".mol","w",output_file_name))==NULL)
{
sprintf(message,"File %s could not be opened",output_file_name);
return(errmsg(message,FALSE));
}
if (write_sybyl_mol(outfile)) break;
else return(FALSE);
case TYPE_SYBYL_MOL2:
if ((outfile=file_opened(rawfile,".mol2","w",output_file_name))==NULL)
{
sprintf(message,"File %s could not be opened",output_file_name);
return(errmsg(message,FALSE));
}
if (write_sybyl_mol2(outfile)) break;
else return(FALSE);
case TYPE_MM2_INPUT:
if ((outfile=file_opened(rawfile,".mm2","w",output_file_name))==NULL)
{
sprintf(message,"File %s could not be opened",output_file_name);
return(errmsg(message,FALSE));
}
if (write_mm2_input(TYPE_MM2_INPUT,outfile)) break;
else return(FALSE);
case TYPE_MM3_INPUT:
if ((outfile=file_opened(rawfile,".mm3","w",output_file_name))==NULL)
{
sprintf(message,"File %s could not be opened",output_file_name);
return(errmsg(message,FALSE));
}
if (write_mm2_input(TYPE_MM3_INPUT,outfile)) break;
else return(FALSE);
default:
printf("Error: Unknown geo_type (%d) in write_geo.\n",geo_type);
exit(PROGRAM_FAILED);
}
if (geo_type!=TYPE_PRDDOE_INPUT) fclose(outfile);
return(TRUE);
}
int get_output_type()
/*============================================================================*/
{
int status;
char choice;
void clear_screen(); /* CLEAR SCREEN, POSSIBLY DISPLAY FILES. */
/* SELECT AN OUTPUT GEOMETRY FILE TYPE TO WRITE. */
clear_screen(NO_DISPLAY_FILES);
if (!express_mode) printf(" === WRITE A FILE ===\n\n");
else printf(" === EXPRESS MODE OUTPUT FILE TYPE SELECTION ===\n\n");
printf("A) SYBYL mol file\n");
printf("B) CADPAC internal coordinates input file\n");
printf("C) CADPAC cartesian coordinates input file\n");
printf("D) AMPAC internal coordinates input file\n");
printf("E) AMPAC cartesian coordinates input file\n");
printf("F) MOPAC internal coordinates input file\n");
printf("G) MOPAC cartesian coordinates input file\n");
printf("H) GAUSSIAN internal coordinates input file\n");
printf("I) PRDDOE input file\n");
printf("J) MM2 input file\n");
printf("K) MM3 input file\n");
printf("L) UNICHEM structure file\n");
printf("M) MACROMODEL structure file\n");
printf("N) SYBYL mol2 file\n");
printf("O) Generic cartesian coordinate file\n\n");
if (!express_mode) gchoice("Enter file type to write","abcdefghijklmno",NULL_NOT_OK,&choice);
else gchoice("Enter output type of all files on command line","abcdefghijklmno",NULL_NOT_OK,&choice);
/* DETERMINE WHICH OPTION WAS CHOSEN. */
if (choice=='A') return(TYPE_SYBYL_MOL);
else if (choice=='B') return(TYPE_CADPAC_INTERNAL);
else if (choice=='C') return(TYPE_CADPAC_CART);
else if (choice=='D') return(TYPE_AMPAC_INTERNAL);
else if (choice=='E') return(TYPE_AMPAC_CART);
else if (choice=='F') return(TYPE_MOPAC_INTERNAL);
else if (choice=='G') return(TYPE_MOPAC_CART);
else if (choice=='H') return(TYPE_GAUSSIAN_INTERNAL);
else if (choice=='I') return(TYPE_PRDDOE_INPUT);
else if (choice=='J') return(TYPE_MM2_INPUT);
else if (choice=='K') return(TYPE_MM3_INPUT);
else if (choice=='L') return(TYPE_UNICHEM_STRUCTURE);
else if (choice=='M') return(TYPE_MACROMODEL_STRUCTURE);
else if (choice=='N') return(TYPE_SYBYL_MOL2);
else if (choice=='O') return(TYPE_GENERIC_CART);
else return(TYPE_NONE);
}
|