ó
ÐëQc           @   sÁ   d  d l  Z  d  d l Td  d l m Z m Z d  d l m Z d  d l m Z m	 Z	 m
 Z
 d  d l m Z d  d l Td Z d Z d	 „  Z d
 „  Z d „  Z d d d „ Z e e e e d „ Z d S(   iÿÿÿÿN(   t   *(   t   normt   lstsq(   t   minimize(   t   Processt   Poolt	   cpu_count(   t   deconvolveExpgÃõ(\Âµ?gš™™™™™Ù?c         C   s£   |  d |  d |  d |  d d } |  d |  d |  d |  d d } t  | d | d ƒ } | t k r | t | 9} | t | 9} n  | t 7} | | f S(   Ni   i   g+‡ÙÎ·¿i   i   (   t   sqrtt   at   R_0(   t   Bt   Rt   Zt   r(    (    s‹   /srv/www/svoboda/golem/operation/tasks/Guests/2012/Marco/171012_0810/143533/diagnostics/Magnetic/0612PlasmaPosition_TO.ON/PlasmaPosition.pyt   directConductorApprox(   s    &&
c         C   s«   t  |  d  d  … d f |  d  d  … d f | d t | d | ƒ | d } | | 7} | |  d  d  … d d  … f 9} t t | d d ƒ ƒ | d )t | d ƒ | d <| S(   Ni    i   i   (   t   Bloop_analyticR
   R   t   sumt   abs(   t   xt   paramt   B_coilst   yt   BoutR   (    (    s‹   /srv/www/svoboda/golem/operation/tasks/Guests/2012/Marco/171012_0810/143533/diagnostics/Magnetic/0612PlasmaPosition_TO.ON/PlasmaPosition.pyt   fun4   s    L
 c      
      s‰  |  \ } ‰ ‰ ‰ } } t  ˆ d ƒ } t  ˆ d ƒ } t | d f ƒ }	 t | | f ƒ }
 t | ƒ } t ˆ d  d  … d f ƒ } d } t t  ˆ d ƒ d ƒ ‰ t t  ˆ d ƒ d f ƒ ‰  x½t | ƒ D]¯‰ t ˆ ˆ d  d  … f ƒ \ } } | d 7} t d d d | f ƒ ‰ t | t | ˆ ˆ d f g ƒ } | d  k rLd ‰ n t | | ˆ d  d  … f ƒ ‰ ‡ ‡ ‡ ‡ ‡ ‡ ‡  ‡ f d †  } t	 | | ˆ d d d	 i d
 d 6d d 6ƒ} | j
 sò| | j (d | _ d Gt | ˆ ƒ Gd GHn | j ˆ } | j ˆ d  |	 ˆ d  d  … f <|	 ˆ d f c t 7<| | j 7} t ˆ | ˆ ˆ ˆ  ƒ |
 ˆ d  d  … f <| j | ˆ <qÉ W|	 |
 | f S(   Ni    i   i   g{®Gáz¤?g      à?c            sZ   t  ˆ ˆ d  d  … f t ˆ |  ˆ  ˆ ˆ ˆ ƒ ˆ ƒ d t  |  ˆ  d  t d ƒ d S(   Ni   g      ð?i2   (   R   R   R	   (   t   params(   t   scalet   sigmaR   R   t   tR   R   t   data(    s‹   /srv/www/svoboda/golem/operation/tasks/Guests/2012/Marco/171012_0810/143533/diagnostics/Magnetic/0612PlasmaPosition_TO.ON/PlasmaPosition.pyt   <lambda>X   s    t   methods   Nelder-Meadt   optionsg-Cëâ6?t   xtolg{®Gáz„?t   ftolg    €„.As    position calculation failure in t   s(   t   sizet   emptyt   mediant   arangeR   t   arrayR
   t   Nonet   dotR   t   successR   R   t   strt   nfev(   t   .0t   tvecR   R   R   t   Bextt   extCoilsCurrt   Nt   n_dett   positiont   retrofitt   reziduumt   I0t   stepsR   R   t   params0t   fitfunt   res(    (   R   R   R   R   R   R   R   R   s‹   /srv/www/svoboda/golem/operation/tasks/Guests/2012/Marco/171012_0810/143533/diagnostics/Magnetic/0612PlasmaPosition_TO.ON/PlasmaPosition.pyt	   MainCycle?   s>    "
#	$-	
	!(c      	   C   sJ  d GHt  j  ƒ  } t t | ƒ ƒ }	 xY t | ƒ D]K \ }
 } | d | d t f } | t | ƒ :} | |	 |
 d  d  … f <q0 Wt | |	 f ƒ } t | | j f ƒ j } t | | f ƒ } | d  k sÓ | d  k rÜ d  } n• t t | ƒ t
 | d ƒ f ƒ } xp t t
 | d ƒ ƒ D]Y }
 t | d  d  … d f | d  d  … d f | |
 d f | |
 d f ƒ | d |
 f <qWt
 | d ƒ } t ƒ  } t | ƒ } t t | ƒ | d ƒ } g  t | d ƒ D]: }
 |  | |
 | | |
 d  d  … f | | | | f ^ q¿} | j t | ƒ } | j ƒ  | j ƒ  t ƒ  } t ƒ  } t ƒ  } x> | D]6 \ } } } | j | ƒ | j | ƒ | j | ƒ qGWt | ƒ } t | ƒ } t | ƒ } t t | d  d  … d f d d | d  d  … d f d ƒ } t | | d d d ƒ| d } d	 t  j  ƒ  | GHd
 G| Gd Gt | ƒ GH|  | | | | | | f S(   Nt   CalcPlasmaPositioni   i    .i   gš™™™™™Ù?i   t   axiss   position calculated in %g ss   chi2: s    total (   t   timet   zerost   shapet	   enumerateR
   R   t   hstackt   vstackt   TR)   R$   R'   R   R   R   t   array_splitt   ranget   mapR<   t   closet   joint   listt   appendR	   R   t   mean(   R/   t   detectorPost   detectorSignalt   detectorDriftErrort   Ipt   IpDriftErrort   extCoilsPosR1   t   t1t   coil_perpendt   it   det_xt   ortoVecR   R   R   R0   t   nt   n_cput   pt	   split_indt   inputst	   list_datat   list_positiont   list_retrofitt   list_reziduumR4   R5   R6   t   radiust   chi2(    (    s‹   /srv/www/svoboda/golem/operation/tasks/Guests/2012/Marco/171012_0810/143533/diagnostics/Magnetic/0612PlasmaPosition_TO.ON/PlasmaPosition.pyR=   p   sL    	"W	Q

			@"c   7   
   C   sª  t  |  d ƒ d } d } t | d% | d& |  d' ƒ } t | d( | d) |  d* ƒ } t t |  d  d  … d f ƒ ƒ } |  d  t | | d ƒ … d  d  … f }  |  d  d  … d f } t  |  d ƒ } | r| } | d 7} t | | d  d  … d f | d  d  … d f d d d d  ƒ} n  | rt| } | d 7} t | | d  d  … d f | d  d  … d f d d d d  ƒ} n  |
 r²d } | } t | | | d d ƒ \ } } | d 7} n  |	 r	| } | d 7} t | t	 d  d  … d f t	 d  d  … d f d d d d  ƒ} n  t
 | ƒ s!t
 | ƒ r0| } | } n  t t | | ƒ ƒ } t t | | ƒ ƒ } t t t | | ƒ ƒ | ƒ } t t t | | ƒ ƒ | ƒ } t t | | ƒ | ƒ } t | t d | ƒ | ƒ } t | | ƒ } t | | ƒ }  t | | ƒ }! | | |  }" t | | f ƒ }# | r<| |# d  d  … | f <n  | r[| |# d  d  … | f <n  |
 rz| |# d  d  … | f <n  |	 r™t	 |# d  d  … | f <n  t | ƒ }$ d |$ | <t |$ d	 |$ ƒ|# d  d  … d f <t | ƒ }$ d |$ | <t |$ d	 |$ ƒ|# d  d  … d f <t |# |" d  d  … f |  |" d d  … f ƒ \ }% }& }' }( |  d  d  … d d  … f t |# |% ƒ }) t |) |" d  d  … f d d ƒ }& |& d
 t |" ƒ 9}& t |& ƒ }& t ƒ  }* t ƒ  }+ t ƒ  }, t ƒ  }- |+ j | d d f ƒ |+ j | d d f ƒ |, j d+ ƒ xït | ƒ D]á}. t ƒ  }/ |/ j t d |  d  d  … |. d f ƒ d d f ƒ |/ j t d |) d  d  … |. f ƒ d d f ƒ |/ j t d t |# d  d  … d  d … f |% d  d … |. f ƒ ƒ d d f ƒ | r%|/ j t d |# d  d  … | f |% | |. f ƒ d d f ƒ n  |
 rl|/ j t d |# d  d  … | f |% | |. f ƒ d d f ƒ n  | r³|/ j t d |# d  d  … | f |% | |. f ƒ d d f ƒ n  |* j d | |/ d t |. d d ƒ d d |& |. f ƒ | | |  f }0 qWx^ |0 D]V }1 t |1 ƒ d k r&qn  | |1 d d | |1 d d }2 }3 |- j |2 |3 f ƒ qW|* |+ |, |- f }4 d }5 |5 d t |% d d  d  … f ƒ d 7}5 |5 d t |% d d  d  … f ƒ d 7}5 | rû|5 d  t |% | d  d  … f ƒ d 7}5 n  |
 r4|5 d! d | t |% | d  d  … f ƒ d 7}5 n  | re|5 d" t |% | d  d  … f ƒ d 7}5 n  t d# d$ ƒ }6 |6 j |5 ƒ |6 j ƒ  t | |) j f ƒ j |& |4 f S(,   Ni   i   iÿÿÿÿi    t   leftt   rightg¡g³êsµ•?gü©ñÒMb@?t   outg  4&õkCiè  s   --s   -.g    €„.As   Original signals   Corrected signals   k-s   Integration offsett   -s   Toroidal mag. fields   Trafo mag. fieldt   Uloopt   mci   s    [ mV$\cdot$ms]s   $\chi^2$ = %2.1fg     @@s   mc1	mc5	mc9	mc13
