
    1Vh[.                         d Z ddlmZ ddlZddlZddlZ G d dej                        Z	e
dk(  r ej                          	  G d d	      Z G d
 dej                        Z	  G d dej                        Zd Zy)z
Unit test for the low level vds interface for eiger
https://support.hdfgroup.org/HDF5/docNewFeatures/VDS/HDF5-VDS-requirements-use-cases-2014-12-10.pdf
   )ut    Nc                       e Zd Zd Zd Zd Zy)TestEigerLowLevelc                 L   t        j                         | _        g d| _        d}| j                  D ]W  }| j                  |z   }t	        j
                  |d      }t        j                  d      |z  |d<   |dz  }|j                          Y t	        j
                  | j                  dz   d      }t        j                  d      d	z  |d<   | j                  j                  d       | j                  D cg c]  }| j                  |z    c}| _        |j                          y c c}w )
Nzraw_file_1.h5zraw_file_2.h5zraw_file_3.h5r   w      r   data   raw_file_4.h5)   r   r      
tempfilemkdtempworking_dirfnameh5Filenponescloseappendselfkoutfilefilenamefixs         U/home/dcms/DCMS/lib/python3.12/site-packages/h5py/tests/test_vds/test_lowlevel_vds.pysetUpzTestEigerLowLevel.setUp   s    #++-H
zz 	G'''1H#&A/1AfIFAGGI	 GGD$$_4c:GGN+A-&	

/*48JJ?bd&&r)?
		 @   2D!c                    | j                   dz   | _        t        j                  | j                  dd      5 }d}|}t        j                  j                  ||      }t        j                  j                  t        j                  j                        }|j                  t        j                  dg             d}| j                  D ]  }t        j                  |d      d	   }|j                  }	|	}
|j                  j                          t        j                  j                  |	|
      }|j!                  d
dd|	       |j!                  |ddfdd|	       |j#                  ||j%                  d      d|       ||	d   z  } t        j&                  j                  |j(                  dt        j*                  j,                  ||       d d d        t        j                  | j                  d      d	   }| j/                  |d   d       | j/                  |d   d       | j/                  |d   d       | j/                  |d   d       |j                  j                          y # 1 sw Y   xY w)Nzeiger.h5r	   latestlibver)N   r   r   r   rr   r   r   r   r   r   r   startstridecountblockutf-8   datanametidspacedcpl)
   d   r<           )   r=   r=         ?)2   r=   r=   g       @)F   r=   r=         @)r   r    r   r   h5screate_simpleh5pcreateDATASET_CREATEset_fill_valuer   arrayr   shapefiler   select_hyperslabset_virtualencodeh5didh5tNATIVE_INT16assertEqual)r   r"   vdset_shapevdset_max_shapevirt_dspacer;   r   fooin_data	src_shapemax_src_shape
src_dspaces               r$   test_eiger_low_levelz&TestEigerLowLevel.test_eiger_low_level   s   ''*4WWT\\3x8 	8A(K)O&&..{OLK66==!6!67D"/Azz "''#s+F3#MM	 )""$VV11)]K
++)3<2;2; , =
 ,,Aq!94=3<3< - >
   cjj.A!(*6Yq\!'", FFMM!$$W"&&2E2E +$  8=	8B GGDLL#&v.;-<#.<#.<#.	M	8 	8s   FI$$I-c                     dd l }| j                  D ]  }|j                  |        |j                  | j                         y Nr   osr   remover    r   ra   r"   s      r$   tearDownzTestEigerLowLevel.tearDownI   3     	AIIaL	
		$,,    N)__name__
__module____qualname__r%   r]   rd    rf   r$   r   r      s    "(T rf   r   __main__c                   P    e Zd ZdZdZdZdZdZed        Z	ed        Z
d
dZd
dZy	)ExcaliburData      r   r   c                     | j                   | j                  z  }| j                  | j                  z  | j                  z  }||fS N)FEM_PIXELS_PER_CHIP_XFEM_CHIPS_PER_STRIPE_XFEM_PIXELS_PER_CHIP_YFEM_CHIPS_PER_STRIPE_YFEM_STRIPES_PER_MODULEr   x_pixelsy_pixelss      r$   sensor_module_dimensionsz&ExcaliburData.sensor_module_dimensions_   sD    --0K0KK--0K0KKdNiNii""rf   c                 n    | j                   | j                  z  }| j                  | j                  z  }||fS rq   )rr   rs   rt   ru   rw   s      r$   fem_stripe_dimensionsz#ExcaliburData.fem_stripe_dimensionse   s9    --0K0KK--0K0KK""rf   c                 j    t        j                  | j                  |      }|j                  |       |S NrK   dtype)r   emptyrz   fillr   valuer   dsets       r$   generate_sensor_module_imagez*ExcaliburData.generate_sensor_module_imagek   s)    xxd;;5I		%rf   c                 j    t        j                  | j                  |      }|j                  |       |S r~   )r   r   r|   r   r   s       r$   generate_fem_stripe_imagez'ExcaliburData.generate_fem_stripe_imagep   s)    xxd88F		%rf   N)uint16)rg   rh   ri   rr   rt   rs   ru   rv   propertyrz   r|   r   r   rj   rf   r$   rm   rm   X   sP    # #
 # #

rf   rm   c                   $    e Zd Zd Zd Zd Zd Zy)TestExcaliburLowLevelc                 L   |f|j                   z   }|f|j                   z   }d|j                   z   }t        j                  |dd      5 }|j                  d|||d      }	t	        j
                  |      D ]  }
|j                  |
|z        |	|
<    	 d d d        y # 1 sw Y   y xY w)Nr   r	   r(   r)   r   r   )rK   maxshapechunksr   )r|   r   r   create_datasetr   aranger   )r   r   nframesexcalibur_datascalerK   	max_shapechunkr"   r   data_value_indexs              r$   $create_excalibur_fem_stripe_datafilez:TestExcaliburLowLevel.create_excalibur_fem_stripe_datafilew   s    
^AAAJ!E!EE	~;;;WWUC1 	jQ##F%)TYai#jD$&IIg$6 j )7)Q)QRbchRh)i%&j	j 	j 	js   ABB#c                 t   t        j                         | _        t        dd      D cg c]  }d|z  	 c}| _        | j                  D cg c]  }| j                  |z    c}| _        d}t               | _        d}| j                  D ]%  }| j                  ||| j                  |       |dz  }' y c c}w c c}w )Nr      zstripe_%d.h5   r   )r   r   r   ranger   rm   edatar   )r   striper#   r   r   raw_files         r$   r%   zTestExcaliburLowLevel.setUp   s    #++-<A!AJG&nv-G
48JJ?bd&&r)?
"_



 	H55hTUVqDA	 H?s   B0
B5c                    | j                   }| j                  dz   | _        d|j                  z   }d|j                  z   }d|j                  d   t	        | j
                        z  dt	        | j
                        dz
  z  z   |j                  d   f}d|j                  d   t	        | j
                        z  dt	        | j
                        dz
  z  z   |j                  d   f}d}t        j                  | j                  dd	
      5 }t        j                  j                  ||      }t        j                  j                  ||      }	t        j                  j                  t        j                  j                        }
|
j                  t        j                  dg             |j!                  dd|       | j
                  D ]G  }|	j!                  d|dfd|       |
j#                  |	|j%                  d      d|       ||d   dz   z  }I t        j&                  j                  |j(                  dt        j*                  j,                  |	|
      }|d   j.                  dk(  sJ 	 d d d        t        j                  | j                  d      d   }| j1                  |d   d       | j1                  |d   d       | j1                  |d   d       | j1                  |d   d       | j1                  |d   d       | j1                  |d   d       | j1                  |d    d!       |j2                  j5                          y # 1 sw Y   xY w)"Nzexcalibur.h5r   )r   r   r   r<   r   r	   r(   r)   r.   r/   )r1   r3   r4   r5   s   /datar6   r7   r   r-   )r   r=   r   r>   )r   i  r   r@   )r   i^  r   rC   )r   i  r   g      @)r   i  r   g      "@)r   i~  r   g      (@)r   i  r   g      .@)r   r   r    r|   lenr   r   r   rD   rE   rF   rG   rH   rI   r   rJ   rM   rN   rO   rP   rQ   rR   rS   	fillvaluerT   rL   r   )r   r   vdset_stripe_shapevdset_stripe_max_shaperU   rV   vdset_y_offsetr"   r\   rW   r;   r   r   s                r$   test_excalibur_low_levelz.TestExcaliburLowLevel.test_excalibur_low_level   s   ''6!N$H$HH!&)M)M!M%;;A>TZZPTVZ]^b^h^hZijkZkTlm%;;A>@ )??BS_TXZ^abfblbl^mno^oXpq)??BD  WWT\\3x8 	0A --.@BXYJ&&..{OLK 66==!6!67D$ 01 ''iyPf'g JJ =,,A~q3I3<3I - K   hoog.F!):7"4Q"7""<<= 66==G%'VV%8%8RV ! XDV9&&$./.7	0: GGDLL%f-7S)7S)7S)7S)7S)8d+8d+	K	0 	0s   E!M  M	c                     dd l }| j                  D ]  }|j                  |        |j                  | j                         y r_   r`   rc   s      r$   rd   zTestExcaliburLowLevel.tearDown   re   rf   N)rg   rh   ri   r   r%   r   rd   rj   rf   r$   r   r   v   s    j	4l rf   r   c                       e Zd Zd Zd Zd Zy)TestPercivalLowLevelc                 L   t        j                         | _        g d| _        d}| j                  D ]W  }| j                  |z   }t	        j
                  |d      }t        j                  d      |z  |d<   |dz  }|j                          Y t	        j
                  | j                  dz   d      }t        j                  d      d	z  |d<   | j                  j                  d       | j                  D cg c]  }| j                  |z    c}| _        |j                          y c c}w )
Nr   r   r	   r
   r   r   r   )   r   r   r   r   r   s         r$   r%   zTestPercivalLowLevel.setUp   s    #++-F
zz 	G'''1H%A-a/AfIEAGGI	 GGD$$_4S9GGL)!+&	

