aboutsummaryrefslogtreecommitdiff
path: root/libcrystfel/src
AgeCommit message (Collapse)Author
2024-02-06Fix incorrect uses of cell_freeThomas White
This also gets rid of crystal_copy_deep. From now on, all crystal_copy calls also copy the UnitCell.
2024-02-06Crystals shouldn't own RefLists (part 4)Thomas White
This fixes the general prediction/partiality parts.
2024-02-06Crystals shouldn't own RefLists (part 3)Thomas White
This fixes integration.c, peaks.c and process_hkl.c.
2024-02-06Crystals shouldn't own RefLists (part 2)Thomas White
This commit replaces image.crystals with an array of small structs, each consisting of a Crystal-RefList pair. index.c and stream.c are updated, more to follow.
2024-02-06Crystals shouldn't own RefLists (part 1)Thomas White
This is a terrible bit of API. A Crystal contains both the parameters for a calculation (e.g. prediction) and the results. Just look at post-refinement.c for an example of the mess this makes when trying to do calculations. This commit removes the reflection list from the Crystal structure. Future commits in this series will fix the resulting build carnage. This also gets rid of vestigial field pr_dud, and adds initialisers for all (remaining) fields.
2024-02-06Use libcrystfel memory allocation routines everywhereThomas White
2024-02-06Add hooks for custom memory allocation in libcrystfelThomas White
2024-02-06image_add_feature: Remove "image" argumentThomas White
It hasn't been needed for ages.
2024-02-06Crystal: Remove reference to image structure (part 1)Thomas White
2024-02-02Fix lies in documentationThomas White
2024-01-30Add data_template_write_to_fh and stream_write_data_templateThomas White
2024-01-30asdf: Use fftw_alloc_{real,complex}Thomas White
A little clearer than fftw_malloc(*sizeof)
2024-01-30asdf: Remove unnecessary fftw_cleanupThomas White
This is only needed to reset FFTW to a "pristine" state, which is not required here, and possibly even detrimental.
2024-01-30asdf: Use FFTW arrays directlyThomas White
We don't need to fish out the arrays and use FFTW's "new array execution" functions: http://fftw.org/fftw3_doc/New_002darray-Execute-Functions.html
2024-01-12indexamajig: Implement --max-mille-levelThomas White
2024-01-12align_detector: Enumerate directory contents if necessaryThomas White
2024-01-05get_hkl: Read MTZ filesThomas White
There are still some rough edges, e.g. it only works with a simple I/SIGI column (not I+/I-), and can't yet interpret the symmetry information in the file. However, it's still better than the old mtz2hkl script. Closes: https://gitlab.desy.de/thomas.white/crystfel/-/issues/7
2023-12-19Check for duplicate member in panel groupThomas White
Example: group_all = q0,q1,q2,q2
2023-12-19index_pattern: Gracefully handle image with no peaksThomas White
2023-09-23indexamajig: Re-use the image data arraysThomas White
We noticed that constant freeing and re-allocating the (potentially quite large) arrays resulted in much lower performance. Since we know that all images have the same data layout, we can safely re-use the arrays. This gives a large speedup.
2023-09-23image_create_dp_bad_sat: Don't worry about "sat"Thomas White
The saturation array is created by create_satmap when needed, which takes care that all panels get an array (so we only have to check image->sat != NULL). The array created by image_create_dp_bad_sat was actually leaked! In any case, saturation maps are rarely used. We can do without the extra allocations. The routine name has been changed accordingly, to prevent future confusion.
2023-09-23Fix a couple of profiling memory errorsThomas White
The "children" array was the wrong size, and not freed. Also, some formatting fussiness.
2023-09-22Don't complain about missing 'all' group until it's actually neededThomas White
2023-09-20Fix inappropriate use of r_devThomas White
These should be get_exerr. Following 1ae9a4582, the r_dev values are no longer useful physical quantities, only a refinement target function. This was causing the last few Git versions to not predict any reflections at all!
2023-09-19Prediction refinement: Weaken restraint and reduce number of iterationsThomas White
The restraint was way too strong, after the last round of tweaking. With a weaker restraint, the algorithm converges very quickly - it's practically linear - so ten iterations is way too much.
2023-09-18Use a*a instead of pow(a, 2)Thomas White
2023-09-18Build EXC_WEIGHT into r_devThomas White
This avoids weird weighting factors everywhere and much confusion. Since Millepede doesn't have an easy way of weighting measurements (only via altering the ESD values), treating it as a units conversion seems to be easier.
2023-09-18pred_residual: Remove vestigial conversion to metresThomas White
We want the residual in pixels, as described in the comment for EXC_WEIGHT. This routine is only used for displaying the total residuals, not for the real minimisation maths. However, we need to be clear.
2023-09-18Prediction refinement: Record excitation error and distance residuals separatelyThomas White
2023-09-18Prediction refinement: Record initial residual and total shiftsThomas White
2023-09-18Merge branch 'millepede'Thomas White
Fixes: https://gitlab.desy.de/thomas.white/crystfel/-/issues/3 Fixes: https://gitlab.desy.de/thomas.white/crystfel/-/issues/29
2023-09-12Fix nominal space group when exporting MTZ in PG 2Thomas White
2023-09-12Fix sense of panel rotationsThomas White
Should always be a right-hand grip rotation around positive axis direction.
2023-09-12Seedee: Handle format i4<Thomas White
2023-08-30Add excitation error to Millepede data (local-only measurement)Thomas White
2023-08-30FussinessThomas White
2023-08-29Automatically add top-level group for single-panel detectorsThomas White
2023-08-24Use built-in Mille writer instead of wrapping C++ versionThomas White
2023-07-28Tweak sigmasThomas White
2023-07-28align_detector: Decode labels and apply geometry correctionsThomas White
2023-07-28Don't attempt to write Mille data without geometry groupsThomas White
2023-07-28Unconditionally compile crystfel-mille.cThomas White
We need mille_label() for align_detector, even if we don't have Millepede. Some of this complexity can be removed later by re-implementing "mille()". The build system and wrapper code is already longer than a pure C implementation would be.
2023-07-28Initialise det->top_groupThomas White
2023-07-28data_template_free: Free the groups as wellThomas White
2023-07-28detgeom_free: Free the groups as wellThomas White
2023-07-28Fix some memory leaksThomas White
2023-07-28Adjust refinement weights and restraintsThomas White
2023-07-28Fix sigmasThomas White
2023-07-28Fix parameter refinement unitsThomas White
The *parameters* will be in metres, radians, m^-1 for translation, rotation and cell parameters respectively. The *residuals*, however, are in pixels.
2023-07-28Avoid repetitive codeThomas White