Python en ciencia Pycon Argentina 2009

57
Python y ciencia Python y ciencia Sebastián Bassi Sebastián Bassi GenesDigitales, SoLAr, Biopython, GenesDigitales, SoLAr, Biopython, DNALinux, PyAr, Wikimedia-AR, INTA DNALinux, PyAr, Wikimedia-AR, INTA (EuSol) (EuSol) Una fórmula exitosa

description

Razones para usar Python en proyectos científicos, incluyendo ejemplos de uso en la vida real en el area de bioinformatica.

Transcript of Python en ciencia Pycon Argentina 2009

Page 1: Python en ciencia Pycon Argentina 2009

Python y cienciaPython y ciencia

Sebastián BassiSebastián Bassi

GenesDigitales, SoLAr, Biopython, GenesDigitales, SoLAr, Biopython, DNALinux, PyAr, Wikimedia-AR, INTA DNALinux, PyAr, Wikimedia-AR, INTA

(EuSol)(EuSol)

Una fórmula exitosa

Page 2: Python en ciencia Pycon Argentina 2009

¿Qué es Python?¿Qué es Python?

Python es un lenguaje de programación orientado Python es un lenguaje de programación orientado a objetos que puede usarse para varios tipos de a objetos que puede usarse para varios tipos de

desarrollo de software. Ofrece soporte para desarrollo de software. Ofrece soporte para integrarse con otros lenguajes y herramientas, integrarse con otros lenguajes y herramientas,

viene con una importante biblioteca estándar, y viene con una importante biblioteca estándar, y puede aprenderse en pocos días.puede aprenderse en pocos días.

Page 3: Python en ciencia Pycon Argentina 2009

Características de PythonCaracterísticas de Python

• Libre y gratuito.Libre y gratuito.• Fácil de leer.Fácil de leer.• Multiparadigma.Multiparadigma.• Fácil de aprender.Fácil de aprender.• Tipo de datos versátiles (alto nivel).Tipo de datos versátiles (alto nivel).• Viene con pilas: Viene con pilas:

Page 4: Python en ciencia Pycon Argentina 2009

Fácil de leerFácil de leer• Copiar archivo en C:Copiar archivo en C:#include <stdio.h>#include <stdio.h>

int main(int argc, char **argv) {int main(int argc, char **argv) {

FILE *in, *out;FILE *in, *out;

int c;int c;

in = fopen("input.txt", "r");in = fopen("input.txt", "r");

out = fopen("output.txt", "w");out = fopen("output.txt", "w");

while ((c = fgetc(in)) != EOF) {while ((c = fgetc(in)) != EOF) {

fputc(c, out);fputc(c, out);

}}

fclose(out);fclose(out);

fclose(in);fclose(in);

}}

Page 5: Python en ciencia Pycon Argentina 2009

Fácil de leerFácil de leer

• Copiar archivo en Python:Copiar archivo en Python:

out = open("output.txt", "w")out = open("output.txt", "w")

out.writelines(open("input.txt"))out.writelines(open("input.txt"))

out.close()out.close()

Page 6: Python en ciencia Pycon Argentina 2009

MultiplataformaMultiplataforma

• Ademas de funcionar en los “sospechosos de siempre” (Linux, Windows y OSX), corre en JAVA VM (Jython), .Net (IronPython), Celulares (Nokia S-60), iPod, Palm, Reproductores MP3 (iRiver).

Page 7: Python en ciencia Pycon Argentina 2009

Tipos de datosTipos de datos

• Numericos: Int, float, complex, decimal.• Strings (Unicode “nativo”): “qwerty”• Listas: ['espada','pócima','comida']• Tuplas: (23,54,-78)• Sets: {'ssr23','ssr15','ssr12','ssr32'}• Dict: {'blanco':'blanka','azul':'blua'}

{1:(2.4,11.8), 2:(0,13), 4:(71.1,98)}

Page 8: Python en ciencia Pycon Argentina 2009

Las pilas (I):Las pilas (I):

Servicios del sistema, fecha y hora, subprocesos, sockets internacionalización y localización, base de datos, threads, formatos zip, bzip2, gzip, tar, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, XML-RPC (cliente y servidor), email, clientes HTTP, FTP, SMTP, NNTP, POP3, IMAP4, servidores HTTP, SMTP, herramientas MIME, interfaz con el garbage collector, serializador y deserializador de objetos, debugger, profiler, random, curses, logging, compilador, decompilador, CSV, análisis lexicográfico, interfaz gráfica incorporada, matemática real y compleja, criptografía (MD5 y SHA)

