From 591cbad8467af24bac9aaf17606c209b072204cc Mon Sep 17 00:00:00 2001
From: Valerio Mariani <valerio.mariani@desy.de>
Date: Thu, 1 Jun 2017 13:36:09 +0200
Subject: [PATCH] Added function to create links to groups

---
 cfel_cxi.py                            |  31 +++++++++++++++++++++++++
 doc/build/doctrees/cfelpyutils.doctree | Bin 129393 -> 135019 bytes
 doc/build/doctrees/environment.pickle  | Bin 12641 -> 12789 bytes
 doc/build/html/cfelpyutils.html        |  22 ++++++++++++++++++
 doc/build/html/genindex.html           |   6 +++--
 doc/build/html/objects.inv             | Bin 638 -> 647 bytes
 doc/build/html/searchindex.js          |   2 +-
 7 files changed, 58 insertions(+), 3 deletions(-)

diff --git a/cfel_cxi.py b/cfel_cxi.py
index c22de90..7263d45 100644
--- a/cfel_cxi.py
+++ b/cfel_cxi.py
@@ -339,6 +339,37 @@ class CXIWriter:
 
         self._fh[path] = link_target
 
+
+    def create_link_to_group(self, group, path, overwrite=False):
+        """Creates a link to an HDF5 group.
+        
+        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.
+
+        Args: 
+
+            group (str): internal HDF5 path of the group to which the link points.
+        
+            path (str): path in the hdf5 where the link is created.
+             
+            overwrite (bool): if set to True, an entry already existing at the same location will be overwritten. If set
+            to False, an attempt to overwrite an entry will raise an error.
+        """
+
+        if path in self._fh:
+            if overwrite is True:
+                del (self._fh[path])
+            else:
+                raise RuntimeError('Cannot create the link. An entry already exists at the specified path.')
+
+        try:
+            link_target = self._fh[path]
+        except KeyError:
+            raise RuntimeError('Cannot create the link. The group to which the link points does not exist.')
+
+        self._fh[path] = link_target
+
+
     def initialize_stacks(self):
         """Initializes the stacks.
         
diff --git a/doc/build/doctrees/cfelpyutils.doctree b/doc/build/doctrees/cfelpyutils.doctree
index d20c196e8140646916f49a4862935b4710a56c58..ae9ba9df5c4e2d3ac777db7a9cf2d7936b0bafc2 100644
GIT binary patch
delta 14178
zcmcIrcX(CBwr355>;nmqo}9Fkc205vq3N}N5R@ihgnJd~O~J4!DHK6KKr8_R1U6w5
zQHcslQ4^ztOAUxv0Hr8c0Ev3J0xBZvv-?&#75KjU?jJ9I>^Xbpw`Q%GRc6i1&c*LT
z&p&N6nb)MUQB9Mw>X<HfmyR7hb?nHA<0nrTIkjlyy`@FdikJ6jZOvTZu==fTZu3=I
z7ppr#XRH0wF)e*{*$lTPt&X#1JsH^{`f8o6C=4CGqA;fXs*To+nwzc19~w@q9KLQ>
z6uJwhjVaudGk?XL71@O$<w;&X*_k2y)7z=%?co(3WMR`nyV>8GUzcvx_X<({T3V-9
zw}TOZ6*oTB6D9^!=#mG(X$^UG6r|AL0tS5e)f<L8ZsGZv;u!6qDRN9La*Uqr=-s{N
zwGI{}&nwA)2Kt0F7q@KG2<3c?q|o(qA;fC)C{ICD;1u))#FVwvB?lm?_mTe~ha-FR
z6h~2UanY2q_pp$TDdQ&<PaNwQJ9%p9Oh-|vW6IRgcTdQ%Lf1H<nU%NZMsQf;*R;E}
z{Qs$ExAja_Gh?-kbQO(s<uwoz_5@Y9`!=SbStDLgTK??q@G`c#)y9_Avi@=U+j-Cd
zdg~(#AV-vIefw<Q|3&NXU@xiGp`r-&W=m`L^aL&%x?AsWaagB^Hiu8Sz5nN()oJ8p
zMNxan-{Yx>xHGZYn<yCCTuk{5x?us>eY_K!`}B5sQ&JPViPQ}*IAITVo?#WQ4OP2Z
zTJ;msttZzOL7Y{xQzVLN#S&4`&>dP^%l2eg_3J_*hY|T^xVqHRN}JL~<+Wnb5J;k7
zfud1S^1@^)h!rA`+QVwi*+X!TkIg7yLq$WDHT&K)nCW9R{c={bgcX8`6&Az_i%A;}
zP(iGQ2eP73Rd1XFH9mGPwX#NSY74s<b$Ust!iw#iD&b%tV)t}AicInp&r62See!&E
zxjbKrJlF@xg9XWh1qretKoH%&6{PED9)VEUPP4B2zY3vfJ-Xx#$blER>Vg}q%34~Z
zA8cnG+ImfsOQ>Ay@GsG-Lxf)T7DQW<D|=Yw)xW9U5!T^LPSrias;OC@*F6G_6ABv_
zW}5@)Cq<#Lg^3h{l83J_yJFqw!c>fAY4m2*zth3m`l=(mTOgUW>_mputhTQ)iE8cU
z1grRvOK+(Jw{`mCj#k{OEv@frLsVe|`*m%z*Al=sTcGzx=+W!I89tL<#YYMwtdXye
zRZAkQ-H|!!u?Xwp>s!?`5xT|+PPH0ekLAE)*5RXWRTiQ1Pr{vQhd{RyG~If?E?*sq
zup+ihQSV^`dIc6$Tk_Od9Qc-8bsFcR1lm}Cd>BV9H1qF8==sATNB!kRpkcPw6^}s_
zyoa39tu;qO)P7;Tl~_X=J~K4UITTtY$J+-_h=%FlYH}LK#2V-r>C-^%ecPIWx;2tj
z&?C~?xP4RG9+5s3+(kbxQ$aq~`Bjh~Y3+Wey;Zj(Bkbk?I;-MDrqyicNZVwpw3`zn
zt&&4d>+zja)%Zx6_OxA3f^Cj8&x(|3zn@-Z+Q&!ov@gZ}aoWoxc`i5Y-mca}^3=mq
z)_2F;*uX}o7Dme4?-cwt!I!^rlR6rSb3eq&+8d+Z$3~ogEULEHt&+V7>Ku+7b<lt_
zLOM9JH;GzF2k%F+4xo|M{`1_%W<#V;2ZSJxIKTpI^9z7pk%Pk{lMfG^j7XXP1{@sE
z|20wm`M>V11ps}mh|?KXJKaR}iqbiKp(ERA^4sy2Ye&1by`p^j7)(De(?>U~^XsEq
z6zXGOc=tdW_J>~Y-eMF}t=*iA>|Eiua9_N_O^70uMAv@u?ies05YX&E5UmvxqO77{
z+`&E5z?{~oUz=N}542F)H?F23CUvjtM?;s|+YYt?c*#3NV?Fhc9<E!p#~CMwtUefT
zrSG`5t+xeze;W%I?EBASoqwRu(?HSi-gk$u^YqAcJlKdscNs^h)@~j`#!f4#d28#H
z+786ZaPycC@|dG6*Wp^DL7<=UkWbNz*x<n^vO&0n_375U-G=%uip}udBel@PDmj;G
z&AZzG;9u2ynq#vV<2O-kjF2uZ(alwAv^N&ObzIs1^G;Uh5ACXBG@B$A7!sg>+h{TB
z5$%f#Xbx596A&o|iE9lq7L3m(5tH_v3)%_8J<TB%-%;jQ428n5Vd7xOFoPyb46{eH
z$1op9rk>DTd+SFx0;UB#$exDU5Uun7$%eTBc5`jJrwp|tnv=Wt11sh~+zw6#R#3Kg
z-dh1XP_T@SyHPV6kgX@wZ>OJ^+4Wki^Q(I;&J(J8#0h8k3xRZ~?&U^U46C}CUIvh%
z+iizDw5#5stmn{}+WjZHC?ioY34%HOI4ZFJPoYi8vO{A~&54u-wV_r~wL8X_3t3qW
z1(*+ElcW;eV_0WYU@9@(Lo?2RA%dX<XC#tif`b?eCRor?ip3|Nx2A&PM>io{GtE$4
zVmM=&^TqwJ($8nP@Sy_vZ1nSaQ7~i!r7@heyd>-pO6;&8c36z~*F#hgyQNpK8+>Mg
z`Ygs;vLp|_md5%)hVdCr)U+{XXY0Z}ZQ&Q;L@6C2DR@$WnZ&ZCX{tr6b@;g))f@|q
zp`{{8t5_a5!blP<P?BcSCuVkeR{Mb|)*oLLPzy<QB1oz=XII!NV;eyu`m<)v>a2Rk
zTJwjrRX4{nb1EdQQbUFLpdjYMg*n2AITkbxSWrTR1u|4!WA()wF;07?9MdUf36G_*
zluM~9#0|+&_=bs;dd1g9gU3ow8m0CM|J_0S_X&T55q~U*KNiHe+{ZW|ed;8`&);e&
zcZ{S@F0Rst4uhf4GRbFyEM9!J6t%>QNpzgwXMetU93WRiB*<#winD&Xw7sn>&gW=1
z(9g>pEe-4Zj+Pe3ju!J{$MDQRI*zL|eq3+#r&_yNpdkia;ThZ^ds^SP+TlMPQ^p7Z
z3=0B~pY@I76(p$J;1%RP-(Z?HHZ$U=F-<#i!LZu=+E+a+t+h*j4FO|?a9K{Hb*ZIs
z*52P9r((qKCyW|tdxa!$T7`d%#0E|}tP_7cXVgpUPLXd1y-B!7P)!|lvwr{cKJ=CW
zeIVC*=C8>{VF+(&8+cyzcSoU#IvH2l3--ZxzNwBqN!>`^dVzc7-LoFq6k_#gfVN7-
zV+NG2`>%i|@F&x85WE^)K)(AC_T|^jM{z6nlWPA8Nn25P2BrG9`8@)r6}k#n;rxCQ
zC<EzB&r&eQmLAUvbHr<C3{R-!cwX%5svE-?u(g-Qw(*jH<<YCm2I9KTg9+-Ec+SA`
z<7oxcMpJlL4T@){yaQX%DX3`Zt|rBEG%(|>wDKXUD4xOq+@aGPz!3BV;|}bdHh8+5
z0bTU<2J}HdNe1d~0QQb~bUwYwvUO9uZZ#2ZQ!fhpwamWmX&ZC_+ddI`FEyn{A8U*<
zXPX|;o8v^($6J$cNY^(thg)pN1^Z#}0K*V<gvs@(=9o0sGvgTZ&=q~{5LDMN+|K+n
zUb6npEUhliKxNPpi?VX!-z<TrDl~zo$_$5oDm8(F<Ad?Moa@LIU{{F<!+FC3(@=eP
z3rJDd2E$IafHZ2SD3X{Un}NPwh=0*f)KzYrF4_&mBTt;bP^xjmO*|ZlA<6L^LxPNh
zV~9eb@{d5gnv07fF8ky?6~D%6BLXhkmL#yzl%ouX(wnxx=~|ee-I1^|Y$3I<rI-K1
z+Wl6JUSbEgPK|=Owv9rxo`{_KU=$2fNJWPyx=S={vu&03EeT?5b@VF6hA?tHJv|2I
zAdOYr1G|ic3iT;A#Ddc}?%}FO+hL0SdmP-Q&f$bya)x_b&;-sV=u>epRsGIVv#+V2
z6ZGtOG_+>A<~p1!Jd%Q+W!gsdX`1Khm1#+s;EeMKHv7HrNP=!R7TU&tjkR8v`yikL
zJ)j+A>goh|SRd;MdHR?A7>jXo`l>8@-KTam2IB@h&+2t73m?Y(jcQ~LvUJ2XFcJDv
zV}|w2kx<p!?#n@R_Y_zK<ETxNkTG^LA{e80cY!S3KNYTlSwcyt8Z!h)naCXM1TzuD
zlQm&MYtk6I9_)a5^h&GnNP@f7Fgv9ox_=tXf!F-3s)bdxusXd99Po~x)jk1YG6EI)
zaA(L<`-LNt5l1YDW3^pxx&u1XD{*|u%Q0Xv9L$}{VM1@aq|!a?90s7Jj_8Ubuf|+D
zERo$S!3itsrf0zo01j!SWIWk}!xT77SM|n0VGrb-7;t<&bV}4UE_eX`K~=3q>^6E)
zHu~o6iR_!VC+gkVXf@-55aV*-8bZ*p5J7u%m>Y!PJ^Jmsq#L-PpNAoe(#a<Zr{Y<5
zbjkK%0k)GM9$A61l1J7iibs+sRNkTw=fXm-S3J@hR^asWSiUow@OostnTS^8*;CEb
zZ?u8C;Uj^}>uH30ThYpoC+eYjPzvXy6?1sw4ANpyep?q`4^H$A?wOMNGl}}Pwis@k
z>Z*P?oHH~k$=riFywYvzu}8n#)F-mrBz!`AJS){6kGw1qu2h+NdOMhGIFr~tGKnEZ
z*4idka&tGiP*)wE2hDBhD0Cp3mQ+{K9(pR{TETZ@yr!H!yaQE<Kcyw{0tUTw#GM|8
z>Yj9&LyaL)ai|eVtoad1y5uGpr2pzeB4AQKRUqU_Gm#u!36W$0Sdd{O0lN~ul3@=O
zZge;}C<)yuW99X*5~}@tHVGdp8nU$Q2FQRng@zn=j{qsPFHhps{w-mOcw&kLG2N7;
z;YQd;uf%lyWlYm`mrn3B{Nd;Ni*Tg^x!&FxGvLT%Ua(tYf$6)4TXZrH5pmnc<|(&8
zevvs*H_GdEK@^>R6!(qKQ-AkTAfHTY*pgH__*EkVDC8hZAqN@{7Bn8@P}db6r&k)!
zPgjg*Up_7-mC2lUEK6n@ED)=fBuhd+C@CP6+({j{Rd*B|k0e#MBuOUTPNoGK=eq$d
zLi;0#`Z!ru_G8JkjH)-2eRRCA|Bul9AaqAvC`(w1XWC?8e=Hl*93zEI$VlPfq0)mP
z_vS!Hg3z!L!Y6#!dm;Ws-O$S>U`7;@!jk;pmxMz{S`x43K@KFbqdZAs$HbK2*l{b&
z^~R3bePDrlFojoC^*{<8H62yUPy}2?A4ri9f-YH+qTBa_BJ~`~>PcDEGyJ;)?c0Np
zS9<?U?8xu^Gj-ds&@REkO0V<J3gpCT>Z03Vz3mOEwwt?&kyDQ;faz*yO5G;~@UyZV
zk+wrAk~q9iuj1r8QzT3M5~m)|2^(<MFiWKsO#PC=*7Bn$g$mq7x6tj2(6PzYn$yoz
ziyXUEDqB5bNI6)LP5zj|D;E4H3i+ND0uA)WDJq=OEhj<&+)DkpRnJsnUDsqFUY;1E
zQh6{VsEKb~!aXumdO9SvuJkT2z?dwkiC3V)1+{q)*uj`BsQa%#wPF-I%w5#zIfw6=
zD#m*%MHarNsLicbv3xpjC=7;IsY(u!GVr9xbGV%NGIHVz7|34XyK>>p&&zuLRIqFJ
zFx+kJ^ARJ*iV|q6pBM&F>g7~@aRelQ2YR{)p(n0@4j2wmNj^R*$8j}AZus6usQxPf
zZyN#Ws;PrqQ-sUY`$s_L<-##6>1r@C02zW?bznfC0N4*t_eK)WGu^9Xy3rcQFeK;R
znL=I~7HH`!r$aV&B|bXN5#*zPj)q6QK3X#d?pL!N?4w~b9B4+8YnOO)?Oa_k4l|yk
zcf)A)7)pq~>xY?(9D4jccv#hW4(6h?*;G$B$cuTi8H6Jj3Ql*YAUD6~PI1V(y%=k~
zt~<>q4>DrceR3?6*mh90-P}f;oVwFE9KjX`=lyl>j)UW1J0O5}9qhkh@6fCG?-t!<
z9!ylH9PGZII@o>nco?WIIoN$KU<+=Rs6h8M^ngb^?i)fs#eJKlvHK#1+!qUS-wO^&
zIPsO1iLbG1jO?GHT(ly5<dD4b79Ft=og+Vuop;kjcm;4ziaqnT3I;GgNlEk5e59OE
zmI`SRlj^xeFa;hJnP~M+PUF@48;L9n(sXhOCU#gx41-))eFgCN)qsf+rI-0fO&}pH
zJ>6h|p8pVLt_#w5J83J$gyOBsQEhboRJ^W2_T-~M*pvSS_R`g{D8j`>+^yuqHodIU
z6JB^4JWD=GNQ?VC>crzbMgBSE<qa>2>A)+<&SZH@P7~L;Dc$Efv{@~l4&NI6(%Js{
z5ZesitoBOROYeh~3QN}v*ldg!#Jz-Y(azMZFU-ZqsF`@mh9KIb*3FrT2PDP}fleo=
zGu)g;uVSmcbjdQfS^sfAuA;rtd5^kj7A%G*n6I1+Ri;~udUmAFZ`Gg8hT(u`wI~!_
z?u1uTS8_)50<xR~#jsUK*-<yA>*fzYXLvifj=qg(8$?P11$%A<_U!lEigfba3_WiK
z=I$3BfTjr>u-)s!%LAogA09(9F?23;GQOfVyLpBra9OMR@+=joFVZEG{*CJ8c>L#d
zZzlaRo^VxZR5u+GM`p0MQi0x@OAUy}EIL~-wAi-EU~feXc`Fv=tyrvyh}Ve=;70mQ
zcG6O)>3lp4S8Uvv9#{Yi;2uA>QNoQ1<TlgKZMtB{5A!qF4`&Hegc4IMkZH3~8J_j7
z4SjHsr@wv}H>lV~+=mBp56CQSQcowgKcf;Umi(A5v1FG=0K6#Lp22}^)uT`ahp0NM
zvE4lAC*7XmBjs4~t)KL~kd9mkeW9`Lwh{35F+W4H%%+Rb(f^WBV?oD9_ohNJBwU6&
zv<Mu8qp|*#Ax_!Whw&}=1fjA1?icL5UodvaFVfi|gN#NT5@q7O>fM>*kmwN}hfE;L
z3(@h5;RB;IlP#*4n5Sw-B)Z$AOr5+0R$*E9&n3_TjHQBE%owX;r=fpZ3Zn?eM@JJX
zV88LSU{(v}bgmKpB-MyxB9c#!YL`I?lCfv@Uykv3m%zRIWVJ2Rs;TLy9TqHv_oR(B
z$lItZam<66`jmx9-DzpXeK005B)f&3@FE%nCJ};NaWnSicg4+_dgBUcpKu6ky$-k~
zkQ+N-d?l0^jk0*A{$y^tx)Nrp-(&{rx~znuU~4IW@GMD!!{}AU@4@M>G#s=g3oJ1h
zMjvJUmRWc4aSS@P4gzTx3^5SWI*T_`;W>nm841hMM^|Ao-ZM-0eG<mndJ1vxVB%&-
z-2JM=>8oLi8lI)~Y8Yc1F2o~)i76=_dNty@2~R;!u+0#v>A_TVhFdCB2|@CDlwv*^
zf>+R0&p?S@^9(fDDx{Ys!M)JY=Ax_ezO)7gf$c@1S{F=3srR#2rP}c<v{1Hsq1qWt
z6^T?^vvlZM7_W|H>C&~}vK<rTN5RM#M1COstHW6<*FgvMO_si99c0?R5rPZB1hGhP
z-bbK!t%ExZ!^sxaR71UNLc%;Y6Ng|$wek_u;Vg^-Df;mjAU@oKApY-VVNRBAJ0Sc}
z?yp{em4;h7&GvQbB}qUM1Yy*`rEzWOWhR6-Iq7K*q&3s<fv#XyhM;uWriURJADS`U
zIAHe5qR|Ox4=2abZ`R|P)o`koWoEFGml-PXG~>tyxCKh7)eS`gqIG7flh+vpQ5eL6
z)|tUheQqOkr&o%61DO@)chEx@zk#XX%}$Qydj4K;@Ok3~mZ7fCOK1*&w?;UbbmR`(
z0%$k*XgQpp;3hu9{a8k@?-l3|7pYpdU5`2?qL)_VN&h!aYrs-FUR70XN!0tRaWfU_
z;?o5$>c$#~BNPqf8>bu{BzqzLaE=HX)VTn`KK2R5;rzEu4(CB3NWwX?qHvBGZ^c^>
zLs68X`OsSU$u`Qxb~M688;NLgn4wg|;h``GW6<?hRYE5#{P#%hcpC%%=dZ!_YN!jZ
z;yUWvU&pQe9O+<|OT%V(2#?5$@oN*kYBPLlE0?B4E(vN2=~aT-P!|RDdg_R71D@J~
z0r4fQ!`lG0-bG&{98ueG4sido-Y1T^&82&7g#z^+3oARIclkG;T?8SCRdDcr9y{^}
z@8|Vj?_%uUiIv{iy)KXw$L@LC;9=XhRBboECPq$u&33pC&hjAZ>bGNtZu>*pfAfs;
zS9+CEo^`R!>jOv88R-*~uxz&Y|JjLsWa`}~#Nu(oH~(W?`yJVw>fAsLl34vsFl6wZ
zvf1DfLw14%8N4G~e^?Kt^h&moER>YKgk^IM0+_9TiYwk!PoF45Nw)5`2R_A%3}oYi
z2mLhILMe~XxODXpXbaEz3D=15`FnBDTd10i9SZdB&+yxd6MG>M?-h6;uVr)glJ_Qk
z({=@N^_yt#2%&MjmM!_qmzSaP2|z=t5&kr!H6os}Wm6o=QD<Fj?m=2(b4QUP8gR!F
zpCic&85th5pL+{tc@1va+o*v&J^CDG(sb!-xN}fzX!LXi)rJhaweEia4@EY<1OLDq
zHv)2+@5Nzo>zu>Z2)9c&eEHj#e{(7kguK!kvyh?R8nbfn^0!?=SFH3}qst=^b7E_p
zxF1FuMO1A!ClMnjT|-S*W=<XEQq%G4E@_)hZLaWH^d^RA=6FAXsh~E_@?o*weG-R%
z;ysuFYpI&UFI4Ger_dOya@ZKRdhnR#*9nG<aeEFMBVtI2SdcMR<>+mP@PZCsNpnvN
zC24MPju_S=u98y}6p1#2L8Fvl^?r`zo=x0d_37dxu-&V=K}Ug3t45#qs7}SY@ykXI
zMy#_?opKx^_2ds=0OT-?6c-!o76s#UX46j!4uyNHQJ+NXq5bfS?b*H3@Fs_QWldhk
zzgd%4BMrF5kHGHynv8I>CUddUtI4Q9)~rd_F_>TsrE0r5m>4;A{V|xP2D&9H?sFX0
z8>X}uQoAesUV0O4B8rz%)bn}KrJCvHz;gB@7zfL!T9(qqZeB{Mz&+GD4<2>-oM1?o
zFS=Qmh#_5KLAqS*)|)?pVf0G6M8y#&(&bDPk@iK?-Lfxg@N|li<&+4KcLJ8<86Q&6
zzUYFV^pu~J58hkl^0`oWF3bMqN!%S~<?_<F4ONeyZ0h?@L99wc7#<Q~K`ZFnr*H-B
z6b!rWGmI$MP6J5Gl@)Y=7vf(*5rKnIDaa2Gi^6k#1L1Ho(9H%Jq%1K=l!iA$59fLf
zl9$gx4RGAHBA1o89GQEr(wFAyQJ=$uVN0onm(lXxc)XXXfBORMvC|hY(N-fwuMm+_
zANv9ZD5T>3Q0FgUm#tpfcjn5vxr1Is^<G$?e?hJ7J%JqvhJ~O_d0=(@&fsyB?S$Yy
z3C4x`aeCjsLEFv=?5kiH<^Eo-o4$hAZ9fa_r(hW6>t0y(S$HnK@_PIxoc{PfOw6XO
zd7hfI4jK}r8(yjx&q0kXT40gEFiOam=GIl7hx1C^(Yo%zZ{dl?8F`2`bBUl^VHfje
zg>PN)QD_xfW;uQ>V=j!-UA~8|bLqQs{<z$v&zt2zAJ&@upf68Ne$YpWCO_z_DU%<M
z;61LnfFAU<jy$^KL5kUp9`p@?Jm^}~<Of}mnEaq4S96MEE<R1%7Ml0cgHChgF$fa{
z^G<ruwo)GDIJxFRdQi3^4_YZqeo&+_`QfCoXW(O6xoz_3Nn@wZEFL?B{+Y+5St%&&
zR=^WdP-vBzsyt3lxdhof4`n?3G9G#v54((qT*kvKGikg9Jj^na##z9_E90S+@vzEp
zNR1km@sJ95BxNQIrGQ6JX3`J}Sn@KKx{M_*Go9fi*|frBk}|ioPWu6ds>;^-fgd0t
zVj)d#4~361`n9sPp7$dzLS=Ef)lYcZfv___z+JboCh5NjM2Yk<yC{)9qZTF7cgCVb
z`UF*!=%PMZiA(9%gQPVtiw6^!#r2ga9hn&dJbUAp=_g)F<M)!Rd-|G7)J|W?nE9kg
zPcQgwQ`Jw9Hqg_F|0^2vMTB}fVPl~WTEtH1o?YyO?%a4%%^74dY$m;^_i<zwUO~rY
z1_??4kD%k|rwGc{MdyiPSd*xOJIIo}z1-mn>V*KFUdrjG^uqQ?M<HU0v>`Cd$SA$N
zl;v_S{XFCK?-<Pc5$oxNEtqn0F<#1t#CT~vW#dJs#$V|;^S++bTXWCRUUeYAtB%~d
Jo<Cza`(MmW=C}X=

delta 12634
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
WA&)u7`RsuJFXxT!#^N@r9sD1)EGlIH

diff --git a/doc/build/doctrees/environment.pickle b/doc/build/doctrees/environment.pickle
index bda2f347e036c125b45d598eb65d65b5a68bc64d..f62090d6751e80b59d170fdca8486f3d1b9c6d77 100644
GIT binary patch
delta 1264
zcmZ8fTWkzb7`D;Qs!qykyRAicyWQQH-A<?52<o!E(xNoQgBLMf+tJyzx6IClN~#F!
zHdXP@l88$p5tr~lpWR<j_Xos_NNk9R@E}A&{AcPiE17)f`@a91|NJxOyx#C7RIt4u
z`~GqPM^zPvHj2^YKw1e$Q<`dyCHm4)5m{k4-Y0H>Zfee4xwG|I*Uzu9-Fwq2-6tkR
zti(fMObu$1Jfg9xmFMg6A+3avJdje5fW^#PN)3f%Di{yKcZ#j-7ZWi)IiRVQ@v<O<
z<6%V*V2rZCYICDW9z9^bXfnyrSacCZu4u9u#iyw!5D!}3pp}|78|$NIOPk5^wycSy
znHem+DlZ&eW3>=htOyWStYD#+FC2YbSw`I4^j5MkGhAd@F;kDOpLLc*DSI<whuw`B
zwR;hd*jo^v+uIOrj>ZyMrDCEYCHl0Crux9-t%7Zi5<SAfkfWFul!VYPC(=p$H8AX0
zfTcT*03ubb_pV-y{6ID7dcS%lqRmNmYjMs+-0buqo^;MfeBoSzSXD!kLJfIqv(tee
zLLnQgS%f&r#UeJiW+RF&265P>@8@blZgvNTWOdTUbUdVl6LB(c-dRg>Wc9=e6Ea%*
z->DC3Y-AOhtRzcWDZ5Y6B5U*IV7}a$FAwEQcQ#)i%a>=yCA@RTO;=&9hjU*;M=gpC
z^oxojZc#MAd$^3;L!5qx7P*Dx$Za_1@zmTPlxUS+sb5*g|G6>v>?!j;!HATN{EHW_
z5rc9_a`XiIMMKx8z%w(QS4md_QZ}PS?h<wHk0PBSPaw*WW4XetGv#0k+k@E4E=4@g
zE~Ii8Q3G((UJ5_hd1%h@l0e4Wf%w4NY10EuAz2J6q7V(oH~qaWaKp#ZlD=2Bf~Sy!
za$f*W`ik+*^}ZJPptB3UHfXLT-Zx(-9MoA?Z9BZz*|FLl%T_}RGL0P`mRG<u&Obif
zeCTzS!8(qihYUd&;g)01ms~r&%V>M+meG5R#<se}^nRo9ux=?mY&1qVE8fupSj79W
zV~p>h4;#zZ`EImJ>I0Ue1{*03`p8xRsrui82H=vb5^mNrmgD~g7s5xE6{h$Z`jnvp
TZT?pJw9y#xXG{%XZRq+1EK;*8

delta 1288
zcmZWnOKcNI7-p4VCwO@{iEU^eUfXMXV{g_@qpG|dOrZ%OAqt?<3$1aS4fYb&Zah{A
zA__=tD0Cqz|GEeyBoqz-6sd~RLzOBj<p3pzB&TvjM5P?sLxjYgf7VL74$|tI|9i|o
zvorHH^|HV6VrB8fOr>aPvYyQj6o%xyu5HYy1M)dtv!w>*q1;G;WQOw4Yx!u5bngGN
z`{zf+zkexc?0}q;F{h?7IA>H(lL=kWY9uLwADx&uEoaY4xe;BfHHo==Qcb?64kr6E
zSwnT2vZ>*bJi$(eQ71_^tQ;&@8n@a@nM5L^W=J9dz1F=9nf=~6%`gOZR!<{&RlUiI
zWOdse#OwCIP|DY|p+7rSyN?d9>)L5LSTDd`apUZ9r=6;@D@Ik>B|tn<IlHvoLDg3~
z_R}F)&(oo&!H9m@IK@;G%~CowIO=i1a;+6a_YQ2(;r1gAxtkGxbjJ~|aUxW3POLuQ
zc5b2bWRlJf=;OK;f*<PYAnLWj7`GV%%iL~6n<s|Y<=KaL#d8pG(L)<;^&Ua|!t38e
zlw%beHeiD=Oo&dH^t#ZP^9B%KdUqk#`#wcX`r<aCRSg!@6v<>&c;R-!V;^s1Ir^Iw
zcz3Xc$1{X(UO*&#8{&OFh`7ufoAI|}eb`U8^qs$9Y;Ea+_TQ@+)dl4!?ng+IbTM7L
zLUiTxa(cd;j+N7E<@825y;(-9l*tl@a6o0|;C4V{eubxjCd+TAE05rxK;YCoEh*R7
zBgV_-x{PN%u3yp(UHJpeZ}A5DFYB5mFDHjnX<b=FF<n&tpKUvCI9y-yw2a}k$xHB6
zu)#Y=7om_Yj_b-3%AT$<+DTc2pMvxj-Ud%HD{xHcv#g-3HR7E+U|x_={8!jh5@YbY
zyB6ZjAES7#xexJKa|hzKP$%MpPz>&bY*@Vs#o05)D!l|xeFfUXpRlS~(88T?F-)^B
z!UtGlwj{BS{n{*C6?-uET#VZ<m}D%qCYbR#Al4E^Uu`+SUNZSG-_pf?V-{+pgY0Fq
z&@UabUo{C>V#`Rx0m~9?$wWHr6YG2qMtK)xBOjta8Hw5Tb-o*BqE4_xTh~r(mER7Z
qMT7QR>w<fr)$fFR(I8xi+DhTwkn=lW6{UqJJsMx@I3vQt*6w$JN3q!e

diff --git a/doc/build/html/cfelpyutils.html b/doc/build/html/cfelpyutils.html
index da04134..7e5d627 100644
--- a/doc/build/html/cfelpyutils.html
+++ b/doc/build/html/cfelpyutils.html
@@ -262,6 +262,28 @@ value of the overwrite parameter is True.</p>
 </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>) &#8211; internal HDF5 path of the group to which the link points.</li>
+<li><strong>path</strong> (<em>str</em>) &#8211; path in the hdf5 where the link is created.</li>
+<li><strong>overwrite</strong> (<em>bool</em>) &#8211; 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>) &#8211; </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>
diff --git a/doc/build/html/genindex.html b/doc/build/html/genindex.html
index d25378c..0fba7bf 100644
--- a/doc/build/html/genindex.html
+++ b/doc/build/html/genindex.html
@@ -116,10 +116,10 @@
 </li>
       <li><a href="cfelpyutils.html#module-cfelpyutils.cfel_geom">cfelpyutils.cfel_geom (module)</a>
 </li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="cfelpyutils.html#module-cfelpyutils.cfel_hdf5">cfelpyutils.cfel_hdf5 (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>
       <li><a href="cfelpyutils.html#module-cfelpyutils.cfel_psana">cfelpyutils.cfel_psana (module)</a>
@@ -127,6 +127,8 @@
       <li><a href="cfelpyutils.html#cfelpyutils.cfel_cxi.CXIWriter.close_file">close_file() (cfelpyutils.cfel_cxi.CXIWriter method)</a>
 </li>
       <li><a href="cfelpyutils.html#cfelpyutils.cfel_cxi.CXIWriter.create_link">create_link() (cfelpyutils.cfel_cxi.CXIWriter method)</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>
diff --git a/doc/build/html/objects.inv b/doc/build/html/objects.inv
index c8846c95d119c07b2abfe116191d16e6511d0095..8ee46f78e15a12170b6850d5ea93acc4751f053c 100644
GIT binary patch
delta 531
zcmV+u0_^?%1cwEXe}9hKFbsxwKZT1H=oF(Jy4>37h5`q4xNZU?(KdUsBuMgI+@~*P
zId%@oa&i_!ro>M_Nt20eQM+l3q(kkdhry~*WBsj`o4x7dpg-rG!<YI{UGAl|kbVl0
z7yAi~wxHHG(V-nM`YD0i(a1>F)Zeesx0xr}A?QTS&p(gPo_`|xgpnFT_{iOxdjm>|
z5JA3(XvN!#<j{JnN}0}~Q9?n4M4j=wp;Fs`q9xAPZj?ueC^VUud$LljowuXg4NXxB
z3Zfmg-VN(8&S?`p7<Gs2k)cSS=^y6GhTX)B5#TxK6|Qz;=dW1=8XO0YX6e;?Am@Gw
znj{L&DU0T>V1M8n3ivG?$(GN8*}dU!kSEiz6|J`e%j5T<XfCCpRxT!ar{>qwIvum3
zbJrH>xk+?%;_U%kDCcer(ONHPfDXkg;oE(XN#-WHGy}bAf0S1wdFS6P<G_1ZvX{)|
zlB|p1yK+(4zhOZ<(D@0RBJ^d2bO8*MOPSppMc%N8rGI<u=((@`Xm%)S=BL0{9tu1j
zg2N2i3$(|-YmbxZKFF&>R1eC^`fz>r(oj2|Z`=%3hlY&8)9k3>$bX~Q^=!?4k7-$L
z#}@v@iD%T3+n|p2@{+Hi=A&a8n~?N>s<==$ZgbP&ypeIga;5XVxw!8lTTE9`RRO`v
V{yjb0@(kJEdH*Rz{vUsk;!fh+8o>Yn

delta 522
zcmV+l0`>ie1^xt(e}8V=FbsxwKZT1F=yXOibjjK&LxBPv(oNt=w9QtQ1W8WLefm<C
z&%WSpiF}J8Q{tzeqDWh|sNFP1(xG<K(_q!8vHn`i&EE8J&<}a$@VP!zmvd<>q@P0M
z!G1!cEvWTPbZ7^ReoEkWG%}Jk_2V`AHuFR~1f8h){`>jGQ-4ICFj7MZAK80zZ$K##
zBFMiYTJg3bIkeuYQl@iglu!^MQD^*asMI!~Xo=5jH_9VK6q?L_SxJzfAlgyu-LMYh
z9HHpJs5=Boh9ZHcf0&aHb`vv3fajoBxY~`KFP;cAI1V1oQdajs&R08Vk|_90Su`hq
z;2jG1EgZ>~mw)Z--tg7qCUR^=>+Qhu_<bm9A*uhAi%H(8PW7}lvaIM_U`2Xv5*?j*
zdH@&7xf?^Y)(aY-L-9)Zb{}Mtxrr`4fnK%W$}^I@^C!kQ@E(@aOXhM()<y7Lxv1>l
zupsWe`~*HC^ks>30SuH&ncW*j-mr+JdhF=AuKj3sD1U0^r@&Wk3fvxo!wlIAw8uYd
zjg#p<$g4wCPs+;raJ}}@P&@8#Tntr*hK$0~?5N?$e?07Zwr0QQG_1B|3;$xp3u?(_
zP)B>Y$(K;`(lND7NculjoTwYSx#@78$haRl(|O;V+;@>JrmLu`fZ%2So}O)a?XNul
MGe!O%`vbVbxkeojd;kCd

diff --git a/doc/build/html/searchindex.js b/doc/build/html/searchindex.js
index dae648c..5f77a38 100644
--- a/doc/build/html/searchindex.js
+++ b/doc/build/html/searchindex.js
@@ -1 +1 @@
-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,""],create_link:[0,3,1,""],file_is_full:[0,3,1,""],get_file_handle:[0,3,1,""],initialize_stacks:[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":{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,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,are_stacks_initi:[],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,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,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,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,file_is_ful:0,filenam:0,first:0,fix:0,fnam:0,follow:0,form:0,format: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,h5py:0,handl:0,has:0,have: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,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,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,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,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,replac: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,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,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
+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,""],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,""],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":{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,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,are_stacks_initi:[],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,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,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,file_is_ful:0,filenam:0,first:0,fix:0,fnam:0,follow:0,form:0,format: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,group:0,h5py:0,handl:0,has:0,have: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,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,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,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,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,replac: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,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,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
-- 
GitLab