diff options
-rw-r--r-- | julia/CrystFEL/src/reflists.jl | 15 | ||||
-rw-r--r-- | julia/process_hkl.jl | 5 |
2 files changed, 16 insertions, 4 deletions
diff --git a/julia/CrystFEL/src/reflists.jl b/julia/CrystFEL/src/reflists.jl index 89967d6f..901162e8 100644 --- a/julia/CrystFEL/src/reflists.jl +++ b/julia/CrystFEL/src/reflists.jl @@ -108,6 +108,21 @@ function Base.getindex(reflist::RefList{T}, indices) where T end +function Base.get!(reflist::RefList{T}, indices) where T + + refl = @ccall libcrystfel.find_refl(reflist.internalptr::Ptr{InternalRefList}, + indices[1]::Cint, + indices[2]::Cint, + indices[3]::Cint)::Ptr{InternalReflection} + + if refl == C_NULL + return push!(reflist, indices) + else + return T(refl) + end +end + + function Base.push!(reflist::RefList{T}, indices) where T refl = @ccall libcrystfel.add_refl(reflist.internalptr::Ptr{InternalRefList}, diff --git a/julia/process_hkl.jl b/julia/process_hkl.jl index ab2a6a20..ac6ec662 100644 --- a/julia/process_hkl.jl +++ b/julia/process_hkl.jl @@ -9,10 +9,7 @@ for (cr,reflections) in allcrystals(st) for refl in reflections indices = asymmetricindices(sym, refl.indices) - model_version = merged[indices] - if model_version === nothing - model_version = push!(merged, indices) - end + model_version = get!(merged, indices) w = 1.0 mean = model_version.intensity |