
    e                    0    d dl mZ d dlZ G d d      ZeZy)    )annotationsNc                  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       //usr/lib/python3/dist-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 }t        dt        | j                        d      D cg c]  } || j                  |d        c}S c c}w )z-Get min/max values for each band in the imagec                    d\  }}t        d      D ]  }| |   s	|} n t        ddd      D ]  }| |   s	|} ||fS  ||fS )N)   r   r   r"   )r   )r   res_minres_maxis       r   minmaxz Stat._getextrema.<locals>.minmax6   so    %GW3Z Q<G 3B' Q<GG##	 G##r   r   r   N)r   r   r	   )r   r'   r&   s      r   _getextremazStat._getextrema3   s=    
	$ -2!S[#,FGqtvvabz"GGGs   Ac           	         t        dt        | j                        d      D cg c]  }t        | j                  ||dz           c}S c c}w )z(Get total number of pixels in each layerr   r   )r   r   r	   sumr   r&   s     r   	_getcountzStat._getcountD   s;    273tvv;2LMQDFF1q3w'(MMMs   "A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	   append)r   r   r&   	layer_sumjs        r   _getsumzStat._getsumH   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   r.      )r   r   r	   floatr/   )r   r   r&   sum2r1   s        r   _getsum2zStat._getsum2S   sw     q#dff+s+ 	AD3Z 6Atvva!e}!5556HHTN		
 r   c                z    | j                   D cg c]!  }| j                  |   | j                  |   z  # c}S c c}w )z&Get average pixel level for each layer)r   r*   countr+   s     r   _getmeanzStat._getmean^   s/    59ZZ@djjm+@@@s   &8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   r4   r   )r   r9   r   r	   r/   )r   r   r&   shalfbr1   s          r   
_getmedianzStat._getmedianb   s      	AA::a=A%DCA3Z q1u%t8 HHQK	 r   c                    | j                   D cg c]4  }t        j                  | j                  |   | j                  |   z        6 c}S c c}w )zGet RMS for each layer)r   mathsqrtr6   r9   r+   s     r   _getrmszStat._getrmsq   s8    AELA		$))A,A67LLLs   9Ac                    | j                   D cg c]D  }| j                  |   | j                  |   dz  | j                  |   z  z
  | j                  |   z  F c}S c c}w )zGet variance for each layerg       @)r   r6   r*   r9   r+   s     r   _getvarzStat._getvaru   s\     ZZ
 YYq\TXXa[C/4::a=@@DJJqMQ
 	
 
s   A	Ac                    | j                   D cg c]$  }t        j                  | j                  |         & c}S c c}w )z%Get standard deviation for each layer)r   rA   rB   varr+   s     r   
_getstddevzStat._getstddev|   s+    04

;1		$((1+&;;;s   );)N)__name__
__module____qualname__r   r   r(   r,   r2   r7   r:   r?   rC   rE   rH    r   r   r   r      s=    5H"N		AM
<r   r   )
__future__r   rA   r   GlobalrL   r   r   <module>rO      s!   . # b< b<J 
r   