ó
í)pQc           @   s\  d  d l  Z  d e  j d <e  j d d d ƒe  j d d e ƒd  d l Z e j ƒ  Z d  d	 l Td  d l Z d  d l Z d  d
 l	 m
 Z
 m Z m Z m Z d  d l m Z m Z d  d l m Z d  d l m Z d Ge j ƒ  e GHd Z d Z e d d d d g ƒ Z d „  Z d „  Z d „  Z d „  Z d d „ Z d „  Z e d k rXe ƒ  n  d S(   iÿÿÿÿNt   Aggt   backendt   fontt   sizet   10t   textt   usetex(   t   *(   t
   list2arrayt   deconvolveExpt   save_advt	   saveconst(   t   fftconvolvet   gaussian(   t   interpolate(   t   Shots   including time: gÃõ(\Âµ?gš™™™™™Ù?i  iûþÿÿc          C   sÝ  t  ƒ  }  t j ƒ  } t |  d d t ƒj } t |  d d t ƒj } t |  d d t ƒj } t j ƒ  } t  ƒ  j } | d d d t ƒ\ } } | d d d t ƒ\ } } | d d	 d t ƒ\ } }	 | d d
 d t ƒ\ } }
 t j ƒ  } t |  | | | |	 |
 g f ƒ } |  d } |  d } |  d } |  d } |  d } |  d } |  d } |  d } |  d } | d k rt } n  | d k r–t } n  | d k r«t } n  t  ƒ  d } | | | | | | | | | | | f S(   Nt   toroidal_fieldt   copyt   loop_voltaget   plasma_currentt   anyt   mirnov_1t   return_channelt   mirnov_5t   mirnov_9t	   mirnov_13t   Tcdt   Tbdt   Tbt   Ucdt   Ubdt   Ubt   plasma_startt
   plasma_endt   plasmai    t   shotno(	   R   t   timet   arrayt   Falset   Tt   get_datat   TrueR   t   nan(   t   Datat   t0t   Btt   Uloopt   Ipt   gdt   dast   m1t   m5t   m9t   m13t   t1t   Papoucht
   CD_triggert
   BD_triggert
   Bt_triggert
   CD_voltaget
   BD_voltaget
   Bt_voltageR    R!   R"   t   shot(    (    sA   ../includes/diagnostics/Magnetic/0612PlasmaPosition_TO.ON/main.pyt   LoadData*   s<    	"








			c   
      C   s”   | | |  d |  d | d } t  | d | ƒ } | t | ƒ :} t | | d d ƒ} t | | | ƒ } t | |  | d d d d  ƒ}	 | |	 f S(	   Ni   i    i   i   t   modet   samet   leftt   right(   R   t   sumR   t   linspacet   interpt   None(
   t   tvect   vect   t_mint   t_maxt   nt   stdt	   gauss_wint
   vec_smootht   tvec_newt   vec_new(    (    sA   ../includes/diagnostics/Magnetic/0612PlasmaPosition_TO.ON/main.pyt   ResampleS   s    "	c         C   s8  t  | ƒ } |  d |  d | } | t | ƒ 8} t j | d | ƒ} t j | ƒ } d | d <d t d t d | | ƒ } t d | d t d | | ƒ } d | | d d d | }	 |	 |	 d :}	 t | ƒ }
 |
 |	 :}
 |
 d c | d :)t t j | |
 ƒ ƒ } | | d | d 8} | | 9} | S(	   Niÿÿÿÿi    t   di   iþÿÿÿy              ð?g      ð?i   (	   t   lent   meant   fftt   fftfreqt   expt   pit	   ones_liket   realt   ifft(   RH   t   sigt   taut   Nt   dtt   ft   fsigt   ifact   qt   fexpt   filtert	   integ_sig(    (    sA   ../includes/diagnostics/Magnetic/0612PlasmaPosition_TO.ON/main.pyt   CorrectRCcircuith   s"    
 %

c    -      C   sº  d d l  m }  m } t j ƒ  } t ƒ  \ } } } } } } }	 }
 } } } | d  d  … d f } | d  d  … d d  … f } | d } | d | d } | d k rE| d k rEt | | d  d  … d f d ƒ | d  d  … d f <t | d  d  … d d  … f d d d	 | d  d  … d d  … f ƒ| | d  d  … d d  … f <n t | d d d	 | ƒ| } d
 Gt j ƒ  | GHt | ƒ d } t t	 | d  d  … d f ƒ ƒ d k sÔt t	 | d  d  … d f ƒ ƒ d k rÝd GHd  St d d d d g ƒ } t | | d  d  … d f | d  d  … d f d d d d  ƒ} x8 t d ƒ D]* } | d  d  … | f c | | | 8<q@Wt } t } t	 t | d  d  … d f ƒ ƒ d k  r«t } n  t	 t | d  d  … d f ƒ ƒ d k  rÜt } n  t | | g ƒ } | t | | j f ƒ j | | | |
 |	 | ƒ \ } } } | s7| |	 g St d& ƒ } t d' ƒ } d } t d d t d ƒ } | t | ƒ t | d  d  … d f <| t | ƒ | d  d  … d f <t | | f ƒ } t | d  d  … d f | d  d  … d f | |
 | ƒ \ } }  | d  d  … d d  … f }! | d  d  … d f } t ƒ  }" xX t t |! d ƒ ƒ D]A } t | |! d  d  … | f | |
 | ƒ \ } }# |" j |# ƒ qPWt |" d t ƒj }" d }$ t d ƒ d }% |% t	 t t  ƒ ƒ 9}% |" t t  ƒ 9}" |  t! | ƒ t! | ƒ t! |" ƒ t! |% ƒ t! |  ƒ t! |$ ƒ ƒ \ }& }' }( }) }* }+ }, t" d |& |' d  d  … d f ƒ t" d |& |' d  d  … d f ƒ t" d |& |( ƒ t# d t |& |' d  d  … d f f ƒ j d d  ƒt# d! t |& |' d  d  … d f f ƒ j d d" ƒt# d t |& |( f ƒ j d d" ƒt$ d# t |) |+ d  d  … d f d$ d% ƒ ƒ t | | d  d  … d f | d  d  … d f ƒ } |& |' |) |* t! |+ ƒ t! | ƒ t! | ƒ |$ t! |! ƒ |% | |
 |	 |, | f S((   Niÿÿÿÿ(   t   CalcPlasmaPositiont   RemoveDriftsAutoi    i   iu,  i=.  g-Cëâ6?t   axist   outs   load data: i  s   all diagnostics failured gH¯¼šò×j¾gH¯¼šò×z¾g:Œ0âŽyU¾g:Œ0âŽyu¾RB   RC   i   gü©ñÒMbP?gš™™™™™©?g+‡ÙÎ·?g      ø?R   i
   gvƒôõ!„>s   results/R_positions   results/Z_positions   results/plasma_radiuss   results/R_position.txtt   fmts	   %.4e %.3es   results/Z_position.txts	   %.4e %.2es   results/residuumi   g    €„.A(   i   i   (   i   i   (%   t   PlasmaPositionRi   Rj   R$   R?   Rh   t   cumsumRT   RU   t   absRG   R%   RF   t   rangeR)   R&   t   mediant   nanmint   vstackR'   t   emptyRE   RY   t   cost   R_0t   sint   hstackRR   t   listR   t   appendt   onest   calibt   singleR
   t   savetxtR   (-   Ri   Rj   t   casR-   R.   R/   t   signalR8   R9   R:   R!   R    R"   R#   RH   R,   R`   t   reducet   Uprojt	   U_loop_dst   it   Bt_crosstalkt   Uloop_crosstalkt	   E_triggert   errt   AutoRemoveGrapht   rhot   zetat   r_dett   phi_dett   detectorPost   tvec_dst   Ip_dst   detectorSignalt   detectorSignal_dst   data_dst   IpDriftErrort   detectorDriftErrort   pos_tvect   positiont   radiust   residuumt   retrofitt   datat   chi2(    (    sA   ../includes/diagnostics/Magnetic/0612PlasmaPosition_TO.ON/main.pyt   get_position¡   sv    *
2aP>((	(	9
$ >	.
T  22"/2t   pngc   @         sQ  t  |  ƒ d k r! |  \ } } n3 |  \ } } } } } }	 }
 } } } } } } } } d d  l } d | j d <| j d d d ƒ| j d d	 t ƒd d  l j ‰  d
 ˆ  j f ‡  f d †  ƒ  Y} t j ƒ  } | \ } } } } ˆ  j	 d d  d dt d d d d d d ƒ } ˆ  j d d d d ƒ xåt | ƒ D]×\ } } | \ } } } } | j t  | ƒ d | d ƒ } | j j ˆ  j ƒ  ƒ | j j | ƒ  ƒ | j d d | d d d d d | j d  d ƒx6 | D]. }  |  \ }! }" }# ˆ  j | |! |# d! |" ƒqÇWx0 | D]( }$ |$ \ }% }# ˆ  j d" |% d# |# ƒ q Wx0 | D]( }& |& \ }' }# ˆ  j d$ |' d# |# ƒ q3Wˆ  j | ƒ ˆ  j d% ƒ ˆ  j | d& d  ƒ ˆ  j ƒ  \ }( }) xa | D]Y \ }* }+ ˆ  j |* |( f |+ |* |) |( ƒ }, |, j | j ƒ |, j d ƒ | j |, ƒ q¦Wq,W| j  ƒ  \ }- }. |- j! |, ƒ |. j! d' ƒ | j j ˆ  j ƒ  ƒ ˆ  j" d( ƒ ˆ  j# |- |. d) d* d+ t ƒ}/ |/ j$ ƒ  j d, ƒ ˆ  j% d- | d. d% ƒˆ  j& ƒ  d/ Gt j ƒ  | GHt  |  ƒ d k rÑd  St' | d ƒ }0 t j ƒ  }1 t j ƒ  } ˆ  j	 d d  d du d d d d d d ƒ } ˆ  j | d1 | d  d  … d f d2 d3 d4 d! d5 d6 d, ƒˆ  j | d1 | d  d  … d f d3 d7 d! d8 d6 d, ƒˆ  j d" t( d3 d# d9 d! d: ƒ ˆ  j d" t( d3 d# d9 ƒ ˆ  j# d) d; d+ t ƒ }/ |/ j$ ƒ  j d< ƒ ˆ  j | d d1 | d d1 ƒ ˆ  j d= d ƒ ˆ  j d> ƒ ˆ  j" d( ƒ ˆ  j d d? ƒ ˆ  j% d@ | d. d% ƒ| j) dA ƒ | j* d0 ƒ dB | _+ |/ j$ ƒ  j d ƒ ˆ  j% dC d. d% d dB ƒˆ  j& ƒ  t, | d  d  … d f d2 | d  d  … d f ƒ }, t- | d  d  … d f | d  d  … d f d2 ƒ }2 ˆ  j	 d d  d dv d d d d d d ƒ } | j d d d ƒ }3 ˆ  j | d1 |, d3 d4 d! dD d6 d, ƒ|3 j. dE ƒ |3 j/ d d ƒ |3 j0 | d d1 | d d1 ƒ |3 j1 d( ƒ |3 j j2 ƒ  |3 j  ƒ  \ }4 }5 | j d d d dF |3 dG t3 ƒ}6 |6 j j4 ƒ  |6 j j5 dH ƒ ˆ  j | d1 |2 d7 d! dI d6 d, ƒ|6 j. dJ ƒ |6 j0 | d d1 | d d1 ƒ |6 j/ t6 t6 ƒ |6 j  ƒ  \ }7 }8 t7 |4 |7 f ƒ }- t7 |5 |8 f ƒ }. |3 j# |- |. d) d; d+ t ƒ}/ |/ j$ ƒ  j d< ƒ ˆ  j d d? ƒ | j% dK | d. d% ƒˆ  j& ƒ  dL Gt j ƒ  | GHt j ƒ  } ˆ  j	 d d  d dw d d d d d d ƒ } ˆ  j8 | d1 | | d  d  … d f d dM d7 d! dN ƒˆ  j d" d ƒ ˆ  j d" dO ƒ ˆ  j t9 | d1 ƒ d0 dP dQ d ƒˆ  j t9 | d1 ƒ dR dS dQ d ƒˆ  j t9 | d1 ƒ d1 dT dQ d ƒˆ  j | d d1 | d d1 ƒ ˆ  j d dU ƒ ˆ  j" d( ƒ ˆ  j dV ƒ ˆ  j d d? ƒ ˆ  j# d) dW d+ t ƒ }/ |/ j$ ƒ  j d, ƒ ˆ  j% dX | d. d% ƒˆ  j& ƒ  dY Gt j ƒ  | GHt j ƒ  } t j ƒ  }9 t j ƒ  } t( t: | d  d  … d f d2 d | d  d  … d f d ƒ }: ˆ  j	 d d  d dx d d d d d d ƒ } ˆ  j | d1 |: d3 d4 d! dZ d6 d, ƒˆ  j | d d1 | d d1 ƒ ˆ  j d d ƒ ˆ  j d" t( d3 d# d9 d! d: ƒ ˆ  j d[ ƒ ˆ  j" d( ƒ ˆ  j# d) d\ d+ t ƒ }/ |/ j$ ƒ  j d< ƒ ˆ  j d d? ƒ ˆ  j% d] | d. d% ƒˆ  j& ƒ  d^ Gt j ƒ  | GHt j ƒ  } ˆ  j	 d d  d dy d d d d d d ƒ } ˆ  j |	 d_  d& |
 d_  | d` d! da ƒxf t; dA ƒ D]X } ˆ  j |	 d1 | d  d  … | f | | t< | d! db t= | dA d ƒ d6 d, ƒqïWˆ  j d$ | d& d# d9 ƒ ˆ  j d$ | d& d# d9 ƒ ˆ  j d" d d# d` ƒ ˆ  j" d( ƒ ˆ  j dc ƒ ˆ  j# d) dW d+ t ƒ }/ |/ j$ ƒ  j d< ƒ ˆ  j d d? ƒ ˆ  j d% ƒ ˆ  j | d& t> d& | dd dB ƒ ƒ ˆ  j d= d  ƒ ˆ  j% de | d. d% ƒdf Gt j ƒ  | GHˆ  j& dg ƒ t j ƒ  } d dh l? m@ }; ˆ  j	 d d  d dz d d d d d d ƒ } ˆ  j d d d d ƒ d{ }< tA | d  d  … d d  … f ƒ }= tB | d  d  … d d  … f ƒ }> xât; d |0 d ƒ D]Í} | j |0 d d | ƒ } | j j ˆ  j ƒ  ƒ | j j | ƒ  ƒ ˆ  j | d1 | d  d  … | f | d  d  … d f dM |< | dA d! db t= | d dA d ƒ dj ƒˆ  j | d1 | d  d  … | f | d  d  … d f dM |< | dA d` d! dk ƒ| j d d dl | | d d d d d | j ƒˆ  j# d) dW d+ t ƒ }/ |/ j$ ƒ  j d, ƒ |; | d  d  … | f | d  d  … d f dM dm ƒ d }? ˆ  j d |? ƒ ˆ  j db t= | d dA d ƒ dn ƒ qW| j |0 d d |0 d ƒ } ˆ  j | d1 tC t' | d ƒ ƒ d! do ƒˆ  j | d1 | d  d  … d f | d  d  … d f d9 d! dk ƒ| j d d dl | d d d d d d | j ƒˆ  j# d) dW d+ t ƒ }/ |/ j$ ƒ  j d, ƒ ˆ  j d d ƒ ˆ  j dp ƒ ˆ  j" d( ƒ ˆ  j% dq | d. d% ƒˆ  j& ƒ  dr Gt j ƒ  | GHt j ƒ  } ds t j ƒ  |1 GHd  S(|   Ni   iÿÿÿÿR    R   R   R   R   R   R   t   MyFormatterc              s   e  Z d ‡  f d  † Z RS(   c            s*   | d k r d Sˆ  j  j |  | | ƒ Sd  S(   Ni    t    (   t   ScalarFormattert   __call__(   t   selft   xt   pos(   t   plt(    sA   ../includes/diagnostics/Magnetic/0612PlasmaPosition_TO.ON/main.pyR£   +  s    N(   t   __name__t
   __module__RG   R£   (    (   R§   (    sA   ../includes/diagnostics/Magnetic/0612PlasmaPosition_TO.ON/main.pyR    *  s   t   numt   figsizei
   t   dpiiP   t	   facecolort   wt	   edgecolort   kt   hspacei    t   wspacei   gš™™™™™©?gš™™™™™¹?t   horizontalalignmentRB   t   verticalalignmentt   bottomt	   transformt   backgroundcolort   labelt   yt	   linestyleR¥   t   tightiè  s   Minimized intervals   t [ms]t   loct   bestt   fancyboxg      à?s   ./graphs/signal_correction.t   bbox_inchess1    plot graph from auto removing   of crosstalks   i   g     @@gš™™™™™Ù?id   t   bs   R-R$_0$t	   linewidtht   rt   Zs   --t   limiters
   lower leftgffffffæ?iöÿÿÿs   R,Z [cm]gš™™™™™É?s   graphs/plasma_position.i   i(   s   icon.pngs   radial coordinate $\rho$s   $\rho$ [cm]t   sharext   frameonRC   s   angular coordinate $\phi$s   $\phi$ [rad]s   graphs/plasma_position_polar.s   plot position g    €„.As   residuum of the fit/$I_p^2$g      Y@s   reliable fitt   colori2   s   considerable fits   poor fitg     ˆÃ@s   SSE/$I^2_p$ [kA$^{-2}$]s
   upper lefts   graphs/residuum.s   plot residuum s   Plasma radiuss   r [cm]s   upper rights   graphs/plasma_radius.s    plasma radius iÎÿÿÿs   -.s   $I_p$t   mcs   signal/estimated error [-]i   s   graphs/preprocesed_signal.s    plot raw datat   all(   t
   mquantilest   gs   /I$_p$R›   s   $\chi^2$ = %2.1fgffffffî?s   /$I_p$ [mT/kA]s   I$_p$/I$_p$s   $I_p/I_p$ [-]s   ./graphs/retrofit.s
   retrofit  s   graphs plotted in %g s(   i
   i
   (   i
   i   (   i
   i   (   i
   i   (   i
   i   (   i
   i   (   i
   i
   (   RÂ   RË   RÀ   R¹   (D   RT   t
   matplotlibt   rcParamst   rcR)   t   matplotlib.pyplott   pyplotR¢   R$   t   figureRG   t   subplots_adjustt	   enumeratet   add_subplott   xaxist   set_major_formattert   NullFormattert   yaxisR   t	   transAxest   plott   axhlinet   axvlinet   ylabelRk   t   xlimt   ylimt	   Rectanglet   set_clip_boxt   bboxt	   set_alphat
   add_artistt   get_legend_handles_labelsR{   t   xlabelt   legendt	   get_framet   savefigt   closeR   t   at   set_figwidtht   set_figheightR¬   t   hypott   arctan2t
   set_ylabelt   set_ylimt   set_xlimt
   set_xlabelt	   tick_leftR&   t
   tick_rightt   set_label_positionRY   Ry   t   semilogyRU   t   sqrtRq   R}   t   strt   mint   scipy.stats.mstatsRÊ   t   amint   amaxR|   (@   t   inputst   filetypeRŠ   R:   R—   R˜   Rš   R›   Rœ   RH   R/   R•   R’   R–   R    R!   R   RÌ   R    R6   t   framest   vlinest   hlinest
   rectanglest   figR…   t   framet   tt   curvest   ytextR   t   axt   curveR¹   R¸   Rº   t   hlinet   y0t   vlinet   x0t   y_mint   y_maxt   x_mint   x_maxRÂ   t   handlest   labelst   legt   n_detR,   t   phit   axLt   handlesLt   labelsLt   axRt   handlesRt   labelsRR€   R™   RÊ   t   ct	   y_min_limt	   y_max_limt   data_max(    (   R§   sA   ../includes/diagnostics/Magnetic/0612PlasmaPosition_TO.ON/main.pyt   graphs  sr   3
*.#
*;7  	
34*' !# 

*9### 
@*'  
*)V%&*""gQ0;+)A0
	c          C   sµ   x9 d d d g D]( }  t  j j |  ƒ s t  j |  ƒ q q Wt j d d k rh t ƒ  } t d | ƒ n  t j d d k r± t d ƒ } t  j	 d ƒ t
 | d	 ƒ t d
 d ƒ n  d  S(   NR"  t   resultst	   constantsi   t   analysisRl   t   plotss   out.npyRŸ   t   statusi    (   t   ost   patht   existst   mkdirt   syst   argvRž   t   savet   loadt   removeR"  R   (   R)  Rl   (    (    sA   ../includes/diagnostics/Magnetic/0612PlasmaPosition_TO.ON/main.pyt   maini  s    	t   __main__(    RÌ   RÍ   RÎ   R)   R$   R€   t   numpyR(  R,  t   pygolem_lite.modulesR   R	   R
   R   t   scipy.signalR   R   t   scipy.interpolateR   t   pygolem_liteR   Rë   Rw   R%   R}   R?   RR   Rh   Rž   R"  R1  R¨   (    (    (    sA   ../includes/diagnostics/Magnetic/0612PlasmaPosition_TO.ON/main.pyt   <module>
   s2   
"	)		9	yÿ P	