diff options
author | Thomas White <taw@physics.org> | 2017-09-08 11:41:51 +0200 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2017-09-15 14:31:01 +0200 |
commit | 60c48f3876b0d3c30bf729ce691dbd3f56665c4c (patch) | |
tree | 44868373d7053924a3de614568cdc148e01de61e /libcrystfel/src/xds.c | |
parent | 3f1c6a1fbc241721aafeb9e1e6c0cbdb1eb810b5 (diff) |
Simplify indexing options
mosflm-cell-nolatt-multi-refine-bad-retry.... it's all getting a bit
too much. This commit removes all the options from the indexing methods
except for the prior information flags (cell/nocell and latt/nolatt).
All the other options are now given at the top level with new
indexamajig options, e.g. --no-multi and --no-retry. They are applied
to all the methods, with no option to (say) use retry for one method and
not for another.
This also makes the "peak alignment test" default to OFF, and
multi-lattice indexing ON. I think that the prediction refinement does
a good enough job of checking the validity of indexing solutions,
allowing us to turn off the alignment check which filters out most
multi-lattice solutions.
Diffstat (limited to 'libcrystfel/src/xds.c')
-rw-r--r-- | libcrystfel/src/xds.c | 52 |
1 files changed, 11 insertions, 41 deletions
diff --git a/libcrystfel/src/xds.c b/libcrystfel/src/xds.c index 093b9160..39578c60 100644 --- a/libcrystfel/src/xds.c +++ b/libcrystfel/src/xds.c @@ -187,39 +187,14 @@ static int xds_readable(struct image *image, struct xds_data *xds) static int check_cell(struct xds_private *xp, struct image *image, UnitCell *cell) { - UnitCell *out; Crystal *cr; - if ( xp->indm & INDEXING_CHECK_CELL_COMBINATIONS ) { - - out = match_cell(cell, xp->cell, 0, xp->ltl, 1); - if ( out == NULL ) return 0; - - } else if ( xp->indm & INDEXING_CHECK_CELL_AXES ) { - - out = match_cell(cell, xp->cell, 0, xp->ltl, 0); - if ( out == NULL ) return 0; - - } else { - out = cell_new_from_cell(cell); - } - cr = crystal_new(); if ( cr == NULL ) { ERROR("Failed to allocate crystal.\n"); return 0; } - - crystal_set_cell(cr, out); - - if ( xp->indm & INDEXING_CHECK_PEAKS ) { - if ( !peak_sanity_check(image, &cr, 1) ) { - cell_free(out); - crystal_free(cr); - return 0; - } - } - + crystal_set_cell(cr, cell); image_add_crystal(image, cr); return 1; @@ -626,14 +601,10 @@ void *xds_prepare(IndexingMethod *indm, UnitCell *cell, int need_cell = 0; /* Check if cell parameters are needed/provided */ - if ( *indm & INDEXING_CHECK_CELL_COMBINATIONS ) need_cell = 1; - if ( *indm & INDEXING_CHECK_CELL_AXES ) need_cell = 1; if ( *indm & INDEXING_USE_CELL_PARAMETERS ) need_cell = 1; if ( need_cell && !cell_has_parameters(cell) ) { ERROR("Altering your XDS flags because cell parameters were" " not provided.\n"); - *indm &= ~INDEXING_CHECK_CELL_COMBINATIONS; - *indm &= ~INDEXING_CHECK_CELL_AXES; *indm &= ~INDEXING_USE_CELL_PARAMETERS; } @@ -652,36 +623,35 @@ void *xds_prepare(IndexingMethod *indm, UnitCell *cell, } if ( (*indm & INDEXING_USE_LATTICE_TYPE) - && !(*indm & INDEXING_USE_CELL_PARAMETERS) ) { + && !(*indm & INDEXING_USE_CELL_PARAMETERS) ) + { ERROR("Invalid XDS options (-latt-nocell): " "try xds-nolatt-nocell.\n"); return NULL; } if ( (*indm & INDEXING_USE_CELL_PARAMETERS) - && !(*indm & INDEXING_USE_LATTICE_TYPE) ) { + && !(*indm & INDEXING_USE_LATTICE_TYPE) ) + { ERROR("Invalid XDS options (-cell-nolatt): " "try xds-nolatt-nocell.\n"); return NULL; } if ( ((*indm & INDEXING_USE_CELL_PARAMETERS) - || (*indm & INDEXING_USE_LATTICE_TYPE)) - && !(*indm & INDEXING_CHECK_CELL_AXES) - && !(*indm & INDEXING_CHECK_CELL_COMBINATIONS) ) { - ERROR("The cell from xds-raw-cell or xds-raw-latt may have had" + || (*indm & INDEXING_USE_LATTICE_TYPE))) + { + ERROR("The cell from xds-cell or xds-latt may have had" " its axes permuted from the cell you provided. If this" - " is a problem, consider using xds-axes-cell.\n"); + " is a problem, consider using xds-cell.\n"); } xp = calloc(1, sizeof(*xp)); if ( xp == NULL ) return NULL; /* Flags that XDS knows about */ - *indm &= INDEXING_METHOD_MASK | INDEXING_CHECK_CELL_COMBINATIONS - | INDEXING_CHECK_CELL_AXES | INDEXING_USE_LATTICE_TYPE - | INDEXING_CHECK_PEAKS | INDEXING_USE_CELL_PARAMETERS - | INDEXING_CONTROL_FLAGS; + *indm &= INDEXING_METHOD_MASK | INDEXING_USE_LATTICE_TYPE + | INDEXING_USE_CELL_PARAMETERS; xp->ltl = ltl; xp->cell = cell; |