aboutsummaryrefslogtreecommitdiff
path: root/libcrystfel
AgeCommit message (Collapse)Author
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-29Meson: Simplify Millepede build systemThomas White
There are no dependencies, only a subproject via wrap.
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
2023-07-28Fix incorrectly-sized arrayThomas White
2023-07-28Implement data_template_group_info()Thomas White
2023-07-28Re-define geometry group labelling schemeThomas White
The old version was totally broken. The serial numbers have to contain the complete hierarchy information, otherwise they aren't unique.
2023-07-28Rotation centre coordinates need to be in metres (not pixels)Thomas White
2023-07-28Add rotation gradients for MilleThomas White
2023-07-28Add detgeom_group_centerThomas White
2023-07-28Fix iterate() for prediction refinementThomas White
I was confused when I wrote acd0de4e4a21, and completely broke the maths. To fix it, I copied the guts of iterate() back from the old version and re-created the intermediate steps - switching x/y to fs/ss, calculating fs/ss gradients together and the hooks for Minv.
2023-07-28Redefine ray vector without trigonometryThomas White
This makes the gradients very simple!
2023-07-28Implement rotation gradients (with test)Thomas White