{ "cells": [ { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Inicialization\n", "\n", "from __future__ import print_function\n", "import matplotlib\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from urllib.request import urlopen\n", "import os\n", "from IPython import get_ipython\n", "import string\n", "import sys\n", "from pylab import *\n", "from itertools import combinations_with_replacement\n", "\n", "\n", "\n", "def is_interactive(): # are we in jupyter ??\n", " import __main__ as main\n", " return 0 \n", "\n", "\n", "#if is_interactive():\n", "# %matplotlib inline\n", "\n", "#Experimental setup\n", "ShotNo=27133\n", "Signals=['drp2','drp4','drp6','drp8','drp10','drp12','drp14','drp16']\n", "#Signals=['drp2','drp4'] #testit\n", "step=500 # us\n", "finalTime=9500; TimeShift=step\n", "#step=5000 # test\n", "\n", "\n", "\n", "HWNapetovyDelic=100 \n", "\n", "\n", "#Global variables\n", "PlasmaStart=0\n", "PlasmaEnd=0\n", "# correlation setup\n", "# graph setup\n", "GV_BottomGraphLimit=0.0;GV_zoomexrange=0.1\n", "\n", "BaseURL = \"http://golem.fjfi.cvut.cz/utils/data/\" #global\n", "\n", "\n", "FigSize=10,8\n", "def FigDef():plt.figure(figsize=(10, 8), dpi= 80, facecolor='w', edgecolor='k')\n", "\n", "#print(list(combinations_with_replacement(Signals, 2)))\n", " " ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Functions definitions\n", "def mkdir(dir): \n", " try:os.makedirs(dir) \n", " except OSError:pass\n", " \n", "\n", "def GMgetdata_npz(ShotNo, signal):\n", " ShotNoStr=str(ShotNo)\n", " if not os.path.isfile('Data/'+signal+'.npz'):\n", " os.system('wget http://golem.fjfi.cvut.cz/shots/' + str(ShotNo) + '/basicdiagn/'+signal+'.npz -O Data/'+signal+'.npz');\n", " \n", "\n", "def GMgetfigure(ShotNo, identification):\n", " ShotNoStr=str(ShotNo)\n", " if not os.path.isfile('Data/graphres.png'):\n", " os.system('wget http://golem.fjfi.cvut.cz/shots/' + ShotNoStr + '/basicdiagn/graphpres.png -O Data/graphres.png');\n", " \n", " \n", "def GMgetdata_txt(ShotNo, signal):\n", " ShotNoStr=str(ShotNo)\n", " if not os.path.isfile('Data/'+signal+'.txt'):\n", " os.system('wget http://golem.fjfi.cvut.cz/utils/data/' + ShotNoStr + '/'+signal+'.txt -O Data/'+signal+'.txt');\n", " return np.loadtxt('Data/'+signal+'.txt')[PlasmaStart:PlasmaEnd] \n", "\n", "def GMgetdata_identifier(ShotNo, signal):\n", " ShotNoStr=str(ShotNo)\n", " if not os.path.isfile('Data/'+signal):\n", " os.system('wget http://golem.fjfi.cvut.cz/utils/data/' + ShotNoStr + '/'+signal+' -O Data/'+signal);\n", " return np.loadtxt('Data/'+signal)\n", " \n", "def GMgetparameter(ShotNo,identifier):\n", " ShotNoStr=str(ShotNo)\n", " if not os.path.isfile('Data/'+identifier):\n", " parameter=str(urlopen(BaseURL+str(ShotNo)+'/'+identifier).read().rstrip()).replace(\"b'\", \"\").replace(\"'\",\"\")\n", " np.savetxt('Data/'+identifier,[parameter], delimiter=\" \", fmt=\"%s\")\n", " return parameter\n", " return np.loadtxt('Data/'+identifier)\n", "\n", "def GMget_str_parameter(ShotNo,identifier):\n", " ShotNoStr=str(ShotNo)\n", " if not os.path.isfile('Data/'+identifier):\n", " parameter=str(urlopen(BaseURL+str(ShotNo)+'/'+identifier).read().rstrip()).replace(\"b'\", \"\").replace(\"'\",\"\")\n", " np.savetxt('Data/'+identifier,[parameter], delimiter=\" \", fmt=\"%s\")\n", " return parameter\n", " return open('Data/'+identifier, 'r').read()\n", "\n", "\n", "\n", "\n", "def GetData(ShotNo):\n", " global PlasmaStart\n", " global PlasmaEnd\n", " mkdir('Data')\n", " mkdir('CrossCorrels')\n", " ShotNoStr=str(ShotNo)\n", " GMgetdata_npz(ShotNo, \"Btoroidal\")\n", " GMgetfigure(ShotNo,'graphres.png')\n", " #Plasma parameters\n", " PlasmaStart=int(float(GMgetparameter(ShotNo,'plasma_start'))*1e6) # in us\n", " PlasmaEnd=int(float(GMgetparameter(ShotNo,'plasma_end'))*1e6) # in us\n", " \n", " \n", "def DischargeBasics(ShotNo,VacuumShot,PlasmaStart, PlasmaEnd, Time, Uloop, Btoroidal, Iplasma, \\\n", " VAchar_voltage, VAchar_current,Potential, Potential_smoothed, dz):\n", " \n", " f = plt.figure(figsize=(20.0, 5.0))\n", " f,ax = plt.subplots(3,sharex=True);plt.subplots_adjust(hspace=0.001)\n", " f.set_size_inches(FigSize)\n", " ax[0].set_title('#' + str(ShotNo))\n", " ax[0].plot(Time/1000,Uloop['data'][PlasmaStart:PlasmaEnd],label='Loop voltage');ax[0].set_ylabel('$U_l$ [V]');ax[0].set_ylim(0,);ax[0].legend(loc=0)\n", " ax[1].plot(Time/1000,Btoroidal['data'][PlasmaStart:PlasmaEnd],label='Toroidal magnetic field');ax[1].set_ylabel('$B_t$ [T]');ax[1].set_ylim(0,);ax[1].legend(loc=0)\n", " ax[2].plot(Time/1000,Iplasma['data'][PlasmaStart:PlasmaEnd]/1000,label='Plasma current');ax[2].set_ylabel('$I_p$ [kA]');ax[2].set_ylim(0,);ax[2].legend(loc=0)\n", " ax[2].set_xlabel('$t$ [ms]');#ax[6].set_ylim(-200,200)\n", " ax[2].set_xlim(PlasmaStart/1000,PlasmaEnd/1000)\n", " plt.savefig('/Basics/BasicDiag.jpg', bbox_inches='tight')\n", " if is_interactive():plt.show();\n", " plt.close();\n", " \n", "\n", " \n", "def GMcrosscorrelation(ShotNo,signal1,signal2,start_time, end_time):\n", " a_array=GMgetdata_txt(ShotNo, signal1)[start_time:end_time][0:,1]\n", " v_array=GMgetdata_txt(ShotNo, signal2)[start_time:end_time][0:,1]\n", " plt.clf();plt.plot(a_array,label=signal1);plt.plot(v_array,label=signal2);\n", " plt.legend(loc=1)\n", " plt.savefig('CrossCorrels/'+signal1+'x'+signal2+'/'+str(start_time)+'to'+str(end_time)+'raw.jpg', bbox_inches='tight')\n", " np.savetxt('CrossCorrels/'+signal1+'x'+signal2+'/'+str(start_time)+'to'+str(end_time)+signal1+'raw.dat',[a_array], delimiter=\"\\n\", fmt=\"%s\")\n", " np.savetxt('CrossCorrels/'+signal1+'x'+signal2+'/'+str(start_time)+'to'+str(end_time)+signal2+'raw.dat',[v_array], delimiter=\"\\n\", fmt=\"%s\")\n", " plt.clf();plt.plot(a_array-np.mean(a_array),label=signal1);plt.plot(v_array-np.mean(v_array),label=signal2);\n", " plt.legend(loc=1)\n", " plt.savefig('CrossCorrels/'+signal1+'x'+signal2+'/'+str(start_time)+'to'+str(end_time)+'raw-mean.jpg', bbox_inches='tight')\n", " np.savetxt('CrossCorrels/'+signal1+'x'+signal2+'/'+str(start_time)+'to'+str(end_time)+signal1+'raw-mean.dat',[a_array], delimiter=\"\\n\", fmt=\"%s\")\n", " np.savetxt('CrossCorrels/'+signal1+'x'+signal2+'/'+str(start_time)+'to'+str(end_time)+signal2+'raw-mean.dat',[v_array], delimiter=\"\\n\", fmt=\"%s\")\n", " # priprava normalizace\n", " a_array = (a_array - np.mean(a_array)) / (np.std(a_array) * len(a_array))\n", " v_array = (v_array - np.mean(v_array)) / (np.std(v_array))\n", " correlation=np.correlate(a_array, v_array, mode='full')\n", " plt.clf()\n", " plt.plot(correlation)\n", " plt.axis([0,2*len(a_array),-1,1])\n", " plt.title('#'+str(ShotNo)+' Cross-correlation '+signal1+' x '+signal2+' <'+str(start_time)+','+str(end_time)+ '>us')\n", " plt.grid()\n", " plt.savefig('CrossCorrels/'+signal1+'x'+signal2+'/'+str(start_time)+'to'+str(end_time)+'.jpg', bbox_inches='tight')\n", " np.savetxt('CrossCorrels/'+signal1+'x'+signal2+'/'+str(start_time)+'to'+str(end_time)+'.dat',[correlation], delimiter=\"\\n\", fmt=\"%s\")\n", " plt.clf()\n", " #plt.show()\n", " plt.plot(correlation)\n", " plt.title('#'+str(ShotNo)+' Cross-correlation '+signal1+' x '+signal2+' <'+str(start_time)+','+str(end_time)+ '>us zoom')\n", " plt.axis([len(a_array)*(1-GV_zoomexrange),len(a_array)*(1+GV_zoomexrange) , GV_BottomGraphLimit,1])\n", " plt.axvline(x=np.argmax(correlation),color='k', linestyle='--')\n", " plt.grid()\n", " plt.savefig('CrossCorrels/'+signal1+'x'+signal2+'/'+str(start_time)+'to'+str(end_time)+'z.jpg', bbox_inches='tight')\n", " #if is_interactive():plt.show();\n", " #plt.show(); \n", " return np.argmax(correlation)+1,correlation[np.argmax(correlation)+1]\n", " \n", " \n", "#GMcrosscorrelation(ShotNo,'rp_4','rp_4',5000,5000) # just to develop\n", " " ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Basic graph generation\n", "def BasicGraph(ShotNo, signal1, signal2, axvspan_start,axvspan_end):\n", "\n", " def axvspan():\n", " plt.axvspan(PlasmaStart/1000+axvspan_start, PlasmaStart/1000+axvspan_end, facecolor='0.5', alpha=0.5)\n", "\n", "\n", " fig = plt.figure(1)\n", " subplots_adjust(hspace=0.001)\n", "\n", " sbp1=plt.subplot(711)\n", " data1 = GMgetdata_txt(ShotNo,'loop_voltage')\n", " plt.ylim(0,max(data1[:,1]*1.1))\n", " plt.yticks(arange(0, 30, 10))\n", " plt.title('#'+str(ShotNo)+ '..<'+str(int(PlasmaStart+axvspan_start*1000))+','+str(int(PlasmaStart+axvspan_end*1000))+'>')\n", " plt.ylabel('$U_l$ [V]')\n", " plt.plot(data1[:,0]*1000, data1[:,1], 'k-',label='Loop voltage $U_l$' )\n", " plt.legend(loc=0)\n", " axvspan()\n", "\n", " sbp1=plt.subplot(712, sharex=sbp1)\n", " data2 = GMgetdata_txt(ShotNo,'toroidal_field')\n", " plt.yticks(arange(0, 0.5 , 0.2))\n", " plt.ylim(0,max(data2[:,1]*1.1))\n", " plt.ylabel('$B_t$ [T]')\n", " plt.plot(data2[:,0]*1000, data2[:,1], 'k-',label='Toroidal mag. field $B_t$')\n", " plt.legend(loc=0)\n", " axvspan()\n", "\n", " sbp1=plt.subplot(713, sharex=sbp1)\n", " data3 = GMgetdata_txt(ShotNo,'plasma_current')\n", " plt.yticks(arange(0,max(data3[:,1]/1000), 0.5))\n", " plt.ylim(0,max(data3[:,1]/1000*1.1))\n", " plt.ylabel('$I_p$ [kA]')\n", " plt.plot(data3[:,0]*1000, data3[:,1]/1000, 'k-',label='Plasma current $I_p$')\n", " plt.legend(loc=0)\n", " axvspan()\n", "\n", " sbp1=plt.subplot(714, sharex=sbp1)\n", " data4 = GMgetdata_txt(ShotNo,'photodiode_alpha')\n", " plt.yticks(arange(0, 0.09 , 0.03))\n", " #plt.ylim(0,max(data4[:,1]*1.1))\n", " plt.ylim(0,0.09)\n", " plt.ylabel('I [a.u.]')\n", " plt.plot(data4[:,0]*1000, data4[:,1], 'k-',label='$H_\\\\alpha$ radiation')\n", " plt.legend(loc=0)\n", " axvspan()\n", "\n", " sbp1=plt.subplot(715, sharex=sbp1)\n", " data5 = GMgetdata_identifier(ShotNo,'electron_density')\n", " #plt.yticks(arange(0, max(data5[:,1]), 0.5))\n", " #plt.ylim(0,0.8)\n", " plt.ylabel('$n_e$')\n", " plt.plot(data5[:,0]*1000, data5[:,1], 'k-',label='electron density $n_e$')\n", " plt.legend(loc=0)\n", " axvspan()\n", " \n", " sbp1=plt.subplot(716, sharex=sbp1)\n", " data6 = GMgetdata_txt(ShotNo,signal1)\n", " plt.ylim(min(data6[PlasmaStart:PlasmaEnd,1]),max(data6[PlasmaStart:PlasmaEnd,1]))\n", " plt.ylabel('U [V]')\n", " plt.plot(data6[:,0]*1000, data6[:,1], 'k-',label=signal1)\n", " plt.legend(loc=0)\n", " axvspan()\n", " \n", " sbp1=plt.subplot(717, sharex=sbp1)\n", " data7 = GMgetdata_txt(ShotNo,signal2)\n", " plt.ylim(min(data7[PlasmaStart:PlasmaEnd,1]),max(data7[PlasmaStart:PlasmaEnd,1]))\n", " plt.ylabel('U [V]')\n", " plt.xticks(arange(int(PlasmaStart/1000),int(PlasmaEnd/1000), 2))\n", " plt.xlim(PlasmaStart/1000*0.9,PlasmaEnd/1000*1.1)\n", " plt.xlabel('Time [ms]')\n", " plt.plot(data7[:,0]*1000, data7[:,1], 'k-',label=signal2)\n", " plt.legend(loc=0)\n", " axvspan()\n", "\n", " xticklabels = sbp1.get_xticklabels()\n", " plt.setp(xticklabels, visible=True)\n", " \n", " \n", " plt.savefig('CrossCorrels/'+signal1+'x'+signal2+'/'+str(int(axvspan_start*1000))+'to'+str(int(axvspan_end*1000))+'basic.jpg')\n", "\n", " \n", " #plt.show()\n", "\n", "#BasicGraph(26360,'rp_4','rp_10',8,9)\n", "\n", " " ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def htmlgeneration(ShotNo,signal1,signal2,PlasmaStart,PlasmaEnd,step):\n", " \n", " print(\"html generation ...\")\n", " ShotNoStr=str(ShotNo)\n", "\n", " #os.system('rm CrossCorrels/'+signal1+'x'+signal2+'/index.html');\n", " fileid = open('CrossCorrels/'+signal1+'x'+signal2+'/index.html','a+')\n", " fileid.write('
|
Correlation coefficients | Correlation coefficients values |
Basic diagnostics | Raw correlated signals | Full correlation | Full correlation - zoom | \\\n", " | \\\n", " ')\n", " fileid.write('\\\n", " | \\\n", " | \\\n", " | \\\n", " | \\\n", " |
---|
|
\\\n", " | data | \\\n",
" data | \\\n",
" data | \\\n",
"
\\\n", " | \\\n", " | \\\n", " | \\\n", " |