13
Making friends with IDL IDL is an interpreted rather than a compiled language. This means that large IDL programs can execute less rapidly than equivalent compiled programs written in FORTRAN or C. IDL LIMITATIONS: IDL is a proprietary system (need licence) interactive environment excellent for visualizing, analyzing, editing, and displaying numer immediate access to all variables optimized array operations versatile built-in plotting and graphics routines data structures possible interface with C and Fortran routines on line help (?) IDL = interactive data language

Making friends with IDL

  • Upload
    meara

  • View
    48

  • Download
    1

Embed Size (px)

DESCRIPTION

Making friends with IDL. IDL = interactive data language. interactive environment. immediate access to all variables. excellent for visualizing, analyzing, editing, and displaying numerical data sets. optimized array operations. versatile built-in plotting and graphics routines. - PowerPoint PPT Presentation

Citation preview

Page 1: Making friends with IDL

Making friends with IDL

IDL is an interpreted rather than a compiled language. This means that large IDL programs can execute less rapidly than equivalent compiled programs written in FORTRAN or C.

IDL LIMITATIONS:

IDL is a proprietary system (need licence)

interactive environment

excellent for visualizing, analyzing, editing, and displaying numerical data sets

immediate access to all variables

optimized array operations

versatile built-in plotting and graphics routines

data structures

possible interface with C and Fortran routines

on line help (?)

IDL = interactive data language

Page 2: Making friends with IDL

Making friends with IDL

create variables

> name = ‘Maxwell’ creates a string> z = 1.0e-8 creates a scalar> testdata = fltarr(512,512) creates a 512x512 2-D array with zero entries> a = [1,2,3] creates a vector> a = [a,4] expands a vector

Warning:

If you redefine a variables during your work, you lose the previous values

Avoid operation with different variables types. For example using float and integer these could be different > print, 3.456 * 1

> print, 3.456 * 1.

Page 3: Making friends with IDL

Variables

Variable names can have letters, numbers and underscores in them. They are NOT case-sensitive: aaa, Aaa and AAA are all the same variable.

IDL> a=[3, 5, 6, 2.5, 100, 27.7]

IDL> a= [[ 2,3,4],[10,20,30]]

IDL> a=float(b)IDL> a=fltarr(n_elements(b),4,2)

Array index START FROM 0!!!!

Array of 2 rows and 3 columns= Array[3,2]

One dimension array of 6 elements= Array[6]

Page 4: Making friends with IDL

Array manipulations

INVERT - Computes the inverse of a square array. MAX - Returns the value of the largest element of Array. MEDIAN - Returns the median value of Array or applies a median filter. MEAN – Return the mean value (also first element of MOMENT).MIN - Returns the value of the smallest element of an array. MOMENT – compute the first 4 moments (mean, variance…)REFORM - Changes array dimensions without changing the total number of elements. REVERSE- Reverses the order of one dimension of an array. SIZE- Returns array size and type information. TOTAL - Sums of the elements of an array. TRANSPOSE - Transposes an array. WHERE- Returns subscripts of nonzero array elements.

(a b c)## (g h) = (ag+bi+ck ah+bj+cl) (d e f) (i j) (dg+ei+fk dh+ej+fl) (k l)

(a b c)# (g h) = (ag+dh bg+ch cg+fh) (d e f) (i j) (ai+dj bi+ej ci+fj) (k l) (cg+fh ci+fj ck+fl)

> a = [1,2,3] > b = [4,5] > print, a#b > print, b#a > print, a##b> print,a*b

> print,a+1> print,b*2> print,a+b

Warning!!!

Try to avoid loopst=0for i=0,n_elements(a)-1 do t=t+a(i)

t=total(a)

Page 5: Making friends with IDL

looking for help

? name

help

print

help,variable : print variable informations.

help,A,/str : print structure info

help,/rou : prints list for all compiled procedures. Lists procedure and

functions separately.

help,/sy : prints current values of all "system variables", which are

special variables known to all routines. Names of these begin with a

"!", e.g. !dir, !path, etc.

help,/rec : prints contents of command recall buffer in reverse order

help,/dev : prints parameter settings for current graphics device

help,/mem : lists current memory usage

print,max(a); print,min(a); print,max(a); print,mean(a); print,variance(a); print,median(a); print,moment(a): print various statistical properties of image array. (moment prints first four moments.)

Open a help on line windows and search for ‘name’

Page 6: Making friends with IDL

Saving data (and time!)

save

restore

Safety idea: save your data!!!

Be prepared: 99% of time you will have to redo plots.Usual sequence:

1) Make plot2) Save data (and exit from idl)3) Meeting4) Restore data5) Redo plot

It will help also have your code saved in a routines.

> save,variable1,variable2,variable3,filename=‘~elisa/idl/data.sav’

Keyword: ALL => save all common block, system variable and local variable from the current IDL session.

> save,/all,filename=‘datatemp.sav’’

restore, filename=‘~elisa/idl/data.sav’