/*48JJ?bd&&r)?
		 @r&   c                 |   | j                   dz   | _        t        j                  | j                  dd      5 }d}t        j                  j
                  }|f|dd  z   }t        j                  j                  ||      }t        j                  j                  t        j                  j                        }|j                  t        j                  dg             d}| j                  D ]  }t        j                  |d	      d
   }	|	j                  }
|f|
dd  z   }|	j                  j!                          t        j                  j                  |
|      }|j#                  dd|ddfd|
dd  z          |j#                  |ddfd|ddfd|
dd  z          |j%                  ||j'                  d      d|       |dz  } t        j(                  j                  |j*                  dt        j,                  j.                  ||      }t        j                  | j                  d	      }|d
   j                  }|d
   d dddf   }t        j                  dt1        t3        d            z        }|j!                          | j5                  |d       t        j6                  j9                  ||       d d d        y # 1 sw Y   y xY w)Nzpercival.h5r	   r(   r)   )r   r   r   r   r,   r   r-   r   r.   r/   r   r0   )   r   r   r5   r6   r7   ro   r=   r   r   )O   r   r   )r   r    r   r   rD   	UNLIMITEDrE   rF   rG   rH   rI   r   rJ   r   rK   rL   r   rM   rN   rO   rP   rQ   rR   rS   listr   rT   testingassert_array_equal)r   r"   rU   numrV   rW   r;   r   rX   rY   rZ   r[   r\   r   shlines                   r$   test_percival_low_levelz,TestPercivalLowLevel.test_percival_low_level   s]   ''-7WWT\\3x8 &	4A%K&&""C"f[_4O&&..{OLK66==!6!67D"/Azz ''#s+F3#MM	!$y} 4""$VV11)]K
++)3:361+26y}2D , F
 ,,Aq!94;47A;37	!"3E - G
   cjj.A7JW1%* 66==G9L9LT_fj=kDS)A6BV9RaRCZ(D((1T%(^+,CGGIR.JJ))$s3M&	4 &	4 &	4s   I2J22J;c                     dd l }| j                  D ]  }|j                  |        |j                  | j                         y r_   r`   rc   s      r$   rd   zTestPercivalLowLevel.tearDown
  re   rf   N)rg   rh   ri   r%   r   rd   rj   rf   r$   r   r      s    "(4T rf   r   c                    | dz  j                          | dz  j                          t        j                  | dz  dz  d      }t        j                  d      |d<   t        j                  | dz  dz  d      }t        j
                  dt        j                  	      }t        j                  ddd
      |d d  |j                  d|d       t        j                  j                  |d   t        j                  dd             t        | dz        }t        j                  j                  t        j                  j                        }|j!                  |       t        j"                  j%                  |j&                  d|      }t        j(                  |      }t        j                  j                  |d d  t        j                  d             |j&                  j+                         j-                         |k(  sJ y )Nabzsrc.h5r	   r<   r   zvds.h5)r<   r   )rK   r,   )r   )
fill_valuer6   )dapl)mkdirr   r   r   r   VirtualLayoutint64VirtualSourcecreate_virtual_datasetr   r   fullbytesrF   rG   DATASET_ACCESSset_virtual_prefixrP   openrQ   Datasetget_access_plistget_virtual_prefix)tmp_pathsrc_filevds_filelayoutpath_ar   vds_idvdss           r$   test_virtual_prefixr     sw   ^^wwx#~0#6Hyy}HVwwx#~0#6HE:F  6?F1I##FFb#A JJ!!(6"2BGGB24NO8c>"F66==../DF#VV[[gD[9F
**V
C JJ!!#a&"))B-866""$779VCCCrf   )__doc__commonr   numpyr   h5pyr   r   TestCaser   rg   mainrm   r   r   r   rj   rf   r$   <module>r      s       @  @ F zBGGI <O BKK O bA 2;; A HDrf   