aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2014-04-08 15:58:34 +0200
committerThomas White <taw@physics.org>2014-04-08 15:58:34 +0200
commit54176de692b7709e1148904089229f09758436f1 (patch)
treed71b180923743ee65d3b44f3d53eba09d4a0b9c8
parent2500081ea6724ec8bfcb68204150688095edbf99 (diff)
indexamajig: Add --push-res
-rw-r--r--doc/man/indexamajig.15
-rw-r--r--libcrystfel/src/integration.c4
-rw-r--r--libcrystfel/src/integration.h3
-rw-r--r--src/indexamajig.c12
-rw-r--r--src/process_image.c2
-rw-r--r--src/process_image.h1
6 files changed, 23 insertions, 4 deletions
diff --git a/doc/man/indexamajig.1 b/doc/man/indexamajig.1
index a813dca9..ae71a571 100644
--- a/doc/man/indexamajig.1
+++ b/doc/man/indexamajig.1
@@ -331,6 +331,11 @@ Do not record integrated reflections in the stream. The resulting output won't
.PD
Show detailed information about reflection integration when \fIcondition\fR is met. The \fIcondition\fR can be \fBall\fR, \fBnone\fR, a set of Miller indices separated by commas, \fBrandom\fR, \fBimplausible\fR or \fBnegative\fR. \fBrandom\fR means to show information about a random 1% of the peaks. \fBnegative\fR means to show peaks with intensities which are negative by more than 3 sigma. \fBimplausible\fR means to show peaks with intensities which are negative by more than 5 sigma. The default is \fB--int-diag=none\fR.
+.PD 0
+.IP \fB--push-res=\fIn\fR
+.PD
+When \fBrescut\fR is in the integration method, integrate \fIn\fR nm^-1 higher than the apparent resolution limit of each individual crystal. If \fBrescut\fR is not used, this option has no effect. \fIn\fR can be negative to integrate \fIlower\fR than the apparent resolution limit. The default is \fB--rescut=0\fR.
+
.SH BUGS
ReAx indexing is experimental. It works very nicely for some people, and crashes for others. In a future version, it will be improved and fully supported.
diff --git a/libcrystfel/src/integration.c b/libcrystfel/src/integration.c
index 91fe3468..bf8cfadd 100644
--- a/libcrystfel/src/integration.c
+++ b/libcrystfel/src/integration.c
@@ -1799,7 +1799,7 @@ static void apply_resolution_cutoff(Crystal *cr, double res)
}
-void integrate_all(struct image *image, IntegrationMethod meth,
+void integrate_all(struct image *image, IntegrationMethod meth, double push_res,
double ir_inn, double ir_mid, double ir_out,
IntDiag int_diag,
signed int idh, signed int idk, signed int idl)
@@ -1840,7 +1840,7 @@ void integrate_all(struct image *image, IntegrationMethod meth,
crystal_set_resolution_limit(cr, res);
if ( meth & INTEGRATION_RESCUT ) {
- apply_resolution_cutoff(cr, res);
+ apply_resolution_cutoff(cr, res+push_res);
}
}
diff --git a/libcrystfel/src/integration.h b/libcrystfel/src/integration.h
index ee13b980..3fd4e4ac 100644
--- a/libcrystfel/src/integration.h
+++ b/libcrystfel/src/integration.h
@@ -83,7 +83,8 @@ typedef enum {
extern IntegrationMethod integration_method(const char *t, int *err);
extern void integrate_all(struct image *image, IntegrationMethod meth,
- double ir_inn, double ir_mid, double ir_out,
+ double push_res,
+ double ir_inn, double ir_mid, double ir_out,
IntDiag int_diag,
signed int idh, signed int idk, signed int idl);
diff --git a/src/indexamajig.c b/src/indexamajig.c
index 019d55a1..b411b901 100644
--- a/src/indexamajig.c
+++ b/src/indexamajig.c
@@ -126,6 +126,7 @@ static void show_help(const char *s)
"-e, --image=<element> Use this image from the HDF5 file.\n"
" Example: /data/data0.\n"
" Default: The first one found.\n"
+" --push-res=<n> Integrate higher than apparent resolution cutoff.\n"
"\n"
"\nFor time-resolved stuff, you might want to use:\n\n"
" --copy-hdf5-field <f> Copy the value of field <f> into the stream. You\n"
@@ -235,6 +236,7 @@ int main(int argc, char *argv[])
iargs.indm = NULL; /* No default */
iargs.ipriv = NULL; /* No default */
iargs.int_meth = integration_method("rings-nocen", NULL);
+ iargs.push_res = 0.0;
/* Long options */
const struct option longopts[] = {
@@ -287,6 +289,8 @@ int main(int argc, char *argv[])
{"integration", 1, NULL, 16},
{"temp-dir", 1, NULL, 17},
{"int-diag", 1, NULL, 18},
+ {"push-res", 1, NULL, 19},
+ {"res-push", 1, NULL, 19}, /* compat */
{0, 0, NULL, 0}
};
@@ -419,6 +423,14 @@ int main(int argc, char *argv[])
int_diag = strdup(optarg);
break;
+ case 19 :
+ if ( sscanf(optarg, "%f", &iargs.push_res) != 1 ) {
+ ERROR("Invalid value for --push-res\n");
+ return 1;
+ }
+ iargs.push_res *= 1e9; /* nm^-1 -> m^-1 */
+ break;
+
case 0 :
break;
diff --git a/src/process_image.c b/src/process_image.c
index 9c4c740d..51d6ac79 100644
--- a/src/process_image.c
+++ b/src/process_image.c
@@ -184,7 +184,7 @@ void process_image(const struct index_args *iargs, struct pattern_args *pargs,
/* Integrate all the crystals at once - need all the crystals so that
* overlaps can be detected. */
- integrate_all(&image, iargs->int_meth,
+ integrate_all(&image, iargs->int_meth, iargs->push_res,
iargs->ir_inn, iargs->ir_mid, iargs->ir_out,
iargs->int_diag, iargs->int_diag_h,
iargs->int_diag_k, iargs->int_diag_l);
diff --git a/src/process_image.h b/src/process_image.h
index 20e6fe2e..7fedc51b 100644
--- a/src/process_image.h
+++ b/src/process_image.h
@@ -78,6 +78,7 @@ struct index_args
signed int int_diag_h;
signed int int_diag_k;
signed int int_diag_l;
+ float push_res;
};