Age | Commit message (Collapse) | Author |
|
This code isn't needed any more, now that we don't simulate images. It
never worked very well - although we can read almost any sensible
format, writing images that match an arbitrary schema is very difficult.
See 41ed47a931e4c162c9a501981b6f19cd725f6e43 and https://gitlab.desy.de/thomas.white/crystfel/-/issues/81
|
|
It's already far behind parity with Meson, and getting worse.
|
|
This was intended to help users avoid accidents. However, it seems to
trip people up a lot, and creates problems such as breaking Slurm job
pre-emption (re-scheduled job fails because output already exists).
This reverts commit 6db9619ba5172b9e416a5939d375f5119aa652ff.
|
|
This should avoid surprises if the location is accidentally missed out.
|
|
Just to avoid repetition
|
|
|
|
|
|
Previously, it was possible for the search to run over the part of the
array initialised by FFTW.
|
|
|
|
|
|
This makes it work the same way as --wavelength-estimate.
|
|
Co-authored-by: Alexandra Tolstikova <alexandra.tolstikova@desy.de>
Fixes: https://gitlab.desy.de/thomas.white/crystfel/-/issues/76
|
|
This avoids an apparently infinite loop with some corner case input.
|
|
|
|
For cases where you need it (high performance online processing), it's
very spammy.
|
|
The old maximum was 64 kilobytes, and a 68k geometry file has now been
seen in the wild. The limit is only needed to prevent runaway memory
allocation in the case of a corrupted stream. So it's safe to increase
it quite a lot.
|
|
|
|
Fixes Valgrind errors and segfault with certain geometries
|
|
|
|
|
|
|
|
|
|
It is horrible. But it's contained inside the DataTemplate module.
|
|
|
|
It seems to make more sense here, because it's all about interpreting
the contents of the DataTemplate structure.
|
|
This adds an optional fast mode for asdf indexing, which is around 3
times faster with only a few percent lower success rate.
|
|
|
|
|
|
This avoids e.g. crashing later if the geometry is bad.
This commit also removes a problematic stanza from the geometry in
test.stream, since the stream reading functions are now more fussy about
this.
|
|
|
|
|
|
This adds a central procedure (image_create_dp_bad_sat) to create all
the arrays. Then it's up to the loading procedure to put the values
into the arrays.
This also makes the loading procedures responsible for marking NaN/inf
pixels in the bad pixel map. This avoids an additional sweep through
the image data, and makes it possible to skip the NaN/inf check
altogether if the image data comes, as it often does, in format which
can't represent NaN/inf anyway.
Finally, it removes quite a lot of duplicated code.
|
|
Strongly negative peaks can occur if there are unmasked bad pixels.
These cause the refinement to diverge badly. This change stabilises the
refinement such that it works even in these cases. But of course, the
real solution is to mask out those pixels.
Negative intensity peaks are unlikely to show up "for real" in the peak
search results (because we look for strong peaks!). However, if the
intensity is negative, we aren't even sure that the peak exists at all
and have no reason to assume it should be close to the Bragg condition.
|
|
|
|
|
|
|
|
|
|
These FP calls seem to be slower than expected. Using only one doubles
the speed.
|
|
|
|
|
|
|
|
Previously, a placeholder was put in the queue ("ZMQdata //" or
"ASAPOdata //"), and replaced by image_read_data_block. Instead, the
"final" placeholder can be put in the queue already.
Note that ASAP::O, at least, will replace this placeholder with a
filename delivered by the data transport.
|
|
With online processing, we might end up with a very long stream. It
should not be so easily deleted if indexamajig is restarted!
|
|
|
|
This number has to be at least 2x as high as the number of detector
panels because, when using HDF5 and a bad pixel map, each panel will
have an H5Dopen2 and H5Dread block inside create-badmap.
|
|
Unfortunately, the complicated series of nested printf()s doesn't work
well from multiple processes.
|
|
Improvements:
- Recursive, so we can see how things are working at different levels
- Everything is profiled, even if not explicitly labelled
- No possibility of losing time
- Detects mistakes if routines aren't wrapped correctly
|
|
|
|
|
|
|