o
    Nrf                     @  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d?d 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dAd/d0Z/dBd1d2Z0eejdCd3d4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dBd=d>Z6dS )D    )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   V/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/dask/array/ma.pynormalize_masked_array   s   



r   c                 C     t | } | jtjj|dS N)r   )r   r	   npmafilledar   r   r   r   r         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   r2   2   s
   r2   c                 C  s   t | tjjS r   )r   r	   r   r   masked_invalidr   r   r   r   r4   ;   s   r4   c                 C     t | } | tjj||S r   )r   r	   r   r   masked_insider   Zv1Zv2r   r   r   r7   @   r   r7   c                 C  r6   r   )r   r	   r   r   masked_outsider8   r   r   r   r9   F   r   r9   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"   )r0   r/   
IndexErrorr   r$   r%   r&   r   r   r   masked_wherer#   )	conditionr   Zcshaper*   Zcindsr   r   r   r;   L   s   r;   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   r0   r1   r	   r   r   masked_values)r   r)   r?   r@   rA   r   r   r   rB   ]   s   rB   c                 C  r   r   )r   r	   r   r   fix_invalidr   r   r   r   rC   g   r   rC   c                 C     t | } | tjjS r   )r   r	   r   r   getdatar5   r   r   r   rE   m      rE   c                 C  rD   r   )r   r	   r   r   getmaskarrayr5   r   r   r   rG   s   rF   rG   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   rL   c                 K  s   t | } tt| j}|| |g}t|ddrtd||d< |tjjurSt |}|j	dkr6|
d| j }n| j|jkrLt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      )rM   zEMask and data not compatible: data shape is %s, and mask shape is %s.r#   rJ   )r   r$   r%   r&   r0   r1   r   r   nomasksizeZreshaper/   Z	MaskErrorreprextendr#   r   rL   )r   r   r   rK   r3   Zargindsr   r   r   rI      s*   


rI   c                 C  s*   t | tjjr|  } tjj| |d | S r   )
isinstancer   r   rI   copyset_fill_value)r   r   r   r   r   _set_fill_value   s   rU   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   r0   r1   r   r   coreZ_check_fill_valuer#   r	   rU   Zdaskname_name)r   r   resr   r   r   rT      s   rT   Fc                 C  s   t | |||d|dS )NT)Z	is_maskedkeepdimsr   )r   axisweightsreturnedrZ   r   r   r   average   s   r^   c                 C  s   t jj| ||dS )N)r[   rZ   )r   r   count)r   r[   rZ   r   r   r   _chunk_count   s   r`   c              
   C  s   t | ttj||tj|d dS )N)r[   rZ   r#   split_everyout)r
   r`   r   sumr   Zintp)r   r[   rZ   ra   r   r   r   r_      s   r_   c                 K      t | } | jtjjjfi |S r   )r   r	   r   r   rV   	ones_liker   rK   r   r   r   re         re   c                 K  rd   r   )r   r	   r   r   rV   
zeros_likerf   r   r   r   rh      rg   rh   c                 K  rd   r   )r   r	   r   r   rV   
empty_likerf   r   r   r   ri      rg   ri   c                 C  s   t t| t|   S r   )_nonzerorE   rG   r5   r   r   r   r      s   r   c                 C  sB   |d u |d u krt d|d u r|d u rt| S ttjj| ||S )Nz1either both or neither of x and y should be given)r1   r   r   r   r   where)r<   r   yr   r   r   rk      s
   rk   r   )r=   r>   T)NNFF)NN)NFN)7
__future__r   	functoolsr   numpyr   Z
dask.arrayr   Zdask.array.corer   r   r   r	   Zdask.array.reductionsr
   Zdask.array.routinesr   r   rj   Z	dask.baser   Z
dask.utilsr   registerr   rI   r   r   r.   Zmasked_greaterZmasked_greater_equalZmasked_lessZmasked_less_equalZmasked_not_equalr2   r4   r7   r9   r;   rB   rC   rE   rG   rN   rL   rU   rT   r^   r`   r_   rV   re   rh   ri   rk   r   r   r   r   <module>   sv    





	













