o
    7?e[.  ć                   @   s   d Z ddlmZ ddlZddlZddlZG dd dejZ	e
dkr%e ”  	 G dd	 d	ZG d
d dejZ	 G dd dejZdd ZdS )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d Zdd Zdd ZdS )ŚTestEigerLowLevelc                    ó®   t  ”  _g d¢ _d} jD ]} j| }t |d”}t d”| |d< |d7 }| ”  qt  jd d”}t d”d	 |d<  j 	d”  fd
d jD  _| ”  d S )N©zraw_file_1.h5zraw_file_2.h5zraw_file_3.h5r   Św©é   éČ   r   Śdataé   śraw_file_4.h5)é   r   r   é   c                    ó   g | ]} j | qS © ©Śworking_dir©Ś.0Zix©Śselfr   śf/home/www/facesmatcher.com/pyenv/lib/python3.10/site-packages/h5py/tests/test_vds/test_lowlevel_vds.pyŚ
<listcomp>   ó    z+TestEigerLowLevel.setUp.<locals>.<listcomp>©
ŚtempfileŚmkdtempr   ŚfnameŚh5ŚFileŚnpZonesŚcloseŚappend©r   ŚkŚoutfileŚfilenameŚfr   r   r   ŚsetUp   ó   




zTestEigerLowLevel.setUpc                 C   s  | j d | _tj| jdddy}d}|}tj ||”}tj tjj”}| 	t
 dg”” d}| jD ]A}t |d”d	 }|j}	|	}
|j ”  tj |	|
”}|jd
dd|	d |j|ddfdd|	d | || d”d|” ||	d 7 }q1tjj|jdtjj||d W d    n1 sw   Y  t | jd”d	 }|  |d d” |  |d d” |  |d d” |  |d d” |j ”  d S )Nzeiger.h5r   Ślatest©Zlibver)éN   r   r   é’’’’r   Śrr   ©r   r   r   ©r   r   r   ©ŚstartZ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_dspacer   r   r   Śtest_eiger_low_level   sL   

żż’’ā!z&TestEigerLowLevel.test_eiger_low_levelc                 C   ó.   dd l }| jD ]}| |” q| | j” d S ©Nr   ©Śosr   Śremover'   ©r   rc   r)   r   r   r   ŚtearDownI   ó   
zTestEigerLowLevel.tearDownN)Ś__name__Ś
__module__Ś__qualname__r*   r_   rf   r   r   r   r   r      s    *r   Ś__main__c                   @   sL   e Zd ZdZdZdZdZdZedd Z	edd Z
dd
dZdddZdS )ŚExcaliburDataé   é   r   r   c                 C   s&   | j | j }| j| j | j }||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   Zx_pixelsZy_pixelsr   r   r   Śsensor_module_dimensions_   s   z&ExcaliburData.sensor_module_dimensionsc                 C   s    | j | j }| j| j }||fS ro   )rp   rq   rr   rs   ru   r   r   r   Śfem_stripe_dimensionse   s   z#ExcaliburData.fem_stripe_dimensionsŚuint16c                 C   ó   t j| j|d}| |” |S ©N©rM   Śdtype)r"   Śemptyrv   Śfill©r   Śvaluer|   Śdsetr   r   r   Śgenerate_sensor_module_imagek   ó   
z*ExcaliburData.generate_sensor_module_imagec                 C   ry   rz   )r"   r}   rw   r~   r   r   r   r   Śgenerate_fem_stripe_imagep   r   z'ExcaliburData.generate_fem_stripe_imageN)rx   )rh   ri   rj   rp   rr   rq   rs   rt   Śpropertyrv   rw   r   r   r   r   r   r   rl   X   s    


rl   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
ŚTestExcaliburLowLevelc                 C   s   |f|j  }|f|j  }d|j  }tj|ddd$}|jd|||dd}	t |”D ]}
| |
| ”|	|
< q)W d    d S 1 s@w   Y  d S )N©r   r   r,   r-   r   rx   )rM   ZmaxshapeŚchunksr|   )rw   r    r!   Zcreate_datasetr"   Śaranger   )r   r   ŚnframesŚexcalibur_dataŚscalerM   Z	max_shapeŚchunkr)   r   Zdata_value_indexr   r   r   Ś$create_excalibur_fem_stripe_datafilew   s   
’"žz:TestExcaliburLowLevel.create_excalibur_fem_stripe_datafilec                    sp   t  ”  _dd tddD  _ fdd jD  _d}t  _d} jD ]}  || j|” |d7 }q&d S )Nc                 S   s   g | ]}d | qS )zstripe_%d.h5r   )r   Zstriper   r   r   r      s    z/TestExcaliburLowLevel.setUp.<locals>.<listcomp>r   é   c                    r   r   r   r   r   r   r   r      r   é   r   )r   r   r   Śranger   rl   Śedatar   )r   r   r&   Śraw_filer   r   r   r*      s   


