Release notes for CrystFEL version 0.11.1
=========================================
Copyright © 2012-2024 Deutsches Elektronen-Synchrotron DESY,
a research centre of the Helmholtz Association.
See AUTHORS as well as the individual source code files for full contributor details.
CrystFEL is free software: you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version.
CrystFEL is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
CrystFEL. If not, see .
Overview
--------
This release is mainly a bug-fixing release to 0.11.0.
These changes are detailed below. In addition, there were many smaller fixes
and improvements. See the ChangeLog or the Git history for a comprehensive
list of all changes.
A screencast to accompany this release is available at the following locations:
Improvements/bug fixes for detector geometry refinement
-------------------------------------------------------
Improved detector geometry refinement, based on the "Millepede" algorithm
borrowed from particle physics, was introduced in the previous CrystFEL version
(0.11.0). Version 0.11.1 fixes several problems in the geometry files written
out by align_detector (and also adjust_detector), which prevented the refined
geometry files from being used in some circumstances. Corrupted "Mille" data
was also being written by indexamajig in some cases, which has been fixed.
A further problem with the graphical user interface (GUI), where the geometry
file was not correctly found by the geometry refinement task, was corrected.
Two new options have been added to align_detector. `--out-of-plane-tilts`
allows panels to rotate outside the plane of the detector, and
`--camera-length` enables refinement of the overall camera length.
Previously, both of these motions were enabled with `--out-of-plane`. In the
new version. `--out-of-plane` only enables translations out of the detector
plane, not rotations, and does not allow the overall camera length to vary.
If no panel groups are defined in the geometry file at all, CrystFEL will now
automatically create a single top-level group. This allows for basic (level 0)
geometry refinement without any extra work.
As a convenience, CrystFEL now accepts panel group definitions appearing near
the start of the geometry file, before the panels have been defined. The
groups must still appear in correct hierarchy order (lowest levels first).
To maintain compatability with older CrystFEL versions, the panel groups will
be written at the end of the geometry file by align/adjust_detector.
GUI improvements
----------------
A new option "Request exclusive use of compute nodes" has been added to the
Slurm interface of the CrystFEL graphical user interface. This option should
allow for more efficient cluster usage.
In addition, the "Jump to frame" dialogue box now gives two different ways to
specify which frame to jump to.
The progress bar for indexing jobs run via Slurm has also been made more
realistic.
Julia bindings
--------------
An initial version of Julia bindings for "libcrystfel" has been introduced.
This will allow the various building blocks from CrystFEL (peak search,
indexing, spot prediction, reflection data management and so on) to be used
from a high-level programming language. To get started, see
API changes
-----------
Removed routines:
* `crystal_copy_deep`
* `crystal_get_cell_const`
* `crystal_get_reflections`
* `crystal_get_image`
* `crystal_get_image_const`
* `crystal_set_reflections`
* `crystal_set_image`
Added routines:
* `get_lattice_symmetry`
* `crystal_reliquish_cell`
* `image_add_crystal_refls`
* `free_reflistiterator`
* `name_equiv`
* `solve_inv`
* `set_mm_funcs` and `cfmalloc`/`cffree` etc.
Added type definitions:
* `struct crystal_refls`
Changed structure definitions:
* `image` - change of `crystals` to `struct crystal_refls`
* `image` - addition of `owns_peaklist`
Changed routine prototypes:
* `update_predictions` - addition of `image`
* `predict_to_res` - addition of `image`
* `calculate_partialities` - addition of `image`
* `peakfinder8` - return type is now `ImageFeatureList`
* `search_peaks` - return type is now `ImageFeatureList`
* `search_peaks_peakfinder8` - return type is now `ImageFeatureList`
* `search_peaks_peakfinder9` - return type is now `ImageFeatureList`
* `indexing_peak_check` - addition of `peaks`
* `validate_peaks` - addition of `peaks`