Page 9: Python en ciencia Pycon Argentina 2009

Las pilas (II)Las pilas (II) Bases de datos MySQL, SQLite, PostgresSQL, MS SQL, Informix, DB/

2, Sybase Interfaces gráficas Qt, GTK, win32, wxWidgets, Cairo Frameworks Web Django, Turbogears, Zope, Plone, webpy Y un montón más de temas... Biopython: Manejo de secuencias PIL: para trabajar con imágenes PyGame: juegos, presentaciones, gráficos SymPy: matemática simbólica Numpy: calculos de alta performance ...

Page 10: Python en ciencia Pycon Argentina 2009
Page 11: Python en ciencia Pycon Argentina 2009
Page 12: Python en ciencia Pycon Argentina 2009
Page 13: Python en ciencia Pycon Argentina 2009

Características deseables de un Características deseables de un lenguaje para uso en ciencia.lenguaje para uso en ciencia.

• Libre y gratuito.Libre y gratuito.• Fácil de leer.Fácil de leer.• Fácil de aprender.Fácil de aprender.• Tipo de datos versátiles (alto nivel).Tipo de datos versátiles (alto nivel).• Biblioteca completa (incorporada y disponible Biblioteca completa (incorporada y disponible

externamente).externamente).• Suficientemente rápidoSuficientemente rápido

Page 14: Python en ciencia Pycon Argentina 2009

MatemáticaMatemática• NumPy:

– Manejo de matrices N-dimensionales.

– Funciones algebra lineal

– Transformaciones de Fourier

– Números aleatorios sofisticados

– Herramientas para integrar código C++ y Fortran

• Matplotlib: “framework para crear gráficos científicos similares a las herramientas provistas por Matlab”.

• Chaco: 2-Dimensional Plotting• Interfase: GNUPLOT, R, MATLAB.

Page 15: Python en ciencia Pycon Argentina 2009
Page 16: Python en ciencia Pycon Argentina 2009

MatemáticaMatemática• Interfases: GNUPLOT, R, MATLAB: FNUPlot-py, Rpy, PyMAT Interfases: GNUPLOT, R, MATLAB: FNUPlot-py, Rpy, PyMAT

Page 17: Python en ciencia Pycon Argentina 2009

BioinformáticaBioinformática

Page 18: Python en ciencia Pycon Argentina 2009

Ventajas de Python para Bioinformática

•Manejo de texto y expresiones regulares: Nombres de secuencias, secuencias, anotaciones, referencias bibliograficas, etc.•Modular: Puede integrarse upstream o downstream con otros programas (en Python o en otros lenguajes).•Fácil de escribir: Ideal para programadores no profesionales•Buen lenguaje para prototipos: Es rápido para “codear”.•Apto para aplicaciones web: Método estandar en laboratorios para mostrar datos.

Page 19: Python en ciencia Pycon Argentina 2009

BiopythonBiopython

