Skip to content
Snippets Groups Projects
Commit 7f9ef272 authored by Valerio Mariani's avatar Valerio Mariani
Browse files

Added compression and chunk size support to the CXI Writer

parent 2ec6ee84
No related branches found
No related tags found
No related merge requests found
......@@ -35,7 +35,7 @@ _CXISimpleEntry = namedtuple('SimpleEntry', ['path', 'data', 'overwrite'])
class _Stack:
def __init__(self, path, data, axes):
def __init__(self, path, data, axes, compression, chunk_size):
self._data_type = type(data)
......@@ -47,6 +47,12 @@ class _Stack:
self._data_to_write = data
self._path = path
self._axes = axes
self._compression = compression
if chunk_size is None:
self._chunk_size = (1,) + self._data_shape
else:
self._chunk_size = chunk_size
def is_there_data_to_write(self):
......@@ -59,7 +65,7 @@ class _Stack:
file_handle.create_dataset(self._path, shape=(max_num_slices,) + self._data_shape,
maxshape=(max_num_slices,) + self._data_shape,
chunks=(1,) + self._data_shape)
compression = self._compression, chunks=self._chunk_size)
file_handle[self._path][0] = self._data_to_write
if self._axes is not None:
......@@ -133,45 +139,43 @@ class CXIWriter:
Example of usage of the stack API:
c1 = 0
c2 = 0
f1 = CXIWriter('/data/test1.h5', )
f2 = CXIWriter('/data/test2.h5', )
f1.add_stack_to_writer('detector1', '/entry_1/detector_1/data', numpy.random.rand(2, 2),
'frame:y:x')
f2.add_stack_to_writer('detector2', '/entry_1/detector_1/data', numpy.random.rand(3, 2))
'frame:y:x')
f1.add_stack_to_writer('counter1', '/entry_1/detector_1/count', c1)
f2.add_stack_to_writer('counter2', '/entry_1/detector_1/count', c2)
f1.write_simple_entry('/entry_1/detector_1/name', 'FrontCSPAD')
f2.write_simple_entry('/entry_1/detector_1/name', 'BackCSPAD')
f1.initialize_stacks()
f2.initialize_stacks()
for i in range(1, 60):
print('Writing slice:', i)
a = numpy.random.rand(2, 2)
b = numpy.random.rand(3, 2)
c1 += 1
c2 += 2
f1.append_data_to_stack('detector1', a)
f2.append_data_to_stack('detector2', b)
f1.append_data_to_stack('counter1', c1)
f2.append_data_to_stack('counter2', c2)
f1.write_stack_slice_and_increment()
f2.write_stack_slice_and_increment()
f1.close_file()
f2.close_file()
c1 = 0
c2 = 0
f1 = CXIWriter('test1.h5', )
f2 = CXIWriter('test2.h5', )
f1.add_stack_to_writer('detector1', '/entry_1/detector_1/data', numpy.random.rand(2, 2),
'frame:y:x')
f2.add_stack_to_writer('detector2', '/entry_1/detector_1/data', numpy.random.rand(3, 2),
'frame:y:x', compression=False, chunk_size=(1,3,2))
f1.add_stack_to_writer('counter1', '/entry_1/detector_1/count', c1)
f2.add_stack_to_writer('counter2', '/entry_1/detector_1/count', c2)
f1.write_simple_entry('/entry_1/detector_1/name', 'FrontCSPAD')
f2.write_simple_entry('/entry_1/detector_1/name', 'BackCSPAD')
f1.initialize_stacks()
f2.initialize_stacks()
a = numpy.random.rand(2, 2)
b = numpy.random.rand(3, 2)
c1 += 1
c2 += 2
f1.append_data_to_stack('detector1', a)
f2.append_data_to_stack('detector2', b)
f1.append_data_to_stack('counter1', c1)
f2.append_data_to_stack('counter2', c2)
f1.write_stack_slice_and_increment()
f2.write_stack_slice_and_increment()
f1.close_file()
f2.close_file()
"""
def __init__(self, filename, max_num_slices=5000):
......@@ -211,7 +215,8 @@ class CXIWriter:
self._fh.create_dataset(entry.path, data=entry.data)
def add_stack_to_writer(self, name, path, initial_data, axes=None, overwrite=True):
def add_stack_to_writer(self, name, path, initial_data, axes=None, compression=True, chunk_size=None,
overwrite=True):
"""Adds a new stack to the file.
Adds a new stack to the CXI Writer instance. The user must provide a name for the stack, that will identify
......@@ -226,11 +231,18 @@ class CXIWriter:
path (str): path in the hdf5 file where the stack will be written.
initial_data (Union: numpy.ndarray, str, int, float): initial entry in the stack. It gets written to the
initial_data (Union[numpy.ndarray, str, int, float]: initial entry in the stack. It gets written to the
stack as slice 0. Its characteristics are used to validate all data subsequently appended to the stack.
axes (str): the 'axes' attribute for the stack, as defined by the CXIDB file format.
compression (Union[None, bool,str]): compression parameter for the stack. This parameters works in the same
way as the normal compression parameter from h5py. The default value of this parameter is True.
chunk_size (Union[None, tuple]): HDF5 chuck size for the stack. If this parameter is set to None, the
CXI writer will compute a chuck size automatically (this is the default behavior). Otherwise, the writer
will use the provided tuple to set the chunk size.
overwrite (bool): if set to True, a stack already existing at the same location will be overwritten. If set
to False, an attempt to overwrite a stack will raise an error.
"""
......@@ -246,7 +258,7 @@ class CXIWriter:
else:
raise RuntimeError('Cannot write the entry. Data is already present at the specified path.')
new_stack = _Stack(path, initial_data, axes)
new_stack = _Stack(path, initial_data, axes, compression, chunk_size)
self._cxi_stacks[name] = new_stack
def write_simple_entry(self, path, data, overwrite=False):
......
No preview for this file type
No preview for this file type
cfelpyutils package
===================
Submodules
----------
cfelpyutils.cfel_crystfel module
--------------------------------
.. automodule:: cfelpyutils.cfel_crystfel
:members:
:undoc-members:
:show-inheritance:
cfelpyutils.cfel_cxi module
---------------------------
.. automodule:: cfelpyutils.cfel_cxi
:members:
:undoc-members:
:show-inheritance:
cfelpyutils.cfel_fabio module
-----------------------------
.. automodule:: cfelpyutils.cfel_fabio
:members:
:undoc-members:
:show-inheritance:
cfelpyutils.cfel_geom module
----------------------------
.. automodule:: cfelpyutils.cfel_geom
:members:
:undoc-members:
:show-inheritance:
cfelpyutils.cfel_hdf5 module
----------------------------
.. automodule:: cfelpyutils.cfel_hdf5
:members:
:undoc-members:
:show-inheritance:
cfelpyutils.cfel_optarg module
------------------------------
.. automodule:: cfelpyutils.cfel_optarg
:members:
:undoc-members:
:show-inheritance:
cfelpyutils.cfel_psana module
-----------------------------
.. automodule:: cfelpyutils.cfel_psana
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: cfelpyutils
:members:
:undoc-members:
:show-inheritance:
.. cfelpyutils documentation master file, created by
sphinx-quickstart on Wed Mar 30 11:47:49 2016.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
Welcome to cfelpyutils's documentation!
=======================================
Contents:
.. toctree::
:maxdepth: 2
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
cfelpyutils
===========
.. toctree::
:maxdepth: 4
cfelpyutils
source diff could not be displayed: it is too large. Options to address this: view the blob.
......@@ -147,16 +147,15 @@ number_of_entries specified during instantiation.</p>
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>
<blockquote>
<div><p>c1 = 0
<p>c1 = 0
c2 = 0</p>
<p>f1 = CXIWriter(&#8216;/data/test1.h5&#8217;, )
f2 = CXIWriter(&#8216;/data/test2.h5&#8217;, )</p>
<p>f1 = CXIWriter(&#8216;test1.h5&#8217;, )
f2 = CXIWriter(&#8216;test2.h5&#8217;, )</p>
<dl class="docutils">
<dt>f1.add_stack_to_writer(&#8216;detector1&#8217;, &#8216;/entry_1/detector_1/data&#8217;, numpy.random.rand(2, 2),</dt>
<dd>&#8216;frame:y:x&#8217;)</dd>
<dt>f2.add_stack_to_writer(&#8216;detector2&#8217;, &#8216;/entry_1/detector_1/data&#8217;, numpy.random.rand(3, 2))</dt>
<dd>&#8216;frame:y:x&#8217;)</dd>
<dt>f2.add_stack_to_writer(&#8216;detector2&#8217;, &#8216;/entry_1/detector_1/data&#8217;, numpy.random.rand(3, 2),</dt>
<dd>&#8216;frame:y:x&#8217;, compression=False, chunk_size=(1,3,2))</dd>
</dl>
<p>f1.add_stack_to_writer(&#8216;counter1&#8217;, &#8216;/entry_1/detector_1/count&#8217;, c1)
f2.add_stack_to_writer(&#8216;counter2&#8217;, &#8216;/entry_1/detector_1/count&#8217;, c2)</p>
......@@ -164,10 +163,7 @@ f2.add_stack_to_writer(&#8216;counter2&#8217;, &#8216;/entry_1/detector_1/count&
f2.write_simple_entry(&#8216;/entry_1/detector_1/name&#8217;, &#8216;BackCSPAD&#8217;)</p>
<p>f1.initialize_stacks()
f2.initialize_stacks()</p>
<dl class="docutils">
<dt>for i in range(1, 60):</dt>
<dd><p class="first">print(&#8216;Writing slice:&#8217;, i)
a = numpy.random.rand(2, 2)
<p>a = numpy.random.rand(2, 2)
b = numpy.random.rand(3, 2)</p>
<p>c1 += 1
c2 += 2</p>
......@@ -175,16 +171,13 @@ c2 += 2</p>
f2.append_data_to_stack(&#8216;detector2&#8217;, b)</p>
<p>f1.append_data_to_stack(&#8216;counter1&#8217;, c1)
f2.append_data_to_stack(&#8216;counter2&#8217;, c2)</p>
<p class="last">f1.write_stack_slice_and_increment()
<p>f1.write_stack_slice_and_increment()
f2.write_stack_slice_and_increment()</p>
</dd>
</dl>
<p>f1.close_file()
f2.close_file()</p>
</div></blockquote>
<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>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>
<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
......@@ -198,9 +191,14 @@ the stack.</p>
<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>) &#8211; stack name.</li>
<li><strong>path</strong> (<em>str</em>) &#8211; path in the hdf5 file where the stack will be written.</li>
<li><strong></strong><strong>(</strong><strong>Union</strong> (<em>initial_data</em>) &#8211; numpy.ndarray, str, int, float): initial entry in the stack. It gets written to the</li>
<li><strong></strong><strong>(</strong><strong>Union</strong><strong>[</strong><strong>numpy.ndarray</strong><strong>, </strong><strong>str</strong><strong>, </strong><strong>int</strong><strong>, </strong><strong>float</strong><strong>]</strong><strong></strong> (<em>initial_data</em>) &#8211; 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>) &#8211; </li>
<li><strong>axes</strong> (<em>str</em>) &#8211; the &#8216;axes&#8217; 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><em></em>) &#8211; 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>) &#8211; </li>
<li><strong>chunk_size</strong> (<em>Union</em><em>[</em><em>None</em><em>, </em><em>tuple</em><em>]</em><em></em>) &#8211; 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>) &#8211; </li>
<li><strong>use the provided tuple to set the chunk size.</strong> (<em>will</em>) &#8211; </li>
<li><strong>overwrite</strong> (<em>bool</em>) &#8211; 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>) &#8211; </li>
</ul>
......
Search.setIndex({docnames:["cfelpyutils","index","modules"],envversion:51,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,""],get_file_handle:[0,3,1,""],initialize_stacks:[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":{apply_geometry_from_file:[0,1,1,""],apply_geometry_from_pixel_maps:[0,1,1,""],pixel_maps_for_image_view:[0,1,1,""],pixel_maps_from_geometry_file:[0,1,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"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:method"},terms:{"boolean":0,"case":0,"class":0,"float":0,"function":0,"import":0,"int":0,"new":0,"return":0,"true":0,For:0,Its: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,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,close:0,close_fil:0,command: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,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,defin:0,describ:0,detector1:0,detector2:0,detector:0,detector_1: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,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,file:0,filenam:0,first:0,fix:0,fnam:0,follow:0,form:0,format:0,frame:0,from:0,frontcspad:0,full:0,gener:0,geometri:0,geometry_filenam:0,get:0,get_detector_geometry_2:0,get_file_handl:0,h5py:0,handl:0,has:0,hdf5:0,hold:0,html:0,http:0,identifi:0,im_out:0,imag: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,keep:0,kei:0,layout:0,left:0,level:0,like:0,line: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,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,nparrai:0,number:0,number_of_entri:0,numpi:0,object:0,onc:0,one:0,onli:0,open:0,oper:0,option:0,order:0,org:0,origin: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,point:0,prefix: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,rang:0,rawconfigpars:0,read:0,read_cbf_from_stream:0,receiv:0,refer:0,reimplement:0,relev:0,represent:0,reset:0,respect: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,slab_shap:0,slice:0,softwar:0,sourc:0,specifi:0,squar:0,stack:0,start: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,uncorrect:0,union:0,unless:0,usag:0,used:0,user:0,using:0,util:0,valid:0,valu:0,verbatim:0,visual: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,www:0,your:0},titles:["cfelpyutils package","Welcome to cfelpyutils&#8217;s documentation!","cfelpyutils"],titleterms:{cfel_crystfel:0,cfel_cxi:0,cfel_fabio:0,cfel_geom:0,cfel_hdf5:0,cfel_optarg:0,cfel_psana:0,cfelfabio:[],cfelgeom:[],cfelhdf5:[],cfeloptarg:[],cfelpsana:[],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:51,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,""],get_file_handle:[0,3,1,""],initialize_stacks:[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":{apply_geometry_from_file:[0,1,1,""],apply_geometry_from_pixel_maps:[0,1,1,""],pixel_maps_for_image_view:[0,1,1,""],pixel_maps_from_geometry_file:[0,1,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"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:method"},terms:{"boolean":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,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,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,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,defin:0,describ:0,detector1:0,detector2:0,detector:0,detector_1: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,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,file:0,filenam:0,first:0,fix:0,fnam:0,follow:0,form:0,format:0,frame:0,from:0,frontcspad:0,full:0,gener:0,geometri:0,geometry_filenam:0,get:0,get_detector_geometry_2:0,get_file_handl:0,h5py:0,handl:0,has:0,hdf5:0,hold:0,html:0,http:0,identifi:0,im_out:0,imag: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,keep:0,kei:0,layout:0,left:0,level:0,like:0,line: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,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,number:0,number_of_entri:0,numpi:0,object:0,onc:0,one:0,onli:0,open:0,oper:0,option:0,order:0,org:0,origin: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,point:0,prefix: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,rang:[],rawconfigpars:0,read:0,read_cbf_from_stream:0,receiv:0,refer:0,reimplement:0,relev:0,represent:0,reset:0,respect: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,slab_shap:0,slice:0,softwar:0,sourc:0,specifi:0,squar:0,stack:0,start: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,uncorrect: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,www:0,your:0},titles:["cfelpyutils package","Welcome to cfelpyutils&#8217;s documentation!","cfelpyutils"],titleterms:{cfel_crystfel:0,cfel_cxi:0,cfel_fabio:0,cfel_geom:0,cfel_hdf5:0,cfel_optarg:0,cfel_psana:0,cfelfabio:[],cfelgeom:[],cfelhdf5:[],cfeloptarg:[],cfelpsana:[],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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment