diff options
author | Thomas White <taw@physics.org> | 2020-11-20 17:34:47 +0100 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2020-11-20 17:36:49 +0100 |
commit | e9087293e5b7b92e64cb9cb7636e21f52611ac7c (patch) | |
tree | 8450d81e5defccaa3e49e6ba5ef3710134f93d35 /src/gui_project.c | |
parent | c570bbe16cb68cfb340e4ce3bc8c66831a08a306 (diff) |
GUI: Add stream output options including metadata to copy
Diffstat (limited to 'src/gui_project.c')
-rw-r--r-- | src/gui_project.c | 55 |
1 files changed, 54 insertions, 1 deletions
diff --git a/src/gui_project.c b/src/gui_project.c index 5641b0c4..f0d42ea6 100644 --- a/src/gui_project.c +++ b/src/gui_project.c @@ -297,6 +297,38 @@ static void parse_integration_opt(const char *key, const char *val, } +static void add_metadata_to_copy(struct index_params *ip, + const char *header) +{ + char **n; + + n = realloc(ip->metadata_to_copy, + (ip->n_metadata+1)*sizeof(char *)); + if ( n == NULL ) return; + ip->metadata_to_copy = n; + + ip->metadata_to_copy[ip->n_metadata++] = strdup(header); +} + + +static void parse_stream_opt(const char *key, const char *val, + struct index_params *ip) +{ + if ( strcmp(key, "stream.exclude_blanks") == 0 ) { + ip->exclude_nonhits = parse_int(val); + } + if ( strcmp(key, "stream.exclude_peaks") == 0 ) { + ip->exclude_peaks = parse_int(val); + } + if ( strcmp(key, "stream.exclude_refls") == 0 ) { + ip->exclude_refls = parse_int(val); + } + if ( strcmp(key, "stream.metadata") == 0 ) { + add_metadata_to_copy(ip, val); + } +} + + static void parse_merging_opt(const char *key, const char *val, struct crystfelproject *proj) { @@ -395,7 +427,9 @@ static void handle_var(const char *key, const char *val, proj->data_top_folder = strdup(val); } - if ( strcmp(key, "stream") == 0 ) { + if ( strncmp(key, "stream.", 7) == 0 ) { + parse_stream_opt(key, val, &proj->indexing_params); + } else if ( strcmp(key, "stream") == 0 ) { proj->stream_filename = strdup(val); } @@ -740,6 +774,20 @@ int save_project(struct crystfelproject *proj) fprintf(fh, "integration.ir_out %f\n", proj->indexing_params.ir_out); + fprintf(fh, "stream.exclude_blanks %i\n", + proj->indexing_params.exclude_nonhits); + fprintf(fh, "stream.exclude_peaks %i\n", + proj->indexing_params.exclude_peaks); + fprintf(fh, "stream.exclude_refls %i\n", + proj->indexing_params.exclude_refls); + if ( proj->indexing_params.metadata_to_copy != NULL ) { + int i; + for ( i=0; i<proj->indexing_params.n_metadata; i++ ) { + fprintf(fh, "stream.metadata %s\n", + proj->indexing_params.metadata_to_copy[i]); + } + } + fprintf(fh, "merging.model %s\n", proj->merging_params.model); fprintf(fh, "merging.symmetry %s\n", @@ -888,6 +936,11 @@ void default_project(struct crystfelproject *proj) proj->indexing_params.ir_inn = 4.0; proj->indexing_params.ir_mid = 5.0; proj->indexing_params.ir_out = 7.0; + proj->indexing_params.exclude_nonhits = 0; + proj->indexing_params.exclude_peaks = 0; + proj->indexing_params.exclude_refls = 0; + proj->indexing_params.metadata_to_copy = NULL; + proj->indexing_params.n_metadata = 0; proj->merging_params.model = strdup("unity"); proj->merging_params.symmetry = strdup("1"); |