lunes, 24 de junio de 2013

Python para BioInformatica introducción al comando Seq (parte 1)


Las secuencias son simplemente cadenas de texto como por ejemplo “GGTCGGTGGTCG”, que representan algún tipo de información de índole biológico. Se debe distinguir algunas características de  las cadenas y las secuencias en Biopython, tienen diferentes métodos. Aun que el objeto Seq admite algunos de los métodos de una cadena simple.
Una diferencia sumamente importante es que un objeto Seq tiene, es que  depende de un alfabeto (Alphabet), el cual describe exactamente muchas de las características que posee la secuencia en estudio, esta es su gran ventaja de uso ya que  así nos permite limitar la información  que contiene el objeto Seq. En esta introducción notaremos algunas similitudes  de una secuencia y una cadena simple en python.
>>> cadena = "AGAGAGACTGCTCG"
>>> from Bio.Seq import Seq
>>> secuencia = Seq ("AGAGAGACTGCTCG")
>>> ### al aplicar el comando type notamos la diferencia
>>> print(type(cadena))
<class 'str'>
>>> print(type(secuencia))
<class 'Bio.Seq.Seq'>
>>> ### podemos conocer la magnitud de cada una
>>> print(len(secuencia))
14
>>> print(len(cadena))
14
>>> ### tambien los elementos  q la componen
>>> secuencia[6]
'A'
>>> cadena[6]
'A'
>>> ### se puede extrer un segmento de cada una como si  fuera una cadena normal
>>> cadena2 = cadena[1:3]
>>> secuencia2 = secuencia[1:3]
>>> #### hacer operaciones basicas  como un string
>>> total = secuencia + secuencia2
>>> print (total)
AGAGAGACTGCTCGGA
>>> TOTAL = cadena + cadena2
>>> print(TOTAL)
AGAGAGACTGCTCGGA
>>> ### podemos invertir una cadena
>>> cadena_invertidad = cadena[::-1]
>>> cadena_invertidad
'GCTCGTCAGAGAGA'
>>> #### de la  misma forma se puede invertir una secuencia
>>> secuencia_invertida = secuencia[::-1]
>>> secuencia_invertida
Seq('GCTCGTCAGAGAGA', Alphabet())
>>> #### empleando count
>>> ######### aplicado a una cadena
>>> cadena
'AGAGAGACTGCTCG'
>>> cadena.count("A")
4
>>> #### esto qiere decir que en nuestra cadena aparece 4 veces A
>>> ######### lo mismo se puede hacer  auna secuencia
>>> secuencia.count("A")
4
Este sencillo ejemplo nos hace  ver que muchos de nuestros comandos usados a diario  cuando programamos en python son aplicados  en una secuencia. Para demostrarlo crearemos un pequeño programa donde trataremos con el objeto secuencia y como una cadena normal y notaremos que el resultado es el mismo.


from Bio.Seq import Seq
import matplotlib.pyplot as plt
from matplotlib import font_manager as fm

secuencia = Seq ("ACGCTGCTCGATCGCTGATGCTCGCCGATCGCTCGATGCTGCTGCTGCTAGA")
a = secuencia.count("A")
g = secuencia.count("G")
c = secuencia.count("C")
t = secuencia.count("T")
D = len(secuencia)
dato = [a,g,c,t]
pa = a/D *100
pg = g/D *100
pc = c/D * 100
pt = t/D * 100
fraccion = [pa, pg, pc, pt]
nombres = 'A', 'G', 'C', 'T'
fig = plt.figure(1,figsize= (5,5))
ax = fig.add_axes([0.1,0.1,0.8,0.8])
plt.title('Composicion de la Secuencia')
p, texto, dtexto = ax.pie(fraccion, labels = nombres, autopct = '%1.1f%%')
propiedades = fm.FontProperties()
propiedades.set_size('x-large')
plt.setp(dtexto, fontproperties= propiedades)
plt.setp (texto, fontproperties = propiedades)

plt.show()
La gráfica generada  es:
 Ahora trataremos nuestra secuencia como si fuera una cadena simple  en python
from Bio.Seq import Seq
import matplotlib.pyplot as plt
from matplotlib import font_manager as fm

cadena = "ACGCTGCTCGATCGCTGATGCTCGCCGATCGCTCGATGCTGCTGCTGCTAGA"
a = cadena.count("A")
g = cadena.count("G")
c = cadena.count("C")
t = cadena.count("T")

D = len(cadena)
dato = [a,g,c,t]

pa = a/D *100
pg = g/D *100
pc = c/D * 100
pt = t/D * 100

fraccion = [pa, pg, pc, pt]
nombres = 'A', 'G', 'C', 'T'
fig = plt.figure(1,figsize= (5,5))
ax = fig.add_axes([0.1,0.1,0.8,0.8])
plt.title('Composicion de la Secuencia como cadena')
p, texto, dtexto = ax.pie(fraccion, labels = nombres, autopct = '%1.1f%%')
propiedades = fm.FontProperties()
propiedades.set_size('x-large')
plt.setp(dtexto, fontproperties= propiedades)
plt.setp (texto, fontproperties = propiedades)

plt.show()
la gráfica como cadena es:

No hay comentarios:

Publicar un comentario