Differences

This shows you the differences between two versions of the page.

Link to this comparison view

isrm:laboratoare:new:01a [2024/10/02 12:41]
dragos.niculescu [MS Teams assignments]
isrm:laboratoare:new:01a [2024/10/02 14:07] (current)
dragos.niculescu
Line 48: Line 48:
  
  
-=====  MS Teams assignments ===== 
- 
-In cadrul laboratoarelor de ISRM, vom folosi MS Teams assignments pentru a urca rezolvarile exercitiilor,​ pentru a primi feedback pe rezolvari/​interpretari si pentru a primi nota pe laborator. 
- 
-Fisierele de interes care vor trebui urcate in MS Teams incepand cu al doilea laborator sunt urmatoarele:​ 
-  * scripturi bash sau alte fisiere prin care automatizati rularea. Va exista un fișier run.sh care rulează toate subpunctele și generează toate graficele. ​ 
-  * fisierele de output in care salvati rezultatele obtinute in urma rularii scripturilor 
-  * notebook-ul Jupyter aferent sau scripturile .py asociate fiecărui subpunct 
-  * graficele obținute - fisiere .png (incluse în notebook dacă se merge pe acea variantă)  ​ 
-  * un fisier README in care interpretati/​analizati rezultatele obtinute 
  
  
Line 166: Line 156:
 Vom plota astfel: Vom plota astfel:
 <code python> <code python>
 +# %% plot_battery.py to plot data in battery.csv
 import copy import copy
 import numpy as np import numpy as np
 import matplotlib import matplotlib
 import matplotlib.pyplot as plt import matplotlib.pyplot as plt
 + 
 # Calea absoluta catre fisierul de date din care citim # Calea absoluta catre fisierul de date din care citim
 # TODO - trebuie inlocuita cu calea corecta # TODO - trebuie inlocuita cu calea corecta
-DATA_FILE = '​./​battery.dat+DATA_FILE = '​./​battery.csv
-columns = ['​resistance',​ '​power',​ '​power_error'​] +#columns = ['​resistance',​ '​power',​ '​power_error'​] 
- +  
-# Citim datele din fisier +# %%  
-sim_data = np.genfromtxt(DATA_FILE,​ delimiter='​ ', skip_header=2, names=columns, dtype=None)+# Citim datele din fisier ​ca și cum nu am avea numele coloanelor 
 +sim_data = np.genfromtxt(DATA_FILE,​ delimiter='​ ', skip_header=2,​ dtype=None)
  
 +# %% 
 def plot_data(sim_data):​ def plot_data(sim_data):​
     data = copy.deepcopy(sim_data)     data = copy.deepcopy(sim_data)
 + 
     fig, ax = plt.subplots(figsize=(12,​12))     fig, ax = plt.subplots(figsize=(12,​12))
     ax.grid(color='​b',​ alpha=0.5, linestyle='​dashed',​ linewidth=0.5)     ax.grid(color='​b',​ alpha=0.5, linestyle='​dashed',​ linewidth=0.5)
Line 187: Line 180:
     plt.ylabel('​Y values'​)     plt.ylabel('​Y values'​)
     plt.title('​A very nice looking plot')     plt.title('​A very nice looking plot')
- +     
-    ax.errorbar(data['​resistance'​], [1000 * x for x in data['​power'​]], yerr=[1000 * x for x in data['​power_error'​]], fmt='​-o',​ label='​My plot')+    # columns are 0=resistance,​ 1=power, 2=error ​ 
 +    ax.errorbar(data[:,0], 1000*data[:,1], yerr=1000*data[:,2], fmt='​-o',​ label='​My plot')
     ax.legend()     ax.legend()
-    ​+  
 +    #​plt.savefig('​plot_battery.png'​)
     plt.show()     plt.show()
- +  
 + 
 if __name__ == '​__main__':​ if __name__ == '​__main__':​
     plot_data(sim_data)     plot_data(sim_data)
-</​code>​+ 
 +    ​</​code>​
  
 Valorile puterii sunt stocate în Watt în fișierul de date, dar au Valorile puterii sunt stocate în Watt în fișierul de date, dar au
