La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

MANEJO BÁSICO DE Javier Peralta Calvillo, Ph.D..

Presentaciones similares


Presentación del tema: "MANEJO BÁSICO DE Javier Peralta Calvillo, Ph.D.."— Transcripción de la presentación:

1 MANEJO BÁSICO DE Javier Peralta Calvillo, Ph.D.

2 1ª PARTE: Ingredientes para un buen programa

3 Ingredientes para un buen programa:
“Descripción” del programa Definición de Variables Lectura de los Datos Procesado y/o Cálculo Visualización de Resultados Escritura de Resultados Fin del programa Subprograma 1 Subprograma 2 Programa bien estructurado. Un editor adecuado. División en subprogramas. Bucles y Condicionales anidados “con márgenes”. Comandos en “mayúsculas”. Arrays con corchetes en vez de paréntesis. COMENTARIOS!! FOR j=0,19 DO BEGIN FOR i=0,30 DO BEGIN IF a EQ 0 THEN BEGIN PRINT,’Hola’ ENDIF ENDFOR

4 2ª PARTE: Lectura y Escritura de Datos

5 Lectura y Escritura de datos (I):
Tipos de variables en IDL: ALFANUMÉRICAS O “STRINGS” NUMÉRICAS Números enteros (FIX) Números Racionales de Precisión Simple (FLOAT) Números Raciones de Precisión Doble (DOUBLE) Números Complejos (COMPLEX) Tipos de separadores de datos: COMAS (,) TABULACIONES ( ) ESPACIOS ( )

6 Lectura y Escritura de datos (II):
Escritura y Lectura de Datos separados por comas (,): ESCRITURA: Data = STRTRIM(dato1, 1) + ‘,’ + STRTRIM(dato2, 1) + ‘,’ + … PRINTF, 1, Data LECTURA: READF, 1, Data Data = STRSPLIT(Data , ‘,’ , /EXTRACT) Data = FLOAT(Data)

7 Lectura y Escritura de datos (III):
Escritura y Lectura de Datos con Formato (pag.140): FORMAT = ‘(F5.2)’  = PRINT, !PI, FORMAT=‘(D5.2)’ 3.14 PRINT, !PI, FORMAT=‘(D5.3)’ 3.142 PRINT, !PI, FORMAT=‘(D5.4)’ ***** OJO: Tanto en la Lectura como en la Escritura MISMO FORMATO!! Para varias columnas: FORMAT = ‘3(F5.2, 4x)’ PRINT, A1, A2, A3, FORMAT = ‘3(F5.2, 4x)’

8 Lectura y Escritura de datos (IV):
Escritura y Lectura de Arrays Multidimensionales (TIFF): Los ficheros de imagen TIFF son óptimos para almacenamiento: Cómoda Lectura y Escritura de Datos. Permiten guardar nºs Racionales de precisión simple (FLOAT) Compresión sin pérdida de datos. ESCRITURA: WRITE_TIFF, FileName, Data, /FLOAT, COMPRESSION=1 LECTURA: Data = READ_TIFF(FileName) OTRA POSIBILIDAD!! Ficheros HDF (pág. 161) Permiten: Múltiples Formatos de Datos Etiquetar Datos Multiplataforma

9 Lectura y Escritura de datos (V):
Manipulación de Ficheros: DIALOG_PICKFILE FILE_SEARCH FILE_BASENAME / FILE_DIRNAME FILE_COPY FILE_MOVE FILE_DELETE FILE_MKDIR

10 Lectura y Escritura de datos (VI):
Búsqueda de Datos en una Cabecera: FOR k=0, N_ELEMENTS(header)-1 DO BEGIN IF STRMATCH(header[k]), ‘*DECLINATION*’) THEN BEGIN ; Extract the Temperature data = STRCOMPRESS(header[k], /REMOVE_ALL) pos = STRPOS(data, ‘=‘) Temp = STRMID(data, pos+1) ; Take out RETURN from String Temp = STRMID(Temp, 0, STRLEN(Temp)-1) Temp = FLOAT(Temp) ENDIF ENDFOR Manipulando Strings: STRMATCH STRCOMPRESS STRPOS STRMID STRLEN

11 3ª PARTE: Representación Gráfica con IDL

12 Representación Gráfica con IDL (I):
Gráficas simples: PLOT y OPLOT PLOT, X, Y, XRange=[X1,X2], /Xs, YRange=[Y1,Y2], /Ys, … PSYM (para definido por usuario PSYM=8 y USERSYM) XYOUTS /DATA (coordenadas de la gráfica) /DEVICE (píxeles de la ventana gráfica) /NORMAL (coordenadas normalizadas de la ventana gráfica) COLOR24 (rutina de David Fanning!)

13 Representación Gráfica con IDL (II):
Caracteres Especiales: Ver Herschey Fonts (símbolos griegos y matemáticos) Los caracteres especiales de IDL permiten: Llevar a cabo tareas de “Códigos de Control” Imprimir símbolos especiales (cambiando la fuente) Con un poco de práctica… ¡hasta podemos escribir ecuaciones! NOTA: Existe un programa de IDL que permite reconocer comandos de LaTeX (TeXtoIDL).

