EGI Services

https://www.egi.eu/services/

Drawing

Přihlášení do EGI:

  1. Vytvoření EGI účtu

  2. Přihlášení do vo.notebooks.egi.eu VO

  3. Příhlášení do EGI notebooks


1) Vytvoření EGI účtu

https://aai.egi.eu/signup

Drawing Drawing Drawing

Check-in pošle email pro ověření požadavku a emailu (EGI Check-in Notifications)

Pokud nastane problém během celého procesu: support@egi.eu


2) Přihlášení do vo.notebooks.egi.eu VO

Drawing

RT: 17237 [EGI-20210430-01] [TLP:AMBER] Security incident suspected at CESNET stále otevřené: update?

Drawing

3) Příhlášení do EGI notebooks:

https://notebooks.egi.eu

Drawing Drawing Drawing

Celá přihlašovací procedura do EGI notebooků je zde: https://docs.egi.eu/users/notebooks/


Základní notebook:

Limit na uživatele: 2 CPU, 4GB RAM, 20GB storage

  • Python

  • Dirac/Python 2 (EGI Workload Manager)

  • Julia

  • R

  • Octave

Drawing

MATLAB:

1. Individuální nebo akademické licence

2. Síťová licence

3. Zkušební licence (bez toolboxů)

V tuto chvíli musí mít každý svou MATLAB licenci – máme tam implementovat CESNET licenci?


Co v takovém notebooku může být? A k čemu je dobrý?

Může v něm být nadpis - to už víme

a ten se může zmenšovat

a zmenšovat

a zmenšovat

a zmenšovat
a zmenšovat, až už ho nikdo nepřečtě

Když je potřeba něco tučně, tak to jde udělat tučně

Nebo to může být kurzívou

Anebo to může být kurzívou a tučně


Můžeme nahrát data a zpracovat je:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data = pd.read_csv('data/datatest.txt')

Dx = data["date"]

data['date'] = data.date.astype('datetime64[ns]')
data = data.set_index('date')

data.tail()
Temperature Humidity Light CO2 HumidityRatio Occupancy
date
2015-02-04 10:38:59 24.290000 25.700000 808.0 1150.25 0.004829 1
2015-02-04 10:40:00 24.330000 25.736000 809.8 1129.20 0.004848 1
2015-02-04 10:40:59 24.330000 25.700000 817.0 1125.80 0.004841 1
2015-02-04 10:41:59 24.356667 25.700000 813.0 1123.00 0.004849 1
2015-02-04 10:43:00 24.408333 25.681667 798.0 1124.00 0.004860 1

Data obsahují měření v konferenční místnosti v čase

from matplotlib.figure import Figure
from matplotlib.backends.backend_agg import FigureCanvas
%matplotlib inline

#data['Occupancy'] = 100*data['Occupancy']
plt.figure(figsize=(10,5));
plt.plot(data.CO2);
plt.xticks(rotation=45);
#plt.ylabel('Temperature',fontsize = 20)

plt.show()
../_images/EGI_ntb_readthedocs_91_0.png
T = (data.Temperature-min(data.Temperature))
T = T/max(T)
H = (data.Humidity-min(data.Humidity))
H = H/max(H)
L = (data.Light-min(data.Light))
L = L/max(L)
C = (data.CO2-min(data.CO2))
C = C/max(C)
plt.figure(figsize=(10,5))
#Temp = plt.plot(T,'b',label = 'Temperature')
Humid = plt.plot(H,'r',label = 'Humidity')
Light = plt.plot(L,'g',label = 'Light')
CO = plt.plot(C,'c',label = 'CO2')
Occup = plt.scatter(Dx,data.Occupancy,c = 'y',label = 'Occupancy')
plt.legend(fontsize = 'xx-large',bbox_to_anchor=(1.05, 1), loc='upper left', borderaxespad=0.)
plt.show()
../_images/EGI_ntb_readthedocs_93_0.png

Závěr nebo hypotéza:

1. datatest2 je divnej

2. někdo se tam vloupal

3. datatest je dobrej - sedí


Můžu použít nějakou statistiku - třeba rolling mean:

\[ \tau = \frac{\varpi - \omega}{\sqrt{\frac{\sum \varpi - \omega}{N(N-1)}}} \]

Tohle sice není rolling mean, ale aspoň vidíte, že se sem dá dát i LaTeX

def mpl_plot(avg, highlight):
    fig = Figure()
    FigureCanvas(fig) 
    ax = fig.add_subplot()
    avg.plot(ax=ax)
    if len(highlight): highlight.plot(style='o', ax=ax)
    return fig

def find_outliers(variable='Temperature', window=50, sigma=10, view_fn=mpl_plot):
    avg = data[variable].rolling(window=window).mean()
    residual = data[variable] - avg
    std = residual.rolling(window=window).std()
    outliers = (np.abs(residual) > std * sigma)
    return view_fn(avg, avg[outliers])
find_outliers(variable='CO2', window=50, sigma=10)
../_images/EGI_ntb_readthedocs_99_0.png

Udělejme to víc interaktivní za pomoci Panelu (ať se nemusíme pořád hrabat v kódu):

import panel as pn
pn.extension()

pn.interact(find_outliers)
kw = dict(window=(1, 60), variable=sorted(list(data.columns)), sigma=(1, 20))
i = pn.interact(find_outliers, **kw)
#i.pprint()
text = "<br>\n# Room measurements\nSelect the variable, and the time window for smoothing"

p = pn.Column(pn.Column(text, i[0][0], i[0][1]), i[1][0])
p
i[0][2]
import panel.widgets as pnw

variable  = pnw.RadioButtonGroup(name='variable', value='Temperature', 
                                 options=list(data.columns))
window  = pnw.IntSlider(name='window', value=10, start=1, end=60)

reactive_outliers = pn.bind(find_outliers, variable, window, 10)

widgets   = pn.Column("<br>\n# Room measurements", variable, window)
occupancy = pn.Column(widgets,reactive_outliers)
occupancy
import param

class RoomOccupancy(param.Parameterized):
    variable  = param.Selector(objects=list(data.columns))
    window    = param.Integer(default=10, bounds=(1, 20))
    sigma     = param.Number(default=10, bounds=(0, 20))

    def view(self):
        return find_outliers(self.variable, self.window, self.sigma)
    
obj = RoomOccupancy()
obj
RoomOccupancy(name='RoomOccupancy00147', sigma=10, variable='Temperature', window=10)
pn.Column(obj.param, obj.view)
import hvplot.pandas

def hvplot(avg, highlight):
    line = avg.hvplot(height=300, width=550)
    avg.hvplot(height=300) * highlight.hvplot.scatter(color='orange', padding=0.1)
    outliers = highlight.hvplot.scatter(color='orange', padding=0.1)
    return (line * outliers).opts(legend_position='top_right') 

text2 = "## Room Occupancy\nSelect the variable and the smoothing values"
hvp   = pn.interact(find_outliers, view_fn=hvplot, **kw)
pn.Column(pn.Row(pn.panel(text2, width=200), hvp[0]), hvp[1]).servable("Occupancy")