
    e                        d Z ddlZddlZddlZddlZddlmZ ddlZ	ddl
mZ ddlmZmZ ej                   j"                  Z ej$                         Zej)                  d ed      ed       ej-                         Z ej0                         Z e	j4                         Z ej8                  d	
      Zej<                  j?                   edd      d      Z ejC                  e         e	jD                         Z# ejH                         Z%e%jM                  e       e%jM                  e#       e%jO                  de#jQ                         g       e%jS                          i a* e	jV                         a, e	jZ                  d      Z.da/ ej`                         Z1d Z2 ejf                  e2d	e ejh                  jj                        Z6e6jo                   e8ddgd       e8ddg            d#d       Z9e6jo                         d$d       Z:e6jo                         d%d       Z;e6jo                   e8dg d            d&d       Z<e6jo                         d%d        Z= e9        e1j|                  j                  e<       e1j                  d        e       ZAeAj                  j                  d!        eCd"k(  r e	j                          yy)'z
For testing rapid updates of ScatterPlotItem under various conditions.

(Scatter plots are still rather slow to draw; expect about 20fps)
    N)FrameCounter)QtCore	QtWidgetsz--iterationsinfz*Number of iterations to run before exiting)defaulttypehelpF)
showHeaderScatterPlot
Parametersgroup)namer   i,  yc                     d}t        j                  d||       } | j                  dd      } t        d| j	                         j                          d      S )Nz\1 \2z(\w)([A-Z])_ r   z:    )resubreplace	translatetitlestrip)r   r   s     I/usr/lib/python3/dist-packages/pyqtgraph/examples/ScatterPlotSpeedTest.pyfmtr   /   sM    G66.'40D<<S!D]tzz|'9'9';&<E$BCC    )titleFormatnestparent
runOptions   d   )limitsstep)r"   )countsizec                    d}t         j                  j                  d| f|      t         j                  j                  dd| df      D cg c]  }t	        j
                  |       c}t         j                  j                  dd| df      D cg c]  }t	        j                  |       c}t         j                  j                  |       |z  j                  t              da	t	        j
                  d      t        d	   d<   |t        d
   d<   t	        j                  d      t        d   d<   d|z  }t        j                  | |g| |g       t                y c c}w c c}w )Nr!   2   )r%   scaler         )pospenbrushr%   wr,   r%   br-      )xRangeyRange)nprandomnormalrandintpgmkPenmkBrushastypeintdatapsetRangemkItem)r$   r%   r(   xbounds        r   mkDataAndItemrB   ;   s    Eyyb%[>%'YY%6%6q#qz%JKK)+):):1cE1:)NOA"**Q-O!!%(4/77<	D XXc]DKNDLOzz#DM!IEJJvuovuoJ>
H LOs   
EEc                     t        j                  dd| it               a|t        j                  d<   t
        j                          t
        j                  t               y )NpxModeuseCache )r7   ScatterPlotItemgetDataitemoptsr=   clearaddItem)rD   rE   s     r   r?   r?   P   s@     9V9wy9D$DIIjGGIIIdOr   c                     t         d   }t         d   }t         d   }t         d   }| s|d   }|d   }|d   }t        |t        dz     |t        dz   dz     |||      S )	Nr+   r,   r%   r-   r   r'   r    )r@   r   r,   r-   r%   )r<   dictptr)	randomizer+   r,   r%   r-   s        r   rH   rH   Y   sm    
u+C
u+C<DME!fAwa#cBh-3a2~#6CuSWXXr   list)New Item
Reuse ItemSimulate Pan/ZoomSimulate Hover)r   r"   )modec                    t        t              t        j                  kD  r)t        j                          t        j                          y | dk(  rt                n| dk(  rt        j                  di t                n| dk(  r)t        j                          t        j                          n| dk(  rt        j                         }|t        dz
  t!        |      z     }|t        t!        |      z     }t        j#                  |j%                                |j'                          |j)                  t*               t        dz  at,        j                          y )NrR   rS   rT   rU   r    rF   )nextiterations_counterargs
iterationstimerstopappquitr?   rI   setDatarH   viewTransformChangedupdatepointsrO   lenpointsAtr+   
resetBrushsetBrush
hoverBrushframecnt)rV   ptsoldnews       r   rb   rb   f   s     $//1


z		!wy!	$	$!!#	!	!kkm37c#h&'#C.!cggi Z 1HCOOr   c                 Z    | rt         j                          y t         j                          y )N)r\   r]   start)pauseds    r   	pausePlotrp      s    

r   c                 4    t         j                  | dd      S )Nz.1fz fps)r=   setTitle)fpss    r   <lambda>rt      s    1::S	6F+G r   __main__)i  
   )TT)F)rS   )E__doc__argparse	itertoolsr   numpyr3   utilsr   	pyqtgraphr7   pyqtgraph.parametertreeparametertreeptreepyqtgraph.Qtr   r   QCoreApplicationr   ArgumentParserparseradd_argumentfloat
parse_argsrZ   r$   rY   mkQAppr^   ParameterTreept	ParametercreateparamsetParameters
PlotWidgetr=   	QSplittersplitter	addWidgetsetSizeswidthshowr<   rG   rI   r9   rh   rO   QTimerr\   r   
Interactor
RunOptions
ON_CHANGED
interactordecoraterN   rB   r?   rH   rb   rp   timeoutconnectrn   ri   sigFpsUpdate__name__execrF   r   r   <module>r      s     	    ' *##--		 	 	 	"   NE%Lu	5   $Y__& biikUE*Im\$JQXY    BMMO9    2    1    3	" # 	rRZZ_
D U%%:J:J:U:U

 
q$ic
*	aY	  	"   	Y 	Y 	P
  2      f  A>     G HzBGGI r   