žzTestExcaliburLowLevel.setUpc                 C   s  | j }| jd | _d|j }d|j }d|jd t| j dt| jd   |jd f}d|jd t| j dt| jd   |jd f}d}tj| jdd	d
j}tj 	||”}tj 	||”}	tj
 tj
j”}
|
 t dg”” |jdd|d | jD ] }|	jd|dfd|d |
 |	| d”d|” ||d d 7 }q{tjj|jdtjj|	|
d}|d jdks³J W d    n1 s½w   Y  t | jd”d }|  |d d” |  |d d” |  |d d” |  |d d” |  |d d” |  |d d” |  |d  d!” |j ”  d S )"Nzexcalibur.h5r   )r   r   r   r>   r   r   r,   r-   r1   r2   )r4   r5   r6   r7   s   /datar8   r9   r   r0   )r   r?   r   r@   )r   i  r   rB   )r   i^  r   rE   )r   i  r   g      @)r   i  r   g      "@)r   i~  r   g      (@)r   iŖ  r   g      .@)r   r   r'   rw   Ślenr   r    r!   rF   rG   rH   rI   rJ   rK   r"   rL   rO   rP   rQ   rR   rS   rT   rU   Ś	fillvaluerV   rN   r#   )r   r   Zvdset_stripe_shapeZvdset_stripe_max_shaperW   rX   Zvdset_y_offsetr)   r^   rY   r=   r   r   r   r   r   Śtest_excalibur_low_level   sT   

$ž$ž
ž’
’åz.TestExcaliburLowLevel.test_excalibur_low_levelc                 C   r`   ra   rb   re   r   r   r   rf   Į   rg   zTestExcaliburLowLevel.tearDownN)rh   ri   rj   r   r*   r   rf   r   r   r   r   r   v   s
    	6r   c                   @   r   )ŚTestPercivalLowLevelc                    r   )Nr   r   r   r	   r   r   r   )é   r   r   r   c                    r   r   r   r   r   r   r   r   Ż   r   z.TestPercivalLowLevel.setUp.<locals>.<listcomp>r   r%   r   r   r   r*   Ļ   r+   zTestPercivalLowLevel.setUpc              
   C   sŠ  | j d | _tj| jdddĻ}d}tjj}|f|dd   }tj ||”}tj tjj	”}| 
t dg”” d}| jD ]X}t |d	”d
 }	|	j}
|f|
dd   }|	j ”  tj |
|”}|jdd|ddfd|
dd   d |j|ddfd|ddfd|
dd   d | || d”d|” |d7 }q<tjj|jdtjj||d}t | jd	”}|d
 j}|d
 d dddf }t dttd ”}| ”  |  |d” tj ||” W d    d S 1 sįw   Y  d S )Nzpercival.h5r   r,   r-   )r   r   r   r   r/   r   r0   r   r1   r2   r   r3   )é   r   r   r7   r8   r9   rn   r?   r   r   )éO   r   r   )r   r'   r    r!   rF   Z	UNLIMITEDrG   rH   rI   rJ   rK   r"   rL   r   rM   rN   r#   rO   rP   rQ   rR   rS   rT   rU   Ślistr   rV   ŚtestingŚassert_array_equal)r   r)   rW   ŚnumrX   rY   r=   r&   rZ   r[   r\   r]   r^   r   ŚshŚliner   r   r   Śtest_percival_low_levelą   sH   

żż

"Śz,TestPercivalLowLevel.test_percival_low_levelc                 C   r`   ra   rb   re   r   r   r   rf   
  rg   zTestPercivalLowLevel.tearDownN)rh   ri   rj   r*   r”   rf   r   r   r   r   r   Ķ   s    *r   c                 C   s  | d   ”  | d   ”  t | d d d”}t d”|d< t | d d d”}tjdtjd	}tjdddd
|d d < |jd|dd tj	 
|d tjddd” t| d }tj tjj”}| |” tjj|jd|d}t |”}tj	 
|d d  t d”” |j ”  ” |ksJ d S )NŚaŚbzsrc.h5r   r>   r   zvds.h5)r>   r{   )rM   r/   )r   )Z
fill_valuer8   )Śdapl)Śmkdirr    r!   r"   r   ZVirtualLayoutZint64ZVirtualSourceZcreate_virtual_datasetr   r   ŚfullŚbytesrH   rI   ZDATASET_ACCESSZset_virtual_prefixrR   ŚopenrS   ZDatasetZget_access_plistZget_virtual_prefix)Ztmp_pathZsrc_fileZvds_fileZlayoutZpath_ar¤   Zvds_idZvdsr   r   r   Śtest_virtual_prefix  s    

r©   )Ś__doc__Ścommonr   Śnumpyr"   Zh5pyr    r   ZTestCaser   rh   Śmainrl   r   r   r©   r   r   r   r   Ś<module>   s    CQD