![](img/grisu.png) # Michael Blaschek Hier finden sich Information zu * Lehre am [IMGW](http://imgw.univie.ac.at/) (Institut für Meteorologie und Geophysik, [FGGA](http://fgga.univie.ac.at/) ) * Python / [TeachingHub](https://srvx1.img.univie.ac.at) * Shell zu SRVX1 * Projekte / Teaching --- # SRVX1 ## Verbinden * Mit einem SSH-Programm - Windows (Putty, **bitwise**) - Mac, Linux (terminal, ssh) * Server Adresse: ``` srvx1.img.univie.ac.at ``` * Benutzername: *a[Matrikelnummer]* * Beispiel: ``` ssh a000001@srvx1.img.univie.ac.at ``` ## VPN 1. ZID [VPN](https://vpn.univie.ac.at) 2. Anmelden & Software installieren 3. Big-IP-Edge [Client](http://zid.univie.ac.at/vpn/#c381282) starten und Login Details (u-Account, vpn.univie.ac.at) eintragen. ## SSH Port Weiterleitung Manchmal benötigt man eine Port-Weiterleitung um auf spezielle Services zuzugreifen * [Putty-Port-Weiterleitung](https://www.ccsl.carleton.ca/~falaca/comp4108_w17/ssh_putty/index.html) * Terminal: ``` ssh USERNAME@srvx1.img.univie.ac.at -L 5901:srvx1.img.univie.ac.at:PORT ``` - USERNAME - Username am SRVX1 - PORT - Port am Server * BitVise, auf Windows kann man das einfach mit Bitvise und C2S Port Weiterleitung machen. <details> <summary>SSH Bitwise</summary> <pre> ![SSH2](https://homepage.univie.ac.at/michael.blaschek/openfiles/ssh_problems2.png) </pre> </details> --- # Python Um den Umgang mit Python zu lernen kann nur empfohlen werden Anaconda Python zu verwenden. <img src="img/anaconda_logo_web.png" width="10%" style="display:inline"> ## Python Befehlssammlungen * [Scipy und Statistik](http://docs.scipy.org/doc/scipy/reference/stats.html) * [Matplotlib wichtige Funktionen](openfiles/Matplotlib_Notes.pdf) * [Python Befehle](openfiles/Python_Notes.pdf) * [Pandas Befehle (Zeitreihen)](openfiles/Pandas_DataFrame_Notes.pdf) * [Ipython Notebook Befehle](openfiles/ipynb-cheat-sheet.pdf) * [Python Buch: Dive into Python](http://www.diveintopython.net/) * [Computational Physics with Python](http://www-personal.umich.edu/~mejn/computational-physics/) * [Python Buch: Automate the boring stuff with Python](https://automatetheboringstuff.com/) * [Python Kurs Deutsch](https://pythonspot.com/de/python-lernen/) * [Mathematical Python](https://www.math.ubc.ca/~pwalls/math-python/) * [Python Functions Library](https://people.sc.fsu.edu/~jburkardt/py_src/py_src.html) ## Jupyter - Notebooks ### Erklärung <img src="https://klinikpython.files.wordpress.com/2012/01/why-python.jpg" width="10%" style="display:inline"> <img src="https://homepage.univie.ac.at/michael.blaschek/openfiles/uni.jpg" width="25%" style="display:inline"> * Einfach zu lesen und zu verstehen * Leichte Weitergabe an Dritte (**Wissenschaftlich**) * direkte Ein- und Ausgabe, Ergebnisse sofort sichtbar (Fehlermeldungen) * Viele Anwendungen und große Community. **OpenSource** * Python als Interface zwischen komplexeren Sprachen wie Fortran, C, C++ * Darstellung und Präsentation von Ergebnissen ist einfach * [Jupyter Einführung](http://nbviewer.ipython.org/url/homepage.univie.ac.at/michael.blaschek/openfiles/ipynb/Jupyter_Einfuehrung.ipynb) * [Jupyter Einführung + Fortran](http://nbviewer.ipython.org/url/homepage.univie.ac.at/michael.blaschek/openfiles/ipynb/Jupyter_Einfuehrung_Extended.ipynb) * [Cookbook F2Py](http://wiki.scipy.org/Cookbook/F2Py) [Fortran Routinen für Python - Guide](http://www.engr.ucsb.edu/~shell/che210d/f2py.pdf) * [Uncertainties](https://pypi.org/project/uncertainties/) Python Paket, dass mit Unsicherheiten rechnen kann * <img src="https://xarray.pydata.org/en/stable/_static/dataset-diagram-logo.png" width="20%" style="display:inline"> Xarray (4D Daten, Erweiterung von NetCDF4 und Pandas) * <img src="https://software.ecmwf.int/wiki/download/attachments/3473428/MAGP?version=9&modificationDate=1344433403776&api=v2" style="display:inline"> ECMWF [Software](https://software.ecmwf.int) (web-api, magics, ...) ## Teaching Hub **Nur mehr das Teaching Hub benutzten. Keine eigenen Notebook Server mehr!!! (seit 10.2020)** 1. Verbinden mit dem Server [SRVX1](https://srvx1.img.univie.ac.at) 2. Einloggen / Anmelden (nur während Semesteranfangs mit Lehrenden), **benötigt ein SRVX1 Account** * Username: Matrikelnummer: a1512345 mit einem `a` statt dem `0`er. <details> <summary> Login Mask </summary> <pre> ![login](img/teachinghublogin.png) </pre> </details> <details> <summary> Signup Mask </summary> <pre> ![login](img/teachinghubsignup.png) </pre> </details> 3. Two-Factor Authentication benutzen * Bei der Anmeldung bekommt man ein TOTP (time based one-time password) **Secret**, dass in eine Authenticator App eingetragen werden muss bzw. der QR Code gescannt. Vorschläge für Apps: * [Authy (Mobile, Desktop)](https://authy.com/download/) <details> <summary> Linux </summary> <pre> install on Linux with **snap install --beta authy** use this [Desktop file](img/Authy.desktop) for integration **cp Authy.desktop ~/.local/share/applications && update-desktop-database ~/.lcoal/share/applications** </pre> </details> * [FreeOTP (Mobile)](https://freeotp.github.io/) * [Google Auth (Mobile)](https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2) 4. Starten des Notebook Servers <details> <summary> Notebook Start </summary> <pre> ![login](img/teachinghublaunch.png) </pre> </details> 5. Ein Notebook Starten (SRVX1 mit Anaconda 3) <details> <summary> Notebook Launcher </summary> <pre> ![login](img/teachinghubnotebooks.png) </pre> </details> 6. Installation von Python Paketen Es gibt ein Module System am SRVX1. Wissenschaftliche Bibliotheken und Programm können so in unterschiedlichen Versionen geladen werden. Es wird ein Terminal benötigt. Im Terminal folgende Befehle ausführen um z.B. `MetPy` zu installieren: ```bash module load anaconda3 pip install metpy ``` <details> <summary> anzeigen Install Log </summary> <pre> ![login](img/teachinghubmetpy.png) </pre> </details> ## Anaconda Environments (conda) Um als lokaler User Pakete zu installieren bzw. Versionen die nicht am Server installiert sind, empfiehlt es sich ein environment zu erzeugen und dort alles notwendige zu installieren. 1. Neues Environment **NAME** im Ordner *~/envs* erzeugen: ```bash conda create -p ~/envs/[**NAME**] ``` 2. Neues Environment **NAME** im Ordner *~/envs* erzeugen mit einer bestimmten NumPy Version ```bash conda create -p ~/envs/[**NAME**] numpy=1.7 # mit numpy version 1.7 ``` 3. Das Environment aktivieren für ipython/python/jupyter ```bash source activate [**NAME**] ``` 4. Pakete im Environment installieren (conda search [paket]) ```bash conda install -n **NAME** [paket] ``` 5. Install mit pip in HOME (.local/ **EASY**): ```bash pip install --user [name-package] ``` 6. Install package from source (**ADVANCED USERS ONLY**): ```bash python setup.py install --home=[PFAD] ``` 7. Install mit pip (**ADVANCED USERS ONLY**): ```bash pip install --install-option="--prefix=..." [name-package] ``` 8. Add Kernel to jupyter notebook: ```bash python3 -m ipykernel install --user python2 -m ipykernel install --user ``` --- # Singularity Container Programme (Python, ...) [Singularity Whitepaper](https://www.sylabs.io/wp-content/uploads/2018/10/sylabs_Whitepaper_SC_SP_v3FINAL.pdf) [Dokumentation](https://www.sylabs.io/guides/3.0/user-guide/) ## Installieren [Anleitung](https://www.sylabs.io/guides/3.0/user-guide/installation.html) [Current Releases](https://github.com/sylabs/singularity/releases) ## Anaconda in Singularity Nach der Installation kann man sich Rezepte (.def) runterladen und die Container zusammensetzen. [Definition file](https://github.com/MBlaschek/singularity-jupyter) ```bash sudo singularity build jupyter.sif Jupyter-2-3.def ``` Ausführen kann man dann den Container - Notebook Server so: ```bash singularity run --app notebook jupyter.sif ``` Wenn man möchte kann man noch das Kernel auch für andere Notebook Server freigeben: [Kernel Json](https://github.com/MBlaschek/singularity-jupyter) Infos gibt es auch unter [Mblaschek](https://github.com/MBlaschek/singularity-jupyter) --- # Lehre ## Klimadiagnose - SS2020 * Siehe Jupyter Notebooks Hilfestellung * Reanalyse-daten [ERA5 CDS](https://cds.climate.copernicus.eu/cdsapp#!/dataset/reanalysis-era5-single-levels-monthly-means?tab=form), [ERA-Interim](https://www.ecmwf.int/en/forecasts/datasets/archive-datasets/reanalysis-datasets/era-interim), * CCSM4 [Experiments](http://www.cesm.ucar.edu/experiments/cesm1.0/) * [CMIP5 Namen](http://cmip-pcmdi.llnl.gov/cmip5/docs/Taylor_CMIP5_design.pdf) * [CMIP5 Data + andere Infos](https://portal.enes.org/data/enes-model-data/cmip5/datastructure) * [CMIP5 CDS](https://cds.climate.copernicus.eu/cdsapp#!/dataset/projections-cmip5-monthly-single-levels?tab=form) * 4D-Felder in Python [Xarray](http://xarray.pydata.org/en/stable/index.html) * EOF-Analyse mit [EOFS](http://ajdawson.github.io/eofs/) * Installieren mit `pip install eofs` * Siehe auch [NAO](https://ajdawson.github.io/eofs/latest/examples/nao_xarray.html) Beispiel mit Xarray * [CliMT: An object-oriented Climate Modeling and diagnostics Toolkit](http://geosci.uchicago.edu/~rtp1/PrinciplesPlanetaryClimate/Courseware/PlanetaryClimateCourseware/CliMT-master/doc/) ## VU Informatik - SS2018 * Bash und Shell Skripte * Befehlssammlung [https://devhints.io/bash](https://devhints.io/bash) * Bash Skript Guide [Ubuntu Wiki](https://wiki.ubuntuusers.de/Shell/Bash-Skripting-Guide_f%C3%BCr_Anf%C3%A4nger/) * Siehe Jupyter Notebooks Hilfestellung * VNC Server Starten am Server ```bash >>> vncimgw ``` * VNC Server Auflösung ändern ```bash >>> xrandr -d DISPLAYNUMMER -s AUFLÖSUNG mit xrandr die möglichen Auflösungen anzeigen: Beispiel: 1920x1200 60.00 1920x1080 60.00 1600x1200 60.00 1680x1050 60.00 1400x1050 60.00 1360x768 60.00 1280x1024 60.00 1280x960 60.00 1280x800 60.00 1280x720 60.00 1024x768 60.00 800x600 60.00 640x480 60.00 ``` Die **DISPLAYNUMMER** ist der vncserver **PORT** (z.B.: *:87*), **AUFLÖSUNG** ist einer der Strings (z.B.: 1400x1050) * VNC Passwort vergessen: ```bash >>> vncpasswd ``` ## Fernerkundung - SS2018 * Siehe Jupyter Notebooks Hilfestellung * 1D-Var-Retrieval Projekt in Python * Einlesen des atmosphärischen Profils * Berechnen der Transmissionsfunktion und Gewichtsfunktion * Berechnen der Radianz * Berechnen des Beobachtungsoperators, der Kostenfunktion und die Anpassung * Darstellen und Speichern der Ergebnisse ## Ensemble - WS2018 * Siehe Jupyter Notebooks Hilfestellung * Lorenz Modell * [Animation](https://jakevdp.github.io/blog/2013/02/16/animating-the-lorentz-system-in-3d/) * [Lorenz Modell Wiki](https://de.wikipedia.org/wiki/Lorenz-Attraktor) * [Lorenz Modell Analyse - Seltsame Attractor](https://www.math.uni-hamburg.de/home/lauterbach/scripts/seminar03/prill.pdf) * [Lorenz System](http://www.wikiwand.com/en/Lorenz_system) --- # Links * [Radek Hofman Python Introduction Course Website](http://homepage.univie.ac.at/radek.hofman/) * [Online Notebook Viewer](http://nbviewer.jupyter.org/) * Online Notebook Server [Cocalc](https://cocalc.com/), bzw. Amazon Cloud, * Online Python Konsole [PY](https://repl.it/languages/python) [PY3](https://repl.it/languages/python3) * [GitHub](https://www.github.com) * Notebook [Scientific Python](https://github.com/jrjohansson/scientific-python-lectures/blob/master/Lecture-0-Scientific-Computing-with-Python.ipynb) * [Pweave](http://mpastell.com/pweave/) Python Script konvertieren nach HTML oder PDF * [Markdown Editor Typora (any OS)](https://typora.io/) * [ZAMG Scientifc Python Course](https://sites.google.com/a/borealscicomp.com/zamg-scientific-python-aug-sep-2014/home) * [Doktoranden Zentrum](http://doktorat.univie.ac.at/workshops-und-training/schluesselkompetenzen/workshops/) * [IMGW](http://imgw.univie.ac.at/imgw/) * [Markdown Homepages (Strapdown)](http://ndossougbe.github.io/strapdown/) * [Physik und Mathe Bücher](https://minireference.com/) # Kinder Uni 2021 <img src="./kinderuni/KinderUni-logo.png" width=400 style="display:inline"><img src="./kinderuni/ballon2.png" width=200 style="display:inline"> Im Juli hat das Institut an der [KinderUni](https://kinderuni.at) teilgenommen und 10 bis 12 jährigen Kinder Wetter und Klima näher gebracht. > **Mittendrin im Wetterlabor** > *Wie entstehen Wolken, Gewitter oder Sturm? Und was hat das alles mit Physik zu tun? * > > Ob es regnet, schneit oder stürmt – bei uns erfährst du etwas über die Entstehung von Wolken und Gewittern. Wir machen mit dir Experimente, damit du tiefere Einblicke in die Physik des Wetters bekommst. > Es gab Experimente wie Wolke in der Flasche oder ein Barometer basteln und als Abschluss noch ein Helium-Ballon tracking mit eigener [Website](./Kinderuni-ballon.html). Bisher wurden schon zwei Ballons gefunden. Einer hat es bis in die Nähe von Eisenstadt geschafft, also gut 40 km. Hoffentlich werden noch mehr Ballons gefunden.