From a2433f8d1ebf8412c3051b47fe805fd577bf185e Mon Sep 17 00:00:00 2001 From: Thomas White Date: Wed, 6 Jan 2010 17:53:00 +0100 Subject: Rename process_images -> indexamajig --- .gitignore | 2 +- src/Makefile.am | 6 +- src/indexamajig.c | 210 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/process_images.c | 210 --------------------------------------------------- 4 files changed, 214 insertions(+), 214 deletions(-) create mode 100644 src/indexamajig.c delete mode 100644 src/process_images.c diff --git a/.gitignore b/.gitignore index ecc414de..9a29634b 100644 --- a/.gitignore +++ b/.gitignore @@ -13,5 +13,5 @@ src/pattern_sim src/process_hkl src/get_hkl src/hdfsee -src/process_images +src/indexamajig *~ diff --git a/src/Makefile.am b/src/Makefile.am index 50b76850..64567c2c 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,4 +1,4 @@ -bin_PROGRAMS = pattern_sim process_hkl get_hkl process_images +bin_PROGRAMS = pattern_sim process_hkl get_hkl indexamajig if HAVE_GTK bin_PROGRAMS += hdfsee @@ -16,8 +16,8 @@ process_hkl_SOURCES = process_hkl.c sfac.c statistics.c cell.c utils.c \ reflections.c process_hkl_LDADD = @LIBS@ -process_images_SOURCES = process_images.c hdf5-file.c utils.c dirax.c cell.c -process_images_LDADD = @LIBS@ +indexamajig_SOURCES = indexamajig.c hdf5-file.c utils.c dirax.c cell.c +indexamajig_LDADD = @LIBS@ if HAVE_GTK hdfsee_SOURCES = hdfsee.c displaywindow.c render.c hdf5-file.c utils.c diff --git a/src/indexamajig.c b/src/indexamajig.c new file mode 100644 index 00000000..1b1620c1 --- /dev/null +++ b/src/indexamajig.c @@ -0,0 +1,210 @@ +/* + * indexamajig.c + * + * Find hits, index patterns, output hkl+intensity etc. + * + * (c) 2006-2009 Thomas White + * + * Part of CrystFEL - crystallography with a FEL + * + */ + + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include +#include +#include +#include + +#include "utils.h" +#include "hdf5-file.h" +#include "dirax.h" + + +static void show_help(const char *s) +{ + printf("Syntax: %s [options]\n\n", s); + printf( +"Process and index FEL diffraction images.\n" +"\n" +" -h, --help Display this help message.\n" +"\n" +" -i, --input= Specify file containing list of images to process.\n" +" '-' means stdin, which is the default.\n" +"\n"); +} + + +static int sum_of_peaks(struct image *image) +{ + int x, y; + int integr, n; + float fintegr, mean, sd, th; + + /* Measure mean */ + integr = 0; + n = 0; + for ( x=0; x<1024; x++ ) { + for ( y=600; y<1024; y++ ) { + + int val; + if ( (x>400) && (x<600) ) continue; + val = image->data[x+image->height*y]; + if ( val < 0 ) continue; + integr += val; + n++; + + } + } + mean = (float)integr / n; /* As integer to keep maths fast */ + + /* Standard deviation */ + integr = 0; + for ( x=0; x<1024; x++ ) { + for ( y=600; y<1024; y++ ) { + + float val; + + if ( (x>400) && (x<600) ) continue; + val = (float)image->data[x+image->height*y]; + if ( val < 0 ) continue; + + val -= mean; + val = powf(val, 2.0); + fintegr += val; + + } + } + sd = sqrtf(fintegr / n); + + /* Threshold */ + th = mean + 5*sd; + STATUS("mean=%f ,sd=%f, th=%f\n", mean, sd, th); + + /* Sum intensity above threshold */ + integr = 0; + for ( x=0; x<1024; x++ ) { + for ( y=600; y<1024; y++ ) { + + int val; + + /* Chop out streaky region */ + if ( (x>400) && (x<600) ) continue; + + val = image->data[x+image->height*y]; + + if ( val > th ) integr+=val; + + } + } + + return integr; +} + + +int main(int argc, char *argv[]) +{ + int c; + char *filename = NULL; + FILE *fh; + char *rval; + int n_images; + int n_hits; + + /* Long options */ + const struct option longopts[] = { + {"help", 0, NULL, 'h'}, + {"input", 1, NULL, 'i'}, + {0, 0, NULL, 0} + }; + + /* Short options */ + while ((c = getopt_long(argc, argv, "hi:", longopts, NULL)) != -1) { + + switch (c) { + case 'h' : { + show_help(argv[0]); + return 0; + } + + case 'i' : { + filename = strdup(optarg); + break; + } + + case 0 : { + break; + } + + default : { + return 1; + } + } + + } + + if ( filename == NULL ) { + filename = strdup("-"); + } + if ( strcmp(filename, "-") == 0 ) { + fh = stdin; + } else { + fh = fopen(filename, "r"); + } + free(filename); + if ( fh == NULL ) { + ERROR("Failed to open input file\n"); + return 1; + } + + n_images = 0; + n_hits = 0; + do { + + char line[1024]; + struct hdfile *hdfile; + struct image image; + int integr; + + rval = fgets(line, 1023, fh); + chomp(line); + + STATUS("Processing '%s'\n", line); + + hdfile = hdfile_open(line); + if ( hdfile == NULL ) { + ERROR("Couldn't open file '%s'\n", filename); + } else if ( hdfile_set_first_image(hdfile, "/") ) { + ERROR("Couldn't select path\n"); + } + + hdf5_read(hdfile, &image); + + integr = sum_of_peaks(&image); + printf("%6i %i\n", n_images, integr); + if ( integr > 200000 ) { + + STATUS("Hit: %s\n", line); + + index_pattern(&image); + + n_hits++; + + } + + n_images++; + + } while ( rval != NULL ); + + fclose(fh); + + STATUS("There were %i images.\n", n_images); + STATUS("%i hits were found.\n", n_hits); + + return 0; +} diff --git a/src/process_images.c b/src/process_images.c deleted file mode 100644 index cd06a97e..00000000 --- a/src/process_images.c +++ /dev/null @@ -1,210 +0,0 @@ -/* - * process_images.c - * - * Find hits, index patterns, output hkl+intensity etc. - * - * (c) 2006-2009 Thomas White - * - * Part of CrystFEL - crystallography with a FEL - * - */ - - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include -#include -#include -#include -#include -#include - -#include "utils.h" -#include "hdf5-file.h" -#include "dirax.h" - - -static void show_help(const char *s) -{ - printf("Syntax: %s [options]\n\n", s); - printf( -"Process and index FEL diffraction images.\n" -"\n" -" -h, --help Display this help message.\n" -"\n" -" -i, --input= Specify file containing list of images to process.\n" -" '-' means stdin, which is the default.\n" -"\n"); -} - - -static int sum_of_peaks(struct image *image) -{ - int x, y; - int integr, n; - float fintegr, mean, sd, th; - - /* Measure mean */ - integr = 0; - n = 0; - for ( x=0; x<1024; x++ ) { - for ( y=600; y<1024; y++ ) { - - int val; - if ( (x>400) && (x<600) ) continue; - val = image->data[x+image->height*y]; - if ( val < 0 ) continue; - integr += val; - n++; - - } - } - mean = (float)integr / n; /* As integer to keep maths fast */ - - /* Standard deviation */ - integr = 0; - for ( x=0; x<1024; x++ ) { - for ( y=600; y<1024; y++ ) { - - float val; - - if ( (x>400) && (x<600) ) continue; - val = (float)image->data[x+image->height*y]; - if ( val < 0 ) continue; - - val -= mean; - val = powf(val, 2.0); - fintegr += val; - - } - } - sd = sqrtf(fintegr / n); - - /* Threshold */ - th = mean + 5*sd; - STATUS("mean=%f ,sd=%f, th=%f\n", mean, sd, th); - - /* Sum intensity above threshold */ - integr = 0; - for ( x=0; x<1024; x++ ) { - for ( y=600; y<1024; y++ ) { - - int val; - - /* Chop out streaky region */ - if ( (x>400) && (x<600) ) continue; - - val = image->data[x+image->height*y]; - - if ( val > th ) integr+=val; - - } - } - - return integr; -} - - -int main(int argc, char *argv[]) -{ - int c; - char *filename = NULL; - FILE *fh; - char *rval; - int n_images; - int n_hits; - - /* Long options */ - const struct option longopts[] = { - {"help", 0, NULL, 'h'}, - {"input", 1, NULL, 'i'}, - {0, 0, NULL, 0} - }; - - /* Short options */ - while ((c = getopt_long(argc, argv, "hi:", longopts, NULL)) != -1) { - - switch (c) { - case 'h' : { - show_help(argv[0]); - return 0; - } - - case 'i' : { - filename = strdup(optarg); - break; - } - - case 0 : { - break; - } - - default : { - return 1; - } - } - - } - - if ( filename == NULL ) { - filename = strdup("-"); - } - if ( strcmp(filename, "-") == 0 ) { - fh = stdin; - } else { - fh = fopen(filename, "r"); - } - free(filename); - if ( fh == NULL ) { - ERROR("Failed to open input file\n"); - return 1; - } - - n_images = 0; - n_hits = 0; - do { - - char line[1024]; - struct hdfile *hdfile; - struct image image; - int integr; - - rval = fgets(line, 1023, fh); - chomp(line); - - STATUS("Processing '%s'\n", line); - - hdfile = hdfile_open(line); - if ( hdfile == NULL ) { - ERROR("Couldn't open file '%s'\n", filename); - } else if ( hdfile_set_first_image(hdfile, "/") ) { - ERROR("Couldn't select path\n"); - } - - hdf5_read(hdfile, &image); - - integr = sum_of_peaks(&image); - printf("%6i %i\n", n_images, integr); - if ( integr > 200000 ) { - - STATUS("Hit: %s\n", line); - - index_pattern(&image); - - n_hits++; - - } - - n_images++; - - } while ( rval != NULL ); - - fclose(fh); - - STATUS("There were %i images.\n", n_images); - STATUS("%i hits were found.\n", n_hits); - - return 0; -} -- cgit v1.2.3