diff options
Diffstat (limited to 'src/refinetest3d3.c')
-rw-r--r-- | src/refinetest3d3.c | 108 |
1 files changed, 60 insertions, 48 deletions
diff --git a/src/refinetest3d3.c b/src/refinetest3d3.c index 65705a8..1a1623d 100644 --- a/src/refinetest3d3.c +++ b/src/refinetest3d3.c @@ -3,7 +3,7 @@ * * Unit test for refinement procedure in 3D * - * (c) 2007-2008 Thomas White <taw27@cam.ac.uk> + * (c) 2007-2009 Thomas White <taw27@cam.ac.uk> * * dtr - Diffraction Tomography Reconstruction * @@ -28,9 +28,9 @@ #include "mrc.h" static int check_cell(Basis *cell, Basis *cell_real) { - + int fail; - + printf(" Refinement Actual\n"); printf("---------------------------\n"); printf("ax %+8f %+8f\n", cell->a.x/1e9, cell_real->a.x/1e9); @@ -42,75 +42,84 @@ static int check_cell(Basis *cell, Basis *cell_real) { printf("cx %+8f %+8f\n", cell->c.x/1e9, cell_real->c.x/1e9); printf("cy %+8f %+8f\n", cell->c.y/1e9, cell_real->c.y/1e9); printf("cz %+8f %+8f\n", cell->c.z/1e9, cell_real->c.z/1e9); - + fail = 0; if ( fabs(cell->a.x - cell_real->a.x) > 0.01e9 ) { - fprintf(stderr, "refinetest3d: ax not determined correctly (got %8f, should be %8f)\n", - cell->a.x/1e9, cell_real->a.x/1e9); + fprintf(stderr, "refinetest3d: ax not determined correctly " + "(got %8f, should be %8f)\n", + cell->a.x/1e9, cell_real->a.x/1e9); fail = 1; } else { printf("ax is OK.\n"); } if ( fabs(cell->a.y - cell_real->a.y) > 0.01e9 ) { - fprintf(stderr, "refinetest3d: ay not determined correctly (got %8f, should be %8f)\n", - cell->a.y/1e9, cell_real->a.y/1e9); + fprintf(stderr, "refinetest3d: ay not determined correctly " + "(got %8f, should be %8f)\n", + cell->a.y/1e9, cell_real->a.y/1e9); fail = 1; } else { printf("ay is OK.\n"); } if ( fabs(cell->a.z - cell_real->a.z) > 0.01e9 ) { - fprintf(stderr, "refinetest3d: az not determined correctly (got %8f, should be %8f)\n", - cell->a.z/1e9, cell_real->a.z/1e9); + fprintf(stderr, "refinetest3d: az not determined correctly " + "(got %8f, should be %8f)\n", + cell->a.z/1e9, cell_real->a.z/1e9); fail = 1; } else { printf("az is OK.\n"); } if ( fabs(cell->b.x - cell_real->b.x) > 0.01e9 ) { - fprintf(stderr, "refinetest3d: bx not determined correctly (got %8f, should be %8f)\n", - cell->b.x/1e9, cell_real->b.x/1e9); + fprintf(stderr, "refinetest3d: bx not determined correctly " + "(got %8f, should be %8f)\n", + cell->b.x/1e9, cell_real->b.x/1e9); fail = 1; } else { printf("bx is OK.\n"); } if ( fabs(cell->b.y - cell_real->b.y) > 0.01e9 ) { - fprintf(stderr, "refinetest3d: by not determined correctly (got %8f, should be %8f)\n", - cell->b.y/1e9, cell_real->b.y/1e9); + fprintf(stderr, "refinetest3d: by not determined correctly " + "(got %8f, should be %8f)\n", + cell->b.y/1e9, cell_real->b.y/1e9); fail = 1; } else { printf("by is OK.\n"); } if ( fabs(cell->b.z - cell_real->b.z) > 0.01e9 ) { - fprintf(stderr, "refinetest3d: bz not determined correctly (got %8f, should be %8f)\n", - cell->b.z/1e9, cell_real->b.z/1e9); + fprintf(stderr, "refinetest3d: bz not determined correctly " + "(got %8f, should be %8f)\n", + cell->b.z/1e9, cell_real->b.z/1e9); fail = 1; } else { printf("bz is OK.\n"); } if ( fabs(cell->c.x - cell_real->c.x) > 0.01e9 ) { - fprintf(stderr, "refinetest3d: cx not determined correctly (got %8f, should be %8f)\n", - cell->c.x/1e9, cell_real->c.x/1e9); + fprintf(stderr, "refinetest3d: cx not determined correctly " + "(got %8f, should be %8f)\n", + cell->c.x/1e9, cell_real->c.x/1e9); fail = 1; } else { printf("cx is OK.\n"); } if ( fabs(cell->c.y - cell_real->c.y) > 0.01e9 ) { - fprintf(stderr, "refinetest3d: cy not determined correctly (got %8f, should be %8f)\n", - cell->c.y/1e9, cell_real->c.y/1e9); + fprintf(stderr, "refinetest3d: cy not determined correctly " + "(got %8f, should be %8f)\n", + cell->c.y/1e9, cell_real->c.y/1e9); fail = 1; } else { printf("cx is OK.\n"); } if ( fabs(cell->c.z - cell_real->c.z) > 0.01e9 ) { - fprintf(stderr, "refinetest3d: cz not determined correctly (got %8f, should be %8f)\n", - cell->c.z/1e9, cell_real->c.z/1e9); + fprintf(stderr, "refinetest3d: cz not determined correctly " + "(got %8f, should be %8f)\n", + cell->c.z/1e9, cell_real->c.z/1e9); fail = 1; } else { printf("cz is OK.\n"); } - + return fail; -} +} int main(int argc, char *argv[]) { @@ -119,7 +128,7 @@ int main(int argc, char *argv[]) { Basis *cell_real; int fail; int i; - + ctx = control_ctx_new(); ctx->omega = deg2rad(45.0); ctx->lambda = lambda(300.0e3); /* 300 keV */ @@ -132,50 +141,53 @@ int main(int argc, char *argv[]) { image_add(ctx->images, NULL, 512, 512, deg2rad(i), ctx); ctx->images->images[i].features = image_feature_list_new(); } - + /* Fudge to avoid horrifying pointer-related death */ ctx->dw = malloc(sizeof(DisplayWindow)); ctx->dw->cur_image = 0; - + /* The "true" cell */ cell_real = malloc(sizeof(Basis)); - cell_real->a.x = 5.0e9; cell_real->a.y = 0.0e9; cell_real->a.z = 0.0e9; - cell_real->b.x = 0.0e9; cell_real->b.y = 5.0e9; cell_real->b.z = 0.0e9; - cell_real->c.x = 0.0e9; cell_real->c.y = 0.0e9; cell_real->c.z = 5.0e9; + cell_real->a.x = 5.0e9; cell_real->a.y = 0.0e9; cell_real->a.z = 0.0e9; + cell_real->b.x = 0.0e9; cell_real->b.y = 5.0e9; cell_real->b.z = 0.0e9; + cell_real->c.x = 0.0e9; cell_real->c.y = 0.0e9; cell_real->c.z = 5.0e9; /* The "real" reflections */ reflections_real = reflection_list_from_cell(cell_real); for ( i=0; i<=90; i++ ) { - ctx->images->images[i].features = reproject_get_reflections(&ctx->images->images[i], reflections_real, - ctx); + ctx->images->images[i].features = + reproject_get_reflections(&ctx->images->images[i], + reflections_real, ctx); } - + /* The "model" cell to be refined */ ctx->cell = malloc(sizeof(Basis)); - ctx->cell->a.x = 5.0e9; ctx->cell->a.y = 0.1e9; ctx->cell->a.z = 0.1e9; - ctx->cell->b.x = 0.1e9; ctx->cell->b.y = 5.0e9; ctx->cell->b.z = 0.1e9; - ctx->cell->c.x = 0.1e9; ctx->cell->c.y = 0.1e9; ctx->cell->c.z = 5.0e9; + ctx->cell->a.x = 5.2e9; ctx->cell->a.y = 0.1e9; ctx->cell->a.z = 0.1e9; + ctx->cell->b.x = 0.2e9; ctx->cell->b.y = 4.8e9; ctx->cell->b.z = 0.1e9; + ctx->cell->c.x = 0.1e9; ctx->cell->c.y = 0.1e9; ctx->cell->c.z = 5.3e9; ctx->cell_lattice = reflection_list_from_cell(ctx->cell); for ( i=0; i<ctx->images->n_images; i++ ) { - ctx->images->images[i].rflist = reproject_get_reflections(&ctx->images->images[i], ctx->cell_lattice, - ctx); - reproject_partner_features(ctx->images->images[i].rflist, &ctx->images->images[i]); + ctx->images->images[i].rflist = + reproject_get_reflections(&ctx->images->images[i], + ctx->cell_lattice, ctx); + reproject_partner_features(ctx->images->images[i].rflist, + &ctx->images->images[i]); } - + refine_do_cell(ctx); for ( i=0; i<ctx->images->n_images; i++ ) { image_feature_list_free(ctx->images->images[i].rflist); } - + fail = check_cell(ctx->cell, cell_real); - + free(ctx); - + if ( fail ) return 1; - + printf("\n3D refinement test OK.\n"); - + return 0; - + } /* Dummy function stubs */ @@ -187,5 +199,5 @@ void displaywindow_error(const char *msg, DisplayWindow *dw) { }; void displaywindow_message(DisplayWindow *dw, const char *text) { }; guint gtk_value_graph_get_type() { return 0; }; GtkWidget *gtk_value_graph_new() { return NULL; }; -void gtk_value_graph_set_data(GtkValueGraph *vg, double *data, unsigned int n) { }; - +void gtk_value_graph_set_data(GtkValueGraph *vg, double *data, unsigned int n) + { }; |