•Manipular secuencias•Enzimas de restricción•BLAST (local y online)•Acceso a bases de datos online (e.g. NCBI's EUtils)•Herramientas CLI (e.g. clustalw, emboss)•Clustering (Bio.Cluster)•Filogenética (Bio.Nexus)•Estructura proteica (Bio.PDB)•Soporte BioSQL•Genética de población (Bio.PopGen)

Page 20: Python en ciencia Pycon Argentina 2009
Page 21: Python en ciencia Pycon Argentina 2009
Page 22: Python en ciencia Pycon Argentina 2009
Page 23: Python en ciencia Pycon Argentina 2009
Page 24: Python en ciencia Pycon Argentina 2009

Efecto de la reina rojaEfecto de la reina roja

Page 25: Python en ciencia Pycon Argentina 2009

M.A.S (Selección Asistida por M.A.S (Selección Asistida por marcadores).marcadores).

➲ Técnica utilizada actualmente para la mayoría Técnica utilizada actualmente para la mayoría de los traits.de los traits.

➲ Seguimiento de los traits usando marcadores Seguimiento de los traits usando marcadores molecularesmoleculares

➲ Conceptos involucrados: Conceptos involucrados: Selección “tradicional”.Selección “tradicional”.

Marcadores molecularesMarcadores moleculares

Page 26: Python en ciencia Pycon Argentina 2009

Selección tradicionalSelección tradicional➲ Se determina una propiedad (trait) que se desea Se determina una propiedad (trait) que se desea

modificar (altura, % de aceite del grano, color de modificar (altura, % de aceite del grano, color de hoja, resistencia a quiebre, a enfermedades, etc).hoja, resistencia a quiebre, a enfermedades, etc).

➲ Se identifica fuente del trait (o se induce si no la Se identifica fuente del trait (o se induce si no la hubiese).hubiese).

➲ Se cruza la variedad que tiene el trait de interes, Se cruza la variedad que tiene el trait de interes, contra línea elite.contra línea elite.

➲ Se busca en la descendencia a los portadores del Se busca en la descendencia a los portadores del trait.trait.

➲ Se cruza nuevamente con los progenitores (para Se cruza nuevamente con los progenitores (para licuar otros genes de la fuente del trait)licuar otros genes de la fuente del trait)

Page 27: Python en ciencia Pycon Argentina 2009

Se busca la fuente del trait

Page 28: Python en ciencia Pycon Argentina 2009
Page 29: Python en ciencia Pycon Argentina 2009

X

Planta con trait deseado (0% genes “elite”)

Planta “elite”(100% genes “elite”)

F1

Page 30: Python en ciencia Pycon Argentina 2009

X

Planta con trait deseado y 50% de genes “elite”

Planta “elite” (100%)

F2

Page 31: Python en ciencia Pycon Argentina 2009

X

Planta con trait deseado y 75% de genes “elite”

Planta “elite” (100%)

F3

Page 32: Python en ciencia Pycon Argentina 2009

X

Planta con trait deseado y 87,5% de genes “elite”

Planta “elite” (100%)

F4

Page 33: Python en ciencia Pycon Argentina 2009

Ganancia genéticaGanancia genética

½ + ¼ + 1/8 + 1/16 + ....½ + ¼ + 1/8 + 1/16 + ....

En la F7 tenemos 98% de genes “elite”, pero En la F7 tenemos 98% de genes “elite”, pero conservando el gen “introducido”.conservando el gen “introducido”.

Page 34: Python en ciencia Pycon Argentina 2009

MASMAS

➲ Se determina una propiedad (trait) que se desea modificar.

➲ Se identifica fuente del trait (o se induce si no la hubiese).

➲ Se cruza la variedad que tiene el trait de interes, contra línea elite.

➲ Se busca en la descendencia a los portadores de los marcadores.

➲ Se cruza nuevamente con los progenitores

Page 35: Python en ciencia Pycon Argentina 2009

Se busca la fuente del trait

Page 36: Python en ciencia Pycon Argentina 2009
Page 37: Python en ciencia Pycon Argentina 2009

X

Planta con trait deseado (0% genes “elite”)

Planta “elite”(100% genes “elite”)

F1

Page 38: Python en ciencia Pycon Argentina 2009

X

Planta con trait deseado y 50% de genes “elite”

Planta “elite” (100%)

F2

Page 39: Python en ciencia Pycon Argentina 2009

X

Planta con trait deseado y 75% de genes “elite”

Planta “elite” (100%)

F3

Page 40: Python en ciencia Pycon Argentina 2009

Ventajas uso de MASVentajas uso de MAS

➲ Aceleración de tiempos.Aceleración de tiempos.

➲ Ahorro al no continuar lineas sin el trait.Ahorro al no continuar lineas sin el trait.

➲ Precisión al usar variable mas reproducible.Precisión al usar variable mas reproducible.

Page 41: Python en ciencia Pycon Argentina 2009

Aportes de la Bioinformática al Aportes de la Bioinformática al MASMAS

➲ Construcción de bases de datos de Construcción de bases de datos de marcadores molecularesmarcadores moleculares

➲ ID de NCRID de NCR

➲ Diseño de primersDiseño de primers

➲ Búsqueda regiones polimorficasBúsqueda regiones polimorficas

➲ ID de SNPsID de SNPs

Page 42: Python en ciencia Pycon Argentina 2009
Page 43: Python en ciencia Pycon Argentina 2009

• Búsqueda por homología de secuencia homologa Búsqueda por homología de secuencia homologa en AT mRNA: BLAST. Herramientas: en AT mRNA: BLAST. Herramientas: NCBIStandalone y NCBIXMLNCBIStandalone y NCBIXML

• Database retrieval de los resultados. Database retrieval de los resultados. Herramientas: MySQL-Python o SQLiteHerramientas: MySQL-Python o SQLite

• Alineamiento de 3 secuencias: problema (o Alineamiento de 3 secuencias: problema (o target), AT mRNA y AT full length. target), AT mRNA y AT full length. Herramientas: Bio.Clustalw.MultipleAlignCL y Herramientas: Bio.Clustalw.MultipleAlignCL y Bio.Clustalw.do_alignmentBio.Clustalw.do_alignment

Page 44: Python en ciencia Pycon Argentina 2009

Búsqueda de intronesBúsqueda de intrones

Page 45: Python en ciencia Pycon Argentina 2009
Page 46: Python en ciencia Pycon Argentina 2009
Page 47: Python en ciencia Pycon Argentina 2009

Mitocondria

Involucrada en la sintesis de ATP en la célula eucariota

Datos interesantes:i) Sus origenes se remontan a un evento de endosimbiosis en

