o
    gT                     @   s.   d dl Z d dlZd dlZG dd dZeZdS )    Nc                   @   sf   e Zd Zd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S )StatNc                 C   sn   z|r
| || _n|  | _W n ty   || _Y nw t| jts)d}t|ttt| jd | _d S )Nz$first argument must be image or list   )		histogramhAttributeError
isinstancelist	TypeErrorrangelenbands)selfimage_or_listmaskmsg r   K/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/PIL/ImageStat.py__init__   s   

zStat.__init__c                 C   s8   |dd dkrt |t| d|  }t| || |S )zCalculate missing attributeN   _get)r   getattrsetattr)r   idvr   r   r   __getattr__+   s
   zStat.__getattr__c                 C   s@   dd }g }t dt| jdD ]}||| j|d  q|S )z-Get min/max values for each band in the imagec                 S   s:   d}d}t dD ]}| | rt||}t||}q||fS )N   r   r   )r
   minmax)r   nxir   r   r   minmax7   s   

z Stat._getextrema.<locals>.minmaxr   r   Nr
   r   r   append)r   r!   r   r    r   r   r   _getextrema4   s
   	zStat._getextremac              
   C   sB   g }t dt| jdD ]}|ttj| j||d   q|S )z(Get total number of pixels in each layerr   r   )r
   r   r   r#   	functoolsreduceoperatoraddr   r   r    r   r   r   	_getcountE   s   $zStat._getcountc                 C   sR   g }t dt| jdD ]}d}t dD ]}||| j||   7 }q|| q|S )z#Get sum of all pixels in each layerr   r           r"   )r   r   r    	layer_sumjr   r   r   _getsumM   s   zStat._getsumc                 C   sZ   g }t dt| jdD ]}d}t dD ]}||d t| j||   7 }q|| q|S )z+Get squared sum of all pixels in each layerr   r   r+      )r
   r   r   floatr#   )r   r   r    sum2r-   r   r   r   _getsum2X   s    zStat._getsum2c                 C   s.   g }| j D ]}|| j| | j|   q|S )z&Get average pixel level for each layer)r   r#   sumcountr)   r   r   r   _getmeanc   s   
zStat._getmeanc                 C   sd   g }| j D ]*}d}| j| d }|d }tdD ]}|| j||   }||kr) nq|| q|S )z%Get median pixel level for each layerr   r/   r   )r   r4   r
   r   r#   )r   r   r    shalfbr-   r   r   r   
_getmediank   s   
zStat._getmedianc                 C   s4   g }| j D ]}|t| j| | j|   q|S )zGet RMS for each layer)r   r#   mathsqrtr1   r4   r)   r   r   r   _getrmsz   s   
"zStat._getrmsc                 C   sD   g }| j D ]}| j| }|| j| | j| d |  |  q|S )zGet variance for each layerg       @)r   r4   r#   r1   r3   )r   r   r    r   r   r   r   _getvar   s
   

(zStat._getvarc                 C   s*   g }| j D ]}|t| j|  q|S )z%Get standard deviation for each layer)r   r#   r:   r;   varr)   r   r   r   
_getstddev   s   
zStat._getstddev)N)__name__
__module____qualname__r   r   r$   r*   r.   r2   r5   r9   r<   r=   r?   r   r   r   r   r      s    
		r   )r%   r:   r'   r   Globalr   r   r   r   <module>   s
   w