Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Jerome Kieffer 2019-05-17 14:40:53 +02:00
commit c7041117f1
70 changed files with 1855 additions and 780 deletions

View File

@ -0,0 +1,139 @@
pyFAI.app package
=================
pyFAI.app.average module
------------------------
.. automodule:: pyFAI.app.average
:members:
:undoc-members:
:show-inheritance:
pyFAI.app.benchmark module
--------------------------
.. automodule:: pyFAI.app.benchmark
:members:
:undoc-members:
:show-inheritance:
pyFAI.app.calib module
----------------------
.. automodule:: pyFAI.app.calib
:members:
:undoc-members:
:show-inheritance:
pyFAI.app.calib2 module
-----------------------
.. automodule:: pyFAI.app.calib2
:members:
:undoc-members:
:show-inheritance:
pyFAI.app.check_calib module
----------------------------
.. automodule:: pyFAI.app.check_calib
:members:
:undoc-members:
:show-inheritance:
pyFAI.app.detector2nexus module
-------------------------------
.. automodule:: pyFAI.app.detector2nexus
:members:
:undoc-members:
:show-inheritance:
pyFAI.app.diff_map module
-------------------------
.. automodule:: pyFAI.app.diff_map
:members:
:undoc-members:
:show-inheritance:
pyFAI.app.diff_tomo module
--------------------------
.. automodule:: pyFAI.app.diff_tomo
:members:
:undoc-members:
:show-inheritance:
pyFAI.app.drawmask module
-------------------------
.. automodule:: pyFAI.app.drawmask
:members:
:undoc-members:
:show-inheritance:
pyFAI.app.eiger_mask module
---------------------------
.. automodule:: pyFAI.app.eiger_mask
:members:
:undoc-members:
:show-inheritance:
pyFAI.app.integrate module
--------------------------
.. automodule:: pyFAI.app.integrate
:members:
:undoc-members:
:show-inheritance:
pyFAI.app.mx_calibrate module
-----------------------------
.. automodule:: pyFAI.app.mx_calibrate
:members:
:undoc-members:
:show-inheritance:
pyFAI.app.recalib module
------------------------
.. automodule:: pyFAI.app.recalib
:members:
:undoc-members:
:show-inheritance:
pyFAI.app.saxs module
---------------------
.. automodule:: pyFAI.app.saxs
:members:
:undoc-members:
:show-inheritance:
pyFAI.app.setup module
----------------------
.. automodule:: pyFAI.app.setup
:members:
:undoc-members:
:show-inheritance:
pyFAI.app.waxs module
---------------------
.. automodule:: pyFAI.app.waxs
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: pyFAI.app
:members:
:undoc-members:
:show-inheritance:

View File

@ -0,0 +1,10 @@
pyFAI.detectors package
=======================
Module contents
---------------
.. automodule:: pyFAI.detectors
:members:
:undoc-members:
:show-inheritance:

View File

@ -0,0 +1,35 @@
pyFAI.engines package
=====================
pyFAI.engines.CSR_engine module
-------------------------------
.. automodule:: pyFAI.engines.CSR_engine
:members:
:undoc-members:
:show-inheritance:
pyFAI.engines.histogram_engine module
-------------------------------------
.. automodule:: pyFAI.engines.histogram_engine
:members:
:undoc-members:
:show-inheritance:
pyFAI.engines.preproc module
----------------------------
.. automodule:: pyFAI.engines.preproc
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: pyFAI.engines
:members:
:undoc-members:
:show-inheritance:

View File

@ -0,0 +1,221 @@
pyFAI.ext package
=================
pyFAI.ext.bilinear module
-------------------------
.. automodule:: pyFAI.ext.bilinear
:members:
:undoc-members:
:show-inheritance:
pyFAI.ext.fastcrc module
------------------------
.. automodule:: pyFAI.ext.fastcrc
:members:
:undoc-members:
:show-inheritance:
pyFAI.ext.histogram module
--------------------------
.. automodule:: pyFAI.ext.histogram
:members:
:undoc-members:
:show-inheritance:
pyFAI.ext.inpainting module
---------------------------
.. automodule:: pyFAI.ext.inpainting
:members:
:undoc-members:
:show-inheritance:
pyFAI.ext.invert_geometry module
--------------------------------
.. automodule:: pyFAI.ext.invert_geometry
:members:
:undoc-members:
:show-inheritance:
pyFAI.ext.morphology module
---------------------------
.. automodule:: pyFAI.ext.morphology
:members:
:undoc-members:
:show-inheritance:
pyFAI.ext.preproc module
------------------------
.. automodule:: pyFAI.ext.preproc
:members:
:undoc-members:
:show-inheritance:
pyFAI.ext.reconstruct module
----------------------------
.. automodule:: pyFAI.ext.reconstruct
:members:
:undoc-members:
:show-inheritance:
pyFAI.ext.relabel module
------------------------
.. automodule:: pyFAI.ext.relabel
:members:
:undoc-members:
:show-inheritance:
pyFAI.ext.setup module
----------------------
.. automodule:: pyFAI.ext.setup
:members:
:undoc-members:
:show-inheritance:
pyFAI.ext.sparse_builder module
-------------------------------
.. automodule:: pyFAI.ext.sparse_builder
:members:
:undoc-members:
:show-inheritance:
pyFAI.ext.sparse_utils module
-----------------------------
.. automodule:: pyFAI.ext.sparse_utils
:members:
:undoc-members:
:show-inheritance:
pyFAI.ext.splitBBox module
--------------------------
.. automodule:: pyFAI.ext.splitBBox
:members:
:undoc-members:
:show-inheritance:
pyFAI.ext.splitBBoxCSR module
-----------------------------
.. automodule:: pyFAI.ext.splitBBoxCSR
:members:
:undoc-members:
:show-inheritance:
pyFAI.ext.splitBBoxLUT module
-----------------------------
.. automodule:: pyFAI.ext.splitBBoxLUT
:members:
:undoc-members:
:show-inheritance:
pyFAI.ext.splitPixel module
---------------------------
.. automodule:: pyFAI.ext.splitPixel
:members:
:undoc-members:
:show-inheritance:
pyFAI.ext.splitPixelFull module
-------------------------------
.. automodule:: pyFAI.ext.splitPixelFull
:members:
:undoc-members:
:show-inheritance:
pyFAI.ext.splitPixelFullCSR module
----------------------------------
.. automodule:: pyFAI.ext.splitPixelFullCSR
:members:
:undoc-members:
:show-inheritance:
pyFAI.ext.splitPixelFullLUT module
----------------------------------
.. automodule:: pyFAI.ext.splitPixelFullLUT
:members:
:undoc-members:
:show-inheritance:
pyFAI.ext.watershed module
--------------------------
.. automodule:: pyFAI.ext.watershed
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: pyFAI.ext
:members:
:undoc-members:
:show-inheritance:
pyFAI.ext private package
=========================
:mod:`ext._bispev` Module
-------------------------
.. automodule:: pyFAI.ext._bispev
:members:
:undoc-members:
:show-inheritance:
:mod:`ext._blob` Module
-----------------------
.. automodule:: pyFAI.ext._blob
:members:
:undoc-members:
:show-inheritance:
:mod:`ext._convolution` Module
------------------------------
.. automodule:: pyFAI.ext._convolution
:members:
:undoc-members:
:show-inheritance:
:mod:`ext._distortion` Module
-----------------------------
.. automodule:: pyFAI.ext._distortion
:members:
:undoc-members:
:show-inheritance:
:mod:`ext._geometry` Module
---------------------------
.. automodule:: pyFAI.ext._geometry
:members:
:undoc-members:
:show-inheritance:
:mod:`ext._tree` Module
-----------------------
.. automodule:: pyFAI.ext._tree
:members:
:undoc-members:
:show-inheritance:

View File

@ -0,0 +1,59 @@
pyFAI.gui.dialog package
========================
pyFAI.gui.dialog.Detector3dDialog module
----------------------------------------
.. automodule:: pyFAI.gui.dialog.Detector3dDialog
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.dialog.DetectorSelectorDialog module
----------------------------------------------
.. automodule:: pyFAI.gui.dialog.DetectorSelectorDialog
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.dialog.GeometryDialog module
--------------------------------------
.. automodule:: pyFAI.gui.dialog.GeometryDialog
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.dialog.IntegrationMethodDialog module
-----------------------------------------------
.. automodule:: pyFAI.gui.dialog.IntegrationMethodDialog
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.dialog.MessageBox module
----------------------------------
.. automodule:: pyFAI.gui.dialog.MessageBox
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.dialog.OpenClDeviceDialog module
------------------------------------------
.. automodule:: pyFAI.gui.dialog.OpenClDeviceDialog
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: pyFAI.gui.dialog
:members:
:undoc-members:
:show-inheritance:

View File

@ -0,0 +1,75 @@
pyFAI.gui.helper package
========================
pyFAI.gui.helper.MarkerManager module
-------------------------------------
.. automodule:: pyFAI.gui.helper.MarkerManager
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.helper.ProcessingWidget module
----------------------------------------
.. automodule:: pyFAI.gui.helper.ProcessingWidget
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.helper.RingCalibration module
---------------------------------------
.. automodule:: pyFAI.gui.helper.RingCalibration
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.helper.RingExtractor module
-------------------------------------
.. automodule:: pyFAI.gui.helper.RingExtractor
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.helper.SynchronizeMaskToolColor module
------------------------------------------------
.. automodule:: pyFAI.gui.helper.SynchronizeMaskToolColor
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.helper.SynchronizePlotBackground module
-------------------------------------------------
.. automodule:: pyFAI.gui.helper.SynchronizePlotBackground
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.helper.SynchronizeRawView module
------------------------------------------
.. automodule:: pyFAI.gui.helper.SynchronizeRawView
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.helper.model_transform module
---------------------------------------
.. automodule:: pyFAI.gui.helper.model_transform
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: pyFAI.gui.helper
:members:
:undoc-members:
:show-inheritance:

View File

@ -0,0 +1,103 @@
pyFAI.gui package
=================
Subpackages
-----------
.. toctree::
dialog
helper
model
tasks
utils
widgets
pyFAI.gui.ApplicationContext module
-----------------------------------
.. automodule:: pyFAI.gui.ApplicationContext
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.CalibrationContext module
-----------------------------------
.. automodule:: pyFAI.gui.CalibrationContext
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.CalibrationWindow module
----------------------------------
.. automodule:: pyFAI.gui.CalibrationWindow
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.IntegrationDialog module
----------------------------------
.. automodule:: pyFAI.gui.IntegrationDialog
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.cli_calibration module
--------------------------------
.. automodule:: pyFAI.gui.cli_calibration
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.diffmap_widget module
-------------------------------
.. automodule:: pyFAI.gui.diffmap_widget
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.jupyter module
------------------------
.. automodule:: pyFAI.gui.jupyter
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.matplotlib module
---------------------------
.. automodule:: pyFAI.gui.matplotlib
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.peak_picker module
----------------------------
.. automodule:: pyFAI.gui.peak_picker
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.setup module
----------------------
.. automodule:: pyFAI.gui.setup
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: pyFAI.gui
:members:
:undoc-members:
:show-inheritance:

View File