la que una célula procarionte fue envaginada por otro procarionte para formar un linaje con dos genemas (Teoria endosimbiotica)

ii) La mitocondria contiene un genoma pequeño y circular que interactua con el genoma nuclear,

iii) Tiene gran variacion genetica en su secuencia.

Mitochondrial genome structure is of fundamental importance to understanding genetics, evolutionary and biochemical processes that take place into this organelle in crop model species

Page 48: Python en ciencia Pycon Argentina 2009

Métodos

1- Aislamiento de ADN puro de tomate

12.0

2.0

1.01.6

etiolated seedlings

Fraction number

0

20

40

60

80

100

27 31

% o

f m

axim

um

act

ivit

y

PF

P

cyt

cenrichedmit fraction

@ Percoll gradient fract

intactmit

“pure” mit

DNAsetreatment

DNAextraction

2- Contaminación de ADN y QC amplificando marcadores conocidos

rbcLchlCOXIImit

1:10

actinncl

1:50

1:10

0

1:40

0

1:10

1:50

1:10

1:50

1:10

0

C-

1:20

0

1:20

0

C-

1:40

0

1:10

0

C-

1:20

01:

400

Page 49: Python en ciencia Pycon Argentina 2009

Methodological strategy

3- Fragmentecion de ADN y construccion de biblioteca de shot-gun

0.81.01.62.03.04.0

enz mec

cloning and transformation

Fast check

4- Secuenciación

Nomenclature: SlmiNNZZZXY. This code accounts for:Sl: Solanum lycopersicon (cv Heinz).mi: mitochondrial libraryNN: library #ZZZ: plate #XY: well in plate

Page 50: Python en ciencia Pycon Argentina 2009
Page 51: Python en ciencia Pycon Argentina 2009

Sequences analysis and annotation pipeline

Lecturas son generadas en instrumentos ABI 3101

Asignación de bases por Phred

Validación, trimeo y enmascaramiento de vectores con SeqClean

Contigs (y singletons) generados por CAP3

Contigs (y singletons) blasteados contra Plant mt, otras mt, y NCBI DB.

Provisional map generated by anchoring onto the Nicotiana tabacum mitochondrial genome

Page 52: Python en ciencia Pycon Argentina 2009

www.mitochondrialgenome.org

Page 53: Python en ciencia Pycon Argentina 2009
Page 54: Python en ciencia Pycon Argentina 2009
Page 55: Python en ciencia Pycon Argentina 2009

Mariana Conte Sebastian Bassi

Funding

Credits

Virginia Gonzalez

EU-SOL project

Partnership and Collaborators

Partner groups Alisdair Fernie-Lothar Willmitzer

Biosciences Dept, Sao Paulo Uni, Brazil Magdalena Rossi

Boyce Thompson Institute, USA Jim Giovannoni

Institute of Molecular and Cell Biology of Rosario. Estela Valle

Laboratorio de Fisiología yBiologia Celular y MolecularNorberto Iusem

Biochemistry and Clinical Immunology Centre,Cordoba University. Ramón Asís

Page 56: Python en ciencia Pycon Argentina 2009

Mensaje para el hogar:Mensaje para el hogar:

Python es una plataforma de programación Python es una plataforma de programación completa para ciencia. No solo es útil para completa para ciencia. No solo es útil para resolver problemas prácticos sino que introduce resolver problemas prácticos sino que introduce buenos hábitos de programación.buenos hábitos de programación.

Page 57: Python en ciencia Pycon Argentina 2009

Recursos adicionalesRecursos adicionales

• PyAr: www.python.org.arPyAr: www.python.org.ar

• Biopython: www.biopython.orgBiopython: www.biopython.org

• SciPy: www.scipy.orgSciPy: www.scipy.org

• Tutorial en PLoS: Tutorial en PLoS: tinyurl.com/tutorialplos tinyurl.com/tutorialplos

• Libro: Libro: tinyurl.com/biopython tinyurl.com/biopython

• www.py4bio.comwww.py4bio.com

Contacto:Contacto:

[email protected]@genesdigitales.com

Twitter: @sbassiTwitter: @sbassi