U
    d»{jX=  ã                   @   sÂ  d dl m Z  d dlZd dlmZmZ d dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZmZ d dlmZmZ d d	lmZ d d
lmZ d dlmZ edddgƒZe
dddgdddgdddggdddgd�Zedƒ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)d*„ Z$d+d,„ Z%d-d.„ Z&d/d0„ Z'd1d2„ Z(d3d4„ Z)d5d6„ Z*d7d8„ Z+d9d:„ Z,d;d<„ Z-d=d>„ Z.d?d@„ Z/ej0j1dAdB�dCdD„ ƒZ2ej0j1dAdB�dEdF„ ƒZ3dGdH„ Z4ej0 5dIeeg¡dJdK„ ƒZ6dS )Lé    )ÚdatetimeN)Úassert_allcloseÚassert_equal)Úunits)ÚColumnÚTable)Úassert_quantity_allclose)ÚTimeÚ	TimeDelta)ÚBoxLeastSquaresÚLombScargle)Ú
TimeSeries)ÚQuantity)Úget_pkg_data_filenamez2016-03-22T12:30:31z2015-01-21T12:30:32z2016-03-22T12:30:40é   é   é   é   é   ÚaÚbÚc)Únameszdata/sampled.csvc                  C   s    t ƒ } tdddgdd�| d< d S )NiQÃ  iRÃ  iSÃ  Zmjd©ÚformatÚtime)r   r	   ©Úts© r   úd/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/timeseries/tests/test_sampled.pyÚtest_empty_initialization   s    r    c               	   C   s2   t ƒ } tjtdd�� dddg| d< W 5 Q R X d S )NzSTimeSeries object is invalid - expected 'time' as the first column but found 'flux'©Úmatchr   r   r   Úflux)r   ÚpytestÚraisesÚ
ValueErrorr   r   r   r   Ú!test_empty_initialization_invalid   s    ýr'   c                  C   s0   t td�} | d | jkst‚t| jjtjƒ d S )N©r   r   )r   Ú
INPUT_TIMEr   ÚAssertionErrorr   Úisotr   r   r   r   Útest_initialize_only_time)   s    
r,   c                  C   s^   t tdddgdddggddgd	�} t| jjtjƒ t| d dddgƒ t| d dddgƒ d S )
Né
   r   r   r   é   é   r   r   ©r   Údatar   )r   r)   r   r   r+   r   r   r   r   Útest_initialization_with_data0   s    "r2   c                	   C   s>   t jtdd��& tdddgdddggd	d
gd� W 5 Q R X d S )Nz1Either 'time' or 'time_start' should be specifiedr!   r-   r   r   r   r.   r/   r   r   ©r1   r   )r$   r%   Ú	TypeErrorr   r   r   r   r   Útest_initialize_only_data7   s
     ÿr5   c                  C   s&   t ttd�} | jddddgks"t‚d S )N)r   r1   r   r   r   r   )r   r)   ÚPLAIN_TABLEÚcolnamesr*   r   r   r   r   Útest_initialization_with_table>   s    r8   c                  C   sR   t tddddddƒtddd�dddgd	d
dggddgd�} t| jjdddgƒ d S )Néâ  é   r   r-   r   Úsecr   r   r   r.   r/   r   r   ©Ú
time_startÚ
time_deltar1   r   z2018-07-01T10:10:10.000z2018-07-01T10:10:13.000z2018-07-01T10:10:16.000)r   r   r
   r   r   r+   r   r   r   r   Ú#test_initialization_with_time_deltaC   s    
üýþr?   c                	   C   sN   t jtdd��6 ttddddddƒdddgd	d
dggddgd� W 5 Q R X d S )Nz-'time' is scalar, so 'time_delta' is requiredr!   r9   r:   r   r-   r   r   r   r.   r/   r   r   )r=   r1   r   ©r$   r%   r4   r   r   r   r   r   r   Ú&test_initialization_missing_time_deltaT   s     ÿýrA   c                
   C   sP   t jtdd��8 tttddddddƒdddgd	d
dggddgd� W 5 Q R X d S )Nz+Cannot specify both 'time' and 'time_start'r!   r9   r:   r   r-   r   r   r   r.   r/   r   r   )r   r=   r1   r   )r$   r%   r4   r   r)   r   r   r   r   r   Ú/test_initialization_invalid_time_and_time_start_   s    ürB   c                	   C   sV   t jtdd��> ttddddddƒdddgdd	dgdd
dggddgd� W 5 Q R X d S )Nz0'time_delta' should be a Quantity or a TimeDeltar!   r9   r:   r   r-   r   r   r   r.   r/   r   r   r<   r@   r   r   r   r   Ú&test_initialization_invalid_time_deltai   s     ÿürC   c               	   C   sì   t  ¡ } t| d< t| d�}t|jƒddddhks4t‚t|jtkƒsFt‚tdddgtgddgd	�}t|jƒddhksvt‚t|jtkƒsˆt‚d
}t	j
t|d�� t| td� W 5 Q R X t	j
t|d��" ttdddgtgddgd� W 5 Q R X d S )Nr   )r1   r   r   r   r-   r   r   r3   zA'time' has been given both in the table and as a keyword argumentr!   )r1   r   r0   )r6   Úcopyr)   r   Úsetr7   r*   Úallr   r$   r%   r4   )r1   Zts1Zts2ÚMESSAGEr   r   r   Ú%test_initialization_with_time_in_datau   s    
rH   c                	   C   s,   t jtdd�� tttdd� W 5 Q R X d S )NzP'n_samples' has been given both and it is not the same length as the input data.r!   iè  )r   r1   Z	n_samples)r$   r%   r4   r   r)   r6   r   r   r   r   Útest_initialization_n_samples�   s
    ýrI   c                	   C   s<   t jtdd��$ ttddgddggddgd	� W 5 Q R X d S )
Nz5Length of 'time' \(3\) should match data length \(2\)r!   r-   r   r   r.   r   r   r0   )r$   r%   r&   r   r)   r   r   r   r   Ú#test_initialization_length_mismatchš   s
     ÿrJ   c                	   C   s2   t jtdd�� tttddd�d� W 5 Q R X d S )Nz='time_delta' should not be specified since 'time' is an arrayr!   r   r;   r   )r   r>   )r$   r%   r4   r   r)   r
   r   r   r   r   Ú4test_initialization_invalid_both_time_and_time_delta¡   s
    þrK   c                  C   s0  t ddddddgdd�} t| d	�}dd
d
dddg|d< |jdtj d�}t|jtƒsXt‚t	|jj
ddddddgdd� |jdtj t ddd�d�}t|jtƒs¢t‚t	|jj
ddddddgddd� |jdtj dtj d�}t|jtƒsìt‚t	|jj
ddddddgdd� |jdtj dtj d�}t|jtƒ�s6t‚t	|jj
ddd dd!d"gdd� |jdtj dtj dtj d#�}t|jtƒ�sˆt‚t	|jj
dd$d%dd&d'gdd� |jdtj d(d)�}t|jtƒ�sÌt‚t	|j tj¡dd*d+d,d-d.gdd� |jdtj t ddd�d(d/�}t|jtƒ�s t‚t	|j tj¡d0d1d.dd*d2gddd� |jdtj dd(d3�}t|jtƒ�snt‚t	|j tj¡dd*d4d,d5d.gdd� |jdtj d2d(d6�}t|jtƒ�sºt‚t	|j tj¡d2d7d8d.d9d:gdd� |jdtj d2dd(d;�}t|jtƒ�st‚t	|j tj¡d2d<d=d.d>d?gdd� d S )@Nr   r   r   é   é	   é   Úunixr   r(   r   r#   çš™™™™™	@©Úperiodr   g333333ó¿g333333ã?gš™™™™™ù¿gffffffö?g�íµ ÷Æ°>)Úrtolgš™™™™™ù?)rR   Ú
epoch_timeg333333ã¿gš™™™™™Ù?g        g      ð?gš™™™™™é?)rS   Zatol©rR   Ú
wrap_phase©rR   Úepoch_phasegffffffö¿gš™™™™™Ù¿gš™™™™™é¿g      ð¿)rR   rX   rV   gÍÌÌÌÌÌü?gffffff@g333333@çš™™™™™@T)rR   Únormalize_phaseg      Ô?gÿÿÿÿÿÿ×¿gÿÿÿÿÿÿÇ?g      à¿gÿÿÿÿÿÿÛ?)rR   rT   rZ   gÿÿÿÿÿÿÇ¿g      À?g      Ð?©rR   rV   rZ   g      ä?g      à?©rR   rX   rZ   gÿÿÿÿÿÿÛ¿g      À¿g      Ð¿g      Ô¿)rR   rX   rV   rZ   g      â?gÿÿÿÿÿÿë?gÿÿÿÿÿÿç?g      æ?)r	   r   ÚfoldÚuÚsÚ
isinstancer   r
   r*   r   r;   r   Zto_valueÚone)Útimesr   Ztsfr   r   r   Ú	test_fold©   s~    
 "ý 
 ÿüýý   ÿýrc   c               	   C   s(  t ddddddgdd�} t| d	�}dd
