diff options
author | Thomas White <taw@physics.org> | 2024-04-18 14:32:14 +0200 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2024-04-18 14:32:14 +0200 |
commit | 52bde38abbcb53d163355a71fc9e99332ffe3dee (patch) | |
tree | 54bf334103708bcbf0b821c583b06f66769edf22 /julia/CrystFEL/src/peaksearch.jl | |
parent | 536d1a563e5c93cbbefb3556ea897acaf8fa70ce (diff) | |
parent | 62a2fdee1b7e69a1fe1ecb58e286866c41b6bb81 (diff) |
Merge branch 'julia'
Diffstat (limited to 'julia/CrystFEL/src/peaksearch.jl')
-rw-r--r-- | julia/CrystFEL/src/peaksearch.jl | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/julia/CrystFEL/src/peaksearch.jl b/julia/CrystFEL/src/peaksearch.jl new file mode 100644 index 00000000..aaaee16c --- /dev/null +++ b/julia/CrystFEL/src/peaksearch.jl @@ -0,0 +1,74 @@ +module PeakSearch + +import ..CrystFEL: libcrystfel +import ..CrystFEL.Images: InternalImage +import ..CrystFEL.PeakLists: PeakList, InternalPeakList + +export zaefpeaks, peakfinder8, peakfinder9 + + +function tf10(val) + if val + return 1 + else + return 0 + end +end + + +function zaefpeaks(image; threshold=100, mingrad=100000, minsnr=5, + radiusinn=4, radiusmid=5, radiusout=7, usesaturated=true) + out = @ccall libcrystfel.search_peaks(image.internalptr::Ptr{InternalImage}, + threshold::Cfloat, + mingrad::Cfloat, + minsnr::Cfloat, + radiusinn::Cdouble, + radiusmid::Cdouble, + radiusout::Cdouble, + tf10(usesaturated)::Cint)::Ptr{InternalPeakList} + if out == C_NULL + throw(ErrorException("Peak search failed")) + end + PeakList(out) +end + + + +function peakfinder8(image; threshold=100, minsnr=5, minpix=2, maxpix=200, + localbg=3, minres=0, maxres=5000, usesaturated=true, maxpeaks=2000) + out = @ccall libcrystfel.peakfinder8(image.internalptr::Ptr{InternalImage}, + maxpeaks::Cint, + threshold::Cfloat, + minsnr::Cfloat, + minpix::Cint, + maxpix::Cint, + localbg::Cint, + minres::Cint, + maxres::Cint, + tf10(usesaturated)::Cint, + 0::Cint, + C_NULL::Ptr{Cvoid})::Ptr{InternalPeakList} + if out == C_NULL + throw(ErrorException("Peak search failed")) + end + PeakList(out) +end + + +function peakfinder9(image; minsnrbig=7, minsnrpeak=6, minsnrwhole=5, minbgsig=11, + brightpxcut=-Inf, window=5) + out = @ccall libcrystfel.search_peaks_peakfinder9(image.internalptr::Ptr{InternalImage}, + minsnrbig::Cfloat, + minsnrpeak::Cfloat, + minsnrwhole::Cfloat, + minbgsig::Cfloat, + brightpxcut::Cfloat, + window::Cint)::Ptr{InternalPeakList} + if out == C_NULL + throw(ErrorException("Peak search failed")) + end + PeakList(out) +end + + +end # of module |