Line 204: Line 200:
  
  
 +=====  MS Teams assignments =====
  
 +In cadrul laboratoarelor de ISRM, vom folosi MS Teams assignments pentru a urca rezolvarile exercitiilor,​ pentru a primi feedback pe rezolvari/​interpretari si pentru a primi nota pe laborator.
 +
 +Fisierele de interes care vor trebui urcate in MS Teams incepand cu al doilea laborator sunt urmatoarele:​
 +  * scripturi bash sau alte fisiere prin care automatizati rularea. Va exista un fișier run.sh care rulează toate subpunctele și generează toate graficele. ​
 +  * fisierele de output in care salvati rezultatele obtinute in urma rularii scripturilor
 +  * notebook-ul Jupyter aferent sau scripturile .py asociate fiecărui subpunct
 +  * graficele obținute - fisiere .png (incluse în notebook dacă se merge pe acea variantă)  ​
 +  * un fisier README in care interpretati/​analizati rezultatele obtinute
 +  * exemplu fișier run.sh ​
 +  <code bash>
 +  # data generation, specific to each lab: 
 +  cp ~/​Downloads/​plotting_data1.csv . 
 +  cp ~/​Downloads/​battery.csv . 
 +  ​
 +  # generating graphs in png files 
 +  python3 ./​plot.py ​
 +  python3 ./​plot_battery.py
 +  </​code>​
 +  * pregătirea arhivei de submis:
 +  <code bash>
 +   cd ns-3-dev
 +   zip -r lab01-NUME-Prenume.zip ./lab01
 +       ​adding:​ lab01/ (stored 0%)
 +       ​adding:​ lab01/​run.sh (stored 0%)
 +       ​adding:​ lab01/​plot_battery.png (deflated 25%)
 +       ​adding:​ lab01/​plot.py (deflated 52%)
 +       ​adding:​ lab01/​plotting_data1.csv (deflated 25%)
 +       ​adding:​ lab01/​battery.csv (deflated 65%)
 +       ​adding:​ lab01/​plot_battery.py (deflated 43%)
 +       ​adding:​ lab01/​README.md (stored 0%)
 +       ​adding:​ lab01/​plot.png (deflated 24%)
 +  </​code>​
 +  * upload lab01-NUME-Prenume.zip
 +  ​
 =====  Prelucrarea datelor în linie de comandă =====  ​ =====  Prelucrarea datelor în linie de comandă =====  ​
  
