Bioinformatics at COMAV

Numpy

Numpy es una librería en la que se define un tipo de dato que representa matrices multidimensionales, equivalentes a las matrices del R. Además incluye algunas funcionalidades básicas para trabajar con ellas. Numpy es una librería con una amplia tradición en Python, es estable y muy rápida. Se dispone de un buen tutorial de Numpy.

Python en ciencia

Scipy es una librería que provee herramientas matemáticas y algoritmos. Es software libre distribuido bajo la licencia BSD desarrollado por una comunidad de desarrolladores tutelada por Enthought

El objetivo de SciPy es crear un entorno de trabajo similar a Matlab. Scipy se compone de numerosos módulos. El más importante de todos ellos es Numpy ya que es el que proporciona el array multidimensional que todas los otros utilizan como base. Algunos de los módulos de Scipy son:

cluster
hierarchical clustering, vector quantization, K-means
fftpack
Discrete Fourier Transform algorithms
integrate
numerical integration routines
interpolate
interpolation tools
linalg
linear algebra routines
optimize
optimization algorithms including linear programming
signal
signal processing tools
sparse
sparse matrix and related algorithms
spatial
KD-trees, nearest neighbors, distance functions
stats
statistical functions

pandas

pandas es un paquete de Python que proporciona estructuras de datos similares a los dataframes de R. Los principales tipos de datos que pueden representarse con pandas son:

  • Datos tabulares con columnas de tipo heterogéneo con etiquetas en columnas y filas.
  • Time series.

pandas tiene dos tipos de datos principales, Series (1 dimensión) y DataFrame (2 dimensiones). pandas depende de Numpy.

matplotlib

matplotlib es una librería que permite hacer gráficos. Se puede utilizar junto a Numpy o independientemente. Los gráficos pueden ser guardados en ficheros (png, svg, pdf, etc.) o ser utilizados interactivamente. El módulo principal de uso de matplotlib es pyplot. pyplot presenta un interfaz state-machine. Ejemplo:

import matplotlib.pyplot as plt

plt.plot(range(10), range(10))
plt.title("Simple Plot")
plt.show()

Otro interfaz similar es pylab que combina pyplot con numpy.

Además de los tipos de gráficos incluidos directamente en matplotlib hay extensiones que añaden más funcionalidad como:

  • Basemap. Mapas greográficos.
  • Mplot3d: Gráficos 3D.

Rpy

Rpy permite utilizar R desde dentro de Python. Hay dos versiones rpy y rpy2. rpy2 es una reescritura completa de la librería y es la recomendada para iniciar proyectos nuevos.

Tutorial de matplotlib

Algo de nomenclatura:

Figure
Incluye todos los elementos. Puede incluir varios subplots, es decir varios Axes.
Axes
Incluye la mayor parte de los elementos de la figura: Axis, Tick, Line2d, Text, etc. y sitúa el sistema de coordenadas.
Axis
Representa los ejes de la gráfica.
Tick
Marca en uno de los ejes.

pyplot nos permite dibujar gráficas. Cada comando que ejecutamos modifica la figura de forma secuencial:

>>> import matplotlib.pyplot as plt
>>> plt.ylabel('Numeros')
>>> plt.show()

El comando plot dibuja líneas o puntos en Axes. Podemos modificar el formato de las series de datos, talno el color como la forma. Para una lista completa de qué se puede hacer con el comando plot hay que mirar su documentación.

::
>>> plt.plot([1,2,3,4], [1,4,9,16], 'ro')

El formato de las líneas también puede ser modificado:

>>> plt.plot([1, 2, 3, 4], [1, 4, 9, 16], linewidth=2.0)

Disponemos de una lista completa de propiedades de las líneas que pueden ser modificadas en la documentación de Line2D.

También podemos modificar los ejes. Por ejemplo indicando a axis cuales son os xmin, xmax, ymin e ymax:

>>> plt.axis([0, 6, 0, 20])

Para situar texto en las gráficas se utiliza el comando text:

>>> plt.text(2, 3, 'Hola')

matplotlib también nos permite hacer diagramas de barras (bar):

>>> plt.bar([1, 2, 3, 4], [5, -3, 1, 2], width=width)

Resulta muy sencillo también crear histogramas (hist):

>>> samples = [1, 1, 2, 3, 4, 3, 2, 3, 6, 7, 8,]
>>> plt.hist(samples)

Documentación adicional:

| | index