Diagnostics/ParticleFlux/PetiProbe/Analysis/miniproject_TV@J_source_code.py

'''Module for loading data.'''

import numpy as np
from urllib.request import urlopen
import pylab as plt 

#plasma_start
#plasma_end
    
    





def get_data(name, shot):
    '''Return a scalar value of diagnostic name in shot.'''
    url = 'http://golem.fjfi.cvut.cz/utils/data/%i/%s' % (shot, name)
    f = urlopen(url)
    data = np.loadtxt(f)
    f.close()
    return np.transpose(data)
    
    
def shot_time(shot):
    '''Return edges of time of shot in ms.'''
    t1 = float(get_data('plasma_start', shot))*1000
    t2 = float(get_data('plasma_end', shot))*1000
    return t1, t2

def vykreslit_obrazek(shot):
    t, data = get_data("bpp",shot)
    tlp, datalp = get_data("lp",shot)
    datalp=datalp*100
    data=data*100
    plt.plot(t*1000,datalp)
    t1,t2 = shot_time(shot)
    plt.plot(t*1000,data)
    plt.xlim(t1,t2)
    
vystrely=[30885,30886,30887,30888,30890,30891,30892,30893,30894,30895,30896,30897,30898]
tunelsonda=[30956,30957,30971,30959,30960,30961,30970,30968]
shots=[30899,30900,30901,30902,30903,30904,30905,30906,30907,30908,30910,30911]
r= [10, 9.5, 9, 8.5, 8, 7.5, 7, 6.5, 6, 5.5, 5, 4.5, 4.2]
l=[10,9.5,9,8.5,8,7.5,7,6.5,6,5.5,4.5,4.2]


def profil(pole,polomer, dT=0.1):
    casy = np.arange(9.5, 15, dT)
    body= np.zeros((len(vystrely), casy.size))
    errorbar=np.zeros((len(vystrely), casy.size))
    plt.rc('font', size=20)
    plt.figure(figsize=(15,7))
    for i in range(len(vystrely)):
        print(vystrely[i])
        t, data = get_data("bpp",vystrely[i])
        t = t*1000
        data = data * 100
        for j in range(casy.size):
            maska = (casy[j] - dT/2 < t) & (t < casy[j] + dT/2)
            bod = np.mean( data[maska] )
            odchylka= np.std(data[maska])/np.sqrt(np.sum(maska))*3
            errorbar[i,j] = odchylka
            body[i,j] = bod
#    np.savetxt(body, 'body.txt')
#    np.savetxt(errorbar, 'odchylky.txt')
    for j in range(casy.size):
        print(casy[j])
        plt.clf()
        plt.errorbar(polomer, body[:,j],marker="o",yerr=errorbar[:,j],
                     markersize=12, label="%.1f ms"%casy[j])
        plt.xlabel("r [cm]")
        plt.ylabel("$\Phi$ [V]")
        plt.legend()
        #plt.axvline(7,c="k",ls="dashed")
        #plt.axvline(6,c="k",ls="dashed")
        #plt.axvline(5,c="k",ls="dashed")
        plt.savefig("profilyvcase%.2f.png" %(casy[j]), dpi=300)

    
def zavit(pole):
    plt.figure(figsize=(15,7))
    for vystrel in pole:
        t, data = get_data("loop_voltage",vystrel)
        plt.plot(t*1000, data, label=str(vystrel))
    plt.legend(fontsize=20)
    plt.xlim(5,20)
    plt.xlabel("t [ms]")
    plt.ylabel("U_loop [V]")
    plt.savefig("napetizavitu", dpi=300)
    
        
def proud(pole):
    plt.figure(figsize=(15,7))
    for vystrel in pole:
        t, data = get_data("plasma_current",vystrel)
        plt.plot(t*1000, data, label=str(vystrel))
    plt.legend(fontsize=20)
    plt.xlim(5,20)
    plt.xlabel("t [ms]")
    plt.ylabel("I_p [A]")
    plt.savefig("proudvplasmatu", dpi=300)
    
def tunel():
    vystrel = 30971
    t1, tlim = get_data("tp_tlim", vystrel)
    t2, bplim = get_data("tp_bplim", vystrel)
    t3, tolim = get_data("tp_tolim", vystrel)
    t4, bpolim = get_data("tp_bpolim", vystrel)
    M = 0.4 * np.log((tlim+bplim)/(tolim+bpolim))
    plt.figure(figsize=(15,7))
    plt.plot(t1*1000, M)
    plt.xlim(9,20)
    plt.ylim(-1,1)
    plt.xlabel("t [ms]")
    plt.ylabel("M")
    plt.savefig("Machovocislo", dpi=300)