s   drift1 [V] s   
s   drift2 [V] s   Bt crosstalk [V/T]	s-   Trafo crosstalk (respons time %1.1f ms)[V/T]	s!   Uloop (residual) crosstalk [V/V]	s   ./constants/projections.txtt   w(   iÿÿÿÿi    (   iÿÿÿÿi    (   iÿÿÿÿi    (   i    i    (   i    i    (   i    i    (   i    s   -.(    R$   t   mint   maxRM   t   difft   intt   interpR)   R   t   fluket   isnant   argminR   RG   R@   t   cumsumt   onesR   R*   R   t   lenR   RK   RL   R'   t   singleR,   t   opent   writeRI   RD   RE   (7   t   signalt   BtRh   t   plasma_startt
   plasma_endt
   Bt_triggert	   E_triggert   Bt_crosstalkt   Uloop_crosstalkt   Stabil_crosstalkt   Trafo_effectR3   t   indext   t_maxt   t_mint   dtR/   RY   t   i_Uloopt   i_Btt   t_expt
   i_Traf_rest   Bt_convR5   t   i_Stt   Bt_trigger_nt   E_trigger_nt   plasma_start_nt   plasma_end_nt	   interval0t	   interval1t	   interval2t	   interval3t   interval_plasmat   intervalt	   mainBasist   offsetR   R;   t   rankR#   t   corr_signalt   framest   vlinest   hlinest
   rectanglest   i_dett   curvest	   intervalst   intert   x_mint   x_maxt   AutoRemoveGrapht	   proj_filet   f(    (    s‹   /srv/www/svoboda/golem/operation/tasks/Guests/2012/Marco/171012_0810/143533/diagnostics/Magnetic/0612PlasmaPosition_TO.ON/PlasmaPosition.pyt   RemoveDriftsAuto¶   sÂ    "*
A
A
A	
"
";)#					40OAAA;%((+3+
(   R?   t   numpyt   numpy.linalgR   R   t   scipy.optimizeR   t   multiprocessingR   R   R   t   pygolem_lite.modulesR   t   MagFieldCalcR	   R
   R   R   R<   R)   R=   t   Truet   FalseR¨   (    (    (    s‹   /srv/www/svoboda/golem/operation/tasks/Guests/2012/Marco/171012_0810/143533/diagnostics/Magnetic/0612PlasmaPosition_TO.ON/PlasmaPosition.pyt   <module>   s   

			1F