@ -0,0 +1,179 @@
pyFAI.gui.model package
=======================
pyFAI.gui.model.AbstractModel module
------------------------------------
.. automodule:: pyFAI.gui.model.AbstractModel
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.model.CalibrantModel module
-------------------------------------
.. automodule:: pyFAI.gui.model.CalibrantModel
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.model.CalibrationModel module
---------------------------------------
.. automodule:: pyFAI.gui.model.CalibrationModel
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.model.ConstraintModel module
--------------------------------------
.. automodule:: pyFAI.gui.model.ConstraintModel
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.model.DataModel module
--------------------------------
.. automodule:: pyFAI.gui.model.DataModel
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.model.DataModelAdaptor module
---------------------------------------
.. automodule:: pyFAI.gui.model.DataModelAdaptor
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.model.DetectorModel module
------------------------------------
.. automodule:: pyFAI.gui.model.DetectorModel
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.model.ExperimentSettingsModel module
----------------------------------------------
.. automodule:: pyFAI.gui.model.ExperimentSettingsModel
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.model.FilenameModel module
------------------------------------
.. automodule:: pyFAI.gui.model.FilenameModel
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.model.Fit2dGeometryModel module
-----------------------------------------
.. automodule:: pyFAI.gui.model.Fit2dGeometryModel
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.model.GeometryConstraintsModel module
-----------------------------------------------
.. automodule:: pyFAI.gui.model.GeometryConstraintsModel
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.model.GeometryHistoryModel module
-------------------------------------------
.. automodule:: pyFAI.gui.model.GeometryHistoryModel
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.model.GeometryModel module
------------------------------------
.. automodule:: pyFAI.gui.model.GeometryModel
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.model.ImageModel module
---------------------------------
.. automodule:: pyFAI.gui.model.ImageModel
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.model.IntegrationSettingsModel module
-----------------------------------------------
.. automodule:: pyFAI.gui.model.IntegrationSettingsModel
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.model.ListModel module
--------------------------------
.. automodule:: pyFAI.gui.model.ListModel
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.model.MarkerModel module
----------------------------------
.. automodule:: pyFAI.gui.model.MarkerModel
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.model.MaskedImageModel module
---------------------------------------
.. automodule:: pyFAI.gui.model.MaskedImageModel
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.model.PeakModel module
--------------------------------
.. automodule:: pyFAI.gui.model.PeakModel
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.model.PeakSelectionModel module
-----------------------------------------
.. automodule:: pyFAI.gui.model.PeakSelectionModel
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.model.PlotViewModel module
------------------------------------
.. automodule:: pyFAI.gui.model.PlotViewModel
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: pyFAI.gui.model
:members:
:undoc-members:
:show-inheritance:

View File

@ -0,0 +1,59 @@
pyFAI.gui.tasks package
=======================
pyFAI.gui.tasks.AbstractCalibrationTask module
----------------------------------------------
.. automodule:: pyFAI.gui.tasks.AbstractCalibrationTask
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.tasks.ExperimentTask module
-------------------------------------
.. automodule:: pyFAI.gui.tasks.ExperimentTask
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.tasks.GeometryTask module
-----------------------------------
.. automodule:: pyFAI.gui.tasks.GeometryTask
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.tasks.IntegrationTask module
--------------------------------------
.. automodule:: pyFAI.gui.tasks.IntegrationTask
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.tasks.MaskTask module
-------------------------------
.. automodule:: pyFAI.gui.tasks.MaskTask
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.tasks.PeakPickingTask module
--------------------------------------
.. automodule:: pyFAI.gui.tasks.PeakPickingTask
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: pyFAI.gui.tasks
:members:
:undoc-members:
:show-inheritance:

View File

@ -0,0 +1,107 @@
pyFAI.gui.utils package
=======================
pyFAI.gui.utils.FilterBuilder module
------------------------------------
.. automodule:: pyFAI.gui.utils.FilterBuilder
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.utils.ProxyAction module
----------------------------------
.. automodule:: pyFAI.gui.utils.ProxyAction
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.utils.colorutils module
---------------------------------
.. automodule:: pyFAI.gui.utils.colorutils
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.utils.eventutils module
---------------------------------
.. automodule:: pyFAI.gui.utils.eventutils
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.utils.imageutils module
---------------------------------
.. automodule:: pyFAI.gui.utils.imageutils
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.utils.projecturl module
---------------------------------
.. automodule:: pyFAI.gui.utils.projecturl
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.utils.setup module
----------------------------
.. automodule:: pyFAI.gui.utils.setup
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.utils.timeutils module
--------------------------------
.. automodule:: pyFAI.gui.utils.timeutils
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.utils.tree module
---------------------------
.. automodule:: pyFAI.gui.utils.tree
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.utils.units module
----------------------------
.. automodule:: pyFAI.gui.utils.units
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.utils.unitutils module
--------------------------------
.. automodule:: pyFAI.gui.utils.unitutils
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.utils.validators module
---------------------------------
.. automodule:: pyFAI.gui.utils.validators
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: pyFAI.gui.utils
:members:
:undoc-members:
:show-inheritance:

View File

@ -0,0 +1,195 @@
pyFAI.gui.widgets package
=========================
pyFAI.gui.widgets.AdvancedComboBox module
-----------------------------------------
.. automodule:: pyFAI.gui.widgets.AdvancedComboBox
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.widgets.AdvancedSpinBox module
----------------------------------------
.. automodule:: pyFAI.gui.widgets.AdvancedSpinBox
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.widgets.CalibrantPreview module
-----------------------------------------
.. automodule:: pyFAI.gui.widgets.CalibrantPreview
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.widgets.CalibrantSelector module
------------------------------------------
.. automodule:: pyFAI.gui.widgets.CalibrantSelector
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.widgets.ChoiceToolButton module
-----------------------------------------
.. automodule:: pyFAI.gui.widgets.ChoiceToolButton
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.widgets.ColoredCheckBox module
----------------------------------------
.. automodule:: pyFAI.gui.widgets.ColoredCheckBox
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.widgets.DetectorLabel module
--------------------------------------
.. automodule:: pyFAI.gui.widgets.DetectorLabel
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.widgets.DetectorModel module
--------------------------------------
.. automodule:: pyFAI.gui.widgets.DetectorModel
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.widgets.DetectorSelector module
-----------------------------------------
.. automodule:: pyFAI.gui.widgets.DetectorSelector
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.widgets.ElidedLabel module
------------------------------------
.. automodule:: pyFAI.gui.widgets.ElidedLabel
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.widgets.FileEdit module
---------------------------------
.. automodule:: pyFAI.gui.widgets.FileEdit
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.widgets.FitParamView module
-------------------------------------
.. automodule:: pyFAI.gui.widgets.FitParamView
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.widgets.GeometryHistoryComboBox module
------------------------------------------------
.. automodule:: pyFAI.gui.widgets.GeometryHistoryComboBox
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.widgets.GeometryLabel module
--------------------------------------
.. automodule:: pyFAI.gui.widgets.GeometryLabel
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.widgets.LoadImageToolButton module
--------------------------------------------
.. automodule:: pyFAI.gui.widgets.LoadImageToolButton
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.widgets.MethodLabel module
------------------------------------
.. automodule:: pyFAI.gui.widgets.MethodLabel
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.widgets.MonitorNameEdit module
----------------------------------------
.. automodule:: pyFAI.gui.widgets.MonitorNameEdit
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.widgets.OpenClDeviceLabel module
------------------------------------------
.. automodule:: pyFAI.gui.widgets.OpenClDeviceLabel
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.widgets.QuantityEdit module
-------------------------------------
.. automodule:: pyFAI.gui.widgets.QuantityEdit
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.widgets.QuantityLabel module
--------------------------------------
.. automodule:: pyFAI.gui.widgets.QuantityLabel
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.widgets.UnitLabel module
----------------------------------
.. automodule:: pyFAI.gui.widgets.UnitLabel
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.widgets.UnitSelector module
-------------------------------------
.. automodule:: pyFAI.gui.widgets.UnitSelector
:members:
:undoc-members:
:show-inheritance:
pyFAI.gui.widgets.WorkerConfigurator module
-------------------------------------------
.. automodule:: pyFAI.gui.widgets.WorkerConfigurator
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: pyFAI.gui.widgets
:members:
:undoc-members:
:show-inheritance:

View File

@ -0,0 +1,35 @@
pyFAI.io package
================
pyFAI.io.image module
---------------------
.. automodule:: pyFAI.io.image
:members:
:undoc-members:
:show-inheritance:
pyFAI.io.integration_config module
----------------------------------
.. automodule:: pyFAI.io.integration_config
:members:
:undoc-members:
:show-inheritance:
pyFAI.io.ponifile module
------------------------
.. automodule:: pyFAI.io.ponifile
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: pyFAI.io
:members:
:undoc-members:
:show-inheritance:

View File

@ -13,6 +13,6 @@ both the geometry (it inherits from Geometry, another class)
and exposes important methods (functions) like integrate1d and integrate2d.
.. toctree::
:maxdepth: 4
:maxdepth: 2
pyFAI

View File

@ -0,0 +1,75 @@
pyFAI.opencl package
====================
pyFAI.opencl.OCLFullSplit module
--------------------------------
.. automodule:: pyFAI.opencl.OCLFullSplit
:members:
:undoc-members:
:show-inheritance:
pyFAI.opencl.azim_csr module
----------------------------
.. automodule:: pyFAI.opencl.azim_csr
:members:
:undoc-members:
:show-inheritance:
pyFAI.opencl.azim_hist module
-----------------------------
.. automodule:: pyFAI.opencl.azim_hist
:members:
:undoc-members:
:show-inheritance:
pyFAI.opencl.azim_lut module
----------------------------
.. automodule:: pyFAI.opencl.azim_lut
:members:
:undoc-members:
:show-inheritance:
pyFAI.opencl.ocl_hist_pixelsplit module
---------------------------------------
.. automodule:: pyFAI.opencl.ocl_hist_pixelsplit
:members:
:undoc-members:
:show-inheritance:
pyFAI.opencl.preproc module
---------------------------
.. automodule:: pyFAI.opencl.preproc
:members:
:undoc-members:
:show-inheritance:
pyFAI.opencl.setup module
-------------------------
.. automodule:: pyFAI.opencl.setup
:members:
:undoc-members:
:show-inheritance:
pyFAI.opencl.sort module
------------------------
.. automodule:: pyFAI.opencl.sort
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: pyFAI.opencl
:members:
:undoc-members:
:show-inheritance:

View File

