# Program a aplikace

Webová aplikace, kód, skripty a letová data jsou rozděleny do následujících složek:

Webová aplikace:

    ./aplikace/ - adresář se zdrojovými kódy k webové aplikaci
    ./aplikace/zaznam.html - tělo webové stránky 
    ./aplikace/index.js - zdrojový kód s Javascriptem a logikou aplikace
    ./aplikace/style.css - grafická úprava prvků v aplikaci
                

Skripty a dataset:

    ./metody identifikace/ - složka s algoritmy pro identifikaci manévrů pomocí K-means a Skrytého Markovova modelu
    ./metody identifikace/K-means.ipynb - skript pro identifikaci manévrů pomocí K-means
    ./metody identifikace/letoveManevry.ipynb - skript pro identifikaci 9 základních letových manévrů
    ./metody identifikace/stranoveManevry.ipynb - skript pro identifikaci stranových manévrů
    ./metody identifikace/vertikální.ipynb - skript pro identifikaci vertikálních manévrů
    
Technická zpráva:

    ./technickaZprava - adresář se zdrojovými kódy technické zprávy

Dataset:

    ./lety/ - složka s lety ze závodů
    ./lety/Tabor - lety z juniorského mistrovství světa z roku 2022 (IGC)
    ./lety/matice a vyhodnoceni - data použitá v podkapitole Vyhodnocení výsledků (JSON)
    ./lety/matice a vyhodnoceni/klub - další data použitá při optimalizaci K-means a HMM (JSON)
    ./lety/matice a vyhodnoceni/standard - další data použitá při optimalizaci K-means a HMM (JSON)
    ./lety/K-means - letová data, která jsou použita v textu (JSON) 

Dále práce obsahuje text práce (xmorko03_pisemna_zprava.pdf) a Readme.md

---



## Návod na spuštění

Program a skripty jsou otestované na Windows 11.

### Webová aplikace

Pro puštění aplikace je nutné mít nastavený server. Pro rychlé otestování je možné spustit aplikaci pomocí Visual Studio Code s rozšířením Live Server od pana Ritwicka Dey. Nejdříve je nutné otevřít celou složku s projektem pomocí Visual Studio Code. V průzkumníku *(Ctrl+Shift+E)* kliknout pravým tlačítkem myši na soubor *zaznam.html* a spustit pomocí: *Otevřít pomocí "Live Server"*. Následně je možné aplikaci plně používat ve webovém prohlížeči. Otestována je v operačním systému Windows 11 a v internetovém prohlížeči Google Chrome a  Microsoft Edge. Druhá možnost je nainstalovat aplikaci Tomcat 9.0 (https://tomcat.apache.org/download-90.cgi) a do složky *webapps/3d* náhrát složku aplikace a staženou složku s CesiumJS (https://cesium.com/platform/cesiumjs/). Soubory ve formátu IGC jsou přiloženy ve složce lety. 

Uživatel může pomocí tlačítka *Přidat let* vložit let pro analýzu. Následně může vizualizovaný let spustit a ovládat pomocí spodní časové lišty. Uživatel může nahrát i více letů. Informace o letu jsou zobrazeny po kliknutí na tlačítko *Informace o letu*. Jednotlivé manévry je možné pozorovat v textové podobě v horní liště nebo pomocí obarvené trajektorie. Význam barev trajektorie je popsán v legendě manévrů. Informace o jednotlivých zaznamenaných časech (body na trajektorii) je možné po kliknutí na bod zobrazit v pravém informačním okně, případně po kliknutí na kluzák je možné zde zobrazit informace o kluzáku. Nastavení pohledu je možné pomocí ikonky s kamerkou, která je po kliknutí na kluzák v pravém informačním okně. K zobrazení základní statistiky o letu slouží tlačítko *Soubor statistika* a pomocí tlačítka *Odebrat lety* je možné odebrat všechny zobrazené lety. 

### Předzpracování dat pro K-means a Skrytý Markovův model

Pomocí tlačítka *Soubor JSON* je možné extrahovat připravený formát pro následující identifikaci pomocí dalších metod. Webová aplikace převede formát IGC na formát JSON, s kterým je následně pracováno v dalších metodách.

### K-means a Skrytý Markovův model. 

Skripty je možné spustit v programu Visual Studio Code pomocí rozšíření Jupyter Notebook a instalované verze Pythonu 3.9.13. Pro spuštění jsou potřebné knihovny:


1) matplotlib.pyplot - vykreslení grafů (https://matplotlib.org/stable/users/installing/index.html)
2) numpy - práce s polem a matematické operace (https://numpy.org/install/)
3) pandas - práce s JSON formátem (https://pandas.pydata.org/docs/getting_started/install.html)
4) sklearn.cluster - funkce pro K-means (https://scikit-learn.org/stable/install.html)
5) sklearn.metrix - matice záměn (https://scikit-learn.org/stable/install.html)
6) hmmlearn - funkce pro Skrytý Markovův model (https://pypi.org/project/hmmlearn/)
7) seaborn - heatmap (obarvená matice podle hodnot) (https://seaborn.pydata.org/installing.html)

Následně je možné pomocí tlačítka *Run All* spustit jednotlivé skripty s metodami (K-means a Skrytý Markovův model). Pro analýzu souboru je nutné přesunout soubor stáhnutý z aplikace do složky *metody*, přejmenovat na *vstup.txt* pro K-means, nebo *vstupHMM.txt* pro Skrytý Markovův model. Pro výpočet emisní matice a matice přechodů je využit soubor *matrixHMM.txt*. 

### Vyhodnocení Skrytého Markovova modelu

K vyhodnocení byly využity dva datasety s délkou záznamu každý přes 50 hodin letu. Tyto datasety jsou pojmenované *maticeHMM.txt* a *vstupHMM.txt* ve složce *lety/matice* (na nextcloudu a přiloženém datovém mediu). Pro spuštění příkladu, který byl využit pro vyhodnocení je nutné tyto soubory přesunout do složky *metody identifikace*.

### Přiložené lety

Formát letu, který je možný nahrát do webové aplikace (určený k vizualizaci) je přiložen ve složce *lety/Tabor IGC*. Na nextcloudu a přiloženém datovém médiu je celkově 16 několikahodinových letů. 

