a
    tDf                     @  sx  d dl mZ d dlmZ d dlZd dlmZ d dlm	Z	m
Z
mZmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ eejjdd Zeejd?ddZdd ZeejjZeejjZeejjZeejj Z eejj!Z!eejdd Z"eejdd Z#eejdd Z$eejdd Z%eejdd Z&eejd@ddZ'eejdAd d!Z(eejd"d# Z)eejd$d% Z*ejj+dfd&d'Z,eejejj+dfd(d)Zd*d+ Z-eejd,d- Z.eejdBd/d0Z/dCd1d2Z0eejdDd3d4Z1eejj2d5d6 Z3eejj2d7d8 Z4eejj2d9d: Z5eejj2d;d< Zeejj2dEd=d>Z6dS )F    )annotationswrapsN)chunk)
asanyarray	blockwiseelemwise
map_blocks)	reduction_average)nonzero)normalize_token)derived_fromc                 C  s(   t | j}t | j}t | j}|||fS N)r   datamask
fill_value)xr   r   r    r   Z/nfs/NAS7/SABIOD/METHODE/ermites/ermites_venv/lib/python3.9/site-packages/dask/array/ma.pynormalize_masked_array   s    


r   c                 C  s   t | } | jtjj|dS N)r   )r   r	   npmafilledar   r   r   r   r      s    r   c                   s   t   fdd}|S )Nc              	     sf   t | } t |}tt| jd d d }tt|jd d d }t||td}t || |||| jdS )N)keydtype)r   tuplerangendimmaxlenr   r!   )r   valueaindsZvindsZoindsfr   r   _   s    z_wrap_masked.<locals>._r   )r*   r+   r   r)   r   _wrap_masked   s    r,   c              	   C  sF   t | } t|ddrtdtt| j}ttjj	|| ||d| j
dS )Nshaper   z1da.ma.masked_equal doesn't support array `value`sr    )r   getattr
ValueErrorr"   r#   r$   r   r   r   masked_equalr!   )r   r'   indsr   r   r   r0   2   s
    r0   c                 C  s   t | tjjS r   )r   r	   r   r   masked_invalidr   r   r   r   r2   ;   s    r2   c                 C  s   t | } | tjj||S r   )r   r	   r   r   masked_insider   Zv1Zv2r   r   r   r4   @   s    r4   c                 C  s   t | } | tjj||S r   )r   r	   r   r   masked_outsider5   r   r   r   r6   F   s    r6   c              	   C  st   t | dd}|r,||jkr,td||jf t| } t|}tt|j}tt| j}ttj	j
|| ||||jdS )Nr-   r   zFInconsistent shape between the condition and the input (got %s and %s)r    )r.   r-   
IndexErrorr   r"   r#   r$   r   r   r   masked_wherer!   )	conditionr   Zcshaper(   Zcindsr   r   r   r8   L   s    r8   h㈵>:0yE>Tc                 C  s4   t | } t|ddrtdttjj| ||||dS )Nr-   r   z2da.ma.masked_values doesn't support array `value`s)rtolatolshrink)r   r.   r/   r	   r   r   masked_values)r   r'   r<   r=   r>   r   r   r   r?   ]   s    r?   c                 C  s   t | } | jtjj|dS r   )r   r	   r   r   fix_invalidr   r   r   r   r@   g   s    r@   c                 C  s   t | } | tjjS r   )r   r	   r   r   getdatar3   r   r   r   rA   m   s    rA   c                 C  s   t | } | tjjS r   )r   r	   r   r   getmaskarrayr3   r   r   r   rB   s   s    rB   c                 K  s(   d|v r|d= t jj| f||d|S )Nchunks)r   r!   )r   r   masked_array)r   r   masked_dtypekwargsr   r   r   _masked_arrayy   s    rG   c                 K  s   t | } tt| j}|| |g}t|ddr4td||d< |tjjurt |}|j	dkrl|
d| j }n,| j|jkrtjdt| jt|jf |||g d|v r|d |d	< n
| j|d< ttg|R i |S )
Nr-   r   z#non-scalar fill_value not supportedr      )rH   zEMask and data not compatible: data shape is %s, and mask shape is %s.r!   rE   )r   r"   r#   r$   r.   r/   r   r   nomasksizeZreshaper-   Z	MaskErrorreprextendr!   r   rG   )r   r   r   rF   r1   Zargindsr   r   r   rD      s*    


rD   c                 C  s*   t | tjjr&|  } tjj| |d | S r   )
isinstancer   r   rD   copyset_fill_value)r   r   r   r   r   _set_fill_value   s    rP   c                 C  sN   t | } t|ddrtdtjj|| j}| t	|}|j
| _
|j| _d S )Nr-   r   z3da.ma.set_fill_value doesn't support array `value`s)r   r.   r/   r   r   coreZ_check_fill_valuer!   r	   rP   Zdaskname_name)r   r   resr   r   r   rO      s    rO   Fc                 C  s   t | |||d|dS )NT)Z	is_maskedkeepdimsr   )r   axisweightsZreturnedrU   r   r   r   average   s    rX   c                 C  s   t jj| ||dS )N)rV   rU   )r   r   count)r   rV   rU   r   r   r   _chunk_count   s    rZ   c              
   C  s   t | ttj||tj|d dS )N)rV   rU   r!   split_everyout)r
   rZ   r   sumr   Zintp)r   rV   rU   r[   r   r   r   rY      s    rY   c                 K  s    t | } | jtjjjfi |S r   )r   r	   r   r   rQ   	ones_liker   rF   r   r   r   r^      s    r^   c                 K  s    t | } | jtjjjfi |S r   )r   r	   r   r   rQ   
zeros_liker_   r   r   r   r`      s    r`   c                 K  s    t | } | jtjjjfi |S r   )r   r	   r   r   rQ   
empty_liker_   r   r   r   ra      s    ra   c                 C  s   t t| t|   S r   )_nonzerorA   rB   r3   r   r   r   r      s    r   c                 C  sF   |d u |d u krt d|d u r0|d u r0t| S ttjj| ||S d S )Nz1either both or neither of x and y should be given)r/   r   r   r   r   where)r9   r   yr   r   r   rc      s
    rc   )N)r:   r;   T)N)NNFF)NN)NFN)NN)7
__future__r   	functoolsr   numpyr   Z
dask.arrayr   Zdask.array.corer   r   r   r	   Zdask.array.reductionsr
   Zdask.array.routinesr   r   rb   Z	dask.baser   Z
dask.utilsr   registerr   rD   r   r   r,   Zmasked_greaterZmasked_greater_equalZmasked_lessZmasked_less_equalZmasked_not_equalr0   r2   r4   r6   r8   r?   r@   rA   rB   rI   rG   rP   rO   rX   rZ   rY   rQ   r^   r`   ra   rc   r   r   r   r   <module>   st   





	













