Skip to content

Commit

Permalink
Close #2289
Browse files Browse the repository at this point in the history
  • Loading branch information
kif committed Sep 27, 2024
1 parent af47298 commit a9ebda6
Show file tree
Hide file tree
Showing 14 changed files with 119 additions and 115 deletions.
19 changes: 11 additions & 8 deletions src/pyFAI/app/average.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
__contact__ = "Jerome.Kieffer@ESRF.eu"
__license__ = "MIT"
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
__date__ = "21/01/2020"
__date__ = "27/09/2024"
__status__ = "production"

import os
Expand All @@ -47,10 +47,9 @@
except ImportError:
logger.debug("Unable to load hdf5plugin, backtrace:", exc_info=True)

import pyFAI.utils.shell
from pyFAI.utils import logging_utils
import pyFAI.utils.stringutil
from pyFAI import average
from ..utils import logging_utils, stringutil, shell
from .. import average
from .. import version as pyFAI_version, date as pyFAI_date


def parse_algorithms(options):
Expand Down Expand Up @@ -199,9 +198,13 @@ def show_info(self):
self.__bar.display()


def main():
def main(args=None):
"""start the program
:param args: list of arguments, i.e sys.argv[1:]
"""
usage = "pyFAI-average [options] [options] -o output.edf file1.edf file2.edf ..."
version = "pyFAI-average version %s from %s" % (pyFAI.version, pyFAI.date)
version = "pyFAI-average version %s from %s" % (pyFAI_version, pyFAI_date)
description = """
This tool can be used to average out a set of dark current images using
mean or median filter (along the image stack). One can also reject outliers
Expand Down Expand Up @@ -248,7 +251,7 @@ def main():
parser.add_argument("args", metavar='FILE', type=str, nargs='+',
help="Files to be processed")

options = parser.parse_args()
options = parser.parse_args(args)

# logging
if options.verbose is True:
Expand Down
12 changes: 6 additions & 6 deletions src/pyFAI/app/benchmark.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,10 @@
__contact__ = "Jerome.Kieffer@ESRF.eu"
__license__ = "MIT"
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
__date__ = "28/05/2024"
__date__ = "27/09/2024"
__status__ = "development"

from argparse import ArgumentParser
import logging
try:
logging.basicConfig(level=logging.WARNING, force=True)
Expand All @@ -52,16 +53,15 @@
rconsole.spawn_server()
except ImportError:
logger.debug("No socket opened for debugging. Please install rfoo")
import pyFAI.benchmark
from .. import benchmark, version as pyFAI_version, date as pyFAI_date


def main():
from argparse import ArgumentParser
def main(args=None):
description = """Benchmark for Azimuthal integration
"""
epilog = """ """
usage = """benchmark [options] """
version = "pyFAI benchmark version " + pyFAI.version
version = f"pyFAI benchmark version {pyFAI_version}"
parser = ArgumentParser(usage=usage, description=description, epilog=epilog)
parser.add_argument("-v", "--version", action='version', version=version)
parser.add_argument("-d", "--debug",
Expand Down Expand Up @@ -117,7 +117,7 @@ def main():
action="store_true", dest="all", default=False,
help="Benchmark using all available methods and devices")

options = parser.parse_args()
options = parser.parse_args(args)
if options.debug:
pyFAI.logger.setLevel(logging.DEBUG)

Expand Down
25 changes: 14 additions & 11 deletions src/pyFAI/app/detector2nexus.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,17 +28,14 @@
# THE SOFTWARE.

"""Converts a detector description into a NeXus detector usable by other pyFAI utilities"""
__author__ = "Jerome Kieffer"
__author__ = "Jérôme Kieffer"
__contact__ = "Jerome.Kieffer@ESRF.eu"
__license__ = "MIT"
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
__date__ = "21/05/2024"
__date__ = "27/09/2024"
__status__ = "development"

import sys
import numpy
import fabio
import pyFAI
from argparse import ArgumentParser
import logging
logging.basicConfig(level=logging.INFO)
Expand All @@ -48,11 +45,14 @@
import hdf5plugin # noqa
except ImportError:
logger.debug("Unable to load hdf5plugin, backtrace:", exc_info=True)
import numpy
import fabio
from .. import version as pyFAI_version, date as pyFAI_date
from ..detectors import detector_factory


def main():
def main(args=None):
usage = "detector2nexus [options] [options] -o nxs.h5"
version = "detector2nexus version %s from %s" % (pyFAI.version, pyFAI.date)
version = "detector2nexus version %s from %s" % (pyFAI_version, pyFAI_date)
description = """
Convert a complex detector definition (multiple modules, possibly in 3D)
into a single NeXus detector definition together with the mask (and much more in the future)
Expand Down Expand Up @@ -94,19 +94,22 @@ def main():
# parser.add_argument("args", metavar='FILE', type=str, nargs='+',
# help="Files to be processed")