@ -1,3 +1,17 @@
pyFAI package
=============
.. toctree::
app/index
detectors/index
engines/index
ext/index
gui/index
io/index
opencl/index
resources/index
utils/index
:mod:`pyFAI` Package
--------------------
@ -31,15 +45,6 @@
:undoc-members:
:show-inheritance:
:mod:`integrate_widget` Module
------------------------------
.. automodule:: pyFAI.integrate_widget
:members:
:undoc-members:
:show-inheritance:
:mod:`geometry` Module
----------------------
@ -64,16 +69,6 @@
:undoc-members:
:show-inheritance:
:mod:`detectors` Module
-----------------------
.. automodule:: pyFAI.detectors
:members:
:undoc-members:
:show-inheritance:
:mod:`spline` Module
--------------------
@ -82,22 +77,6 @@
:undoc-members:
:show-inheritance:
:mod:`io` Module
----------------
.. automodule:: pyFAI.io
:members:
:undoc-members:
:show-inheritance:
:mod:`calibration` Module
-------------------------
.. automodule:: pyFAI.calibration
:members:
:undoc-members:
:show-inheritance:
:mod:`control_points` Module
----------------------------
@ -106,15 +85,6 @@
:undoc-members:
:show-inheritance:
:mod:`peak_picker` Module
-------------------------
.. automodule:: pyFAI.peak_picker
:members:
:undoc-members:
:show-inheritance:
:mod:`massif` Module
--------------------
@ -155,307 +125,3 @@
:members:
:undoc-members:
:show-inheritance:
:mod:`units` Module
-------------------
.. automodule:: pyFAI.units
:members:
:undoc-members:
:show-inheritance:
:mod:`utils.__init__` Module
----------------------------
Sub module with miscelaneous tools
.. automodule:: pyFAI.utils.__init__
:members:
:undoc-members:
:show-inheritance:
:mod:`utils.bayes` Module
.........................
Tool for bayesian filtering-out of positive peaks
.. automodule:: pyFAI.utils.bayes
:members:
:undoc-members:
:show-inheritance:
:mod:`utils.shell` Module
.........................
Contains the progress-bar in the shell command line
.. automodule:: pyFAI.utils.shell
:members:
:undoc-members:
:show-inheritance:
:mod:`utils.stringutil` Module
..............................
Enhanced string formatter
.. automodule:: pyFAI.utils.stringutil
:members:
:undoc-members:
:show-inheritance:
:mod:`opencl.__init__` Module
-----------------------------
Contains all OpenCL implementation.
.. automodule:: pyFAI.opencl
:members:
:undoc-members:
:show-inheritance:
:mod:`opencl.common` Module
...........................
.. automodule:: pyFAI.opencl.common
:members:
:undoc-members:
:show-inheritance:
:mod:`opencl.processing` Module
...............................
.. automodule:: pyFAI.opencl.processing
:members:
:undoc-members:
:show-inheritance:
:mod:`opencl.preproc` Module
............................
.. automodule:: pyFAI.opencl.preproc
:members:
:undoc-members:
:show-inheritance:
:mod:`opencl.azim_hist` Module
..............................
.. automodule:: pyFAI.opencl.azim_hist
:members:
:undoc-members:
:show-inheritance:
:mod:`opencl.azim_lut` Module
.............................
.. automodule:: pyFAI.opencl.azim_lut
:members:
:undoc-members:
:show-inheritance:
:mod:`opencl.azim_csr` Module
.............................
.. automodule:: pyFAI.opencl.azim_csr
:members:
:undoc-members:
:show-inheritance:
:mod:`gui.__init__` Module
--------------------------
.. automodule:: pyFAI.gui.__init__
:members:
:undoc-members:
:show-inheritance:
:mod:`gui.matplotlib` Module
............................
Initialize properly Matplotlib
.. automodule:: pyFAI.gui.matplotlib
:members:
:undoc-members:
:show-inheritance:
:mod:`gui.qt` Module
....................
.. automodule:: pyFAI.gui.qt
:members:
:undoc-members:
:show-inheritance:
:mod:`gui.utils` Module
.......................
.. automodule:: pyFAI.gui.utils
:members:
:undoc-members:
:show-inheritance:
:mod:`ext.__init__` Module
--------------------------
Sub-module with all Cython binary extensions
.. automodule:: pyFAI.ext.__init__
:members:
:undoc-members:
:show-inheritance:
:mod:`ext.bilinear` Module
..........................
This extension makes a discrete 2D-array appear like a continuous function thanks
to bilinear interpolations.
.. automodule:: pyFAI.ext.bilinear
:members:
:undoc-members:
:show-inheritance:
:mod:`ext._bispev` Module
.........................
This extension is a re-implementation of bi-cubic spline evaluation from scipy
.. automodule:: pyFAI.ext._bispev
:members:
:undoc-members:
:show-inheritance:
:mod:`ext._blob` Module
.......................
Blob detection is used to find peaks in images by performing subsequent blurs
.. automodule:: pyFAI.ext._blob
:members:
:undoc-members:
:show-inheritance:
:mod:`ext._convolution` Module
..............................
Convolutions in real space are used to blurs images, used in blob-detection algorithm
.. automodule:: pyFAI.ext._convolution
:members:
:undoc-members:
:show-inheritance:
:mod:`ext._distortion` Module
.............................
Distortion correction are correction are applied by Look-up table (or CSR)
.. automodule:: pyFAI.ext._distortion
:members:
:undoc-members:
:show-inheritance:
:mod:`ext._geometry` Module
...........................
This extension is a fast-implementation for calculating the geometry, i.e. where
every pixel of an array stays in space (x,y,z) or its (r, \chi) coordinates.
.. automodule:: pyFAI.ext._geometry
:members:
:undoc-members:
:show-inheritance:
:mod:`ext.histogram` Module
...........................
Re-implementation of the numpy.histogram, optimized for azimuthal integration.
Deprecated, will be replaced by silx.math.histogramnd
.. automodule:: pyFAI.ext.histogram
:members:
:undoc-members:
:show-inheritance:
:mod:`ext.invert_geometry` Module
.................................
Allow the inversion of pixel coordinate --> radius/azimuthal
with linear interpolation within the last pixel
.. automodule:: pyFAI.ext.invert_geometry
:members:
:undoc-members:
:show-inheritance:
:mod:`ext.morphology` Module
............................
The morphology extension provides a couple of binary morphology operations on images.
They are also implemented in scipy.ndimage in the general case, but not as fast.
.. automodule:: pyFAI.ext.morphology
:members:
:undoc-members:
:show-inheritance:
:mod:`ext.reconstruct` Module
.............................
Very simple inpainting module for reconstructing the missing part of an image (masked)
to be able to use more common algorithms.
.. automodule:: pyFAI.ext.reconstruct
:members:
:undoc-members:
:show-inheritance:
:mod:`ext.relabel` Module
.........................
Relabel regions, used to flag from largest regions to the smallest
.. automodule:: pyFAI.ext.relabel
:members:
:undoc-members:
:show-inheritance:
:mod:`ext.preproc` Module
.........................
Contains a preprocessing function in charge of the dark-current subtraction,
flat-field normalization, ... taking care of masked values and normalization.
.. automodule:: pyFAI.ext.preproc
:members:
:undoc-members:
:show-inheritance:
:mod:`ext._tree` Module
.......................
The tree is used in file hierarchy tree for the diff_map graphical user interface.
.. automodule:: pyFAI.ext._tree
:members:
:undoc-members:
:show-inheritance:
:mod:`ext.watershed` Module
...........................
Peak peaking via inverse watershed for connecting region of high intensity
.. automodule:: pyFAI.ext.watershed
:members:
:undoc-members:
:show-inheritance:

View File

@ -0,0 +1,19 @@
pyFAI.resources package
=======================
pyFAI.resources.setup module
----------------------------
.. automodule:: pyFAI.resources.setup
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: pyFAI.resources
:members:
:undoc-members:
:show-inheritance:

View File

@ -0,0 +1,91 @@
pyFAI.utils package
===================
pyFAI.utils.bayes module
------------------------
.. automodule:: pyFAI.utils.bayes
:members:
:undoc-members:
:show-inheritance:
pyFAI.utils.decorators module
-----------------------------
.. automodule:: pyFAI.utils.decorators
:members:
:undoc-members:
:show-inheritance:
pyFAI.utils.ellipse module
--------------------------
.. automodule:: pyFAI.utils.ellipse
:members:
:undoc-members:
:show-inheritance:
pyFAI.utils.header_utils module
-------------------------------
.. automodule:: pyFAI.utils.header_utils
:members:
:undoc-members:
:show-inheritance:
pyFAI.utils.logging_utils module
--------------------------------
.. automodule:: pyFAI.utils.logging_utils
:members:
:undoc-members:
:show-inheritance:
pyFAI.utils.mathutil module
---------------------------
.. automodule:: pyFAI.utils.mathutil
:members:
:undoc-members:
:show-inheritance:
pyFAI.utils.orderedset module
-----------------------------
.. automodule:: pyFAI.utils.orderedset
:members:
:undoc-members:
:show-inheritance:
pyFAI.utils.setup module
------------------------
.. automodule:: pyFAI.utils.setup
:members:
:undoc-members:
:show-inheritance:
pyFAI.utils.shell module
------------------------
.. automodule:: pyFAI.utils.shell
:members:
:undoc-members:
:show-inheritance:
pyFAI.utils.stringutil module
-----------------------------
.. automodule:: pyFAI.utils.stringutil
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: pyFAI.utils
:members:
:undoc-members:
:show-inheritance:

View File

@ -3,6 +3,8 @@
:Keywords: geometry conversion from/to pyFAI
:Target: developers
.. _geometryconversion:
The purpose of this note is to compare how ``pyFAI`` and ``ImageD11``
treat the detector position. In particular, we derive how “PONI”
detector parameters refined with ``pyFAI`` can be transformed into

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 66 KiB

View File