d
dddg|d< tjtjdd�� |jdd� W 5 Q R X tjtjdd�� |jdtj d� W 5 Q R X tjtjdd�� |jdtj dd� W 5 Q R X tjtjdd��" |jdtj dtj dd� W 5 Q R X tjtjdd�� |jdtj dd� W 5 Q R X tjtjdd��" |jdtj dtj dd� W 5 Q R X tjt	dd��  |jdtj dtj d� W 5 Q R X tjt	dd��  |jdtj dtj d� W 5 Q R X tjt	dd�� |jdtj ddd� W 5 Q R X tjt	dd�� |jdtj ddd� W 5 Q R X d S )Nr   r   r   rL   rM   rN   rO   r   r(   r   r#   z,period should be a Quantity in units of timer!   rP   rQ   zLepoch_phase should be a Quantity in units of time when normalize_phase=Falsegš™™™™™É?rW   zSepoch_phase should be a dimensionless Quantity or a float when normalize_phase=TrueTr\   zKwrap_phase should be a Quantity in units of time when normalize_phase=FalserU   z<wrap_phase should be dimensionless when normalize_phase=Truer[   z-wrap_phase should be between 0 and the periodgš™™™™™¹¿gÍÌÌÌÌÌÀz$wrap_phase should be between 0 and 1rY   )
r	   r   r$   r%   r^   Z
UnitsErrorr]   Úmr_   r&   )rb   r   r   r   r   Útest_fold_invalid_optionsÿ   s^    
 ÿ ÿýý&ýþ& ÿ$ ÿ$ re   c               	   C   sf  t  d¡} |  ¡ }dddg|d< |j|  tj¡dd� t |¡}t	|j
jtjƒ |jddgksbt‚t|jƒdkstt‚|jd jd	 tk ¡ s�t‚tj|d
d�}|j
jd
ks®t‚| ¡ }|jj|  tj¡jk ¡ sÔt‚|j|  dg¡ksêt‚|d |d k ¡ �st‚t jtdd�� t d ¡ W 5 Q R X |  ¡ }dddg|d< t jtdd�� t |¡ W 5 Q R X d S )NÚpandasr   r   r   r   T)Zinplacer   r   Ztcb)Z
time_scalez"Input should be a pandas DataFramer!   z'DataFrame does not have a DatetimeIndex)r$   ZimportorskipZ	DataFrameZ	set_indexZDatetimeIndexr)   Z
datetime64r   Zfrom_pandasr   r   r+   r7   r*   ÚlenÚindicesÚcolumnsrF   ÚscaleZ	to_pandasÚindexÚvaluesÚIndexr%   r4   )rf   Zdf1r   Zts_tcbZdf2Zdf4r   r   r   Útest_pandasA  s*    