Line 491: Line 522:
  
  
-====  ​[OPȚIONAL] Trasare de grafice cu gnuplot ​====+<​spoiler ​[OPȚIONAL] Trasare de grafice cu gnuplot>
  
 Vom folosi fișierele de aici: [[https://​github.com/​systems-cs-pub-ro/​uso/​tree/​master/​lab09/​draw-plots]] Vom folosi fișierele de aici: [[https://​github.com/​systems-cs-pub-ro/​uso/​tree/​master/​lab09/​draw-plots]]
Line 510: Line 541:
 Tot aici se găsește și un script gnuplot, ''​draw-overhead-for-kpps.gnu''​ care trasează graficul dependenței overhead-ului față de viteza de trafic pentru aplicația ''​memwalk''​. Tot aici se găsește și un script gnuplot, ''​draw-overhead-for-kpps.gnu''​ care trasează graficul dependenței overhead-ului față de viteza de trafic pentru aplicația ''​memwalk''​.
  
-<spoiler Click pentru explicații legate de conținutul scriptului ''​draw-overhead-for-kpps.gnu''>​ 
 Conținutul scriptului este: Conținutul scriptului este:
 <file gnuplot draw-overhead-for-kpps.gnu>​ <file gnuplot draw-overhead-for-kpps.gnu>​
Line 541: Line 571:
    * fișierul de intrare este ''​memwalk-overhead-for-kpps''​    * fișierul de intrare este ''​memwalk-overhead-for-kpps''​
    * tipul de grafic este ''​linespoints'',​ însemnând că se trasează și puncte și linii care unesc punctele    * tipul de grafic este ''​linespoints'',​ însemnând că se trasează și puncte și linii care unesc punctele
-</​spoiler>​ 
  
 Pentru a rula scriptul folosim comanda<​code>​ Pentru a rula scriptul folosim comanda<​code>​
Line 598: Line 627:
 În acest moment avem un grafic care indică dependența overhead-ului de viteza traficului pentru două aplicații. Datele au fost prelucrate din două fișiere de intrare în format CSV, conținând două coloane: prima cu viteza traficulului (în //​kilopackets per second//) și a doua cu overhead-ul cauzat de aplicație (în secunde). Am trasat două grafice de tipul //​linespoints//​ (puncte și linii între puncte), am plasat legenda în partea din centru dreapta a graficului, am creat etichete pentru legendă și am configurat pentru axa ''​Oy''​ limitele ''​0''​ și ''​150''​. În acest moment avem un grafic care indică dependența overhead-ului de viteza traficului pentru două aplicații. Datele au fost prelucrate din două fișiere de intrare în format CSV, conținând două coloane: prima cu viteza traficulului (în //​kilopackets per second//) și a doua cu overhead-ul cauzat de aplicație (în secunde). Am trasat două grafice de tipul //​linespoints//​ (puncte și linii între puncte), am plasat legenda în partea din centru dreapta a graficului, am creat etichete pentru legendă și am configurat pentru axa ''​Oy''​ limitele ''​0''​ și ''​150''​.
  
-<spoiler Click pentru un model de script finalizat>​+
 În final scriptul final gnuplot va avea o formă similară celui de mai jos<file gnuplot draw-overhead-for-kpps.gnu>​ În final scriptul final gnuplot va avea o formă similară celui de mai jos<file gnuplot draw-overhead-for-kpps.gnu>​
 # Run using: gnuplot draw-overhead-for-kpps.gnu # Run using: gnuplot draw-overhead-for-kpps.gnu
Line 617: Line 646:
      '​transcode-overhead-for-kpps.csv'​ with linespoints title '​transcode'​      '​transcode-overhead-for-kpps.csv'​ with linespoints title '​transcode'​
 </​file>​ </​file>​
 +
 +Un mic ghid de gnuplot găsiți aici: http://​www.gnuplotting.org/​plotting-data/​
 +
 </​spoiler>​ </​spoiler>​
  
-<​spoiler ​Click pentru informații despre ​utilitare de trasare de grafice>+<​spoiler ​[OPȚIONAL] alte utilitare de trasare de grafice>
 <​note>​ <​note>​
 O gamă foarte largă de funcționalități de prelucrare a datelor (statistică și grafică) este furnizată de [[http://​www.r-project.org/​|limbajul R]]. R oferă un mediu de dezvoltare a aplicațiilor de prelucrarea statistică;​ are un limbaj propriu cu ajutorul căruia se pot prelucra date, în principal numerice și statistice. Funcționalitățile oferite sunt vaste de la lucru pe vectori și matrice, la operații pe date tabelare, agregare de date, trasare de grafice în diferite formate. [[http://​www.r-project.org/​|Site-ul oficial]] conține documentație de instalare, utilizare și configurare a R. O gamă foarte largă de funcționalități de prelucrare a datelor (statistică și grafică) este furnizată de [[http://​www.r-project.org/​|limbajul R]]. R oferă un mediu de dezvoltare a aplicațiilor de prelucrarea statistică;​ are un limbaj propriu cu ajutorul căruia se pot prelucra date, în principal numerice și statistice. Funcționalitățile oferite sunt vaste de la lucru pe vectori și matrice, la operații pe date tabelare, agregare de date, trasare de grafice în diferite formate. [[http://​www.r-project.org/​|Site-ul oficial]] conține documentație de instalare, utilizare și configurare a R.
Line 629: Line 661:
 </​spoiler>​ </​spoiler>​
  
-Un mic ghid de gnuplot găsiți aici: http://​www.gnuplotting.org/​plotting-data/​+
  
 ====== Task-uri ====== ====== Task-uri ======
isrm/laboratoare/new/01a.1727862101.txt.gz · Last modified: 2024/10/02 12:41 by dragos.niculescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0