@ -13,16 +13,16 @@ without a priori knowledge of your setup. You will need to provide a calibrant
or a "d-spacing" file containing the spacing of Miller plans in Angstrom
(in decreasing order).
Calibrants available: Ni, CrOx, NaCl, Si_SRM640e, Si_SRM640d, Si_SRM640a,
Si_SRM640c, alpha_Al2O3, Cr2O3, AgBh, Si_SRM640, CuO, PBBA,
Si_SRM640b, mock, quartz, C14H30O, cristobaltite, Si, LaB6, CeO2, LaB6_SRM660a,
LaB6_SRM660b, LaB6_SRM660c, TiO2, ZnO, Al, Au or search in the
American Mineralogist database: http://rruff.geo.arizona.edu/AMS/amcsd.php
Calibrants available: ``Ni``, ``CrOx``, ``NaCl``, ``Si_SRM640e``, ``Si_SRM640d``, ``Si_SRM640a``,
``Si_SRM640c``, ``alpha_Al2O3``, ``Cr2O3``, ``AgBh``, ``Si_SRM640``, ``CuO``, ``PBBA``,
``Si_SRM640b``, ``quartz``, ``C14H30O``, ``cristobaltite``, ``Si``, ``LaB6``, ``CeO2``, ``LaB6_SRM660a``,
``LaB6_SRM660b``, ``LaB6_SRM660c``, ``TiO2``, ``ZnO``, ``Al``, ``Au`` or search in the
`American Mineralogist database <http://rruff.geo.arizona.edu/AMS/amcsd.php>`_.
Usage:
------
pyFAI-calib2 [options] [input_image.edf]
``pyFAI-calib2 [options] [input_image.edf]``
Everything can be set by the GUI, but here are the command-line arguments.
@ -30,171 +30,97 @@ Options:
--------
positional arguments:
FILE List of files to calibrate
FILE List of files to calibrate
optional arguments:
-h, --help
show this help message and exit
-V, --version
show program's version number and exit
-o FILE, --out FILE
Filename where processed image is saved
-v, --verbose
switch to debug/verbose mode
--debug
Set logging system in debug mode
-c FILE, --calibrant FILE
Calibrant name or file containing d-spacing of the reference sample (case sensitive)
-w WAVELENGTH, --wavelength WAVELENGTH
wavelength of the X-Ray beam in Angstrom.
-e ENERGY, --energy ENERGY
energy of the X-Ray beam in keV (hc=12.3984197396keV.A).
-P POLARIZATION_FACTOR, --polarization POLARIZATION_FACTOR
polarization factor, from -1 (vertical) to +1 (horizontal), default is None (no correction), synchrotrons are around 0.95
-D DETECTOR_NAME, --detector DETECTOR_NAME
Detector name (instead of pixel size+spline)
-m MASK, --mask MASK
file containing the mask (for image reconstruction)
-p PIXEL, --pixel PIXEL
size of the pixel in micron
-i FILE, --poni FILE
file containing the diffraction parameter (poni-file).
-b BACKGROUND, --background BACKGROUND
Automatic background subtraction if no value are provided
-d DARK, --dark DARK
list of comma separated dark images to average and subtract
-f FLAT, --flat FLAT
list of comma separated flat images to average and divide
-s SPLINE, --spline SPLINE
spline file describing the detector distortion
-n NPT, --pt NPT
file with datapoints saved. Default: basename.npt
--filter FILTER
select the filter, either mean(default), max or median
-l DISTANCE, --distance DISTANCE
sample-detector distance in millimeter. Default: 100mm
--dist DIST
sample-detector distance in meter. Default: 0.1m
--poni1 PONI1
poni1 coordinate in meter. Default: center of detector
--poni2 PONI2
poni2 coordinate in meter. Default: center of detector
--rot1 ROT1
rot1 in radians. default: 0
--rot2 ROT2
rot2 in radians. default: 0
--rot3 ROT3
rot3 in radians. default: 0
--fix-wavelength
fix the wavelength parameter. Default: Activated
--free-wavelength
free the wavelength parameter. Default: Deactivated
--fix-dist
fix the distance parameter
--free-dist
free the distance parameter. Default: Activated
--fix-poni1
fix the poni1 parameter
--free-poni1
free the poni1 parameter. Default: Activated
--fix-poni2
fix the poni2 parameter
--free-poni2
free the poni2 parameter. Default: Activated
--fix-rot1
fix the rot1 parameter
--free-rot1
free the rot1 parameter. Default: Activated
--fix-rot2
fix the rot2 parameter
--free-rot2
free the rot2 parameter. Default: Activated
--fix-rot3
fix the rot3 parameter
--free-rot3
free the rot3 parameter. Default: Activated
--npt NPT_1D
Number of point in 1D integrated pattern, Default: 1024
--npt-azim NPT_2D_AZIM
Number of azimuthal sectors in 2D integrated images. Default: 360
--npt-rad NPT_2D_RAD
Number of radial bins in 2D integrated images. Default: 400
--qtargs QTARGS
Arguments propagated to Qt
--tilt Allow initially detector tilt to be refined (rot1, rot2, rot3). Default: Activated
--no-tilt
Deactivated tilt refinement and set all rotation to 0
--saturation SATURATION
consider all pixel>max*(1-saturation) as saturated and reconstruct them, default: 0 (deactivated)
--weighted
weight fit by intensity, by default not.
--unit UNIT
Valid units for radial range: 2th_deg, 2th_rad, q_nm^-1, q_A^-1, r_mm. Default: 2th_deg
--no-gui
force the program to run without a Graphical interface
--no-interactive
force the program to run and exit without prompting for refinements
-r, --reconstruct
Reconstruct image where data are masked or <0 (for Pilatus detectors or detectors with modules)
-g GAUSSIAN, --gaussian GAUSSIAN
Size of the gaussian kernel. Size of the gap (in pixels) between two consecutive rings, by default 100 Increase the value if the arc is not complete; decrease the value if arcs are mixed
together.
--square
Use square kernel shape for neighbor search instead of diamond shape
-h, --help show this help message and exit
-V, --version show program's version number and exit
-o FILE, --out FILE Filename where processed image is saved
-v, --verbose switch to debug/verbose mode
--debug Set logging system in debug mode
--opengl, --gl Enable OpenGL rendering (else matplotlib is used)
-c FILE, --calibrant FILE
Calibrant name or file containing d-spacing of the
reference sample (case sensitive)
-w WAVELENGTH, --wavelength WAVELENGTH
wavelength of the X-Ray beam in Angstrom.
-e ENERGY, --energy ENERGY
energy of the X-Ray beam in keV
(hc=12.398419739640717keV.A).
-P POLARIZATION_FACTOR, --polarization POLARIZATION_FACTOR
polarization factor, from -1 (vertical) to +1
(horizontal), default is None (no correction),
synchrotrons are around 0.95
-D DETECTOR_NAME, --detector DETECTOR_NAME
Detector name (instead of pixel size+spline)
-m MASK, --mask MASK file containing the mask (for image reconstruction)
-p PIXEL, --pixel PIXEL
size of the pixel in micron
-s SPLINE, --spline SPLINE
spline file describing the detector distortion
-n NPT, --pt NPT file with datapoints saved. Example: basename.npt
-i FILE, --poni FILE file containing the diffraction parameter (poni-file)
[not used].
-b BACKGROUND, --background BACKGROUND
Automatic background subtraction if no value are
provided [not used]
-d DARK, --dark DARK list of comma separated dark images to average and
subtract [not used]
-f FLAT, --flat FLAT list of comma separated flat images to average and
divide [not used]
--filter FILTER select the filter, either mean(default), max or median
[not used]
-l DIST_MM, --distance DIST_MM
sample-detector distance in millimeter. Default: 100mm
--dist DIST sample-detector distance in meter. Default: 0.1m
--poni1 PONI1 poni1 coordinate in meter. Default: center of detector
--poni2 PONI2 poni2 coordinate in meter. Default: center of detector
--rot1 ROT1 rot1 in radians. default: 0
--rot2 ROT2 rot2 in radians. default: 0
--rot3 ROT3 rot3 in radians. default: 0
--fix-wavelength fix the wavelength parameter. Default: Activated
--free-wavelength free the wavelength parameter. Default: Deactivated
--fix-dist fix the distance parameter
--free-dist free the distance parameter. Default: Activated
--fix-poni1 fix the poni1 parameter
--free-poni1 free the poni1 parameter. Default: Activated
--fix-poni2 fix the poni2 parameter
--free-poni2 free the poni2 parameter. Default: Activated
--fix-rot1 fix the rot1 parameter
--free-rot1 free the rot1 parameter. Default: Activated
--fix-rot2 fix the rot2 parameter
--free-rot2 free the rot2 parameter. Default: Activated
--fix-rot3 fix the rot3 parameter
--free-rot3 free the rot3 parameter. Default: Activated
--npt NPT_1D Number of point in 1D integrated pattern, Default:
1024
--npt-azim NPT_2D_AZIM
Number of azimuthal sectors in 2D integrated images.
Default: 360
--npt-rad NPT_2D_RAD Number of radial bins in 2D integrated images.
Default: 400
--qtargs QTARGS Arguments propagated to Qt
--tilt Allow initially detector tilt to be refined (rot1,
rot2, rot3). Default: Activated
--no-tilt Deactivated tilt refinement and set all rotation to 0
--saturation SATURATION
consider all pixel>max*(1-saturation) as saturated and
reconstruct them, default: 0 (deactivated)
--weighted weight fit by intensity, by default not.
--unit UNIT Valid units for radial range: 2th_deg, 2th_rad,
q_nm^-1, q_A^-1, r_mm. Default: 2th_deg
--no-gui force the program to run without a Graphical interface
--no-interactive force the program to run and exit without prompting
for refinements
-r, --reconstruct Reconstruct image where data are masked or <0 (for
Pilatus detectors or detectors with modules)
-g GAUSSIAN, --gaussian GAUSSIAN
Size of the gaussian kernel. Size of the gap (in
pixels) between two consecutive rings, by default 100
Increase the value if the arc is not complete;
decrease the value if arcs are mixed together.
--square Use square kernel shape for neighbor search instead of
diamond shape
Tips & Tricks
-------------

View File

@ -1,6 +1,8 @@
Mask generation tool: pyFAI-drawmask
====================================
.. _pyFAI-drawmask:
Purpose
-------

View File

@ -4,7 +4,7 @@ Integration tool: pyFAI-integrate
Purpose
-------
PyFAI-integrate is a graphical interface (based on Python/Qt4) to perform azimuthal integration
PyFAI-integrate is a graphical interface (based on Python/Qt5) to perform azimuthal integration
on a set of files. It exposes most of the important options available within pyFAI and allows you
to select a GPU (or an openCL platform) to perform the calculation on.
@ -16,36 +16,46 @@ to select a GPU (or an openCL platform) to perform the calculation on.
Usage
-----
pyFAI-integrate [options] file1.edf file2.edf ...
``pyFAI-integrate [options] file1.edf file2.edf ...``
Options:
--------
-h, --help show this help message and exit
-V, --version show program's version number and exit
-v, --verbose switch to verbose/debug mode
-o OUTPUT, --output OUTPUT
Directory or file where to store the output data
-f FORMAT, --format FORMAT
output data format (can be HDF5)
-s SLOW, --slow-motor SLOW
Dimension of the scan on the slow direction (makes
sense only with HDF5)
-r RAPID, --fast-motor RAPID
Dimension of the scan on the fast direction (makes
sense only with HDF5)
--no-gui Process the dataset without showing the user
interface.
-j JSON, --json JSON Configuration file containing the processing to be
done
--monitor-name MONITOR_KEY
Name of the monitor in the header of each input files.
If defined the contribution of each input file is
divided by the monitor. If the header does not contain
or contains a wrong value, the contribution of the
input file is ignored. On EDF files, values from
'counter_pos' can accessed by using the expected
mnemonic. For example 'counter/bmon'.
positional arguments:
FILE Files to be integrated
optional arguments:
-h, --help show this help message and exit
-V, --version show program's version number and exit
-v, --verbose switch to verbose/debug mode
--debug Set logging system in debug mode
-o OUTPUT, --output OUTPUT
Directory or file where to store the output data
-f FORMAT, --format FORMAT
output data format (can be HDF5)
-s SLOW, --slow-motor SLOW
Dimension of the scan on the slow direction (makes
sense only with HDF5)
-r RAPID, --fast-motor RAPID
Dimension of the scan on the fast direction (makes
sense only with HDF5)
--no-gui Process the dataset without showing the user
interface.
-j JSON, --json JSON Configuration file containing the processing to be
done
--monitor-name MONITOR_KEY
Name of the monitor in the header of each input files.
If defined the contribution of each input file is
divided by the monitor. If the header does not contain
or contains a wrong value, the contribution of the
input file is ignored. On EDF files, values from
'counter_pos' can be accessed by using the expected
mnemonic. For example 'counter/bmon'.
--delete Delete the destination file if already exists
--append Append the processing to the destination file using an
available group (HDF5 output)
--overwrite Overwrite the entry of the destination file if it
already exists (HDF5 output)
Tips & Tricks:
--------------
@ -53,6 +63,3 @@ Tips & Tricks:
PyFAI-integrate saves all parameters in a .azimint.json (hidden) file. This JSON file
is an ascii file which can be edited and used to configure online data analysis using
the LImA plugin of pyFAI.
Nota: there is bug in debian6 making the GUI crash (to be fixed inside pyqt)
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=697348

View File

