1 / 23

MANEJO BÁSICO DE

MANEJO BÁSICO DE. Javier Peralta Calvillo, Ph.D. 1ª PARTE: Ingredientes para un buen programa. 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

deion
Download Presentation

MANEJO BÁSICO DE

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 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)’  = 3.1415927 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 IFSTRMATCH(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). • http://physweb.mnstate.edu/mcraig/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 • 0 1 • 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 ( 49999)>. 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 1 67 23 5 0 0 299 0

  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 0-9662383-2-X. • WEBS CON PAQUETES DE IDL Y TUTORIALES: • Paquetes “Coyote” de D.W. Fanning: • http://www.dfanning.com/ • “A guide to IDL for Astronomers”: • http://www.astro.virginia.edu/class/oconnell/astr511/IDLguide.html • Colección de enlaces de NASA: • http://idlastro.gsfc.nasa.gov/other_url.html • SOY ANTI-SISTEMA Y SÓLO USO SOFTWARE LIBRE: • “GDL” – Compilador GNU compatible con IDL: • http://gnudatalanguage.sourceforge.net/

More Related