aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2023-05-03 11:43:00 +0200
committerThomas White <taw@physics.org>2023-05-05 10:59:45 +0200
commit309b65d75993abbc9804b392117baea3a1101e3a (patch)
tree361ca8f1cc935d621e0d3f1a16c6426525490b24
parent5c1373e53709bd59403716b497c8c6c94b9143c4 (diff)
Move peak search parameters into separate structure
This change takes the peak parameters structure from gui_project.h, moves it to libcrystfel/peaks.h and uses it everywhere. It should slightly reduce the hassle involved with adding a new parameter. Four parameters (noisefilter, median_filter, check_hdf5_snr, use_saturated) were previously not part of the GUI project structure. Now they are, via the new structure. However, they are not yet exposed via the GUI and just take their default values.
-rw-r--r--libcrystfel/src/peaks.h32
-rw-r--r--src/gui_project.c4
-rw-r--r--src/gui_project.h21
-rw-r--r--src/indexamajig.c150
-rw-r--r--src/process_image.c74
-rw-r--r--src/process_image.h24
6 files changed, 150 insertions, 155 deletions
diff --git a/libcrystfel/src/peaks.h b/libcrystfel/src/peaks.h
index d6d5c1f9..89634269 100644
--- a/libcrystfel/src/peaks.h
+++ b/libcrystfel/src/peaks.h
@@ -58,6 +58,38 @@ enum peak_search_method {
PEAK_ERROR
};
+
+struct peak_params {
+
+ enum peak_search_method method;
+
+ float threshold; /* zaef, pf8 */
+ float min_sq_gradient; /* zaef */
+ float min_snr; /* zaef, pf8 */
+ int min_pix_count; /* pf8 */
+ int max_pix_count; /* pf8 */
+ int local_bg_radius; /* pf8 */
+ int min_res; /* pf8 */
+ int max_res; /* pf8 */
+ int peakfinder8_fast; /* pf8 */
+
+ float min_snr_biggest_pix; /* pf9 */
+ float min_snr_peak_pix; /* pf9 */
+ float min_sig; /* pf9 */
+ float min_peak_over_neighbour; /* pf9 */
+
+ float pk_inn;
+ float pk_mid;
+ float pk_out;
+ int half_pixel_shift; /* cxi, hdf5 */
+ int revalidate;
+ int noisefilter;
+ int median_filter;
+ int check_hdf5_snr;
+ int use_saturated;
+};
+
+
extern const char *str_peaksearch(enum peak_search_method meth);
extern enum peak_search_method parse_peaksearch(const char *arg);
diff --git a/src/gui_project.c b/src/gui_project.c
index 11f27059..32d6473c 100644
--- a/src/gui_project.c
+++ b/src/gui_project.c
@@ -1259,6 +1259,10 @@ int default_project(struct crystfelproject *proj)
proj->peak_search_params.pk_out = 7.0;
proj->peak_search_params.half_pixel_shift = 1;
proj->peak_search_params.revalidate = 1;
+ proj->peak_search_params.noisefilter = 0;
+ proj->peak_search_params.median_filter = 0;
+ proj->peak_search_params.check_hdf5_snr = 0;
+ proj->peak_search_params.use_saturated = 1;
proj->indexing_params.cell_file = NULL;
proj->indexing_params.indexing_methods = NULL;
diff --git a/src/gui_project.h b/src/gui_project.h
index bbecd0ba..318f9453 100644
--- a/src/gui_project.h
+++ b/src/gui_project.h
@@ -46,27 +46,6 @@ enum match_type_id
MATCH_CBFGZ,
};
-struct peak_params {
- enum peak_search_method method;
- float threshold; /* zaef, pf8 */
- float min_sq_gradient; /* zaef */
- float min_snr; /* zaef, pf8 */
- int min_pix_count; /* pf8 */
- int max_pix_count; /* pf8 */
- int local_bg_radius; /* pf8 */
- int min_res; /* pf8 */
- int max_res; /* pf8 */
- float min_snr_biggest_pix; /* pf9 */
- float min_snr_peak_pix; /* pf9 */
- float min_sig; /* pf9 */
- float min_peak_over_neighbour; /* pf9 */
- float pk_inn;
- float pk_mid;
- float pk_out;
- int half_pixel_shift; /* cxi, hdf5 */
- int revalidate;
-};
-
struct index_params {
/* Indexing */
diff --git a/src/indexamajig.c b/src/indexamajig.c
index fa153bf5..bd89db32 100644
--- a/src/indexamajig.c
+++ b/src/indexamajig.c
@@ -206,27 +206,29 @@ static void write_harvest_file(struct index_args *args,
fprintf(fh, " },\n");
fprintf(fh, " \"peaksearch\": {\n");
- write_str(fh, 1, "method", str_peaksearch(args->peaks));
- write_json_radii(fh, "radii", args->pk_inn, args->pk_mid, args->pk_out);
- write_bool(fh, 1, "noise_filter", args->noisefilter);
- write_int(fh, 1, "median_filter", args->median_filter);
- write_float(fh, 1, "threshold_adu", args->threshold);
- write_float(fh, 1, "min_squared_gradient_adu2", args->min_sq_gradient);
- write_float(fh, 1, "min_snr", args->min_snr);
- write_bool(fh, 1, "check_hdf5_snr", args->check_hdf5_snr);
- write_bool(fh, 1, "peakfinder8_fast", args->peakfinder8_fast);
- write_bool(fh, 1, "half_pixel_shift", args->half_pixel_shift);
- write_int(fh, 1, "min_res_px", args->min_res);
- write_int(fh, 1, "max_res_px", args->max_res);
- write_int(fh, 1, "min_pixel_count", args->min_pix_count);
- write_int(fh, 1, "max_pixel_count", args->max_pix_count);
- write_int(fh, 1, "local_bg_radius_px", args->local_bg_radius);
- write_bool(fh, 1, "use_saturated", args->use_saturated);
- write_bool(fh, 1, "revalidate_hdf5", 1-args->no_revalidate);
- write_float(fh, 1, "min_snr_of_biggest_pixel", args->min_snr_biggest_pix);
- write_float(fh, 1, "min_snr_of_peak_pixel", args->min_snr_peak_pix);
- write_float(fh, 1, "min_sig_adu", args->min_sig);
- write_float(fh, 0, "min_peak_over_neighbour_adu", args->min_peak_over_neighbour);
+ write_str(fh, 1, "method", str_peaksearch(args->peak_search.method));
+ write_json_radii(fh, "radii", args->peak_search.pk_inn,
+ args->peak_search.pk_mid,
+ args->peak_search.pk_out);
+ write_bool(fh, 1, "noise_filter", args->peak_search.noisefilter);
+ write_int(fh, 1, "median_filter", args->peak_search.median_filter);
+ write_float(fh, 1, "threshold_adu", args->peak_search.threshold);
+ write_float(fh, 1, "min_squared_gradient_adu2", args->peak_search.min_sq_gradient);
+ write_float(fh, 1, "min_snr", args->peak_search.min_snr);
+ write_bool(fh, 1, "check_hdf5_snr", args->peak_search.check_hdf5_snr);
+ write_bool(fh, 1, "peakfinder8_fast", args->peak_search.peakfinder8_fast);
+ write_bool(fh, 1, "half_pixel_shift", args->peak_search.half_pixel_shift);
+ write_int(fh, 1, "min_res_px", args->peak_search.min_res);
+ write_int(fh, 1, "max_res_px", args->peak_search.max_res);
+ write_int(fh, 1, "min_pixel_count", args->peak_search.min_pix_count);
+ write_int(fh, 1, "max_pixel_count", args->peak_search.max_pix_count);
+ write_int(fh, 1, "local_bg_radius_px", args->peak_search.local_bg_radius);
+ write_bool(fh, 1, "use_saturated", args->peak_search.use_saturated);
+ write_bool(fh, 1, "revalidate_hdf5", args->peak_search.revalidate);
+ write_float(fh, 1, "min_snr_of_biggest_pixel", args->peak_search.min_snr_biggest_pix);
+ write_float(fh, 1, "min_snr_of_peak_pixel", args->peak_search.min_snr_peak_pix);
+ write_float(fh, 1, "min_sig_adu", args->peak_search.min_sig);
+ write_float(fh, 0, "min_peak_over_neighbour_adu", args->peak_search.min_peak_over_neighbour);
fprintf(fh, " },\n");
fprintf(fh, " \"hitfinding\": {\n");
@@ -453,21 +455,21 @@ static error_t parse_arg(int key, char *arg, struct argp_state *state)
/* ---------- Peak search ---------- */
case 't' :
- args->iargs.threshold = strtof(arg, NULL);
+ args->iargs.peak_search.threshold = strtof(arg, NULL);
break;
case 301 :
- args->iargs.peaks = parse_peaksearch(arg);
- if ( args->iargs.peaks == PEAK_ERROR ) {
+ args->iargs.peak_search.method = parse_peaksearch(arg);
+ if ( args->iargs.peak_search.method == PEAK_ERROR ) {
ERROR("Unrecognised peak detection method '%s'\n", arg);
return EINVAL;
}
break;
case 302 :
- r = sscanf(arg, "%f,%f,%f", &args->iargs.pk_inn,
- &args->iargs.pk_mid, &args->iargs.pk_out);
- if ( (r != 3) || (args->iargs.pk_inn < 0) ) {
+ r = sscanf(arg, "%f,%f,%f", &args->iargs.peak_search.pk_inn,
+ &args->iargs.peak_search.pk_mid, &args->iargs.peak_search.pk_out);
+ if ( (r != 3) || (args->iargs.peak_search.pk_inn < 0) ) {
ERROR("Invalid parameters for '--peak-radius'\n");
return EINVAL;
}
@@ -487,7 +489,7 @@ static error_t parse_arg(int key, char *arg, struct argp_state *state)
break;
case 305 :
- if (sscanf(arg, "%d", &args->iargs.median_filter) != 1)
+ if (sscanf(arg, "%d", &args->iargs.peak_search.median_filter) != 1)
{
ERROR("Invalid value for --median-filter\n");
return EINVAL;
@@ -495,11 +497,11 @@ static error_t parse_arg(int key, char *arg, struct argp_state *state)
break;
case 306 :
- args->iargs.noisefilter = 1;
+ args->iargs.peak_search.noisefilter = 1;
break;
case 307 :
- if (sscanf(arg, "%f", &args->iargs.min_sq_gradient) != 1)
+ if (sscanf(arg, "%f", &args->iargs.peak_search.min_sq_gradient) != 1)
{
ERROR("Invalid value for --min-squared-gradient\n");
return EINVAL;
@@ -507,7 +509,7 @@ static error_t parse_arg(int key, char *arg, struct argp_state *state)
break;
case 308 :
- if (sscanf(arg, "%f", &args->iargs.min_snr) != 1)
+ if (sscanf(arg, "%f", &args->iargs.peak_search.min_snr) != 1)
{
ERROR("Invalid value for --min-snr\n");
return EINVAL;
@@ -515,7 +517,7 @@ static error_t parse_arg(int key, char *arg, struct argp_state *state)
break;
case 309 :
- if (sscanf(arg, "%d", &args->iargs.min_pix_count) != 1)
+ if (sscanf(arg, "%d", &args->iargs.peak_search.min_pix_count) != 1)
{
ERROR("Invalid value for --min-pix-count\n");
return EINVAL;
@@ -523,7 +525,7 @@ static error_t parse_arg(int key, char *arg, struct argp_state *state)
break;
case 310 :
- if (sscanf(arg, "%d", &args->iargs.max_pix_count) != 1)
+ if (sscanf(arg, "%d", &args->iargs.peak_search.max_pix_count) != 1)
{
ERROR("Invalid value for --max-pix-count\n");
return EINVAL;
@@ -531,7 +533,7 @@ static error_t parse_arg(int key, char *arg, struct argp_state *state)
break;
case 311 :
- if (sscanf(arg, "%d", &args->iargs.local_bg_radius) != 1)
+ if (sscanf(arg, "%d", &args->iargs.peak_search.local_bg_radius) != 1)
{
ERROR("Invalid value for --local-bg-radius\n");
return EINVAL;
@@ -539,7 +541,7 @@ static error_t parse_arg(int key, char *arg, struct argp_state *state)
break;
case 312 :
- if (sscanf(arg, "%d", &args->iargs.min_res) != 1)
+ if (sscanf(arg, "%d", &args->iargs.peak_search.min_res) != 1)
{
ERROR("Invalid value for --min-res\n");
return EINVAL;
@@ -547,7 +549,7 @@ static error_t parse_arg(int key, char *arg, struct argp_state *state)
break;
case 313 :
- if (sscanf(arg, "%d", &args->iargs.max_res) != 1)
+ if (sscanf(arg, "%d", &args->iargs.peak_search.max_res) != 1)
{
ERROR("Invalid value for --max-res\n");
return EINVAL;
@@ -555,7 +557,7 @@ static error_t parse_arg(int key, char *arg, struct argp_state *state)
break;
case 314 :
- if (sscanf(arg, "%f", &args->iargs.min_snr_biggest_pix) != 1)
+ if (sscanf(arg, "%f", &args->iargs.peak_search.min_snr_biggest_pix) != 1)
{
ERROR("Invalid value for --max-snr-biggest-pix\n");
return EINVAL;
@@ -563,7 +565,7 @@ static error_t parse_arg(int key, char *arg, struct argp_state *state)
break;
case 315 :
- if (sscanf(arg, "%f", &args->iargs.min_snr_peak_pix) != 1)
+ if (sscanf(arg, "%f", &args->iargs.peak_search.min_snr_peak_pix) != 1)
{
ERROR("Invalid value for --max-snr-peak-pix\n");
return EINVAL;
@@ -571,7 +573,7 @@ static error_t parse_arg(int key, char *arg, struct argp_state *state)
break;
case 316 :
- if (sscanf(arg, "%f", &args->iargs.min_sig) != 1)
+ if (sscanf(arg, "%f", &args->iargs.peak_search.min_sig) != 1)
{
ERROR("Invalid value for --max-ssig\n");
return EINVAL;
@@ -579,7 +581,7 @@ static error_t parse_arg(int key, char *arg, struct argp_state *state)
break;
case 317 :
- if (sscanf(arg, "%f", &args->iargs.min_peak_over_neighbour) != 1)
+ if (sscanf(arg, "%f", &args->iargs.peak_search.min_peak_over_neighbour) != 1)
{
ERROR("Invalid value for --max-peak-over-neighbour\n");
return EINVAL;
@@ -587,23 +589,23 @@ static error_t parse_arg(int key, char *arg, struct argp_state *state)
break;
case 318 :
- args->iargs.use_saturated = 0;
+ args->iargs.peak_search.use_saturated = 0;
break;
case 319 :
- args->iargs.no_revalidate = 1;
+ args->iargs.peak_search.revalidate = 0;
break;
case 320 :
- args->iargs.half_pixel_shift = 0;
+ args->iargs.peak_search.half_pixel_shift = 0;
break;
case 321 :
- args->iargs.check_hdf5_snr = 1;
+ args->iargs.peak_search.check_hdf5_snr = 1;
break;
case 322:
- args->iargs.peakfinder8_fast = 1;
+ args->iargs.peak_search.peakfinder8_fast = 1;
break;
/* ---------- Indexing ---------- */
@@ -904,40 +906,40 @@ int main(int argc, char *argv[])
/* Defaults for process_image arguments */
args.iargs.cell = NULL;
- args.iargs.noisefilter = 0;
- args.iargs.median_filter = 0;
+ args.iargs.peak_search.noisefilter = 0;
+ args.iargs.peak_search.median_filter = 0;
args.iargs.tols[0] = 0.05; /* frac (not %) */
args.iargs.tols[1] = 0.05; /* frac (not %) */
args.iargs.tols[2] = 0.05; /* frac (not %) */
args.iargs.tols[3] = deg2rad(1.5); /* radians */
args.iargs.tols[4] = deg2rad(1.5); /* radians */
args.iargs.tols[5] = deg2rad(1.5); /* radians */
- args.iargs.threshold = 800.0;
- args.iargs.min_sq_gradient = 100000.0;
- args.iargs.min_snr = 5.0;
- args.iargs.min_pix_count = 2;
- args.iargs.max_pix_count = 200;
- args.iargs.min_res = 0;
- args.iargs.max_res = 1200;
- args.iargs.local_bg_radius = 3;
- args.iargs.min_snr_biggest_pix = 7.0; /* peak finder 9 */
- args.iargs.min_snr_peak_pix = 6.0;
- args.iargs.min_sig = 11.0;
- args.iargs.min_peak_over_neighbour = -INFINITY;
- args.iargs.check_hdf5_snr = 0;
- args.iargs.peakfinder8_fast = 0;
+ args.iargs.peak_search.threshold = 800.0;
+ args.iargs.peak_search.min_sq_gradient = 100000.0;
+ args.iargs.peak_search.min_snr = 5.0;
+ args.iargs.peak_search.min_pix_count = 2;
+ args.iargs.peak_search.max_pix_count = 200;
+ args.iargs.peak_search.min_res = 0;
+ args.iargs.peak_search.max_res = 1200;
+ args.iargs.peak_search.local_bg_radius = 3;
+ args.iargs.peak_search.min_snr_biggest_pix = 7.0; /* peak finder 9 */
+ args.iargs.peak_search.min_snr_peak_pix = 6.0;
+ args.iargs.peak_search.min_sig = 11.0;
+ args.iargs.peak_search.min_peak_over_neighbour = -INFINITY;
+ args.iargs.peak_search.check_hdf5_snr = 0;
+ args.iargs.peak_search.peakfinder8_fast = 0;
args.iargs.pf_private = NULL;
args.iargs.dtempl = NULL;
- args.iargs.peaks = PEAK_ZAEF;
- args.iargs.half_pixel_shift = 1;
- args.iargs.pk_inn = -1.0;
- args.iargs.pk_mid = -1.0;
- args.iargs.pk_out = -1.0;
+ args.iargs.peak_search.method = PEAK_ZAEF;
+ args.iargs.peak_search.half_pixel_shift = 1;
+ args.iargs.peak_search.pk_inn = -1.0;
+ args.iargs.peak_search.pk_mid = -1.0;
+ args.iargs.peak_search.pk_out = -1.0;
args.iargs.ir_inn = -1.0;
args.iargs.ir_mid = -1.0;
args.iargs.ir_out = -1.0;
- args.iargs.use_saturated = 1;
- args.iargs.no_revalidate = 0;
+ args.iargs.peak_search.use_saturated = 1;
+ args.iargs.peak_search.revalidate = 1;
args.iargs.stream_flags = STREAM_PEAKS | STREAM_REFLECTIONS;
args.iargs.stream_nonhits = 1;
args.iargs.int_diag = INTDIAG_NONE;
@@ -1214,10 +1216,10 @@ int main(int argc, char *argv[])
}
/* If no peak radii were given, copy the integration radii */
- if ( args.iargs.pk_inn < 0.0 ) {
- args.iargs.pk_inn = args.iargs.ir_inn;
- args.iargs.pk_mid = args.iargs.ir_mid;
- args.iargs.pk_out = args.iargs.ir_out;
+ if ( args.iargs.peak_search.pk_inn < 0.0 ) {
+ args.iargs.peak_search.pk_inn = args.iargs.ir_inn;
+ args.iargs.peak_search.pk_mid = args.iargs.ir_mid;
+ args.iargs.peak_search.pk_out = args.iargs.ir_out;
}
/* Load unit cell (if given) */
@@ -1392,9 +1394,9 @@ int main(int argc, char *argv[])
struct pf8_private_data *pf8_data = NULL;
struct detgeom *detgeom = NULL;
- if ( args.iargs.peaks == PEAK_PEAKFINDER8 ) {
+ if ( args.iargs.peak_search.method == PEAK_PEAKFINDER8 ) {
detgeom = data_template_get_2d_detgeom_if_possible(args.iargs.dtempl);
- pf8_data = prepare_peakfinder8(detgeom, args.iargs.peakfinder8_fast);
+ pf8_data = prepare_peakfinder8(detgeom, args.iargs.peak_search.peakfinder8_fast);
args.iargs.pf_private = pf8_data;
}
diff --git a/src/process_image.c b/src/process_image.c
index d8ccca93..5bc527a1 100644
--- a/src/process_image.c
+++ b/src/process_image.c
@@ -257,7 +257,7 @@ void process_image(const struct index_args *iargs, struct pattern_args *pargs,
profile_start("image-filter");
sb_shared->pings[cookie]++;
- if ( (iargs->median_filter > 0) || iargs->noisefilter ) {
+ if ( (iargs->peak_search.median_filter > 0) || iargs->peak_search.noisefilter ) {
profile_start("data-backup");
prefilter = backup_image_data(image->dp, image->detgeom);
profile_end("data-backup");
@@ -265,14 +265,14 @@ void process_image(const struct index_args *iargs, struct pattern_args *pargs,
prefilter = NULL;
}
- if ( iargs->median_filter > 0 ) {
+ if ( iargs->peak_search.median_filter > 0 ) {
profile_start("median-filter");
- filter_median(image, iargs->median_filter);
+ filter_median(image, iargs->peak_search.median_filter);
profile_end("median-filter");
}
- if ( iargs->noisefilter ) {
- profile_start("noise-filter");
+ if ( iargs->peak_search.noisefilter ) {
+ profile_start("median-filter");
filter_noise(image);
profile_end("noise-filter");
}
@@ -284,7 +284,7 @@ void process_image(const struct index_args *iargs, struct pattern_args *pargs,
sb_shared->pings[cookie]++;
profile_start("peak-search");
- switch ( iargs->peaks ) {
+ switch ( iargs->peak_search.method ) {
case PEAK_HDF5:
case PEAK_CXI:
@@ -292,38 +292,38 @@ void process_image(const struct index_args *iargs, struct pattern_args *pargs,
image->features = image_read_peaks(iargs->dtempl,
pargs->filename,
pargs->event,
- iargs->half_pixel_shift);
+ iargs->peak_search.half_pixel_shift);
if ( image->features == NULL ) {
ERROR("Failed to get peaks from HDF5 file.\n");
}
- if ( !iargs->no_revalidate ) {
- validate_peaks(image, iargs->min_snr,
- iargs->pk_inn, iargs->pk_mid,
- iargs->pk_out, iargs->use_saturated,
- iargs->check_hdf5_snr);
+ if ( iargs->peak_search.revalidate ) {
+ validate_peaks(image, iargs->peak_search.min_snr,
+ iargs->peak_search.pk_inn, iargs->peak_search.pk_mid,
+ iargs->peak_search.pk_out, iargs->peak_search.use_saturated,
+ iargs->peak_search.check_hdf5_snr);
}
break;
case PEAK_ZAEF:
set_last_task(last_task, "peaksearch:zaef");
- search_peaks(image, iargs->threshold,
- iargs->min_sq_gradient, iargs->min_snr,
- iargs->pk_inn, iargs->pk_mid, iargs->pk_out,
- iargs->use_saturated);
+ search_peaks(image, iargs->peak_search.threshold,
+ iargs->peak_search.min_sq_gradient, iargs->peak_search.min_snr,
+ iargs->peak_search.pk_inn, iargs->peak_search.pk_mid, iargs->peak_search.pk_out,
+ iargs->peak_search.use_saturated);
break;
case PEAK_PEAKFINDER8:
set_last_task(last_task, "peaksearch:pf8");
if ( search_peaks_peakfinder8(image, 2048,
- iargs->threshold,
- iargs->min_snr,
- iargs->min_pix_count,
- iargs->max_pix_count,
- iargs->local_bg_radius,
- iargs->min_res,
- iargs->max_res,
- iargs->use_saturated,
- iargs->peakfinder8_fast,
+ iargs->peak_search.threshold,
+ iargs->peak_search.min_snr,
+ iargs->peak_search.min_pix_count,
+ iargs->peak_search.max_pix_count,
+ iargs->peak_search.local_bg_radius,
+ iargs->peak_search.min_res,
+ iargs->peak_search.max_res,
+ iargs->peak_search.use_saturated,
+ iargs->peak_search.peakfinder8_fast,
iargs->pf_private) ) {
ERROR("Failed to find peaks in image %s"
"(event %s).\n",
@@ -334,12 +334,12 @@ void process_image(const struct index_args *iargs, struct pattern_args *pargs,
case PEAK_PEAKFINDER9:
set_last_task(last_task, "peaksearch:pf9");
if ( search_peaks_peakfinder9(image,
- iargs->min_snr_biggest_pix,
- iargs->min_snr_peak_pix,
- iargs->min_snr,
- iargs->min_sig,
- iargs->min_peak_over_neighbour,
- iargs->local_bg_radius) )
+ iargs->peak_search.min_snr_biggest_pix,
+ iargs->peak_search.min_snr_peak_pix,
+ iargs->peak_search.min_snr,
+ iargs->peak_search.min_sig,
+ iargs->peak_search.min_peak_over_neighbour,
+ iargs->peak_search.local_bg_radius) )
{
ERROR("Failed to find peaks in image %s"
"(event %s).\n",
@@ -351,12 +351,12 @@ void process_image(const struct index_args *iargs, struct pattern_args *pargs,
image->features = image_msgpack_read_peaks(iargs->dtempl,
pargs->zmq_data,
pargs->zmq_data_size,
- iargs->half_pixel_shift);
- if ( !iargs->no_revalidate ) {
- validate_peaks(image, iargs->min_snr,
- iargs->pk_inn, iargs->pk_mid,
- iargs->pk_out, iargs->use_saturated,
- iargs->check_hdf5_snr);
+ iargs->peak_search.half_pixel_shift);
+ if ( iargs->peak_search.revalidate ) {
+ validate_peaks(image, iargs->peak_search.min_snr,
+ iargs->peak_search.pk_inn, iargs->peak_search.pk_mid,
+ iargs->peak_search.pk_out, iargs->peak_search.use_saturated,
+ iargs->peak_search.check_hdf5_snr);
}
break;
diff --git a/src/process_image.h b/src/process_image.h
index feb3f81c..bb68ce19 100644
--- a/src/process_image.h
+++ b/src/process_image.h
@@ -59,29 +59,7 @@ struct index_args
DataSourceType data_format;
/* Peak search */
- enum peak_search_method peaks;
- float pk_inn;
- float pk_mid;
- float pk_out;
- int noisefilter;
- int median_filter;
- float threshold;
- float min_sq_gradient;
- float min_snr;
- int check_hdf5_snr;
- int half_pixel_shift;
- int min_res;
- int max_res;
- int min_pix_count;
- int max_pix_count;
- int local_bg_radius;
- int use_saturated;
- int no_revalidate;
- float min_snr_biggest_pix;
- float min_snr_peak_pix;
- float min_sig;
- float min_peak_over_neighbour;
- int peakfinder8_fast;
+ struct peak_params peak_search;
void *pf_private;
/* Hit finding */