@ -15,21 +15,21 @@ The calibration is the determination of the geometry of the experimental setup u
Finally a full dataset can be integrated using different tools targeted at different experiments.
Pre-processing tools:
* pyFAI-drawmask: tool for drawing a mask on top of an image
* pyFAI-average: tool for averaging/median/... filtering images (i.e. for dark current)
* ``pyFAI-drawmask``: tool for drawing a mask on top of an image (deprecated)
* ``pyFAI-average``: tool for averaging/median/... filtering images (i.e. for dark current)
Calibration tools:
* pyFAI-calib: manually select the rings and refine the geometry
* pyFAI-recalib: automatic ring extraction to refine the geometry (deprecated: see "recalib" option in pyFAI-calib)
* MX-calibrate: Calibrate automatically a set of images taken at various detector distances
* check_calib: checks the calibration of an image at the sub-pixel level (deprecated: see "validate" option in pyFAI-calib)
* ``pyFAI-calib2`` and ``pyFAI-calib``: manually select the rings and refine the geometry
* ``pyFAI-recalib``: automatic ring extraction to refine the geometry (deprecated: see "recalib" option in pyFAI-calib)
* ``MX-calibrate``: Calibrate automatically a set of images taken at various detector distances
* ``check_calib``: checks the calibration of an image at the sub-pixel level (deprecated: see "validate" option in pyFAI-calib)
Azimuthal integration tools:
* pyFAI-integrate: the graphical interface for integration (GUI)
* pyFAI-saxs: command line interface for small-angle scattering
* pyFAI-waxs: command line interface for powder difration
* diff_map: diffraction mapping & tomography tool (command line and GUI)
* diff_tomo: diffraction tomography tool (command line only)
* ``pyFAI-integrate``: the graphical interface for integration (GUI)
* ``pyFAI-saxs``: command line interface for small-angle scattering
* ``pyFAI-waxs``: command line interface for powder difration
* ``diff_map``: diffraction mapping & tomography tool (command line and GUI)
* ``diff_tomo``: diffraction tomography tool (command line only)
.. toctree::
:maxdepth: 1

View File

@ -61,10 +61,10 @@ implemente from scratch a novel azimuthal integration tool which is
designed to take advantage of modern parallel hardware features.
PyFAI assumes the setup does not change during the experiment and tries to reuse
a maximum number of data (using memoization_), moreover those calculation are performed
only when needed (lazy_evaluation_).
only when needed (`lazy evaluation`_).
.. _memoization: http://en.wikipedia.org/wiki/Memoization
.. _lazy_evaluation: http://en.wikipedia.org/wiki/Lazy_evaluation
.. _lazy evaluation: http://en.wikipedia.org/wiki/Lazy_evaluation
Experiment description
----------------------

View File

@ -33,7 +33,7 @@ __author__ = "Jerome Kieffer, Picca Frédéric-Emmanuel"
__contact__ = "Jerome.Kieffer@ESRF.eu"
__license__ = "MIT"
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
__date__ = "01/03/2019"
__date__ = "17/05/2019"
__status__ = "production"
import os
@ -99,8 +99,8 @@ def parse_algorithms(options):
def cleanup_input_paths(input_paths):
"""Clean up filename using :: to access to data inside file.
:returns: Returns a list of paths without directory separator inside the filename
location.
:returns: Returns a list of paths without directory separator inside the
filename location.
"""
result = []
for path in input_paths:

View File

@ -34,7 +34,7 @@ __authors__ = ["Jerome Kieffer", "Valentin Valls"]
__contact__ = "Jerome.Kieffer@ESRF.eu"
__license__ = "MIT"
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
__date__ = "09/05/2019"
__date__ = "16/05/2019"
__satus__ = "Production"
import os
@ -46,7 +46,6 @@ import fabio
_logger = logging.getLogger("drawmask")
import silx
import silx.gui.plot
from silx.gui import qt
import pyFAI.utils
@ -97,12 +96,7 @@ class MaskImageWidget(AbstractMaskImageWidget):
self.__plot2D = silx.gui.plot.Plot2D()
self.__plot2D.setKeepDataAspectRatio(True)
if hasattr(self.__plot2D, "getMaskAction"):
# silx 0.5 and later
maskAction = self.__plot2D.getMaskAction()
else:
# silx 0.4 and previous
maskAction = self.__plot2D.maskAction
maskAction = self.__plot2D.getMaskAction()
maskAction.setVisible(False)
self.__maskPanel = silx.gui.plot.MaskToolsWidget.MaskToolsWidget(plot=self.__plot2D)
try:

View File

@ -25,9 +25,7 @@
# THE SOFTWARE.
"""Pre-Processing
A module for all common pixel-wise pre-processing of data.
"""Module providing common pixel-wise pre-processing of data.
"""
from __future__ import absolute_import, print_function, with_statement
@ -36,7 +34,7 @@ __author__ = "Jerome Kieffer"
__contact__ = "Jerome.Kieffer@ESRF.eu"
__license__ = "MIT"
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
__date__ = "06/05/2019"
__date__ = "17/05/2019"
__status__ = "development"
import warnings
@ -87,10 +85,8 @@ def preproc(raw,
NaN are always considered as invalid values
if neither empty nor dummy is provided, empty pixels are 0.
Empty pixels are always zero in "split_result" mode
Empty pixels are always zero in "split_result" mode.
Split result:
-------------
When set to False, i.e the default, the pixel-wise operation is:
I = (raw - dark)/(flat \* solidangle \* polarization \* absorption)
Invalid pixels are set to the dummy or empty value.
@ -100,7 +96,7 @@ def preproc(raw,
I = [(raw - dark), (variance), (flat \* solidangle \* polarization \* absorption)]
Empty pixels will have all their 2 or 3 values to 0 (and not to dummy or empty value)
If poissonian is set to True, the variance is evaluated as (raw + dark)
If poissonian is set to True, the variance is evaluated as (raw + dark).
"""
if isinstance(dtype, str):
dtype = numpy.dtype(dtype).type

View File

@ -0,0 +1,29 @@
# coding: utf-8
# /*##########################################################################
#
# Copyright (C) 2016-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
#
# ###########################################################################*/
"""Package containing all Cython binary extensions"""
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
__license__ = "MIT"

View File

@ -25,14 +25,14 @@
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
'''Spline evaluation function
Created on Nov 4, 2013
'''
"""Module containing a re-implementation of bi-cubic spline evaluation from
scipy."""
__authors__ = ["Zubair Nawaz", "Jerome Kieffer"]
__contact__ = "Jerome.kieffer@esrf.fr"
__date__ = "15/11/2018"
__date__ = "17/05/2019"
__status__ = "stable"
__license__ = "MIT"
@ -51,13 +51,15 @@ def bisplev(x, y, tck, dx=0, dy=0):
Return a rank-2 array of spline function values (or spline derivative
values) at points given by the cross-product of the rank-1 arrays x and
y. In special cases, return an array or just a float if either x or y or
both are floats. Based on BISPEV from FITPACK.
both are floats. Based on BISPEV from FITPACK.
See :func:`bisplrep` to generate the `tck` representation.
See also :func:`splprep`, :func:`splrep`, :func:`splint`, :func:`sproot`,
:func:`splev`, :func:`UnivariateSpline`, :func:`BivariateSpline`
References: [1]_, [2]_, [3]_.
.. [1] Dierckx P. : An algorithm for surface fitting
with spline functions
Ima J. Numer. Anal. 1 (1981) 267-283.

View File

@ -25,12 +25,16 @@
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
"""
Some Cythonized function for blob detection function
Some Cythonized function for blob detection function.
It is used to find peaks in images by performing subsequent blurs.
"""
__authors__ = ["Aurore Deschildre", "Jerome Kieffer"]
__contact__ = "Jerome.kieffer@esrf.fr"
__date__ = "10/01/2018"
__date__ = "17/05/2019"
__status__ = "stable"
__license__ = "MIT"
import cython

View File

@ -26,11 +26,15 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
"""Implementation of a separable 2D convolution"""
"""Implementation of a separable 2D convolution.
It is used in real space are used to blurs images, used in blob-detection
algorithm.
"""
__authors__ = ["Pierre Paleo", "Jerome Kieffer"]
__contact__ = "Jerome.kieffer@esrf.fr"
__date__ = "01/12/2016"
__date__ = "17/05/2019"
__status__ = "stable"
__license__ = "MIT"
import cython

View File

@ -26,9 +26,13 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
"""
Distortion correction are correction are applied by look-up table (or CSR)
"""
__author__ = "Jerome Kieffer"
__license__ = "MIT"
__date__ = "21/01/2019"
__date__ = "17/05/2019"
__copyright__ = "2011-2018, ESRF"
__contact__ = "jerome.kieffer@esrf.fr"

View File

@ -26,9 +26,15 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
"""
This extension is a fast-implementation for calculating the geometry, i.e. where
every pixel of an array stays in space (x,y,z) or its (r, :math:`\\chi`)
coordinates.
"""
__author__ = "Jerome Kieffer"
__license__ = "MIT"
__date__ = "26/10/2018"
__date__ = "17/05/2019"
__copyright__ = "2011-2016, ESRF"
__contact__ = "jerome.kieffer@esrf.fr"

View File

@ -26,9 +26,12 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
"""Module used in file hierarchy tree for the diff_map graphical user interface.
"""
__author__ = "Jerome Kieffer"
__license__ = "MIT"
__date__ = "09/01/2018"
__date__ = "17/05/2019"
__copyright__ = "2011-2015, ESRF"
__contact__ = "jerome.kieffer@esrf.fr"

View File

@ -25,10 +25,13 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
"""Module with makes a discrete 2D-array appear like a continuous function thanks
to bilinear interpolations.
"""
__author__ = "Jerome Kieffer"
__license__ = "MIT"
__date__ = "18/04/2019"
__date__ = "17/05/2019"
__copyright__ = "2011-2015, ESRF"
__contact__ = "jerome.kieffer@esrf.fr"

View File

@ -26,10 +26,15 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
"""A set of histogram functions with or without OpenMP enabled."""
"""A set of histogram functions with or without OpenMP enabled.
Re-implementation of the numpy.histogram, optimized for azimuthal integration.
Deprecated, will be replaced by ``silx.math.histogramnd``.
"""
__author__ = "Jerome Kieffer"
__date__ = "06/05/2019"
__date__ = "17/05/2019"
__license__ = "MIT"
__copyright__ = "2011-2019, ESRF"
__contact__ = "jerome.kieffer@esrf.fr"

View File

@ -25,9 +25,15 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
"""
Module providing inversion transformation from pixel coordinate to radial/azimuthal
coordinate.
"""
__author__ = "Jerome Kieffer"
__license__ = "MIT"
__date__ = "06/05/2019"
__date__ = "17/05/2019"
__copyright__ = "2018-2018, ESRF"
__contact__ = "jerome.kieffer@esrf.fr"

View File

@ -26,12 +26,15 @@
# THE SOFTWARE.
"""
A few binary morphology operation
This module provides a couple of binary morphology operations on images.
They are also implemented in ``scipy.ndimage`` in the general case, but not as
fast.
"""
__author__ = "Jerome Kieffer"
__contact__ = "Jerome.kieffer@esrf.fr"
__date__ = "09/01/2018"
__date__ = "17/05/2019"
__status__ = "stable"
__license__ = "MIT"

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><umlet_diagram></umlet_diagram>

View File

