3

h=                 @   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   sl   y |r|j || _n
|j  | _W n tk
r:   || _Y nX t| jtsPtdttt| jd | _d S )Nz$first argument must be image or list   )		histogramhAttributeError
isinstancelist	TypeErrorrangelenbands)selfZimage_or_listmask r   M/var/www/html/enquirykeeper_venv/lib/python3.6/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   sD   dd }g }x2t dt| jdD ]}|j|| j|d  q W |S )z-Get min/max values for each band in the imagec             S   s>   d}d}x,t dD ] }| | rt||}t||}qW ||fS )N   r   r   )r
   minmax)r   nxir   r   r   minmax6   s    
z Stat._getextrema.<locals>.minmaxr   r   N)r
   r   r   append)r   r   r   r   r   r   r   _getextrema3   s
    	zStat._getextremac             C   sF   g }x<t dt| jdD ]&}|jtjtj| j||d   qW |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   	_getcountD   s    &zStat._getcountc             C   sZ   g }xPt dt| jdD ]:}d}x&t dD ]}||| j||   7 }q*W |j| qW |S )z#Get sum of all pixels in each layerr   r   g        )r
   r   r   r    )r   r   r   ZlayerSumjr   r   r   _getsumL   s    zStat._getsumc             C   sb   g }xXt dt| jdD ]B}d}x.t dD ]"}||d t| j||   7 }q*W |j| qW |S )z+Get squared sum of all pixels in each layerr   r   g           )r
   r   r   floatr    )r   r   r   sum2r'   r   r   r   _getsum2W   s    "zStat._getsum2c             C   s2   g }x(| j D ]}|j| j| | j|   qW |S )z&Get average pixel level for each layer)r   r    sumcount)r   r   r   r   r   r   _getmeanb   s    zStat._getmeanc             C   sj   g }x`| j D ]V}d}| j| d }|d }x,tdD ] }|| j||   }||kr4P q4W |j| qW |S )z%Get median pixel level for each layerr   r)   r   )r   r.   r
   r   r    )r   r   r   sZhalfbr'   r   r   r   
_getmedianj   s    zStat._getmedianc             C   s8   g }x.| j D ]$}|jtj| j| | j|   qW |S )zGet RMS for each layer)r   r    mathsqrtr+   r.   )r   r   r   r   r   r   _getrmsy   s    $zStat._getrmsc             C   sH   g }x>| j D ]4}| j| }|j| j| | j| d |  |  qW |S )zGet variance for each layerg       @)r   r.   r    r+   r-   )r   r   r   r   r   r   r   _getvar   s
    
*zStat._getvarc             C   s.   g }x$| j D ]}|jtj| j|  qW |S )z%Get standard deviation for each layer)r   r    r3   r4   var)r   r   r   r   r   r   
_getstddev   s    zStat._getstddev)N)__name__
__module____qualname__r   r   r!   r&   r(   r,   r/   r2   r5   r6   r8   r   r   r   r   r      s   
		r   )r"   r3   r$   r   Globalr   r   r   r   <module>   s   v