Python

=Trucos Python=

Generar una pausa antes de terminar el programa.
Suponiendo que tenemos un archivo digamos: Trucos.py. Con la línea siguiente code format="python" raw_input("Pulsa enter para finalizar") code al final del archivo, se genera una pausa antes de terminar

Tiempo de ejecución
Para saber cuanto se tarda un script de Python o ciertas líneas dentro del script, sin necesidad del time de Bash o Shell, se puede escribir dentro del scritp code format="python" import time

t0 = time.clock tf = time.clock - t0
 * 1) Tiempo incial
 * 1)    Aqui se realiza el proceso del que se desea
 * 2)    conocer el tiempo de ejecución

print "Tiempo de ejecución: ", tf, " (s)" code

=Abriendo archivos de Matlab= Aquí va el código para abrir archivos v 5.0 de Matlab .mat en Python usando scipy. Se ha realizado con Matlab 7 y Python 2.5 y Scipy respectivo.

code format="python" >>> import scipy.io >>> from numpy import * >>> archivo = scipy.io.loadmat('MatrizEnMatlab.mat') >>> archivo.keys ['A','__version__','__header__','Angulos','__globals__'] >>> # Existen dos elementos en el archivo .mat: A y Angulos >>> # abriendo A >>> A = archivo['A'] >>> ## Listo a trabajar con la matriz A code
 * 1) Desde terminal o consola de linux: ejecutar python

=Uso de ROOT y Python= code format="bash" joserm84@Superchuletas:~/PythonScripts$ export ROOTSYS=/usr/share/root joserm84@Superchuletas:~/PythonScripts$ export LD_LIBRARY_PATH=$ROOTSYS/lib:$LD_LIBRARY_PATH joserm84@Superchuleats:~/PythonScripts$ export PATH=$ROOTSYS/bin:$PATH joserm84@Superchuletas:~/PythonScripts$ export PYTHONPATH=$PYTHONPATH:$ROOTSYS/lib joserm84@Superchuletas:~/PythonScripts$ python leeRoot.py code Donde leeRoot.py es de la forma code format="python" from ROOT import TFile, gDirectory, TCanvas archivo = TFile("QuinceF18_360s.root") mychain = gDirectory.Get('finalCoinc') n = mychain.GetEntriesFast s, p = zeros(n), zeros(n) energia = TH1F("energia","Energia F-18",150,0.2,0.7); for j in xrange(n): nb = mychain.GetEntry(j) s[j] = mychain.positionX p[j] = mychain.positionY energia.Fill(s[j]) c = TCanvas("c","Energia F-18",500,300) energia.Draw code
 * 1) Suponiendo que se han instalado de manera correcta ambos paquetes,[[image:c.gif width="319" height="302" align="right" caption="Distribución energia F-18 (Python + ROOT)"]]
 * 2) En mi caso tengo el archivo .root en $HOME/PythonScripts.
 * 3) Root esta instalado en /usr/share/root
 * 4) Mi archivo root tiene esta estructua: RootFile->finalCoinc
 * 5) finalCoinc tiene estas variables: energy1, positionX, positionY, etcétera.
 * 6) Desde una terminal:
 * 1) !/usr/bin/python

=Numpy & MatPlotLib en Python= La versatilidad de Python se ve reflejada con la herramienta numérica Numpy, la cual cuenta rutinas para álgebra lineal, resolución de sistema de ecuaciones, entre muchos otros. Tanto que ha tenido una aceptancia muy grande al ser una alternativa software libre a MatLab (además de octave o scilab).

La otra herramienta para desplegar gráficos "a la MatLab", es MatPlotLib. Cuando uno realiza reconstrucción tomográfica (resolviendo iteraciones con numpy), el resultado final (imagen reconstruida) es una matriz o arreglo, el cual debe ser desplegado para su análisis visual. MatPlotLib, permite desplegarlo de manera fácil como se mostrará más adelante.

A. Instalando MatPlotLib y numpy
Si no estás en Ubuntu, después de descargar MatPlotLib y NumpyNumPy el proceso de instalación es como en la mayoría de extensiones de Python; como superusuario simplemente: code format="bash" sudo apt-get install python-numpy python-matplotlib
 * 1) Si estás en Ubuntu solamente

tar zxf NombreNumpyDescargado.tar.gz cd NombreNumPyDescagado sudo python setup.py install
 * 1) De otra manera, descargarlo y
 * 2) después de descomprimirlo con
 * 1) ingresar a la carpeta, como se llame. e.g.
 * 1) Instalarlo


 * 1) Lo para matplotlib

code

B. Ejemplo de aplicación
Generar archivo nombrequequiera.py con lo siguiente code format="python" from numpy import zeros import matplotlib.pyplot as plt n = 64 m = 10 a = zeros((n,n)) a[(n/2-1-m/2):(n/2-1+m/2),(n/2-1-m/2):(n/2-1+m/2)] = 1 plt.imshow(a, interpolation='nearest'); plt.show code
 * 1) Tamaño de la imagen (pix)
 * 1) Tamaño del cuadro dentro de la imagen (pix)
 * 1) Centrado en el origen
 * 1) Visualizamos