aboutsummaryrefslogtreecommitdiff
path: root/libcrystfel
AgeCommit message (Collapse)Author
2022-09-20load_hdf5_hyperslab: Add missing cleanupThomas White
2022-09-08Stream: don't open stream if headers aren't understoodThomas White
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.
2022-09-02RefList: assert that a Reflection can only be on one listThomas White
2022-08-22image_create_dp_bad_sat: Initialise saturation array to infinityThomas White
2022-08-18Restructure image data array creationThomas White
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.
2022-07-12Zero-weight negative intensity peaks in prediction refinementThomas White
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.
2022-06-09pair_peaks: Use fabs instead of abs for floating point valuesThomas White
2022-06-09Remove some unused variablesThomas White
2022-06-02Meson: Don't look for cJSON unless Seedee is foundThomas White
2022-06-02Add worker ID to profiling dataThomas White
2022-06-02Add profiling for bad region generationThomas White
2022-06-02Use isfinite() instead of isnan() || isinf()Thomas White
These FP calls seem to be slower than expected. Using only one doubles the speed.
2022-06-02Fix horrific Seedee memory leakThomas White
2022-06-02Seedee deserializationThomas White
2022-06-02indexamajig: Track metadata (e.g. for ASAP::O)Thomas White
2022-06-02Generate placeholder filename/event earlierThomas White
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.
2022-06-02Refuse to overwrite an existing streamThomas White
With online processing, we might end up with a very long stream. It should not be so easily deleted if indexamajig is restarted!
2022-06-02Profiling: Increase debugging informationThomas White
2022-06-02Profiling: Increase MAX_PROFILE_CHILDRENThomas White
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.
2022-06-02Merge branch 'better-profiling'Thomas White
2022-06-02Meson: Replace '1' with 'true' inside conf_data.set10Thomas White
Use of numbers (rather than booleans) in this routine is deprecated in recent meson versions.
2022-05-04Write profile information in one call to write()Thomas White
Unfortunately, the complicated series of nested printf()s doesn't work well from multiple processes.
2022-05-04Add improved profilingThomas White
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
2022-05-03Strip out time-accountsThomas White
2022-04-20Recognise .nx5 as HDF5Thomas White
2022-04-20Install time-accounts.hThomas White
2022-04-05indexamajig: Fix profiling when using streamed dataThomas White
2022-04-05Time accounts: make sure that last account is loggedThomas White
2022-03-18FormattingThomas White
2022-03-09Meson: enable building without HDF5Thomas White
2022-03-08read_peaks: Simplify logicThomas White
2022-03-08Fix slabbiness assumptionsThomas White
This adds a new routine, data_template_slabby_file_to_panel_coords, to be used (only!) in places where external forces require assumptions of slabbiness: pixel maps and MsgPack/HDF5 peak lists (including CXI-style). This also fixes the prototype of data_template_file_to_panel_coords to make the panel number strictly an input parameter. This was an oversight in the implementation of DataTemplate, and caused problems when reading non-slabby streams. Fixes: https://gitlab.desy.de/thomas.white/crystfel/-/issues/66
2022-03-08stream_open_for_write: Fix documentationThomas White
2022-03-08Drop compatibility with old stream format versionsThomas White
CrystFEL hasn't written any version other than 2.3 since before 2015. Supporting the old versions is getting difficult because of slabbiness assumptions, so it's time to get rid of it.
2022-03-07time_accounts_init: Add a warning if timer is not availableThomas White
2022-03-07Add image_read_with_time_accounting for fine-grained data load profilingThomas White
2022-03-07Move time-accounts to libcrystfelThomas White
2022-03-02Move file_exists() check to right before opening the HDF5Thomas White
No other code path under image_expand_frames() actually opens the file, because HDF5s are currently the only format supporting multiple frames. The aim of the existence check is to give a better error message (compared to the HDF5 backtrace splurge), but it doesn't need to be done so early. In fact, checking so early had the side-effect of breaking indexamajig --wait-for-file. Fixes: https://gitlab.desy.de/thomas.white/crystfel/-/issues/65
2022-03-02Formatting and increased verbosityThomas White
2022-01-27correct a simple typoJerome Kieffer
2021-11-15pair_peaks: Use reciprocal space distance instead of pixel distanceThomas White
The reciprocal space distance limit has been set as one third of the smallest inter-Bragg spacing. Fixes: https://gitlab.desy.de/thomas.white/crystfel/-/issues/38
2021-11-15Ensure that crystal doesn't end up with invalid reflist after prediction ↵Thomas White
refinement
2021-10-28Make symmetry operation parser re-entrantThomas White
Fixes: https://gitlab.desy.de/thomas.white/crystfel/-/issues/1
2021-10-28Add 'mask_panel_edges' to geometry fileThomas White
Closes: https://gitlab.desy.de/thomas.white/crystfel/-/issues/27
2021-10-28Add a commentThomas White
2021-10-26Remove detector rail direction altogetherThomas White
This got missed out by accident in the conversion to DataTemplate, but absolutely no-one noticed. In the meantime, my views on how the geometry files should work have changed somewhat. I don't want to maintain the extra complexity here when it isn't even clear that it will eliminate the need to re-refine geometry for each camera length. This commit just takes the rail direction stuff out of the documentation and the geometry file parser. Closes: https://gitlab.desy.de/thomas.white/crystfel/-/issues/50
2021-10-26create_detgeom: Factorise panel templateThomas White
2021-10-22pair_peaks: Skip reflections if the indices are too largeThomas White
2021-10-22reflection_new: Check indices are not too largeThomas White
Previously, the combination of reflection_new and add_refl_to_list gave a way to side-step the usual check that the indices were not larger than 512. This causes corruption of the RefList, so much be avoided.
2021-10-20Remove unused parameterThomas White