aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2024-01-22 11:54:52 +0100
committerThomas White <taw@physics.org>2024-02-06 16:59:35 +0100
commitc2bbea9374aa940c6dc5f8102614470aab1baa8e (patch)
treeddf2580ee23a8fee1d06ec66524e4e6512b246af
parentd371a2b753fd20da36ec6a46f06e4bc8f058f1fa (diff)
Julia: Expose partiality modelling
-rw-r--r--julia/CrystFEL/src/CrystFEL.jl3
-rw-r--r--julia/CrystFEL/src/diffcalc.jl33
2 files changed, 30 insertions, 6 deletions
diff --git a/julia/CrystFEL/src/CrystFEL.jl b/julia/CrystFEL/src/CrystFEL.jl
index 431fb51e..1b1ee52b 100644
--- a/julia/CrystFEL/src/CrystFEL.jl
+++ b/julia/CrystFEL/src/CrystFEL.jl
@@ -67,7 +67,8 @@ export Image
include("diffcalc.jl")
using .DiffractionCalculations
-export predictreflections
+export predictreflections, calculatepartialities!
+export PartialityModel, UnityModel, XSphereModel, OffsetModel, RandomModel, GeneralGaussianModel
include("indexing.jl")
using .Indexing
diff --git a/julia/CrystFEL/src/diffcalc.jl b/julia/CrystFEL/src/diffcalc.jl
index d89376ce..1c6aea9c 100644
--- a/julia/CrystFEL/src/diffcalc.jl
+++ b/julia/CrystFEL/src/diffcalc.jl
@@ -5,17 +5,40 @@ import ..CrystFEL.Images: InternalImage, Image
import ..CrystFEL.Crystals: InternalCrystal, Crystal
import ..CrystFEL.RefLists: RefList, UnmergedReflection, InternalRefList
import ..CrystFEL.Symmetry: SymOpList
-export predictreflections
+export predictreflections, calculatepartialities!
+export PartialityModel, UnityModel, XSphereModel, OffsetModel, RandomModel, GeneralGaussianModel
+
+
+"""
+Enumeration of the available partiality models.
+"""
+@enum PartialityModel begin
+ UnityModel
+ XSphereModel
+ OffsetModel
+ RandomModel
+ GeneralGaussianModel
+end
function predictreflections(cr::Crystal, image::Image; maxres=1e10)
- refls = ccall((:predict_to_res, libcrystfel),
- Ptr{InternalRefList},
- (Ptr{InternalCrystal}, Ptr{InternalImage}, Cdouble),
- cr.internalptr, image.internalptr, maxres)
+
+ refls = @ccall libcrystfel.predict_to_res(cr.internalptr::Ptr{InternalCrystal},
+ image.internalptr::Ptr{InternalImage},
+ maxres::Cdouble)::Ptr{InternalRefList}
sym = SymOpList("1")
return RefList{UnmergedReflection}(refls, sym)
end
+function calculatepartialities!(reflist::RefList{UnmergedReflection},
+ cr::Crystal, image::Image; model=XSphereModel, maxres=1e10)
+
+ @ccall libcrystfel.calculate_partialities(reflist.internalptr::Ptr{InternalRefList},
+ cr.internalptr::Ptr{InternalCrystal},
+ image.internalptr::Ptr{InternalImage},
+ model::Cint)::Cvoid
+end
+
+
end # of module