#!/usr/bin/python2 # -*- coding: utf-8 -*- """ CREATED: 7/2012 AUTHOR: MICHAL ODSTRČIL """ import matplotlib matplotlib.rcParams['backend'] = 'Agg' matplotlib.rc('font', size='10') matplotlib.rc('text', usetex=True) # FIXME !! nicer but slower !!! import pygolem_lite from pygolem_lite import Shot from numpy import * from pygolem_lite.config import * from pygolem_lite.modules import * from pygolem_lite.sql import * from matplotlib.pyplot import * import time from shutil import copy, move import os from scipy.interpolate import interp1d import re #element_names = ['H','O','He','C','N','M1','MIV'] #element_signs = ['*','o','D','+','x','.','s'] element_names = ['C','O','N'] element_signs = ['*','o','D'] #element_names = ['H','O','C','N','M1'] #element_signs = ['*','o','+','x','.'] def analysis(): print "==========analysis" shot_num = Shot().shot_num N = 500 # 3000# # !!!!!! number of shots in history !!!!! shots = arange(N) + shot_num - N+1 start_shots = get_session_list(shots)[1] save("start_shots", start_shots) print "start_shots saved !!!" save_hist('pressure_initial', 'pressure_all', shots) save_hist('electron_temperature_max', "temp_max_all", shots) save_hist('temperature_mean', 'temp_all', shots) #try: for i in element_names: save_hist('spectrometr:mean_relative_density_'+i, 'impur_dens_'+i, shots) #except Exception,e: #print str(e) save_hist('spectrometr:mean_temperature', 'impur_temp_all', shots) #save_hist('electron_confinement_t98', 'tau_all',shots) #save_hist('electron_density_mean', "dens_all", shots) save_hist('noise_level', "noise_all", shots) #photo = save_hist('photodiode_mean', "photo_all", shots) save_hist('plasma_current_mean', "current_all", shots) #uloop = save_hist('loop_voltage_mean', "uloop_all", shots) #save_hist('Komora/Aktual_DoutnavyVyboj', "glow_dis_all", shots) #save_hist('Komora/Aktual_VypekaniKomory', "baking_all", shots) #save_hist('Komora/Aktual_VypekaniKrizu', "baking_cross_all", shots) save_hist('pressure_chamber', "pipes_pressure_all", shots) #shots_R, data_R = save_hist('chamber_resistance', "chamber_resistance_all", shots[shots>9500]) #shots_R0, data_R0 = save_hist('chamber_resistance_old', "chamber_resistance_old_all", shots[shots>9500]) #shots_P, data_P = save_hist('plasma', "plasma_all", shots) #save_hist('chamber_temperature', "ch_temp_all", shots) #ind = in1d(shots_R, shots_P[data_P == 1]) #savetxt('chamber_resistance_all_plasma', array([shots[ind], data_R[ind]]).T, line_format="%g") #savetxt('chamber_resistance_all_noplasma', array([shots[~ind], data_R[~ind]]).T, line_format="%g") #ind = in1d(shots_R0, shots_P[data_P == 1]) #savetxt('chamber_resistance_old_all_plasma', array([shots[ind], data_R0[ind]]).T, line_format="%g") #savetxt('chamber_resistance_old_all_noplasma', array([shots[~ind], data_R0[~ind]]).T, line_format="%g") save_hist('spectrometr:mean_radiation_power', "rad_power_all", shots) save_hist('input_power_plasma_mean', "input_power_all", shots) def save_hist(diagn, name, shot_range): t = time.time() N = len(shot_range) #print diagn data = load_data(diagn, shot_range) #print data.keys() data_final = array([data['shot'], data[diagn.lower()]]).T savetxt(name, data_final , fmt="%g") #print "time", time.time() - t #return shots, data def plot_data(file_type): print "=============plot data " start_shots = load("start_shots.npy") vl = [ start_shots[i][0] for i in range(len(start_shots)) ] an = [ {'text':start_shots[i][1] , 'pos':[start_shots[i][0], None], 'angle':270, 'fontsize':"small" } for i in range(len(start_shots)) ] #print "vlines", vl #print "annotate", an ylim = [0,None] plot_size = 12# max(12, (int(start_shots[-1][0]) - int(start_shots[0][0]))/50); # width of the plots params = dict(xlabel="Shot number", tvec_rescale= 1, plot_limits= False, vlines = vl, annotate = an, ygrid = True, markersize=5) print_params = dict( figsize=(plot_size,4), dpi=100, file_type=file_type, legend_loc = 'upper left' ) #print "plot_size", plot_size, int(start_shots[-1][0]) , int(start_shots[0][0]) #d = get_data('temp_all', 'Mean temperature', 'T [eV]' , ylim = [0,75] , tvec_rescale= 1, plot_limits= False, line_format='.', #xlabel="Shot number", vlines = vl, annotate = an, ygrid = True, markersize=5) #paralel_multiplot(d, 'Temperature evolution', 'temp', **print_params) ###get_data('temp_max_all', 'Max temperature', 'T [eV]' , ylim = [0,75] , tvec_rescale= 1, plot_limits= False, line_format='.', xlabel="Shot number", vlines = vl, annotate = an, ygrid = True, markersize=5) ###get_data('impur_temp_all', 'Specrometr temperature', 'T [eV]', tvec_rescale= 1, plot_limits= False, line_format='.', xlabel="Shot number", vlines = vl, annotate = an, ygrid = True, ylim = [0,75], markersize=5 ) #exit() try: data1 = [[get_data('temp_all', 'Mean temperature', 'T [eV]' , ylim = [0,70] , line_format='.', **params), get_data('temp_max_all', 'Max temperature', 'T [eV]' , ylim = [0,70] , line_format='.', **params), get_data('impur_temp_all', 'Specrometr temperature', 'T [eV]', ylim = [0,70], line_format='.',**params) ]] paralel_multiplot(data1, 'Temperature evolution', 'temp', **print_params) except Exception, e: print str(e) #exit() try: # data2 = [[get_data('pressure_all', 'Init pressure', 'P [mPa]' , ylim = [0.1,20] , yscale="log",line_format='g.', **params), get_data('pipes_pressure_all', 'Pipes pressure', 'P [mPa]' , ylim = [0.1,20] , yscale="log", data_rescale = 1e-3 , line_format='b.', **params)]] paralel_multiplot(data2, 'Pressure evolution', 'pressure', **print_params) except Exception, e: print str(e) #print "data1", data1 #exit() #try: #data9 = [[get_data('glow_dis_all', 'Glow discharge', 'ON/OFF' , ylim = [0,1.1] , tvec_rescale= 1, plot_limits= False, line_format='r-', xlabel="Shot number", vlines = vl, annotate = an, markersize=5), #get_data('baking_all', 'Chamber baking', 'ON/OFF' , ylim = [0,1.1] , tvec_rescale= 1, plot_limits= False, line_format='g-', xlabel="Shot number", vlines = vl, annotate = an, markersize=5), #get_data('baking_cross_all', 'Cross baking', 'ON/OFF' , ylim = [0,1.1] , tvec_rescale= 1, plot_limits= False, line_format='b-', xlabel="Shot number", vlines = vl, annotate = an, markersize=5)]] #paralel_multiplot(data9, 'Chamber conditioning', 'vacuum', **print_params) #except Exception, e: #print str(e) #try: #data3 = get_data('tau_all', 'Confinement', 'tau [s]' , ylim = ylim , tvec_rescale= 1, plot_limits= False, line_format='.', xlabel="Shot number", vlines = vl, annotate = an, ygrid = True, markersize=5) #paralel_multiplot(data3, 'Confinement evolution', 'tau', **print_params) #except Exception, e: #print str(e) #try: #data4 = get_data('dens_all', 'Density', 'n$_{e}$' , ylim = ylim , tvec_rescale= 1, plot_limits= False, line_format='.', xlabel="Shot number", vlines = vl, annotate = an, ygrid = True, markersize=5) #paralel_multiplot(data4, 'Density evolution', 'dens', **print_params) #except Exception, e: #print str(e) #try: #data5 = get_data('photo_all', 'Mean emiss', 'U [V]' , ylim = ylim , tvec_rescale= 1, plot_limits= False, line_format='.', xlabel="Shot number", vlines = vl, annotate = an, ygrid = True) #paralel_multiplot(data5, 'Photodiode evolution', 'emiss', **print_params) #except: #pass #try: #data7 = get_data('uloop_all', 'Loop voltage', 'U [V]' , ylim = ylim , tvec_rescale= 1, plot_limits= False, line_format='.', xlabel="Shot number", vlines = vl, annotate = an, ygrid = True) #paralel_multiplot(data7, 'Loop voltage evolution', 'uloop', **print_params) #except: #pass try: data8 = get_data('noise_all', 'Noise', 'U [V]' , ylim = ylim , yscale="log", line_format='.', **params ) multiplot(data8, 'Noise evolution', 'noise', **print_params) except Exception, e: print str(e) #try: #data11 = [[get_data('chamber_resistance_all_plasma', 'New-plasma', 'R [Ohm]' , tvec_rescale= 1, plot_limits= False, line_format='.', xlabel="Shot number", vlines = vl, annotate = an, ygrid = True, yscale='log', markersize=5), get_data('chamber_resistance_all_noplasma', 'New-noplasma', 'R [Ohm]' , tvec_rescale= 1, plot_limits= False, line_format='.', xlabel="Shot number", vlines = vl, annotate = an, ygrid = True, yscale='log', markersize=5) ], #[get_data('chamber_resistance_old_all_plasma', 'Old-plasma', 'R [Ohm]' , tvec_rescale= 1, plot_limits= False, line_format='.', xlabel="Shot number", vlines = vl, annotate = an, ygrid = True, yscale='log', markersize=5), get_data('chamber_resistance_old_all_noplasma', 'Old-noplasma', 'R [Ohm]' , tvec_rescale= 1, plot_limits= False, line_format='.', xlabel="Shot number", vlines = vl, annotate = an, ygrid = True, yscale='log', markersize=5) ]] #paralel_multiplot(data11, 'Chamber resistance', 'resistance', (plot_size,6), 100, 'vertical', file_type) #except Exception, e: #print str(e) #try: #data8 = get_data('ch_temp_all', 'Chamber temperature', 'T [C]' , ylim = ylim , tvec_rescale= 1, plot_limits= False, line_format='xr', xlabel="Shot number", vlines = vl, annotate = an, ygrid = True, markersize=5) #paralel_multiplot(data8, 'Chamber temperature', 'ch_temp', **print_params) #except Exception, e: #print str(e) try: data8 = get_data('current_all', '', 'I [kA]' , ylim = ylim , data_rescale=1e-3,line_format='.', **params) multiplot(data8, 'Plasma Current' , 'current', **print_params) except Exception, e: print str(e) try: data9 = [[ get_data('impur_dens_'+element_names[i], 'n '+element_names[i], 'n [a.u.]' , tvec_rescale= 1, plot_limits= False, xlabel="Shot number", vlines = vl, annotate = an, ygrid = True, yscale = 'log', ylim=[1e-3, 5], line_format=element_signs[i], markersize=4 ) for i in range(len(element_names)) ]] paralel_multiplot(data9, 'Relative impurity density', 'impurity', **print_params) except Exception, e: print str(e) try: data9 = [[ get_data('rad_power_all', 'Output power spectrometer', 'P [kW]' , data_rescale=1e-3, ylim=[0, 20],line_format='g.', **params), get_data('input_power_all', 'Input ohmic power', 'P [kW]' , data_rescale=1e-3, ylim=[0, 20 ], line_format='r+', **params ) ]] paralel_multiplot(data9, 'Mean power balance', 'rad_power', **print_params) except Exception, e: print str(e) #try: #data10 = get_data('impur_temp_all', 'Specrometr temperature', 'T [eV]', tvec_rescale= 1, plot_limits= False, line_format='.', xlabel="Shot number", vlines = vl, annotate = an, ygrid = True, ylim=ylim ) #paralel_multiplot(data10, 'Specrometr temperature', 'impur_temp', **print_params) #except: #print str(e) #os.system('convert -resize 150x120\! total_plot.png icon.png') #print "===== plotting done ===== " #data = data_1 + data_2 +data_3 + data_4 paralel_multiplot((data1 if 'data1' in locals() else []) + (data2 if 'data2' in locals() else []), "" , 'icon', (4,3), 40) def main(): #if sys.argv[1] == "analysis": #exit() if sys.argv[1] == "plots": analysis() plot_data('png') saveconst('status', 0) print "==================== saveconst('status', 0) =" print "==="*20, "generate svgz !!!" plot_data('svgz') saveconst('status', 0) if __name__ == "__main__": main()