Skip to content

Commit 68f2fb5

Browse files
committed
Update documentation of peakfinder and sparsify applications
1 parent ad52581 commit 68f2fb5

File tree

2 files changed

+39
-41
lines changed

2 files changed

+39
-41
lines changed

pyFAI/app/peakfinder.py

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# Project: Fast Azimuthal integration
55
# https://github.com/silx-kit/pyFAI
66
#
7-
# Copyright (C) 2012-2021 European Synchrotron Radiation Facility, Grenoble, France
7+
# Copyright (C) 2012-2022 European Synchrotron Radiation Facility, Grenoble, France
88
#
99
# Authors: Jérôme Kieffer <[email protected]>
1010
#
@@ -27,7 +27,7 @@
2727
# THE SOFTWARE.
2828
#
2929

30-
"""peakfinder: Count the number of Bragg-peaks on an image
30+
"""peakfinder: Count the number of Bragg-peaks on an image.
3131
3232
Bragg peaks are local maxima of the background subtracted signal.
3333
Peaks are integrated and variance propagated. The centroids are reported.
@@ -38,19 +38,18 @@
3838
This program requires OpenCL. The device needs be properly selected.
3939
"""
4040

41-
__author__ = "Jerome Kieffer"
41+
__author__ = "Jérôme Kieffer"
4242
__contact__ = "[email protected]"
4343
__license__ = "MIT"
4444
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
4545
__date__ = "03/02/2022"
46-
__status__ = "status"
46+
__status__ = "production"
4747

4848
import os
4949
import sys
5050
import argparse
5151
import time
5252
from collections import OrderedDict
53-
import numpy
5453
import numexpr
5554
import logging
5655
logging.basicConfig(level=logging.INFO)
@@ -98,32 +97,32 @@ def expand_args(args):
9897

9998
def parse():
10099
epilog = "Current status of the program: " + __status__
101-
parser = argparse.ArgumentParser(prog="spasify-Bragg",
100+
parser = argparse.ArgumentParser(prog="peakfinder",
102101
description=__doc__,
103102
epilog=epilog)
104103
parser.add_argument("IMAGE", nargs="*",
105104
help="File with input images. All results are concatenated into a single HDF5 file.")
106105
parser.add_argument("-V", "--version", action='version', version=version,
107106
help="output version and exit")
108107
parser.add_argument("-v", "--verbose", action='store_true', dest="verbose", default=False,
109-
help="show information for each frame")
108+
help="Show information for each frame")
110109
parser.add_argument("--debug", action='store_true', dest="debug", default=False,
111-
help="show debug information")
110+
help="Show debug information")
112111
parser.add_argument("--profile", action='store_true', dest="profile", default=False,
113-
help="show profiling information")
112+
help="Show profiling information")
114113
group = parser.add_argument_group("main arguments")
115114
# group.add_argument("-l", "--list", action="store_true", dest="list", default=None,
116115
# help="show the list of available formats and exit")
117116
group.add_argument("-o", "--output", default='spots.h5', type=str,
118117
help="Output filename")
119118
group.add_argument("--save-source", action='store_true', dest="save_source", default=False,
120-
help="save the path for all source files")
119+
help="Save the path for all source files")
121120

122121
group = parser.add_argument_group("Scan options")
123122
group.add_argument("--grid-size", nargs=2, type=int, dest="grid_size", default=None,
124-
help="Grid along which the data was acquired")
123+
help="Grid along which the data was acquired, disabled by default")
125124
group.add_argument("--zig-zag", action='store_true', dest="zig_zag", default=False,
126-
help="The scan was performed with a zig-zag pattern")
125+
help="Build the 2D image considering the scan was performed with a zig-zag pattern")
127126
# TODO: implement those
128127
# group = parser.add_argument_group("optional behaviour arguments")
129128
# group.add_argument("-f", "--force", dest="force", action="store_true", default=False,
@@ -150,22 +149,22 @@ def parse():
150149
group.add_argument("-b", "--beamline", type=str, default="beamline",
151150
help="Name of the instument (for the HDF5 NXinstrument)")
152151
group.add_argument("-p", "--poni", type=str, default=None,
153-
help="geometry description file")
152+
help="Geometry description file: Mandatory")
154153
group.add_argument("-m", "--mask", type=str, default=None,
155-
help="mask to be used for invalid pixels")
154+
help="Mask to be used for invalid pixels")
156155
group.add_argument("--dummy", type=float, default=None,
157-
help="value of dynamically masked pixels (disabled by default)")
156+
help="Value of dynamically masked pixels (disabled by default)")
158157
group.add_argument("--delta-dummy", type=float, default=None,
159-
help="precision for dummy value")
158+
help="Precision for dummy value")
160159
group.add_argument("--radial-range", dest="radial_range", nargs=2, type=float, default=None,
161160
help="radial range as a 2-tuple of number of pixels (all available range by default)")
162161
group.add_argument("-P", "--polarization", type=float, default=None,
163162
help="Polarization factor of the incident beam [-1:1] (off by default, 0.99 is a good guess on synchrotrons")
164163
group.add_argument("-A", "--solidangle", action='store_true', default=None,
165164
help="Correct for solid-angle correction (important if the detector is not mounted normally to the incident beam, off by default")
166165
group = parser.add_argument_group("Sigma-clipping options")
167-
group.add_argument("--bins", type=int, default=1000,
168-
help="Number of radial bins to consider (1000 by default)")
166+
group.add_argument("--bins", type=int, default=800,
167+
help="Number of radial bins to consider (800 by default)")
169168
group.add_argument("--unit", type=str, default="r_m",
170169
help="radial unit to perform the calculation (r_m by default)")
171170
group.add_argument("--cycle", type=int, default=5,
@@ -178,9 +177,9 @@ def parse():
178177
group.add_argument("--cutoff-pick", dest="cutoff_pick", type=float, default=3.0,
179178
help="SNR threshold for considering a pixel high when searching for peaks (3 by default)")
180179
group.add_argument("--noise", type=float, default=1.0,
181-
help="Quadratically added noise to the background (1 by default")
180+
help="Noise added quadratically to the background (1 by default")
182181
group.add_argument("--patch-size", type=int, default=5,
183-
help="size of the neighborhood for integration (5 by default)")
182+
help="Size of the neighborhood patch for integration (5 by default)")
184183
group.add_argument("--connected", type=int, default=3,
185184
help="Number of high pixels in neighborhood to be considered as a peak (3 by default)")
186185
group = parser.add_argument_group("Opencl setup options")

pyFAI/app/sparsify.py

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# Project: Fast Azimuthal integration
55
# https://github.com/silx-kit/pyFAI
66
#
7-
# Copyright (C) 2012-2021 European Synchrotron Radiation Facility, Grenoble, France
7+
# Copyright (C) 2012-2022 European Synchrotron Radiation Facility, Grenoble, France
88
#
99
# Authors: Jérôme Kieffer <[email protected]>
1010
#
@@ -27,30 +27,29 @@
2727
# THE SOFTWARE.
2828
#
2929

30-
"""Sparsify 2D single crystall diffraction images by separating Bragg peaks from background signal.
30+
"""Sparsify 2D single crystal diffraction images by separating Bragg peaks from background signal.
3131
3232
Positive outlier pixels (i.e. Bragg peaks) are all recorded as they are without destruction.
33-
Peaks are not integrated.
33+
Peaks are not integrated: see the `peakfinder` to perform peak integration.
3434
3535
Background is calculated by an iterative sigma-clipping in the polar space.
3636
The number of iteration, the clipping value and the number of radial bins could be adjusted.
3737
3838
This program requires OpenCL. The device needs be properly selected.
3939
"""
4040