argv = sys.argv
if args is None:
argv = sys.argv[1:]
else:
argv = args
# hidden backward compatibility for -dx and -dy
# A short option only expect a single char
argv = ["-" + a if a.startswith("-dx") else a for a in argv]
argv = ["-" + a if a.startswith("-dy") else a for a in argv]
options = parser.parse_args(args=argv[1:])
options = parser.parse_args(args=argv)

if options.verbose:
logger.setLevel(logging.DEBUG)
else:
logger.setLevel(logging.INFO)

detector = pyFAI.detector_factory(options.detector)
detector = detector_factory(options.detector)
if options.output:
output = options.output
else:
Expand Down
12 changes: 6 additions & 6 deletions src/pyFAI/app/diff_map.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
__contact__ = "Jerome.Kieffer@ESRF.eu"
__license__ = "MIT"
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
__date__ = "14/03/2024"
__date__ = "27/09/2024"
__satus__ = "Production"

import sys
Expand All @@ -46,18 +46,18 @@
except ImportError:
logger.debug("Unable to load hdf5plugin, backtrace:", exc_info=True)

from pyFAI.diffmap import DiffMap
from ..diffmap import DiffMap


def main():
def main(args=None):

dt = DiffMap()
options, config = dt.parse(with_config=True)
options, config = dt.parse(args, with_config=True)

