aboutsummaryrefslogtreecommitdiff
path: root/src/get_hkl.c
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2017-10-18 16:27:31 +0200
committerThomas White <taw@physics.org>2017-10-19 14:16:30 +0200
commitb68dee1c8fab406095c16baa27aba3cad8ae6260 (patch)
tree4a1c27fc67967f759f00f019aca8e849c5758a7c /src/get_hkl.c
parentf9044c546ceb6c720c426d0c9f95457b70487315 (diff)
get_hkl: Use symmetry from file
Diffstat (limited to 'src/get_hkl.c')
-rw-r--r--src/get_hkl.c43
1 files changed, 27 insertions, 16 deletions
diff --git a/src/get_hkl.c b/src/get_hkl.c
index 77f34da2..5dddc5be 100644
--- a/src/get_hkl.c
+++ b/src/get_hkl.c
@@ -3,11 +3,11 @@
*
* Small program to manipulate reflection lists
*
- * Copyright © 2013-2016 Deutsches Elektronen-Synchrotron DESY,
+ * Copyright © 2013-2017 Deutsches Elektronen-Synchrotron DESY,
* a research centre of the Helmholtz Association.
*
* Authors:
- * 2009-2016 Thomas White <taw@physics.org>
+ * 2009-2017 Thomas White <taw@physics.org>
*
* This file is part of CrystFEL.
*
@@ -415,6 +415,7 @@ int main(int argc, char *argv[])
int config_nap = 1;
char *holo_str = NULL;
char *mero_str = NULL;
+ char *sym_str_fromfile = NULL;
char *expand_str = NULL;
SymOpList *holo = NULL;
SymOpList *mero = NULL;
@@ -569,13 +570,6 @@ int main(int argc, char *argv[])
} else {
holo = NULL;
}
- if ( mero_str != NULL ) {
- pointgroup_warning(mero_str);
- mero = get_pointgroup(mero_str);
- free(mero_str);
- } else {
- mero = NULL;
- }
if ( expand_str != NULL ) {
pointgroup_warning(expand_str);
expand = get_pointgroup(expand_str);
@@ -590,6 +584,30 @@ int main(int argc, char *argv[])
set_symmetry_name(reindex, "Reindex");
}
+ input = read_reflections_2(input_file, &sym_str_fromfile);
+ if ( input == NULL ) {
+ ERROR("Problem reading input file %s\n", input_file);
+ return 1;
+ }
+ free(input_file);
+
+ if ( mero_str == NULL ) {
+ if ( sym_str_fromfile != NULL ) {
+ STATUS("Using symmetry from reflection file: %s\n",
+ sym_str_fromfile);
+ mero_str = sym_str_fromfile;
+ } else {
+ mero_str = strdup("1");
+ }
+ }
+ if ( mero_str != NULL ) {
+ pointgroup_warning(mero_str);
+ mero = get_pointgroup(mero_str);
+ free(mero_str);
+ } else {
+ mero = NULL;
+ }
+
if ( (expand != NULL) || (holo != NULL) || config_trimc
|| config_multi ) {
if ( mero == NULL ) {
@@ -597,13 +615,6 @@ int main(int argc, char *argv[])
}
}
- input = read_reflections(input_file);
- if ( input == NULL ) {
- ERROR("Problem reading input file %s\n", input_file);
- return 1;
- }
- free(input_file);
-
STATUS("%i reflections in input.\n", num_reflections(input));
if ( (mero != NULL) && !config_trimc