Age | Commit message (Collapse) | Author |
|
|
|
|
|
Big improvement on just sending NAN back.
Fixes: https://gitlab.desy.de/thomas.white/crystfel/-/issues/37
|
|
Prompted by the article linked below, for each FIXME/TODO I've either
referenced an issue in the tracker, or removed it if it's not worth
fixing.
https://schleiss.io/plotting-source-code-todos-for-open-source-projects
|
|
This removes some old stub code. There doesn't seem to be a big need
for doing what the FIXME suggests.
|
|
|
|
|
|
|
|
|
|
This clears up multiple layering violations which were starting to get
in the way. It enables "string" headers to be stored directly, and it
will make it much simpler to add new header types in the future.
Along the way, this changes all the floating point header stuff to use
double precision. This is needed for EuXFEL event IDs.
Closes: https://gitlab.desy.de/thomas.white/crystfel/-/issues/34
|
|
convert_int was using strtod. Whoops!
|
|
|
|
When there is only one panel, we can safely assume that fs/ss bad
regions refer to it without it being stated in the geometry file.
This allows some older Pilatus geometry files to be used without
complaints.
A further improvement would be to determine the panel when all the data
comes from one "slab" so the panel is still ambiguous. However, on
further thought it seems like a lot of work to do this reliably in all
cases. I'm not even sure that this case in particular is causing anyone
problems.
Closes: https://gitlab.desy.de/thomas.white/crystfel/-/issues/32
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
If this happens once, it'll probably happen every frame. This makes
things very noisy.
|
|
This will help to avoid mistakes when people put statements at the end
of the geometry file, rather than the top.
Closes https://gitlab.desy.de/thomas.white/crystfel/-/issues/20.
|
|
|
|
This removes the big potential for confusion, which has happened several
times (see e.g. 095cbebaf6). It also fixes in-tree builds with CMake
(but seriously, always use out-of-tree builds).
Fixes #2.
|
|
This code hasn't been looked at for a very long time, and can be made a
bit faster by iterating in a more cache-friendly way.
|
|
|
|
The unique filename is needed by the GUI for looking up results in a
stream. Otherwise, the filename is "(null)" for everything and the
lookup just returns the first chunk in the stream.
The filename is generated based on the unique serial number for each
chunk, and is therefore unique across one run of indexamajig regardless
of the number of worker processes (-j). This might have to change in future
to accommodate jobs run across multiple nodes, if there is any demand
for looking at results in one big concatenated stream.
This also changes the condition for deciding when to look for a 'real'
file, to take into account that there is always a non-NULL filename.
|
|
|
|
The changes in b22f6f524 were incorrect. config.h should never be
included from libcrystfel headers, because that will include the main
CrystFEL program config.h instead.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This moves the entry point for loading MsgPack data to a new function,
image_read_data_block. Inside image.c, the image structure can be
created using exactly the same functions as for data files.
|
|
|
|
For data formats other than HDF5, the location can be anything.
|
|
Indexamajig uses only ZMQ, to receive streaming data, while libcrystfel
uses only msgpack to implement another type of image format.
The two of these are eventually tied together in process_image, which
does this: if ( have_zmq_data ) interpret_zmq_data_as_msgpack;
- however, they would be easy to split up if we wanted to do something
else (CBF data over ZMQ, anyone?).
This commit also switches the ZMQ connector to use a pub/sub socket
instead of a request/reply one. This matches changes in OnDA.
At the moment, the MessagePack image reader simply dumps the object to
disk.
|
|
|
|
This isn't necessary after all, for the same reason that im-sandbox
doesn't need escaping: it can count off the fields where spaces aren't
allowed, and anything left is the filename. I was over-thinking things.
|
|
|
|
|
|
This simultaneously implements --copy-header/--copy-hdf5-field and gives
access to metadata (e.g. detector position or wavelength) when loading
from a stream with header-specified values.
|
|
|
|
Unfortunately, PinkIndexer needs the real camera length for its centre
refinement. Giving a fake value and scaling the resulting shift does
not work - the indexing rate drops with even a small error.
Ideally, this would work in the same way as --wavelength-estimate, by
using a static value from the geometry file if it's given. However,
this is rather complicated to implement because of the way all the units
stuff is implemented. Therefore, this is left as an improvement for the
future.
|
|
|
|
|