U
    e»{j!#  ã                   @   s”   d dl Zd dlZd dlmZ d dlmZmZmZ d dl	m
Z
mZmZ d dlmZ dd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )é    N)Úascii)Ú_get_lines_from_fileÚ_read_table_qdpÚ_write_table_qdp)ÚColumnÚMaskedColumnÚTable)ÚAstropyUserWarningc              	   C   sÒ   d}| d }t |dƒ�}t||d� W 5 Q R X t|jddgdd�}|jd	 d  d
¡sZt‚|jd d  d¡srt‚t|jddgdd�}|jd	 d  d
¡sžt‚|jd d  d¡s¶t‚t |d d d¡sÎt‚d S )Naç  
    ! Swift/XRT hardness ratio of trigger: XXXX, name: BUBU X-2
    ! Columns are as labelled
    READ TERR 1
    READ SERR 2
    ! WT -- hard data
    !MJD            Err (pos)       Err(neg)        Rate            Error
    53000.123456 2.37847222222222e-05    -2.37847222222222e-05   -0.212439       0.212439
    55045.099887 1.14467592592593e-05    -1.14467592592593e-05   0.000000        0.000000
    NO NO NO NO NO
    ! WT -- soft data
    !MJD            Err (pos)       Err(neg)        Rate            Error
    53000.123456 2.37847222222222e-05    -2.37847222222222e-05   0.726155        0.583890
    55045.099887 1.14467592592593e-05    -1.14467592592593e-05   2.410935        1.393592
    NO NO NO NO NO
    ! WT -- hardness ratio
    !MJD            Err (pos)       Err(neg)        Rate            Error
    53000.123456 2.37847222222222e-05    -2.37847222222222e-05   -0.292553       -0.374935
    55045.099887 1.14467592592593e-05    -1.14467592592593e-05   0.000000        -nan
    útest.qdpÚw©ÚfileÚMJDÚRater   ©ÚnamesÚtable_idÚinitial_commentsÚSwiftÚcommentszWT -- hard dataé   zWT -- hardnessZMJD_nerrgTYª©ðø¾)	ÚopenÚprintr   ÚnameÚmetaÚ
startswithÚAssertionErrorÚnpÚisclose)Útmp_pathÚexample_qdpÚpathÚfpZtable0Ztable2© r#   ú^/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/io/ascii/tests/test_qdp.pyÚtest_get_tables_from_qdp_file
   s    r%   c              	   C   sx  d}t | d ƒ}t | d ƒ}t|dƒ�}t||d� W 5 Q R X t t¡�}t|ddgdd	�}W 5 Q R X t d
d„ |D ƒ¡s~t	‚t
||ƒ t|ddgdd	�}|jD ]œ}t dd„ || D ƒ¡}	t |	¡rÞtj || |	 ¡sÞt	‚t dd„ || D ƒ¡}
t || |
  || |
  ¡�st	‚t |
¡r t || |
 ¡s t	‚q t |d ddg¡�sXt	‚dD ]}||jk�s\t	‚�q\d S )Na   
    ! Swift/XRT hardness ratio of trigger: XXXX, name: BUBU X-2
    ! Columns are as labelled
    READ TERR 1
    READ SERR 2
    ! WT -- hard data
    !MJD            Err (pos)       Err(neg)        Rate            Error
    53000.123456 2.37847222222222e-05    -2.37847222222222e-05   NO       0.212439
    55045.099887 1.14467592592593e-05    -1.14467592592593e-05   0.000000        0.000000
    NO NO NO NO NO
    ! WT -- soft data
    !MJD            Err (pos)       Err(neg)        Rate            Error
    53000.123456 2.37847222222222e-05    -2.37847222222222e-05   0.726155        0.583890
    55045.099887 1.14467592592593e-05    -1.14467592592593e-05   2.410935        1.393592
    NO NO NO NO NO
    ! WT -- hardness ratio
    !MJD            Err (pos)       Err(neg)        Rate            Error
    53000.123456 2.37847222222222e-05    -2.37847222222222e-05   -0.292553       -0.374935
    55045.099887 1.14467592592593e-05    -1.14467592592593e-05   0.000000        NO
    ! Add command, just to raise the warning.
    READ TERR 1
    ! WT -- whatever
    !MJD            Err (pos)       Err(neg)        Rate            Error
    53000.123456 2.37847222222222e-05    -2.37847222222222e-05   -0.292553       -0.374935
    NO 1.14467592592593e-05    -1.14467592592593e-05   0.000000        NO
    r
   z	test2.qdpr   r   r   r   r   r   c                 S   s   g | ]}d |j jd k‘qS )z*This file contains multiple command blocksr   ©ÚmessageÚargs©Ú.0Úrr#   r#   r$   Ú
<listcomp>R   s   ÿz"test_roundtrip.<locals>.<listcomp>c                 S   s   g | ]}t j |¡‘qS r#   )r   ÚmaÚ	is_masked©r*   Úvalr#   r#   r$   r,   ]   s     c                 S   s$   g | ]}t j |¡ ot  |¡‘qS r#   )r   r-   r.   Úisnanr/   r#   r#   r$   r,   c   s     ZMJD_perrg‘Aƒ©ðø>gïÿÝ“nè>)r   r   )Ústrr   r   ÚpytestÚwarnsr	   r   r   Úanyr   r   ZcolnamesÚarrayr-   r.   Úallcloser1   r   )r   r    r!   Zpath2r"   ÚrecordÚtableZ	new_tableÚcolr.   Úis_nanZ	meta_namer#   r#   r$   Útest_roundtrip.   s6    þÿ


