ó
Ä½Vc           @   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 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  | | ƒ } | t k r† | t | 9} | t | 9} n  | t 7} | | f S(   Ni   i   g+‡ÙÎ·¿i   i   (   t   hypott   at   R_0(   t   Bt   Rt   Zt   r(    (    s€   /golem/database/operation/tasks/Training/2016/120216_1144/123655/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 t | ƒ d ƒ ƒ | d )t | d ƒ | d <| S(   Ni    i   i   (   t   Bloop_analyticR
   t   sqrtt   sumt   squaret   abs(   t   xt   paramt   B_coilst   yt   BoutR   (    (    s€   /golem/database/operation/tasks/Training/2016/120216_1144/123655/diagnostics/Magnetic/0612PlasmaPosition_TO.ON/PlasmaPosition.pyt   fun7   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} d t d d d | f ƒ ‰ t | t | ˆ ˆ d f g ƒ } | d  k rPd ‰  n t | | ˆ d  d  … f ƒ ‰  t	 j	 ƒ  } ‡  ‡ ‡ ‡ ‡ ‡ ‡ ‡ 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(   R   R   t   datat   scalet   sigmat   tR   R   (    s€   /golem/database/operation/tasks/Training/2016/120216_1144/123655/diagnostics/Magnetic/0612PlasmaPosition_TO.ON/PlasmaPosition.pyt   <lambda>y   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   xrangeR   t   arrayR
   t   Nonet   dott   timeR   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   Tt   fitfunt   res(    (   R   R   R   R   R   R   R   R   s€   /golem/database/operation/tasks/Training/2016/120216_1144/123655/diagnostics/Magnetic/0612PlasmaPosition_TO.ON/PlasmaPosition.pyt	   MainCycleD   s@    "
#	$-		
	!(c         C   sf  d GHt  j  ƒ  } t |  ƒ }	 | t | d d ƒ}
 |
 d  d  … d f c d 9<|
 d  d  … d  d  d … f t |
 d  d  … d f |
 d  d  … d f ƒ d  d  … d  f }
 t | |
 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 ƒ  } t | ƒ } t | | d d d ƒ} t |  | d ƒ } g  t | d ƒ D]& } | | | | | | | | f ^ qï} | j t | ƒ } | j ƒ  | j ƒ  t ƒ  } t ƒ  } t ƒ  } x> | D]6 \ } } } | j | ƒ | j | ƒ | j | ƒ qc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   CalcPlasmaPositiont   axisi    i   iÿÿÿÿ.i   gš™™™™™Ù?i   s   position calculated in %g ss   chi2: s    total (   R-   t   lent   meanR   R+   t   hstackt   vstackR=   t   zerost   shapeR&   t   arangeR   R   R   t   array_splitt   ranget   mapR@   t   closet   joint   listt   appendR	   R   R   (   R2   t   detectorPost   detectorSignalt   detectorDriftErrort   Ipt   IpDriftErrort   extCoilsPosR4   t   t1t   nt   coil_perpendR   R   R   R3   t   it   n_cput   pt   data_splt   tvec_splt   inputst	   list_datat   list_positiont   list_retrofitt   list_reziduumR7   R8   R9   t   radiust   chi2(    (    s€   /golem/database/operation/tasks/Training/2016/120216_1144/123655/diagnostics/Magnetic/0612PlasmaPosition_TO.ON/PlasmaPosition.pyRA   ˜   sJ    \	"W	=

			@"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  | ƒ } | r| } | d 7} t | | d  d  … d f | d  d  … d f d d d d  ƒ} n  | rq| } | 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
 | ƒ r-| } | } n  t t | | ƒ ƒ } t t | | ƒ ƒ } t t t | | ƒ ƒ | ƒ } t t t | | ƒ ƒ | ƒ } t t | | ƒ | ƒ } t | t d | ƒ | ƒ } t | | ƒ } t | | ƒ }  t | | ƒ }! | | |  }" t | | f ƒ }# | r9| |# d  d  … | f <n  | rX| |# d  d  … | f <n  |
 rw| |# 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  |
 ri|/ 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  |
 r1|5 d! d | t |% | d  d  … f ƒ d 7}5 n  | rb|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   maxRD   t   difft   intt   interpR+   R   t   fluket   isnant   argminR   RK   RG   t   cumsumt   onesR   R,   R   RC   R   RO   RP   RI   t   singleR/   t   opent   writeRM   RF   R=   (7   t   signalt   BtRj   t   plasma_startt
   plasma_endt
   Bt_triggert	   E_triggert   Bt_crosstalkt   Uloop_crosstalkt   Stabil_crosstalkt   Trafo_effectR6   t   indext   t_maxt   t_mint   dtR2   RX   t   i_Uloopt   i_Btt   t_expt
   i_Traf_rest   Bt_convR8   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€   /golem/database/operation/tasks/Training/2016/120216_1144/123655/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   syst   MagFieldCalcR	   R
   R   R   R@   R+   RA   t   Truet   FalseR©   (    (    (    s€   /golem/database/operation/tasks/Training/2016/120216_1144/123655/diagnostics/Magnetic/0612PlasmaPosition_TO.ON/PlasmaPosition.pyt   <module>   s   

			UH