@ -25,10 +25,14 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
"""
Contains a preprocessing function in charge of the dark-current subtraction,
flat-field normalization... taking care of masked values and normalization.
"""
__author__ = "Jerome Kieffer"
__license__ = "MIT"
__date__ = "06/05/2019"
__date__ = "17/05/2019"
__copyright__ = "2011-2018, ESRF"
__contact__ = "jerome.kieffer@esrf.fr"

View File

@ -25,11 +25,15 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
"""Cython module to reconstruct the masked values of an image"""
"""Cython module to reconstruct the masked values of an image.
It's a simple inpainting module for reconstructing the missing part of an
image (masked) to be able to use more common algorithms.
"""
__author__ = "Jerome Kieffer"
__contact__ = "Jerome.kieffer@esrf.fr"
__date__ = "15/11/2018"
__date__ = "17/05/2019"
__status__ = "stable"
__license__ = "MIT"

View File

@ -26,11 +26,14 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
"""A module to relabel regions"""
"""Module providing features to relabel regions.
It is used to flag from largest regions to the smallest.
"""
__author__ = "Jerome Kieffer"
__contact__ = "Jerome.kieffer@esrf.fr"
__date__ = "15/11/2018"
__date__ = "17/05/2019"
__status__ = "stable"
__license__ = "MIT"

View File

@ -26,11 +26,12 @@
# THE SOFTWARE.
#
"""Inverse watershed for connecting region of high intensity
"""Peak peaking via inverse watershed for connecting region of high intensity
"""
__author__ = "Jerome Kieffer"
__contact__ = "Jerome.kieffer@esrf.fr"
__date__ = "11/01/2018"
__date__ = "17/05/2019"
__status__ = "stable"
__license__ = "MIT"

View File

@ -202,7 +202,7 @@ class Geometry(object):
return os.linesep.join(lstTxt)
def check_chi_disc(self, range):
"""Check the position of the \chi discontinuity
"""Check the position of the :math:`\\chi` discontinuity
:param range: range of chi for the integration
:return: True if there is a problem
@ -998,7 +998,7 @@ class Geometry(object):
"""
Calculate the incidence angle (alpha) for current pixels (P).
The poni being the point of normal incidence,
it's incidence angle is $\{alpha} = 0$ hence $cos(\{alpha}) = 1$
it's incidence angle is :math:`\\{alpha} = 0` hence :math:`cos(\\{alpha}) = 1`.
:param d1: 1d or 2d set of points in pixel coord
:param d2: 1d or 2d set of points in pixel coord
@ -1051,7 +1051,7 @@ class Geometry(object):
.. math::
dOmega = \\frac{Omega(P)}{Omega(C)}
= \\frac{A \cdot cos(a)}{SP^2} \cdot \\frac{SC^2}{A \cdot cos(0)}
= \\frac{A \\cdot cos(a)}{SP^2} \\cdot \\frac{SC^2}{A \\cdot cos(0)}
= \\frac{3}{cos(a)}
= \\frac{SC^3}{SP^3}

View File

