import readTrc as lecroy    #Načtu balíček pro čtení z .trc souboru

filename = "C3H2_7Pa_1kHz_dc3000000.trc"    #Vyberu název souboru

#Nyní se musíte podívat do kódu funkce readTrc, aby jste zjistili, že vrací celkem tři hodnoty,
#čas, napětí a informace o osciloskopu (ty budou užitečné dále)
t,U,info = lecroy.readTrc("C3H2_7Pa_1kHz_dc3000000.trc")

#Nejprve zkusím vykreslit data jen tak
plt.figure("Zkouška dat")   #Vytvořím graf s názvem "Zkouška dat"
plt.plot(t,U)               #Vykreslím závislost napětí na čase
plt.show("Zkouška dat")     #Ukážu graf s názvem "Zkouška dat"
#Název grafu ve figure a show je povinný pro používání "%matplotlib notebook", jinak
#se Vám vše bude vykreslovat do jednoho grafu

plt.figure("Oříznutí začátku pulzu")                   #Vytvořím graf
fr_start = 1200000    #Vytvořím proměnnou, která značí, odkud budu data vykreslovat
to_start = 1210000    #Vytvořím proměnnou, která značí, kam až budu data vykreslovat
plt.plot(t[fr_start:to_start],U[fr_start:to_start])    #Vykreslím závislost napětí na čase mezi fr_start a to_start
plt.show("Oříznutí začátku pulzu")                     #Ukážu graf
#Tuto buňku lze spustit několikrát a měnit proměnné, aby jste získali oblast, se kterou chcete pracovat.
#Dolní index "start" má značit, že ořezávám začátek pulzu

t_start = t[fr_start:to_start]    #Do proměnné "t_start" uložím výsek z "t", konkrétně mezi hodnotami fr_start a to_start
U_start = U[fr_start:to_start]    #Do proměnné "U_start" uložím výsek z "U" mezi hodnotami fr_start a to_start

plt.figure("Oříznutí konce pulzu")
fr_end = 2200000
to_end = 2210000
plt.plot(t[fr_end:to_end],U[fr_end:to_end])
plt.show("Oříznutí konce pulzu")

U_end = U[fr_end:to_end]
t_end = U[fr_end:to_end]

"""
Explanation: Úvod - ověření hypotézy Dvořáka
<p>Cílem dnešní hodiny je ověřit hypotézu našeho kolegy dr. Pavla Dvořáka, která zní:</p>

<p>
<i>Odezva plazmatu těsně po zapálení výboje bude mít sinusový průběh, zatímco po ustálení se vytvoří, díky nelinearitě odezvy, složitý časový průběh. Fourierovo spektrum bude obsahovat na počátku pouze jednu frekvenci, zatimco po ustálení to bude mnoho maxim na násobcích frekvence buzení.</i>
</p>

<h2>Vlastnosti výboje</h2>

<ul>
<li>Budící frekvence 13.56 MHz, výkon generátoru kolem 40W.</li>
<li>Měříme sondou (drátek v plazmatu) pomocí osciloskopu. Měníme frekvenci buzení, <a href="https://cs.wikipedia.org/wiki/St%C5%99%C3%ADda_(elektronika)">střídu</a>.</li>
<li>Konvertor dat: <a href="http://public21-45.cloud.ics.muni.cz:8888/edit/Osciloscope/readTrc.py">readTrc.py</a> z osciloskopu.</li>
<li>Plyny H<sub>2</sub>, O<sub>2</sub>, Ar.</li>
<li>Vskutku jedinečná data: <a href="http://public21-45.cloud.ics.muni.cz:8888/tree/Osciloscope">Složka / priečinok</a></li>
</ul>
End of explanation
"""


info

"""
Explanation: Zpracování
Abychom mohli provést Fourierovu analýzu, potřebujeme znát vzorkovací frekvenci osciloskopu. Je tedy třeba podívat se do informací o osciloskopu, které máme uložené v proměnné info.
End of explanation
"""


sampling_frequency = 1/2.000000026702864e-10

Uf_start = scipy.fftpack.fft(U_start)           #Provedu Fourierovu transformaci napětí
tf_start = scipy.fftpack.fftfreq(len(t_start))  #Provedu Fourierovu transformaci času, avšak abych dostal skutečné frekvence
tf_start = tf_start*sampling_frequency          #musím ještě násobit vzorkovací frekvencí

plt.figure("Fourierova analýza 1")
plt.plot(tf_start,np.real(Uf_start)**2)
plt.show("Fourierova analýza 1")

"""
Explanation: Hodnota 'HORIZ_INTERVAL' je hodnotou periody osciloskopu. Převrácená hodnota je vzorkovací frekvencí.
End of explanation
"""


f_start, Pxx_den_start = scipy.signal.periodogram(U_start, sampling_frequency)
plt.figure("Periodogram začátku pulzu")
plt.plot(f_start, np.sqrt(Pxx_den_start))
plt.xlabel('Frekvence [Hz]')
plt.ylabel(r'PSD [V$^2$/Hz]')
plt.show("Periodogram začátku pulzu")

f_end, Pxx_den_end = scipy.signal.periodogram(U_end, sampling_frequency)
plt.figure("Periodogram konce pulzu")
plt.plot(f_end, np.sqrt(Pxx_den_end))
plt.xlabel('Frekvence [Hz]')
plt.ylabel(r'PSD [V$^2$/Hz]')
plt.show("Periodogram konce pulzu")

plt.figure("Periodogram")
plt.plot(f_end, np.sqrt(Pxx_den_end), label="Konec pulzu")
plt.plot(f_start, np.sqrt(Pxx_den_start), label="Začátek pulzu")
plt.xlabel('Frekvence [Hz]')
plt.ylabel(r'PSD [V$^2$/Hz]')
plt.legend()
plt.show("Periodogram")

"""
Explanation: Není však nutné vytvářet takto Fourierovské spektrum "manuálně", jelikož v knihovně scipy.signal existuje funkce periodogram, která jej celé vytvoří za nás.
End of explanation
"""


