[go: up one dir, main page]

Menu

[r169]: / src / C2R.cc  Maximize  Restore  History

Download this file

126 lines (103 with data), 2.8 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <assert.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include "parse_command_opts.h"
#include "agf_lib.h"
using namespace std;
using namespace libagf;
using namespace libpetey;
int main(int argc, char **argv) {
FILE *fs;
real_a *con;
cls_ta *cls;
nel_ta n1, n2;
char *agfbase;
char *rfile;
char *confile;
char *clsfile;
nel_ta n;
dim_ta nvar;
real_a *r;
real_a r0;
void *optarg[10];
int flag[10];
optarg[0]=&r0;
argc=parse_command_opts(argc, argv, "r", "%g", optarg, flag, 1);
if (argc < 3) {
printf("Converts classes and confidence ratings into a \n");
printf("a difference in conditional probabilities:\n");
printf(" R = 2*C*(c - 1); (C = |R|)\n\n");
printf("usage: C2R basename outfile\n\n");
printf(" where:\n");
printf("basename = base name of binary files:\n");
printf(" .cls for classes, .con for confidence ratings\n");
printf("outfile = name of output file\n");
printf("\n");
printf("-r r0 = reverse the operation. Must supply threshold\n");
exit(INSUFFICIENT_COMMAND_ARGS);
}
if (flag[0]) {
rfile=argv[1];
agfbase=argv[2];
} else {
agfbase=argv[1];
rfile=argv[2];
}
//generate the agf class file names:
clsfile=new char[strlen(agfbase)+5];
strcpy(clsfile, agfbase);
strcat(clsfile, ".cls");
confile=new char[strlen(agfbase)+5];
strcpy(confile, agfbase);
strcat(confile, ".con");
//printf("%s; %s\n", confile, clsfile);
if (flag[0]) {
r=read_datfile(rfile, n1);
cls=new cls_ta[n1];
con=new real_a[n1];
for (nel_ta i=0; i<n1; i++) {
if (r[i]<r0) {
cls[i]=0;
con[i]=(r0-r[i])/(1+r0);
} else {
cls[i]=1;
con[i]=(r[i]-r0)/(1-r0);
}
//printf("%g %d %g\n", r[i], cls[i], con[i]);
}
fs=fopen(clsfile, "w");
fwrite(cls, sizeof(cls_ta), n1, fs);
fclose(fs);
fs=fopen(confile, "w");
fwrite(con, sizeof(real_a), n1, fs);
fclose(fs);
} else {
cls=read_clsfile(clsfile, n1);
con=read_datfile(confile, n2);
if (n1!=n2) {
fprintf(stderr, "C2R: sample count mismatch: %d elements in %s\n",
n1, clsfile);
fprintf(stderr, " %d elements in %s\n",
n2, confile);
exit(SAMPLE_COUNT_MISMATCH);
}
r=new real_a[n1];
for (nel_ta i=0; i<n1; i++) {
if (cls[i] < 1) {
r[i]=-con[i];
} else {
r[i]=con[i];
}
//printf("%f\n", r[i]);
}
//printf("ii\n");
fs=fopen(rfile, "w");
fwrite(r, sizeof(real_a), n1, fs);
fclose(fs);
}
//printf("iii\n");
delete [] con;
delete [] cls;
delete [] r;
}