1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
|
.. api_reference:
CDI analysis using a command-line script
========================================
The simplest way to analyse a CDI dataset using PyNX is to use a
command-line script.
*Note regarding command-line arguments*:
* previous versions of PyNX (<2024) used e.g. ``pynx-ptycho-cxi data=data.cxi``
* now command-line arguments all start with ``--`` to use standard parsing libarries
and make it easier to documentation
* you can use equivalently ``pynx-ptycho-cxi --data=data.cxi`` or
``pynx-ptycho-cxi --data data.cxi``, with the exception of options where
the supplied value begins with ``--``, e.g. it is mandatory to use
``--support_post_expand=-2,2``, as using ``--support_post_expand -2 2``
will try to interpret ``-2`` as a new command-line argument
There are two main scripts which can be currently used:
``pynx-cdi-id01`` and ``pynx-cdi-id10``, which differ only by
a few default options (HIO vs RAAR algorithm, and for id10: ``--positivity``
and ``--mask=zero`` options).
A simple data analysis can be done, when reading a CXI file, using:
``pynx-id01cdi.py data=data.cxi``
This will simply run the analysis with default parameter. The initial
support will be determined using auto-correlation (which is usually
fine for Bragg CDI where no beamstop is used), no positivity...
A more detailed example using a Vaterite dataset (`Cherkas et al.,
Crystal Growth & Design 17, 4183–4188 (2017)
<http://dx.doi.org/10.1021/acs.cgd.7b00476>`_):
.. code-block:: bash
# If necessary, activate your python environment with PyNX
source /path/to/my/python/environment/bin activate
# Download the example dataset
curl -O http://ftp.esrf.fr/pub/scisoft/PyNX/data/T25_60_3D.cxi
# View the CXI file using the silx viewer:
silx view T25_60_3D.cxi
# Run the PyNX analysis script
pynx-cdi-id10 --data T25_60_3D.cxi --support circle --support_size 70\
--nb_raar 800 --nb_hio 0 --nb_er 200 --verbose 50\
--support_smooth_width_begin 3 --support_smooth_width_end 1\
--positivity --support_threshold 0.2 --max_size 512\
--support_threshold_method max --liveplot
# View the result from the output CXI file using the silx viewer
silx view latest.cxi
# Note that you can see all the parameters used for the optimisation
# in entry_last/image_1/process_1/
# You can tune the threshold if you want to improve the solution,
# or try HIO instead of RAAR (``--nb_hio 800 --nb_raar 0``)
To perform a more complete analysis, it is advised to use multiple runs,
select the best from the free log-likelihood, and combine them:
.. code-block:: bash
# Perform 10 runs and combine the 5 best ones (takes a little longer,
# 30s per run on a V100 GPU, liveplot is disabled)
# Note --support_threshold 0.1 0.2 means threshold is randomly chosen
# between 0.1 and 0.2 for each run
rm -f *LLK*.cxi # remove previous results
pynx-cdi-id10 --data T25_60_3D.cxi --support circle --support_size 70\
--nb_raar 800 --nb_hio 0 --nb_er 200 --verbose 50\
--support_smooth_width_begin 3 --support_smooth_width_end 1\
--positivity support_threshold 0.1 0.2 --max_size 512\
--support_threshold_method max --nb_run 10 --nb_run_keep 5
# Perform a modes analysis and produce a movie (requires ffmpeg)
pynx-cdi-analysis.py *LLK*.cxi modes movie
# Look at modes analysis
silx view modes.h5
# See movie of slices from modes analysis
vlc cdi-3d-slices.mp4
More information
----------------
The full documentation for the command-line scripts can be obtained by using
the ``--help`` command-line option, e.g.:
``pynx-cdi-id10 --help``
For more information, please read the
:ref:`online documentation on CDI scripts <cdi_scripts>`
|