IDL – amiért szeretjük és amiért még jobban szerethető: az IDL 7 és 8 újdonságai
FÖMI, 2015. február 18.
1. IDL újdonságok a 7.0-val kezdődően 2. Néhány plusz gondolat
Miért jó az IDL? • • • •
könnyített programozás nagyon sok előre gyártott elem számítások és vizualizáció együtt hatékony munka, nagyon sok időt lehet megtakarítani a kész megoldásokkal • hosszú távú használatával újrahasznosítható programokat lehet készíteni
IDL workbench – az IDL 7 óta újratervezve, az IDLDE helyett • Eclipse Platform alapú • Több jópofa újítás
Run selected text • Lehetőség van a forráskód szerkesztő ablakból [Editor View az IDL 8 zsargon szerint] csak kijelölt sorok futtatására
Összecsukható komment sorok Az IDL editor felismeri a kommenteket, és felkínálja a lehetőséget.
Lehet több sort egyszerre “kommentezni” [toggle comment]
iTools – intelligens eszközök • IDL 6-nak már része volt • GUI által vezérelt adatolvasás (IOPEN, GIF, TIFF, JPG, PNG, TEXT) • GUI esztétikus ábrák készítéséhez • Az iTools programozható • EPS, PNG, JPEG, GIF export
IDL 8.0-val kezdődően Grafikus függvények bevezetése Eddig: plot, x, F oplot, x, elsoderiv, linestyle=1
Grafikus függvények bevezetése Új: z=plot(x,F) z=plot(x,elsoderiv,linestyle=1,/overplot)
IDL 8.4-től eltüntethető toolbar: NO_TOOLBAR keyword
Miért jó ez? • ‘pont’ szintaktika alapú vezérlés (eplot.THICK = 4) • több ábra egy ablakban • matematikai szimbólumok és görög betűk a grafikán • szöveg, vonalak, nyilak adhatók az ábrához • közvetlen mentés PDF-be (IDL 8 újdonság)!
Új függvények
IDL 8.0 Negatív indexek használata a tömbökben PRINT, array[-1] vagy PRINT, array[N_ELEMENTS(array)-1] kiírja a tömb utolsó elemét
IDL 8.1 Frissített kontinens kontúrok A grafika elmenthető KML/KMZ formátumban a Google Maps/Earth számára
IDL 8.2 Duplikált rutinok keresése Ha az IDL Workbench duplikált szubrutint talál, figyelmezteti a felhasználót
IDL 8.2.2 Box and whisker plot CREATEBOXPLOTDATA BOXPLOT
IDL 8.2.2 Automatikus ‘end’ beírás a ‘begin’ használata esetén IF/ENDIF, FOREACH/ENDFOREACH, FOR/ENDFOR, ELSE/ENDELSE, WHILE/ENDWHILE, CASE/ENDCASE, SWITCH/ENDSWITCH, REPEAT/ENDREP.
IDL 8.2.3 BUBBLEPLOT
IDL 8.3 “implied print” = ki nem fejezett PRINT parancs automatikus kezelése a parancssorban! IDL> 2+2 4 IDL> a = [0:10:2] IDL> a 0 2 4 6 8 10 IDL> a[2:4] 4 6 8 IDL> SIN(a) 0.00000000 0.90929741 -0.75680250 0.27941549 0.98935825 -0.54402113
IDL 8.3 A HELP-ből való copy/paste során az >IDL promptot nem veszi figyelembe az IDL, így könnyen kipróbálhatók a HELP példái [a példák alapján történő tanulás mindig előnyös]
IDL 8.4.1 EXIF metaadat olvasása JPEG és TIFF állományokból
IDL> filename = FILEPATH('Clouds.jpg', SUBDIR=['examples','data']) IDL> result = READ_EXIF(filename, THUMB_IMAGE=thumb) IDL> PRINT, result, /IMPLIED { "ifd1": { "Exif_Image_XResolution": 72.000000000000000, "Exif_Image_YResolution": 72.000000000000000,... }, "ifd0_subifd0_EXIF": {...}, "ifd0": { "Exif_Image_XResolution": 72.000000000000000, "Exif_Image_Orientation": 1, "Exif_Image_DateTime": "2006:06:07 09:39:08", "Exif_Image_YResolution": 72.000000000000000... } } IDL> PRINT, result.DateTime 2006:06:07 09:39:08
IDL 8.5 DIALOG_COLORPICKER
WGET IDL> result=WGET('http://www.google.com/index.html', FILENAME='test.html') IDL> print, result C:\Users\user\test.html
IDL 8.5 PYTHON bridge: IDL-ből meghívhatók Python rutinok, változókat lehet cserélni az IDL és a Python közt. Ugyancsak hívhatók Pythonból IDL rutinok: - Python 2.7+ illetve 3.4+ verzióktól - automatikos row/column major átalakítás - adattípus automatikus konverziója
matplotlib ábra készítése IDL-ben: IDL> IDL> IDL> IDL> IDL>
ran = Python.Import('numpy.random') arr = ran.rand(100) ; call "rand" method plt = Python.Import('matplotlib.pyplot') p = plt.plot(arr) ; call "plot", pass an array void = plt.show(block=0) ; pass keyword
IDL-en belül Python parancssoros módba lehet váltani: IDL> >>> >>> import matplotlib.pyplot as plt >>> import numpy.random as ran >>> arr = ran.rand(100) >>> p = plt.plot(arr)
IDL parancs meghívása Pythonból: >>> >>> >>> >>> >>> >>> >>>
from idlpy import IDL import numpy.random as ran arr = ran.rand(100) p = IDL.plot(arr, title='My Plot') p.color = 'red' p.save('myplot.pdf') p.close()
R programok meghívása
+ sok egyéb újítás, új matematikai függvények, javítások, plusz funkcionalitás…
A felhasználó számára mit nyújt az újabb IDL? • változó, függvény és szubrutin kijelölése esetén mutatja hol van még az adott szó a kódban. Könnyen lejjebb ugorhatunk adott kódban a jobb oldali kis sávok használatával • mutatja a tömbök méreteit, első x elemét ha rajta van a kurzor • IDL parancs esetén mutatja annak szintaktikáját és használati módját, F1 esetén behívja a Helpet • ez saját készítésű kódra is igaz!
A felhasználó számára mit nyújt az újabb IDL? • a kommentek becsukhatók • praktikus új függvények, pl. read_binary, read_csv, stb. • ha ujraindítjuk az IDL-t, akkor is emlékszik a command line ablakban [IDL Console] a korábban kiadott utasitásokra • IDL program futás közben tovább szerkeszthető a forrásfájl, nem fagy ki az IDL Workbench
pro pelda02_bubble loadct, 39 Map = MAP('Geographic', DIMENSIONS=[800,600], LIMIT=[45,15,49,23], $ FILL_COLOR="steel blue", LINESTYLE='dotted', $ LABEL_POSITION=0, FONT_SIZE=12, $ MARGIN=[0.05,0.1,0.05,0.1], ASPECT_RATIO=0) m1 = MAPCONTINENTS(FILL_COLOR="light green", /countries) la=[15., 16.65, 17.5,15., 17.5,19.,21] fi=[45., 46.95, 45.,47.5,47.5,47.5,48.] meret=[1.,3.,5.,3.,7.,9.,5.] valami=bubbleplot(la,fi,/current,magnitude=meret,$ /overplot,/shaded) end
KÖSZÖNÖM A FIGYELMET!