/* * procedure map_sign() for putting history and description to maps (csf) * history is fixed for a session; description depends on the map contents */ void map_sign(GRIDMAP *m, const char *what) { char *pwd = NULL, *user = NULL, *timestring = NULL, *fname = NULL; time_t tm; if ((user = getenv("LOGNAME")) == NULL) user = ""; if ((pwd = getenv("PWD")) == NULL) pwd = ""; if ((fname = command_file_name) == NULL) fname = ""; tm = time(&tm); if ((timestring = asctime(localtime(&tm))) == NULL) timestring = ""; m->history = (char *) emalloc(1024 * sizeof(char)); #ifdef HAVE_SNPRINTF snprintf #else sprintf #endif (m->history, #ifdef HAVE_SNPRINTF 1024, #endif "%s%s\n%s %s %s\n%s%s\n%s %s\n%s %s\n%s %s (seed %lu)\n", *user ? "creator: " : "", user, "program: ", argv0, VERSION, *pwd ? "path: " : "", pwd, "command file: ", fname, "method used: ", method_string(get_method()), "date: ", timestring, get_seed()); if (what == NULL) { /* paranoia */ m->description = (char *) emalloc(sizeof(char)); m->description[0] = '\0'; } else { m->description = (char *) emalloc((strlen(what) + 1) * sizeof(char)); #ifdef HAVE_SNPRINTF snprintf(m->description, strlen(what) + 1, "%s\n", what); #else sprintf(m->description, "%s\n", what); #endif } }
char* InliningDatabase::compute_file_name(LookupKey* outer, LookupKey* inner, bool create_directories) { char* name = NEW_RESOURCE_ARRAY(char, 1024); // Outer key char* outer_klass_name = mangle_name(klass_string(outer->klass())); char* outer_selector_name = mangle_name(selector_string(outer->selector())); if (create_directories) { if (!check_directory(directory())) return NULL; } strcpy(name, directory()); strcat(name, "\\"); strcat(name, outer_klass_name); if (create_directories) { if (!check_directory(name)) return NULL; } strcat(name, "\\"); strcat(name, outer_selector_name); if (inner) { // Inner key char* inner_klass_name = mangle_name(klass_string(inner->klass())); char* inner_method_name = mangle_name(method_string(inner->method())); if (create_directories) { if (!check_directory(name)) return NULL; } strcat(name, "\\"); strcat(name, inner_klass_name); if (create_directories) { if (!check_directory(name)) return NULL; } strcat(name, "\\"); strcat(name, inner_method_name); } strcat(name, ".txt"); return name; }
void report_xvalid(double *xdata, double *xpred, double *xdiff, double *xstd, double *xzscore, int ndata, int var) { /* * DATE: Tue Oct 6 11:55:44 MET 1992 * BY : Edzer J. Pebesma * PURPOSE: report summary statistics of these five lists * SIDE EFFECTS: none */ int i, nXdata = 0, nXpred = 0, nXdiff = 0, n_std = 0, nZscore = 0, compare(const double *a, const double *b); double min[5], max[5], p25[5], p75[5], p50[5], mean[5], std[5]; double corr = 0.0; set_mv_double(&corr); calc_r(xdata, xpred, ndata, &corr); for (i = 0; i < 5; i ++) { set_mv_double(&(min[i])); set_mv_double(&(p25[i])); set_mv_double(&(p50[i])); set_mv_double(&(p75[i])); set_mv_double(&(max[i])); set_mv_double(&(mean[i])); set_mv_double(&(std[i])); } /* select not missing values, put mv's at the end: */ /* sorting arrays: */ qsort(xdata, (size_t) ndata, sizeof(double), (int (*)(const void *,const void *)) compare); while (!is_mv_double(&(xdata[nXdata])) && nXdata < ndata) nXdata++; qsort(xpred, (size_t) ndata, sizeof(double), (int (*)(const void *,const void *)) compare); while (!is_mv_double(&(xpred[nXpred])) && nXpred < ndata) nXpred++; qsort(xdiff, (size_t) ndata, sizeof(double), (int (*)(const void *,const void *)) compare); while (!is_mv_double(&(xdiff[nXdiff])) && nXdiff < ndata) nXdiff++; if (var) { /* do everything for xstd and xzscore */ qsort(xstd, (size_t) ndata, sizeof(double), (int (*)(const void *,const void *)) compare); while ((! is_mv_double(&(xstd[n_std]))) && (n_std < ndata)) n_std++; qsort(xzscore, (size_t) ndata, sizeof(double), (int (*)(const void *,const void *)) compare); while ((! is_mv_double(&(xzscore[nZscore]))) && (nZscore < ndata)) nZscore++; } /* calculate statistics: */ if (nXdata) { min[0]=xdata[0]; max[0]=xdata[nXdata-1]; mean[0] = sample_mean(xdata, nXdata); if (nXdata > 1) { p25[0]=est_quant(xdata, 0.25, nXdata); p50[0]=est_quant(xdata, 0.5, nXdata); p75[0]=est_quant(xdata, 0.75, nXdata); std[0] = sample_std(xdata, mean[0], nXdata); } } if (nXpred) { min[1]=xpred[0]; max[1]=xpred[nXpred-1]; mean[1] = sample_mean(xpred, nXpred); if (nXpred > 1) { p25[1]=est_quant(xpred, 0.25, nXpred); p50[1]=est_quant(xpred, 0.5, nXpred); p75[1]=est_quant(xpred, 0.75, nXpred); std[1] = sample_std(xpred, mean[1], nXpred); } } if (nXdiff) { min[2]=xdiff[0]; max[2]=xdiff[nXdiff-1]; mean[2] = sample_mean(xdiff, nXdiff); if (nXdiff > 1) { p25[2]=est_quant(xdiff, 0.25, nXdiff); p50[2]=est_quant(xdiff, 0.5, nXdiff); p75[2]=est_quant(xdiff, 0.75, nXdiff); std[2] = sample_std(xdiff, mean[2], nXdiff); } } if (var) { if (n_std) { min[3]=xstd[0]; max[3]=xstd[n_std-1]; mean[3] = sample_mean(xstd, n_std); if (n_std > 1) { p25[3]=est_quant(xstd, 0.25, n_std); p50[3]=est_quant(xstd, 0.5, n_std); p75[3]=est_quant(xstd, 0.75, n_std); std[3] = sample_std(xstd, mean[3], n_std); } } if (nZscore) { min[4]=xzscore[0]; max[4]=xzscore[nZscore-1]; mean[4] = sample_mean(xzscore, nZscore); if (nZscore > 1) { p25[4]=est_quant(xzscore, 0.25, nZscore); p50[4]=est_quant(xzscore, 0.5, nZscore); p75[4]=est_quant(xzscore, 0.75, nZscore); std[4] = sample_std(xzscore, mean[4], nZscore); } } } /* output: */ printlog("corr(Obs, Pred): %s [%s]\n\n", my_dtoa("%6.4g", &corr), method_string(get_method())); printlog(" observed predicted pred.-obs. pred.std. zscore\n"); printlog("======================================================================\n"); printlog("%-10s%12s", "minimum", my_dtoa("%6.4g", &(min[0]))); printlog("%12s", my_dtoa("%6.4g", &(min[1]))); printlog("%12s", my_dtoa("%6.4g", &(min[2]))); printlog("%12s", my_dtoa("%6.4g", &(min[3]))); printlog("%12s\n", my_dtoa("%6.4g", &(min[4]))); printlog("%-10s%12s", "1st q.", my_dtoa("%6.4g", &(p25[0]))); printlog("%12s", my_dtoa("%6.4g", &(p25[1]))); printlog("%12s", my_dtoa("%6.4g", &(p25[2]))); printlog("%12s", my_dtoa("%6.4g", &(p25[3]))); printlog("%12s\n", my_dtoa("%6.4g", &(p25[4]))); printlog("%-10s%12s", "median", my_dtoa("%6.4g", &(p50[0]))); printlog("%12s", my_dtoa("%6.4g", &(p50[1]))); printlog("%12s", my_dtoa("%6.4g", &(p50[2]))); printlog("%12s", my_dtoa("%6.4g", &(p50[3]))); printlog("%12s\n", my_dtoa("%6.4g", &(p50[4]))); printlog("%-10s%12s", "3rd q.", my_dtoa("%6.4g", &(p75[0]))); printlog("%12s", my_dtoa("%6.4g", &(p75[1]))); printlog("%12s", my_dtoa("%6.4g", &(p75[2]))); printlog("%12s", my_dtoa("%6.4g", &(p75[3]))); printlog("%12s\n", my_dtoa("%6.4g", &(p75[4]))); printlog("%-10s%12s", "maximum", my_dtoa("%6.4g", &(max[0]))); printlog("%12s", my_dtoa("%6.4g", &(max[1]))); printlog("%12s", my_dtoa("%6.4g", &(max[2]))); printlog("%12s", my_dtoa("%6.4g", &(max[3]))); printlog("%12s\n\n", my_dtoa("%6.4g", &(max[4]))); printlog("%-10s%12d%12d%12d%12d%12d\n", "n", nXdata, nXpred, nXdiff, n_std, nZscore); printlog("%-10s%12s", "mean", my_dtoa("%6.4g", &(mean[0]))); printlog("%12s", my_dtoa("%6.4g", &(mean[1]))); printlog("%12s", my_dtoa("%6.4g", &(mean[2]))); printlog("%12s", my_dtoa("%6.4g", &(mean[3]))); printlog("%12s\n", my_dtoa("%6.4g", &(mean[4]))); printlog("%-10s%12s", "std.dev.", my_dtoa("%6.4g", &(std[0]))); printlog("%12s", my_dtoa("%6.4g", &(std[1]))); printlog("%12s", my_dtoa("%6.4g", &(std[2]))); printlog("%12s", my_dtoa("%6.4g", &(std[3]))); printlog("%12s\n", my_dtoa("%6.4g", &(std[4]))); return; }
int main(int argc, char *argv[]) { #else int gstat_main(int argc, char *argv[]) { #endif DATA **data = NULL, *valdata = NULL; /* * initialise some global variables: */ atexit(close_gstat_log_file); init_userio(1); init_global_variables(); argv0 = argv[0]; /* * register command line arguments on command_line: */ command_line = store_argv(argc, argv); parse_gstatrc(); /* * INPUT: command line options; */ parse_options(argc, argv); /* exits on -e options */ /* * start with program heading: */ printlog("%s: %s version %s\n", GSTAT_NAME, GSTAT_OS, VERSION); printlog("%s\n", GSTAT_CR); gstat_start(); /* * INPUT: Parse command files: */ if (optind == argc) { /* there's no command file name left */ if (get_method() != UIF) { /* -i or -m command line option */ /* no arguments */ printlog("Updates, manuals and source code: %s\n", GSTAT_HOME); printlog("%s\n", USAGE); ErrMsg(ER_NOCMD, ""); } else { start_ui(); exit(0); } } else { /* we have a command file to be read */ for ( ; optind < argc; optind++) { command_file_name = argv[optind]; parse_file(command_file_name); if (logfile_name != NULL) set_gstat_log_file(efopen(logfile_name, "w")); /* * get global variables locally: */ data = get_gstat_data(); valdata = get_dataval(); set_seed(gl_seed); /* * check variable settings and next * INPUT: read data values from file: */ read_all_data(data, valdata, get_n_vars()); if (get_method() == NSP) /* Still no answer to this: choose default */ set_method(get_default_method()); set_mode(); check_global_variables(); setup_meschach_error_handler(); if (DEBUG_DUMP) dump_all(); if (get_method() != NSP) printlog("[%s]\n", method_string(get_method())); if (check_only) set_method(NSP); /* * start calculations && OUTPUT routines: */ switch (get_method()) { case UIF: start_ui(); break; case NSP: break; case COV: case SEM: do_variogram(get_n_vars(), get_method()); break; case POLY: setup_poly_method(); /*FALLTHROUGH*/ default: if (gl_xvalid) /* validation/cross validation */ cross_valid(data); else predict_all(data); /* or prediction: */ break; } /* switch get_method() */ remove_all(); /* free all data etc. */ init_global_variables(); /* re-init for next round */ } } if (DEBUG_DUMP) atexit(print_file_record); if (get_method() != UIF) elapsed(); /* * file closing & data freeing time: */ if (plotfile != NULL) efclose(plotfile); exit(0); } /* end of main() */