Chronicle/TimeLine/0709FirstPlasma/Shot4/rsrc/includes/analysis/Guests/1012MarcoM.ON/main.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import matplotlib 
matplotlib.rcParams['backend'] = 'Agg'
matplotlib.rc('font',  size='10')
matplotlib.rc('text', usetex=True)  # FIXME !! nicer but slower !!!
import matplotlib.pyplot as plt

from numpy import *
import os
import sys
from pygolem_lite.modules import list2array, multiplot, get_data
from pygolem_lite import Shot, saveconst, save_adv,load_adv


channels = [2,1]


  
def LoadData():
  
  
    Data = Shot()


    tvec,dataTe = Data['niturbo']
    dataTe = dataTe[:,channels]

    Bt_trigger = Data['Tb']
    plasma_start = Data['plasma_start']
    plasma_end = Data['plasma_end']
    plasma = Data['plasma']
  

    return tvec, dataTe, Bt_trigger,plasma_end,plasma_start, plasma


    
def Calc_Temperature(file_type):
   
    
    tvec, dataTe,Bt_trigger,plasma_end,plasma_start, plasma  = LoadData()

    if not plasma:
	print "============= no plasma ==============="
	return
    

    
    offset_interv = (tvec > Bt_trigger)*(tvec < plasma_start)
    offset = median(dataTe[offset_interv,:], axis = 0)
    dataTe[:,0]-=offset[0]
    dataTe[:,1]-=offset[1]
    dataTe *= 100    # I dont know why... 
    dU = dataTe[:,0]-dataTe[:,1]
    Te = dU/log(2);   #result of the double (triple) probe theory
    
    plasma_interv = (tvec > plasma_start)*(tvec < plasma_end)
    Te[~plasma_interv] = 0
    Te[Te < 0] = 0
    
    save_adv('Te_probe', tvec, Te)
    save_adv('dU_probe', tvec, dU)
    save_adv('dataTe', tvec, dataTe)


    class MyFormatter(plt.ScalarFormatter): 
	def __call__(self, x, pos=None): 
	    if pos==0: 
		return '' 
	    else: return plt.ScalarFormatter.__call__(self, x, pos)  
	
	
	
    fig = plt.figure(num=None, figsize=(6, 8), dpi=80, facecolor='w', edgecolor='k')
    plt.subplots_adjust(hspace=0, wspace = 0)
    ax = fig.add_subplot(2,1,1)
    ax.xaxis.set_major_formatter( plt.NullFormatter() )
    ax.yaxis.set_major_formatter( MyFormatter() )
    plt.plot(tvec*1e3,    dU,   label = '$U_1-U_2$ ')
    plt.plot(tvec*1e3,   dataTe[:,0] ,   label = '$U_1$ ')
    plt.plot(tvec*1e3,   dataTe[:,1] ,   label = '$U_2$ ')
    leg = plt.legend(loc='upper left', fancybox=True)
    leg.get_frame().set_alpha(0.5)
    plt.ylim(0, None)
    plt.xlim(plasma_start*1e3, plasma_end*1e3)

    plt.ylabel('U [V]')
    
    
    ax = fig.add_subplot(2,1,2)
    plt.plot(tvec*1e3,    Te,   label = 'Probe $T_e$ ')

    leg = plt.legend(loc='upper left', fancybox=True)
    leg.get_frame().set_alpha(0.5)
    plt.ylim(0,None)
    plt.xlim(plasma_start*1e3, plasma_end*1e3)

    plt.ylabel('[eV]')
    plt.xlabel('t [ms]')
    plt.savefig('./Te_new.'+file_type,bbox_inches='tight')

    plt.close()
    
    
    

    title = "Temperature"
    out = [get_data('dU_probe', '$U_1-U_2$ ' , "U [V]"),    # , smoothing = 1e3), 
	    get_data('dataTe', ['$U_1$ ', '$U_2$ '] , "U [V]" ),
	    get_data('Te', '$Probe Te$ ' , "T [eV]" ) ]

    multiplot(out, title , 'temperature', (10,len(out)*2), 100, 'vertical', file_type)

def main():

    if sys.argv[1] ==  "plots":
	Calc_Temperature('png')
	saveconst('status', 0)



if __name__ == "__main__":
    main()