diff --git a/doc/build/doctrees/cfelpyutils.doctree b/doc/build/doctrees/cfelpyutils.doctree
index 5fce9a4c8fbd504c632809e2236a786e14a3748d..e39049099ba04b6dd292ee3c8b0dfb2695ee82db 100644
Binary files a/doc/build/doctrees/cfelpyutils.doctree and b/doc/build/doctrees/cfelpyutils.doctree differ
diff --git a/doc/build/doctrees/environment.pickle b/doc/build/doctrees/environment.pickle
index a4ed16141619c2a0bb75154cd86c47aadef2da2a..4bce21f622910e0434419ef9043a85fdb43b1e70 100644
Binary files a/doc/build/doctrees/environment.pickle and b/doc/build/doctrees/environment.pickle differ
diff --git a/doc/build/html/_sources/cfelpyutils.rst.txt b/doc/build/html/_sources/cfelpyutils.rst.txt
index bce7b5a9cf8e3068b6da8918cb166b1d299f10c4..602f8dcd5fdf1903e04838fd06e0ab916cfbc845 100644
--- a/doc/build/html/_sources/cfelpyutils.rst.txt
+++ b/doc/build/html/_sources/cfelpyutils.rst.txt
@@ -4,58 +4,42 @@ cfelpyutils package
 Submodules
 ----------
 
-cfelpyutils.cfel_crystfel module
---------------------------------
-
-.. automodule:: cfelpyutils.cfel_crystfel
-    :members:
-    :undoc-members:
-    :show-inheritance:
-
-cfelpyutils.cfel_cxi module
----------------------------
+cfelpyutils\.crystfel\_utils module
+-----------------------------------
 
-.. automodule:: cfelpyutils.cfel_cxi
+.. automodule:: cfelpyutils.crystfel_utils
     :members:
     :undoc-members:
     :show-inheritance:
 
-cfelpyutils.cfel_fabio module
------------------------------
+cfelpyutils\.geometry\_utils module
+-----------------------------------
 
-.. automodule:: cfelpyutils.cfel_fabio
+.. automodule:: cfelpyutils.geometry_utils
     :members:
     :undoc-members:
     :show-inheritance:
 
-cfelpyutils.cfel_geom module
-----------------------------
+cfelpyutils\.hdf5\_utils module
+-------------------------------
 
-.. automodule:: cfelpyutils.cfel_geom
+.. automodule:: cfelpyutils.hdf5_utils
     :members:
     :undoc-members:
     :show-inheritance:
 
-cfelpyutils.cfel_hdf5 module
-----------------------------
+cfelpyutils\.parameter\_utils module
+------------------------------------
 
-.. automodule:: cfelpyutils.cfel_hdf5
+.. automodule:: cfelpyutils.parameter_utils
     :members:
     :undoc-members:
     :show-inheritance:
 
-cfelpyutils.cfel_optarg module
-------------------------------
-
-.. automodule:: cfelpyutils.cfel_optarg
-    :members:
-    :undoc-members:
-    :show-inheritance:
-
-cfelpyutils.cfel_psana module
------------------------------
+cfelpyutils\.psana\_utils module
+--------------------------------
 
-.. automodule:: cfelpyutils.cfel_psana
+.. automodule:: cfelpyutils.psana_utils
     :members:
     :undoc-members:
     :show-inheritance:
diff --git a/doc/build/html/cfelpyutils.html b/doc/build/html/cfelpyutils.html
index 1845ab949fe2e133bc3a03f1ac76260ff7c2615b..6459b15142dea35d6858451458da946d1d504067 100644
--- a/doc/build/html/cfelpyutils.html
+++ b/doc/build/html/cfelpyutils.html
@@ -48,13 +48,11 @@
   <ul>
 <li><a class="reference internal" href="#">cfelpyutils package</a><ul>
 <li><a class="reference internal" href="#submodules">Submodules</a></li>
-<li><a class="reference internal" href="#module-cfelpyutils.cfel_crystfel">cfelpyutils.cfel_crystfel module</a></li>
-<li><a class="reference internal" href="#module-cfelpyutils.cfel_cxi">cfelpyutils.cfel_cxi module</a></li>
-<li><a class="reference internal" href="#module-cfelpyutils.cfel_fabio">cfelpyutils.cfel_fabio module</a></li>
-<li><a class="reference internal" href="#module-cfelpyutils.cfel_geom">cfelpyutils.cfel_geom module</a></li>
-<li><a class="reference internal" href="#module-cfelpyutils.cfel_hdf5">cfelpyutils.cfel_hdf5 module</a></li>
-<li><a class="reference internal" href="#module-cfelpyutils.cfel_optarg">cfelpyutils.cfel_optarg module</a></li>
-<li><a class="reference internal" href="#module-cfelpyutils.cfel_psana">cfelpyutils.cfel_psana module</a></li>
+<li><a class="reference internal" href="#module-cfelpyutils.crystfel_utils">cfelpyutils.crystfel_utils module</a></li>
+<li><a class="reference internal" href="#module-cfelpyutils.geometry_utils">cfelpyutils.geometry_utils module</a></li>
+<li><a class="reference internal" href="#module-cfelpyutils.hdf5_utils">cfelpyutils.hdf5_utils module</a></li>
+<li><a class="reference internal" href="#module-cfelpyutils.parameter_utils">cfelpyutils.parameter_utils module</a></li>
+<li><a class="reference internal" href="#module-cfelpyutils.psana_utils">cfelpyutils.psana_utils module</a></li>
 <li><a class="reference internal" href="#module-cfelpyutils">Module contents</a></li>
 </ul>
 </li>
@@ -90,25 +88,29 @@
 <div class="section" id="submodules">
 <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2>
 </div>
-<div class="section" id="module-cfelpyutils.cfel_crystfel">
-<span id="cfelpyutils-cfel-crystfel-module"></span><h2>cfelpyutils.cfel_crystfel module<a class="headerlink" href="#module-cfelpyutils.cfel_crystfel" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-cfelpyutils.crystfel_utils">
+<span id="cfelpyutils-crystfel-utils-module"></span><h2>cfelpyutils.crystfel_utils module<a class="headerlink" href="#module-cfelpyutils.crystfel_utils" title="Permalink to this headline">¶</a></h2>
 <p>Utilities for interoperability with the CrystFEL software package.</p>
 <p>This module contains reimplementation of Crystfel functions and utilities.</p>
 <dl class="function">
-<dt id="cfelpyutils.cfel_crystfel.load_crystfel_geometry">
-<code class="descclassname">cfelpyutils.cfel_crystfel.</code><code class="descname">load_crystfel_geometry</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_crystfel.load_crystfel_geometry" title="Permalink to this definition">¶</a></dt>
-<dd><p>Loads a CrystFEL geometry file into a dictionary.</p>
-<p>Reimplements the get_detector_geometry_2 function from CrystFEL amost verbatim. Returns a dictionary with the
-geometry information. Entries in the geometry file appears as keys in the returned dictionary. For a full
-documentation on the CrystFEL geometry format, see:</p>
+<dt id="cfelpyutils.crystfel_utils.load_crystfel_geometry">
+<code class="descclassname">cfelpyutils.crystfel_utils.</code><code class="descname">load_crystfel_geometry</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.crystfel_utils.load_crystfel_geometry" title="Permalink to this definition">¶</a></dt>
+<dd><p>Load a CrystFEL geometry file into a dictionary.</p>
+<p>Reimplementation of the get_detector_geometry_2 function from CrystFEL
+almost verbatim. Returns a dictionary with the geometry information.
+Entries in the geometry file appears as keys in the returned dictionary.
+For a full documentation on the CrystFEL geometry format, see:</p>
 <p>tfel/manual-crystfel_geometry.html</p>
+<p>he code of this function is synced with the code of the function
+‘get_detector_geometry_2’ in CrystFEL at commit
+41a8fa9819010fe8ddeb66676fee717f5226c7b8.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>filename</strong> (<em>str</em>) – filename of the geometry file</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>filename</strong> (<em>str</em>) – filename of the geometry file.</td>
 </tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">dictionary with the geometry loaded from the file</td>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">dictionary with the geometry loaded from the file.</td>
 </tr>
 <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body">detector (dict)</td>
 </tr>
@@ -117,433 +119,113 @@ documentation on the CrystFEL geometry format, see:</p>
 </dd></dl>
 
 </div>