14 Representación Gráfica con IDL (III):
Gráficas múltiples: Gráficas múltiples mediante !P.MULTI !P.MULTI = [0, 2, 2, 0, 0] !P.MULTI[0] – Indica el nº de gráficas que quedan por dibujar !P.MULTI[1] – Indica el nº de columnas de la ventana !P.MULTI[2] – Indica el nº de filas de la ventana !P.MULTI[3] – Indica en qué hueco de la vertical Z dibujamos (sólo 3D) !P.MULTI[4] – Indica el orden en que se van a rellenar los huecos Gráficas múltiples mediante POSITION POSITION = [Xi, Yi, Xf, Yf]

15 4ª PARTE: Truquillos y Advertencias con IDL

16 Truquillos y Advertencias con IDL (I):
¿Hartos de definir unidades para ficheros y ventanas? VENTANAS WINDOW, /FREE, TITLE=’Libertaaaaaaad!!’ FICHEROS GET_LUN, unit OPENR, unit, filename CLOSE, unit FREE_LUN, unit

17 Truquillos y Advertencias con IDL (II):
¿Cómo hacer que nuestro programa “sepa” dónde está ejecutándose? HELP,name = 'Mi_programa', /source, /procedure, output=Output Path = STRMID(Output[1] , STRPOS(output[1] , ':') - 1) Path = STRMID(Output[1] , STRPOS(output[1] , ' /') - 1) Directory = FILE_DIRNAME(Path) IF (STRPOS(Directory,'\') EQ -1) THEN Directory=Directory+'/' ELSE Directory=Directory+'\' ¿Qué hacer cuando no sabemos la extensión de un fichero de datos? WHILE NOT (EOF(unit) EQ 1) DO BEGIN ENDWHILE

18 Truquillos y Advertencias con IDL (III):
¿Cómo añadir filas y/o columnas a un array? Añadir Columnas A = 0 A = [A , 1] PRINT,A 0 1 Añadir Filas B = [2 , 3] A = [ [A] , [B] ] PRINT, A 2 3 Añadir una Dimensión más C = [ [4 , 5] , [6 , 7] ] A = [ [ [A] ] , [ [C] ] ] HELP, A A INT = Array[2, 2, 2]

19 Truquillos y Advertencias con IDL (IV):
¡Cuidado con los bucles!! A = FLTARR(50000) FOR i= 0 , N_ELEMENTS(A)-1 DO C = A[ i ] Loop limit expression too large for loop variable type. <LONG ( )>. Solución: FOR i= ULONG(0) , N_ELEMENTS(A)-1 DO C = A[ i ]

20 Truquillos y Advertencias con IDL (V):
¿Cómo hacer un volcado de la ventana gráfica? WSET,1 Image = TVRD(True=1) WRITE_PNG, Image_Name, Image CLOSE,1 ¿Cómo escoger y/o modificar valores de forma selectiva? Array = [ 1 , 67 , 23 , 5 , -43 , -8 , 299 , -400 ] idx_neg = WHERE( Array LT 0 , N_idx , COMPLEMENT=idx_pos) Array [idx_neg] = 0 PRINT, Array

21 Truquillos y Advertencias con IDL (VI):
¿Cómo cambiar las dimensiones de una matriz? B = REFORM(A, d1, d2, d3, …) Regla: (d1 + d2 + d3 + …) = N_ELEMENTS(A) ¿Para qué nos puede servir usar REFORM? Muchas rutinas de ajustes o interpolación exigen los datos como arrays 1D. Para que un sub-array tenga las dimensiones adecuadas. A = FLTARR(10, 10, 10) B = A[0, *, *] HELP, B B FLOAT = Array[1, 10, 10] B = REFORM(A[0, *, *])

22 Truquillos y Advertencias con IDL (VII):
Interrumpir un programa para hacer un “debugging” AXIOMAS DE LOS ERRORES: En el 99.99% de las ocasiones, si hay un error en tu programa es porque …. ¡¡ TE HAS EQUIVOCADO !!! (Asúmelo) [Nº de Errores] = cte · [Nº de líneas sin compilar] CORREGIR ERRORES: Para verificar, usar: PRINT y HELP Interrupción Incondicional: STOP Interrupción Condicional: READ, a

23 Bibliografía y Enlaces de Interés:
LIBROS: “IDL Programming Techniques”, David W. Fanning, ISBN X. WEBS CON PAQUETES DE IDL Y TUTORIALES: Paquetes “Coyote” de D.W. Fanning: “A guide to IDL for Astronomers”: Colección de enlaces de NASA: SOY ANTI-SISTEMA Y SÓLO USO SOFTWARE LIBRE: “GDL” – Compilador GNU compatible con IDL:


Descargar ppt "MANEJO BÁSICO DE Javier Peralta Calvillo, Ph.D.."

Presentaciones similares


Anuncios Google