rn   c                	   C   s,   t jtdd�� tjtdd� W 5 Q R X d S )NzS``time_column`` should be provided since the default Table readers are being used\.r!   Úcsvr   ©r$   r%   r&   r   ÚreadÚCSV_FILEr   r   r   r   Útest_read_time_missing`  s
    ýrs   c                	   C   s.   t jtdd�� tjtddd� W 5 Q R X d S )Nz/Time column 'abc' not found in the input data\.r!   Úabcro   ©Ztime_columnr   rp   r   r   r   r   Útest_read_time_wrongk  s
     ÿrv   c               	   C   sh   t jtddd�} | jdddddd	d
dgks.t‚t| ƒdks>t‚| d jdksPt‚| d  ¡ dksdt‚d S )NÚDatero   ru   r   ÚAÚBÚCÚDÚEÚFÚGr   Zisog     ¨p@)r   rq   rr   r7   r*   rg   r   Úsum)Ú
timeseriesr   r   r   Ú	test_readr  s
    r�   Úastropy)Úsourcec               	   C   s˜   ddl m}  tdƒ}t | ¡� tj|dd�}W 5 Q R X |d jdksJt‚|d j	dks\t‚|d	 j
 ¡ d
ksrt‚t|ƒdks‚t‚t|jƒdks”t‚d S )Nr   )ÚUnitsWarningz/timeseries/kplr010666592-2009131110544_slc.fitszkepler.fitsr   r   r+   ÚtdbÚsap_fluxúelectron / siÈ7  é   )Úastropy.unitsr„   r   r$   Úwarnsr   rq   r   r*   rj   ÚunitÚ	to_stringrg   ri   )r„   Úfilenamer€   r   r   r   Útest_kepler_astropyz  s    rŽ   c               	   C   s�   t dƒ} tjtdd�� tj| dd�}W 5 Q R X |d jdksBt‚|d jdksTt‚|d	 j	 
¡ d
ksjt‚t|ƒdkszt‚t|jƒdksŒt‚d S )NzJtimeseries/hlsp_tess-data-alerts_tess_phot_00025155310-s01_tess_v1_lc.fitsz Ignoring 815 rows with NaN timesr!   z	tess.fitsr   r   r+   r…   r†   r‡   i=K  rˆ   )r   r$   rŠ   ÚUserWarningr   rq   r   r*   rj   r‹   rŒ   rg   ri   )r�   r€   r   r   r   Útest_tess_astropyŠ  s    ÿr�   c               	   C   sÄ  t tdddgdddggddgd	�} |  ¡  d
}tjt| d¡d��& |  ¡ jtdddgdd�dd� W 5 Q R X tjt| d¡d��< |  ¡ j	tdddgdd�tdddgdd�gddgd� W 5 Q R X tjt| d¡d�� |  ¡  
ddg¡ W 5 Q R X tjt| d¡d�� |  ¡  d¡ W 5 Q R X tjt| d¡d�� |  ¡  ddg¡ W 5 Q R X tjt| d¡d�� |  ¡  dd¡ W 5 Q R X d}|  ¡ }ddg|_tjt|d�� | d¡ W 5 Q R X d S )Nr-   r   r   r   r.   r/   r   r   r0   zQTimeSeries object is invalid - expected 'time' as the first column but found '{}'r   r!   )Únamer   )rk   ÚdÚer   )Zindexesr   ÚbananazfTimeSeries object is invalid - expected \['time', 'a'\] as the first columns but found \['time', 'b'\])r   r)   rD   r$   r%   r&   r   Ú
add_columnr   Zadd_columnsZkeep_columnsZremove_columnZremove_columnsZrename_columnZ_required_columns)r   rG   Zts_2cols_requiredr   r   r   Útest_required_columns˜  s2    "ÿ*" ÿÿ
r–   Úclsc                 C   s¬   t tdddgdddggddgd	�}|  |d¡}t|| ƒs<t‚t|jj|jjƒ t	|j
|d ƒ |jd kslt‚| j|ddd
�}t|j|d ƒ | j|ddd
�}t|jdƒ d S )Nr-   r   r   r   r.   r/   r   r   r0   )Zuncertaintygš™™™™™¹?)r   r)   Zfrom_timeseriesr`   r*   r   ÚtZjdr   r   ÚyZdyr   )r—   r   Úp1Zp2Zp3r   r   r   Útest_periodogramÈ  s    "r›   )7r   r$   Znumpy.testingr   r   r‚   r   r^   Zastropy.tabler   r   Zastropy.tests.helperr   Zastropy.timer	   r
   Zastropy.timeseries.periodogramsr   r   Zastropy.timeseries.sampledr   r‰   r   Zastropy.utils.datar   r)   r6   rr   r    r'   r,   r2   r5   r8   r?   rA   rB   rC   rH   rI   rJ   rK   rc   re   rn   rs   rv   r�   ÚmarkZremote_datarŽ   r�   r–   Zparametrizer›   r   r   r   r   Ú<module>   sP   *
VB

0