-<div class="section" id="module-cfelpyutils.cfel_cxi">
-<span id="cfelpyutils-cfel-cxi-module"></span><h2>cfelpyutils.cfel_cxi module<a class="headerlink" href="#module-cfelpyutils.cfel_cxi" title="Permalink to this headline">¶</a></h2>
-<p>Utilities for writing multi-event files in the CXIDB format.</p>
-<p>This module contains utilities to write files that adhere to the CXIDB file format:</p>
-<p><a class="reference external" href="http://www.cxidb.org/cxi.html">http://www.cxidb.org/cxi.html</a> .</p>
-<dl class="class">
-<dt id="cfelpyutils.cfel_cxi.CXIWriter">
-<em class="property">class </em><code class="descclassname">cfelpyutils.cfel_cxi.</code><code class="descname">CXIWriter</code><span class="sig-paren">(</span><em>filename</em>, <em>max_num_slices=5000</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_cxi.CXIWriter" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">object</span></code></p>
-<p>Writing of multi-event CXIDB files.</p>
-<p>Implements a simple low-level CXIDB file format writer for multi event files. it allows the user to write data
-“stacks” in the CXIDB files, making sure that the entries in all stacks are synchronized.</p>
-<p>A CXI Writer instance manages one file. A user can add a stack to a CXI Writer instance with the
-add_stack_to_writer function, which also writes the first entry in the stack. The user can then add to the writer
-all the stacks that he wants in the file. Once all stacks are added, the user initializes them  with the
-initialize_stacks function. After initialization, no more stacks can be added. Instead, entries can be appended to
-the existing stacks, using the append_data_to_stack function.</p>
-<p>A “slice” (a set of synced entries in all the stacks in the file) can be written to the a file only after an entry
-has been appended to all stacks in the file. Conversely, after an entry has been appended to a stack, the user
-cannot append another entry before a slice is written. This ensures synchronization of the data in all the stacks.</p>
-<p>A file can be closed at any time. In any case, the writer will not allow a file to contain more than the
-number_of_entries specified during instantiation.</p>
-<p>Simple non-stack entries can be written to the file at any time, before or after stack initialization (provided of
-course that the file is open). Entries and stacks will general never be overwritten unless the overwrite parameter
-is set to True.</p>
-<p>Example of usage of the stack API:</p>
-<p>c1 = 0
-c2 = 0</p>
-<p>f1 = CXIWriter(‘test1.h5’, )
-f2 = CXIWriter(‘test2.h5’, )</p>
-<dl class="docutils">
-<dt>f1.add_stack_to_writer(‘detector1’, ‘/entry_1/detector_1/data’, numpy.random.rand(2, 2),</dt>
-<dd>‘frame:y:x’)</dd>
-<dt>f2.add_stack_to_writer(‘detector2’, ‘/entry_1/detector_1/data’, numpy.random.rand(3, 2),</dt>
-<dd>‘frame:y:x’, compression=False, chunk_size=(1,3,2))</dd>
-</dl>
-<p>f1.add_stack_to_writer(‘counter1’, ‘/entry_1/detector_1/count’, c1)
-f2.add_stack_to_writer(‘counter2’, ‘/entry_1/detector_1/count’, c2)</p>
-<p>f1.write_simple_entry(‘detectorname1’, ‘/entry_1/detector_1/name’, ‘FrontCSPAD’)
-f2.write_simple_entry(‘detectorname2’, ‘/entry_1/detector_1/name’, ‘BackCSPAD’)</p>
-<p>f1.initialize_stacks()
-f2.initialize_stacks()</p>
-<p>a = numpy.random.rand(2, 2)
-b = numpy.random.rand(3, 2)</p>
-<p>c1 += 1
-c2 += 2</p>
-<p>f1.append_data_to_stack(‘detector1’, a)
-f2.append_data_to_stack(‘detector2’, b)</p>
-<p>f1.append_data_to_stack(‘counter1’, c1)
-f2.append_data_to_stack(‘counter2’, c2)</p>
-<p>f1.write_stack_slice_and_increment()
-f2.write_stack_slice_and_increment()</p>
-<p>f1.create_link(‘detectorname1’, ‘/name’)
-f2.create_link(‘detectorname2’, ‘/name’)</p>
-<p>f1.close_file()
-f2.close_file()</p>
-<dl class="method">
-<dt id="cfelpyutils.cfel_cxi.CXIWriter.add_stack_to_writer">
-<code class="descname">add_stack_to_writer</code><span class="sig-paren">(</span><em>name</em>, <em>path</em>, <em>initial_data</em>, <em>axes=None</em>, <em>compression=True</em>, <em>chunk_size=None</em>, <em>overwrite=True</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_cxi.CXIWriter.add_stack_to_writer" title="Permalink to this definition">¶</a></dt>
-<dd><p>Adds a new stack to the file.</p>
-<p>Adds a new stack to the CXI Writer instance. The user must provide a name for the stack, that will identify
-the stack in all subsequents operations. The user must also provide the data that will be written as the
-initial entry in the stack (initial_data). This initial entry is used to set the size and type of data that the
-stack will hold and these parameters are in turn be used to validate all data that is subsequently appended to
-the stack.</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>name</strong> (<em>str</em>) – stack name.</li>
-<li><strong>path</strong> (<em>str</em>) – path in the hdf5 file where the stack will be written.</li>
-<li><strong>(</strong><strong>Union</strong><strong>[</strong><strong>numpy.ndarray</strong><strong>, </strong><strong>bytes</strong><strong>, </strong><strong>int</strong><strong>, </strong><strong>float</strong><strong>]</strong> (<em>initial_data</em>) – initial entry in the stack. It gets written to the</li>
-<li><strong>as slice 0. Its characteristics are used to validate all data subsequently appended to the stack.</strong> (<em>stack</em>) – </li>
-<li><strong>axes</strong> (<em>bytes</em>) – the ‘axes’ attribute for the stack, as defined by the CXIDB file format.</li>
-<li><strong>compression</strong> (<em>Union</em><em>[</em><em>None</em><em>, </em><em>bool</em><em>,</em><em>str</em><em>]</em>) – compression parameter for the stack. This parameters works in the same</li>
-<li><strong>as the normal compression parameter from h5py. The default value of this parameter is True.</strong> (<em>way</em>) – </li>
-<li><strong>chunk_size</strong> (<em>Union</em><em>[</em><em>None</em><em>, </em><em>tuple</em><em>]</em>) – HDF5 chuck size for the stack. If this parameter is set to None, the</li>
-<li><strong>writer will compute a chuck size automatically</strong> (<em>CXI</em>) – </li>
-<li><strong>use the provided tuple to set the chunk size.</strong> (<em>will</em>) – </li>
-<li><strong>overwrite</strong> (<em>bool</em>) – if set to True, a stack already existing at the same location will be overwritten. If set</li>
-<li><strong>False</strong><strong>, </strong><strong>an attempt to overwrite a stack will raise an error.</strong> (<em>to</em>) – </li>
-</ul>
-</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="cfelpyutils.cfel_cxi.CXIWriter.append_data_to_stack">
-<code class="descname">append_data_to_stack</code><span class="sig-paren">(</span><em>name</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_cxi.CXIWriter.append_data_to_stack" title="Permalink to this definition">¶</a></dt>
-<dd><p>Appends data to a stack.</p>
-<p>Appends data to a stack, validating the data to make sure that the data type and size match the previous entries
-in the stack. Only one entry can be appended to each stack before writing a slice across all stacks with
-the write_slice_and_increment.</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>name</strong> (<em>str</em>) – stack name, defining the stack to which the data will be appended.</li>
-<li><strong>(</strong><strong>Union</strong><strong>[</strong><strong>numpy.ndarray</strong><strong>, </strong><strong>bytes</strong><strong>, </strong><strong>int</strong><strong>, </strong><strong>float</strong><strong>]</strong> (<em>data</em>) – data to write. The data will be validated against the type</li>
-<li><strong>size of previous entries in the stack.</strong> (<em>and</em>) – </li>
-</ul>
-</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="cfelpyutils.cfel_cxi.CXIWriter.close_file">
-<code class="descname">close_file</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_cxi.CXIWriter.close_file" title="Permalink to this definition">¶</a></dt>
-<dd><p>Closes the file.</p>
-<p>Closes the file for writing, ending all writing operations.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="cfelpyutils.cfel_cxi.CXIWriter.create_link">
-<code class="descname">create_link</code><span class="sig-paren">(</span><em>name</em>, <em>path</em>, <em>overwrite=False</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_cxi.CXIWriter.create_link" title="Permalink to this definition">¶</a></dt>
-<dd><p>Creates a link to a stack or entry.</p>
-<p>Creates a link in the file, at the path specified, pointing to the stack or the entry identified by the
-provided name. If a link or entry already exists at the specified path, it is deleted and replaced only if the
-value of the overwrite parameter is True.</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>name</strong> (<em>str</em>) – name of the stack or entry to which the link points.</li>
-<li><strong>path</strong> (<em>str</em>) – path in the hdf5 where the link is created.</li>
-<li><strong>overwrite</strong> (<em>bool</em>) – if set to True, an entry already existing at the same location will be overwritten. If set</li>
-<li><strong>False</strong><strong>, </strong><strong>an attempt to overwrite an entry will raise an error.</strong> (<em>to</em>) – </li>
-</ul>
-</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="cfelpyutils.cfel_cxi.CXIWriter.create_link_to_group">
-<code class="descname">create_link_to_group</code><span class="sig-paren">(</span><em>group</em>, <em>path</em>, <em>overwrite=False</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_cxi.CXIWriter.create_link_to_group" title="Permalink to this definition">¶</a></dt>
-<dd><p>Creates a link to an HDF5 group.</p>
-<p>Creates a link to an HDF5 group (as opposed to a simple entry or stack). If a link or entry already exists at
-the specified path, it is deleted and replaced only if the value of the overwrite parameter is True.</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>group</strong> (<em>str</em>) – internal HDF5 path of the group to which the link points.</li>
-<li><strong>path</strong> (<em>str</em>) – path in the hdf5 where the link is created.</li>
-<li><strong>overwrite</strong> (<em>bool</em>) – if set to True, an entry already existing at the same location will be overwritten. If set</li>
-<li><strong>False</strong><strong>, </strong><strong>an attempt to overwrite an entry will raise an error.</strong> (<em>to</em>) – </li>
-</ul>
-</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="cfelpyutils.cfel_cxi.CXIWriter.file_is_full">
-<code class="descname">file_is_full</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_cxi.CXIWriter.file_is_full" title="Permalink to this definition">¶</a></dt>
-<dd><p>Checks if the file is full.</p>
-<p>Checks if the file is full (i.e. the maximum number of slices have already been written), and returns the
-information to the user.</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">True if the file is full, False otherwise.</td>
-</tr>
-<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body">status (bool)</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="cfelpyutils.cfel_cxi.CXIWriter.get_file_handle">
-<code class="descname">get_file_handle</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_cxi.CXIWriter.get_file_handle" title="Permalink to this definition">¶</a></dt>
-<dd><p>Access to the naked h5py file handle.</p>
-<p>This function allows access to the a naked h5py handle for the file managed by the CXI Writer. This allowa
-operations on the file that are not covered by  CXI Writer API. Use it at your own risk.</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">an h5py file handle to the file managed by the writer.</td>
-</tr>
-<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body">fh (h5py.File)</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="cfelpyutils.cfel_cxi.CXIWriter.initialize_stacks">
-<code class="descname">initialize_stacks</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_cxi.CXIWriter.initialize_stacks" title="Permalink to this definition">¶</a></dt>
-<dd><p>Initializes the stacks.</p>
-<p>Initializes the stacks in the CXI Writer instance. This fixes the number and type of stacks in the file. No
-stacks can be added to the CXI Writer after initialization.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="cfelpyutils.cfel_cxi.CXIWriter.is_entry_in_file">
-<code class="descname">is_entry_in_file</code><span class="sig-paren">(</span><em>path</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_cxi.CXIWriter.is_entry_in_file" title="Permalink to this definition">¶</a></dt>
-<dd><p>Checks if an entry is already present in the file.</p>
-<p>Checks if an entry is already present in the file at the path provided by the user. It will return True if
-either a dataset or a group are present at the specified path</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>path</strong> (<em>str</em>) – the path where to check for a dataset or group</td>
-</tr>
-</tbody>
-</table>
-<p>Results:</p>
-<blockquote>
-<div>ret (bool): True if a group or dataset can be found in the file, False otherwise</div></blockquote>
-</dd></dl>
-
-<dl class="method">
-<dt id="cfelpyutils.cfel_cxi.CXIWriter.num_slices_in_file">
-<code class="descname">num_slices_in_file</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_cxi.CXIWriter.num_slices_in_file" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns the number of slices already written in the file</p>
-<p>Returns the number of slices that have already been written in the file.</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">number of writter slices</td>
-</tr>
-<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body">status (num_slices)</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="cfelpyutils.cfel_cxi.CXIWriter.stacks_are_initialized">
-<code class="descname">stacks_are_initialized</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_cxi.CXIWriter.stacks_are_initialized" title="Permalink to this definition">¶</a></dt>
-<dd><p>Checks if stacks are initialized.</p>
-<p>Checks the status of the stacks in the file and returns the status to the user.</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">True if the stacks are initialized, False otherwise</td>
-</tr>
-<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body">status (bool)</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="cfelpyutils.cfel_cxi.CXIWriter.write_simple_entry">
-<code class="descname">write_simple_entry</code><span class="sig-paren">(</span><em>name</em>, <em>path</em>, <em>data</em>, <em>overwrite=False</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_cxi.CXIWriter.write_simple_entry" title="Permalink to this definition">¶</a></dt>
-<dd><p>Writes a simple, non-stack entry in the file.</p>
-<p>Writes a simple, non-stack entry in the file, at the specified path. A simple entry can be written at all times,
-before or after the stack initialization. THe user must provide a name that identifies the entry for further
-operations (for example, creating a link).</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>name</strong> (<em>str</em>) – entry name</li>
-<li><strong>path</strong> (<em>str</em>) – path in the hdf5 file where the entry will be written.</li>
-<li><strong>data</strong> (<em>Union</em><em>[</em><em>numpy.ndarray</em><em>, </em><em>bytes</em><em>, </em><em>int</em><em>, </em><em>float</em><em>]</em>) – data to write</li>
-<li><strong>overwrite</strong> (<em>bool</em>) – if set to True, an entry already existing at the same location will be overwritten. If set</li>
-<li><strong>False</strong><strong>, </strong><strong>an attempt to overwrite an entry will raise an error.</strong> (<em>to</em>) – </li>
-</ul>
-</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="method">
-<dt id="cfelpyutils.cfel_cxi.CXIWriter.write_stack_slice_and_increment">
-<code class="descname">write_stack_slice_and_increment</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_cxi.CXIWriter.write_stack_slice_and_increment" title="Permalink to this definition">¶</a></dt>
-<dd><p>Writes a slice across all stacks and resets the writer for the next slice.</p>
-<p>Writes a slice across all stacks in the file. It checks that an entry has been appended to each stack, and
-writes all the entries on top of the relevant stacks in one go. If an entry is missing in a stack, the function
-will raise an error. After writing the slice, the function resets the writer to allow again appending data to
-the stacks.</p>
-</dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-cfelpyutils.cfel_fabio">
-<span id="cfelpyutils-cfel-fabio-module"></span><h2>cfelpyutils.cfel_fabio module<a class="headerlink" href="#module-cfelpyutils.cfel_fabio" title="Permalink to this headline">¶</a></h2>
-<p>Utilities based on the fabio python module.</p>
-<p>This module contains utilities based on the fabio python module.
-files.</p>
-<dl class="function">
-<dt id="cfelpyutils.cfel_fabio.read_cbf_from_stream">
-<code class="descclassname">cfelpyutils.cfel_fabio.</code><code class="descname">read_cbf_from_stream</code><span class="sig-paren">(</span><em>stream</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_fabio.read_cbf_from_stream" title="Permalink to this definition">¶</a></dt>
-<dd><p>Reads a cbfimage object out of a data string buffer.</p>
-<p>Read a data string buffer received as a payload from the PETRAIII P11 sender, and creates a cbfimage object from
-it (See the documentation of the fabio python module).</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>stream</strong> (<em>str</em>) – a data string buffer received from the PETRAIII P11 sender.</td>
-</tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><dl class="docutils">
-<dt>a cbfimage object containing the data extracted</dt>
-<dd>from the string buffer.</dd>
-</dl>
-</td>
-</tr>
-<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body">cbf_obj (fabio.cbfimage)</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-</div>
-<div class="section" id="module-cfelpyutils.cfel_geom">
-<span id="cfelpyutils-cfel-geom-module"></span><h2>cfelpyutils.cfel_geom module<a class="headerlink" href="#module-cfelpyutils.cfel_geom" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-cfelpyutils.geometry_utils">
+<span id="cfelpyutils-geometry-utils-module"></span><h2>cfelpyutils.geometry_utils module<a class="headerlink" href="#module-cfelpyutils.geometry_utils" title="Permalink to this headline">¶</a></h2>
 <p>Utilities for CrystFEL-style geometry files.</p>
 <p>This module contains utilities for the processing of CrystFEL-style geometry
 files.</p>
 <dl class="class">
-<dt id="cfelpyutils.cfel_geom.ImageShape">
-<em class="property">class </em><code class="descclassname">cfelpyutils.cfel_geom.</code><code class="descname">ImageShape</code><span class="sig-paren">(</span><em>ss</em>, <em>fs</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_geom.ImageShape" title="Permalink to this definition">¶</a></dt>
+<dt id="cfelpyutils.geometry_utils.ImageShape">
+<em class="property">class </em><code class="descclassname">cfelpyutils.geometry_utils.</code><code class="descname">ImageShape</code><span class="sig-paren">(</span><em>ss</em>, <em>fs</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.geometry_utils.ImageShape" title="Permalink to this definition">¶</a></dt>
 <dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">tuple</span></code></p>
 <dl class="attribute">
-<dt id="cfelpyutils.cfel_geom.ImageShape.fs">
-<code class="descname">fs</code><a class="headerlink" href="#cfelpyutils.cfel_geom.ImageShape.fs" title="Permalink to this definition">¶</a></dt>
+<dt id="cfelpyutils.geometry_utils.ImageShape.fs">
+<code class="descname">fs</code><a class="headerlink" href="#cfelpyutils.geometry_utils.ImageShape.fs" title="Permalink to this definition">¶</a></dt>
 <dd><p>Alias for field number 1</p>
 </dd></dl>
 
 <dl class="attribute">
-<dt id="cfelpyutils.cfel_geom.ImageShape.ss">
-<code class="descname">ss</code><a class="headerlink" href="#cfelpyutils.cfel_geom.ImageShape.ss" title="Permalink to this definition">¶</a></dt>
+<dt id="cfelpyutils.geometry_utils.ImageShape.ss">
+<code class="descname">ss</code><a class="headerlink" href="#cfelpyutils.geometry_utils.ImageShape.ss" title="Permalink to this definition">¶</a></dt>
 <dd><p>Alias for field number 0</p>
 </dd></dl>
 
 </dd></dl>
 
 <dl class="class">
-<dt id="cfelpyutils.cfel_geom.PixelMaps">
-<em class="property">class </em><code class="descclassname">cfelpyutils.cfel_geom.</code><code class="descname">PixelMaps</code><span class="sig-paren">(</span><em>x</em>, <em>y</em>, <em>r</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_geom.PixelMaps" title="Permalink to this definition">¶</a></dt>
+<dt id="cfelpyutils.geometry_utils.PixelMaps">
+<em class="property">class </em><code class="descclassname">cfelpyutils.geometry_utils.</code><code class="descname">PixelMaps</code><span class="sig-paren">(</span><em>x</em>, <em>y</em>, <em>r</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.geometry_utils.PixelMaps" title="Permalink to this definition">¶</a></dt>
 <dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">tuple</span></code></p>
 <dl class="attribute">
-<dt id="cfelpyutils.cfel_geom.PixelMaps.r">
-<code class="descname">r</code><a class="headerlink" href="#cfelpyutils.cfel_geom.PixelMaps.r" title="Permalink to this definition">¶</a></dt>
+<dt id="cfelpyutils.geometry_utils.PixelMaps.r">
+<code class="descname">r</code><a class="headerlink" href="#cfelpyutils.geometry_utils.PixelMaps.r" title="Permalink to this definition">¶</a></dt>
 <dd><p>Alias for field number 2</p>
 </dd></dl>
 
 <dl class="attribute">
-<dt id="cfelpyutils.cfel_geom.PixelMaps.x">
-<code class="descname">x</code><a class="headerlink" href="#cfelpyutils.cfel_geom.PixelMaps.x" title="Permalink to this definition">¶</a></dt>
+<dt id="cfelpyutils.geometry_utils.PixelMaps.x">
+<code class="descname">x</code><a class="headerlink" href="#cfelpyutils.geometry_utils.PixelMaps.x" title="Permalink to this definition">¶</a></dt>
 <dd><p>Alias for field number 0</p>
 </dd></dl>
 
 <dl class="attribute">
-<dt id="cfelpyutils.cfel_geom.PixelMaps.y">
-<code class="descname">y</code><a class="headerlink" href="#cfelpyutils.cfel_geom.PixelMaps.y" title="Permalink to this definition">¶</a></dt>
+<dt id="cfelpyutils.geometry_utils.PixelMaps.y">
+<code class="descname">y</code><a class="headerlink" href="#cfelpyutils.geometry_utils.PixelMaps.y" title="Permalink to this definition">¶</a></dt>
 <dd><p>Alias for field number 1</p>
 </dd></dl>
 
 </dd></dl>
 
 <dl class="function">
-<dt id="cfelpyutils.cfel_geom.apply_geometry_from_file">
-<code class="descclassname">cfelpyutils.cfel_geom.</code><code class="descname">apply_geometry_from_file</code><span class="sig-paren">(</span><em>data_as_slab</em>, <em>geometry_filename</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_geom.apply_geometry_from_file" title="Permalink to this definition">¶</a></dt>
-<dd><p>Parses a geometry file and applies the geometry to data.</p>
-<p>Parses a geometry file and applies the geometry to detector data in ‘slab’ format. Turns a 2d array of pixel
-values into an array containing a representation of the physical layout of the detector, keeping the origin of
-the reference system at the beam interaction point.</p>
+<dt id="cfelpyutils.geometry_utils.adjust_pixel_maps_for_pyqtgraph">
+<code class="descclassname">cfelpyutils.geometry_utils.</code><code class="descname">adjust_pixel_maps_for_pyqtgraph</code><span class="sig-paren">(</span><em>pixel_maps</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.geometry_utils.adjust_pixel_maps_for_pyqtgraph" title="Permalink to this definition">¶</a></dt>
+<dd><p>Adjust pixel maps for visualization of the data in a pyqtgraph widget.</p>
+<p>Adjust the pixel maps for use in a Pyqtgraph’s ImageView widget.
+Essentially, the origin of the reference system is moved to the
+top-left of the image.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>data_as_slab</strong> (<em>numpy.ndarray</em>) – the pixel values to which geometry is to be applied.</li>
-<li><strong>geometry_filename</strong> (<em>str</em>) – geometry filename.</li>
-</ul>
-</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>pixel_maps</strong> (<em>tuple</em>) – pixel maps, as returned by the
+compute_pixel_maps function in this module.</td>
 </tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Array containing a representation of the physical layout of the
-detector, with the origin of the  reference system at the beam interaction point.</p>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><dl class="docutils">
+<dt>a three-element tuple containing two float32 numpy arrays</dt>
+<dd>(‘slab’-like pixel maps) with respectively x, y coordinates of the
+data pixels as the first two elements, and None as the third.</dd>
+</dl>
 </td>
 </tr>
-<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last">im_out (numpy.ndarray data_as_slab.dtype)</p>
-</td>
+<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body">tuple</td>
 </tr>
 </tbody>
 </table>
 </dd></dl>
 
 <dl class="function">
-<dt id="cfelpyutils.cfel_geom.apply_geometry_from_pixel_maps">
-<code class="descclassname">cfelpyutils.cfel_geom.</code><code class="descname">apply_geometry_from_pixel_maps</code><span class="sig-paren">(</span><em>data_as_slab</em>, <em>y</em>, <em>x</em>, <em>im_out=None</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_geom.apply_geometry_from_pixel_maps" title="Permalink to this definition">¶</a></dt>
-<dd><p>Applies geometry in pixel map format to data.</p>
-<p>Applies geometry, in the form of pixel maps, to detector data in ‘slab’ format. Turns a 2d array of pixel values
-into an array containing a representation of the physical layout of the detector, keeping the origin of the
-reference system at the beam interaction point.</p>
+<dt id="cfelpyutils.geometry_utils.apply_pixel_maps">
+<code class="descclassname">cfelpyutils.geometry_utils.</code><code class="descname">apply_pixel_maps</code><span class="sig-paren">(</span><em>data_as_slab</em>, <em>pixel_maps</em>, <em>output_array=None</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.geometry_utils.apply_pixel_maps" title="Permalink to this definition">¶</a></dt>
+<dd><p>Apply geometry in pixel map format to the input data.</p>
+<p>Applies geometry, described by pixel maps, to input data in ‘slab’ format.
+Turns a 2d array of pixel values into an array containing a representation
+of the physical layout of the geometry, keeping the origin of the reference
+system at the beam interaction point.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>data_as_slab</strong> (<em>numpy.ndarray</em>) – the pixel values to which geometry is to be applied.</li>
-<li><strong>y</strong> (<em>numpy.ndarray</em>) – the y pixel map describing the geometry of the detector</li>
-<li><strong>x</strong> (<em>numpy.ndarray</em>) – the x pixel map describing the geometry of the detector</li>
-<li><strong>im_out</strong> (<em>Optional</em><em>[</em><em>numpy.ndarray</em><em>]</em>) – array to hold the output; if not provided, one will be generated</li>
-<li><strong>automatically.</strong> – </li>
+<li><strong>data_as_slab</strong> (<em>ndarray</em>) – the pixel values on which to apply the
+geometry, in ‘slab’ format.</li>
+<li><strong>pixel_maps</strong> (<em>tuple</em>) – pixel maps, as returned by the
+compute_pixel_maps function in this module.</li>
+<li><strong>output_array</strong> (<em>Optional</em><em>[</em><em>numpy.ndarray</em><em>]</em>) – array to hold the output.
+If the array is not provided, one will be generated automatically.
+Defaults to None (No array provided).</li>
 </ul>
 </td>
 </tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Array containing a representation of the physical layout of the
-detector, with the origin of the  reference system at the beam interaction point.</p>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first"><dl class="docutils">
+<dt>Array with the same dtype as the input data containing a</dt>
+<dd><p class="first last">representation of the physical layout of the geometry (i.e.: the
+geometry information applied to the input data).</p>
+</dd>
+</dl>
+</p>
 </td>
 </tr>
-<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last">im_out (numpy.ndarray data_as_slab.dtype)</p>
+<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last">ndarray</p>
 </td>
 </tr>
 </tbody>
@@ -551,97 +233,87 @@ detector, with the origin of the  reference system at the beam interaction point
 </dd></dl>
 
 <dl class="function">
-<dt id="cfelpyutils.cfel_geom.get_image_shape">
-<code class="descclassname">cfelpyutils.cfel_geom.</code><code class="descname">get_image_shape</code><span class="sig-paren">(</span><em>geometry_filename</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_geom.get_image_shape" title="Permalink to this definition">¶</a></dt>
-<dd><p>Parses a geometry file and returns the minimum size of an image that can represent the detector.</p>
-<p>Parses the geometry file and return a numpy shape object representing the minimum size of an image that
-can contain the physical representation of the detector. The representation is centered at the point where the beam
-hits the detector according to the geometry in the file.</p>
+<dt id="cfelpyutils.geometry_utils.compute_minimum_image_size">
+<code class="descclassname">cfelpyutils.geometry_utils.</code><code class="descname">compute_minimum_image_size</code><span class="sig-paren">(</span><em>pixel_maps</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.geometry_utils.compute_minimum_image_size" title="Permalink to this definition">¶</a></dt>
+<dd><p>Compute the minimum size of an image that can represent the geometry.</p>
+<p>Compute the minimum size of an image that can contain a
+representation of the geometry described by the pixel maps, assuming
+that the image is center at the center of the reference system.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>geometry_filename</strong> (<em>str</em>) – geometry filename.</td>
-</tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">shape of the array needed to contain the representation of the physical layout
-of the detector.</td>
-</tr>
-<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body">img_shape tuple (int, int)</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
-<dl class="function">
-<dt id="cfelpyutils.cfel_geom.pixel_maps_for_image_view">
-<code class="descclassname">cfelpyutils.cfel_geom.</code><code class="descname">pixel_maps_for_image_view</code><span class="sig-paren">(</span><em>geometry_filename</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_geom.pixel_maps_for_image_view" title="Permalink to this definition">¶</a></dt>
-<dd><p>Parses a geometry file and creates pixel maps for pyqtgraph visualization.</p>
-<p>Parses the geometry file and creates pixel maps for an  array in ‘slab’ format containing pixel values. The pixel
-maps can be used to create a representation of the physical layout of the detector in a pyqtgraph ImageView
-widget (i.e. they apply the detector geometry setting the origin of the reference system is in the top left corner
-of the output array). The representation is centered at the point where the beam hits the detector according to
-the geometry in the file.</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>geometry_filename</strong> (<em>str</em>) – geometry filename.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
+<li><strong>pixel_maps</strong> (<em>tuple</em>) – pixel maps, as returned by the</li>
+<li><strong>function in this module.</strong> (<a class="reference internal" href="#cfelpyutils.geometry_utils.compute_pixel_maps" title="cfelpyutils.geometry_utils.compute_pixel_maps"><em>compute_pixel_maps</em></a>) – </li>
+</ul>
+</td>
 </tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">pixel map for x coordinate<p>y (numpy.ndarray int): pixel map for x coordinate</p>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">numpy shape object describing the minimum image size.</p>
 </td>
 </tr>
-<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference internal" href="#cfelpyutils.cfel_geom.PixelMaps.x" title="cfelpyutils.cfel_geom.PixelMaps.x">x</a> (numpy.ndarray int)</td>
+<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last">tuple</p>
+</td>
 </tr>
 </tbody>
 </table>
 </dd></dl>
 
 <dl class="function">
-<dt id="cfelpyutils.cfel_geom.pixel_maps_from_geometry_file">
-<code class="descclassname">cfelpyutils.cfel_geom.</code><code class="descname">pixel_maps_from_geometry_file</code><span class="sig-paren">(</span><em>fnam</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_geom.pixel_maps_from_geometry_file" title="Permalink to this definition">¶</a></dt>
-<dd><p>Parses a geometry file and creates pixel maps.</p>
-<p>Extracts pixel maps from a CrystFEL-style geometry file. The pixel maps can be used to create a representation of
-the physical layout of the detector, keeping the origin of the  reference system at the beam interaction
-point.</p>
+<dt id="cfelpyutils.geometry_utils.compute_pixel_maps">
+<code class="descclassname">cfelpyutils.geometry_utils.</code><code class="descname">compute_pixel_maps</code><span class="sig-paren">(</span><em>geometry</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.geometry_utils.compute_pixel_maps" title="Permalink to this definition">¶</a></dt>
+<dd><p>Create pixel maps from a CrystFEL geometry object.</p>
+<p>Compute pixel maps from a CrystFEL-style geometry object (A dictionary
+returned by the load_crystfel_geometry function from the crystfel_utils
+module). The pixel maps can be used to create a representation of
+the physical layout of the geometry, keeping the origin of the reference
+system at the beam interaction point.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>fnam</strong> (<em>str</em>) – geometry filename.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>geometry</strong> (<em>dict</em>) – A CrystFEL geometry object (A dictionary returned by
+the load_crystfel_geometry function from the crystfel_utils
+module).</td>
 </tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">slab-like pixel maps with
-respectively x, y coordinates of the pixel and distance of the pixel from the center of the reference system.</td>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><dl class="docutils">
+<dt>a tuple containing three float32 numpy arrays (‘slab’-like pixel</dt>
+<dd>maps) with respectively x, y coordinates of the data pixels and
+distance of each pixel from the center of the reference system.</dd>
+</dl>
+</td>
 </tr>
-<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference internal" href="#cfelpyutils.cfel_geom.PixelMaps.x" title="cfelpyutils.cfel_geom.PixelMaps.x">x</a>,<a class="reference internal" href="#cfelpyutils.cfel_geom.PixelMaps.y" title="cfelpyutils.cfel_geom.PixelMaps.y">y</a>,<a class="reference internal" href="#cfelpyutils.cfel_geom.PixelMaps.r" title="cfelpyutils.cfel_geom.PixelMaps.r">r</a> (numpy.ndarray float, numpy.ndarray float, numpy.ndarray float)</td>
+<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body">tuple</td>
 </tr>
 </tbody>
 </table>
 </dd></dl>
 
 </div>
-<div class="section" id="module-cfelpyutils.cfel_hdf5">
-<span id="cfelpyutils-cfel-hdf5-module"></span><h2>cfelpyutils.cfel_hdf5 module<a class="headerlink" href="#module-cfelpyutils.cfel_hdf5" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-cfelpyutils.hdf5_utils">
+<span id="cfelpyutils-hdf5-utils-module"></span><h2>cfelpyutils.hdf5_utils module<a class="headerlink" href="#module-cfelpyutils.hdf5_utils" title="Permalink to this headline">¶</a></h2>
 <p>Utilities for HDF5 files.</p>
 <p>This module contains utilities for the processing of HDF5. This module builds
 on what the h5py module already provides.</p>
 <dl class="function">
-<dt id="cfelpyutils.cfel_hdf5.load_nparray_from_hdf5_file">
-<code class="descclassname">cfelpyutils.cfel_hdf5.</code><code class="descname">load_nparray_from_hdf5_file</code><span class="sig-paren">(</span><em>data_filename</em>, <em>data_group</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_hdf5.load_nparray_from_hdf5_file" title="Permalink to this definition">¶</a></dt>
-<dd><p>Loads a numpy.ndarray from an HDF5 file.</p>
+<dt id="cfelpyutils.hdf5_utils.load_nparray_from_hdf5_file">
+<code class="descclassname">cfelpyutils.hdf5_utils.</code><code class="descname">load_nparray_from_hdf5_file</code><span class="sig-paren">(</span><em>data_filename</em>, <em>data_group</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.hdf5_utils.load_nparray_from_hdf5_file" title="Permalink to this definition">¶</a></dt>
+<dd><p>Load a numpy.ndarray from an HDF5 file.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
 <li><strong>data_filename</strong> (<em>str</em>) – filename of the file to read.</li>
-<li><strong>data_group</strong> (<em>str</em>) – internal HDF5 path of the data block to read.</li>
+<li><strong>data_group</strong> (<em>str</em>) – internal HDF5 path of the data block containing</li>
+<li><strong>array to load.</strong> (<em>the</em>) – </li>
 </ul>
 </td>
 </tr>
 <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">numpy array with the data read from the file.</p>
 </td>
 </tr>
-<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last">nparray (numpy.ndarray)</p>
+<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last">ndarray</p>
 </td>
 </tr>
 </tbody>
@@ -649,25 +321,30 @@ on what the h5py module already provides.</p>
 </dd></dl>
 
 </div>
-<div class="section" id="module-cfelpyutils.cfel_optarg">
-<span id="cfelpyutils-cfel-optarg-module"></span><h2>cfelpyutils.cfel_optarg module<a class="headerlink" href="#module-cfelpyutils.cfel_optarg" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="module-cfelpyutils.parameter_utils">
+<span id="cfelpyutils-parameter-utils-module"></span><h2>cfelpyutils.parameter_utils module<a class="headerlink" href="#module-cfelpyutils.parameter_utils" title="Permalink to this headline">¶</a></h2>
 <p>Utilities for parsing command line options and configuration files.</p>
 <p>This module contains utilities for parsing of command line options and
 configuration files.</p>
 <dl class="function">
-<dt id="cfelpyutils.cfel_optarg.parse_parameters">
-<code class="descclassname">cfelpyutils.cfel_optarg.</code><code class="descname">parse_parameters</code><span class="sig-paren">(</span><em>config</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_optarg.parse_parameters" title="Permalink to this definition">¶</a></dt>
-<dd><p>Sets correct types for parameter dictionaries.</p>
-<p>Reads a parameter dictionary returned by the ConfigParser python module, and assigns correct types to parameters,
-without changing the structure of the dictionary.</p>
-<p>The parser tries to interpret each entry in the dictionary according to the following rules:</p>
+<dt id="cfelpyutils.parameter_utils.convert_parameters">
+<code class="descclassname">cfelpyutils.parameter_utils.</code><code class="descname">convert_parameters</code><span class="sig-paren">(</span><em>config_dict</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.parameter_utils.convert_parameters" title="Permalink to this definition">¶</a></dt>
+<dd><p>Convert strings in parameter dictionaries to the corrent data type.</p>
+<p>Read a parameter dictionary returned by the ConfigParser python module,
+and assign correct types to the parameters, without changing the structure
+of the dictionary.</p>
+<p>Try to interpret each entry in the dictionary according to the following
+rules. The first rule that returns an valid result determines the type in
+which the entry will be converted.</p>
 <ul>
 <li><p class="first">If the entry starts and ends with a single quote or double quote, it is
 interpreted as a string.</p>
 </li>
-<li><p class="first">If the entry starts and ends with a square bracket, it is interpreted as a list.</p>
+<li><p class="first">If the entry starts and ends with a square bracket, it is interpreted as
+a list.</p>
 </li>
-<li><p class="first">If the entry starts and ends with a brace, it is interpreted as a dictionary.</p>
+<li><p class="first">If the entry starts and ends with a brace, it is interpreted as a
+dictionary.</p>
 </li>
 <li><p class="first">If the entry is the word None, without quotes, then the entry is
 interpreted as NoneType.</p>
@@ -687,55 +364,40 @@ the parser tries to interpret the entry in order as:</p>
 <li>A string.</li>
 </ul>
 </div></blockquote>
-<p>The first choice that succeeds determines the entry type.</p>
 </li>
 </ul>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>config</strong> (<em>class RawConfigParser</em>) – ConfigParser instance.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>config</strong> (<em>dict</em>) – a dictionary containing the parameters as strings
+(the dictionary as returned by COnfig Parser).</td>
 </tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">dictionary with the same structure as the input dictionary, but with correct types
-assigned to each entry.</td>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><dl class="docutils">
+<dt>dictionary with the same structure as the input</dt>
+<dd>dictionary, but with correct types assigned to each entry.</dd>
+</dl>
+</td>
 </tr>
-<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body">monitor_params (dict)</td>
+<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body">dict</td>
 </tr>
 </tbody>
 </table>
 </dd></dl>
 
 </div>
-<div class="section" id="module-cfelpyutils.cfel_psana">
-<span id="cfelpyutils-cfel-psana-module"></span><h2>cfelpyutils.cfel_psana module<a class="headerlink" href="#module-cfelpyutils.cfel_psana" title="Permalink to this headline">¶</a></h2>
-<p>Utilities based on the psana python module.</p>
-<p>This module provides utilities that build on the functionality provided by the psana python module.</p>
-<dl class="function">
-<dt id="cfelpyutils.cfel_psana.dirname_from_source_runs">
-<code class="descclassname">cfelpyutils.cfel_psana.</code><code class="descname">dirname_from_source_runs</code><span class="sig-paren">(</span><em>source</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_psana.dirname_from_source_runs" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns a directory name based on a psana source string.</p>
-<p>Takes a psana source string (e.g exp=CXI/cxix….) and returns a string that can be used as a subdirectory name or
-a prefix for files and directories.</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>source</strong> (<em>str</em>) – a psana source string (e.g. exp=CXI/cxi….).</td>
-</tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">a string that can be used as a filename or a prefix .</td>
-</tr>
-<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body">dirname (str)</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
+<div class="section" id="module-cfelpyutils.psana_utils">
+<span id="cfelpyutils-psana-utils-module"></span><h2>cfelpyutils.psana_utils module<a class="headerlink" href="#module-cfelpyutils.psana_utils" title="Permalink to this headline">¶</a></h2>
+<p>Utilities for the psana python module.</p>
+<p>This module provides utilities that build on the functionality provided by the
+psana python module (developed at the SLAC National Laboratories).</p>
 <dl class="function">
-<dt id="cfelpyutils.cfel_psana.psana_event_inspection">
-<code class="descclassname">cfelpyutils.cfel_psana.</code><code class="descname">psana_event_inspection</code><span class="sig-paren">(</span><em>source</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_psana.psana_event_inspection" title="Permalink to this definition">¶</a></dt>
-<dd><p>Prints the structure of psana events.</p>
-<p>Takes a psana source string (e.g. exp=CXI/cxix….) and inspects the structure of the first event in the data,
-printing information about the the content of the event.</p>
+<dt id="cfelpyutils.psana_utils.first_event_inspection">
+<code class="descclassname">cfelpyutils.psana_utils.</code><code class="descname">first_event_inspection</code><span class="sig-paren">(</span><em>source</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.psana_utils.first_event_inspection" title="Permalink to this definition">¶</a></dt>
+<dd><p>Inspect the content of the first psana event.</p>
+<p>Takes  psana source string (e.g. exp=CXI/cxix….) and inspect the
+content in the first event in the data described by the string.
+Print information about the the content of the event.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
@@ -746,25 +408,6 @@ printing information about the the content of the event.</p>
 </table>
 </dd></dl>
 
-<dl class="function">
-<dt id="cfelpyutils.cfel_psana.psana_obj_from_string">
-<code class="descclassname">cfelpyutils.cfel_psana.</code><code class="descname">psana_obj_from_string</code><span class="sig-paren">(</span><em>name</em><span class="sig-paren">)</span><a class="headerlink" href="#cfelpyutils.cfel_psana.psana_obj_from_string" title="Permalink to this definition">¶</a></dt>
-<dd><p>Converts a string into a psana object type.</p>
-<p>Takes a string and returns the python object type described by the string.</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>name</strong> (<em>str</em>) – a string describing a python type.</td>
-</tr>
-<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">the python type described by the string.</td>
-</tr>
-<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body">mod (type)</td>
-</tr>
-</tbody>
-</table>
-</dd></dl>
-
 </div>
 <div class="section" id="module-cfelpyutils">
 <span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-cfelpyutils" title="Permalink to this headline">¶</a></h2>
diff --git a/doc/build/html/genindex.html b/doc/build/html/genindex.html
index 0d9e62509be8ea035d5cdd14ce09a3e28e23c599..c5faf62d42f3eabcb3febada25b09ed84e739f17 100644
--- a/doc/build/html/genindex.html
+++ b/doc/build/html/genindex.html
@@ -72,16 +72,12 @@
 <div class="genindex-jumpbox">
  <a href="#A"><strong>A</strong></a>
  | <a href="#C"><strong>C</strong></a>
- | <a href="#D"><strong>D</strong></a>
  | <a href="#F"><strong>F</strong></a>
- | <a href="#G"><strong>G</strong></a>
  | <a href="#I"><strong>I</strong></a>
  | <a href="#L"><strong>L</strong></a>
- | <a href="#N"><strong>N</strong></a>
  | <a href="#P"><strong>P</strong></a>
  | <a href="#R"><strong>R</strong></a>
  | <a href="#S"><strong>S</strong></a>
- | <a href="#W"><strong>W</strong></a>
  | <a href="#X"><strong>X</strong></a>
  | <a href="#Y"><strong>Y</strong></a>
  
@@ -89,15 +85,11 @@
 <h2 id="A">A</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_cxi.CXIWriter.add_stack_to_writer">add_stack_to_writer() (cfelpyutils.cfel_cxi.CXIWriter method)</a>
-</li>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_cxi.CXIWriter.append_data_to_stack">append_data_to_stack() (cfelpyutils.cfel_cxi.CXIWriter method)</a>
+      <li><a href="cfelpyutils.html#cfelpyutils.geometry_utils.adjust_pixel_maps_for_pyqtgraph">adjust_pixel_maps_for_pyqtgraph() (in module cfelpyutils.geometry_utils)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_geom.apply_geometry_from_file">apply_geometry_from_file() (in module cfelpyutils.cfel_geom)</a>
-</li>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_geom.apply_geometry_from_pixel_maps">apply_geometry_from_pixel_maps() (in module cfelpyutils.cfel_geom)</a>
+      <li><a href="cfelpyutils.html#cfelpyutils.geometry_utils.apply_pixel_maps">apply_pixel_maps() (in module cfelpyutils.geometry_utils)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -107,37 +99,23 @@
   <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="cfelpyutils.html#module-cfelpyutils">cfelpyutils (module)</a>
 </li>
-      <li><a href="cfelpyutils.html#module-cfelpyutils.cfel_crystfel">cfelpyutils.cfel_crystfel (module)</a>
-</li>
-      <li><a href="cfelpyutils.html#module-cfelpyutils.cfel_cxi">cfelpyutils.cfel_cxi (module)</a>
-</li>
-      <li><a href="cfelpyutils.html#module-cfelpyutils.cfel_fabio">cfelpyutils.cfel_fabio (module)</a>
+      <li><a href="cfelpyutils.html#module-cfelpyutils.crystfel_utils">cfelpyutils.crystfel_utils (module)</a>
 </li>
-      <li><a href="cfelpyutils.html#module-cfelpyutils.cfel_geom">cfelpyutils.cfel_geom (module)</a>
+      <li><a href="cfelpyutils.html#module-cfelpyutils.geometry_utils">cfelpyutils.geometry_utils (module)</a>
 </li>
-      <li><a href="cfelpyutils.html#module-cfelpyutils.cfel_hdf5">cfelpyutils.cfel_hdf5 (module)</a>
+      <li><a href="cfelpyutils.html#module-cfelpyutils.hdf5_utils">cfelpyutils.hdf5_utils (module)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="cfelpyutils.html#module-cfelpyutils.cfel_optarg">cfelpyutils.cfel_optarg (module)</a>
+      <li><a href="cfelpyutils.html#module-cfelpyutils.parameter_utils">cfelpyutils.parameter_utils (module)</a>
 </li>
-      <li><a href="cfelpyutils.html#module-cfelpyutils.cfel_psana">cfelpyutils.cfel_psana (module)</a>
+      <li><a href="cfelpyutils.html#module-cfelpyutils.psana_utils">cfelpyutils.psana_utils (module)</a>
 </li>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_cxi.CXIWriter.close_file">close_file() (cfelpyutils.cfel_cxi.CXIWriter method)</a>
+      <li><a href="cfelpyutils.html#cfelpyutils.geometry_utils.compute_minimum_image_size">compute_minimum_image_size() (in module cfelpyutils.geometry_utils)</a>
 </li>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_cxi.CXIWriter.create_link">create_link() (cfelpyutils.cfel_cxi.CXIWriter method)</a>
+      <li><a href="cfelpyutils.html#cfelpyutils.geometry_utils.compute_pixel_maps">compute_pixel_maps() (in module cfelpyutils.geometry_utils)</a>
 </li>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_cxi.CXIWriter.create_link_to_group">create_link_to_group() (cfelpyutils.cfel_cxi.CXIWriter method)</a>
-</li>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_cxi.CXIWriter">CXIWriter (class in cfelpyutils.cfel_cxi)</a>
-</li>
-  </ul></td>
-</tr></table>
-
-<h2 id="D">D</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_psana.dirname_from_source_runs">dirname_from_source_runs() (in module cfelpyutils.cfel_psana)</a>
+      <li><a href="cfelpyutils.html#cfelpyutils.parameter_utils.convert_parameters">convert_parameters() (in module cfelpyutils.parameter_utils)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -145,23 +123,11 @@
 <h2 id="F">F</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_cxi.CXIWriter.file_is_full">file_is_full() (cfelpyutils.cfel_cxi.CXIWriter method)</a>
-</li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_geom.ImageShape.fs">fs (cfelpyutils.cfel_geom.ImageShape attribute)</a>
-</li>
-  </ul></td>
-</tr></table>
-
-<h2 id="G">G</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_cxi.CXIWriter.get_file_handle">get_file_handle() (cfelpyutils.cfel_cxi.CXIWriter method)</a>
+      <li><a href="cfelpyutils.html#cfelpyutils.psana_utils.first_event_inspection">first_event_inspection() (in module cfelpyutils.psana_utils)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_geom.get_image_shape">get_image_shape() (in module cfelpyutils.cfel_geom)</a>
+      <li><a href="cfelpyutils.html#cfelpyutils.geometry_utils.ImageShape.fs">fs (cfelpyutils.geometry_utils.ImageShape attribute)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -169,13 +135,7 @@
 <h2 id="I">I</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_geom.ImageShape">ImageShape (class in cfelpyutils.cfel_geom)</a>
-</li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_cxi.CXIWriter.initialize_stacks">initialize_stacks() (cfelpyutils.cfel_cxi.CXIWriter method)</a>
-</li>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_cxi.CXIWriter.is_entry_in_file">is_entry_in_file() (cfelpyutils.cfel_cxi.CXIWriter method)</a>
+      <li><a href="cfelpyutils.html#cfelpyutils.geometry_utils.ImageShape">ImageShape (class in cfelpyutils.geometry_utils)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -183,19 +143,11 @@
 <h2 id="L">L</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_crystfel.load_crystfel_geometry">load_crystfel_geometry() (in module cfelpyutils.cfel_crystfel)</a>
-</li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_hdf5.load_nparray_from_hdf5_file">load_nparray_from_hdf5_file() (in module cfelpyutils.cfel_hdf5)</a>
+      <li><a href="cfelpyutils.html#cfelpyutils.crystfel_utils.load_crystfel_geometry">load_crystfel_geometry() (in module cfelpyutils.crystfel_utils)</a>
 </li>
   </ul></td>
-</tr></table>
-
-<h2 id="N">N</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_cxi.CXIWriter.num_slices_in_file">num_slices_in_file() (cfelpyutils.cfel_cxi.CXIWriter method)</a>
+      <li><a href="cfelpyutils.html#cfelpyutils.hdf5_utils.load_nparray_from_hdf5_file">load_nparray_from_hdf5_file() (in module cfelpyutils.hdf5_utils)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -203,19 +155,7 @@
 <h2 id="P">P</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_optarg.parse_parameters">parse_parameters() (in module cfelpyutils.cfel_optarg)</a>
-</li>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_geom.pixel_maps_for_image_view">pixel_maps_for_image_view() (in module cfelpyutils.cfel_geom)</a>
-</li>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_geom.pixel_maps_from_geometry_file">pixel_maps_from_geometry_file() (in module cfelpyutils.cfel_geom)</a>
-</li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_geom.PixelMaps">PixelMaps (class in cfelpyutils.cfel_geom)</a>
-</li>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_psana.psana_event_inspection">psana_event_inspection() (in module cfelpyutils.cfel_psana)</a>
-</li>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_psana.psana_obj_from_string">psana_obj_from_string() (in module cfelpyutils.cfel_psana)</a>
+      <li><a href="cfelpyutils.html#cfelpyutils.geometry_utils.PixelMaps">PixelMaps (class in cfelpyutils.geometry_utils)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -223,11 +163,7 @@
 <h2 id="R">R</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_geom.PixelMaps.r">r (cfelpyutils.cfel_geom.PixelMaps attribute)</a>
-</li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_fabio.read_cbf_from_stream">read_cbf_from_stream() (in module cfelpyutils.cfel_fabio)</a>
+      <li><a href="cfelpyutils.html#cfelpyutils.geometry_utils.PixelMaps.r">r (cfelpyutils.geometry_utils.PixelMaps attribute)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -235,23 +171,7 @@
 <h2 id="S">S</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_geom.ImageShape.ss">ss (cfelpyutils.cfel_geom.ImageShape attribute)</a>
-</li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_cxi.CXIWriter.stacks_are_initialized">stacks_are_initialized() (cfelpyutils.cfel_cxi.CXIWriter method)</a>
-</li>
-  </ul></td>
-</tr></table>
-
-<h2 id="W">W</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_cxi.CXIWriter.write_simple_entry">write_simple_entry() (cfelpyutils.cfel_cxi.CXIWriter method)</a>
-</li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_cxi.CXIWriter.write_stack_slice_and_increment">write_stack_slice_and_increment() (cfelpyutils.cfel_cxi.CXIWriter method)</a>
+      <li><a href="cfelpyutils.html#cfelpyutils.geometry_utils.ImageShape.ss">ss (cfelpyutils.geometry_utils.ImageShape attribute)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -259,7 +179,7 @@
 <h2 id="X">X</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_geom.PixelMaps.x">x (cfelpyutils.cfel_geom.PixelMaps attribute)</a>
+      <li><a href="cfelpyutils.html#cfelpyutils.geometry_utils.PixelMaps.x">x (cfelpyutils.geometry_utils.PixelMaps attribute)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -267,7 +187,7 @@
 <h2 id="Y">Y</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="cfelpyutils.html#cfelpyutils.cfel_geom.PixelMaps.y">y (cfelpyutils.cfel_geom.PixelMaps attribute)</a>
+      <li><a href="cfelpyutils.html#cfelpyutils.geometry_utils.PixelMaps.y">y (cfelpyutils.geometry_utils.PixelMaps attribute)</a>
 </li>
   </ul></td>
 </tr></table>
diff --git a/doc/build/html/modules.html b/doc/build/html/modules.html
index ab88216f0725e91869fe2357ab8104473d840683..2d489b8da9f98b069cb455ba478845ce2bd39348 100644
--- a/doc/build/html/modules.html
+++ b/doc/build/html/modules.html
@@ -75,13 +75,11 @@
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="cfelpyutils.html">cfelpyutils package</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="cfelpyutils.html#submodules">Submodules</a></li>
-<li class="toctree-l2"><a class="reference internal" href="cfelpyutils.html#module-cfelpyutils.cfel_crystfel">cfelpyutils.cfel_crystfel module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="cfelpyutils.html#module-cfelpyutils.cfel_cxi">cfelpyutils.cfel_cxi module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="cfelpyutils.html#module-cfelpyutils.cfel_fabio">cfelpyutils.cfel_fabio module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="cfelpyutils.html#module-cfelpyutils.cfel_geom">cfelpyutils.cfel_geom module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="cfelpyutils.html#module-cfelpyutils.cfel_hdf5">cfelpyutils.cfel_hdf5 module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="cfelpyutils.html#module-cfelpyutils.cfel_optarg">cfelpyutils.cfel_optarg module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="cfelpyutils.html#module-cfelpyutils.cfel_psana">cfelpyutils.cfel_psana module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cfelpyutils.html#module-cfelpyutils.crystfel_utils">cfelpyutils.crystfel_utils module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cfelpyutils.html#module-cfelpyutils.geometry_utils">cfelpyutils.geometry_utils module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cfelpyutils.html#module-cfelpyutils.hdf5_utils">cfelpyutils.hdf5_utils module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cfelpyutils.html#module-cfelpyutils.parameter_utils">cfelpyutils.parameter_utils module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cfelpyutils.html#module-cfelpyutils.psana_utils">cfelpyutils.psana_utils module</a></li>
 <li class="toctree-l2"><a class="reference internal" href="cfelpyutils.html#module-cfelpyutils">Module contents</a></li>
 </ul>
 </li>
diff --git a/doc/build/html/objects.inv b/doc/build/html/objects.inv
index 58c022b672f3c592ec4e297d5730487d69699b63..6b4b7bb567f5a59c95dcb2769a5a47c55470bd6a 100644
Binary files a/doc/build/html/objects.inv and b/doc/build/html/objects.inv differ
diff --git a/doc/build/html/py-modindex.html b/doc/build/html/py-modindex.html
index d314a49d0013f3dd3cba782cd6eb581a496a05e3..ba1ea0c34a5e2e28a4cb85a4ce04e3a8827b8462 100644
--- a/doc/build/html/py-modindex.html
+++ b/doc/build/html/py-modindex.html
@@ -85,37 +85,27 @@
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="cfelpyutils.html#module-cfelpyutils.cfel_crystfel"><code class="xref">cfelpyutils.cfel_crystfel</code></a></td><td>
+       <a href="cfelpyutils.html#module-cfelpyutils.crystfel_utils"><code class="xref">cfelpyutils.crystfel_utils</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="cfelpyutils.html#module-cfelpyutils.cfel_cxi"><code class="xref">cfelpyutils.cfel_cxi</code></a></td><td>
+       <a href="cfelpyutils.html#module-cfelpyutils.geometry_utils"><code class="xref">cfelpyutils.geometry_utils</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="cfelpyutils.html#module-cfelpyutils.cfel_fabio"><code class="xref">cfelpyutils.cfel_fabio</code></a></td><td>
+       <a href="cfelpyutils.html#module-cfelpyutils.hdf5_utils"><code class="xref">cfelpyutils.hdf5_utils</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="cfelpyutils.html#module-cfelpyutils.cfel_geom"><code class="xref">cfelpyutils.cfel_geom</code></a></td><td>
+       <a href="cfelpyutils.html#module-cfelpyutils.parameter_utils"><code class="xref">cfelpyutils.parameter_utils</code></a></td><td>
        <em></em></td></tr>
      <tr class="cg-1">
        <td></td>
        <td>&#160;&#160;&#160;
-       <a href="cfelpyutils.html#module-cfelpyutils.cfel_hdf5"><code class="xref">cfelpyutils.cfel_hdf5</code></a></td><td>
-       <em></em></td></tr>
-     <tr class="cg-1">
-       <td></td>
-       <td>&#160;&#160;&#160;
-       <a href="cfelpyutils.html#module-cfelpyutils.cfel_optarg"><code class="xref">cfelpyutils.cfel_optarg</code></a></td><td>
-       <em></em></td></tr>
-     <tr class="cg-1">
-       <td></td>
-       <td>&#160;&#160;&#160;
-       <a href="cfelpyutils.html#module-cfelpyutils.cfel_psana"><code class="xref">cfelpyutils.cfel_psana</code></a></td><td>
+       <a href="cfelpyutils.html#module-cfelpyutils.psana_utils"><code class="xref">cfelpyutils.psana_utils</code></a></td><td>
        <em></em></td></tr>
    </table>
 
diff --git a/doc/build/html/searchindex.js b/doc/build/html/searchindex.js
index 87f178a9efff29a4ffa72ae45d52eca2dc7c8706..8c3bce259edf5a69f5112d83972dccf5cf3c1911 100644
--- a/doc/build/html/searchindex.js
+++ b/doc/build/html/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["cfelpyutils","index","modules"],envversion:53,filenames:["cfelpyutils.rst","index.rst","modules.rst"],objects:{"":{cfelpyutils:[0,0,0,"-"]},"cfelpyutils.cfel_crystfel":{load_crystfel_geometry:[0,1,1,""]},"cfelpyutils.cfel_cxi":{CXIWriter:[0,2,1,""]},"cfelpyutils.cfel_cxi.CXIWriter":{add_stack_to_writer:[0,3,1,""],append_data_to_stack:[0,3,1,""],close_file:[0,3,1,""],create_link:[0,3,1,""],create_link_to_group:[0,3,1,""],file_is_full:[0,3,1,""],get_file_handle:[0,3,1,""],initialize_stacks:[0,3,1,""],is_entry_in_file:[0,3,1,""],num_slices_in_file:[0,3,1,""],stacks_are_initialized:[0,3,1,""],write_simple_entry:[0,3,1,""],write_stack_slice_and_increment:[0,3,1,""]},"cfelpyutils.cfel_fabio":{read_cbf_from_stream:[0,1,1,""]},"cfelpyutils.cfel_geom":{ImageShape:[0,2,1,""],PixelMaps:[0,2,1,""],apply_geometry_from_file:[0,1,1,""],apply_geometry_from_pixel_maps:[0,1,1,""],get_image_shape:[0,1,1,""],pixel_maps_for_image_view:[0,1,1,""],pixel_maps_from_geometry_file:[0,1,1,""]},"cfelpyutils.cfel_geom.ImageShape":{fs:[0,4,1,""],ss:[0,4,1,""]},"cfelpyutils.cfel_geom.PixelMaps":{r:[0,4,1,""],x:[0,4,1,""],y:[0,4,1,""]},"cfelpyutils.cfel_hdf5":{load_nparray_from_hdf5_file:[0,1,1,""]},"cfelpyutils.cfel_optarg":{parse_parameters:[0,1,1,""]},"cfelpyutils.cfel_psana":{dirname_from_source_runs:[0,1,1,""],psana_event_inspection:[0,1,1,""],psana_obj_from_string:[0,1,1,""]},cfelpyutils:{cfel_crystfel:[0,0,0,"-"],cfel_cxi:[0,0,0,"-"],cfel_fabio:[0,0,0,"-"],cfel_geom:[0,0,0,"-"],cfel_hdf5:[0,0,0,"-"],cfel_optarg:[0,0,0,"-"],cfel_psana:[0,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","method","Python method"],"4":["py","attribute","Python attribute"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:method","4":"py:attribute"},terms:{"boolean":0,"byte":0,"case":0,"class":0,"default":0,"float":0,"function":0,"import":0,"int":0,"new":0,"return":0,"true":0,For:0,Its:0,THe:0,The:0,Use:0,about:0,access:0,accord:0,across:0,add:0,add_stack_to_writ:0,added:0,adher:0,after:0,again:0,against:0,alia:0,all:0,allow:0,allowa:0,alreadi:0,also:0,amost:0,ani:0,anoth:0,api:0,appear:0,append:0,append_data_to_stack:0,appli:0,apply_geometry_from_fil:0,apply_geometry_from_pixel_map:0,argument:0,arrai:0,assign:0,attempt:0,attribut:0,automat:0,axes:0,backcspad:0,base:0,beam:0,been:0,befor:0,block:0,bool:0,brace:0,bracket:0,buffer:0,build:0,can:0,cannot:0,cbf_obj:0,cbfimag:0,center:0,cfel:0,cfel_crystfel:2,cfel_cxi:2,cfel_fabio:2,cfel_geom:2,cfel_hdf5:2,cfel_optarg:2,cfel_psana:2,cfelfabio:0,cfelgeom:0,cfelhdf5:0,cfeloptarg:0,cfelpsana:0,chang:0,characterist:0,check:0,choic:0,chuck:0,chunk:0,chunk_siz:0,close:0,close_fil:0,command:0,compress:0,comput:0,config:0,configpars:0,configur:0,contain:0,content:[1,2],convers:0,convert:0,coordin:0,corner:0,correct:0,count:0,counter1:0,counter2:0,cours:0,cover:0,creat:0,create_link:0,create_link_to_group:0,crystfel:0,crystfel_geometri:0,cxi:0,cxidb:0,cxiwrit:0,cxix:0,data:0,data_as_slab:0,data_filenam:0,data_group:0,dataset:0,defin:0,delet:0,describ:0,detector1:0,detector2:0,detector:0,detector_1:0,detectorname1:0,detectorname2:0,determin:0,dict:0,dictionari:0,directori:0,dirnam:0,dirname_from_source_run:0,distanc:0,document:0,doubl:0,dtype:0,dure:0,each:0,either:0,end:0,ensur:0,entri:0,entry_1:0,error:0,etc:0,event:0,exampl:0,exist:0,exp:0,expand:0,extract:0,fabio:0,fals:0,field:0,file:0,file_is_ful:0,filenam:0,first:0,fix:0,fnam:0,follow:0,form:0,format:0,found:0,frame:0,from:0,frontcspad:0,full:0,further:0,gener:0,geometri:0,geometry_filenam:0,get:0,get_detector_geometry_2:0,get_file_handl:0,get_image_shap:0,group:0,h5py:0,handl:0,has:0,have:0,hdf5:0,hit:0,hold:0,html:0,http:0,identifi:0,im_out:0,imag:0,imageshap:0,imageview:0,img_shap:0,implement:0,index:1,inform:0,initi:0,initial_data:0,initialize_stack:0,input:0,inspect:0,instanc:0,instanti:0,instead:0,integ:0,interact:0,intern:0,interoper:0,interpret:0,is_entry_in_fil:0,keep:0,kei:0,layout:0,left:0,level:0,like:0,line:0,link:0,list:0,load:0,load_crystfel_geometri:0,load_nparray_from_hdf5_fil:0,locat:0,low:0,make:0,manag:0,mani:0,manual:0,map:0,match:0,max_num_slic:0,maximum:0,minimum:0,miss:0,mod:0,modul:[1,2],monitor_param:0,more:0,multi:0,must:0,nake:0,name:0,ndarrai:0,need:0,never:0,next:0,non:0,none:0,nonetyp:0,normal:0,nparrai:0,num_slic:0,num_slices_in_fil:0,number:0,number_of_entri:0,numpi:0,object:0,onc:0,one:0,onli:0,open:0,oper:0,oppos:0,option:0,order:0,org:0,origin:0,otherwis:0,out:0,output:0,overwrit:0,overwritten:0,own:0,p11:0,packag:2,page:1,paramet:0,pars:0,parse_paramet:0,parser:0,path:0,payload:0,petraiii:0,physic:0,pixel:0,pixel_maps_for_image_view:0,pixel_maps_from_geometry_fil:0,pixelmap:0,point:0,prefix:0,present:0,previou:0,print:0,process:0,project:0,provid:0,psana:0,psana_event_inspect:0,psana_obj_from_str:0,pyqtgraph:0,python:0,quot:0,rai:0,rais:0,rand:0,random:0,rawconfigpars:0,read:0,read_cbf_from_stream:0,receiv:0,refer:0,reimplement:0,relev:0,replac:0,repres:0,represent:0,reset:0,respect:0,result:0,ret:0,risk:0,rule:0,same:0,search:1,see:0,sender:0,set:0,sever:0,shape:0,simpl:0,singl:0,size:0,slab:0,slice:0,softwar:0,sourc:0,specifi:0,squar:0,stack:0,stacks_are_initi:0,start:0,statu:0,str:0,stream:0,string:0,structur:0,style:0,subdirectori:0,submodul:2,subsequ:0,succe:0,sure:0,sync:0,synchron:0,system:0,take:0,test1:0,test2:0,tfel:0,than:0,thei:0,them:0,thi:0,time:0,top:0,tri:0,tupl:0,turn:0,type:0,union:0,unless:0,usag:0,use:0,used:0,user:0,using:0,util:0,valid:0,valu:0,verbatim:0,visual:0,wai:0,want:0,what:0,where:0,which:0,widget:0,without:0,word:0,work:0,write:0,write_simple_entri:0,write_slice_and_incr:0,write_stack_slice_and_incr:0,writer:0,written:0,writter:0,www:0,your:0},titles:["cfelpyutils package","Welcome to cfelpyutils\u2019s documentation!","cfelpyutils"],titleterms:{cfel_crystfel:0,cfel_cxi:0,cfel_fabio:0,cfel_geom:0,cfel_hdf5:0,cfel_optarg:0,cfel_psana:0,cfelpyutil:[0,1,2],content:0,document:1,indic:1,modul:0,packag:0,submodul:0,tabl:1,welcom:1}})
\ No newline at end of file
+Search.setIndex({docnames:["cfelpyutils","index","modules"],envversion:53,filenames:["cfelpyutils.rst","index.rst","modules.rst"],objects:{"":{cfelpyutils:[0,0,0,"-"]},"cfelpyutils.crystfel_utils":{load_crystfel_geometry:[0,1,1,""]},"cfelpyutils.geometry_utils":{ImageShape:[0,2,1,""],PixelMaps:[0,2,1,""],adjust_pixel_maps_for_pyqtgraph:[0,1,1,""],apply_pixel_maps:[0,1,1,""],compute_minimum_image_size:[0,1,1,""],compute_pixel_maps:[0,1,1,""]},"cfelpyutils.geometry_utils.ImageShape":{fs:[0,3,1,""],ss:[0,3,1,""]},"cfelpyutils.geometry_utils.PixelMaps":{r:[0,3,1,""],x:[0,3,1,""],y:[0,3,1,""]},"cfelpyutils.hdf5_utils":{load_nparray_from_hdf5_file:[0,1,1,""]},"cfelpyutils.parameter_utils":{convert_parameters:[0,1,1,""]},"cfelpyutils.psana_utils":{first_event_inspection:[0,1,1,""]},cfelpyutils:{crystfel_utils:[0,0,0,"-"],geometry_utils:[0,0,0,"-"],hdf5_utils:[0,0,0,"-"],parameter_utils:[0,0,0,"-"],psana_utils:[0,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","attribute","Python attribute"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:attribute"},terms:{"41a8fa9819010fe8ddeb66676fee717f5226c7b8":0,"boolean":0,"byte":[],"case":[],"class":0,"default":0,"float":0,"function":0,"import":0,"int":[],"new":[],"return":0,"true":0,"try":0,For:0,Its:[],THe:[],The:0,Use:[],about:0,access:[],accord:0,across:[],add:[],add_stack_to_writ:[],added:[],adher:[],adjust:0,adjust_pixel_maps_for_pyqtgraph:0,after:[],again:[],against:[],alia:0,all:[],allow:0,allowa:[],almost:0,alreadi:0,also:[],amost:[],ani:[],anoth:[],api:[],appear:0,append:[],append_data_to_stack:[],appli:0,apply_geometry_from_fil:[],apply_geometry_from_pixel_map:[],apply_pixel_map:0,argument:0,arrai:0,assign:0,assum:0,attempt:[],attribut:[],automat:0,axes:[],backcspad:[],base:0,beam:0,been:[],befor:[],block:0,bool:[],brace:0,bracket:0,buffer:[],build:0,can:0,cannot:[],cbf_obj:[],cbfimag:[],center:0,cfel:0,cfel_crystfel:[],cfel_cxi:[],cfel_fabio:[],cfel_geom:[],cfel_hdf5:[],cfel_optarg:[],cfel_psana:[],cfelfabio:0,cfelgeom:0,cfelhdf5:0,cfeloptarg:0,cfelpsana:0,chang:0,characterist:[],check:[],choic:[],chuck:[],chunk:[],chunk_siz:[],close:[],close_fil:[],code:0,command:0,commit:0,compress:[],comput:0,compute_minimum_image_s:0,compute_pixel_map:0,config:0,config_dict:0,configpars:0,configur:0,contain:0,content:[1,2],convers:[],convert:0,convert_paramet:0,coordin:0,corner:[],correct:0,corrent:0,count:[],counter1:[],counter2:[],cours:[],cover:[],creat:0,create_link:[],create_link_to_group:[],crystfel:0,crystfel_geometri:0,crystfel_util:2,cxi:0,cxidb:[],cxiwrit:[],cxix:0,data:0,data_as_slab:0,data_filenam:0,data_group:0,dataset:[],defin:[],delet:[],describ:0,detector1:[],detector2:[],detector:0,detector_1:[],detectorname1:[],detectorname2:[],determin:0,develop:0,dict:0,dictionari:0,directori:[],dirnam:[],dirname_from_source_run:[],distanc:0,document:0,doubl:0,dtype:0,dure:[],each:0,either:[],element:0,end:0,ensur:[],entri:0,entry_1:[],error:[],essenti:0,etc:0,event:0,exampl:[],exist:[],exp:0,expand:0,extract:[],fabio:0,fals:0,field:0,file:0,file_is_ful:[],filenam:0,first:0,first_event_inspect:0,fix:[],float32:0,fnam:[],follow:0,form:[],format:0,found:[],frame:[],from:0,frontcspad:[],full:0,further:[],gener:0,geometri:0,geometry_filenam:[],geometry_util:2,get:[],get_detector_geometry_2:0,get_file_handl:[],get_image_shap:[],group:[],h5py:0,handl:[],has:[],have:[],hdf5:0,hdf5_util:2,hit:[],hold:0,html:0,http:[],identifi:[],im_out:[],imag:0,imageshap:0,imageview:0,img_shap:[],implement:[],index:1,inform:0,initi:[],initial_data:[],initialize_stack:[],input:0,inspect:0,instanc:[],instanti:[],instead:[],integ:0,interact:0,intern:0,interoper:0,interpret:0,is_entry_in_fil:[],keep:0,kei:0,laboratori:0,layout:0,left:0,level:[],like:0,line:0,link:[],list:0,load:0,load_crystfel_geometri:0,load_nparray_from_hdf5_fil:0,locat:[],low:[],make:[],manag:[],mani:0,manual:0,map:0,match:0,max_num_slic:[],maximum:[],minimum:0,miss:[],mod:[],modul:[1,2],monitor_param:[],more:[],move:0,multi:[],must:[],nake:[],name:[],nation:0,ndarrai:0,need:[],never:[],next:[],non:0,none:0,nonetyp:0,normal:[],nparrai:[],num_slic:[],num_slices_in_fil:[],number:0,number_of_entri:[],numpi:0,object:0,onc:[],one:0,onli:[],open:[],oper:[],oppos:[],option:0,order:0,org:[],origin:0,otherwis:[],out:[],output:0,output_arrai:0,overwrit:[],overwritten:[],own:[],p11:[],packag:2,page:1,paramet:0,parameter_util:2,pars:0,parse_paramet:[],parser:0,path:0,payload:[],petraiii:[],physic:0,pixel:0,pixel_map:0,pixel_maps_for_image_view:[],pixel_maps_from_geometry_fil:[],pixelmap:0,point:0,prefix:[],present:[],previou:0,print:0,process:0,project:0,provid:0,psana:0,psana_event_inspect:[],psana_obj_from_str:[],psana_util:2,pyqtgraph:0,python:0,quot:0,rai:0,rais:[],rand:[],random:[],rawconfigpars:[],read:0,read_cbf_from_stream:[],receiv:[],refer:0,reimplement:0,relev:[],replac:[],repres:0,represent:0,reset:[],respect:0,result:0,ret:[],risk:[],rule:0,same:0,search:1,see:0,sender:[],set:[],sever:0,shape:0,simpl:[],singl:0,size:0,slab:0,slac:0,slice:[],softwar:0,sourc:0,specifi:[],squar:0,stack:[],stacks_are_initi:[],start:0,statu:[],str:0,stream:[],string:0,structur:0,style:0,subdirectori:[],submodul:2,subsequ:[],succe:[],sure:[],sync:0,synchron:[],system:0,take:0,test1:[],test2:[],tfel:0,than:[],thei:[],them:[],thi:0,third:0,three:0,time:[],top:0,tri:0,tupl:0,turn:0,two:0,type:0,union:[],unless:[],usag:[],use:0,used:0,user:[],using:[],util:0,valid:0,valu:0,verbatim:0,visual:0,wai:[],want:[],what:0,where:[],which:0,widget:0,without:0,word:0,work:0,write:[],write_simple_entri:[],write_slice_and_incr:[],write_stack_slice_and_incr:[],writer:[],written:[],writter:[],www:[],your:[]},titles:["cfelpyutils package","Welcome to cfelpyutils\u2019s documentation!","cfelpyutils"],titleterms:{cfel_crystfel:[],cfel_cxi:[],cfel_fabio:[],cfel_geom:[],cfel_hdf5:[],cfel_optarg:[],cfel_psana:[],cfelpyutil:[0,1,2],content:0,crystfel_util:0,document:1,geometry_util:0,hdf5_util:0,indic:1,modul:0,packag:0,parameter_util:0,psana_util:0,submodul:0,tabl:1,welcom:1}})
\ No newline at end of file
diff --git a/doc/source/cfelpyutils.rst b/doc/source/cfelpyutils.rst
index bce7b5a9cf8e3068b6da8918cb166b1d299f10c4..602f8dcd5fdf1903e04838fd06e0ab916cfbc845 100644
--- a/doc/source/cfelpyutils.rst
+++ b/doc/source/cfelpyutils.rst
@@ -4,58 +4,42 @@ cfelpyutils package
 Submodules
 ----------
 
-cfelpyutils.cfel_crystfel module
---------------------------------
-
-.. automodule:: cfelpyutils.cfel_crystfel
-    :members:
-    :undoc-members:
-    :show-inheritance:
-
-cfelpyutils.cfel_cxi module
----------------------------
+cfelpyutils\.crystfel\_utils module
+-----------------------------------
 
-.. automodule:: cfelpyutils.cfel_cxi
+.. automodule:: cfelpyutils.crystfel_utils
     :members:
     :undoc-members:
     :show-inheritance:
 
-cfelpyutils.cfel_fabio module
------------------------------
+cfelpyutils\.geometry\_utils module
+-----------------------------------
 
-.. automodule:: cfelpyutils.cfel_fabio
+.. automodule:: cfelpyutils.geometry_utils
     :members:
     :undoc-members:
     :show-inheritance:
 
-cfelpyutils.cfel_geom module
-----------------------------
+cfelpyutils\.hdf5\_utils module
+-------------------------------
 
-.. automodule:: cfelpyutils.cfel_geom
+.. automodule:: cfelpyutils.hdf5_utils
     :members:
     :undoc-members:
     :show-inheritance:
 
-cfelpyutils.cfel_hdf5 module
-----------------------------
+cfelpyutils\.parameter\_utils module
+------------------------------------
 
-.. automodule:: cfelpyutils.cfel_hdf5
+.. automodule:: cfelpyutils.parameter_utils
     :members:
     :undoc-members:
     :show-inheritance:
 
-cfelpyutils.cfel_optarg module
-------------------------------
-
-.. automodule:: cfelpyutils.cfel_optarg
-    :members:
-    :undoc-members:
-    :show-inheritance:
-
-cfelpyutils.cfel_psana module
------------------------------
+cfelpyutils\.psana\_utils module
+--------------------------------
 
-.. automodule:: cfelpyutils.cfel_psana
+.. automodule:: cfelpyutils.psana_utils
     :members:
     :undoc-members:
     :show-inheritance: