diff options
| author | ziejd2 | 2017-09-14 15:39:41 -0500 |
|---|---|---|
| committer | ziejd2 | 2017-09-14 15:57:50 -0500 |
| commit | c4f926438dcb8abe805e910399940f79ff643c4b (patch) | |
| tree | 3146d05ada5cf4b48d9bdd16c1baa498e8df7192 /sourcecodes/k-best/src/score_nets.c | |
| parent | 57ebf49403b75dcf8482d174b59f7fd2a961d98e (diff) | |
| download | BNW-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.c | 54 |
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; +} |
