--- format:markdown ... # Hackathon ML/AI 2024 - soutěžní téma na tokamaku GOLEM
*Tady je obrázek kombinující tokamak GOLEM s atmosférou hackathonu! Tokamak je centrálním bodem, zatímco kolem něj pracují programátoři a inženýři na svých laptopech. Příjemná kombinace výzkumné laboratoře a moderního pracovního prostoru s hackathonovou energií.* (ChatGPT na otázku "Ahoj, udělal bys mi obrázek kombinující tokamak GOLEM a hackathon?")
# Výroba energie
Co takhle jako zdroj tepla "malá hvězda"?
# Termonukleární fúze Zdrojem energie hvězd a samozřejmě i Slunce je [Termonukleární fúze](https://cs.wikipedia.org/wiki/Termonukle%C3%A1rn%C3%AD_f%C3%BAze).
Schematické znázornění fúze jádra. Credit: Wiki
# Vize budoucího fúzního reaktoru [Vize budoucího fúzního reaktoru @ Wiki](https://cs.wikipedia.org/wiki/Jadern%C3%BD_f%C3%BAzn%C3%AD_reaktor)
Schéma budoucího fúzního reaktoru. Credit: ResearchGate
# Tokamaky [Tokamak @ Wiki](https://cs.wikipedia.org/wiki/Tokamak)
Tokamak. Credit: Wikipedia
# Tokamak GOLEM [Tokamak GOLEM](https://cs.wikipedia.org/wiki/Tokamak_TM-1_MH) je malé studijní zařízení na Jaderné fakultě ČVUT.
# Elektrické pole $E_t$ je důležitá komponenta tokamakové technologie GOLEMa
# Nějak to musíme diagnostifikovat. $U_{Loop}$ reflektuje Elektrické pole $E_t$
# Basic diagnostics @ Shot homepage
# Hackathon ML/AI 2024 - soutěžní téma na tokamaku GOLEM # Databáze výbojů na tokamaku GOLEM V historii tokamaku GOLEM od 8.7.2009 do řijna 2024 bylo provedeno více než 46500 výbojů. Standardní cesta k záznamu o nastavení a vysledcích jednotlivého výboje je přes adresu **http://golem.fjfi.cvut.cz/shots/*ShotNumber***. Třeba [http://golem.fjfi.cvut.cz/shots/39187](http://golem.fjfi.cvut.cz/shots/39187) . Uložení dat a cesta k nim se však s vývojem značně měnila, tak pro požadavky Hackathonu jsme sjednotili přístup pro $U_Loop$ csv formátovaným datům (čas [ms], napětí [V]) přes adresu **http://golem.fjfi.cvut.cz/discharges/*ShotNumber*/Diagnostics/BasicDiagnostics/U_Loop.csv**. Zde *ShotNumber* je číslo výboje. K dispozici jsou dvě vlny rozumně zpracovatelných výbojů * (10600 < ShotNumber < 31150 ), kde by mělo být více než 15000 úspěšných výbojů * (36247 < ShotNumber < 45206 ), kde by mělo být více než 5500 úspěšných výbojů Příkaz: SELECT "ShotNo" FROM diagnostics.plasmadetection WHERE tag_valid = TRUE AND "b_Plasma" = '1' dává 16831 výbojů z databáze k vaší analýze. K dispozici máte tyto údaje * Naše vyhodnocení, zda došlo k úspěšnému provedení plazmatického výboje ve formátu https://golem.fjfi.cvut.cz/getData.php?schema=diagnostics&table=plasmadetection&column=b_Plasma&ShotNo=*ShotNumber*. Třeba pro výboj [#39187](https://golem.fjfi.cvut.cz/getData.php?schema=diagnostics&table=plasmadetection&column=b_Plasma&ShotNo=39187) . Možné hodnoty 1: šlo o výboj, 0: výboj se nezapálil (tyto výboje vás tedy vůbec nezajímají). * Naše vyhodnocení, zda došlo k úspěšné analýze začátku a konce plazmatického výboje ve formátu https://golem.fjfi.cvut.cz/getData.php?schema=diagnostics&table=plasmadetection&column=tag_valid&ShotNo=*ShotNumber*. Třeba pro výboj [#39187](https://golem.fjfi.cvut.cz/getData.php?schema=diagnostics&table=plasmadetection&column=tag_valid&ShotNo=39187) . Možné hodnoty 1: zřejmě je to spočítáno dobře, 0 anebo žádná hodnota: něco s vý počtem není v pořádku (tyto výboje vás tedy vůbec nezajímají). * Začátek výboje v milisekundách ve formátu https://golem.fjfi.cvut.cz/getData.php?schema=diagnostics&table=plasmadetection&column=t_Plasma__start&ShotNo=*ShotNumber*. Třeba pro výboj [#39187](https://golem.fjfi.cvut.cz/getData.php?schema=diagnostics&table=plasmadetection&column=t_Plasma__start&ShotNo=39187). * Konec výboje v milisekundách ve formátu https://golem.fjfi.cvut.cz/getData.php?schema=diagnostics&table=plasmadetection&column=t_Plasma__end&ShotNo=*ShotNumber*. Třeba pro výboj [#39187](https://golem.fjfi.cvut.cz/getData.php?schema=diagnostics&table=plasmadetection&column=t_Plasma__end&ShotNo=39187). * Dobu výboje v milisekundách ve formátu https://golem.fjfi.cvut.cz/getData.php?schema=diagnostics&table=plasmadetection&column=t_Plasma__duration&ShotNo=*ShotNumber*. Třeba pro výboj [#39187](https://golem.fjfi.cvut.cz/getData.php?schema=diagnostics&table=plasmadetection&column=t_Plasma__duration&ShotNo=39187). * Již zmíněná cesta k časovému vývoji $U_l$: http://golem.fjfi.cvut.cz/discharges/*ShotNumber*/Diagnostics/BasicDiagnostics/U_Loop.csv**. Třeba pro výboj [#39187](https://golem.fjfi.cvut.cz/discharges/39187/Diagnostics/BasicDiagnostics/U_Loop.csv). Třeba pro výboj číslo #39187: Kód v pythonu: ~~~ mport numpy as np import matplotlib.pyplot as plt import requests shot_no=39187 data = np.loadtxt("http://golem.fjfi.cvut.cz/discharges/" + str(shot_no) + "/Diagnostics/BasicDiagnostics/U_Loop.csv",delimiter=",") plasma_start=np.float64(requests.get("https://golem.fjfi.cvut.cz/getData.php?schema=diagnostics&table=plasmadetection&column=t_Plasma__start&ShotNo="+ str(shot_no)).text.strip()) plasma_end=np.float64(requests.get("https://golem.fjfi.cvut.cz/getData.php?schema=diagnostics&table=plasmadetection&column=t_Plasma__end&ShotNo="+ str(shot_no)).text.strip()) plt.plot(data[:,0], data[:,1]) #1. column vs 2. column plt.title('#'+str(shot_no)) plt.xlabel('Time [ms]');plt.ylabel('$U_{Loop}$ [V]'); plt.axvline(x=plasma_start, color='black', linestyle='--'); plt.axvline(x=plasma_end, color='black', linestyle='--'); plt.savefig('U_Loop-'+str(shot_no)+'.jpg') plt.show() ~~~ Výsledek: # Různé režimy výboje V historii tokamaku GOLEM jsme zaznamenali různé režimy. V následující tabulce jsou uvedeny příklady: (prosím pozor, v případě, že nevidíte ikony, zaměňte v adrese https za http)
RežimČíslo výbojeGrafCesta k datůmDalší příklady
Výboj se vůbec nezapálil (nedošlo k průrazu)