@ -37,7 +37,7 @@ __author__ = "Jerome Kieffer"
__contact__ = "Jerome.Kieffer@ESRF.eu"
__license__ = "MIT"
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
__date__ = "17/12/2018"
__date__ = "17/05/2019"
__status__ = "production"
import os
@ -124,29 +124,29 @@ class AbstractCalibration(object):
" display too many images without crashing, this"\
" is why the window showing the diffraction image"\
" is closed"
HELP = {"help": "Try to get the help of a given action, like 'refine?'. Use done when finished. "
"Most command are composed of 'action parameter value' like 'set wavelength 1 A'.",
"get": "print he value of a parameter",
"set": "set the value of a parameter to the given value, i.e 'set wavelength 0.1 nm', units are optional",
'fix': "fixes the value of a parameter so that its value will not be optimized, i.e. 'fix wavelength'",
'free': "frees the parameter so that the value can be optimized, i.e. 'free wavelength'",
'bound': "sets the upper and lower bound of a parameter: 'bound dist 0.1 0.2'",
'bounds': "sets the upper and lower bound of all parameters",
'refine': "performs a new cycle of refinement",
'recalib': "extract a new set of rings and re-perform the calibration. One can specify how many rings to extract and the algorithm to use (blob, massif, watershed) and the nb_pts_per_deg in azimuth",
'done': "finishes the processing, performs an integration and quits",
'validate': "plot the offset between the calibrated image and the back-projected image",
'validate2': "measures the offset of the center as function of azimuthal angle by cross-correlation of 2 plots, 180 deg appart. Option: number of azimuthal sliced, default: 36",
'integrate': "perform the azimuthal integration and display results",
'abort': "quit immediately, discarding any unsaved changes",
'show': "Just print out the current parameter set. Optional parameters are units for length, rotation and wavelength, i.e. 'show mm deg A'",
'reset': "Reset the geometry to the initial guess (rotation to zero, distance to 0.1m, poni at the center of the image)",
'assign': "Change the assignment of a group of points to a rings",
"weight": "toggle from weighted to unweighted mode...",
"define": "Re-define the value for a constant internal parameter of the program like max_iter, nPt_1D, nPt_2D_azim, nPt_2D_rad, integrator_method, error_model. Warning: attribute change may be harmful !",
"chiplot": "plot control point radial error as function of azimuthal angle, optional parameters: the rings for which this need to be plotted",
"delete": "delete a group of points, provide the letter."
}
_HELP = {"help": "Try to get the help of a given action, like 'refine?'. Use done when finished. "
"Most command are composed of 'action parameter value' like 'set wavelength 1 A'.",
"get": "print he value of a parameter",
"set": "set the value of a parameter to the given value, i.e 'set wavelength 0.1 nm', units are optional",
'fix': "fixes the value of a parameter so that its value will not be optimized, i.e. 'fix wavelength'",
'free': "frees the parameter so that the value can be optimized, i.e. 'free wavelength'",
'bound': "sets the upper and lower bound of a parameter: 'bound dist 0.1 0.2'",
'bounds': "sets the upper and lower bound of all parameters",
'refine': "performs a new cycle of refinement",
'recalib': "extract a new set of rings and re-perform the calibration. One can specify how many rings to extract and the algorithm to use (blob, massif, watershed) and the nb_pts_per_deg in azimuth",
'done': "finishes the processing, performs an integration and quits",
'validate': "plot the offset between the calibrated image and the back-projected image",
'validate2': "measures the offset of the center as function of azimuthal angle by cross-correlation of 2 plots, 180 deg appart. Option: number of azimuthal sliced, default: 36",
'integrate': "perform the azimuthal integration and display results",
'abort': "quit immediately, discarding any unsaved changes",
'show': "Just print out the current parameter set. Optional parameters are units for length, rotation and wavelength, i.e. 'show mm deg A'",
'reset': "Reset the geometry to the initial guess (rotation to zero, distance to 0.1m, poni at the center of the image)",
'assign': "Change the assignment of a group of points to a rings",
"weight": "toggle from weighted to unweighted mode...",
"define": "Re-define the value for a constant internal parameter of the program like max_iter, nPt_1D, nPt_2D_azim, nPt_2D_rad, integrator_method, error_model. Warning: attribute change may be harmful !",
"chiplot": "plot control point radial error as function of azimuthal angle, optional parameters: the rings for which this need to be plotted",
"delete": "delete a group of points, provide the letter."
}
PARAMETERS = ["dist", "poni1", "poni2", "rot1", "rot2", "rot3", "wavelength"]
UNITS = {"dist": "meter", "poni1": "meter", "poni2": "meter", "rot1": "radian",
"rot2": "radian", "rot3": "radian", "wavelength": "meter"}
@ -795,15 +795,15 @@ class AbstractCalibration(object):
if action in ["help", "?"]:
req_help = True
if req_help:
for what in self.HELP.keys():
for what in self._HELP.keys():
if action.startswith(what):
print("Help on %s" % what)
print(self.HELP[what])
print(self._HELP[what])
break
else:
print("Help on commands")
print(self.HELP["help"])
print("Valid actions: " + ", ".join(self.HELP.keys()))
print(self._HELP["help"])
print("Valid actions: " + ", ".join(self._HELP.keys()))
print("Valid parameters: " + ", ".join(self.PARAMETERS))
elif action == "get": # get wavelength
if (len(words) >= 2):
@ -813,7 +813,7 @@ class AbstractCalibration(object):
else:
print("No a parameter: %s" % param)
else:
print(self.HELP[action])
print(self._HELP[action])
elif action == "set": # set wavelength 1e-10
if (len(words) in (3, 4)) and words[1] in self.PARAMETERS:
@ -830,7 +830,7 @@ class AbstractCalibration(object):
scale = unit.scale
setattr(self.geoRef, param, value / scale)
else:
print(self.HELP[action])
print(self._HELP[action])
elif action == "fix": # fix wavelength
if (len(words) >= 2):
for param in words[1:]:
@ -840,7 +840,7 @@ class AbstractCalibration(object):
else:
print("No a parameter: %s" % param)
else:
print(self.HELP[action])
print(self._HELP[action])
elif action == "free": # free wavelength
if (len(words) >= 2):
for param in words[1:]:
@ -850,7 +850,7 @@ class AbstractCalibration(object):
else:
print("No a parameter: %s" % param)
else:
print(self.HELP[action])
print(self._HELP[action])
elif action == "recalib":
max_rings = None
@ -922,9 +922,9 @@ class AbstractCalibration(object):
self.geoRef.__getattribute__("set_%s" % param)(value)
self.geoRef.__getattribute__("set_%s_max" % param)(value_max)
else:
print(self.HELP[action])
print(self._HELP[action])
else:
print(self.HELP[action])
print(self._HELP[action])
elif action == "bounds":
readFloatFromKeyboard("Enter Distance in meter "
"(or dist_min[%.3f] dist[%.3f] dist_max[%.3f]):\t " %
@ -1037,9 +1037,9 @@ class AbstractCalibration(object):
else:
print("No such parameter %s" % param)
else:
print(self.HELP[action])
print(self._HELP[action])
elif action == "chiplot":
print(self.HELP[action])
print(self._HELP[action])
rings = None
if len(words) > 1:
try:
@ -1049,7 +1049,7 @@ class AbstractCalibration(object):
self.chiplot(rings)
elif action == "delete":
if len(words) < 2:
print(self.HELP[action])
print(self._HELP[action])
else:
for code in words[1:]:
self.peakPicker.remove_grp(code)

View File

@ -22,6 +22,7 @@
# THE SOFTWARE.
#
# ###########################################################################*/
"""This module inits matplotlib and setups the backend to use.
It MUST be imported prior to any other import of matplotlib.
@ -29,11 +30,12 @@ It MUST be imported prior to any other import of matplotlib.
It provides the matplotlib :class:`FigureCanvasQTAgg` class corresponding
to the used backend.
"""
from __future__ import absolute_import
__authors__ = ["T. Vincent"]
__license__ = "MIT"
__date__ = "20/02/2018"
__date__ = "17/05/2019"
import sys

View File

@ -27,7 +27,7 @@ from __future__ import absolute_import
__authors__ = ["V. Valls"]
__license__ = "MIT"
__date__ = "11/04/2019"
__date__ = "17/05/2019"
import functools
@ -41,8 +41,8 @@ class ChangeEvent(object):
"""
Define a change done on an item from the :class:`ListModel`.
:param int index, The location where to put/remove the item (before the change)
or the current index of the changed item
:param int index: The location where to put/remove the item (before the
change) or the current index of the changed item
:param object item: The item involved in this change
:param bool updated: True if the item was changed
:param bool added: True if the item was added

View File

@ -27,7 +27,7 @@ from __future__ import absolute_import
__authors__ = ["V. Valls"]
__license__ = "MIT"
__date__ = "07/05/2019"
__date__ = "17/05/2019"
import numpy
from .AbstractModel import AbstractModel
@ -91,7 +91,7 @@ class PeakModel(AbstractModel):
List of axis/ord can be reached like that.
.. code-block::
.. code-block:: python
coords = group.coords()
yy = coords[:, 0]

View File

@ -27,7 +27,7 @@ from __future__ import absolute_import
__authors__ = ["V. Valls"]
__license__ = "MIT"
__date__ = "16/05/2019"
__date__ = "17/05/2019"
import logging
import numpy
@ -767,8 +767,8 @@ class IntegrationPlot(qt.QFrame):
def setIntegrationProcess(self, integrationProcess):
"""
:param IntegrationProcess integrationProcess: Result of the integration
process
:param :class:`~pyFAI.gui.tasks.IntegrationTask.IntegrationProcess` integrationProcess:
Result of the integration process
"""
self.__clearRings()

View File

@ -34,19 +34,14 @@ __author__ = "Valentin Valls"
__contact__ = "valentin.valls@esrf.fr"
__license__ = "MIT"
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
__date__ = "15/01/2019"
__date__ = "16/05/2019"
import unittest
import logging
import numpy
from silx.gui import qt
try:
from silx.gui.utils import testutils
except ImportError:
# silx 0.8 and earlly
from silx.gui.test import utils as testutils
from silx.gui.utils import testutils
import pyFAI.resources
import pyFAI.calibrant
import pyFAI.detectors

View File

@ -34,15 +34,14 @@ __author__ = "Valentin Valls"
__contact__ = "valentin.valls@esrf.fr"
__license__ = "MIT"
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
__date__ = "25/02/2019"
__date__ = "16/05/2019"
import os
import sys
import unittest
import logging
from silx.gui import qt
from ...gui.widgets.WorkerConfigurator import WorkerConfigurator
from silx.gui.utils import testutils
from pyFAI.test.utilstest import UtilsTest
from pyFAI.io import integration_config
@ -50,32 +49,15 @@ from pyFAI.io import integration_config
logger = logging.getLogger(__name__)
class TestIntegrationDialog(unittest.TestCase):
class TestIntegrationDialog(testutils.TestCaseQt):
@classmethod
def setUpClass(cls):
cls.app = None
if sys.platform.startswith('linux') and not os.environ.get('DISPLAY', ''):
# On linux and no DISPLAY available (e.g., ssh without -X)
logger.warning('pyFAI.integrate_widget tests disabled (DISPLAY env. variable not set)')
cls.app = None
elif qt is not None:
cls.app = qt.QApplication([])
super(TestIntegrationDialog, cls).setUpClass()
config = {"poni": UtilsTest.getimage("Pilatus1M.poni")}
integration_config.normalize(config, inplace=True)
cls.base_config = config
def setUp(self):
if qt is None:
self.skipTest("Qt is not available")
if self.__class__.app is None:
self.skipTest("DISPLAY env. is not set")
@classmethod
def tearDownClass(cls):
cls.app = None
def test_config_flatdark_v1(self):
dico = {"dark_current": "a,b,c",
"flat_field": "a,b,d"}

View File

@ -34,18 +34,13 @@ __author__ = "Valentin Valls"
__contact__ = "valentin.valls@esrf.fr"
__license__ = "MIT"
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
__date__ = "11/04/2019"
__date__ = "16/05/2019"
import unittest
import logging
import numpy
try:
from silx.gui.utils import testutils
except ImportError:
# silx 0.8 and earlly
from silx.gui.test import utils as testutils
from silx.gui.utils import testutils
from ..model.PeakModel import PeakModel
from ..model.ListModel import ListModel
from ..model.DataModel import DataModel

View File

@ -30,7 +30,7 @@ from __future__ import division
__authors__ = ["V. Valls"]
__license__ = "MIT"
__date__ = "05/11/2018"
__date__ = "17/05/2019"
import logging
@ -43,7 +43,8 @@ class Timer(object):
"""Kind of context manager to call a code while the amount of seconds is
not finished.
.. code-block::
.. code-block:: python
timer = Timer(seconds=10)
while not timer.isTimeout():
print("Tick")

View File

@ -27,7 +27,7 @@ from __future__ import absolute_import
__authors__ = ["V. Valls"]
__license__ = "MIT"
__date__ = "25/04/2019"
__date__ = "17/05/2019"
import logging
@ -139,7 +139,7 @@ class AdvancedComboBox(qt.QComboBox):
Only `qt.Qt.DisplayRole` and `qt.Qt.DecorationRole` are supported.
.. code-block::
.. code-block:: python
def displayedData(widget, row, role=qt.Qt.DisplayRole):
if role == qt.Qt.DisplayRole:

View File

@ -27,7 +27,7 @@ from __future__ import absolute_import
__authors__ = ["V. Valls"]
__license__ = "MIT"
__date__ = "10/05/2019"
__date__ = "16/05/2019"
import logging
import numpy
@ -55,6 +55,7 @@ class CalibrantPreview(qt.QFrame):
self.__calibrant = None
self.__waveLength = None
self.__pixmap = None
self.__cachedSize = None
self.setMinimumSize(qt.QSize(50, 20))
def setCalibrant(self, calibrant):
@ -103,14 +104,14 @@ class CalibrantPreview(qt.QFrame):
fileds.append((u"Name", name, None))
fileds.append((u"Nb registered rays", calibrant.count_registered_dSpacing(), None))
dSpacing = calibrant.get_dSpacing()
fileds.append((u"Nb visible rays", len(dSpacing), u"between 0 and π"))
fileds.append((u"Nb visible rays", len(dSpacing), u"between 0 and 180°"))
if len(dSpacing) > 0:
ray = calibrant.get_dSpacing()[0]
angle = calibrant.get_2th()[0]
fileds.append((u"First visible ray", u"%f (%f rad)" % (ray, angle), None))
fileds.append((u"First visible ray", u"%f Å (%f°)" % (ray, numpy.rad2deg(angle)), None))
ray = calibrant.get_dSpacing()[-1]
angle = calibrant.get_2th()[-1]
fileds.append((u"Last visible ray", u"%f (%f rad)" % (ray, angle), None))
fileds.append((u"Last visible ray", u"%f Å (%f°)" % (ray, numpy.rad2deg(angle)), None))
toolTip = []
for f in fileds:
@ -124,31 +125,23 @@ class CalibrantPreview(qt.QFrame):
toolTip = u"<html><ul>%s</ul></html>" % toolTip
self.setToolTip(toolTip)
def __getPixmap(self):
if self.__pixmap is not None:
def __getPixmap(self, size=360):
if self.__pixmap is not None and self.__cachedSize == size:
return self.__pixmap
calibrant = self.__getConfiguredCalibrant()
if calibrant is None:
return None
tths = numpy.array(calibrant.get_2th())
tth_min, tth_max = 0, numpy.pi
size = 360
agregation = numpy.zeros((1, size))
for tth in tths:
pos = int((tth - tth_min) / (tth_max - tth_min) * size)
if pos < 0:
continue
if pos >= size:
continue
agregation[0, pos] += 1
histo = numpy.histogram(tths, bins=size, range=(tth_min, tth_max))
agregation = histo[0].reshape(1, -1)
colormap = Colormap(name="reversed gray", vmin=agregation.min(), vmax=agregation.max())
rgbImage = colormap.applyToData(agregation)[:, :, :3]
qimage = imageutils.convertArrayToQImage(rgbImage)
qpixmap = qt.QPixmap.fromImage(qimage)
self.__pixmap = qpixmap
self.__cachedSize = size
return self.__pixmap
def paintEvent(self, event):
@ -167,9 +160,9 @@ class CalibrantPreview(qt.QFrame):
self)
# content
pixmap = self.__getPixmap()
pixmapRect = self.rect().adjusted(self._PIXMAP_OFFSET, self._PIXMAP_OFFSET,
-self._PIXMAP_OFFSET, -self._PIXMAP_OFFSET)
pixmap = self.__getPixmap(size=pixmapRect.width())
if pixmap is not None:
painter.drawPixmap(pixmapRect,
pixmap,

View File

@ -30,11 +30,13 @@
# OTHER DEALINGS IN THE SOFTWARE.
#
"""Contains all OpenCL implementation."""
__author__ = "Jerome Kieffer"
__contact__ = "Jerome.Kieffer@ESRF.eu"
__license__ = "MIT"
__copyright__ = "2012-2017 European Synchrotron Radiation Facility, Grenoble, France"
__date__ = "25/02/2019"
__date__ = "17/05/2019"
__status__ = "stable"
import os

View File

@ -29,14 +29,14 @@
__authors__ = ["Jérôme Kieffer", "Giannis Ashiotis"]
__license__ = "MIT"
__date__ = "11/01/2019"
__date__ = "16/05/2019"
__copyright__ = "2014-2017, ESRF, Grenoble"
__contact__ = "jerome.kieffer@esrf.fr"
import logging
from collections import OrderedDict
import numpy
from . import pyopencl, kernel_workgroup_size
from . import pyopencl
from ..utils import calc_checksum
if pyopencl:
@ -46,6 +46,7 @@ else:
from . import processing
from . import get_x87_volatile_option
from . import kernel_workgroup_size
EventDescription = processing.EventDescription
OpenclProcessing = processing.OpenclProcessing
BufferDescription = processing.BufferDescription

View File

@ -30,7 +30,7 @@
__authors__ = ["Jérôme Kieffer", "Giannis Ashiotis"]
__license__ = "MIT"
__date__ = "06/05/2019"
__date__ = "16/05/2019"
__copyright__ = "2014, ESRF, Grenoble"
__contact__ = "jerome.kieffer@esrf.fr"
@ -42,8 +42,7 @@ from . import ocl
if ocl is not None:
from . import pyopencl, allocate_cl_buffers, release_cl_buffers
mf = pyopencl.mem_flags
from ..ext.splitBBoxLUT import HistoBBox1d
from . import utils
from . import concatenate_cl_kernel
from ..utils import crc32
logger = logging.getLogger(__name__)
@ -200,7 +199,7 @@ class OCL_Hist_Pixelsplit(object):
:param kernel_file: path tothe
"""
kernel_file = kernel_file or "ocl_hist_pixelsplit.cl"
kernel_src = utils.concatenate_cl_kernel([kernel_file])
kernel_src = concatenate_cl_kernel([kernel_file])
template_options = "-D BINS=%i -D NIMAGE=%i -D WORKGROUP_SIZE=%i -D EPS=%f"
compile_options = template_options % (self.bins, self.size, self.BLOCK_SIZE, numpy.finfo(numpy.float32).eps)

View File

@ -33,7 +33,7 @@ from __future__ import absolute_import, print_function, division
__author__ = "Jérôme Kieffer"
__license__ = "MIT"
__date__ = "15/03/2019"
__date__ = "16/05/2019"
__copyright__ = "2015-2017, ESRF, Grenoble"
__contact__ = "jerome.kieffer@esrf.fr"
@ -42,7 +42,10 @@ logger = logging.getLogger(__name__)
from collections import OrderedDict
import numpy
from . import pyopencl, mf, processing
from . import pyopencl
if pyopencl is None:
raise ImportError("pyopencl is not installed")
from . import mf, processing
EventDescription = processing.EventDescription
OpenclProcessing = processing.OpenclProcessing
BufferDescription = processing.BufferDescription

View File

@ -35,7 +35,7 @@ from __future__ import absolute_import, print_function, division
__author__ = "Jérôme Kieffer"
__license__ = "MIT"
__date__ = "11/01/2019"
__date__ = "16/05/2019"
__copyright__ = "2015, ESRF, Grenoble"
__contact__ = "jerome.kieffer@esrf.fr"
@ -44,7 +44,7 @@ import logging
logger = logging.getLogger(__name__)
from collections import OrderedDict
import numpy
from . import ocl, release_cl_buffers, kernel_workgroup_size, get_x87_volatile_option
from . import ocl
if ocl:
import pyopencl.array
from . import processing
@ -53,6 +53,7 @@ if ocl:
BufferDescription = processing.BufferDescription
else:
raise ImportError("pyopencl is not installed or no device is available")
from. import release_cl_buffers, kernel_workgroup_size, get_x87_volatile_option
class Separator(OpenclProcessing):

View File

@ -34,26 +34,29 @@ of this modules to ensure access across different distribution schemes:
- Frozen fat binary application using pyFAI (frozen with cx_Freeze or py2app).
This needs special care for the resource files in the setup:
- With cx_Freeze, add pyFAI/resources to include_files::
- With cx_Freeze, add pyFAI/resources to include_files:
.. code-block:: python
import pyFAI.resources
pyFAI_include_files = (os.path.dirname(pyFAI.resources.__file__),
os.path.join('pyFAI', 'resources'))
setup(...
options={'build_exe': {'include_files': [pyFAI_include_files]}}
)
setup(...,
options={'build_exe': {'include_files': [pyFAI_include_files]}}
)
- With py2app, add pyFAI in the packages list of the py2app options:
- With py2app, add pyFAI in the packages list of the py2app options::
.. code-block:: python
setup(...
options={'py2app': {'packages': ['pyFAI']}}
)
setup(...,
options={'py2app': {'packages': ['pyFAI']}}
)
"""
__authors__ = ["V.A. Sole", "Thomas Vincent"]
__license__ = "MIT"
__date__ = "20/02/2018"
__date__ = "17/05/2019"
import os

View File

@ -39,7 +39,7 @@ __author__ = "Jérôme Kieffer"
__contact__ = "Jerome.Kieffer@esrf.fr"
__license__ = "MIT"
__copyright__ = "2015-2018 European Synchrotron Radiation Facility, Grenoble, France"
__date__ = "11/12/2018"
__date__ = "16/05/2019"
import sys
import os
@ -226,44 +226,64 @@ class TestBugRegression(unittest.TestCase):
hc = 12.398419292004204 # Old reference value
self.assertAlmostEqual(hc, units.hc, 6, "hc is correct, got %s" % units.hc)
def test_bug_808(self):
def test_import_all_modules(self):
"""Try to import every single module in the package
"""
import pyFAI
# print(pyFAI.__file__)
# print(pyFAI.__name__)
pyFAI_root = os.path.split(pyFAI.__file__)[0]
def must_be_skipped(path):
path = os.path.relpath(path, pyFAI_root)
path = path.replace("\\", "/")
elements = path.split("/")
if "test" in elements:
# Always skip test modules
logger.warning("Skip test module %s", path)
return True
if not UtilsTest.WITH_OPENCL_TEST:
if "opencl" in elements:
logger.warning("Skip %s. OpenCL tests disabled", path)
return True
if not UtilsTest.WITH_QT_TEST:
if "gui" in elements:
logger.warning("Skip %s. Qt tests disabled", path)
return True
return False
for root, dirs, files in os.walk(pyFAI_root, topdown=True):
for adir in dirs:
subpackage_path = os.path.join(root, adir, "__init__.py")
if must_be_skipped(subpackage_path):
continue
subpackage = "pyFAI" + subpackage_path[len(pyFAI_root):-12].replace(os.sep, ".")
if os.path.isdir(subpackage_path):
logger.info("Loading subpackage: %s from %s", subpackage, subpackage_path)
sys.modules[subpackage] = load_source(subpackage, subpackage_path)
for name in files:
if name.endswith(".py"):
path = os.path.join(root, name)
fqn = "pyFAI" + path[len(pyFAI_root):-3].replace(os.sep, ".")
logger.info("Importing %s from %s", fqn, path)
try:
load_source(fqn, path)
except Exception as err:
if ((isinstance(err, ImportError) and
"No Qt wrapper found" in err.__str__() or
"pyopencl is not installed" in err.__str__() or
"PySide" in err.__str__()) or
(isinstance(err, SystemError) and
"Parent module" in err.__str__())):
if not name.endswith(".py"):
continue
path = os.path.join(root, name)
if must_be_skipped(path):
continue
fqn = "pyFAI" + path[len(pyFAI_root):-3].replace(os.sep, ".")
logger.info("Importing %s from %s", fqn, path)
try:
load_source(fqn, path)
except Exception as err:
if ((isinstance(err, ImportError) and
"No Qt wrapper found" in err.__str__() or
"pyopencl is not installed" in err.__str__() or
"PySide" in err.__str__()) or
(isinstance(err, SystemError) and
"Parent module" in err.__str__())):
logger.info("Expected failure importing %s from %s with error: %s",
fqn, path, err)
else:
logger.error("Failed importing %s from %s with error: %s%s: %s",
fqn, path, os.linesep,
err.__class__.__name__, err)
raise err
logger.info("Expected failure importing %s from %s with error: %s",
fqn, path, err)
else:
logger.error("Failed importing %s from %s with error: %s%s: %s",
fqn, path, os.linesep,
err.__class__.__name__, err)
raise err
def test_bug_816(self):
"Ensure the chi-disontinuity is properly set"

View File

@ -33,7 +33,7 @@ __author__ = "Picca Frédéric-Emmanuel, Jérôme Kieffer",
__contact__ = "picca@synchrotron-soleil.fr"
__license__ = "MIT+"
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
__date__ = "01/03/2019"
__date__ = "16/05/2019"
import os
import tempfile
@ -169,7 +169,7 @@ class TestDetector(unittest.TestCase):
if os.path.exists(fname): # already tested with another alias
continue
det = detector_factory(det_name)
logger.info("%s --> nxs", det_name)
logger.debug("%s --> nxs", det_name)
if (det.pixel1 is None) or (det.shape is None):
continue
if (det.shape[0] > 1900) or (det.shape[1] > 1900):

View File

@ -151,9 +151,10 @@ class TestPreproc(unittest.TestCase):
@unittest.skipIf(UtilsTest.opencl is False, "User request to skip OpenCL tests")
def test_opencl(self):
from ..opencl import ocl, preproc as ocl_preproc
from ..opencl import ocl
if ocl is None:
self.skipTest("OpenCL not available")
from ..opencl import preproc as ocl_preproc
self.one_test(ocl_preproc)

View File

@ -205,7 +205,7 @@ register_radial_unit("q_A^-1",
label=r"Scattering vector $q$ ($\AA^{-1}$)",
equation=eq_q,
short_name="q",
unit_symbol="\AA^{-1}")
unit_symbol=r"\AA^{-1}")
register_radial_unit("d*2_A^-2",
center="rd2Array",
@ -214,7 +214,7 @@ register_radial_unit("d*2_A^-2",
label=r"Reciprocal spacing squared $d^{*2}$ ($\AA^{-2}$)",
equation=lambda x, y, z, wavelength: (eq_q(x, y, z, wavelength) / (2.0 * numpy.pi)) ** 2,
short_name="d^{*2}",
unit_symbol="\AA^{-2}")
unit_symbol=r"\AA^{-2}")
register_radial_unit("d*2_nm^-2",
center="rd2Array",

View File

@ -27,14 +27,14 @@
# THE SOFTWARE.
"""
Utilities
Module with miscelaneous tools
"""
__author__ = "Jerome Kieffer"
__contact__ = "Jerome.Kieffer@ESRF.eu"
__license__ = "MIT"
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
__date__ = "04/10/2018"
__date__ = "17/05/2019"
__status__ = "production"
import logging

View File

@ -23,11 +23,12 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
""" Bayesian evaluation of background for 1D powder diffraction pattern
"""Bayesian evaluation of background for 1D powder diffraction pattern.
Code according to Sivia and David, J. Appl. Cryst. (2001). 34, 318-324
# Version: 0.1 2012/03/28
# Version: 0.2 2016/10/07: OOP implementation
* Version: 0.1 2012/03/28
* Version: 0.2 2016/10/07: OOP implementation
"""
from __future__ import absolute_import, print_function, division
@ -35,7 +36,7 @@ from __future__ import absolute_import, print_function, division
__authors__ = ["Vincent Favre-Nicolin", "Jérôme Kieffer"]
__license__ = "MIT"
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
__date__ = "09/01/2018"
__date__ = "17/05/2019"
__status__ = "development"
__docformat__ = 'restructuredtext'
@ -53,7 +54,7 @@ class BayesianBackground(object):
.. math:: z = y / sigma^2
* if z<0: a quadratic behaviour is expected
* if z<0 a quadratic behaviour is expected
* if z>>1 it is likely a bragg peak so the penalty should be small: log(z).
* The spline is used to have a quadratic behaviour near 0 and the log one
near the junction
@ -126,9 +127,11 @@ class BayesianBackground(object):
def bayes_llk(cls, z):
"""Calculate actually the log-likelihood from a set of weighted error
Re implementation of:
(y<=0)*5*y**2 + (y>0)*(y<8)*pyFAI.utils.bayes.background.spline(y) + (y>=8)*(s1+log(abs(y)+1*(y<8)))
even slightly faster
Re implementation of the following code even slightly faster:
.. code-block:: python
(y<=0)*5*y**2 + (y>0)*(y<8)*pyFAI.utils.bayes.background.spline(y) + (y>=8)*(s1+log(abs(y)+1*(y<8)))
:param float[:] z: weighted error
:return: log likelihood

View File

@ -736,10 +736,7 @@ def is_far_from_group(pt, lst_pts, d2):
def rwp(obt, ref):
""" ___________________________
Calculate \/ 4 ( obt - ref)²
V Sum( --------------- )
(obt + ref)²
"""Compute :math:`\\sqrt{\\sum \\frac{4\\cdot(obt-ref)^2}{(obt + ref)^2}}`.
This is done for symmetry reason between obt and ref

View File

@ -23,14 +23,14 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
"""Module containing utilities around shell"""
"""Module containing utilities around shell command line."""
from __future__ import absolute_import, print_function, division
__author__ = "valentin.valls@esrf.eu"
__license__ = "MIT"
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
__date__ = "25/02/2019"
__date__ = "17/05/2019"
__status__ = "development"
__docformat__ = 'restructuredtext'

View File

@ -26,12 +26,12 @@
from __future__ import absolute_import, print_function, division
"""Module containing utilitary around string"""
"""Module containing enhanced string formatters."""
__author__ = "valentin.valls@esrf.eu"
__license__ = "MIT"
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
__date__ = "16/05/2019"
__date__ = "17/05/2019"
__status__ = "development"
__docformat__ = 'restructuredtext'