00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 #include "apbscfg.h"
00043 #include "apbs/apbs.h"
00044
00045 void multivalue_usage(void){
00046 Vnm_print(1,"\n");
00047 Vnm_print(1,"Usage: > multivalue csvCoordinatesFile dxFormattedFile outputFile\n\n");
00048 Vnm_print(1,"Example input file:\n\n\t");
00049 Vnm_print(1,"123.234,23.8E03,9.6e-4\n\t");
00050 Vnm_print(1,"5.9,6.2,0.3\n\t");
00051 Vnm_print(1,"-7e3,91,0.6\n\n\t");
00052 Vnm_print(1,"NOTE\t-No white space allowed anywhere on\n\t\t ");
00053 Vnm_print(1,"a line (ex. no space after commas)\n\t\t");
00054 Vnm_print(1,"-No blank lines allowed at the top of\n\t\t ");
00055 Vnm_print(1,"the file (blank lines OK at the end)\n\t\t");
00056 Vnm_print(1,"-No column headers/titles\n");
00057 }
00058
00059 int main(int argc, char *argv[]){
00060 char *inputFileName, *dxFileName, *outputFileName;
00061 int scanNum = 0;
00062 double pt[3], val;
00063 FILE *inputFileStream, *outputFileStream;
00064 Vgrid *grid;
00065
00066
00067 Vio_start();
00068 Vnm_redirect(1);
00069 Vnm_print(1, "\n");
00070 if(argc != 4){
00071 Vnm_print(2,"Invalid number of arguments, # of arguments received: %d\n",argc);
00072 multivalue_usage();
00073 exit(0);
00074 }
00075
00076 inputFileName = argv[1];
00077 dxFileName = argv[2];
00078 outputFileName = argv[3];
00079
00080 Vnm_print(1,"Input file:\t%s\ndx file:\t%s\nOutput file:\t%s\n", inputFileName, dxFileName, outputFileName);
00081
00082
00083 Vnm_print(1,"Reading data from %s...\n",dxFileName);
00084 grid = Vgrid_ctor(0, 0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, VNULL);
00085 if (!Vgrid_readDX(grid, "FILE", "ASC", VNULL,dxFileName)) {
00086 Vnm_print(2, "Error reading dx file: %s\n",dxFileName);
00087 exit(1);
00088 }
00089
00090
00091
00092
00093 if((inputFileStream = fopen(inputFileName,"r")) == NULL){
00094 Vnm_print(2,"Error opening input file: %s\n",inputFileName);
00095 exit(1);
00096 }
00097
00098
00099
00100
00101 if((outputFileStream = fopen(outputFileName,"w")) == NULL){
00102 Vnm_print(2,"Error opening output file: %s\n",outputFileName);
00103
00104
00105
00106
00107 if(fclose(inputFileStream) == EOF){
00108 Vnm_print(2,"Error closing input file: %s",inputFileName);
00109 }
00110 exit(1);
00111 }
00112
00113
00114
00115
00116
00117
00118 scanNum = fscanf(inputFileStream,"%lg%*c%lg%*c%lg",&pt[0],&pt[1],&pt[2]);
00119
00120
00121
00122 if(scanNum == EOF){
00123 Vnm_print(1,"Invalid data in the input file: %s\n",inputFileName);
00124 multivalue_usage();
00125 exit(0);
00126 }
00127 else{
00128 Vnm_print(1,"Getting values...\n");
00129 Vnm_print(1,"Displayed and written to output file as x,y,z,value\n");
00130 }
00131 while(scanNum != EOF){
00132
00133
00134
00135
00136
00137 if(Vgrid_value(grid, pt, &val)){
00138 Vnm_print(1,"%e,%e,%e,%e\n",pt[0],pt[1],pt[2],val);
00139
00140
00141
00142
00143 fprintf(outputFileStream,"%e,%e,%e,%e\n",pt[0],pt[1],pt[2],val);
00144 }
00145 else{
00146 Vnm_print(1,"%e,%e,%e,%s\n",pt[0],pt[1],pt[2],"NaN");
00147
00148
00149
00150
00151 fprintf(outputFileStream,"%e,%e,%e,%s\n",pt[0],pt[1],pt[2],"NaN");
00152 }
00153
00154
00155
00156
00157 scanNum = fscanf(inputFileStream,"%lg%*c%lg%*c%lg",&pt[0],&pt[1],&pt[2]);
00158 }
00159
00160
00161
00162
00163 if(fclose(inputFileStream) == EOF){
00164 Vnm_print(2,"Error closing input file: %s\n",inputFileName);
00165 exit(1);
00166 }
00167
00168
00169
00170
00171 if(fclose(outputFileStream) == EOF){
00172 Vnm_print(2,"Error closing output file: %s\n",outputFileName);
00173 exit(1);
00174 }
00175
00176 exit(0);
00177 }
00178