From 189da15810deabd739d7c11c6e95fea55739fe60 Mon Sep 17 00:00:00 2001 From: Thomas White Date: Sat, 1 Aug 2020 15:13:49 +0200 Subject: Initial import from archive --- src/amplitude-r.c | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 src/amplitude-r.c (limited to 'src/amplitude-r.c') diff --git a/src/amplitude-r.c b/src/amplitude-r.c new file mode 100644 index 0000000..50f6e9c --- /dev/null +++ b/src/amplitude-r.c @@ -0,0 +1,86 @@ +/* + * amplitude-r.c + * + * Plot of R-factor against amplitude + * + * (c) 2006 Thomas White + * Synth2d - two-dimensional Fourier synthesis + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include +#include + +#include "data.h" +#include "main.h" +#include "statistics.h" +#include "displaywindow.h" +#include "model.h" + +static void amplituder_gpwrite(FILE *gnuplot, const char *string) { + fwrite(string, strlen(string), 1, gnuplot); +} + +void amplituder_show() { + + FILE *fh; + unsigned int i; + FILE *gnuplot; + double scale; + ReflectionList *reflections; + ReflectionList *model_reflections; + + reflections = main_reflist(); + model_reflections = model_calculate_f(reflections, NULL, 69); + + scale = stat_scale(reflections, model_reflections); + fh = fopen("synth2d-amplitude-r.dat", "w"); + + for ( i=1; in_reflections; i++ ) { + + double residual; + signed int h, k, l; + + h = reflections->refs[i].h; + k = reflections->refs[i].k; + l = reflections->refs[i].l; + + residual = 100*fabs((reflections->refs[i].amplitude - scale*model_reflections->refs[i].amplitude)/reflections->refs[i].amplitude); + if ( !isinf(residual) ) { + fprintf(fh, "%f %f\n", reflections->refs[i].amplitude, residual); + } + + } + + fclose(fh); + + gnuplot = popen("gnuplot -persist -", "w"); + if ( !gnuplot ) { + error_report("Couldn't invoke gnuplot. Please check your PATH."); + return; + } + + amplituder_gpwrite(gnuplot, "set autoscale\n"); + amplituder_gpwrite(gnuplot, "unset log\n"); + amplituder_gpwrite(gnuplot, "unset label\n"); + amplituder_gpwrite(gnuplot, "set xtic auto\n"); + amplituder_gpwrite(gnuplot, "set ytic auto\n"); + amplituder_gpwrite(gnuplot, "set grid\n"); + amplituder_gpwrite(gnuplot, "set ylabel 'R (%)' font \"Helvetica,10\"\n"); + amplituder_gpwrite(gnuplot, "set xlabel '|Fobs|' font \"Helvetica,10\"\n"); + amplituder_gpwrite(gnuplot, "set title 'Amplitude-R Plot' font \"Helvetica,10\"\n"); + amplituder_gpwrite(gnuplot, "plot 'synth2d-amplitude-r.dat'\n"); + amplituder_gpwrite(gnuplot, "replot\n"); + + if ( pclose(gnuplot) == -1 ) { + error_report("gnuplot returned an error code."); + return; + } + +} -- cgit v1.2.3