Tento typ výbojů vás vůbec nezajímá.

Tag b_Plasma=0
#39160
Standardní (jednoduchý průraz)

Tag b_Plasma=1 & tag tag_valid=1
Výboj z první vlny
#12529[$U_{loop}$](https://golem.fjfi.cvut.cz/discharges/12529/Diagnostics/BasicDiagnostics/U_Loop.csv)[Standard discharges](http://golem.fjfi.cvut.cz/DataBase/Tools/SelectDischarges.php?order=shot_no&direction=DESC&howmany=20&width=20&where=shot_no=45505%20OR%20shot_no=45499)
Standardní (jednoduchý průraz)

Tag b_Plasma=1 & tag tag_valid=1
Výboj z druhé vlny
#39187[$U_{loop}$](https://golem.fjfi.cvut.cz/discharges/39187/Diagnostics/BasicDiagnostics/U_Loop.csv)[Standard discharges](http://golem.fjfi.cvut.cz/DataBase/Tools/SelectDischarges.php?order=shot_no&direction=DESC&howmany=20&width=20&where=shot_no=45505%20OR%20shot_no=45499)
Nestandardní (dvojitý průraz)

Tag b_Plasma=1 & tag tag_valid=1
#44914 [$U_{loop}$](https://golem.fjfi.cvut.cz/discharges/44914/Diagnostics/BasicDiagnostics/U_Loop.csv)[Double breakdown examples](http://golem.fjfi.cvut.cz/DataBase/Tools/SelectDischarges.php?order=shot_no&direction=DESC&howmany=20&width=20&where=tag_dbl_bd%20=%20true) + [z dávné historie](http://golem.fjfi.cvut.cz/wiki/ShowRooms/PlasmaPerformance/DoubleBreakdown/index)
Nestandardní (trojitý průraz)

