about summary refs log tree commit diff
path: root/sourcecodes/k-best/src/score_nets.c
diff options
context:
space:
mode:
authorziejd22017-09-14 15:39:41 -0500
committerziejd22017-09-14 15:57:50 -0500
commitc4f926438dcb8abe805e910399940f79ff643c4b (patch)
tree3146d05ada5cf4b48d9bdd16c1baa498e8df7192 /sourcecodes/k-best/src/score_nets.c
parent57ebf49403b75dcf8482d174b59f7fd2a961d98e (diff)
downloadBNW-c4f926438dcb8abe805e910399940f79ff643c4b.tar.gz
Add files via upload
Diffstat (limited to 'sourcecodes/k-best/src/score_nets.c')
-rw-r--r--sourcecodes/k-best/src/score_nets.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/sourcecodes/k-best/src/score_nets.c b/sourcecodes/k-best/src/score_nets.c
new file mode 100644
index 00000000..44ab3a27
--- /dev/null
+++ b/sourcecodes/k-best/src/score_nets.c
@@ -0,0 +1,54 @@
+#include "cfg.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "files.h"
+#include "varpar.h"
+
+score_t score_net(char* netfile, char* dirprefix, int nof_vars, FILE** fins){
+  score_t score = 0.0;
+
+  int v;
+  varset_t varset;
+  FILE* netf = strcmp(netfile,"-") ? fopen(netfile, "r") : stdin;
+  for(v=0; 1 == fscanf(netf, "%u", &varset); ++v){
+    score_t vscore;
+    fseek(fins[v], varset2parset(v, varset)*sizeof(score_t), SEEK_SET);
+    fread(&vscore, sizeof(score_t), 1, fins[v]);
+    rewind(fins[v]);
+    score += vscore;
+  }
+  fclose(netf);
+  return score;
+}
+
+void score_nets(char* netfiles, char* dirprefix){
+  char netfile[1024];
+  FILE* netfs = strcmp(netfiles,"-") ? fopen(netfiles, "r") : stdin;
+  int nof_vars = 0;
+  FILE** fins = NULL; 
+  while(EOF != fscanf(netfs, "%s", netfile)){
+    if (0 == nof_vars){
+      nof_vars = nof_lines(netfile);
+      fins = open_files(nof_vars, dirprefix,"","r");
+    }
+    printf("%.3f\n", score_net(netfile, dirprefix, nof_vars, fins));
+  }
+  free_files(nof_vars,fins);
+  fclose(netfs);
+}
+
+int main(int argc, char* argv[])
+{
+
+  if (argc!=3) {
+    fprintf(stderr, "Usage: score_nets netfiles dirname\n");
+    return 1;
+  }
+
+  score_nets(argv[1], argv[2]);
+
+  return 0;
+}