aboutsummaryrefslogtreecommitdiff
path: root/julia/CrystFEL
AgeCommit message (Collapse)Author
2024-05-13Julia: Add basic wrapper for compare_reindexed_cell_parametersThomas White
2024-04-24Julia: Add 'setreflections!' to add a RefList for a Crystal in an imageThomas White
2024-04-24Julia: Avoid making a list of NothingThomas White
The type of the list needs to be correct, otherwise we can't push to it later.
2024-02-27Julia: Do polarisation correction via CrystFEL functionThomas White
The Julia-native correction was 50% slower.
2024-02-27Julia: Move merging utils to separate moduleThomas White
2024-02-26Julia: RefList: Return indices as vectors, not tuplesThomas White
We're going to be doing a lot of linear algebra with these numbers, so this makes more sense.
2024-02-26Julia: UnitCell: Add accessors for cell parameters and basis vectorsThomas White
2024-02-21Julia: Set finalizers for RefList and Crystal when taken from imageThomas White
2024-02-21Julia: chunkread: Expose option for reconstructing image data arrays/detgeomThomas White
It makes a big performance difference to avoid creating these arrays. We will just need to deal with the fact that an Image might not have a DetGeom or data arrays. This commit also sets sensible chunkread options for allcrystals().
2024-02-21Julia: RefList: Return nothing if no reflections in listThomas White
2024-02-19Julia: Add Base.get!(::Reflist, indices)Thomas White
2024-02-07Julia: Add allcrystals()Thomas White
2024-02-07Julia: Add push!(::RefList, hkl)Thomas White
2024-02-07Julia: RefList: index using tupleThomas White
I realised that separate h k l parameters leads to a profusion of argument splatting.
2024-02-06Julia: Add "savereflist!"Thomas White
2024-02-06Julia: Constructor for RefList{MergedReflection}Thomas White
2024-02-06Julia: Fix docsThomas White
2024-02-06Julia: Add 'rotategroup!'Thomas White
2024-02-06Julia: Add chunkread()Thomas White
2024-02-06Julia: Add peak search algorithmsThomas White
2024-02-06Julia: Add asymmetricindices()Thomas White
2024-02-06Julia: Add Reflection settersThomas White
2024-02-06Julia: Expose partiality modellingThomas White
2024-02-06Julia: Add push!(image, crystal, reflections)Thomas White
New method needed following "Crystals shouldn't own RefLists" patch series.
2024-02-06Julia: push!(image, crystal): Mark crystal as not to be freedThomas White
The crystal must also be added to the image's list, so that it doesn't get GCed while the image is still around.
2024-02-06Julia: Use cfstrdup (not strdup)Thomas White
2024-02-06Julia: Get rid of crystal.reflectionsThomas White
2024-02-06Julia: Crystal: Improve show method, add accessorsThomas White
I'm not sure about these field names, yet.
2024-02-06Julia: Fix image.peaklist memory managementThomas White
2024-02-06Julia: predictreflections: add typesThomas White
This is to stop me from putting the image and crystal the wrong way round.
2024-02-06Julia: Add show method for ImageThomas White
2024-02-06Julia: translategroup: Add an exclamation pointThomas White
2024-02-06Julia: UnitCell: Fix spurious precisionThomas White
2024-02-06Julia: Remove leftover crystal.in_imageThomas White
2024-02-06Julia: Crystal: Complain when requesting unrecognised fieldThomas White
2024-02-06Julia: Fix stack overflow with image.peaklistThomas White
2024-02-06Julia: add translategroup() (and use it)Thomas White
2024-02-06Ownership for Crystal.CellThomas White
2024-02-06Julia: MM semantics for Image.crystalsThomas White
2024-02-06Julia: Expose crystals and reflection lists from imageThomas White
The memory management isn't quite right here yet.
2024-02-06Julia: Use jl_malloc etc for memory managementThomas White
2024-02-06Julia: Forbid non-deep copying of a PeakListThomas White
We cannot have two PeakList objects pointing at the same underlying ImageFeatureList.
2024-02-06Julia: Image/PeakList memory semantics (again)Thomas White
Previous commit a6462e1f0 was still not right. If the image gets freed, the PeakList can be left with a dangling reference. If the peak list gets replaced at the C level (e.g. by running a new peak search), Julia will have no way of knowing about it. Instead of having the PeakList know if it's associated with an image, it's better to have the Image know (at the C level) if it's responsible for freeing the ImageFeatureList. As soon as the ImageFeatureList is exposed to the Julia GC via a PeakList object, it becomes Julia's responsibility to free it. The Julia Image structure contains a reference to the Julia PeakList, to prevent this from happening until either the image is freed or a new PeakList is substituted. The two references (Julia image.peaklist and C image->features) have to be kept in sync, and we check image->features every time the peaklist is requested.
2024-02-06Julia: Make a copy of the cell when creating a CrystalThomas White
We could do some more reference tracking stuff here, but it seems a little excessive.
2024-02-06Julia: fix Image/PeakList memory semanticsThomas White
The previous commit 3bb46f49 was a mistake. We can't just free the old peak list, because there might still be a PeakList object around that refers to it. This new version keeps a record of the PeakList object itself, setting in_image=false if a new list is added, so that it can be freed by the GC. I made an attempt at making this thread-safe, but I think it's impossible to get it completely correct. One should simply avoid setting any Image fields in the same structure from different threads.
2024-02-06Julia: Free old peak list on re-assignmentThomas White
2024-02-06Julia: set filename and event ID for imageThomas White
2024-02-06Julia: Write the DataTemplate to the streamThomas White
2024-02-06Julia: Add catch-all setproperty for imageThomas White
This allows e.g. image.serial to be set.
2024-02-06Julia: Implement setting of cr.reflectionsThomas White