Tag b_Plasma=1 & tag tag_valid=1
#41642 [$U_{loop}$](https://golem.fjfi.cvut.cz/discharges/41642/Diagnostics/BasicDiagnostics/U_Loop.csv)[Tripple breakdown examples](http://golem.fjfi.cvut.cz/DataBase/Tools/SelectDischarges.php?order=shot_no&direction=DESC&howmany=20&width=20&where=tag_trp_bd%20=%20true) + [z dávné historie](http://golem.fjfi.cvut.cz/wiki/ShowRooms/PlasmaPerformance/TripleBreakdown/index)
Nestandardní (několikanásobný průraz)

Tag b_Plasma=1 & tag tag_valid=1
#44625 [$U_{loop}$](https://golem.fjfi.cvut.cz/discharges/44625/Diagnostics/BasicDiagnostics/U_Loop.csv)[Multiple breakdown examples](http://golem.fjfi.cvut.cz/DataBase/Tools/SelectDischarges.php?order=shot_no&direction=DESC&howmany=20&width=20&where=tag_mlt_bd%20=%20true)
Fail (chyba diagnostiky)

Tag b_Plasma=1 & tag tag_valid=0
Tyto výboje vás nezajímají
#19850
[Použit tento kód](https://golem.fjfi.cvut.cz/wikiraw/Events/Hackathon/24Decin/python/PureUloop.html) [Náhodných 100 výbojů s klasifikací](https://golem.fjfi.cvut.cz/wikiraw/Events/Hackathon/24Decin/hackathonCheck.html) # Úkol: připravit otagování dostupných výbojů * Sestavit csv tabulku pro výboje splňující podmínku "b_Plasma=1 & tag_valid=1" se třemi sloupci: ShotNumber, Tag, comment . Tag bude nabývat hodnot * dbl pro dvojitý průraz * trp pro trojitý průraz * mlt pro vícenásobný průraz * fail-tG pro všeliké problémy na straně databáze tokamaku GOLEM * fail-us pro všeliké selhání vašeho algoritmu Do sloupce "comment" zadejte důvody aplikace Tagu fail-tG či fail-us * Připravit web stránku s výsledky (homepage reportu), která bude obsahovat * Popis použité metody * Výsledky ve formě znázornění po 20 grafech pro jednotlivé režimy vybraných výbojů podle náhodného generátoru. Při refresh stránky se musí náhodný generátor přepočítat a ukázat jinou sadu výbojů. * Odkazy na Jupyter sheets, které byly pro řešení použity. * Náhodný čtenář reportu musí mít možnost stáhnout si všechny použité nástroje a data k sobě na počítač a spustit si na něm po nějaké základní instalaci programů a příslušných knihoven vše potřebné a dostat se ke stejným výsledkům. # Poznámky * Upozorňujeme, že si zdaleka nejsme jistí, jestli u všech výbojů pro zpracování jsou ty tagy "tag_valid" a "b_Plasma" správně. * Pokud během soutěže selže náš server, tak má vedoucí k dispozici zip soubor se všemi csv soubory $U_{Loop}$ a dump databaze, kde jsou k dispozici všechny potřebné tagy a hodnoty, které získáváte přes funkci https://golem.fjfi.cvut.cz/getData.php . Cesta k backup je [zde](http://buon.fjfi.cvut.cz/raws/GOLEM/Hackathon/) * Technický support (datové záležitosti) bude k dispozici v pátek od 19:00 do 20:00 a v sobotu od 10:00 do 11:00 na čísle 732269781 (Šimon Svoboda) # Děkujeme za pozornost a budeme se těšit na výsledky. ## Vojtěch Svoboda & Ondřej Ficker & Šimon Svoboda