
    &ThT                     4    d dl Z d dlZd dlZ G d d      ZeZy)    Nc                   P    e Zd ZddZd Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zy)StatNc                 :   	 |r|j                  |      | _        n|j                         | _        t        | j                  t              sd}t        |      t	        t        t        | j                        dz              | _        y # t        $ r
 || _        Y iw xY w)Nz$first argument must be image or list   )		histogramhAttributeError
isinstancelist	TypeErrorrangelenbands)selfimage_or_listmaskmsgs       U/home/stella.sw7ft.com/public_html/venv/lib/python3.12/site-packages/PIL/ImageStat.py__init__zStat.__init__   s    	#&006&002 $&&$'8CC. %DFFs 234
  	#"DF	#s   .B BBc                 n    |dd dk(  rt        |       t        | d|z                }t        | ||       |S )zCalculate missing attributeN   _get)r	   getattrsetattr)r   idvs      r   __getattr__zStat.__getattr__+   sA    bq6V $$&GD&2+&(b!    c                     d }g }t        dt        | j                        d      D ]&  }|j                   || j                  |d              ( |S )z-Get min/max values for each band in the imagec                 n    d}d}t        d      D ]   }| |   s	t        ||      }t        ||      }" ||fS )N   r   r   )r   minmax)r   nxis       r   minmaxz Stat._getextrema.<locals>.minmax7   sG    AA3Z "Q<Aq	AAq	A" a4Kr   r   r   Nr   r   r   append)r   r'   r   r&   s       r   _getextremazStat._getextrema4   sN    	 q#dff+s+ 	)AHHVDFF12J'(	)r   c           
          g }t        dt        | j                        d      D ]E  }|j                  t	        j
                  t        j                  | j                  ||dz                 G |S )z(Get total number of pixels in each layerr   r   )r   r   r   r)   	functoolsreduceoperatoraddr   r   r&   s      r   	_getcountzStat._getcountE   s\     q#dff+s+ 	JAHHY%%hllDFF1q3w4GHI	Jr   c                     g }t        dt        | j                        d      D ]=  }d}t        d      D ]  }||| j                  ||z      z  z  } |j                  |       ? |S )z#Get sum of all pixels in each layerr   r           r(   )r   r   r&   	layer_sumjs        r   _getsumzStat._getsumM   so     q#dff+s+ 	 AI3Z /QA..	/HHY		 
 r   c           	          g }t        dt        | j                        d      D ]I  }d}t        d      D ]&  }||dz  t        | j                  ||z            z  z  }( |j	                  |       K |S )z+Get squared sum of all pixels in each layerr   r   r3      )r   r   r   floatr)   )r   r   r&   sum2r5   s        r   _getsum2zStat._getsum2X   sw     q#dff+s+ 	AD3Z 6Atvva!e}!5556HHTN		
 r   c                     g }| j                   D ]0  }|j                  | j                  |   | j                  |   z         2 |S )z&Get average pixel level for each layer)r   r)   sumcountr0   s      r   _getmeanzStat._getmeanc   sB      	2AHHTXXa[4::a=01	2r   c                     g }| j                   D ]X  }d}| j                  |   dz  }|dz  }t        d      D ]  }|| j                  ||z      z   }||kD  s n |j	                         Z |S )z%Get median pixel level for each layerr   r8   r   )r   r>   r   r   r)   )r   r   r&   shalfbr5   s          r   
_getmedianzStat._getmediank   s      	AA::a=A%DCA3Z q1u%t8 HHQK	 r   c                     g }| j                   D ]C  }|j                  t        j                  | j                  |   | j
                  |   z               E |S )zGet RMS for each layer)r   r)   mathsqrtr:   r>   r0   s      r   _getrmszStat._getrmsz   sK      	>AHHTYYtyy|djjm;<=	>r   c                     g }| j                   D ]H  }| j                  |   }|j                  | j                  |   | j                  |   dz  |z  z
  |z         J |S )zGet variance for each layerg       @)r   r>   r)   r:   r=   )r   r   r&   r$   s       r   _getvarzStat._getvar   sb      	DA

1AHHdiildhhqkS&8A%==BC	D r   c                     g }| j                   D ]3  }|j                  t        j                  | j                  |                5 |S )z%Get standard deviation for each layer)r   r)   rF   rG   varr0   s      r   
_getstddevzStat._getstddev   s>      	-AHHTYYtxx{+,	-r   )N)__name__
__module____qualname__r   r   r*   r1   r6   r;   r?   rD   rH   rJ   rM    r   r   r   r      s9    5"		r   r   )r,   rF   r.   r   GlobalrQ   r   r   <module>rS      s$   0   t tn 
r   