if options.gui:
from silx.gui import qt
from pyFAI.gui.diffmap_widget import DiffMapWidget
from pyFAI.gui.ApplicationContext import ApplicationContext
from ..gui.diffmap_widget import DiffMapWidget
from ..gui.ApplicationContext import ApplicationContext
settings = qt.QSettings(qt.QSettings.IniFormat,
qt.QSettings.UserScope,
"pyfai",
Expand Down
21 changes: 10 additions & 11 deletions src/pyFAI/app/diff_tomo.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,17 @@

"""CLI interface for diffraction tomography data reduction"""

__author__ = "Jerome Kieffer"
__author__ = "Jérôme Kieffer"
__contact__ = "Jerome.Kieffer@ESRF.eu"
__license__ = "MIT"
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
__date__ = "08/01/2021"
__date__ = "27/09/2024"
__satus__ = "Production"

import os
import glob
from argparse import ArgumentParser
from urllib.parse import urlparse
import logging
logging.basicConfig(level=logging.INFO)
logging.captureWarnings(True)
Expand All @@ -47,11 +49,8 @@
except ImportError:
logger.debug("Unable to load hdf5plugin, backtrace:", exc_info=True)

from pyFAI import version as PyFAI_VERSION
from pyFAI import date as PyFAI_DATE
from pyFAI.diffmap import DiffMap
from argparse import ArgumentParser
from urllib.parse import urlparse
from .. import version as PyFAI_VERSION, date as PyFAI_DATE
from ..diffmap import DiffMap


class DiffTomo(DiffMap):
Expand All @@ -74,7 +73,7 @@ def __init__(self, nTrans=1, nRot=1, nDiff=1000):
self.slow_motor_name = "rotation"
self.fast_motor_name = "translation"

def parse(self, with_config=False):
def parse(self, args=None, with_config=False):
"""
parse options from command line
"""
Expand Down Expand Up @@ -137,7 +136,7 @@ def parse(self, with_config=False):
parser.add_argument("-S", "--stats", dest="stats", action="store_true",
help="show statistics at the end", default=False)

options = parser.parse_args()
options = parser.parse_args(args)
args = options.args

if options.verbose:
Expand Down Expand Up @@ -202,9 +201,9 @@ def parse(self, with_config=False):
return options


def main():
def main(args=None):
dt = DiffTomo()
dt.parse()
dt.parse(args)
dt.setup_ai()
dt.makeHDF5()
dt.process()
Expand Down
10 changes: 5 additions & 5 deletions src/pyFAI/app/eiger_mask.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
__contact__ = "Jerome.Kieffer@ESRF.eu"
__license__ = "MIT"
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
__date__ = "05/09/2023"
__date__ = "27/09/2024"
__satus__ = "development"

import os
Expand All @@ -49,7 +49,7 @@
logger.debug("Unable to load hdf5plugin, backtrace:", exc_info=True)

import fabio
import pyFAI
from .. import version as pyFAI_version, date as pyFAI_date

try:
import h5py
Expand All @@ -72,17 +72,17 @@ def extract_mask(infile):
return detectorSpecific["pixel_mask"].value


def main():
def main(args=None):
description = "A tool to extract the mask from an Eiger detector file."
version = "eiger-mask version %s from %s" % (pyFAI.version, pyFAI.date)
version = f"eiger-mask version {pyFAI_version} from {pyFAI_date}"
epilog = None
if h5py is None:
epilog = "Python h5py module is missing. It has to be installed to use this application"
parser = ArgumentParser(description=description, epilog=epilog)
parser.add_argument("-V", "--version", action='version', version=version)
parser.add_argument('input_file', help='Input file. Must be an HDF5 file.')
parser.add_argument('output_file', nargs="?", help='Output file. It can be an msk, tif, or an edf file.')
options = parser.parse_args()
options = parser.parse_args(args)

if h5py is None:
logger.error("Python h5py module is expected to use this script")
Expand Down
32 changes: 14 additions & 18 deletions src/pyFAI/app/integrate.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,11 @@

"""GUI tool for configuring azimuthal integration on series of files."""

__author__ = "Jerome Kieffer"
__author__ = "Jérôme Kieffer"
__contact__ = "Jerome.Kieffer@ESRF.eu"
__license__ = "MIT"
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
__date__ = "13/03/2023"
__date__ = "27/09/2024"
__satus__ = "production"

import sys
Expand All @@ -54,14 +54,11 @@

import fabio

import pyFAI.utils
import pyFAI.worker
import pyFAI.io
from pyFAI.io import DefaultAiWriter
from pyFAI.io import HDF5Writer
from pyFAI.utils.shell import ProgressBar
from pyFAI.utils import logging_utils
from pyFAI.utils import header_utils
from .. import utils, worker, io, version as pyFAI_version, date as pyFAI_date
from ..io import DefaultAiWriter, HDF5Writer
from ..utils.shell import ProgressBar
from ..utils import logging_utils, header_utils
from ..worker import Worker

try:
from rfoo.utils import rconsole
Expand All @@ -73,12 +70,12 @@

def integrate_gui(options, args):
from silx.gui import qt
from pyFAI.gui.IntegrationDialog import IntegrationDialog
from pyFAI.gui.IntegrationDialog import IntegrationProcess
from ..gui.IntegrationDialog import IntegrationDialog
from ..gui.IntegrationDialog import IntegrationProcess

app = qt.QApplication([])

from pyFAI.gui.ApplicationContext import ApplicationContext
from ..gui.ApplicationContext import ApplicationContext
settings = qt.QSettings(qt.QSettings.IniFormat,
qt.QSettings.UserScope,
"pyfai",
Expand Down Expand Up @@ -473,7 +470,7 @@ def frames(self):
next_id += 1


class MultiFileWriter(pyFAI.io.Writer):
class MultiFileWriter(io.Writer):
"""Broadcast writing to differnet files for each frames"""

def __init__(self, output_path, mode=HDF5Writer.MODE_ERROR):
Expand Down Expand Up @@ -611,7 +608,7 @@ def process(input_data, output, config, monitor_name, observer, write_mode=HDF5W
# Create a null observer to avoid to deal with None
observer = IntegrationObserver()

worker = pyFAI.worker.Worker()
worker = Worker()
worker_config = config.copy()

json_monitor_name = worker_config.pop("monitor_name", None)
Expand Down Expand Up @@ -772,7 +769,7 @@ def _main(args):
:rtype: int
"""
usage = "pyFAI-integrate [options] file1.edf file2.edf ..."
version = "pyFAI-integrate version %s from %s" % (pyFAI.version, pyFAI.date)
version = "pyFAI-integrate version %s from %s" % (pyFAI_version, pyFAI_date)
description = """
PyFAI-integrate is a graphical interface (based on Python/Qt4) to perform azimuthal integration
on a set of files. It exposes most of the important options available within pyFAI and allows you
Expand Down Expand Up @@ -863,8 +860,7 @@ def _main(args):
return result


def main():
args = sys.argv[1:]
def main(args=None):
result = _main(args)
sys.exit(result)

Expand Down
Loading

0 comments on commit a9ebda6

Please sign in to comment.