PYTHON ------ - interpretovany programovaci jazyk - vznik koncem 80tych let - snaha o jednoduchost a citelnost kodu - soubory s priponou *.py Potrebne baliky (moduly) ------------------------ 1) samotny Python, pro nase potreby ve verzi 3.4 - http://python.org 2) NumPy (Numerical Python) - shttp://www.numpy.org/ - pokrocilejsi matematicke vyuziti nez v zakladnim python - je vyzadovana pro fungovani dalsich baliku (napr. SciPy) 3) SciPy (Scientific Python) - http://www.scipy.org/ - modul pro nejruznejsi vedecke vypocty 4) Matplotlib - http://matplotlib.org - modul pro tvorbu grafu - lze vytvorit temer jakykoliv graf kdyz se clovek trochu snazi 5) Pyfits - http://www.stsci.edu/institute/software_hardware/pyfits - modul pro praci s astronomickymi snimky ve formatu FITS v Pythonu 6) IPython - http://ipython.org - interaktivni python shell - je jepsi nez zakladni python shell ale v podstate si vystacime prozatim i se zakladnim Instalace linux --------------- sudo apt-get update sudo apt-get install python-numpy python-scipy python-matplotlib python-pyfist ipython Instalace Win ------------- Python -> https://www.python.org/downloads/ - stahovat verzi 3.4.0 (kvuli kompatibilite baliku) ---> NE 64bit verzi!!! Numpy -> http://sourceforge.net/projects/numpy/files/NumPy/ - superpack 1.10.1 - nebo z win terminalu (winkey + r --> cmd --> enter) spustenim C:\Python34\Scripts\pip.exe install numpy Scipy -> http://sourceforge.net/projects/scipy/files/scipy/0.16.0/ - scipy superpack pro verzi 3.4 (aktualne ten prvni) - nebo z win terminalu spustenim C:\Python34\Scripts\pip.exe install scipy Matplotlib - spustenim C:\Python34\Scripts\pip.exe install matplotlib Pyfits - http://www.stsci.edu/institute/software_hardware/pyfits/Download - spustenim C:\Python34\Scripts\pip.exe install pyfits - pyfits je soucasti i novejsiho baliku astropy ale pro nase potreby lepe samostatny (alespon prozatim) IPython - spustenim C:\Python34\Scripts\pip.exe install ipython Spusteni Linux -------------- - z terminalu (napr. Ctrl+Alt+T) prikazem python (pripadne ipython) Spusteni z Win -------------- - z nabidky start bud Python IDLE (Integrated DeveLopment Environment) nebo Python Shell --> dale je chovani pod Linuxem i Win v prostredi pythonu temer stejne Import modulu ------------- - abychom mohli nektery z potrebnych modulu pouzivat je nutne ho nejdrive "nainportovat" jinak o nich python "nevi" - napr. import modulu numpy provedeme prikazem import numpy nebo import numpy as np - cast 'as np' neni povinna ale pozdeji nam urychli psani Ukazka 1 (ovetreni, zakladni operace, ulozeni) ---------------------------------------------- import numpy as np #import numpy import pyfits as pf #import pyfits img = pf.open("W_UMa_2015-03-18_04-15-01_B_1494.fits.gz") #lze otevirat i *.gz img.info() # zobrazi info o nactenem souboru/snimku img[0].header # vypise obsah hlavicky (vsechny) img[0].header["OBSERVER"] # vypise jen vybrany img[0].header.keys() # vypise seznam nazvu atributu v hlavice img[0].header["comment"] = "blablabla" # do hlavicky lze pridavat ## nacteni dat ## data = img[0].data # nacte data do promenne data (numpy array) data.shape print data print data[123] print data[123][456] print data[5:10,5:10] --> lze provadet ruzne vypocty s pouzitim numpy, scipy atd. img[0].data = data[5:10,5:10] # znema v datech img.info() # je videt zmena velikosti dat img.writeto('img_new.fits') # zapis do noveho souboru (puvodni zustal nezmenen) Ukazka 2 (zobrazeni dat) ------------------------ import numpy as np #import numpy import pyfits as pf #import pyfits import matplotlib.pyplot as plt # import matplotlib plt.ion() # zapnuti interaktivniho modu plotu, jinak je treba pokazde plot zavirat data = pf.getdata("W_UMa_2015-03-18_04-15-01_B_1494.fits.gz") # rychlejsi zapis k pristupu k datum ## obrazek je treba spravne naskalovat jinak uvidime ze nic nevidime - linearni skalovani data = (data - b) / 100 - b ziskame z histogramu jako polohu maxima plt.hist(data[0:100,0:100]) --> pro tento pripad b = 750 (zhruba) --> data = (data - 750) / 100 print data --> vidime ze nektere hodnoty jsou zaporne pripadne jsou > 1.0 --> je treba se omezit na zobrazitelny rozsah <0.0, 1.0> data = np.clip(data, 0.0, 1.0) # orezani data do zadaneho intervalu print data --> je videt ze hodnoty uz jsou v rozsahu plt.clf() # vycisti plot od predchoziho plt.imshow(data) # zobrazeni obrazku --> dale je mozne nastavovat jine colormapy (barevna provedeni) plt.imshow(data, cmap="gray") plt.imshow(data, cmap="hot") --> dalsi na http://matplotlib.org/examples/color/colormaps_reference.html plt.colorbar() # je mozne pridat colorbar plt.savefig("image.png") # ulozeni do png