41-
__author__ = "Jerome Kieffer"
41+
__author__ = "Jérôme Kieffer"
4242
__contact__ = "[email protected]"
4343
__license__ = "MIT"
4444
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
45-
__date__ = "01/12/2021"
46-
__status__ = "status"
45+
__date__ = "03/02/2022"
46+
__status__ = "production"
4747

4848
import os
4949
import sys
5050
import argparse
5151
import time
5252
from collections import OrderedDict
53-
import numpy
5453
import numexpr
5554
import logging
5655
logging.basicConfig(level=logging.INFO)
@@ -143,36 +142,36 @@ def parse():
143142

144143
group = parser.add_argument_group("Experimental setup options")
145144
group.add_argument("-b", "--beamline", type=str, default="beamline",
146-
help="Name of the instument (for the HDF5 NXinstrument)")
145+
help="Name of the instument (for the HDF5 NXinstrument, beamline by default)")
147146
group.add_argument("-p", "--poni", type=str, default=None,
148-
help="geometry description file")
147+
help="geometry description file (mandatory)")
149148
group.add_argument("-m", "--mask", type=str, default=None,
150149
help="mask to be used for invalid pixels")
151150
group.add_argument("--dummy", type=float, default=None,
152-
help="value of dynamically masked pixels")
151+
help="value of dynamically masked pixels (disabled by default)")
153152
group.add_argument("--delta-dummy", type=float, default=None,
154153
help="precision for dummy value")
155154
group.add_argument("--radial-range", dest="radial_range", nargs=2, type=float, default=None,
156155
help="radial range as a 2-tuple of number of pixels, by default all available range")
157156
group.add_argument("-P", "--polarization", type=float, default=None,
158-
help="Polarization factor of the incident beam [-1:1], by default disabled, 0.99 is a good guess")
157+
help="Polarization factor of the incident beam [-1:1], by default disabled, 0.99 is a good guess on synchrotrons")
159158
group.add_argument("-A", "--solidangle", action='store_true', default=None,
160159
help="Correct for solid-angle correction (important if the detector is not mounted normally to the incident beam, off by default")
161160
group = parser.add_argument_group("Sigma-clipping options")
162-
group.add_argument("--bins", type=int, default=80,
163-
help="Number of radial bins to consider")
161+
group.add_argument("--bins", type=int, default=800,
162+
help="Number of radial bins to consider (800 by default)")
164163
group.add_argument("--unit", type=str, default="r_m",
165-
help="radial unit to perform the calculation")
164+
help="radial unit to perform the calculation (r_m by default)")
166165
group.add_argument("--cycle", type=int, default=5,
167-
help="precision for dummy value")
168-
group.add_argument("--cutoff-clip", dest="cutoff_clip", type=float, default=5.0,
169-
help="Threshold to be used when performing the sigma-clipping")
166+
help="Number of cycles of clipping (5 by default)")
167+
group.add_argument("--cutoff-clip", dest="cutoff_clip", type=float, default=0.0,
168+
help="Threshold to be used when performing the sigma-clipping (0 by default: use Chauvenet criterion")
170169
group.add_argument("--cutoff-pick", dest="cutoff_pick", type=float, default=3.0,
171-
help="Threshold to be used when picking the pixels to be saved")
170+
help="Threshold to be used when picking the pixels to be saved (3 by default)")
172171
group.add_argument("--error-model", dest="error_model", type=str, default="poisson",
173172
help="Statistical model for the signal error, may be `poisson`(default) or `azimuthal` (slower) or even a simple formula like '5*I+8'")
174-
group.add_argument("--noise", type=float, default=0.5,
175-
help="Noise level: quadratically added to the background uncertainty")
173+
group.add_argument("--noise", type=float, default=1,
174+
help="Noise level: quadratically added to the background uncertainty (default 1)")
176175

177176
group = parser.add_argument_group("Opencl setup options")
178177
group.add_argument("--workgroup", type=int, default=None,
@@ -336,7 +335,7 @@ def process(options):
336335
pf.log_profile()
337336
if pb:
338337
pb.clear()
339-
logger.info(f"Total sparsification time: %.3fs \t (%.3f fps)", t1-t0, cnt/(t1-t0))
338+
logger.info(f"Total sparsification time: %.3fs \t (%.3f fps)", t1 - t0, cnt / (t1 - t0))
340339

341340
return EXIT_SUCCESS
342341

0 commit comments

Comments
 (0)