> restore,filename=‘datatmp.sav’

make a routine!

Page 7: Making friends with IDL

main routine

procedures or subroutines

functions

As you type, each line is interpreted and immediately executed

for (loop), if, case...

parameters and keywords

IDL routines (.pro)

One of the best ways to learn how to write and use IDL programs is to look the existing IDL programs

...end

pro NAME, VARIABLES...end

function NAME,VARIABLES...return,VALUEend

> .r filename

> name, variables

> a = name (variables)

NAME,input1,input2...output1,output2...keyword1=value1,$ keyword2=value2, /Keyword3.... optional and can be in any order

.pro file requirement How to call it

without .pro

OR

Page 8: Making friends with IDL

Program execution (and other)

all IDL procedures/functions are assumed to be in files with the explicit extension '.pro'.

compiles the IDL procedure(s) or function(s) in the file [name].pro. If this is a main program, also executes it.

IDL will locate the first file with this name in the IDL path or current directoryWARNING!!!!

stop > .c or .con

@file_name

; comment

Values of keywords are usually determined by assignment statements:

PROCEDURE_NAME,parm1,parm2.....KEYWORD1=100.,KEYWORD2='dumbo',...

in the case of switches, keywords can be set to a value of 1 by using the following syntax:

NAME,parm1,parm2...../KEYWORD1,.....

> retall

Run from IDL prompt

Inside a file.proCompile the file_name.pro Useful if the file mane is different from the procedure name

>.r or .run [name]

Don’t forget the comments!!! Comments begin with ‘;’

for debugging!! ... print... plot... to continue

if you wont to come back to the first level

Page 9: Making friends with IDL

Structures

A structure can be thought of as a user-defined data type or groups of different data IDL allows you to put lots of variables into a single ‘structure’

dsat={aod550:aot,$ ; mean AODstdaod550:sigma,$ ; standard deviationn:num,$ ; number of points latc:latitude,$ ; central lat of the boxeslonc:longitude} ; central longitude of the boxes

For example satellite data can be load as a structure containing:Instrument name, data and time, pixels radiances, coordinates and observing angles of the pixels

Define a structure:A structure (e.g. dsat) is an ensamble of other, previously defined, variables (and structures)

> help, dsat,/str AOD550 DOUBLE Array[720, 360] STDAOD550 DOUBLE Array[720, 360] N LONG Array[720, 360] LATC DOUBLE Array[360] LONC DOUBLE Array[720]

> print,dsat.aod550(good)

To access the variables of a structureUse: mone_str.nome_var

Routine that read satellite data usually load a structure for any image/orbit

keep related variables togetherpass/return a lot of variables with only one name

Page 10: Making friends with IDL

Basic plots

window,0,xsize=300,ysize=200x=findgen(10)

IDL> print,x 0.000 1.000 2.000 3.000 4.000 5.000 6.000 7.000 8.000 9.000

IDL> plot,sin(x2)

x2=2*!PI/100*findgen(100)

seed=1ln=32x=randomu(seed,n)y=randomu(seed,n)y2=randomu(seed,n)plot,x,y,psym=1,title='Random XY Points'oplot,x,y2,psym=2,colour=2

Page 11: Making friends with IDL

Others useful things

cut of data where

good = where (time eq 1000.,count) if (count eq 1 ) then begin...

If (count gt 1) then begin plot, x(good), y(good)

endif

and             ; and ...or              ; orgt              ; greater than (similarly lt)ge              ; gt or equal to (similarly le)eq              ; equal tone              ; not equal to

Logical operator

a = tvrd(true=3) write_jpeg, 'namefile.jpg',a,true=3

save a window like .jpg

print on postscript .ps file set_plot, 'ps' device, filename='filename.ps‘…close, /deviceset_plot, 'x'

Smaller file, good to make presentations and movies,NOT good for reports and papers !!!

‘comp_map_'+sat1+'_vsall.jpg’

plotting commands

png?

Page 12: Making friends with IDL

routines at AOPP

mappoints,data,lat,lon,centre=[0,0],/nogrey,nlevels=100

loadxy loadxyz

colour_ps

/home/crun/eodg/idl/

tvdata

ncol=4 nrow=4 !P.MULTI= [0,ncol,nrow,0,0]

mappoints,dayav.AOD550,lat,lon,centre=[0,0],/nogrey,$Nlevels=100,range=range,symsize=0.6,$title='AOD all daset average '+strcompress(i+1)+' March 2006'

avgrid,lat,lon,aod

imagepoints,data,lat,lon

fitexy,px,py,A,B,X_SIG=X_SIG,Y_SIG=Y_SIG

Linear fit when both x and y have errors (y = A + B x)

Plots data points, with defined latitudes and longitudes

Interpolate data (with the associated lat,lon) onto a regular lat lon grid, and plot the image

Using the same some fast regridding code (RAL)

Load txt file in columns

Set colour bar

+ several routine to load different type of data

ASK!!!

Page 13: Making friends with IDL