ÿ&
r<   c                  C   sÆ   d} t j| ddddddgd�}tj| d	dddddgd�}t |d d
dg¡sPt‚|d d dksdt‚tj |d d ¡s|t‚t |d d ¡s’t‚t	| 
¡ | 
¡ ƒD ]\}}tj||dd�s¤t‚q¤d S )Ná¹  
        ! Initial comment line 1
        ! Initial comment line 2
        READ TERR 1
        READ SERR 3
        ! Table 0 comment
        !a a(pos) a(neg) b c ce d
        53000.5   0.25  -0.5   1  1.5  3.5 2
        54000.5   1.25  -1.5   2  2.5  4.5 3
        NO NO NO NO NO
        ! Table 1 comment
        !a a(pos) a(neg) b c ce d
        54000.5   2.25  -2.5   NO  3.5  5.5 5
        55000.5   3.25  -3.5   4  4.5  6.5 nan
        Zqdpé   ÚaÚbÚcÚd©Úformatr   r   ú	ascii.qdpiðÒ  iØÖ  Zc_errr   g      @T©Z	equal_nan)r   Úreadr   r   r7   r   r-   r.   r1   ÚzipÚitercols)r    ZdatÚtÚcol1Úcol2r#   r#   r$   Útest_read_examplep   s       
ÿrM   c                 C   sŠ   d}| d }t j|ddddddgd	�}|j|dgd
gdœd� t j|ddddgdd�}t| ¡ | ¡ ƒD ]\}}tj||dd�sht‚qhd S )Nr=   r
   rE   r>   r?   r@   rA   rB   rC   é   ©ZterrZserr©Z	err_specsr   r   TrF   ©r   rG   ÚwriterH   rI   r   r7   r   ©r   r    Ú	test_filerJ   Út2rK   rL   r#   r#   r$   Útest_roundtrip_exampleŽ   s       
ÿrV   c                 C   sŒ   d}| d }t j|ddddddgd	d
�}|j|dgdgdœd� t j|ddddgdd�}t| ¡ | ¡ ƒD ]\}}tj||dd�sjt‚qjd S )Na�  
        ! Initial comment line 1
        ! Initial comment line 2
        READ TERR 1
        READ SERR 3
        ! Table 0 comment
        !a,a(pos),a(neg),b,c,ce,d
        53000.5,0.25,-0.5,1,1.5,3.5,2
        54000.5,1.25,-1.5,2,2.5,4.5,3
        NO,NO,NO,NO,NO
        ! Table 1 comment
        !a,a(pos),a(neg),b,c,ce,d
        54000.5,2.25,-2.5,NO,3.5,5.5,5
        55000.5,3.25,-3.5,4,4.5,6.5,nan
        r
   rE   r>   r?   r@   rA   rB   ú,)rD   r   r   ÚseprN   rO   rP   r   r   TrF   rQ   rS   r#   r#   r$   Útest_roundtrip_example_commaª   s       
 ÿrY   c              	   C   sþ   | d }t ƒ }| tdddddgd�¡ | tdtjd	d
gdddddgd�¡ |j|dd� t t	¡�}t j
|dd�}W 5 Q R X t dd„ |D ƒ¡s˜t‚t |d |d ¡s°t‚t |d |d k¡sÊt‚t |d ¡ }t |d | |d | ¡sút‚d S )Nr
   r?   r>   r   rN   é   ©r   Údatag      @g      @g      ð?r@   FT)r\   r   ÚmaskrE   ©rD   c                 S   s   g | ]}d |j jd k‘qS )z9table_id not specified. Reading the first available tabler   r&   r)   r#   r#   r$   r,   Ô   s   þ
ÿz*test_read_write_simple.<locals>.<listcomp>rK   rL   )r   Ú
add_columnr   r   r   ÚnanrR   r3   r4   ÚUserWarningrG   r5   r   r7   Úallr1   )r   rT   Út1r8   rU   Zgoodr#   r#   r$   Útest_read_write_simpleÇ   s,      
ÿÿýÿrd   c                 C   sf   | d }t ƒ }| tddddgd�¡ |j|dd� t j|d	ddgd
�}t |d |d k¡sbt‚d S )Nr
   r?   r>   r   rN   r[   rE   r^   r   )r   rD   r   )r   r_   r   rR   rG   r   rb   r   )r   rT   rc   rU   r#   r#   r$   Ú#test_read_write_simple_specify_nameâ   s    re   c           	   	   C   s˜   t | d ƒ}d}t|ƒ}t|dƒ�}t||d� W 5 Q R X t|ƒ}tddgƒ}tddgƒD ]8\}}|| |ksrt‚|| |ks‚t‚|| |ksZt‚qZd S )Nr
   zA
Br   r   ÚAÚB)r2   r   r   r   Ú	enumerater   )	r   rT   Ztext_stringZtext_outputZfobjZfile_outputZlist_outputÚiÚliner#   r#   r$   Útest_get_lines_from_qdpì   s    rk   )Únumpyr   r3   Z
astropy.ior   Zastropy.io.ascii.qdpr   r   r   Zastropy.tabler   r   r   Zastropy.utils.exceptionsr	   r%   r<   rM   rV   rY   rd   re   rk   r#   r#   r#   r$   Ú<module>   s   $B
