diff options
Diffstat (limited to 'contrib/alter_stream.c')
-rw-r--r-- | contrib/alter_stream.c | 215 |
1 files changed, 0 insertions, 215 deletions
diff --git a/contrib/alter_stream.c b/contrib/alter_stream.c deleted file mode 100644 index 5487c257..00000000 --- a/contrib/alter_stream.c +++ /dev/null @@ -1,215 +0,0 @@ -/* - * alter_stream.c - * - * Do transformations on a stream - * - * (c) 2006-2011 Thomas White <taw@physics.org> - * - * Part of CrystFEL - crystallography with a FEL - * - */ - - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <stdarg.h> -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <unistd.h> -#include <getopt.h> -#include <assert.h> - -#include "../src/utils.h" -#include "../src/stream.h" -#include "../src/cell.h" -#include "../src/image.h" -#include "../src/beam-parameters.h" -#include "../src/geometry.h" -#include "../src/peaks.h" - - -static void mess_up_cell(UnitCell *cell) -{ - double ax, ay, az; - double bx, by, bz; - double cx, cy, cz; - - /* Cell noise in percent */ - const double cnoise = 0.5; - - //STATUS("Real:\n"); - //cell_print(cell); - - cell_get_reciprocal(cell, &ax, &ay, &az, &bx, &by, &bz, &cx, &cy, &cz); - ax = gaussian_noise(ax, cnoise*fabs(ax)/100.0); - ay = gaussian_noise(ay, cnoise*fabs(ay)/100.0); - az = gaussian_noise(az, cnoise*fabs(az)/100.0); - bx = gaussian_noise(bx, cnoise*fabs(bx)/100.0); - by = gaussian_noise(by, cnoise*fabs(by)/100.0); - bz = gaussian_noise(bz, cnoise*fabs(bz)/100.0); - cx = gaussian_noise(cx, cnoise*fabs(cx)/100.0); - cy = gaussian_noise(cy, cnoise*fabs(cy)/100.0); - cz = gaussian_noise(cz, cnoise*fabs(cz)/100.0); - cell_set_reciprocal(cell, ax, ay, az, bx, by, bz, cx, cy, cz); - - //STATUS("Changed:\n"); - //cell_print(cell); -} - - -static void show_help(const char *s) -{ - printf("Syntax: %s [options]\n\n", s); - printf( -"Alter a stream.\n" -"\n" -" -h, --help Display this help message.\n" -"\n" -"You need to provide the following basic options:\n" -" -i, --input=<file> Read reflections from <file>.\n" -" -o, --output=<file> Write partials in stream format to <file>.\n" -); -} - - -int main(int argc, char *argv[]) -{ - int c; - char *input_file = NULL; - char *output_file = NULL; - struct image image; - struct detector *det = NULL; - struct beam_params *beam = NULL; - char *beamfile = NULL; - char *geomfile = NULL; - FILE *ifh; - FILE *ofh; - int v; - - /* Long options */ - const struct option longopts[] = { - {"help", 0, NULL, 'h'}, - {"output", 1, NULL, 'o'}, - {"input", 1, NULL, 'i'}, - {"beam", 1, NULL, 'b'}, - {"geometry", 1, NULL, 'g'}, - {0, 0, NULL, 0} - }; - - /* Short options */ - while ((c = getopt_long(argc, argv, "hi:o:b:g:", - longopts, NULL)) != -1) { - - switch (c) { - case 'h' : - show_help(argv[0]); - return 0; - - case 'o' : - output_file = strdup(optarg); - break; - - case 'i' : - input_file = strdup(optarg); - break; - - case 'b' : - beamfile = strdup(optarg); - break; - - case 'g' : - geomfile = strdup(optarg); - break; - - case 0 : - break; - - default : - return 1; - } - - } - - if ( input_file == NULL ) { - ERROR("You must pgive a filename for the output.\n"); - return 1; - } - ifh = fopen(input_file, "r"); - if ( ifh == NULL ) { - ERROR("Couldn't open input file '%s'\n", input_file); - return 1; - } - free(input_file); - - if ( output_file == NULL ) { - ERROR("You must pgive a filename for the output.\n"); - return 1; - } - ofh = fopen(output_file, "w"); - if ( ofh == NULL ) { - ERROR("Couldn't open output file '%s'\n", output_file); - return 1; - } - free(output_file); - - /* Load beam */ - if ( beamfile == NULL ) { - ERROR("You need to provide a beam parameters file.\n"); - return 1; - } - beam = get_beam_parameters(beamfile); - if ( beam == NULL ) { - ERROR("Failed to load beam parameters from '%s'\n", beamfile); - return 1; - } - free(beamfile); - - /* Load geometry */ - if ( geomfile == NULL ) { - ERROR("You need to give a geometry file.\n"); - return 1; - } - det = get_detector_geometry(geomfile); - if ( det == NULL ) { - ERROR("Failed to read geometry from '%s'\n", geomfile); - return 1; - } - free(geomfile); - - write_stream_header(ofh, argc, argv); - - image.det = det; - image.width = det->max_fs; - image.height = det->max_ss; - - image.lambda = 0.0; - image.div = beam->divergence; - image.bw = beam->bandwidth; - image.profile_radius = 0.0001e9; - image.i0_available = 0; - - do { - - image.indexed_cell = NULL; - v = read_chunk(ifh, &image); - if ( (v == 0) && (image.indexed_cell != NULL) ) { - - mess_up_cell(image.indexed_cell); - image.reflections = find_intersections(&image, - image.indexed_cell); - - write_chunk(ofh, &image, NULL, STREAM_INTEGRATED); - - } - - } while ( v == 0 ); - - - fclose(ofh); - fclose(ifh); - - return 0; -} |